From 00762832525df875790c7f1d91658d780d9669d6 Mon Sep 17 00:00:00 2001 From: halx99 Date: Sun, 26 Dec 2021 23:26:34 +0800 Subject: [PATCH 01/58] Huge changes for all string_view --- cocos/2d/CCActionTiledGrid.cpp | 2 +- cocos/2d/CCActionTween.cpp | 4 +- cocos/2d/CCActionTween.h | 6 +- cocos/2d/CCAnimation.cpp | 2 +- cocos/2d/CCAnimation.h | 2 +- cocos/2d/CCAnimationCache.cpp | 14 +- cocos/2d/CCAnimationCache.h | 12 +- cocos/2d/CCAtlasNode.cpp | 6 +- cocos/2d/CCAtlasNode.h | 4 +- cocos/2d/CCAutoPolygon.cpp | 4 +- cocos/2d/CCAutoPolygon.h | 8 +- cocos/2d/CCCameraBackgroundBrush.cpp | 24 +- cocos/2d/CCCameraBackgroundBrush.h | 24 +- cocos/2d/CCComponent.h | 4 +- cocos/2d/CCComponentContainer.cpp | 6 +- cocos/2d/CCComponentContainer.h | 6 +- cocos/2d/CCFastTMXLayer.cpp | 2 +- cocos/2d/CCFastTMXLayer.h | 6 +- cocos/2d/CCFastTMXTiledMap.cpp | 14 +- cocos/2d/CCFastTMXTiledMap.h | 16 +- cocos/2d/CCFontAtlas.cpp | 4 +- cocos/2d/CCFontAtlas.h | 2 +- cocos/2d/CCFontAtlasCache.cpp | 29 +- cocos/2d/CCFontAtlasCache.h | 20 +- cocos/2d/CCFontCharMap.cpp | 4 +- cocos/2d/CCFontCharMap.h | 4 +- cocos/2d/CCFontFNT.cpp | 30 +- cocos/2d/CCFontFNT.h | 24 +- cocos/2d/CCFontFreeType.cpp | 2 +- cocos/2d/CCFontFreeType.h | 4 +- cocos/2d/CCLabel.cpp | 52 +-- cocos/2d/CCLabel.h | 64 ++-- cocos/2d/CCLabelAtlas.cpp | 26 +- cocos/2d/CCLabelAtlas.h | 18 +- cocos/2d/CCLabelTextFormatter.cpp | 6 +- cocos/2d/CCMenu.cpp | 2 +- cocos/2d/CCMenu.h | 2 +- cocos/2d/CCMenuItem.cpp | 54 +-- cocos/2d/CCMenuItem.h | 54 +-- cocos/2d/CCMotionStreak.cpp | 4 +- cocos/2d/CCMotionStreak.h | 4 +- cocos/2d/CCNode.cpp | 44 +-- cocos/2d/CCNode.h | 36 +- cocos/2d/CCParallaxNode.cpp | 2 +- cocos/2d/CCParallaxNode.h | 2 +- cocos/2d/CCParticleBatchNode.cpp | 10 +- cocos/2d/CCParticleBatchNode.h | 10 +- cocos/2d/CCParticleSystem.cpp | 17 +- cocos/2d/CCParticleSystem.h | 8 +- cocos/2d/CCParticleSystemQuad.cpp | 2 +- cocos/2d/CCParticleSystemQuad.h | 2 +- cocos/2d/CCPlistSpriteSheetLoader.cpp | 112 +++--- cocos/2d/CCPlistSpriteSheetLoader.h | 16 +- cocos/2d/CCRenderTexture.cpp | 22 +- cocos/2d/CCRenderTexture.h | 23 +- cocos/2d/CCSprite.cpp | 22 +- cocos/2d/CCSprite.h | 22 +- cocos/2d/CCSpriteBatchNode.cpp | 6 +- cocos/2d/CCSpriteBatchNode.h | 6 +- cocos/2d/CCSpriteFrame.cpp | 8 +- cocos/2d/CCSpriteFrame.h | 8 +- cocos/2d/CCSpriteFrameCache.cpp | 43 +-- cocos/2d/CCSpriteFrameCache.h | 57 +-- cocos/2d/CCSpriteSheetLoader.h | 18 +- cocos/2d/CCTMXObjectGroup.cpp | 4 +- cocos/2d/CCTMXObjectGroup.h | 8 +- cocos/2d/CCTMXXMLParser.cpp | 33 +- cocos/2d/CCTMXXMLParser.h | 24 +- cocos/2d/CCTextFieldTTF.cpp | 30 +- cocos/2d/CCTextFieldTTF.h | 28 +- cocos/2d/CCTileMapAtlas.cpp | 6 +- cocos/2d/CCTileMapAtlas.h | 6 +- cocos/3d/CCAnimate3D.cpp | 12 +- cocos/3d/CCAnimation3D.cpp | 20 +- cocos/3d/CCAnimation3D.h | 16 +- cocos/3d/CCBillBoard.cpp | 4 +- cocos/3d/CCBillBoard.h | 4 +- cocos/3d/CCBundle3D.cpp | 50 +-- cocos/3d/CCBundle3D.h | 30 +- cocos/3d/CCBundle3DData.h | 14 +- cocos/3d/CCMesh.cpp | 6 +- cocos/3d/CCMesh.h | 10 +- cocos/3d/CCMeshSkin.cpp | 2 +- cocos/3d/CCMeshSkin.h | 4 +- cocos/3d/CCMeshVertexIndexData.cpp | 4 +- cocos/3d/CCMeshVertexIndexData.h | 8 +- cocos/3d/CCMotionStreak3D.cpp | 4 +- cocos/3d/CCMotionStreak3D.h | 4 +- cocos/3d/CCObjLoader.cpp | 8 +- cocos/3d/CCObjLoader.h | 6 +- cocos/3d/CCSkeleton3D.cpp | 6 +- cocos/3d/CCSkeleton3D.h | 8 +- cocos/3d/CCSkybox.cpp | 24 +- cocos/3d/CCSkybox.h | 24 +- cocos/3d/CCSprite3D.cpp | 38 +- cocos/3d/CCSprite3D.h | 38 +- cocos/3d/CCSprite3DMaterial.cpp | 10 +- cocos/3d/CCSprite3DMaterial.h | 8 +- cocos/3d/CCTerrain.cpp | 24 +- cocos/3d/CCTerrain.h | 20 +- cocos/3d/CCVertexAttribBinding.cpp | 4 +- cocos/3d/CCVertexAttribBinding.h | 6 +- cocos/audio/include/AudioDecoder.h | 2 +- cocos/audio/include/AudioDecoderEXT.h | 2 +- cocos/audio/include/AudioDecoderManager.h | 2 +- cocos/audio/include/AudioDecoderMp3.h | 2 +- cocos/audio/include/AudioDecoderOgg.h | 2 +- cocos/audio/include/AudioDecoderWav.h | 2 +- cocos/audio/include/AudioEngine.h | 16 +- cocos/audio/include/AudioEngineImpl.h | 10 +- cocos/audio/include/AudioPlayer.h | 2 +- cocos/audio/src/AudioDecoderEXT.mm | 2 +- cocos/audio/src/AudioDecoderManager.cpp | 2 +- cocos/audio/src/AudioDecoderMp3.cpp | 2 +- cocos/audio/src/AudioDecoderOgg.cpp | 2 +- cocos/audio/src/AudioDecoderWav.cpp | 4 +- cocos/audio/src/AudioEngine.cpp | 22 +- cocos/audio/src/AudioEngineImpl.mm | 353 +++++++++++------- cocos/base/CCAutoreleasePool.cpp | 2 +- cocos/base/CCAutoreleasePool.h | 2 +- cocos/base/CCConfiguration.cpp | 14 +- cocos/base/CCConfiguration.h | 8 +- cocos/base/CCConsole.cpp | 117 +++--- cocos/base/CCConsole.h | 104 +++--- cocos/base/CCController-android.cpp | 10 +- cocos/base/CCController-linux-win32.cpp | 12 +- cocos/base/CCController.h | 2 +- cocos/base/CCEventCustom.cpp | 2 +- cocos/base/CCEventCustom.h | 4 +- cocos/base/CCEventDispatcher.cpp | 22 +- cocos/base/CCEventDispatcher.h | 24 +- cocos/base/CCEventListener.cpp | 2 +- cocos/base/CCEventListener.h | 4 +- cocos/base/CCEventListenerCustom.cpp | 4 +- cocos/base/CCEventListenerCustom.h | 4 +- cocos/base/CCIMEDelegate.h | 2 +- cocos/base/CCIMEDispatcher.cpp | 2 +- cocos/base/CCIMEDispatcher.h | 2 +- cocos/base/CCMap.h | 60 ++- cocos/base/CCNS.cpp | 22 +- cocos/base/CCNS.h | 6 +- cocos/base/CCNinePatchImageParser.cpp | 2 +- cocos/base/CCNinePatchImageParser.h | 2 +- cocos/base/CCProperties.cpp | 20 +- cocos/base/CCProperties.h | 8 +- cocos/base/CCProtocols.h | 2 +- cocos/base/CCScheduler.cpp | 10 +- cocos/base/CCScheduler.h | 12 +- cocos/base/CCScriptSupport.h | 2 +- cocos/base/CCUserDefault.cpp | 12 +- cocos/base/CCUserDefault.h | 14 +- cocos/base/CCValue.cpp | 6 +- cocos/base/CCValue.h | 13 +- cocos/base/ObjectFactory.cpp | 12 +- cocos/base/ObjectFactory.h | 8 +- cocos/base/ZipUtils.cpp | 41 +- cocos/base/ZipUtils.h | 18 +- cocos/base/ccUTF8.cpp | 16 +- cocos/base/ccUTF8.h | 10 +- cocos/base/ccUtils.cpp | 10 +- cocos/base/ccUtils.h | 10 +- cocos/base/hlookup.h | 62 +++ cocos/navmesh/CCNavMesh.cpp | 4 +- cocos/navmesh/CCNavMesh.h | 4 +- cocos/navmesh/CCNavMeshAgent.cpp | 2 +- cocos/navmesh/CCNavMeshAgent.h | 2 +- cocos/navmesh/CCNavMeshObstacle.cpp | 2 +- cocos/navmesh/CCNavMeshObstacle.h | 2 +- cocos/network/CCDownloader-curl.cpp | 6 +- cocos/network/CCDownloader.cpp | 26 +- cocos/network/CCDownloader.h | 24 +- cocos/network/CCIDownloaderImpl.h | 2 +- cocos/network/HttpClient.cpp | 14 +- cocos/network/HttpClient.h | 10 +- cocos/network/HttpCookie.cpp | 6 +- cocos/network/HttpCookie.h | 4 +- cocos/network/HttpRequest.h | 6 +- cocos/network/HttpResponse.h | 2 +- cocos/network/Uri.cpp | 6 +- cocos/network/Uri.h | 24 +- cocos/physics3d/CCPhysicsSprite3D.cpp | 4 +- cocos/physics3d/CCPhysicsSprite3D.h | 4 +- cocos/platform/CCApplicationProtocol.h | 2 +- cocos/platform/CCFileStream.h | 2 +- cocos/platform/CCFileUtils.cpp | 204 +++++----- cocos/platform/CCFileUtils.h | 136 +++---- cocos/platform/CCGLView.cpp | 4 +- cocos/platform/CCGLView.h | 8 +- cocos/platform/CCImage.cpp | 12 +- cocos/platform/CCImage.h | 10 +- cocos/platform/CCPlatformMacros.h | 1 + cocos/platform/CCPosixFileStream.cpp | 4 +- cocos/platform/CCPosixFileStream.h | 2 +- cocos/platform/CCSAXParser.cpp | 2 +- cocos/platform/CCSAXParser.h | 2 +- .../android/CCApplication-android.cpp | 2 +- .../platform/android/CCApplication-android.h | 2 +- .../platform/android/CCFileUtils-android.cpp | 14 +- cocos/platform/android/CCFileUtils-android.h | 14 +- .../platform/android/CCGLViewImpl-android.cpp | 10 +- cocos/platform/android/CCGLViewImpl-android.h | 10 +- cocos/platform/android/jni/JniHelper.cpp | 4 +- cocos/platform/android/jni/JniHelper.h | 24 +- cocos/platform/apple/CCFileUtils-apple.h | 16 +- cocos/platform/apple/CCFileUtils-apple.mm | 8 +- .../platform/desktop/CCGLViewImpl-desktop.cpp | 23 +- cocos/platform/desktop/CCGLViewImpl-desktop.h | 20 +- cocos/platform/ios/CCApplication-ios.h | 2 +- cocos/platform/ios/CCGLViewImpl-ios.h | 10 +- cocos/platform/ios/CCGLViewImpl-ios.mm | 10 +- cocos/platform/ios/CCImage-ios.mm | 2 +- cocos/platform/linux/CCApplication-linux.cpp | 6 +- cocos/platform/linux/CCApplication-linux.h | 6 +- cocos/platform/linux/CCFileUtils-linux.cpp | 2 +- cocos/platform/linux/CCFileUtils-linux.h | 2 +- cocos/platform/mac/CCApplication-mac.h | 6 +- cocos/platform/mac/CCApplication-mac.mm | 4 +- cocos/platform/mac/CCGLViewImpl-mac.h | 18 +- cocos/platform/mac/CCGLViewImpl-mac.mm | 16 +- cocos/platform/win32/CCApplication-win32.cpp | 8 +- cocos/platform/win32/CCApplication-win32.h | 10 +- cocos/platform/win32/CCFileUtils-win32.cpp | 106 +++--- cocos/platform/win32/CCFileUtils-win32.h | 39 +- cocos/renderer/CCMaterial.cpp | 12 +- cocos/renderer/CCMaterial.h | 10 +- cocos/renderer/CCPass.h | 4 +- cocos/renderer/CCRenderState.cpp | 22 +- cocos/renderer/CCRenderState.h | 2 +- cocos/renderer/CCTechnique.cpp | 2 +- cocos/renderer/CCTechnique.h | 2 +- cocos/renderer/CCTexture2D.cpp | 2 +- cocos/renderer/CCTexture2D.h | 2 +- cocos/renderer/CCTextureAtlas.cpp | 6 +- cocos/renderer/CCTextureAtlas.h | 4 +- cocos/renderer/CCTextureCache.cpp | 50 ++- cocos/renderer/CCTextureCache.h | 30 +- cocos/renderer/CCTextureCube.cpp | 26 +- cocos/renderer/CCTextureCube.h | 24 +- cocos/renderer/backend/Device.h | 4 +- cocos/renderer/backend/Program.cpp | 2 +- cocos/renderer/backend/Program.h | 15 +- cocos/renderer/backend/ProgramState.cpp | 6 +- cocos/renderer/backend/ProgramState.h | 16 +- cocos/renderer/backend/ShaderCache.cpp | 8 +- cocos/renderer/backend/ShaderCache.h | 6 +- cocos/renderer/backend/VertexLayout.cpp | 8 +- cocos/renderer/backend/VertexLayout.h | 8 +- cocos/renderer/backend/metal/DeviceMTL.h | 4 +- cocos/renderer/backend/metal/DeviceMTL.mm | 4 +- cocos/renderer/backend/metal/ProgramMTL.h | 6 +- cocos/renderer/backend/metal/ProgramMTL.mm | 4 +- .../renderer/backend/metal/ShaderModuleMTL.h | 4 +- .../renderer/backend/metal/ShaderModuleMTL.mm | 4 +- cocos/renderer/backend/opengl/DeviceGL.cpp | 4 +- cocos/renderer/backend/opengl/DeviceGL.h | 4 +- .../renderer/backend/opengl/DeviceInfoGL.cpp | 2 +- cocos/renderer/backend/opengl/DeviceInfoGL.h | 2 +- cocos/renderer/backend/opengl/ProgramGL.cpp | 20 +- cocos/renderer/backend/opengl/ProgramGL.h | 14 +- .../backend/opengl/ShaderModuleGL.cpp | 8 +- .../renderer/backend/opengl/ShaderModuleGL.h | 4 +- cocos/ui/UIAbstractCheckButton.cpp | 30 +- cocos/ui/UIAbstractCheckButton.h | 30 +- cocos/ui/UIButton.cpp | 36 +- cocos/ui/UIButton.h | 32 +- cocos/ui/UICheckBox.cpp | 12 +- cocos/ui/UICheckBox.h | 14 +- cocos/ui/UIEditBox/UIEditBox.cpp | 28 +- cocos/ui/UIEditBox/UIEditBox.h | 30 +- cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp | 8 +- cocos/ui/UIEditBox/UIEditBoxImpl-common.cpp | 6 +- cocos/ui/UIEditBox/UIEditBoxImpl-common.h | 6 +- cocos/ui/UIHelper.cpp | 10 +- cocos/ui/UIHelper.h | 4 +- cocos/ui/UIImageView.cpp | 6 +- cocos/ui/UIImageView.h | 6 +- cocos/ui/UILayout.cpp | 4 +- cocos/ui/UILayout.h | 4 +- cocos/ui/UILayoutManager.cpp | 2 +- cocos/ui/UILayoutParameter.cpp | 8 +- cocos/ui/UILayoutParameter.h | 8 +- cocos/ui/UIListView.cpp | 2 +- cocos/ui/UIListView.h | 2 +- cocos/ui/UILoadingBar.cpp | 6 +- cocos/ui/UILoadingBar.h | 6 +- cocos/ui/UIPageView.cpp | 2 +- cocos/ui/UIPageView.h | 2 +- cocos/ui/UIPageViewIndicator.cpp | 2 +- cocos/ui/UIPageViewIndicator.h | 2 +- cocos/ui/UIRadioButton.cpp | 12 +- cocos/ui/UIRadioButton.h | 14 +- cocos/ui/UIRichText.cpp | 86 +++-- cocos/ui/UIRichText.h | 52 +-- cocos/ui/UIScale9Sprite.cpp | 24 +- cocos/ui/UIScale9Sprite.h | 24 +- cocos/ui/UIScrollView.cpp | 4 +- cocos/ui/UIScrollView.h | 4 +- cocos/ui/UISlider.cpp | 20 +- cocos/ui/UISlider.h | 20 +- cocos/ui/UITabControl.cpp | 32 +- cocos/ui/UITabControl.h | 26 +- cocos/ui/UIText.cpp | 10 +- cocos/ui/UIText.h | 10 +- cocos/ui/UITextAtlas.cpp | 14 +- cocos/ui/UITextAtlas.h | 14 +- cocos/ui/UITextBMFont.cpp | 8 +- cocos/ui/UITextBMFont.h | 8 +- cocos/ui/UITextField.cpp | 24 +- cocos/ui/UITextField.h | 20 +- cocos/ui/UITextFieldEx.cpp | 30 +- cocos/ui/UITextFieldEx.h | 22 +- cocos/ui/UIVideoPlayer-android.cpp | 4 +- cocos/ui/UIVideoPlayer-ios.mm | 4 +- cocos/ui/UIVideoPlayer.h | 8 +- cocos/ui/UIWebView/UIWebView-inl.h | 22 +- cocos/ui/UIWebView/UIWebView.h | 26 +- cocos/ui/UIWebView/UIWebViewImpl-android.cpp | 30 +- cocos/ui/UIWebView/UIWebViewImpl-android.h | 26 +- cocos/ui/UIWebView/UIWebViewImpl-ios.h | 18 +- cocos/ui/UIWebView/UIWebViewImpl-win32.cpp | 110 +++--- cocos/ui/UIWebView/UIWebViewImpl-win32.h | 16 +- cocos/ui/UIWidget.h | 8 +- extensions/DragonBones/CCArmatureDisplay.cpp | 8 +- extensions/DragonBones/CCArmatureDisplay.h | 10 +- extensions/DragonBones/CCFactory.cpp | 16 +- extensions/DragonBones/CCFactory.h | 22 +- .../DragonBones/animation/Animation.cpp | 32 +- extensions/DragonBones/animation/Animation.h | 28 +- .../DragonBones/animation/AnimationState.cpp | 8 +- .../DragonBones/animation/AnimationState.h | 10 +- extensions/DragonBones/armature/Armature.cpp | 8 +- extensions/DragonBones/armature/Armature.h | 10 +- extensions/DragonBones/armature/Bone.h | 4 +- extensions/DragonBones/armature/Constraint.h | 4 +- extensions/DragonBones/armature/Slot.h | 4 +- extensions/DragonBones/core/DragonBones.h | 6 +- .../DragonBones/event/IEventDispatcher.h | 10 +- .../DragonBones/factory/BaseFactory.cpp | 48 +-- extensions/DragonBones/factory/BaseFactory.h | 52 +-- .../DragonBones/model/AnimationConfig.cpp | 8 +- .../DragonBones/model/AnimationConfig.h | 8 +- extensions/DragonBones/model/AnimationData.h | 12 +- extensions/DragonBones/model/ArmatureData.cpp | 8 +- extensions/DragonBones/model/ArmatureData.h | 18 +- .../DragonBones/model/DragonBonesData.h | 4 +- extensions/DragonBones/model/SkinData.cpp | 6 +- extensions/DragonBones/model/SkinData.h | 11 +- .../DragonBones/model/TextureAtlasData.h | 4 +- extensions/DragonBones/parser/DataParser.cpp | 14 +- extensions/DragonBones/parser/DataParser.h | 14 +- .../DragonBones/parser/JSONDataParser.h | 6 +- .../CCControlExtension/CCControlButton.cpp | 16 +- .../GUI/CCControlExtension/CCControlButton.h | 18 +- .../CCControlExtension/CCControlSwitch.cpp | 4 +- extensions/GUI/CCScrollView/CCScrollView.cpp | 4 +- extensions/GUI/CCScrollView/CCScrollView.h | 4 +- extensions/ImGuiEXT/CCImGuiEXT.cpp | 24 +- extensions/ImGuiEXT/CCImGuiEXT.h | 18 +- extensions/Particle3D/CCParticle3DRender.cpp | 6 +- extensions/Particle3D/CCParticle3DRender.h | 6 +- extensions/Particle3D/PU/CCPUAffector.cpp | 8 +- extensions/Particle3D/PU/CCPUAffector.h | 12 +- .../Particle3D/PU/CCPUAffectorManager.cpp | 4 +- .../Particle3D/PU/CCPUAffectorManager.h | 4 +- extensions/Particle3D/PU/CCPUBeamRender.cpp | 2 +- extensions/Particle3D/PU/CCPUBeamRender.h | 2 +- extensions/Particle3D/PU/CCPUBehaviour.h | 4 +- .../Particle3D/PU/CCPUBehaviourManager.cpp | 4 +- .../Particle3D/PU/CCPUBehaviourManager.h | 4 +- .../Particle3D/PU/CCPUBillboardChain.cpp | 6 +- extensions/Particle3D/PU/CCPUBillboardChain.h | 6 +- .../PU/CCPUDoAffectorEventHandler.h | 4 +- .../PU/CCPUDoEnableComponentEventHandler.h | 4 +- .../CCPUDoPlacementParticleEventHandler.cpp | 2 +- .../PU/CCPUDoPlacementParticleEventHandler.h | 4 +- extensions/Particle3D/PU/CCPUEmitter.cpp | 2 +- extensions/Particle3D/PU/CCPUEmitter.h | 12 +- .../Particle3D/PU/CCPUEmitterManager.cpp | 4 +- extensions/Particle3D/PU/CCPUEmitterManager.h | 4 +- extensions/Particle3D/PU/CCPUEventHandler.h | 8 +- .../Particle3D/PU/CCPUEventHandlerManager.cpp | 4 +- .../Particle3D/PU/CCPUEventHandlerManager.h | 4 +- .../Particle3D/PU/CCPUMaterialManager.cpp | 15 +- .../Particle3D/PU/CCPUMaterialManager.h | 6 +- .../Particle3D/PU/CCPUMeshSurfaceEmitter.cpp | 6 +- .../Particle3D/PU/CCPUMeshSurfaceEmitter.h | 6 +- extensions/Particle3D/PU/CCPUObserver.cpp | 4 +- extensions/Particle3D/PU/CCPUObserver.h | 12 +- .../Particle3D/PU/CCPUObserverManager.cpp | 4 +- .../Particle3D/PU/CCPUObserverManager.h | 4 +- .../Particle3D/PU/CCPUParticleSystem3D.cpp | 64 ++-- .../Particle3D/PU/CCPUParticleSystem3D.h | 22 +- extensions/Particle3D/PU/CCPURender.cpp | 12 +- extensions/Particle3D/PU/CCPURender.h | 14 +- extensions/Particle3D/PU/CCPURibbonTrail.cpp | 4 +- extensions/Particle3D/PU/CCPURibbonTrail.h | 4 +- .../Particle3D/PU/CCPURibbonTrailRender.cpp | 2 +- .../Particle3D/PU/CCPURibbonTrailRender.h | 2 +- .../Particle3D/PU/CCPUScriptCompiler.cpp | 30 +- extensions/Particle3D/PU/CCPUScriptCompiler.h | 18 +- extensions/Particle3D/PU/CCPUScriptLexer.cpp | 6 +- extensions/Particle3D/PU/CCPUScriptLexer.h | 4 +- .../Particle3D/PU/CCPUScriptTranslator.cpp | 8 +- .../Particle3D/PU/CCPUScriptTranslator.h | 8 +- extensions/Particle3D/PU/CCPUSlaveEmitter.cpp | 8 +- extensions/Particle3D/PU/CCPUSlaveEmitter.h | 8 +- .../Particle3D/PU/CCPUVertexEmitter.cpp | 4 +- extensions/Particle3D/PU/CCPUVertexEmitter.h | 4 +- extensions/assets-manager/AssetsManager.cpp | 10 +- extensions/assets-manager/AssetsManager.h | 2 +- extensions/assets-manager/AssetsManagerEx.cpp | 70 ++-- extensions/assets-manager/AssetsManagerEx.h | 53 ++- .../assets-manager/CCEventAssetsManagerEx.cpp | 6 +- .../assets-manager/CCEventAssetsManagerEx.h | 6 +- extensions/assets-manager/Manifest.cpp | 58 +-- extensions/assets-manager/Manifest.h | 40 +- .../ActionTimeline/CCActionTimeline.cpp | 8 +- .../ActionTimeline/CCActionTimeline.h | 12 +- .../ActionTimeline/CCActionTimelineCache.cpp | 24 +- .../ActionTimeline/CCActionTimelineCache.h | 24 +- .../cocostudio/ActionTimeline/CCBoneNode.cpp | 6 +- .../cocostudio/ActionTimeline/CCBoneNode.h | 6 +- .../cocostudio/ActionTimeline/CCFrame.cpp | 2 +- .../cocostudio/ActionTimeline/CCFrame.h | 4 +- .../ActionTimeline/CCSkeletonNode.cpp | 4 +- .../ActionTimeline/CCSkeletonNode.h | 4 +- .../cocostudio/ActionTimeline/CSLoader.cpp | 46 +-- .../cocostudio/ActionTimeline/CSLoader.h | 48 +-- extensions/cocostudio/CCActionNode.cpp | 6 +- extensions/cocostudio/CCActionNode.h | 8 +- extensions/cocostudio/CCActionObject.cpp | 6 +- extensions/cocostudio/CCActionObject.h | 8 +- extensions/cocostudio/CCArmature.cpp | 16 +- extensions/cocostudio/CCArmature.h | 18 +- extensions/cocostudio/CCArmatureAnimation.cpp | 10 +- extensions/cocostudio/CCArmatureAnimation.h | 16 +- .../cocostudio/CCArmatureDataManager.cpp | 52 +-- extensions/cocostudio/CCArmatureDataManager.h | 46 +-- extensions/cocostudio/CCBatchNode.cpp | 2 +- extensions/cocostudio/CCBatchNode.h | 4 +- extensions/cocostudio/CCBone.cpp | 8 +- extensions/cocostudio/CCBone.h | 8 +- extensions/cocostudio/CCComAttribute.cpp | 18 +- extensions/cocostudio/CCComAttribute.h | 18 +- extensions/cocostudio/CCComExtensionData.h | 4 +- extensions/cocostudio/CCComRender.cpp | 2 +- extensions/cocostudio/CCComRender.h | 4 +- extensions/cocostudio/CCDataReaderHelper.cpp | 16 +- extensions/cocostudio/CCDataReaderHelper.h | 14 +- extensions/cocostudio/CCDatas.cpp | 8 +- extensions/cocostudio/CCDatas.h | 10 +- extensions/cocostudio/CCDisplayManager.cpp | 2 +- extensions/cocostudio/CCDisplayManager.h | 4 +- extensions/cocostudio/CCSGUIReader.cpp | 18 +- extensions/cocostudio/CCSGUIReader.h | 24 +- extensions/cocostudio/CCSSceneReader.cpp | 8 +- extensions/cocostudio/CCSSceneReader.h | 10 +- extensions/cocostudio/CCSkin.cpp | 8 +- extensions/cocostudio/CCSkin.h | 12 +- .../cocostudio/CCSpriteFrameCacheHelper.cpp | 8 +- .../cocostudio/CCSpriteFrameCacheHelper.h | 10 +- .../cocostudio/FlatBuffersSerialize.cpp | 18 +- extensions/cocostudio/FlatBuffersSerialize.h | 22 +- extensions/cocostudio/TriggerMng.cpp | 2 +- extensions/cocostudio/TriggerMng.h | 4 +- .../WidgetCallBackHandlerProtocol.h | 6 +- .../ArmatureNodeReader/ArmatureNodeReader.cpp | 2 +- .../ArmatureNodeReader/ArmatureNodeReader.h | 4 +- .../ImageViewReader/ImageViewReader.cpp | 2 +- .../WidgetReader/NodeReaderProtocol.cpp | 8 +- .../WidgetReader/NodeReaderProtocol.h | 4 +- .../cocostudio/WidgetReader/WidgetReader.cpp | 10 +- .../cocostudio/WidgetReader/WidgetReader.h | 6 +- .../lua-bindings/manual/CCComponentLua.cpp | 6 +- .../lua-bindings/manual/CCComponentLua.h | 6 +- .../lua-bindings/manual/CCLuaEngine.cpp | 2 +- .../lua-bindings/manual/CCLuaEngine.h | 2 +- .../lua-bindings/manual/CCLuaValue.cpp | 4 +- .../lua-bindings/manual/CCLuaValue.h | 8 +- .../manual/LuaBasicConversions.cpp | 2 +- .../manual/cocos2d/lua_cocos2dx_manual.cpp | 6 +- .../manual/cocos2d/lua_cocos2dx_manual.hpp | 2 +- .../manual/cocostudio/CustomGUIReader.cpp | 2 +- .../manual/cocostudio/CustomGUIReader.h | 2 +- .../lua_cocos2dx_coco_studio_manual.cpp | 4 +- .../lua_cocos2dx_coco_studio_manual.hpp | 4 +- .../manual/network/lua_downloader.cpp | 2 +- .../manual/network/lua_xml_http_request.cpp | 10 +- .../manual/ui/lua_cocos2dx_webview_manual.cpp | 12 +- thirdparty/tsl/robin_hash.h | 108 ++++-- thirdparty/tsl/robin_map.h | 20 +- thirdparty/tsl/robin_set.h | 7 +- 492 files changed, 3705 insertions(+), 3435 deletions(-) create mode 100644 cocos/base/hlookup.h diff --git a/cocos/2d/CCActionTiledGrid.cpp b/cocos/2d/CCActionTiledGrid.cpp index 85558d98e3f0..74665cd9b41f 100644 --- a/cocos/2d/CCActionTiledGrid.cpp +++ b/cocos/2d/CCActionTiledGrid.cpp @@ -247,7 +247,7 @@ Vec2 ShuffleTiles::getDelta(const Vec2& pos) const pos2.x = (float)(_tilesOrder[idx] / (int)_gridSize.height); pos2.y = (float)(_tilesOrder[idx] % (int)_gridSize.height); - return Vec2((int)(pos2.x - pos.width), (int)(pos2.y - pos.height)); + return Vec2(static_cast((int)(pos2.x - pos.width)), static_cast((int)(pos2.y - pos.height))); } void ShuffleTiles::placeTile(const Vec2& pos, Tile* t) diff --git a/cocos/2d/CCActionTween.cpp b/cocos/2d/CCActionTween.cpp index 37f93ffae189..68b84f63ba44 100644 --- a/cocos/2d/CCActionTween.cpp +++ b/cocos/2d/CCActionTween.cpp @@ -29,7 +29,7 @@ THE SOFTWARE. NS_CC_BEGIN -ActionTween* ActionTween::create(float duration, const std::string& key, float from, float to) +ActionTween* ActionTween::create(float duration, std::string_view key, float from, float to) { ActionTween* ret = new ActionTween(); if (ret->initWithDuration(duration, key, from, to)) @@ -42,7 +42,7 @@ ActionTween* ActionTween::create(float duration, const std::string& key, float f return nullptr; } -bool ActionTween::initWithDuration(float duration, const std::string& key, float from, float to) +bool ActionTween::initWithDuration(float duration, std::string_view key, float from, float to) { if (ActionInterval::initWithDuration(duration)) { diff --git a/cocos/2d/CCActionTween.h b/cocos/2d/CCActionTween.h index 4890f07a93bb..c0d1b7454f71 100644 --- a/cocos/2d/CCActionTween.h +++ b/cocos/2d/CCActionTween.h @@ -59,7 +59,7 @@ class CC_DLL ActionTweenDelegate @param value The new value of the specified key. @param key The key of property which should be updated. */ - virtual void updateTweenAction(float value, const std::string& key) = 0; + virtual void updateTweenAction(float value, std::string_view key) = 0; }; /** ActionTween @@ -93,7 +93,7 @@ class CC_DLL ActionTween : public ActionInterval * @param to The value of the specified property when the action end. * @return If the creation success, return a pointer of ActionTween; otherwise, return nil. */ - static ActionTween* create(float duration, const std::string& key, float from, float to); + static ActionTween* create(float duration, std::string_view key, float from, float to); // Overrides void startWithTarget(Node* target) override; @@ -111,7 +111,7 @@ class CC_DLL ActionTween : public ActionInterval * @return If the initialization success, return true; otherwise, return false. */ bool - initWithDuration(float duration, const std::string& key, float from, float to); + initWithDuration(float duration, std::string_view key, float from, float to); protected: std::string _key; diff --git a/cocos/2d/CCAnimation.cpp b/cocos/2d/CCAnimation.cpp index 7909c0e9a36b..7f0887964509 100644 --- a/cocos/2d/CCAnimation.cpp +++ b/cocos/2d/CCAnimation.cpp @@ -165,7 +165,7 @@ void Animation::addSpriteFrame(SpriteFrame* spriteFrame) _totalDelayUnits++; } -void Animation::addSpriteFrameWithFile(const std::string& filename) +void Animation::addSpriteFrameWithFile(std::string_view filename) { Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(filename); Rect rect = Rect::ZERO; diff --git a/cocos/2d/CCAnimation.h b/cocos/2d/CCAnimation.h index 1a312fc3f7ae..b9b266c61739 100644 --- a/cocos/2d/CCAnimation.h +++ b/cocos/2d/CCAnimation.h @@ -199,7 +199,7 @@ class CC_DLL Animation : public Ref, public Clonable * Added to facilitate the migration from v0.8 to v0.9. * @param filename The path of SpriteFrame. */ - void addSpriteFrameWithFile(const std::string& filename); + void addSpriteFrameWithFile(std::string_view filename); /** Adds a frame with a texture and a rect. Internally it will create a SpriteFrame and it will add it. * The frame will be added with one "delay unit". diff --git a/cocos/2d/CCAnimationCache.cpp b/cocos/2d/CCAnimationCache.cpp index 6c3f62eecb0d..eefbf411d7c5 100644 --- a/cocos/2d/CCAnimationCache.cpp +++ b/cocos/2d/CCAnimationCache.cpp @@ -63,12 +63,12 @@ AnimationCache::~AnimationCache() CCLOGINFO("deallocing AnimationCache: %p", this); } -void AnimationCache::addAnimation(Animation* animation, const std::string& name) +void AnimationCache::addAnimation(Animation* animation, std::string_view name) { - _animations.insert(name, animation); + _animations.insert(std::string{name}, animation); } -void AnimationCache::removeAnimation(const std::string& name) +void AnimationCache::removeAnimation(std::string_view name) { if (name.empty()) return; @@ -76,7 +76,7 @@ void AnimationCache::removeAnimation(const std::string& name) _animations.erase(name); } -Animation* AnimationCache::getAnimation(const std::string& name) +Animation* AnimationCache::getAnimation(std::string_view name) { return _animations.at(name); } @@ -205,7 +205,7 @@ void AnimationCache::parseVersion2(const ValueMap& animations) } } -void AnimationCache::addAnimationsWithDictionary(const ValueMap& dictionary, const std::string& plist) +void AnimationCache::addAnimationsWithDictionary(const ValueMap& dictionary, std::string_view plist) { auto anisItr = dictionary.find("animations"); if (anisItr == dictionary.end()) @@ -245,7 +245,7 @@ void AnimationCache::addAnimationsWithDictionary(const ValueMap& dictionary, con } /** Read an NSDictionary from a plist file and parse it automatically for animations */ -void AnimationCache::addAnimationsWithFile(const std::string& plist) +void AnimationCache::addAnimationsWithFile(std::string_view plist) { CCASSERT(!plist.empty(), "Invalid texture file name"); if (plist.empty()) @@ -259,7 +259,7 @@ void AnimationCache::addAnimationsWithFile(const std::string& plist) CCASSERT(!dict.empty(), "CCAnimationCache: File could not be found"); if (dict.empty()) { - log("AnimationCache::addAnimationsWithFile error:%s not exist!", plist.c_str()); + log("AnimationCache::addAnimationsWithFile error:%s not exist!", plist.data()); } addAnimationsWithDictionary(dict, plist); diff --git a/cocos/2d/CCAnimationCache.h b/cocos/2d/CCAnimationCache.h index 0c41b66454ab..e64fa50c2646 100644 --- a/cocos/2d/CCAnimationCache.h +++ b/cocos/2d/CCAnimationCache.h @@ -81,13 +81,13 @@ class CC_DLL AnimationCache : public Ref * @param animation An animation. * @param name The name of animation. */ - void addAnimation(Animation* animation, const std::string& name); + void addAnimation(Animation* animation, std::string_view name); /** Deletes a Animation from the cache. * * @param name The name of animation. */ - void removeAnimation(const std::string& name); + void removeAnimation(std::string_view name); /** Returns a Animation that was previously added. * If the name is not found it will return nil. @@ -95,7 +95,7 @@ class CC_DLL AnimationCache : public Ref * * @return A Animation that was previously added. If the name is not found it will return nil. */ - Animation* getAnimation(const std::string& name); + Animation* getAnimation(std::string_view name); /** Adds an animation from an NSDictionary. * Make sure that the frames were previously loaded in the SpriteFrameCache. @@ -104,7 +104,7 @@ class CC_DLL AnimationCache : public Ref * @since v1.1 @js NA */ - void addAnimationsWithDictionary(const ValueMap& dictionary, const std::string& plist); + void addAnimationsWithDictionary(const ValueMap& dictionary, std::string_view plist); /** Adds an animation from a plist file. * Make sure that the frames were previously loaded in the SpriteFrameCache. @@ -113,14 +113,14 @@ class CC_DLL AnimationCache : public Ref * @lua addAnimations * @param plist An animation from a plist file. */ - void addAnimationsWithFile(const std::string& plist); + void addAnimationsWithFile(std::string_view plist); private: void parseVersion1(const ValueMap& animations); void parseVersion2(const ValueMap& animations); private: - Map _animations; + Map _animations; static AnimationCache* s_sharedAnimationCache; }; diff --git a/cocos/2d/CCAtlasNode.cpp b/cocos/2d/CCAtlasNode.cpp index d1448ebdb439..6f38d8935076 100644 --- a/cocos/2d/CCAtlasNode.cpp +++ b/cocos/2d/CCAtlasNode.cpp @@ -47,7 +47,7 @@ AtlasNode::~AtlasNode() CC_SAFE_RELEASE(_textureAtlas); } -AtlasNode* AtlasNode::create(const std::string& tile, int tileWidth, int tileHeight, int itemsToRender) +AtlasNode* AtlasNode::create(std::string_view tile, int tileWidth, int tileHeight, int itemsToRender) { AtlasNode* ret = new AtlasNode(); if (ret->initWithTileFile(tile, tileWidth, tileHeight, itemsToRender)) @@ -59,7 +59,7 @@ AtlasNode* AtlasNode::create(const std::string& tile, int tileWidth, int tileHei return nullptr; } -bool AtlasNode::initWithTileFile(const std::string& tile, int tileWidth, int tileHeight, int itemsToRender) +bool AtlasNode::initWithTileFile(std::string_view tile, int tileWidth, int tileHeight, int itemsToRender) { CCASSERT(!tile.empty(), "file size should not be empty"); Texture2D* texture = _director->getTextureCache()->addImage(tile); @@ -222,7 +222,7 @@ void AtlasNode::setIgnoreContentScaleFactor(bool ignoreContentScaleFactor) auto label = dynamic_cast(this); if (label) { - Vec2 s = Vec2(label->getString().size() * _itemWidth, _itemHeight); + Vec2 s = Vec2(static_cast(label->getString().size() * _itemWidth), static_cast(_itemHeight)); this->setContentSize(s); } } diff --git a/cocos/2d/CCAtlasNode.h b/cocos/2d/CCAtlasNode.h index e35c14942df9..63125c6d336d 100644 --- a/cocos/2d/CCAtlasNode.h +++ b/cocos/2d/CCAtlasNode.h @@ -57,7 +57,7 @@ class CC_DLL AtlasNode : public Node, public TextureProtocol * @param tileHeight The height of the item. * @param itemsToRender The quantity of items to render. */ - static AtlasNode* create(const std::string& filename, int tileWidth, int tileHeight, int itemsToRender); + static AtlasNode* create(std::string_view filename, int tileWidth, int tileHeight, int itemsToRender); /** updates the Atlas (indexed vertex array). * Shall be overridden in subclasses. @@ -106,7 +106,7 @@ class CC_DLL AtlasNode : public Node, public TextureProtocol /** Initializes an AtlasNode with an Atlas file the width and height of each item and the quantity of items to * render*/ - bool initWithTileFile(const std::string& tile, int tileWidth, int tileHeight, int itemsToRender); + bool initWithTileFile(std::string_view tile, int tileWidth, int tileHeight, int itemsToRender); /** Initializes an AtlasNode with a texture the width and height of each item measured in points and the quantity * of items to render*/ diff --git a/cocos/2d/CCAutoPolygon.cpp b/cocos/2d/CCAutoPolygon.cpp index 6becd122ecbf..6cec4151315e 100644 --- a/cocos/2d/CCAutoPolygon.cpp +++ b/cocos/2d/CCAutoPolygon.cpp @@ -168,7 +168,7 @@ float PolygonInfo::getArea() const return area; } -AutoPolygon::AutoPolygon(const std::string& filename) +AutoPolygon::AutoPolygon(std::string_view filename) : _image(nullptr), _data(nullptr), _filename(""), _width(0), _height(0), _scaleFactor(0) { _filename = filename; @@ -714,7 +714,7 @@ PolygonInfo AutoPolygon::generateTriangles(const Rect& rect, float epsilon, floa return ret; } -PolygonInfo AutoPolygon::generatePolygon(const std::string& filename, const Rect& rect, float epsilon, float threshold) +PolygonInfo AutoPolygon::generatePolygon(std::string_view filename, const Rect& rect, float epsilon, float threshold) { AutoPolygon ap(filename); return ap.generateTriangles(rect, epsilon, threshold); diff --git a/cocos/2d/CCAutoPolygon.h b/cocos/2d/CCAutoPolygon.h index 1552ab99afff..676c6bd03b2c 100644 --- a/cocos/2d/CCAutoPolygon.h +++ b/cocos/2d/CCAutoPolygon.h @@ -117,8 +117,8 @@ class CC_DLL PolygonInfo const Rect& getRect() const { return _rect; } void setRect(const Rect& rect) { _rect = rect; } - const std::string& getFilename() const { return _filename; } - void setFilename(const std::string& filename) { _filename = filename; } + std::string_view getFilename() const { return _filename; } + void setFilename(std::string_view filename) { _filename = filename; } // FIXME: this should be a property, not a public ivar TrianglesCommand::Triangles triangles; @@ -147,7 +147,7 @@ class CC_DLL AutoPolygon * @param filename a path to image file, e.g., "scene1/monster.png". * @return an AutoPolygon object; */ - AutoPolygon(const std::string& filename); + AutoPolygon(std::string_view filename); /** * Destructor of AutoPolygon. @@ -254,7 +254,7 @@ class CC_DLL AutoPolygon * auto sp = Sprite::create(AutoPolygon::generatePolygon("grossini.png")); * @endcode */ - static PolygonInfo generatePolygon(const std::string& filename, + static PolygonInfo generatePolygon(std::string_view filename, const Rect& rect = Rect::ZERO, float epsilon = 2.0f, float threshold = 0.05f); diff --git a/cocos/2d/CCCameraBackgroundBrush.cpp b/cocos/2d/CCCameraBackgroundBrush.cpp index 442ca25bcb32..f983bfa87f03 100644 --- a/cocos/2d/CCCameraBackgroundBrush.cpp +++ b/cocos/2d/CCCameraBackgroundBrush.cpp @@ -71,12 +71,12 @@ CameraBackgroundDepthBrush* CameraBackgroundBrush::createDepthBrush(float depth) return CameraBackgroundDepthBrush::create(depth); } -CameraBackgroundSkyBoxBrush* CameraBackgroundBrush::createSkyboxBrush(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +CameraBackgroundSkyBoxBrush* CameraBackgroundBrush::createSkyboxBrush(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { return CameraBackgroundSkyBoxBrush::create(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z); } @@ -303,12 +303,12 @@ CameraBackgroundSkyBoxBrush::~CameraBackgroundSkyBoxBrush() #endif } -CameraBackgroundSkyBoxBrush* CameraBackgroundSkyBoxBrush::create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +CameraBackgroundSkyBoxBrush* CameraBackgroundSkyBoxBrush::create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { CameraBackgroundSkyBoxBrush* ret = nullptr; diff --git a/cocos/2d/CCCameraBackgroundBrush.h b/cocos/2d/CCCameraBackgroundBrush.h index 1f884cff8554..630b1a87e373 100644 --- a/cocos/2d/CCCameraBackgroundBrush.h +++ b/cocos/2d/CCCameraBackgroundBrush.h @@ -105,12 +105,12 @@ class CC_DLL CameraBackgroundBrush : public Ref @param negative_z texture for the rear side of the texture cube face. @return A new brush inited with given parameters. */ - static CameraBackgroundSkyBoxBrush* createSkyboxBrush(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + static CameraBackgroundSkyBoxBrush* createSkyboxBrush(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); /** * draw the background */ @@ -253,12 +253,12 @@ class CC_DLL CameraBackgroundSkyBoxBrush : public CameraBackgroundBrush @param negative_z texture for the rear side of the texture cube face. @return A new brush inited with given parameters. */ - static CameraBackgroundSkyBoxBrush* create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + static CameraBackgroundSkyBoxBrush* create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); /** Creates a Skybox brush with 6 textures. */ diff --git a/cocos/2d/CCComponent.h b/cocos/2d/CCComponent.h index d780a665e63c..6fa5ff0859ca 100644 --- a/cocos/2d/CCComponent.h +++ b/cocos/2d/CCComponent.h @@ -60,8 +60,8 @@ class CC_DLL Component : public Ref bool isEnabled() const { return _enabled; } virtual void setEnabled(bool enabled); - const std::string& getName() const { return _name; } - virtual void setName(const std::string& name) { _name = name; } + std::string_view getName() const { return _name; } + virtual void setName(std::string_view name) { _name = name; } Node* getOwner() const { return _owner; } virtual void setOwner(Node* owner); diff --git a/cocos/2d/CCComponentContainer.cpp b/cocos/2d/CCComponentContainer.cpp index 92f57884155c..dda4e93b8cd7 100644 --- a/cocos/2d/CCComponentContainer.cpp +++ b/cocos/2d/CCComponentContainer.cpp @@ -33,7 +33,7 @@ ComponentContainer::ComponentContainer(Node* node) : _owner(node) {} ComponentContainer::~ComponentContainer() {} -Component* ComponentContainer::get(const std::string& name) const +Component* ComponentContainer::get(std::string_view name) const { Component* ret = nullptr; @@ -60,7 +60,7 @@ bool ComponentContainer::add(Component* com) CCASSERT(false, "ComponentContainer already have this kind of component"); break; } - _componentMap[componentName] = com; + hlookup::set_item(_componentMap, componentName, com);//_componentMap[componentName] = com; com->retain(); com->setOwner(_owner); com->onAdd(); @@ -70,7 +70,7 @@ bool ComponentContainer::add(Component* com) return ret; } -bool ComponentContainer::remove(const std::string& componentName) +bool ComponentContainer::remove(std::string_view componentName) { bool ret = false; do diff --git a/cocos/2d/CCComponentContainer.h b/cocos/2d/CCComponentContainer.h index caba0e1a2420..bdc08df7593e 100644 --- a/cocos/2d/CCComponentContainer.h +++ b/cocos/2d/CCComponentContainer.h @@ -54,10 +54,10 @@ class CC_DLL ComponentContainer /** * @js getComponent */ - Component* get(const std::string& name) const; + Component* get(std::string_view name) const; bool add(Component* com); - bool remove(const std::string& name); + bool remove(std::string_view name); bool remove(Component* com); void removeAll(); void visit(float delta); @@ -68,7 +68,7 @@ class CC_DLL ComponentContainer bool isEmpty() const { return _componentMap.empty(); } private: - std::unordered_map _componentMap; + hlookup::string_map _componentMap; Node* _owner; friend class Node; diff --git a/cocos/2d/CCFastTMXLayer.cpp b/cocos/2d/CCFastTMXLayer.cpp index c3f82291a9b5..566eae82230c 100644 --- a/cocos/2d/CCFastTMXLayer.cpp +++ b/cocos/2d/CCFastTMXLayer.cpp @@ -799,7 +799,7 @@ void FastTMXLayer::removeChild(Node* node, bool cleanup) } // TMXLayer - Properties -Value FastTMXLayer::getProperty(const std::string& propertyName) const +Value FastTMXLayer::getProperty(std::string_view propertyName) const { auto propItr = _properties.find(propertyName); if (propItr != _properties.end()) diff --git a/cocos/2d/CCFastTMXLayer.h b/cocos/2d/CCFastTMXLayer.h index 0c69484ed8fa..0da9a39e8d07 100644 --- a/cocos/2d/CCFastTMXLayer.h +++ b/cocos/2d/CCFastTMXLayer.h @@ -152,7 +152,7 @@ class CC_DLL FastTMXLayer : public Node * @param propertyName The value for the specific property name. * @return The value for the specific property name. */ - Value getProperty(const std::string& propertyName) const; + Value getProperty(std::string_view propertyName) const; /** Creates the tiles. */ void setupTiles(); @@ -161,13 +161,13 @@ class CC_DLL FastTMXLayer : public Node * * @return The tile layer name. */ - const std::string& getLayerName() { return _layerName; } + std::string_view getLayerName() { return _layerName; } /** Set the tile layer name. * * @param layerName The new layer name. */ - void setLayerName(const std::string& layerName) { _layerName = layerName; } + void setLayerName(std::string_view layerName) { _layerName = layerName; } /** Gets the size of the layer in tiles. * diff --git a/cocos/2d/CCFastTMXTiledMap.cpp b/cocos/2d/CCFastTMXTiledMap.cpp index b17ff6328f92..d06d483a7c48 100644 --- a/cocos/2d/CCFastTMXTiledMap.cpp +++ b/cocos/2d/CCFastTMXTiledMap.cpp @@ -33,7 +33,7 @@ NS_CC_BEGIN // implementation FastTMXTiledMap -FastTMXTiledMap* FastTMXTiledMap::create(const std::string& tmxFile) +FastTMXTiledMap* FastTMXTiledMap::create(std::string_view tmxFile) { FastTMXTiledMap* ret = new FastTMXTiledMap(); if (ret->initWithTMXFile(tmxFile)) @@ -45,7 +45,7 @@ FastTMXTiledMap* FastTMXTiledMap::create(const std::string& tmxFile) return nullptr; } -FastTMXTiledMap* FastTMXTiledMap::createWithXML(const std::string& tmxString, const std::string& resourcePath) +FastTMXTiledMap* FastTMXTiledMap::createWithXML(std::string_view tmxString, std::string_view resourcePath) { FastTMXTiledMap* ret = new FastTMXTiledMap(); if (ret->initWithXML(tmxString, resourcePath)) @@ -57,7 +57,7 @@ FastTMXTiledMap* FastTMXTiledMap::createWithXML(const std::string& tmxString, co return nullptr; } -bool FastTMXTiledMap::initWithTMXFile(const std::string& tmxFile) +bool FastTMXTiledMap::initWithTMXFile(std::string_view tmxFile) { CCASSERT(tmxFile.size() > 0, "FastTMXTiledMap: tmx file should not be empty"); @@ -77,7 +77,7 @@ bool FastTMXTiledMap::initWithTMXFile(const std::string& tmxFile) return true; } -bool FastTMXTiledMap::initWithXML(const std::string& tmxString, const std::string& resourcePath) +bool FastTMXTiledMap::initWithXML(std::string_view tmxString, std::string_view resourcePath) { setContentSize(Vec2::ZERO); @@ -194,7 +194,7 @@ void FastTMXTiledMap::buildWithMapInfo(TMXMapInfo* mapInfo) } // public -FastTMXLayer* FastTMXTiledMap::getLayer(const std::string& layerName) const +FastTMXLayer* FastTMXTiledMap::getLayer(std::string_view layerName) const { CCASSERT(!layerName.empty(), "Invalid layer name!"); @@ -214,7 +214,7 @@ FastTMXLayer* FastTMXTiledMap::getLayer(const std::string& layerName) const return nullptr; } -TMXObjectGroup* FastTMXTiledMap::getObjectGroup(const std::string& groupName) const +TMXObjectGroup* FastTMXTiledMap::getObjectGroup(std::string_view groupName) const { CCASSERT(!groupName.empty(), "Invalid group name!"); @@ -233,7 +233,7 @@ TMXObjectGroup* FastTMXTiledMap::getObjectGroup(const std::string& groupName) co return nullptr; } -Value FastTMXTiledMap::getProperty(const std::string& propertyName) const +Value FastTMXTiledMap::getProperty(std::string_view propertyName) const { auto propsItr = _properties.find(propertyName); if (propsItr != _properties.end()) diff --git a/cocos/2d/CCFastTMXTiledMap.h b/cocos/2d/CCFastTMXTiledMap.h index da7a0273ac31..9790ea746ba5 100644 --- a/cocos/2d/CCFastTMXTiledMap.h +++ b/cocos/2d/CCFastTMXTiledMap.h @@ -101,7 +101,7 @@ class CC_DLL FastTMXTiledMap : public Node * * @return An autorelease object. */ - static FastTMXTiledMap* create(const std::string& tmxFile); + static FastTMXTiledMap* create(std::string_view tmxFile); /** Initializes a TMX Tiled Map with a TMX formatted XML string and a path to TMX resources. * @@ -109,25 +109,25 @@ class CC_DLL FastTMXTiledMap : public Node * @param resourcePath A path to TMX resources. * @return An autorelease object. */ - static FastTMXTiledMap* createWithXML(const std::string& tmxString, const std::string& resourcePath); + static FastTMXTiledMap* createWithXML(std::string_view tmxString, std::string_view resourcePath); /** Return the FastTMXLayer for the specific layer. * * @return Return the FastTMXLayer for the specific layer. */ - FastTMXLayer* getLayer(const std::string& layerName) const; + FastTMXLayer* getLayer(std::string_view layerName) const; /** Return the TMXObjectGroup for the specific group. * * @return Return the TMXObjectGroup for the specific group. */ - TMXObjectGroup* getObjectGroup(const std::string& groupName) const; + TMXObjectGroup* getObjectGroup(std::string_view groupName) const; /** Return the value for the specific property name. * * @return Return the value for the specific property name. */ - Value getProperty(const std::string& propertyName) const; + Value getProperty(std::string_view propertyName) const; /** Return properties dictionary for tile GID. * @@ -207,7 +207,7 @@ class CC_DLL FastTMXTiledMap : public Node int getLayerCount() const { return _layerCount; } - const std::string& getResourceFile() const { return _tmxFile; } + std::string_view getResourceFile() const { return _tmxFile; } CC_CONSTRUCTOR_ACCESS : /** @@ -221,10 +221,10 @@ class CC_DLL FastTMXTiledMap : public Node virtual ~FastTMXTiledMap(); /** initializes a TMX Tiled Map with a TMX file */ - bool initWithTMXFile(const std::string& tmxFile); + bool initWithTMXFile(std::string_view tmxFile); /** initializes a TMX Tiled Map with a TMX formatted XML string and a path to TMX resources */ - bool initWithXML(const std::string& tmxString, const std::string& resourcePath); + bool initWithXML(std::string_view tmxString, std::string_view resourcePath); protected: FastTMXLayer* parseLayer(TMXLayerInfo* layerInfo, TMXMapInfo* mapInfo); diff --git a/cocos/2d/CCFontAtlas.cpp b/cocos/2d/CCFontAtlas.cpp index df0db9bc0208..fc1aabd928f2 100644 --- a/cocos/2d/CCFontAtlas.cpp +++ b/cocos/2d/CCFontAtlas.cpp @@ -520,9 +520,9 @@ void FontAtlas::setLineHeight(float newHeight) _lineHeight = newHeight; } -std::string FontAtlas::getFontName() const +std::string_view FontAtlas::getFontName() const { - std::string fontName = _fontFreeType ? _fontFreeType->getFontName() : ""; + std::string_view fontName = _fontFreeType ? _fontFreeType->getFontName() : ""sv; if (fontName.empty()) return fontName; auto idx = fontName.rfind('/'); diff --git a/cocos/2d/CCFontAtlas.h b/cocos/2d/CCFontAtlas.h index 384aecb2548a..16bcfc72a81e 100644 --- a/cocos/2d/CCFontAtlas.h +++ b/cocos/2d/CCFontAtlas.h @@ -86,7 +86,7 @@ class CC_DLL FontAtlas : public Ref float getLineHeight() const { return _lineHeight; } void setLineHeight(float newHeight); - std::string getFontName() const; + std::string_view getFontName() const; Texture2D* getTexture(int slot); const Font* getFont() const { return _font; } diff --git a/cocos/2d/CCFontAtlasCache.cpp b/cocos/2d/CCFontAtlasCache.cpp index d9df5ab56683..60a359c33409 100644 --- a/cocos/2d/CCFontAtlasCache.cpp +++ b/cocos/2d/CCFontAtlasCache.cpp @@ -36,7 +36,7 @@ NS_CC_BEGIN -std::unordered_map FontAtlasCache::_atlasMap; +hlookup::string_map FontAtlasCache::_atlasMap; #define ATLAS_MAP_KEY_PREFIX_BUFFER_SIZE 255 void FontAtlasCache::purgeCachedData() @@ -91,16 +91,17 @@ FontAtlas* FontAtlasCache::getFontAtlasTTF(const _ttfConfig* config) return nullptr; } -FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName) +FontAtlas* FontAtlasCache::getFontAtlasFNT(std::string_view fontFileName) { return getFontAtlasFNT(fontFileName, Rect::ZERO, false); } -FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName, const std::string& subTextureKey) +FontAtlas* FontAtlasCache::getFontAtlasFNT(std::string_view fontFileName, std::string_view subTextureKey) { const auto realFontFilename = FileUtils::getInstance()->getNewFilename( fontFileName); // resolves real file path, to prevent storing multiple atlases for the same file. - std::string atlasName = subTextureKey + " " + realFontFilename; + std::string atlasName{subTextureKey}; + atlasName.append(" ", 1).append(realFontFilename); const auto it = _atlasMap.find(atlasName); if (it == _atlasMap.end()) @@ -123,7 +124,7 @@ FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName, cons return nullptr; } -FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName, const Rect& imageRect, bool imageRotated) +FontAtlas* FontAtlasCache::getFontAtlasFNT(std::string_view fontFileName, const Rect& imageRect, bool imageRotated) { const auto realFontFilename = FileUtils::getInstance()->getNewFilename( fontFileName); // resolves real file path, to prevent storing multiple atlases for the same file. @@ -153,14 +154,14 @@ FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName, cons return nullptr; } -FontAtlas* FontAtlasCache::getFontAtlasFNT(const std::string& fontFileName, const Vec2& imageOffset) +FontAtlas* FontAtlasCache::getFontAtlasFNT(std::string_view fontFileName, const Vec2& imageOffset) { return getFontAtlasFNT(fontFileName, Rect(imageOffset.x, imageOffset.y, 0, 0), false); } -FontAtlas* FontAtlasCache::getFontAtlasCharMap(const std::string& plistFile) +FontAtlas* FontAtlasCache::getFontAtlasCharMap(std::string_view plistFile) { - const std::string& atlasName = plistFile; + std::string_view atlasName = plistFile; auto it = _atlasMap.find(atlasName); if (it == _atlasMap.end()) @@ -172,8 +173,8 @@ FontAtlas* FontAtlasCache::getFontAtlasCharMap(const std::string& plistFile) auto tempAtlas = font->newFontAtlas(); if (tempAtlas) { - _atlasMap[atlasName] = tempAtlas; - return _atlasMap[atlasName]; + hlookup::set_item(_atlasMap, atlasName, tempAtlas); // _atlasMap[atlasName] = tempAtlas; + return tempAtlas; } } } @@ -210,7 +211,7 @@ FontAtlas* FontAtlasCache::getFontAtlasCharMap(Texture2D* texture, int itemWidth return nullptr; } -FontAtlas* FontAtlasCache::getFontAtlasCharMap(const std::string& charMapFile, +FontAtlas* FontAtlasCache::getFontAtlasCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) @@ -263,7 +264,7 @@ bool FontAtlasCache::releaseFontAtlas(FontAtlas* atlas) return false; } -void FontAtlasCache::reloadFontAtlasFNT(const std::string& fontFileName, const Rect& imageRect, bool imageRotated) +void FontAtlasCache::reloadFontAtlasFNT(std::string_view fontFileName, const Rect& imageRect, bool imageRotated) { char keyPrefix[ATLAS_MAP_KEY_PREFIX_BUFFER_SIZE]; snprintf(keyPrefix, ATLAS_MAP_KEY_PREFIX_BUFFER_SIZE, "%.2f %.2f ", imageRect.origin.x, imageRect.origin.y); @@ -288,12 +289,12 @@ void FontAtlasCache::reloadFontAtlasFNT(const std::string& fontFileName, const R } } -void FontAtlasCache::reloadFontAtlasFNT(const std::string& fontFileName, const Vec2& imageOffset) +void FontAtlasCache::reloadFontAtlasFNT(std::string_view fontFileName, const Vec2& imageOffset) { reloadFontAtlasFNT(fontFileName, Rect(imageOffset.x, imageOffset.y, 0, 0), false); } -void FontAtlasCache::unloadFontAtlasTTF(const std::string& fontFileName) +void FontAtlasCache::unloadFontAtlasTTF(std::string_view fontFileName) { auto item = _atlasMap.begin(); while (item != _atlasMap.end()) diff --git a/cocos/2d/CCFontAtlasCache.h b/cocos/2d/CCFontAtlasCache.h index d995d2a92ffb..f02e41ad2219 100644 --- a/cocos/2d/CCFontAtlasCache.h +++ b/cocos/2d/CCFontAtlasCache.h @@ -43,17 +43,17 @@ class CC_DLL FontAtlasCache public: static FontAtlas* getFontAtlasTTF(const _ttfConfig* config); - static FontAtlas* getFontAtlasFNT(const std::string& fontFileName); - static FontAtlas* getFontAtlasFNT(const std::string& fontFileName, const std::string& subTextureKey); - static FontAtlas* getFontAtlasFNT(const std::string& fontFileName, const Rect& imageRect, bool imageRotated); - CC_DEPRECATED_ATTRIBUTE static FontAtlas* getFontAtlasFNT(const std::string& fontFileName, const Vec2& imageOffset); + static FontAtlas* getFontAtlasFNT(std::string_view fontFileName); + static FontAtlas* getFontAtlasFNT(std::string_view fontFileName, std::string_view subTextureKey); + static FontAtlas* getFontAtlasFNT(std::string_view fontFileName, const Rect& imageRect, bool imageRotated); + CC_DEPRECATED_ATTRIBUTE static FontAtlas* getFontAtlasFNT(std::string_view fontFileName, const Vec2& imageOffset); - static FontAtlas* getFontAtlasCharMap(const std::string& charMapFile, + static FontAtlas* getFontAtlasCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); static FontAtlas* getFontAtlasCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap); - static FontAtlas* getFontAtlasCharMap(const std::string& plistFile); + static FontAtlas* getFontAtlasCharMap(std::string_view plistFile); static bool releaseFontAtlas(FontAtlas* atlas); @@ -66,19 +66,19 @@ class CC_DLL FontAtlasCache CAUTION : All component use this font texture should be reset font name, though the file name is same! otherwise, it will cause program crash! */ - static void reloadFontAtlasFNT(const std::string& fontFileName, const Rect& imageRect, bool imageRotated); + static void reloadFontAtlasFNT(std::string_view fontFileName, const Rect& imageRect, bool imageRotated); - CC_DEPRECATED_ATTRIBUTE static void reloadFontAtlasFNT(const std::string& fontFileName, + CC_DEPRECATED_ATTRIBUTE static void reloadFontAtlasFNT(std::string_view fontFileName, const Vec2& imageOffset = Vec2::ZERO); /** Unload all texture atlas texture create by special file name. CAUTION : All component use this font texture should be reset font name, though the file name is same! otherwise, it will cause program crash! */ - static void unloadFontAtlasTTF(const std::string& fontFileName); + static void unloadFontAtlasTTF(std::string_view fontFileName); private: - static std::unordered_map _atlasMap; + static hlookup::string_map _atlasMap; }; NS_CC_END diff --git a/cocos/2d/CCFontCharMap.cpp b/cocos/2d/CCFontCharMap.cpp index c8625143b92a..8eb4986c8380 100644 --- a/cocos/2d/CCFontCharMap.cpp +++ b/cocos/2d/CCFontCharMap.cpp @@ -33,7 +33,7 @@ NS_CC_BEGIN -FontCharMap* FontCharMap::create(const std::string& plistFile) +FontCharMap* FontCharMap::create(std::string_view plistFile) { std::string pathStr = FileUtils::getInstance()->fullPathForFilename(plistFile); std::string relPathStr = pathStr.substr(0, pathStr.find_last_of('/')) + "/"; @@ -64,7 +64,7 @@ FontCharMap* FontCharMap::create(const std::string& plistFile) return tempFont; } -FontCharMap* FontCharMap::create(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap) +FontCharMap* FontCharMap::create(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) { Texture2D* tempTexture = Director::getInstance()->getTextureCache()->addImage(charMapFile); diff --git a/cocos/2d/CCFontCharMap.h b/cocos/2d/CCFontCharMap.h index 1c576571968e..436290471d07 100644 --- a/cocos/2d/CCFontCharMap.h +++ b/cocos/2d/CCFontCharMap.h @@ -38,9 +38,9 @@ class Texture2D; class FontCharMap : public Font { public: - static FontCharMap* create(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap); + static FontCharMap* create(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); static FontCharMap* create(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap); - static FontCharMap* create(const std::string& plistFile); + static FontCharMap* create(std::string_view plistFile); virtual int* getHorizontalKerningForTextUTF32(const std::u32string& text, int& outNumLetters) const override; virtual FontAtlas* newFontAtlas() override; diff --git a/cocos/2d/CCFontFNT.cpp b/cocos/2d/CCFontFNT.cpp index d3b252a4b280..87fa76440de5 100644 --- a/cocos/2d/CCFontFNT.cpp +++ b/cocos/2d/CCFontFNT.cpp @@ -56,15 +56,15 @@ struct _FontDefHashElement; // // FNTConfig Cache - free functions // -static Map* s_configurations = nullptr; +static StringMap* s_configurations = nullptr; -BMFontConfiguration* FNTConfigLoadFile(const std::string& fntFile) +BMFontConfiguration* FNTConfigLoadFile(std::string_view fntFile) { BMFontConfiguration* ret = nullptr; if (s_configurations == nullptr) { - s_configurations = new Map(); + s_configurations = new StringMap(); } ret = s_configurations->at(fntFile); @@ -84,7 +84,7 @@ BMFontConfiguration* FNTConfigLoadFile(const std::string& fntFile) // BitmapFontConfiguration // -BMFontConfiguration* BMFontConfiguration::create(const std::string& FNTfile) +BMFontConfiguration* BMFontConfiguration::create(std::string_view FNTfile) { BMFontConfiguration* ret = new BMFontConfiguration(); if (ret->initWithFNTfile(FNTfile)) @@ -96,7 +96,7 @@ BMFontConfiguration* BMFontConfiguration::create(const std::string& FNTfile) return nullptr; } -bool BMFontConfiguration::initWithFNTfile(const std::string& FNTfile) +bool BMFontConfiguration::initWithFNTfile(std::string_view FNTfile) { _characterSet = this->parseConfigFile(FNTfile); @@ -141,7 +141,7 @@ void BMFontConfiguration::purgeFontDefDictionary() _fontDefDictionary.clear(); } -std::set* BMFontConfiguration::parseConfigFile(const std::string& controlFile) +std::set* BMFontConfiguration::parseConfigFile(std::string_view controlFile) { std::string data = FileUtils::getInstance()->getStringFromFile(controlFile); if (data.empty()) @@ -156,7 +156,7 @@ std::set* BMFontConfiguration::parseConfigFile(const std::string& } if (data[0] == 0) { - CCLOG("cocos2d: Error parsing FNTfile %s", controlFile.c_str()); + CCLOG("cocos2d: Error parsing FNTfile %s", controlFile.data()); return nullptr; } auto contents = data.c_str(); @@ -223,7 +223,7 @@ std::set* BMFontConfiguration::parseConfigFile(const std::string& std::set* BMFontConfiguration::parseBinaryConfigFile(unsigned char* pData, uint32_t size, - const std::string& controlFile) + std::string_view controlFile) { /* based on http://www.angelcode.com/products/bmfont/doc/file_format.html file format */ @@ -399,7 +399,7 @@ std::set* BMFontConfiguration::parseBinaryConfigFile(unsigned char return validCharsString; } -void BMFontConfiguration::parseImageFileName(const char* line, const std::string& fntFile) +void BMFontConfiguration::parseImageFileName(const char* line, std::string_view fntFile) { ////////////////////////////////////////////////////////////////////////// // line to parse: @@ -528,7 +528,7 @@ void BMFontConfiguration::parseKerningEntry(const char* line) _kerningDictionary[key] = amount; } -FontFNT* FontFNT::create(const std::string& fntFilePath, const Rect& imageRect, bool imageRotated) +FontFNT* FontFNT::create(std::string_view fntFilePath, const Rect& imageRect, bool imageRotated) { const auto newConf = FNTConfigLoadFile(fntFilePath); if (!newConf) @@ -545,7 +545,7 @@ FontFNT* FontFNT::create(const std::string& fntFilePath, const Rect& imageRect, return tempFont; } -FontFNT* FontFNT::create(const std::string& fntFilePath, const std::string& subTextureKey) +FontFNT* FontFNT::create(std::string_view fntFilePath, std::string_view subTextureKey) { const auto newConf = FNTConfigLoadFile(fntFilePath); if (!newConf) @@ -567,7 +567,7 @@ FontFNT* FontFNT::create(const std::string& fntFilePath, const std::string& subT return tempFont; } -FontFNT* FontFNT::create(const std::string& fntFilePath) +FontFNT* FontFNT::create(std::string_view fntFilePath) { const auto newConf = FNTConfigLoadFile(fntFilePath); if (!newConf) @@ -590,7 +590,7 @@ FontFNT* FontFNT::create(const std::string& fntFilePath) return tempFont; } -FontFNT* FontFNT::create(const std::string& fntFilePath, const Vec2& imageOffset) +FontFNT* FontFNT::create(std::string_view fntFilePath, const Vec2& imageOffset) { return create(fntFilePath, Rect(imageOffset.x, imageOffset.y, 0, 0), false); } @@ -762,11 +762,11 @@ FontAtlas* FontFNT::newFontAtlas() return tempAtlas; } -void FontFNT::reloadBMFontResource(const std::string& fntFilePath) +void FontFNT::reloadBMFontResource(std::string_view fntFilePath) { if (s_configurations == nullptr) { - s_configurations = new Map(); + s_configurations = new StringMap(); } BMFontConfiguration* ret = s_configurations->at(fntFilePath); diff --git a/cocos/2d/CCFontFNT.h b/cocos/2d/CCFontFNT.h index 3e6cb364a62b..b1eb88ad5c26 100644 --- a/cocos/2d/CCFontFNT.h +++ b/cocos/2d/CCFontFNT.h @@ -115,27 +115,27 @@ class CC_DLL BMFontConfiguration : public Ref std::string description() const; /** allocates a BMFontConfiguration with a FNT file */ - static BMFontConfiguration* create(const std::string& FNTfile); + static BMFontConfiguration* create(std::string_view FNTfile); /** initializes a BitmapFontConfiguration with a FNT file */ - bool initWithFNTfile(const std::string& FNTfile); + bool initWithFNTfile(std::string_view FNTfile); - const std::string& getAtlasName() { return _atlasName; } - void setAtlasName(const std::string& atlasName) { _atlasName = atlasName; } + std::string_view getAtlasName() { return _atlasName; } + void setAtlasName(std::string_view atlasName) { _atlasName = atlasName; } std::set* getCharacterSet() const; protected: - virtual std::set* parseConfigFile(const std::string& controlFile); + virtual std::set* parseConfigFile(std::string_view controlFile); virtual std::set* parseBinaryConfigFile(unsigned char* pData, uint32_t size, - const std::string& controlFile); + std::string_view controlFile); private: unsigned int parseCharacterDefinition(const char* line); void parseInfoArguments(const char* line); void parseCommonArguments(const char* line); - void parseImageFileName(const char* line, const std::string& fntFile); + void parseImageFileName(const char* line, std::string_view fntFile); void parseKerningEntry(const char* line); void purgeKerningDictionary(); void purgeFontDefDictionary(); @@ -145,11 +145,11 @@ class CC_DLL FontFNT : public Font { public: - static FontFNT* create(const std::string& fntFilePath, const Rect& imageRect, bool imageRotated); - static FontFNT* create(const std::string& fntFilePath, const std::string& subTextureKey); - static FontFNT* create(const std::string& fntFilePath); + static FontFNT* create(std::string_view fntFilePath, const Rect& imageRect, bool imageRotated); + static FontFNT* create(std::string_view fntFilePath, std::string_view subTextureKey); + static FontFNT* create(std::string_view fntFilePath); - CC_DEPRECATED_ATTRIBUTE static FontFNT* create(const std::string& fntFilePath, + CC_DEPRECATED_ATTRIBUTE static FontFNT* create(std::string_view fntFilePath, const Vec2& imageOffset = Vec2::ZERO); /** Purges the cached data. @@ -164,7 +164,7 @@ class CC_DLL FontFNT : public Font int getOriginalFontSize() const; - static void reloadBMFontResource(const std::string& fntFilePath); + static void reloadBMFontResource(std::string_view fntFilePath); protected: FontFNT(BMFontConfiguration* theContfig, const Rect& imageRect, bool imageRotated); diff --git a/cocos/2d/CCFontFreeType.cpp b/cocos/2d/CCFontFreeType.cpp index 4a93709cb187..c038926bc7b5 100644 --- a/cocos/2d/CCFontFreeType.cpp +++ b/cocos/2d/CCFontFreeType.cpp @@ -653,7 +653,7 @@ std::string_view FontFreeType::getGlyphCollection() const return glyphCollection; } -void FontFreeType::releaseFont(const std::string& fontName) +void FontFreeType::releaseFont(std::string_view fontName) { auto item = s_cacheFontData.begin(); while (s_cacheFontData.end() != item) diff --git a/cocos/2d/CCFontFreeType.h b/cocos/2d/CCFontFreeType.h index 177571476b04..505812e87caa 100644 --- a/cocos/2d/CCFontFreeType.h +++ b/cocos/2d/CCFontFreeType.h @@ -101,12 +101,12 @@ class CC_DLL FontFreeType : public Font int getFontAscender() const; const char* getFontFamily() const; - const std::string& getFontName() const { return _fontName; } + std::string_view getFontName() const { return _fontName; } virtual FontAtlas* newFontAtlas() override; virtual int getFontMaxHeight() const override { return _lineHeight; } - static void releaseFont(const std::string& fontName); + static void releaseFont(std::string_view fontName); static FT_Library getFTLibrary(); diff --git a/cocos/2d/CCLabel.cpp b/cocos/2d/CCLabel.cpp index a184fa67d3d3..ba6b570aaf40 100644 --- a/cocos/2d/CCLabel.cpp +++ b/cocos/2d/CCLabel.cpp @@ -240,8 +240,8 @@ Label* Label::create() return ret; } -Label* Label::createWithSystemFont(const std::string& text, - const std::string& font, +Label* Label::createWithSystemFont(std::string_view text, + std::string_view font, float fontSize, const Vec2& dimensions /* = Vec2::ZERO */, TextHAlignment hAlignment /* = TextHAlignment::LEFT */, @@ -259,8 +259,8 @@ Label* Label::createWithSystemFont(const std::string& text, return ret; } -Label* Label::createWithTTF(const std::string& text, - const std::string& fontFile, +Label* Label::createWithTTF(std::string_view text, + std::string_view fontFile, float fontSize, const Vec2& dimensions /* = Vec2::ZERO */, TextHAlignment hAlignment /* = TextHAlignment::LEFT */, @@ -279,7 +279,7 @@ Label* Label::createWithTTF(const std::string& text, } Label* Label::createWithTTF(const TTFConfig& ttfConfig, - const std::string& text, + std::string_view text, TextHAlignment hAlignment /* = TextHAlignment::CENTER */, int maxLineWidth /* = 0 */) { @@ -295,8 +295,8 @@ Label* Label::createWithTTF(const TTFConfig& ttfConfig, return nullptr; } -Label* Label::createWithBMFont(const std::string& bmfontPath, - const std::string& text, +Label* Label::createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth) { @@ -315,8 +315,8 @@ Label* Label::createWithBMFont(const std::string& bmfontPath, return nullptr; } -Label* Label::createWithBMFont(const std::string& bmfontPath, - const std::string& text, +Label* Label::createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, const Rect& imageRect, @@ -337,11 +337,11 @@ Label* Label::createWithBMFont(const std::string& bmfontPath, return nullptr; } -Label* Label::createWithBMFont(const std::string& bmfontPath, - const std::string& text, +Label* Label::createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, - const std::string& subTextureKey) + std::string_view subTextureKey) { auto ret = new Label(hAlignment); @@ -358,8 +358,8 @@ Label* Label::createWithBMFont(const std::string& bmfontPath, return nullptr; } -Label* Label::createWithBMFont(const std::string& bmfontPath, - const std::string& text, +Label* Label::createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, const Vec2& imageOffset) @@ -368,7 +368,7 @@ Label* Label::createWithBMFont(const std::string& bmfontPath, false); } -Label* Label::createWithCharMap(const std::string& plistFile) +Label* Label::createWithCharMap(std::string_view plistFile) { auto ret = new Label(); @@ -396,7 +396,7 @@ Label* Label::createWithCharMap(Texture2D* texture, int itemWidth, int itemHeigh return nullptr; } -Label* Label::createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap) +Label* Label::createWithCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) { auto ret = new Label(); @@ -410,7 +410,7 @@ Label* Label::createWithCharMap(const std::string& charMapFile, int itemWidth, i return nullptr; } -bool Label::setCharMap(const std::string& plistFile) +bool Label::setCharMap(std::string_view plistFile) { auto newAtlas = FontAtlasCache::getFontAtlasCharMap(plistFile); @@ -426,8 +426,8 @@ bool Label::setCharMap(const std::string& plistFile) return true; } -bool Label::initWithTTF(const std::string& text, - const std::string& fontFilePath, +bool Label::initWithTTF(std::string_view text, + std::string_view fontFilePath, float fontSize, const Vec2& dimensions, TextHAlignment /*hAlignment*/, @@ -447,7 +447,7 @@ bool Label::initWithTTF(const std::string& text, } bool Label::initWithTTF(const TTFConfig& ttfConfig, - const std::string& text, + std::string_view text, TextHAlignment /*hAlignment*/, int maxLineWidth) { @@ -476,7 +476,7 @@ bool Label::setCharMap(Texture2D* texture, int itemWidth, int itemHeight, int st return true; } -bool Label::setCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap) +bool Label::setCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) { auto newAtlas = FontAtlasCache::getFontAtlasCharMap(charMapFile, itemWidth, itemHeight, startCharMap); @@ -841,7 +841,7 @@ bool Label::setTTFConfig(const TTFConfig& ttfConfig) return setTTFConfigInternal(ttfConfig); } -bool Label::setBMFontFilePath(const std::string& bmfontFilePath, float fontSize) +bool Label::setBMFontFilePath(std::string_view bmfontFilePath, float fontSize) { FontAtlas* newAtlas = FontAtlasCache::getFontAtlasFNT(bmfontFilePath); @@ -875,7 +875,7 @@ bool Label::setBMFontFilePath(const std::string& bmfontFilePath, float fontSize) return true; } -bool Label::setBMFontFilePath(const std::string& bmfontFilePath, +bool Label::setBMFontFilePath(std::string_view bmfontFilePath, const Rect& imageRect, bool imageRotated, float fontSize) @@ -914,7 +914,7 @@ bool Label::setBMFontFilePath(const std::string& bmfontFilePath, return true; } -bool Label::setBMFontFilePath(const std::string& bmfontFilePath, const std::string& subTextureKey, float fontSize) +bool Label::setBMFontFilePath(std::string_view bmfontFilePath, std::string_view subTextureKey, float fontSize) { FontAtlas* newAtlas = FontAtlasCache::getFontAtlasFNT(bmfontFilePath, subTextureKey); @@ -949,7 +949,7 @@ bool Label::setBMFontFilePath(const std::string& bmfontFilePath, const std::stri return true; } -bool Label::setBMFontFilePath(const std::string& bmfontFilePath, const Vec2& imageOffset, float fontSize) +bool Label::setBMFontFilePath(std::string_view bmfontFilePath, const Vec2& imageOffset, float fontSize) { return setBMFontFilePath(bmfontFilePath, Rect(imageOffset.x, imageOffset.y, 0, 0), false); } @@ -2105,7 +2105,7 @@ void Label::drawSelf(bool visibleByCamera, Renderer* renderer, uint32_t flags) } } -void Label::setSystemFontName(const std::string& systemFont) +void Label::setSystemFontName(std::string_view systemFont) { if (systemFont != _systemFont) { diff --git a/cocos/2d/CCLabel.h b/cocos/2d/CCLabel.h index 66d4669cd88c..fa6b9622ea23 100644 --- a/cocos/2d/CCLabel.h +++ b/cocos/2d/CCLabel.h @@ -166,8 +166,8 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * * @return An automatically released Label object. */ - static Label* createWithSystemFont(const std::string& text, - const std::string& font, + static Label* createWithSystemFont(std::string_view text, + std::string_view font, float fontSize, const Vec2& dimensions = Vec2::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT, @@ -185,8 +185,8 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * * @return An automatically released Label object. */ - static Label* createWithTTF(const std::string& text, - const std::string& fontFilePath, + static Label* createWithTTF(std::string_view text, + std::string_view fontFilePath, float fontSize, const Vec2& dimensions = Vec2::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT, @@ -204,7 +204,7 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @see TTFConfig setTTFConfig setMaxLineWidth */ static Label* createWithTTF(const TTFConfig& ttfConfig, - const std::string& text, + std::string_view text, TextHAlignment hAlignment = TextHAlignment::LEFT, int maxLineWidth = 0); @@ -219,8 +219,8 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @return An automatically released Label object. * @see setBMFontFilePath setMaxLineWidth */ - static Label* createWithBMFont(const std::string& bmfontPath, - const std::string& text, + static Label* createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment = TextHAlignment::LEFT, int maxLineWidth = 0); @@ -237,8 +237,8 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @return An automatically released Label object. * @see setBMFontFilePath setMaxLineWidth */ - static Label* createWithBMFont(const std::string& bmfontPath, - const std::string& text, + static Label* createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, const Rect& imageRect, @@ -256,11 +256,11 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @return An automatically released Label object. * @see setBMFontFilePath setMaxLineWidth */ - static Label* createWithBMFont(const std::string& bmfontPath, - const std::string& text, + static Label* createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, - const std::string& subTextureKey); + std::string_view subTextureKey); /** * Allocates and initializes a Label, with a bitmap font file. @@ -274,8 +274,8 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @return An automatically released Label object. * @see setBMFontFilePath setMaxLineWidth */ - CC_DEPRECATED_ATTRIBUTE static Label* createWithBMFont(const std::string& bmfontPath, - const std::string& text, + CC_DEPRECATED_ATTRIBUTE static Label* createWithBMFont(std::string_view bmfontPath, + std::string_view text, const TextHAlignment& hAlignment, int maxLineWidth, const Vec2& imageOffset); @@ -290,7 +290,7 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * * @return An automatically released Label object. */ - static Label* createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap); + static Label* createWithCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); /** * Allocates and initializes a Label, with char map configuration. @@ -311,7 +311,7 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * * @return An automatically released Label object. */ - static Label* createWithCharMap(const std::string& plistFile); + static Label* createWithCharMap(std::string_view plistFile); // end of creators group /// @} @@ -332,33 +332,33 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol virtual const TTFConfig& getTTFConfig() const { return _fontConfig; } /** Sets a new bitmap font to Label */ - virtual bool setBMFontFilePath(const std::string& bmfontFilePath, float fontSize = 0); + virtual bool setBMFontFilePath(std::string_view bmfontFilePath, float fontSize = 0); /** Sets a new bitmap font to Label */ - virtual bool setBMFontFilePath(const std::string& bmfontFilePath, + virtual bool setBMFontFilePath(std::string_view bmfontFilePath, const Rect& imageRect, bool imageRotated, float fontSize = 0); /** Sets a new bitmap font to Label */ - virtual bool setBMFontFilePath(const std::string& bmfontFilePath, - const std::string& subTextureKey, + virtual bool setBMFontFilePath(std::string_view bmfontFilePath, + std::string_view subTextureKey, float fontSize = 0); /** Sets a new bitmap font to Label */ - CC_DEPRECATED_ATTRIBUTE virtual bool setBMFontFilePath(const std::string& bmfontFilePath, + CC_DEPRECATED_ATTRIBUTE virtual bool setBMFontFilePath(std::string_view bmfontFilePath, const Vec2& imageOffset, float fontSize = 0); /** Returns the bitmap font used by the Label.*/ - const std::string& getBMFontFilePath() const { return _bmFontPath; } + std::string_view getBMFontFilePath() const { return _bmFontPath; } /** * Sets a new char map configuration to Label. * - * @see `createWithCharMap(const std::string&,int,int,int)` + * @see `createWithCharMap(std::string_view,int,int,int)` */ - virtual bool setCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap); + virtual bool setCharMap(std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); /** * Sets a new char map configuration to Label. @@ -370,9 +370,9 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol /** * Sets a new char map configuration to Label. * - * @see `createWithCharMap(const std::string&)` + * @see `createWithCharMap(std::string_view)` */ - virtual bool setCharMap(const std::string& plistFile); + virtual bool setCharMap(std::string_view plistFile); /** * Sets a new system font to Label. @@ -380,10 +380,10 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol * @param font A font file or a font family name. * @warning */ - virtual void setSystemFontName(const std::string& font); + virtual void setSystemFontName(std::string_view font); /** Returns the system font used by the Label.*/ - virtual const std::string& getSystemFontName() const { return _systemFont; } + virtual std::string_view getSystemFontName() const { return _systemFont; } /* Sets the system font size of Label.*/ virtual void setSystemFontSize(float fontSize); @@ -403,7 +403,7 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol virtual void setString(std::string_view text) override; /** Return the text the Label is currently displaying.*/ - virtual const std::string& getString() const override { return _utf8Text; } + virtual std::string_view getString() const override { return _utf8Text; } /** * Return the number of lines of text. @@ -716,15 +716,15 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol */ virtual ~Label(); - bool initWithTTF(const std::string& text, - const std::string& fontFilePath, + bool initWithTTF(std::string_view text, + std::string_view fontFilePath, float fontSize, const Vec2& dimensions = Vec2::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT, TextVAlignment vAlignment = TextVAlignment::TOP); bool initWithTTF(const TTFConfig& ttfConfig, - const std::string& text, + std::string_view text, TextHAlignment hAlignment = TextHAlignment::LEFT, int maxLineWidth = 0); diff --git a/cocos/2d/CCLabelAtlas.cpp b/cocos/2d/CCLabelAtlas.cpp index 4b45ff28bdd3..5179b6ff0615 100644 --- a/cocos/2d/CCLabelAtlas.cpp +++ b/cocos/2d/CCLabelAtlas.cpp @@ -40,8 +40,8 @@ NS_CC_BEGIN // CCLabelAtlas - Creation & Init -LabelAtlas* LabelAtlas::create(const std::string& string, - const std::string& charMapFile, +LabelAtlas* LabelAtlas::create(std::string_view string, + std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) @@ -56,8 +56,8 @@ LabelAtlas* LabelAtlas::create(const std::string& string, return nullptr; } -bool LabelAtlas::initWithString(const std::string& string, - const std::string& charMapFile, +bool LabelAtlas::initWithString(std::string_view string, + std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap) @@ -66,7 +66,7 @@ bool LabelAtlas::initWithString(const std::string& string, return initWithString(string, texture, itemWidth, itemHeight, startCharMap); } -bool LabelAtlas::initWithString(const std::string& string, +bool LabelAtlas::initWithString(std::string_view string, Texture2D* texture, int itemWidth, int itemHeight, @@ -81,7 +81,7 @@ bool LabelAtlas::initWithString(const std::string& string, return false; } -LabelAtlas* LabelAtlas::create(const std::string& string, const std::string& fntFile) +LabelAtlas* LabelAtlas::create(std::string_view string, std::string_view fntFile) { LabelAtlas* ret = new LabelAtlas(); @@ -97,7 +97,7 @@ LabelAtlas* LabelAtlas::create(const std::string& string, const std::string& fnt return ret; } -LabelAtlas* LabelAtlas::create(const std::string& string, +LabelAtlas* LabelAtlas::create(std::string_view string, Texture2D* texture, int itemWidth, int itemHeight, @@ -117,7 +117,7 @@ LabelAtlas* LabelAtlas::create(const std::string& string, return ret; } -bool LabelAtlas::initWithString(const std::string& theString, const std::string& fntFile) +bool LabelAtlas::initWithString(std::string_view theString, std::string_view fntFile) { std::string pathStr = FileUtils::getInstance()->fullPathForFilename(fntFile); std::string relPathStr = pathStr.substr(0, pathStr.find_last_of('/')) + "/"; @@ -128,8 +128,8 @@ bool LabelAtlas::initWithString(const std::string& theString, const std::string& std::string textureFilename = relPathStr + dict["textureFilename"].asString(); - unsigned int width = dict["itemWidth"].asInt() / CC_CONTENT_SCALE_FACTOR(); - unsigned int height = dict["itemHeight"].asInt() / CC_CONTENT_SCALE_FACTOR(); + unsigned int width = static_cast(dict["itemWidth"].asInt() / CC_CONTENT_SCALE_FACTOR()); + unsigned int height = static_cast(dict["itemHeight"].asInt() / CC_CONTENT_SCALE_FACTOR()); unsigned int startChar = dict["firstChar"].asInt(); this->initWithString(theString, textureFilename, width, height, startChar); @@ -156,8 +156,8 @@ void LabelAtlas::updateAtlasValues() float itemHeightInPixels = _itemHeight * CC_CONTENT_SCALE_FACTOR(); if (_ignoreContentScaleFactor) { - itemWidthInPixels = _itemWidth; - itemHeightInPixels = _itemHeight; + itemWidthInPixels = static_cast(_itemWidth); + itemHeightInPixels = static_cast(_itemHeight); } CCASSERT(n <= _textureAtlas->getCapacity(), "updateAtlasValues: Invalid String length"); @@ -239,7 +239,7 @@ void LabelAtlas::setString(std::string_view label) _quadsToDraw = len; } -const std::string& LabelAtlas::getString() const +std::string_view LabelAtlas::getString() const { return _string; } diff --git a/cocos/2d/CCLabelAtlas.h b/cocos/2d/CCLabelAtlas.h index b1f10ca9a94a..1965e75f32ce 100644 --- a/cocos/2d/CCLabelAtlas.h +++ b/cocos/2d/CCLabelAtlas.h @@ -58,8 +58,8 @@ class CC_DLL LabelAtlas : public AtlasNode, public LabelProtocol public: /** Creates the LabelAtlas with a string, a char map file(the atlas), the width and height of each element and the * starting char of the atlas. */ - static LabelAtlas* create(const std::string& string, - const std::string& charMapFile, + static LabelAtlas* create(std::string_view string, + std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); @@ -68,13 +68,13 @@ class CC_DLL LabelAtlas : public AtlasNode, public LabelProtocol * Creates the LabelAtlas with a string and a configuration file. * @since v2.0 */ - static LabelAtlas* create(const std::string& string, const std::string& fntFile); + static LabelAtlas* create(std::string_view string, std::string_view fntFile); /** * Creates the LabelAtlas with a string, a texture, the width and height of each element and the starting char of * the atlas. */ - static LabelAtlas* create(const std::string& string, + static LabelAtlas* create(std::string_view string, Texture2D* texture, int itemWidth, int itemHeight, @@ -82,8 +82,8 @@ class CC_DLL LabelAtlas : public AtlasNode, public LabelProtocol /** Initializes the LabelAtlas with a string, a char map file(the atlas), the width and height of each element and * the starting char of the atlas. */ - bool initWithString(const std::string& string, - const std::string& charMapFile, + bool initWithString(std::string_view string, + std::string_view charMapFile, int itemWidth, int itemHeight, int startCharMap); @@ -92,14 +92,14 @@ class CC_DLL LabelAtlas : public AtlasNode, public LabelProtocol * Initializes the LabelAtlas with a string and a configuration file. * @since v2.0 */ - bool initWithString(const std::string& string, const std::string& fntFile); + bool initWithString(std::string_view string, std::string_view fntFile); /** Initializes the LabelAtlas with a string, a texture, the width and height in points of each element and the * starting char of the atlas */ - bool initWithString(const std::string& string, Texture2D* texture, int itemWidth, int itemHeight, int startCharMap); + bool initWithString(std::string_view string, Texture2D* texture, int itemWidth, int itemHeight, int startCharMap); virtual void setString(std::string_view label) override; - virtual const std::string& getString() const override; + virtual std::string_view getString() const override; virtual void updateAtlasValues() override; /** diff --git a/cocos/2d/CCLabelTextFormatter.cpp b/cocos/2d/CCLabelTextFormatter.cpp index a357c06edefa..33dc2474aefc 100644 --- a/cocos/2d/CCLabelTextFormatter.cpp +++ b/cocos/2d/CCLabelTextFormatter.cpp @@ -109,7 +109,7 @@ int Label::getFirstWordLen(const std::u32string& utf32Text, int startIndex, int break; } - nextLetterX += letterDef.xAdvance * _bmfontScale + _additionalKerning; + nextLetterX += static_cast(letterDef.xAdvance * _bmfontScale + _additionalKerning); len++; } @@ -140,7 +140,7 @@ void Label::updateBMFontScale() if (_currentLabelType == LabelType::BMFONT) { FontFNT* bmFont = (FontFNT*)font; - float originalFontSize = bmFont->getOriginalFontSize(); + auto originalFontSize = bmFont->getOriginalFontSize(); _bmfontScale = _bmFontSize * CC_CONTENT_SCALE_FACTOR() / originalFontSize; } else @@ -242,7 +242,7 @@ bool Label::multilineTextWrap(const std::function(_horizontalKernings[letterIndex + 1]); newLetterWidth += letterDef.xAdvance * _bmfontScale + _additionalKerning; nextLetterX += newLetterWidth; diff --git a/cocos/2d/CCMenu.cpp b/cocos/2d/CCMenu.cpp index bbd8808cc6ce..d24e01529155 100644 --- a/cocos/2d/CCMenu.cpp +++ b/cocos/2d/CCMenu.cpp @@ -175,7 +175,7 @@ void Menu::addChild(Node* child, int zOrder, int tag) Layer::addChild(child, zOrder, tag); } -void Menu::addChild(Node* child, int zOrder, const std::string& name) +void Menu::addChild(Node* child, int zOrder, std::string_view name) { CCASSERT(dynamic_cast(child) != nullptr, "Menu only supports MenuItem objects as children"); Layer::addChild(child, zOrder, name); diff --git a/cocos/2d/CCMenu.h b/cocos/2d/CCMenu.h index 560c75c8e506..37d86df33257 100644 --- a/cocos/2d/CCMenu.h +++ b/cocos/2d/CCMenu.h @@ -148,7 +148,7 @@ class CC_DLL Menu : public Layer virtual void addChild(Node* child) override; virtual void addChild(Node* child, int zOrder) override; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void onEnter() override; virtual void onExit() override; diff --git a/cocos/2d/CCMenuItem.cpp b/cocos/2d/CCMenuItem.cpp index 83927a12d263..fb797cc8646b 100644 --- a/cocos/2d/CCMenuItem.cpp +++ b/cocos/2d/CCMenuItem.cpp @@ -180,13 +180,13 @@ bool MenuItemLabel::initWithLabel(Node* label, const ccMenuCallback& callback) MenuItemLabel::~MenuItemLabel() {} -void MenuItemLabel::setString(const std::string& label) +void MenuItemLabel::setString(std::string_view label) { dynamic_cast(_label)->setString(label); this->setContentSize(_label->getContentSize()); } -std::string MenuItemLabel::getString() const +std::string_view MenuItemLabel::getString() const { auto label = dynamic_cast(_label); return label->getString(); @@ -259,8 +259,8 @@ void MenuItemLabel::setEnabled(bool enabled) // CCMenuItemAtlasFont // -MenuItemAtlasFont* MenuItemAtlasFont::create(const std::string& value, - const std::string& charMapFile, +MenuItemAtlasFont* MenuItemAtlasFont::create(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap) @@ -269,8 +269,8 @@ MenuItemAtlasFont* MenuItemAtlasFont::create(const std::string& value, (const ccMenuCallback&)nullptr); } -MenuItemAtlasFont* MenuItemAtlasFont::create(const std::string& value, - const std::string& charMapFile, +MenuItemAtlasFont* MenuItemAtlasFont::create(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap, @@ -282,8 +282,8 @@ MenuItemAtlasFont* MenuItemAtlasFont::create(const std::string& value, return ret; } -bool MenuItemAtlasFont::initWithString(const std::string& value, - const std::string& charMapFile, +bool MenuItemAtlasFont::initWithString(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap, @@ -312,7 +312,7 @@ int MenuItemFont::getFontSize() return _globalFontSize; } -void MenuItemFont::setFontName(const std::string& name) +void MenuItemFont::setFontName(std::string_view name) { if (_globalFontNameRelease) { @@ -322,12 +322,12 @@ void MenuItemFont::setFontName(const std::string& name) _globalFontNameRelease = true; } -const std::string& MenuItemFont::getFontName() +std::string_view MenuItemFont::getFontName() { return _globalFontName; } -MenuItemFont* MenuItemFont::create(const std::string& value, const ccMenuCallback& callback) +MenuItemFont* MenuItemFont::create(std::string_view value, const ccMenuCallback& callback) { MenuItemFont* ret = new MenuItemFont(); ret->initWithString(value, callback); @@ -335,7 +335,7 @@ MenuItemFont* MenuItemFont::create(const std::string& value, const ccMenuCallbac return ret; } -MenuItemFont* MenuItemFont::create(const std::string& value) +MenuItemFont* MenuItemFont::create(std::string_view value) { MenuItemFont* ret = new MenuItemFont(); ret->initWithString(value, (const ccMenuCallback&)nullptr); @@ -350,7 +350,7 @@ MenuItemFont::~MenuItemFont() CCLOGINFO("In the destructor of MenuItemFont (%p).", this); } -bool MenuItemFont::initWithString(const std::string& value, const ccMenuCallback& callback) +bool MenuItemFont::initWithString(std::string_view value, const ccMenuCallback& callback) { CCASSERT(!value.empty(), "Value length must be greater than 0"); @@ -377,14 +377,14 @@ int MenuItemFont::getFontSizeObj() const return _fontSize; } -void MenuItemFont::setFontNameObj(const std::string& name) +void MenuItemFont::setFontNameObj(std::string_view name) { _fontName = name; dynamic_cast(_label)->setSystemFontName(_fontName); this->setContentSize(dynamic_cast(_label)->getContentSize()); } -const std::string& MenuItemFont::getFontNameObj() const +std::string_view MenuItemFont::getFontNameObj() const { return _fontName; } @@ -600,21 +600,21 @@ bool MenuItemImage::init() return initWithNormalImage("", "", "", (const ccMenuCallback&)nullptr); } -MenuItemImage* MenuItemImage::create(const std::string& normalImage, const std::string& selectedImage) +MenuItemImage* MenuItemImage::create(std::string_view normalImage, std::string_view selectedImage) { return MenuItemImage::create(normalImage, selectedImage, "", (const ccMenuCallback&)nullptr); } -MenuItemImage* MenuItemImage::create(const std::string& normalImage, - const std::string& selectedImage, +MenuItemImage* MenuItemImage::create(std::string_view normalImage, + std::string_view selectedImage, const ccMenuCallback& callback) { return MenuItemImage::create(normalImage, selectedImage, "", callback); } -MenuItemImage* MenuItemImage::create(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage, +MenuItemImage* MenuItemImage::create(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage, const ccMenuCallback& callback) { MenuItemImage* ret = new MenuItemImage(); @@ -627,9 +627,9 @@ MenuItemImage* MenuItemImage::create(const std::string& normalImage, return nullptr; } -MenuItemImage* MenuItemImage::create(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage) +MenuItemImage* MenuItemImage::create(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage) { MenuItemImage* ret = new MenuItemImage(); if (ret->initWithNormalImage(normalImage, selectedImage, disabledImage, (const ccMenuCallback&)nullptr)) @@ -641,9 +641,9 @@ MenuItemImage* MenuItemImage::create(const std::string& normalImage, return nullptr; } -bool MenuItemImage::initWithNormalImage(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage, +bool MenuItemImage::initWithNormalImage(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage, const ccMenuCallback& callback) { Node* normalSprite = nullptr; diff --git a/cocos/2d/CCMenuItem.h b/cocos/2d/CCMenuItem.h index a36b65aaf6ba..20639746c90b 100644 --- a/cocos/2d/CCMenuItem.h +++ b/cocos/2d/CCMenuItem.h @@ -137,10 +137,10 @@ class CC_DLL MenuItemLabel : public MenuItem static MenuItemLabel* create(Node* label); /** Sets a new string to the inner label. */ - void setString(const std::string& label); + void setString(std::string_view label); /** Get the inner string of the inner label. */ - std::string getString() const; + std::string_view getString() const; /** Gets the color that will be used when the item is disabled. */ const Color3B& getDisabledColor() const { return _disabledColor; } @@ -196,14 +196,14 @@ class CC_DLL MenuItemAtlasFont : public MenuItemLabel { public: /** Creates a menu item from a string and atlas with a target/selector. */ - static MenuItemAtlasFont* create(const std::string& value, - const std::string& charMapFile, + static MenuItemAtlasFont* create(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap); /** Creates a menu item from a string and atlas. Use it with MenuItemToggle. */ - static MenuItemAtlasFont* create(const std::string& value, - const std::string& charMapFile, + static MenuItemAtlasFont* create(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap, @@ -222,8 +222,8 @@ class CC_DLL MenuItemAtlasFont : public MenuItemLabel virtual ~MenuItemAtlasFont() {} /** Initializes a menu item from a string and atlas with a target/selector. */ - bool initWithString(const std::string& value, - const std::string& charMapFile, + bool initWithString(std::string_view value, + std::string_view charMapFile, int itemWidth, int itemHeight, char startCharMap, @@ -240,18 +240,18 @@ class CC_DLL MenuItemFont : public MenuItemLabel { public: /** Creates a menu item from a string without target/selector. To be used with MenuItemToggle. */ - static MenuItemFont* create(const std::string& value = ""); + static MenuItemFont* create(std::string_view value = ""); /** Creates a menu item from a string with a target/selector. */ - static MenuItemFont* create(const std::string& value, const ccMenuCallback& callback); + static MenuItemFont* create(std::string_view value, const ccMenuCallback& callback); /** Set default font size. */ static void setFontSize(int size); /** Get default font size. */ static int getFontSize(); /** Set the default font name. */ - static void setFontName(const std::string& name); + static void setFontName(std::string_view name); /** Get the default font name. */ - static const std::string& getFontName(); + static std::string_view getFontName(); /** Set font size. * c++ can not overload static and non-static member functions with the same parameter types. @@ -274,13 +274,13 @@ class CC_DLL MenuItemFont : public MenuItemLabel * @js setFontName * @js NA */ - void setFontNameObj(const std::string& name); + void setFontNameObj(std::string_view name); /** Returns the name of the Font. * @js getFontNameObj * @js NA */ - const std::string& getFontNameObj() const; + std::string_view getFontNameObj() const; CC_CONSTRUCTOR_ACCESS : /** @@ -294,7 +294,7 @@ class CC_DLL MenuItemFont : public MenuItemLabel virtual ~MenuItemFont(); /** Initializes a menu item from a string with a target/selector. */ - bool initWithString(const std::string& value, const ccMenuCallback& callback); + bool initWithString(std::string_view value, const ccMenuCallback& callback); protected: int _fontSize; @@ -392,19 +392,19 @@ class CC_DLL MenuItemImage : public MenuItemSprite /** Creates an MenuItemImage. */ static MenuItemImage* create(); /** Creates a menu item with a normal and selected image.*/ - static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage); + static MenuItemImage* create(std::string_view normalImage, std::string_view selectedImage); /** Creates a menu item with a normal,selected and disabled image.*/ - static MenuItemImage* create(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage); + static MenuItemImage* create(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage); /** Creates a menu item with a normal and selected image with a callable object. */ - static MenuItemImage* create(const std::string& normalImage, - const std::string& selectedImage, + static MenuItemImage* create(std::string_view normalImage, + std::string_view selectedImage, const ccMenuCallback& callback); /** Creates a menu item with a normal,selected and disabled image with a callable object. */ - static MenuItemImage* create(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage, + static MenuItemImage* create(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage, const ccMenuCallback& callback); /** Sets the sprite frame for the normal image. */ @@ -429,9 +429,9 @@ class CC_DLL MenuItemImage : public MenuItemSprite bool init(); /** Initializes a menu item with a normal, selected and disabled image with a callable object. */ - bool initWithNormalImage(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disabledImage, + bool initWithNormalImage(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disabledImage, const ccMenuCallback& callback); private: diff --git a/cocos/2d/CCMotionStreak.cpp b/cocos/2d/CCMotionStreak.cpp index d92839e9541e..93833932a30b 100644 --- a/cocos/2d/CCMotionStreak.cpp +++ b/cocos/2d/CCMotionStreak.cpp @@ -56,7 +56,7 @@ MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const Color3B& color, - const std::string& path) + std::string_view path) { MotionStreak* ret = new MotionStreak(); if (ret->initWithFade(fade, minSeg, stroke, color, path)) @@ -82,7 +82,7 @@ MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const return nullptr; } -bool MotionStreak::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path) +bool MotionStreak::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path) { CCASSERT(!path.empty(), "Invalid filename"); diff --git a/cocos/2d/CCMotionStreak.h b/cocos/2d/CCMotionStreak.h index 07ab945dd5f5..7ce1ca2c742a 100644 --- a/cocos/2d/CCMotionStreak.h +++ b/cocos/2d/CCMotionStreak.h @@ -59,7 +59,7 @@ class CC_DLL MotionStreak : public Node, public TextureProtocol float minSeg, float strokeWidth, const Color3B& strokeColor, - const std::string& imagePath); + std::string_view imagePath); /** Creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture. * * @param timeToFade The fade time, in seconds. @@ -163,7 +163,7 @@ class CC_DLL MotionStreak : public Node, public TextureProtocol /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture filename */ - bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path); + bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path); /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture */ bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture); diff --git a/cocos/2d/CCNode.cpp b/cocos/2d/CCNode.cpp index aa068ac8fd78..49fa7a83f106 100644 --- a/cocos/2d/CCNode.cpp +++ b/cocos/2d/CCNode.cpp @@ -56,7 +56,7 @@ THE SOFTWARE. /* * 4.5x faster than std::hash in release mode */ -#define CC_HASH_NODE_NAME(name) (!name.empty() ? XXH3_64bits(name.c_str(), name.length()) : 0) +#define CC_HASH_NODE_NAME(name) (!name.empty() ? XXH3_64bits(name.data(), name.length()) : 0) NS_CC_BEGIN @@ -695,12 +695,12 @@ void Node::setTag(int tag) _tag = tag; } -const std::string& Node::getName() const +std::string_view Node::getName() const { return _name; } -void Node::setName(const std::string& name) +void Node::setName(std::string_view name) { updateParentChildrenIndexer(name); _name = name; @@ -717,7 +717,7 @@ void Node::updateParentChildrenIndexer(int tag) } } -void Node::updateParentChildrenIndexer(const std::string& name) +void Node::updateParentChildrenIndexer(std::string_view name) { uint64_t newHash = CC_HASH_NODE_NAME(name); auto parentChildrenIndexer = getParentChildrenIndexer(); @@ -817,7 +817,7 @@ Node* Node::getChildByTag(int tag) const return nullptr; } -Node* Node::getChildByName(const std::string& name) const +Node* Node::getChildByName(std::string_view name) const { // CCASSERT(!name.empty(), "Invalid name"); auto hash = CC_HASH_NODE_NAME(name); @@ -837,7 +837,7 @@ Node* Node::getChildByName(const std::string& name) const return nullptr; } -void Node::enumerateChildren(const std::string& name, std::function callback) const +void Node::enumerateChildren(std::string_view name, std::function callback) const { CCASSERT(!name.empty(), "Invalid name"); CCASSERT(callback != nullptr, "Invalid callback function"); @@ -865,7 +865,7 @@ void Node::enumerateChildren(const std::string& name, std::function } // Remove '//', '/..' if exist - std::string newName = name.substr(subStrStartPos, subStrlength); + auto newName = name.substr(subStrStartPos, subStrlength); const Node* target = this; @@ -886,15 +886,15 @@ void Node::enumerateChildren(const std::string& name, std::function else { // name is xxx - target->doEnumerate(newName, callback); + target->doEnumerate(std::string{newName}, callback); } } -bool Node::doEnumerateRecursive(const Node* node, const std::string& name, std::function callback) const +bool Node::doEnumerateRecursive(const Node* node, std::string_view name, std::function callback) const { bool ret = false; - if (node->doEnumerate(name, callback)) + if (node->doEnumerate(std::string{name}, callback)) { // search itself ret = true; @@ -966,7 +966,7 @@ void Node::addChild(Node* child, int localZOrder, int tag) addChildHelper(child, localZOrder, tag, "", true); } -void Node::addChild(Node* child, int localZOrder, const std::string& name) +void Node::addChild(Node* child, int localZOrder, std::string_view name) { CCASSERT(child != nullptr, "Argument must be non-nil"); CCASSERT(child->_parent == nullptr, "child already added. It can't be added again"); @@ -974,7 +974,7 @@ void Node::addChild(Node* child, int localZOrder, const std::string& name) addChildHelper(child, localZOrder, INVALID_TAG, name, false); } -void Node::addChildHelper(Node* child, int localZOrder, int tag, const std::string& name, bool setTag) +void Node::addChildHelper(Node* child, int localZOrder, int tag, std::string_view name, bool setTag) { auto assertNotSelfChild([this, child]() -> bool { for (Node* parent(getParent()); parent != nullptr; parent = parent->getParent()) @@ -1088,7 +1088,7 @@ void Node::removeChildByTag(int tag, bool cleanup /* = true */) } } -void Node::removeChildByName(const std::string& name, bool cleanup) +void Node::removeChildByName(std::string_view name, bool cleanup) { CCASSERT(!name.empty(), "Invalid name"); @@ -1096,7 +1096,7 @@ void Node::removeChildByName(const std::string& name, bool cleanup) if (child == nullptr) { - CCLOG("cocos2d: removeChildByName(name = %s): child not found!", name.c_str()); + CCLOG("cocos2d: removeChildByName(name = %s): child not found!", name.data()); } else { @@ -1490,7 +1490,7 @@ bool Node::isScheduled(SEL_SCHEDULE selector) const return _scheduler->isScheduled(selector, this); } -bool Node::isScheduled(const std::string& key) const +bool Node::isScheduled(std::string_view key) const { return _scheduler->isScheduled(key, this); } @@ -1547,12 +1547,12 @@ void Node::schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, _scheduler->schedule(selector, this, interval, repeat, delay, !_running); } -void Node::schedule(const std::function& callback, const std::string& key) +void Node::schedule(const std::function& callback, std::string_view key) { _scheduler->schedule(callback, this, 0, !_running, key); } -void Node::schedule(const std::function& callback, float interval, const std::string& key) +void Node::schedule(const std::function& callback, float interval, std::string_view key) { _scheduler->schedule(callback, this, interval, !_running, key); } @@ -1561,7 +1561,7 @@ void Node::schedule(const std::function& callback, float interval, unsigned int repeat, float delay, - const std::string& key) + std::string_view key) { _scheduler->schedule(callback, this, interval, repeat, delay, !_running, key); } @@ -1571,7 +1571,7 @@ void Node::scheduleOnce(SEL_SCHEDULE selector, float delay) this->schedule(selector, 0.0f, 0, delay); } -void Node::scheduleOnce(const std::function& callback, float delay, const std::string& key) +void Node::scheduleOnce(const std::function& callback, float delay, std::string_view key) { _scheduler->schedule(callback, this, 0, 0, delay, !_running, key); } @@ -1585,7 +1585,7 @@ void Node::unschedule(SEL_SCHEDULE selector) _scheduler->unschedule(selector, this); } -void Node::unschedule(const std::string& key) +void Node::unschedule(std::string_view key) { _scheduler->unschedule(key, this); } @@ -1923,7 +1923,7 @@ void Node::updateTransform() // MARK: components -Component* Node::getComponent(const std::string& name) +Component* Node::getComponent(std::string_view name) { if (_componentContainer) return _componentContainer->get(name); @@ -1943,7 +1943,7 @@ bool Node::addComponent(Component* component) return _componentContainer->add(component); } -bool Node::removeComponent(const std::string& name) +bool Node::removeComponent(std::string_view name) { if (_componentContainer) return _componentContainer->remove(name); diff --git a/cocos/2d/CCNode.h b/cocos/2d/CCNode.h index 01bd103303fc..9ebc5b5f6718 100644 --- a/cocos/2d/CCNode.h +++ b/cocos/2d/CCNode.h @@ -762,7 +762,7 @@ class CC_DLL Node : public Ref * @param name A string to identify the node easily. Please refer to `setName(int)`. * */ - virtual void addChild(Node* child, int localZOrder, const std::string& name); + virtual void addChild(Node* child, int localZOrder, std::string_view name); /** * Gets a child from the container with its tag. * @@ -796,7 +796,7 @@ class CC_DLL Node : public Ref * * @since v3.2 */ - virtual Node* getChildByName(const std::string& name) const; + virtual Node* getChildByName(std::string_view name) const; /** * Gets a child from the container with its name that can be cast to Type T. * @@ -805,7 +805,7 @@ class CC_DLL Node : public Ref * @return a Node with the given name that can be cast to Type T. */ template - T getChildByName(const std::string& name) const + T getChildByName(std::string_view name) const { return static_cast(getChildByName(name)); } @@ -835,7 +835,7 @@ class CC_DLL Node : public Ref * * @since v3.2 */ - virtual void enumerateChildren(const std::string& name, std::function callback) const; + virtual void enumerateChildren(std::string_view name, std::function callback) const; /** * Returns the array of the node's children. * @@ -909,7 +909,7 @@ class CC_DLL Node : public Ref * @param name A string that identifies a child node. * @param cleanup True if all running actions and callbacks on the child node will be cleanup, false otherwise. */ - virtual void removeChildByName(const std::string& name, bool cleanup = true); + virtual void removeChildByName(std::string_view name, bool cleanup = true); /** * Removes all children from the container with a cleanup. * @@ -989,13 +989,13 @@ class CC_DLL Node : public Ref * * @since v3.2 */ - virtual const std::string& getName() const; + virtual std::string_view getName() const; /** Changes the name that is used to identify the node easily. * @param name A string that identifies the node. * * @since v3.2 */ - virtual void setName(const std::string& name); + virtual void setName(std::string_view name); /** * Returns a custom user data pointer. @@ -1306,7 +1306,7 @@ class CC_DLL Node : public Ref * @js NA * @lua NA */ - bool isScheduled(const std::string& key) const; + bool isScheduled(std::string_view key) const; /** * Schedules the "update" method. @@ -1385,7 +1385,7 @@ class CC_DLL Node : public Ref * @param key The key of the lambda function. To be used if you want to unschedule it. * @lua NA */ - void scheduleOnce(const std::function& callback, float delay, const std::string& key); + void scheduleOnce(const std::function& callback, float delay, std::string_view key); /** * Schedules a custom selector, the scheduled selector will be ticked every frame. @@ -1403,7 +1403,7 @@ class CC_DLL Node : public Ref * @param key The key of the lambda function. To be used if you want to unschedule it. * @lua NA */ - void schedule(const std::function& callback, const std::string& key); + void schedule(const std::function& callback, std::string_view key); /** * Schedules a lambda function. The scheduled lambda function will be called every "interval" seconds @@ -1413,7 +1413,7 @@ class CC_DLL Node : public Ref * @param key The key of the lambda function. To be used if you want to unschedule it * @lua NA */ - void schedule(const std::function& callback, float interval, const std::string& key); + void schedule(const std::function& callback, float interval, std::string_view key); /** * Schedules a lambda function. @@ -1430,7 +1430,7 @@ class CC_DLL Node : public Ref float interval, unsigned int repeat, float delay, - const std::string& key); + std::string_view key); /** * Unschedules a custom selector. @@ -1447,7 +1447,7 @@ class CC_DLL Node : public Ref * @param key The key of the lambda function to be unscheduled. * @lua NA */ - void unschedule(const std::string& key); + void unschedule(std::string_view key); /** * Unschedule all scheduled selectors and lambda functions: custom selectors, and the 'update' selector and lambda @@ -1633,7 +1633,7 @@ class CC_DLL Node : public Ref * @param name A given name of component. * @return The Component by name. */ - Component* getComponent(const std::string& name); + Component* getComponent(std::string_view name); /** * Adds a component. @@ -1649,7 +1649,7 @@ class CC_DLL Node : public Ref * @param name A given name of component. * @return True if removed success. */ - virtual bool removeComponent(const std::string& name); + virtual bool removeComponent(std::string_view name); /** * Removes a component by its pointer. @@ -1854,7 +1854,7 @@ class CC_DLL Node : public Ref virtual void updateColor() {} bool doEnumerate(std::string name, std::function callback) const; - bool doEnumerateRecursive(const Node* node, const std::string& name, std::function callback) const; + bool doEnumerateRecursive(const Node* node, std::string_view name, std::function callback) const; // check whether this camera mask is visible by the current visiting camera bool isVisitableByVisitingCamera() const; @@ -1865,10 +1865,10 @@ class CC_DLL Node : public Ref void updateRotation3D(); void updateParentChildrenIndexer(int tag); - void updateParentChildrenIndexer(const std::string& name); + void updateParentChildrenIndexer(std::string_view name); private: - void addChildHelper(Node* child, int localZOrder, int tag, const std::string& name, bool setTag); + void addChildHelper(Node* child, int localZOrder, int tag, std::string_view name, bool setTag); NodeIndexerMap_t* getParentChildrenIndexer(); diff --git a/cocos/2d/CCParallaxNode.cpp b/cocos/2d/CCParallaxNode.cpp index 7282e416a453..a2c04f4ec229 100644 --- a/cocos/2d/CCParallaxNode.cpp +++ b/cocos/2d/CCParallaxNode.cpp @@ -91,7 +91,7 @@ void ParallaxNode::addChild(Node* /*child*/, int /*zOrder*/, int /*tag*/) CCASSERT(0, "ParallaxNode: use addChild:z:parallaxRatio:positionOffset instead"); } -void ParallaxNode::addChild(Node* /*child*/, int /*zOrder*/, const std::string& /*name*/) +void ParallaxNode::addChild(Node* /*child*/, int /*zOrder*/, std::string_view /*name*/) { CCASSERT(0, "ParallaxNode: use addChild:z:parallaxRatio:positionOffset instead"); } diff --git a/cocos/2d/CCParallaxNode.h b/cocos/2d/CCParallaxNode.h index 577069ec82be..409717a0e989 100644 --- a/cocos/2d/CCParallaxNode.h +++ b/cocos/2d/CCParallaxNode.h @@ -83,7 +83,7 @@ class CC_DLL ParallaxNode : public Node // Overrides // virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void removeChild(Node* child, bool cleanup) override; virtual void removeAllChildrenWithCleanup(bool cleanup) override; virtual void visit(Renderer* renderer, const Mat4& parentTransform, uint32_t parentFlags) override; diff --git a/cocos/2d/CCParticleBatchNode.cpp b/cocos/2d/CCParticleBatchNode.cpp index e91e27c5f6b7..e9f8edabb191 100644 --- a/cocos/2d/CCParticleBatchNode.cpp +++ b/cocos/2d/CCParticleBatchNode.cpp @@ -108,7 +108,7 @@ ParticleBatchNode* ParticleBatchNode::createWithTexture(Texture2D* tex, int capa * creation with File Image */ -ParticleBatchNode* ParticleBatchNode::create(const std::string& imageFile, int capacity /* = kParticleDefaultCapacity*/) +ParticleBatchNode* ParticleBatchNode::create(std::string_view imageFile, int capacity /* = kParticleDefaultCapacity*/) { ParticleBatchNode* p = new ParticleBatchNode(); if (p->initWithFile(imageFile, capacity)) @@ -140,7 +140,7 @@ bool ParticleBatchNode::initWithTexture(Texture2D* tex, int capacity) /* * init with FileImage */ -bool ParticleBatchNode::initWithFile(const std::string& fileImage, int capacity) +bool ParticleBatchNode::initWithFile(std::string_view fileImage, int capacity) { Texture2D* tex = _director->getTextureCache()->addImage(fileImage); return initWithTexture(tex, capacity); @@ -193,7 +193,7 @@ void ParticleBatchNode::addChild(Node* aChild, int zOrder, int tag) addChildByTagOrName(child, zOrder, tag, "", true); } -void ParticleBatchNode::addChild(Node* aChild, int zOrder, const std::string& name) +void ParticleBatchNode::addChild(Node* aChild, int zOrder, std::string_view name) { CCASSERT(aChild != nullptr, "Argument must be non-nullptr"); CCASSERT(dynamic_cast(aChild) != nullptr, @@ -208,7 +208,7 @@ void ParticleBatchNode::addChild(Node* aChild, int zOrder, const std::string& na void ParticleBatchNode::addChildByTagOrName(ParticleSystem* child, int zOrder, int tag, - const std::string& name, + std::string_view name, bool setTag) { // If this is the 1st children, then copy blending function @@ -251,7 +251,7 @@ void ParticleBatchNode::addChildByTagOrName(ParticleSystem* child, // faster // FIXME: or possibly using vertexZ for reordering, that would be fastest // this helper is almost equivalent to Node's addChild, but doesn't make use of the lazy sorting -int ParticleBatchNode::addChildHelper(ParticleSystem* child, int z, int aTag, const std::string& name, bool setTag) +int ParticleBatchNode::addChildHelper(ParticleSystem* child, int z, int aTag, std::string_view name, bool setTag) { CCASSERT(child != nullptr, "Argument must be non-nil"); CCASSERT(child->getParent() == nullptr, "child already added. It can't be added again"); diff --git a/cocos/2d/CCParticleBatchNode.h b/cocos/2d/CCParticleBatchNode.h index 442416209d80..6ad5991e53dd 100644 --- a/cocos/2d/CCParticleBatchNode.h +++ b/cocos/2d/CCParticleBatchNode.h @@ -87,7 +87,7 @@ class CC_DLL ParticleBatchNode : public Node, public TextureProtocol * @param capacity A capacity of particles. * @return An autoreleased ParticleBatchNode object. */ - static ParticleBatchNode* create(const std::string& fileImage, int capacity = kParticleDefaultCapacity); + static ParticleBatchNode* create(std::string_view fileImage, int capacity = kParticleDefaultCapacity); /** Inserts a child into the ParticleBatchNode. * @@ -127,7 +127,7 @@ class CC_DLL ParticleBatchNode : public Node, public TextureProtocol using Node::addChild; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void removeChild(Node* child, bool cleanup) override; virtual void reorderChild(Node* child, int zOrder) override; virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override; @@ -163,15 +163,15 @@ class CC_DLL ParticleBatchNode : public Node, public TextureProtocol /** initializes the particle system with the name of a file on disk (for a list of supported formats look at the * Texture2D class), a capacity of particles */ - bool initWithFile(const std::string& fileImage, int capacity); + bool initWithFile(std::string_view fileImage, int capacity); private: void updateAllAtlasIndexes(); void increaseAtlasCapacityTo(ssize_t quantity); int searchNewPositionInChildrenForZ(int z); void getCurrentIndex(int* oldIndex, int* newIndex, Node* child, int z); - int addChildHelper(ParticleSystem* child, int z, int aTag, const std::string& name, bool setTag); - void addChildByTagOrName(ParticleSystem* child, int z, int tag, const std::string& name, bool setTag); + int addChildHelper(ParticleSystem* child, int z, int aTag, std::string_view name, bool setTag); + void addChildByTagOrName(ParticleSystem* child, int z, int tag, std::string_view name, bool setTag); void updateBlendFunc(); void updateProgramStateTexture(); diff --git a/cocos/2d/CCParticleSystem.cpp b/cocos/2d/CCParticleSystem.cpp index 8a40ac94f177..b2820844ed07 100644 --- a/cocos/2d/CCParticleSystem.cpp +++ b/cocos/2d/CCParticleSystem.cpp @@ -191,11 +191,6 @@ void ParticleData::release() Vector ParticleSystem::__allInstances; float ParticleSystem::__totalParticleCountFactor = 1.0f; -inline static const cocos2d::Value& optValue(const ValueMap& dictionary, const std::string& key) -{ - return dictionary.find(key) != dictionary.cend() ? dictionary.at(key) : cocos2d::Value::Null; -} - ParticleSystem::ParticleSystem() : _isBlendAdditive(false) , _isAutoRemoveOnFinish(false) @@ -250,7 +245,7 @@ ParticleSystem::ParticleSystem() } // implementation ParticleSystem -ParticleSystem* ParticleSystem::create(const std::string& plistFile) +ParticleSystem* ParticleSystem::create(std::string_view plistFile) { ParticleSystem* ret = new ParticleSystem(); if (ret->initWithFile(plistFile)) @@ -290,7 +285,7 @@ bool ParticleSystem::init() return initWithTotalParticles(150); } -bool ParticleSystem::initWithFile(const std::string& plistFile) +bool ParticleSystem::initWithFile(std::string_view plistFile) { bool ret = false; _plistFile = FileUtils::getInstance()->fullPathForFilename(plistFile); @@ -299,7 +294,7 @@ bool ParticleSystem::initWithFile(const std::string& plistFile) CCASSERT(!dict.empty(), "Particles: file not found"); // FIXME: compute path from a path, should define a function somewhere to do it - string listFilePath = plistFile; + auto listFilePath = plistFile; if (listFilePath.find('/') != string::npos) { listFilePath = listFilePath.substr(0, listFilePath.rfind('/') + 1); @@ -318,7 +313,7 @@ bool ParticleSystem::initWithDictionary(const ValueMap& dictionary) return initWithDictionary(dictionary, ""); } -bool ParticleSystem::initWithDictionary(const ValueMap& dictionary, const std::string& dirname) +bool ParticleSystem::initWithDictionary(const ValueMap& dictionary, std::string_view dirname) { bool ret = false; unsigned char* buffer = nullptr; @@ -487,12 +482,12 @@ bool ParticleSystem::initWithDictionary(const ValueMap& dictionary, const std::s if (!dirname.empty() && textureDir != dirname) { textureName = textureName.substr(rPos + 1); - textureName = dirname + textureName; + textureName.insert(0, dirname); // textureName = dirname + textureName; } } else if (!dirname.empty() && !textureName.empty()) { - textureName = dirname + textureName; + textureName.insert(0, dirname); // textureName = dirname + textureName; } Texture2D* tex = nullptr; diff --git a/cocos/2d/CCParticleSystem.h b/cocos/2d/CCParticleSystem.h index 558cf8711192..6e9dcff08c7d 100644 --- a/cocos/2d/CCParticleSystem.h +++ b/cocos/2d/CCParticleSystem.h @@ -237,7 +237,7 @@ class CC_DLL ParticleSystem : public Node, public TextureProtocol, public Playab * @param plistFile Particle plist file name. * @return An autoreleased ParticleSystem object. */ - static ParticleSystem* create(const std::string& plistFile); + static ParticleSystem* create(std::string_view plistFile); /** Create a system with a fixed number of particles. * @@ -761,7 +761,7 @@ class CC_DLL ParticleSystem : public Node, public TextureProtocol, public Playab */ virtual const BlendFunc& getBlendFunc() const override; - const std::string& getResourceFile() const { return _plistFile; } + std::string_view getResourceFile() const { return _plistFile; } /// @{ /// @name implement Playable Protocol @@ -793,7 +793,7 @@ class CC_DLL ParticleSystem : public Node, public TextureProtocol, public Playab http://particledesigner.71squared.com/ @since v0.99.3 */ - bool initWithFile(const std::string& plistFile); + bool initWithFile(std::string_view plistFile); /** initializes a QuadParticleSystem from a Dictionary. @since v0.99.3 @@ -803,7 +803,7 @@ class CC_DLL ParticleSystem : public Node, public TextureProtocol, public Playab /** initializes a particle system from a NSDictionary and the path from where to load the png @since v2.1 */ - bool initWithDictionary(const ValueMap& dictionary, const std::string& dirname); + bool initWithDictionary(const ValueMap& dictionary, std::string_view dirname); //! Initializes a system with a fixed number of particles virtual bool initWithTotalParticles(int numberOfParticles); diff --git a/cocos/2d/CCParticleSystemQuad.cpp b/cocos/2d/CCParticleSystemQuad.cpp index 17e1b7de46ee..0c87d08083eb 100644 --- a/cocos/2d/CCParticleSystemQuad.cpp +++ b/cocos/2d/CCParticleSystemQuad.cpp @@ -91,7 +91,7 @@ ParticleSystemQuad::~ParticleSystemQuad() // implementation ParticleSystemQuad -ParticleSystemQuad* ParticleSystemQuad::create(const std::string& filename) +ParticleSystemQuad* ParticleSystemQuad::create(std::string_view filename) { ParticleSystemQuad* ret = new ParticleSystemQuad(); if (ret->initWithFile(filename)) diff --git a/cocos/2d/CCParticleSystemQuad.h b/cocos/2d/CCParticleSystemQuad.h index 5ab121035261..65229bd27f69 100644 --- a/cocos/2d/CCParticleSystemQuad.h +++ b/cocos/2d/CCParticleSystemQuad.h @@ -75,7 +75,7 @@ class CC_DLL ParticleSystemQuad : public ParticleSystem * @param filename Particle plist file name. * @return An autoreleased ParticleSystemQuad object. */ - static ParticleSystemQuad* create(const std::string& filename); + static ParticleSystemQuad* create(std::string_view filename); /** Creates a Particle Emitter with a dictionary. * * @param dictionary Particle dictionary. diff --git a/cocos/2d/CCPlistSpriteSheetLoader.cpp b/cocos/2d/CCPlistSpriteSheetLoader.cpp index 93a2a975e7ac..98eef1d1520a 100644 --- a/cocos/2d/CCPlistSpriteSheetLoader.cpp +++ b/cocos/2d/CCPlistSpriteSheetLoader.cpp @@ -18,7 +18,7 @@ using namespace std; NS_CC_BEGIN -void PlistSpriteSheetLoader::load(const std::string& filePath, SpriteFrameCache& cache) +void PlistSpriteSheetLoader::load(std::string_view filePath, SpriteFrameCache& cache) { CCASSERT(!filePath.empty(), "plist filename should not be nullptr"); @@ -26,7 +26,7 @@ void PlistSpriteSheetLoader::load(const std::string& filePath, SpriteFrameCache& if (fullPath.empty()) { // return if plist file doesn't exist - CCLOG("cocos2d: SpriteFrameCache: can not find %s", filePath.c_str()); + CCLOG("cocos2d: SpriteFrameCache: can not find %s", filePath.data()); return; } @@ -66,7 +66,7 @@ void PlistSpriteSheetLoader::load(const std::string& filePath, SpriteFrameCache& addSpriteFramesWithDictionary(dict, texturePath, filePath, cache); } -void PlistSpriteSheetLoader::load(const std::string& filePath, Texture2D* texture, SpriteFrameCache& cache) +void PlistSpriteSheetLoader::load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) { const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); auto dict = FileUtils::getInstance()->getValueMapFromFile(fullPath); @@ -74,8 +74,8 @@ void PlistSpriteSheetLoader::load(const std::string& filePath, Texture2D* textur addSpriteFramesWithDictionary(dict, texture, filePath, cache); } -void PlistSpriteSheetLoader::load(const std::string& filePath, - const std::string& textureFileName, +void PlistSpriteSheetLoader::load(std::string_view filePath, + std::string_view textureFileName, SpriteFrameCache& cache) { CCASSERT(!textureFileName.empty(), "texture name should not be null"); @@ -98,7 +98,7 @@ void PlistSpriteSheetLoader::load(const Data& content, Texture2D* texture, Sprit addSpriteFramesWithDictionary(dict, texture, "by#addSpriteFramesWithFileContent()", cache); } -void PlistSpriteSheetLoader::reload(const std::string& filePath, SpriteFrameCache& cache) +void PlistSpriteSheetLoader::reload(std::string_view filePath, SpriteFrameCache& cache) { const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); auto dict = FileUtils::getInstance()->getValueMapFromFile(fullPath); @@ -151,7 +151,7 @@ void PlistSpriteSheetLoader::reload(const std::string& filePath, SpriteFrameCach void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, Texture2D* texture, - const std::string& plist, + std::string_view plist, SpriteFrameCache& cache) { /* @@ -178,15 +178,15 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, Vec2 textureSize; // get the format - auto metaItr = dictionary.find("metadata"); + auto metaItr = dictionary.find("metadata"sv); if (metaItr != dictionary.end()) { auto& metadataDict = metaItr->second.asValueMap(); - format = metadataDict["format"].asInt(); + format = optValue(metadataDict, "format"sv).asInt(); - if (metadataDict.find("size") != metadataDict.end()) + if (metadataDict.find("size"sv) != metadataDict.end()) { - textureSize = SizeFromString(metadataDict["size"].asString()); + textureSize = SizeFromString(optValue(metadataDict, "size"sv).asString()); } } @@ -210,14 +210,14 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, if (format == 0) { - auto x = frameDict["x"].asFloat(); - auto y = frameDict["y"].asFloat(); - auto w = frameDict["width"].asFloat(); - auto h = frameDict["height"].asFloat(); - auto ox = frameDict["offsetX"].asFloat(); - auto oy = frameDict["offsetY"].asFloat(); - auto ow = frameDict["originalWidth"].asInt(); - auto oh = frameDict["originalHeight"].asInt(); + auto x = optValue(frameDict, "x"sv).asFloat(); + auto y = optValue(frameDict, "y"sv).asFloat(); + auto w = optValue(frameDict, "width"sv).asFloat(); + auto h = optValue(frameDict, "height"sv).asFloat(); + auto ox = optValue(frameDict, "offsetX"sv).asFloat(); + auto oy = optValue(frameDict, "offsetY"sv).asFloat(); + auto ow = optValue(frameDict, "originalWidth"sv).asInt(); + auto oh = optValue(frameDict, "originalHeight"sv).asInt(); // check ow/oh if (!ow || !oh) { @@ -234,17 +234,17 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, } else if (format == 1 || format == 2) { - auto frame = RectFromString(frameDict["frame"].asString()); + auto frame = RectFromString(optValue(frameDict, "frame"sv).asString()); auto rotated = false; // rotation if (format == 2) { - rotated = frameDict["rotated"].asBool(); + rotated = optValue(frameDict, "rotated"sv).asBool(); } - auto offset = PointFromString(frameDict["offset"].asString()); - auto sourceSize = SizeFromString(frameDict["sourceSize"].asString()); + auto offset = PointFromString(optValue(frameDict, "offset"sv).asString()); + auto sourceSize = SizeFromString(optValue(frameDict, "sourceSize"sv).asString()); // create frame spriteFrame = SpriteFrame::createWithTexture(texture, frame, rotated, offset, sourceSize); @@ -252,14 +252,14 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, else if (format == 3) { // get values - auto spriteSize = SizeFromString(frameDict["spriteSize"].asString()); - auto spriteOffset = PointFromString(frameDict["spriteOffset"].asString()); - auto spriteSourceSize = SizeFromString(frameDict["spriteSourceSize"].asString()); - auto textureRect = RectFromString(frameDict["textureRect"].asString()); - auto textureRotated = frameDict["textureRotated"].asBool(); + auto spriteSize = SizeFromString(optValue(frameDict, "spriteSize"sv).asString()); + auto spriteOffset = PointFromString(optValue(frameDict, "spriteOffset"sv).asString()); + auto spriteSourceSize = SizeFromString(optValue(frameDict, "spriteSourceSize"sv).asString()); + auto textureRect = RectFromString(optValue(frameDict, "textureRect"sv).asString()); + auto textureRotated = optValue(frameDict, "textureRotated"sv).asBool(); // get aliases - auto& aliases = frameDict["aliases"].asValueVector(); + auto& aliases = optValue(frameDict, "aliases"sv).asValueVector(); for (const auto& value : aliases) { @@ -282,9 +282,9 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, if (frameDict.find("vertices") != frameDict.end()) { using cocos2d::utils::parseIntegerList; - auto vertices = parseIntegerList(frameDict["vertices"].asString()); - auto verticesUV = parseIntegerList(frameDict["verticesUV"].asString()); - auto indices = parseIntegerList(frameDict["triangles"].asString()); + auto vertices = parseIntegerList(optValue(frameDict, "vertices"sv).asString()); + auto verticesUV = parseIntegerList(optValue(frameDict, "verticesUV"sv).asString()); + auto indices = parseIntegerList(optValue(frameDict, "triangles"sv).asString()); PolygonInfo info; initializePolygonInfo(textureSize, spriteSourceSize, vertices, verticesUV, indices, info); @@ -292,7 +292,7 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, } if (frameDict.find("anchor") != frameDict.end()) { - spriteFrame->setAnchorPoint(PointFromString(frameDict["anchor"].asString())); + spriteFrame->setAnchorPoint(PointFromString(optValue(frameDict, "anchor"sv).asString())); } } @@ -323,8 +323,8 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dictionary, } void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dict, - const std::string& texturePath, - const std::string& plist, + std::string_view texturePath, + std::string_view plist, SpriteFrameCache& cache) { std::string pixelFormatName; @@ -378,7 +378,7 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dict, void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, Texture2D* texture, - const std::string& plist, + std::string_view plist, SpriteFrameCache& cache) { auto& framesDict = dict["frames"].asValueMap(); @@ -401,8 +401,8 @@ void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, for (auto& iter : framesDict) { - ValueMap& frameDict = iter.second.asValueMap(); - std::string spriteFrameName = iter.first; + const ValueMap& frameDict = iter.second.asValueMap(); + std::string_view spriteFrameName = iter.first; cache.eraseFrame(spriteFrameName); @@ -411,14 +411,14 @@ void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, if (format == 0) { - const auto x = frameDict["x"].asFloat(); - const auto y = frameDict["y"].asFloat(); - const auto w = frameDict["width"].asFloat(); - const auto h = frameDict["height"].asFloat(); - const auto ox = frameDict["offsetX"].asFloat(); - const auto oy = frameDict["offsetY"].asFloat(); - auto ow = frameDict["originalWidth"].asInt(); - auto oh = frameDict["originalHeight"].asInt(); + const auto x = optValue(frameDict, "x"sv).asFloat(); + const auto y = optValue(frameDict, "y"sv).asFloat(); + const auto w = optValue(frameDict, "width"sv).asFloat(); + const auto h = optValue(frameDict, "height"sv).asFloat(); + const auto ox = optValue(frameDict, "offsetX"sv).asFloat(); + const auto oy = optValue(frameDict, "offsetY"sv).asFloat(); + auto ow = optValue(frameDict, "originalWidth"sv).asInt(); + auto oh = optValue(frameDict, "originalHeight"sv).asInt(); // check ow/oh if (!ow || !oh) { @@ -435,17 +435,17 @@ void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, } else if (format == 1 || format == 2) { - auto frame = RectFromString(frameDict["frame"].asString()); + auto frame = RectFromString(optValue(frameDict, "frame"sv).asString()); auto rotated = false; // rotation if (format == 2) { - rotated = frameDict["rotated"].asBool(); + rotated = optValue(frameDict, "rotated"sv).asBool(); } - auto offset = PointFromString(frameDict["offset"].asString()); - auto sourceSize = SizeFromString(frameDict["sourceSize"].asString()); + auto offset = PointFromString(optValue(frameDict, "offset"sv).asString()); + auto sourceSize = SizeFromString(optValue(frameDict, "sourceSize"sv).asString()); // create frame spriteFrame = SpriteFrame::createWithTexture(texture, frame, rotated, offset, sourceSize); @@ -453,14 +453,14 @@ void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, else if (format == 3) { // get values - const auto spriteSize = SizeFromString(frameDict["spriteSize"].asString()); - auto spriteOffset = PointFromString(frameDict["spriteOffset"].asString()); - auto spriteSourceSize = SizeFromString(frameDict["spriteSourceSize"].asString()); - const auto textureRect = RectFromString(frameDict["textureRect"].asString()); - const auto textureRotated = frameDict["textureRotated"].asBool(); + const auto spriteSize = SizeFromString(optValue(frameDict, "spriteSize"sv).asString()); + auto spriteOffset = PointFromString(optValue(frameDict, "spriteOffset"sv).asString()); + auto spriteSourceSize = SizeFromString(optValue(frameDict, "spriteSourceSize"sv).asString()); + const auto textureRect = RectFromString(optValue(frameDict, "textureRect"sv).asString()); + const auto textureRotated = optValue(frameDict, "textureRotated"sv).asBool(); // get aliases - ValueVector& aliases = frameDict["aliases"].asValueVector(); + const ValueVector& aliases = optValue(frameDict, "aliases"sv).asValueVector(); for (const auto& value : aliases) { diff --git a/cocos/2d/CCPlistSpriteSheetLoader.h b/cocos/2d/CCPlistSpriteSheetLoader.h index 79aa405400a4..6f36caad0b32 100644 --- a/cocos/2d/CCPlistSpriteSheetLoader.h +++ b/cocos/2d/CCPlistSpriteSheetLoader.h @@ -14,30 +14,30 @@ class PlistSpriteSheetLoader : public SpriteSheetLoader static constexpr uint32_t FORMAT = SpriteSheetFormat::PLIST; uint32_t getFormat() override { return FORMAT; } - void load(const std::string& filePath, SpriteFrameCache& cache) override; - void load(const std::string& filePath, Texture2D* texture, SpriteFrameCache& cache) override; - void load(const std::string& filePath, const std::string& textureFileName, SpriteFrameCache& cache) override; + void load(std::string_view filePath, SpriteFrameCache& cache) override; + void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) override; + void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) override; void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) override; - void reload(const std::string& filePath, SpriteFrameCache& cache) override; + void reload(std::string_view filePath, SpriteFrameCache& cache) override; protected: /*Adds multiple Sprite Frames with a dictionary. The texture will be associated with the created sprite frames. */ void addSpriteFramesWithDictionary(ValueMap& dictionary, Texture2D* texture, - const std::string& plist, + std::string_view plist, SpriteFrameCache& cache); /*Adds multiple Sprite Frames with a dictionary. The texture will be associated with the created sprite frames. */ void addSpriteFramesWithDictionary(ValueMap& dict, - const std::string& texturePath, - const std::string& plist, + std::string_view texturePath, + std::string_view plist, SpriteFrameCache& cache); void reloadSpriteFramesWithDictionary(ValueMap& dict, Texture2D* texture, - const std::string& plist, + std::string_view plist, SpriteFrameCache& cache); }; diff --git a/cocos/2d/CCRenderTexture.cpp b/cocos/2d/CCRenderTexture.cpp index 067237e12e46..7525359dbf84 100644 --- a/cocos/2d/CCRenderTexture.cpp +++ b/cocos/2d/CCRenderTexture.cpp @@ -357,9 +357,7 @@ void RenderTexture::visit(Renderer* renderer, const Mat4& parentTransform, uint3 // setOrderOfArrival(0); } -bool RenderTexture::saveToFileAsNonPMA(const std::string& filename, - bool isRGBA, - std::function callback) +bool RenderTexture::saveToFileAsNonPMA(std::string_view filename, bool isRGBA, SaveFileCallbackType callback) { std::string basename(filename); std::transform(basename.begin(), basename.end(), basename.begin(), ::tolower); @@ -382,9 +380,7 @@ bool RenderTexture::saveToFileAsNonPMA(const std::string& filename, return saveToFileAsNonPMA(filename, Image::Format::JPG, false, callback); } -bool RenderTexture::saveToFile(const std::string& filename, - bool isRGBA, - std::function callback) +bool RenderTexture::saveToFile(std::string_view filename, bool isRGBA, SaveFileCallbackType callback) { std::string basename(filename); std::transform(basename.begin(), basename.end(), basename.begin(), ::tolower); @@ -407,10 +403,10 @@ bool RenderTexture::saveToFile(const std::string& filename, return saveToFile(filename, Image::Format::JPG, false, callback); } -bool RenderTexture::saveToFileAsNonPMA(const std::string& fileName, +bool RenderTexture::saveToFileAsNonPMA(std::string_view fileName, Image::Format format, bool isRGBA, - std::function callback) + SaveFileCallbackType callback) { CCASSERT(format == Image::Format::JPG || format == Image::Format::PNG, "the image can only be saved as JPG or PNG format"); @@ -419,7 +415,7 @@ bool RenderTexture::saveToFileAsNonPMA(const std::string& fileName, _saveFileCallback = callback; - std::string fullpath = FileUtils::getInstance()->getWritablePath() + fileName; + std::string fullpath = FileUtils::getInstance()->getWritablePath().append(fileName); _saveToFileCommand.init(_globalZOrder); _saveToFileCommand.func = CC_CALLBACK_0(RenderTexture::onSaveToFile, this, fullpath, isRGBA, true); @@ -427,10 +423,10 @@ bool RenderTexture::saveToFileAsNonPMA(const std::string& fileName, return true; } -bool RenderTexture::saveToFile(const std::string& fileName, +bool RenderTexture::saveToFile(std::string_view fileName, Image::Format format, bool isRGBA, - std::function callback) + std::function callback) { CCASSERT(format == Image::Format::JPG || format == Image::Format::PNG, "the image can only be saved as JPG or PNG format"); @@ -439,7 +435,7 @@ bool RenderTexture::saveToFile(const std::string& fileName, _saveFileCallback = callback; - std::string fullpath = FileUtils::getInstance()->getWritablePath() + fileName; + std::string fullpath = FileUtils::getInstance()->getWritablePath().append(fileName); _saveToFileCommand.init(_globalZOrder); _saveToFileCommand.func = CC_CALLBACK_0(RenderTexture::onSaveToFile, this, fullpath, isRGBA, false); @@ -447,7 +443,7 @@ bool RenderTexture::saveToFile(const std::string& fileName, return true; } -void RenderTexture::onSaveToFile(const std::string& filename, bool isRGBA, bool forceNonPMA) +void RenderTexture::onSaveToFile(std::string_view filename, bool isRGBA, bool forceNonPMA) { auto callbackFunc = [&, filename, isRGBA, forceNonPMA](RefPtr image) { if (image) diff --git a/cocos/2d/CCRenderTexture.h b/cocos/2d/CCRenderTexture.h index 0fdfb5f5434a..b43e9c380bc9 100644 --- a/cocos/2d/CCRenderTexture.h +++ b/cocos/2d/CCRenderTexture.h @@ -61,6 +61,7 @@ class EventCustom; class CC_DLL RenderTexture : public Node { public: + using SaveFileCallbackType = std::function; /** Initializes a RenderTexture object with width and height in Points and a pixel format( only RGB and RGBA formats * are valid ) and depthStencil format. * @@ -171,9 +172,7 @@ class CC_DLL RenderTexture : public Node * @param callback When the file is save finished,it will callback this function. * @return Returns true if the operation is successful. */ - bool saveToFileAsNonPMA(const std::string& filename, - bool isRGBA = true, - std::function callback = nullptr); + bool saveToFileAsNonPMA(std::string_view filename, bool isRGBA = true, SaveFileCallbackType = nullptr); /** Saves the texture into a file using JPEG format. The file will be saved in the Documents folder. * Returns true if the operation is successful. @@ -183,9 +182,7 @@ class CC_DLL RenderTexture : public Node * @param callback When the file is save finished,it will callback this function. * @return Returns true if the operation is successful. */ - bool saveToFile(const std::string& filename, - bool isRGBA = true, - std::function callback = nullptr); + bool saveToFile(std::string_view filename, bool isRGBA = true, SaveFileCallbackType = nullptr); /** saves the texture into a file in non-PMA. The format could be JPG or PNG. The file will be saved in the Documents folder. Returns true if the operation is successful. @@ -201,10 +198,10 @@ class CC_DLL RenderTexture : public Node * @param callback When the file is save finished,it will callback this function. * @return Returns true if the operation is successful. */ - bool saveToFileAsNonPMA(const std::string& fileName, + bool saveToFileAsNonPMA(std::string_view fileName, Image::Format format, bool isRGBA, - std::function callback); + SaveFileCallbackType callback); /** saves the texture into a file. The format could be JPG or PNG. The file will be saved in the Documents folder. Returns true if the operation is successful. @@ -220,10 +217,10 @@ class CC_DLL RenderTexture : public Node * @param callback When the file is save finished,it will callback this function. * @return Returns true if the operation is successful. */ - bool saveToFile(const std::string& filename, + bool saveToFile(std::string_view filename, Image::Format format, - bool isRGBA = true, - std::function callback = nullptr); + bool isRGBA = true, + SaveFileCallbackType callback = nullptr); /** Listen "come to background" message, and save render texture. * It only has effect on Android. @@ -367,7 +364,7 @@ class CC_DLL RenderTexture : public Node void onEnd(); void clearColorAttachment(); - void onSaveToFile(const std::string& fileName, bool isRGBA = true, bool forceNonPMA = false); + void onSaveToFile(std::string_view fileName, bool isRGBA = true, bool forceNonPMA = false); bool _keepMatrix = false; Rect _rtTextureRect; @@ -411,7 +408,7 @@ class CC_DLL RenderTexture : public Node and the command and callback will be executed twice. */ CallbackCommand _saveToFileCommand; - std::function _saveFileCallback = nullptr; + std::function _saveFileCallback = nullptr; Mat4 _oldTransMatrix, _oldProjMatrix; Mat4 _transformMatrix, _projectionMatrix; diff --git a/cocos/2d/CCSprite.cpp b/cocos/2d/CCSprite.cpp index f5e87fcd73b9..2a97c4f2474e 100644 --- a/cocos/2d/CCSprite.cpp +++ b/cocos/2d/CCSprite.cpp @@ -72,7 +72,7 @@ Sprite* Sprite::createWithTexture(Texture2D* texture, const Rect& rect, bool rot return nullptr; } -Sprite* Sprite::create(const std::string& filename) +Sprite* Sprite::create(std::string_view filename) { Sprite* sprite = new Sprite(); if (sprite->initWithFile(filename)) @@ -96,7 +96,7 @@ Sprite* Sprite::create(const PolygonInfo& info) return nullptr; } -Sprite* Sprite::create(const std::string& filename, const Rect& rect) +Sprite* Sprite::create(std::string_view filename, const Rect& rect) { Sprite* sprite = new Sprite(); if (sprite->initWithFile(filename, rect)) @@ -120,13 +120,13 @@ Sprite* Sprite::createWithSpriteFrame(SpriteFrame* spriteFrame) return nullptr; } -Sprite* Sprite::createWithSpriteFrameName(const std::string& spriteFrameName) +Sprite* Sprite::createWithSpriteFrameName(std::string_view spriteFrameName) { SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFrameName); #if COCOS2D_DEBUG > 0 char msg[256] = {0}; - sprintf(msg, "Invalid spriteFrameName: %s", spriteFrameName.c_str()); + sprintf(msg, "Invalid spriteFrameName: %s", spriteFrameName.data()); CCASSERT(frame != nullptr, msg); #endif @@ -167,7 +167,7 @@ bool Sprite::initWithTexture(Texture2D* texture, const Rect& rect) return initWithTexture(texture, rect, false); } -bool Sprite::initWithFile(const std::string& filename) +bool Sprite::initWithFile(std::string_view filename) { if (filename.empty()) { @@ -191,7 +191,7 @@ bool Sprite::initWithFile(const std::string& filename) return false; } -bool Sprite::initWithFile(const std::string& filename, const Rect& rect) +bool Sprite::initWithFile(std::string_view filename, const Rect& rect) { CCASSERT(!filename.empty(), "Invalid filename"); if (filename.empty()) @@ -209,7 +209,7 @@ bool Sprite::initWithFile(const std::string& filename, const Rect& rect) return false; } -bool Sprite::initWithSpriteFrameName(const std::string& spriteFrameName) +bool Sprite::initWithSpriteFrameName(std::string_view spriteFrameName) { CCASSERT(!spriteFrameName.empty(), "Invalid spriteFrameName"); if (spriteFrameName.empty()) @@ -332,7 +332,7 @@ static unsigned char cc_2x2_white_image[] = { #define CC_2x2_WHITE_IMAGE_KEY "/cc_2x2_white_image" // MARK: texture -void Sprite::setTexture(const std::string& filename) +void Sprite::setTexture(std::string_view filename) { Texture2D* texture = _director->getTextureCache()->addImage(filename); setTexture(texture); @@ -1132,7 +1132,7 @@ void Sprite::addChild(Node* child, int zOrder, int tag) Node::addChild(child, zOrder, tag); } -void Sprite::addChild(Node* child, int zOrder, const std::string& name) +void Sprite::addChild(Node* child, int zOrder, std::string_view name) { CCASSERT(child != nullptr, "Argument must be non-nullptr"); if (child == nullptr) @@ -1539,7 +1539,7 @@ bool Sprite::isOpacityModifyRGB() const // MARK: Frames -void Sprite::setSpriteFrame(const std::string& spriteFrameName) +void Sprite::setSpriteFrame(std::string_view spriteFrameName) { CCASSERT(!spriteFrameName.empty(), "spriteFrameName must not be empty"); if (spriteFrameName.empty()) @@ -1590,7 +1590,7 @@ void Sprite::setSpriteFrame(SpriteFrame* spriteFrame) setCenterRect(spriteFrame->getCenterRect()); } -void Sprite::setDisplayFrameWithAnimationName(const std::string& animationName, unsigned int frameIndex) +void Sprite::setDisplayFrameWithAnimationName(std::string_view animationName, unsigned int frameIndex) { CCASSERT(!animationName.empty(), "CCSprite#setDisplayFrameWithAnimationName. animationName must not be nullptr"); if (animationName.empty()) diff --git a/cocos/2d/CCSprite.h b/cocos/2d/CCSprite.h index e81f18064e31..d993a6fef2ed 100644 --- a/cocos/2d/CCSprite.h +++ b/cocos/2d/CCSprite.h @@ -129,7 +129,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @param filename A path to image file, e.g., "scene1/monster.png". * @return An autoreleased sprite object. */ - static Sprite* create(const std::string& filename); + static Sprite* create(std::string_view filename); /** * Creates a polygon sprite with a polygon info. @@ -149,7 +149,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @param rect A subrect of the image file. * @return An autoreleased sprite object. */ - static Sprite* create(const std::string& filename, const Rect& rect); + static Sprite* create(std::string_view filename, const Rect& rect); /** * Creates a sprite with a Texture2D object. @@ -191,7 +191,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @param spriteFrameName The name of sprite frame. * @return An autoreleased sprite object. */ - static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName); + static Sprite* createWithSpriteFrameName(std::string_view spriteFrameName); // end of creators group /// @} @@ -233,7 +233,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @memberof Sprite * It will call `setTextureRect()` with the texture's content size. */ - virtual void setTexture(const std::string& filename); + virtual void setTexture(std::string_view filename); /** @overload * @@ -304,7 +304,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol /** @{ * Sets a new SpriteFrame to the Sprite. */ - virtual void setSpriteFrame(const std::string& spriteFrameName); + virtual void setSpriteFrame(std::string_view spriteFrameName); virtual void setSpriteFrame(SpriteFrame* newFrame); /** @} */ @@ -326,7 +326,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * Changes the display frame with animation name and index. * The animation name will be get from the AnimationCache. */ - virtual void setDisplayFrameWithAnimationName(const std::string& animationName, unsigned int frameIndex); + virtual void setDisplayFrameWithAnimationName(std::string_view animationName, unsigned int frameIndex); /// @} /// @{ @@ -370,7 +370,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol virtual void reorderChild(Node* child, int zOrder) override; using Node::addChild; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void sortAllChildren() override; virtual void setScale(float scale) override; virtual void setPositionZ(float positionZ) override; @@ -513,7 +513,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol /// @} int getResourceType() const { return _fileType; } - const std::string& getResourceName() const { return _fileName; } + std::string_view getResourceName() const { return _fileName; } CC_CONSTRUCTOR_ACCESS : /** @@ -588,7 +588,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @param spriteFrameName A key string that can fetched a valid SpriteFrame from SpriteFrameCache. * @return True if the sprite is initialized properly, false otherwise. */ - virtual bool initWithSpriteFrameName(const std::string& spriteFrameName); + virtual bool initWithSpriteFrameName(std::string_view spriteFrameName); /** * Initializes a sprite with an image filename. @@ -601,7 +601,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @return True if the sprite is initialized properly, false otherwise. * @lua init */ - virtual bool initWithFile(const std::string& filename); + virtual bool initWithFile(std::string_view filename); /** * Initializes a sprite with an image filename, and a rect. @@ -615,7 +615,7 @@ class CC_DLL Sprite : public Node, public TextureProtocol * @return True if the sprite is initialized properly, false otherwise. * @lua init */ - virtual bool initWithFile(const std::string& filename, const Rect& rect); + virtual bool initWithFile(std::string_view filename, const Rect& rect); virtual void setVertexLayout(); diff --git a/cocos/2d/CCSpriteBatchNode.cpp b/cocos/2d/CCSpriteBatchNode.cpp index c2c809c51826..4888ac8b5f50 100644 --- a/cocos/2d/CCSpriteBatchNode.cpp +++ b/cocos/2d/CCSpriteBatchNode.cpp @@ -64,7 +64,7 @@ SpriteBatchNode* SpriteBatchNode::createWithTexture(Texture2D* tex, ssize_t capa * creation with File Image */ -SpriteBatchNode* SpriteBatchNode::create(const std::string& fileImage, ssize_t capacity /* = DEFAULT_CAPACITY*/) +SpriteBatchNode* SpriteBatchNode::create(std::string_view fileImage, ssize_t capacity /* = DEFAULT_CAPACITY*/) { SpriteBatchNode* batchNode = new SpriteBatchNode(); if (batchNode->initWithFile(fileImage, capacity)) @@ -168,7 +168,7 @@ bool SpriteBatchNode::init() /* * init with FileImage */ -bool SpriteBatchNode::initWithFile(const std::string& fileImage, ssize_t capacity /* = DEFAULT_CAPACITY*/) +bool SpriteBatchNode::initWithFile(std::string_view fileImage, ssize_t capacity /* = DEFAULT_CAPACITY*/) { Texture2D* texture2D = _director->getTextureCache()->addImage(fileImage); return initWithTexture(texture2D, capacity); @@ -236,7 +236,7 @@ void SpriteBatchNode::addChild(Node* child, int zOrder, int tag) appendChild(sprite); } -void SpriteBatchNode::addChild(Node* child, int zOrder, const std::string& name) +void SpriteBatchNode::addChild(Node* child, int zOrder, std::string_view name) { CCASSERT(child != nullptr, "child should not be null"); CCASSERT(dynamic_cast(child) != nullptr, "CCSpriteBatchNode only supports Sprites as children"); diff --git a/cocos/2d/CCSpriteBatchNode.h b/cocos/2d/CCSpriteBatchNode.h index 3d99cdfa52b5..cb68aed0f4c0 100644 --- a/cocos/2d/CCSpriteBatchNode.h +++ b/cocos/2d/CCSpriteBatchNode.h @@ -84,7 +84,7 @@ class CC_DLL SpriteBatchNode : public Node, public TextureProtocol * @param capacity The capacity of children. * @return Return an autorelease object. */ - static SpriteBatchNode* create(const std::string& fileImage, ssize_t capacity = DEFAULT_CAPACITY); + static SpriteBatchNode* create(std::string_view fileImage, ssize_t capacity = DEFAULT_CAPACITY); /** Returns the TextureAtlas object. * @@ -195,7 +195,7 @@ class CC_DLL SpriteBatchNode : public Node, public TextureProtocol using Node::addChild; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void reorderChild(Node* child, int zOrder) override; virtual void removeChild(Node* child, bool cleanup) override; @@ -250,7 +250,7 @@ class CC_DLL SpriteBatchNode : public Node, public TextureProtocol * @js init * @lua init */ - bool initWithFile(const std::string& fileImage, ssize_t capacity = DEFAULT_CAPACITY); + bool initWithFile(std::string_view fileImage, ssize_t capacity = DEFAULT_CAPACITY); bool init() override; protected: diff --git a/cocos/2d/CCSpriteFrame.cpp b/cocos/2d/CCSpriteFrame.cpp index 7fa67690200a..6ef46c7e67d1 100644 --- a/cocos/2d/CCSpriteFrame.cpp +++ b/cocos/2d/CCSpriteFrame.cpp @@ -35,7 +35,7 @@ NS_CC_BEGIN // implementation of SpriteFrame -SpriteFrame* SpriteFrame::create(const std::string& filename, const Rect& rect) +SpriteFrame* SpriteFrame::create(std::string_view filename, const Rect& rect) { SpriteFrame* spriteFrame = new SpriteFrame(); spriteFrame->initWithTextureFilename(filename, rect); @@ -70,7 +70,7 @@ SpriteFrame* SpriteFrame::createWithTexture(Texture2D* texture, return nullptr; } -SpriteFrame* SpriteFrame::create(const std::string& filename, +SpriteFrame* SpriteFrame::create(std::string_view filename, const Rect& rect, bool rotated, const Vec2& offset, @@ -94,7 +94,7 @@ bool SpriteFrame::initWithTexture(Texture2D* texture, const Rect& rect) return initWithTexture(texture, rectInPixels, false, Vec2::ZERO, rectInPixels.size); } -bool SpriteFrame::initWithTextureFilename(const std::string& filename, const Rect& rect) +bool SpriteFrame::initWithTextureFilename(std::string_view filename, const Rect& rect) { Rect rectInPixels = CC_RECT_POINTS_TO_PIXELS(rect); return initWithTextureFilename(filename, rectInPixels, false, Vec2::ZERO, rectInPixels.size); @@ -126,7 +126,7 @@ bool SpriteFrame::initWithTexture(Texture2D* texture, return true; } -bool SpriteFrame::initWithTextureFilename(const std::string& filename, +bool SpriteFrame::initWithTextureFilename(std::string_view filename, const Rect& rect, bool rotated, const Vec2& offset, diff --git a/cocos/2d/CCSpriteFrame.h b/cocos/2d/CCSpriteFrame.h index 32e93be8eef0..5f17fc12807a 100644 --- a/cocos/2d/CCSpriteFrame.h +++ b/cocos/2d/CCSpriteFrame.h @@ -66,7 +66,7 @@ class CC_DLL SpriteFrame : public Ref, public Clonable * @param rect A specified rect. * @return An autoreleased SpriteFrame object. */ - static SpriteFrame* create(const std::string& filename, const Rect& rect); + static SpriteFrame* create(std::string_view filename, const Rect& rect); /** Create a SpriteFrame with a texture filename, rect, rotated, offset and originalSize in pixels. The originalSize is the size in pixels of the frame before being trimmed. @@ -78,7 +78,7 @@ class CC_DLL SpriteFrame : public Ref, public Clonable * @param originalSize A specified original size. * @return An autoreleased SpriteFrame object. */ - static SpriteFrame* create(const std::string& filename, + static SpriteFrame* create(std::string_view filename, const Rect& rect, bool rotated, const Vec2& offset, @@ -279,7 +279,7 @@ class CC_DLL SpriteFrame : public Ref, public Clonable /** Initializes a SpriteFrame with a texture filename, rect in points; It is assumed that the frame was not trimmed. */ - bool initWithTextureFilename(const std::string& filename, const Rect& rect); + bool initWithTextureFilename(std::string_view filename, const Rect& rect); /** Initializes a SpriteFrame with a texture, rect, rotated, offset and originalSize in pixels. The originalSize is the size in points of the frame before being trimmed. @@ -295,7 +295,7 @@ class CC_DLL SpriteFrame : public Ref, public Clonable @since v1.1 */ - bool initWithTextureFilename(const std::string& filename, + bool initWithTextureFilename(std::string_view filename, const Rect& rect, bool rotated, const Vec2& offset, diff --git a/cocos/2d/CCSpriteFrameCache.cpp b/cocos/2d/CCSpriteFrameCache.cpp index db7b97745828..537a33e9a444 100644 --- a/cocos/2d/CCSpriteFrameCache.cpp +++ b/cocos/2d/CCSpriteFrameCache.cpp @@ -75,8 +75,8 @@ bool SpriteFrameCache::init() SpriteFrameCache::~SpriteFrameCache() {} -void SpriteFrameCache::addSpriteFramesWithFile(const std::string& spriteSheetFileName, - const std::string& textureFileName, +void SpriteFrameCache::addSpriteFramesWithFile(std::string_view spriteSheetFileName, + std::string_view textureFileName, uint32_t spriteSheetFormat) { auto* loader = getSpriteSheetLoader(spriteSheetFormat); @@ -86,7 +86,7 @@ void SpriteFrameCache::addSpriteFramesWithFile(const std::string& spriteSheetFil } } -void SpriteFrameCache::addSpriteFramesWithFile(const std::string& spriteSheetFileName, +void SpriteFrameCache::addSpriteFramesWithFile(std::string_view spriteSheetFileName, Texture2D* texture, uint32_t spriteSheetFormat) { @@ -97,7 +97,7 @@ void SpriteFrameCache::addSpriteFramesWithFile(const std::string& spriteSheetFil } } -void SpriteFrameCache::addSpriteFramesWithFile(const std::string& spriteSheetFileName, uint32_t spriteSheetFormat) +void SpriteFrameCache::addSpriteFramesWithFile(std::string_view spriteSheetFileName, uint32_t spriteSheetFormat) { auto* loader = getSpriteSheetLoader(spriteSheetFormat); if (loader) @@ -117,12 +117,12 @@ void SpriteFrameCache::addSpriteFramesWithFileContent(const Data& content, } } -bool SpriteFrameCache::isSpriteFramesWithFileLoaded(const std::string& plist) const +bool SpriteFrameCache::isSpriteFramesWithFileLoaded(std::string_view plist) const { return isSpriteSheetInUse(plist) && isPlistFull(plist); } -void SpriteFrameCache::addSpriteFrame(SpriteFrame* frame, const std::string& frameName) +void SpriteFrameCache::addSpriteFrame(SpriteFrame* frame, std::string_view frameName) { CCASSERT(frame, "frame should not be nil"); @@ -169,7 +169,7 @@ void SpriteFrameCache::removeUnusedSpriteFrames() } } -void SpriteFrameCache::removeSpriteFrameByName(const std::string& name) +void SpriteFrameCache::removeSpriteFrameByName(std::string_view name) { // explicit nil handling if (name.empty()) @@ -178,7 +178,7 @@ void SpriteFrameCache::removeSpriteFrameByName(const std::string& name) eraseFrame(name); } -void SpriteFrameCache::removeSpriteFramesFromFile(const std::string& atlasPath) +void SpriteFrameCache::removeSpriteFramesFromFile(std::string_view atlasPath) { // const auto fullPath = FileUtils::getInstance()->fullPathForFilename(plist); // auto dict = FileUtils::getInstance()->getValueMapFromFile(fullPath); @@ -193,7 +193,7 @@ void SpriteFrameCache::removeSpriteFramesFromFile(const std::string& atlasPath) removeSpriteSheet(atlasPath); } -void SpriteFrameCache::removeSpriteFramesFromFileContent(const std::string& plist_content) +void SpriteFrameCache::removeSpriteFramesFromFileContent(std::string_view plist_content) { auto dict = FileUtils::getInstance()->getValueMapFromData(plist_content.data(), static_cast(plist_content.size())); @@ -241,17 +241,17 @@ void SpriteFrameCache::removeSpriteFramesFromTexture(Texture2D* texture) eraseFrames(keysToRemove); } -SpriteFrame* SpriteFrameCache::getSpriteFrameByName(const std::string& name) +SpriteFrame* SpriteFrameCache::getSpriteFrameByName(std::string_view name) { auto* frame = findFrame(name); if (!frame) { - CCLOG("cocos2d: SpriteFrameCache: Frame '%s' isn't found", name.c_str()); + CCLOG("cocos2d: SpriteFrameCache: Frame '%s' isn't found", name.data()); } return frame; } -bool SpriteFrameCache::reloadTexture(const std::string& spriteSheetFileName) +bool SpriteFrameCache::reloadTexture(std::string_view spriteSheetFileName) { CCASSERT(!spriteSheetFileName.empty(), "plist filename should not be nullptr"); @@ -283,16 +283,17 @@ bool SpriteFrameCache::reloadTexture(const std::string& spriteSheetFileName) } void SpriteFrameCache::insertFrame(const std::shared_ptr& spriteSheet, - const std::string& frameName, + std::string_view frameName, SpriteFrame* spriteFrame) { - spriteSheet->frames.insert(frameName); + spriteSheet->frames.emplace(frameName); _spriteFrames.insert(frameName, spriteFrame); // add SpriteFrame _spriteSheets[spriteSheet->path] = spriteSheet; - _spriteFrameToSpriteSheetMap[frameName] = spriteSheet; // insert index frameName->plist + hlookup::set_item(_spriteFrameToSpriteSheetMap, frameName, spriteSheet); // _spriteFrameToSpriteSheetMap[frameName] = spriteSheet; // insert + // index frameName->plist } -bool SpriteFrameCache::eraseFrame(const std::string& frameName) +bool SpriteFrameCache::eraseFrame(std::string_view frameName) { _spriteFrames.erase(frameName); // drop SpriteFrame const auto itFrame = _spriteFrameToSpriteSheetMap.find(frameName); @@ -330,7 +331,7 @@ bool SpriteFrameCache::eraseFrames(const std::vector& frames) return ret; } -bool SpriteFrameCache::removeSpriteSheet(const std::string& spriteSheetFileName) +bool SpriteFrameCache::removeSpriteSheet(std::string_view spriteSheetFileName) { auto it = _spriteSheets.find(spriteSheetFileName); if (it == _spriteSheets.end()) @@ -356,18 +357,18 @@ void SpriteFrameCache::clear() _spriteFrames.clear(); } -bool SpriteFrameCache::hasFrame(const std::string& frame) const +bool SpriteFrameCache::hasFrame(std::string_view frame) const { return _spriteFrameToSpriteSheetMap.find(frame) != _spriteFrameToSpriteSheetMap.end(); } -bool SpriteFrameCache::isSpriteSheetInUse(const std::string& spriteSheetFileName) const +bool SpriteFrameCache::isSpriteSheetInUse(std::string_view spriteSheetFileName) const { const auto spriteSheetItr = _spriteSheets.find(spriteSheetFileName); return spriteSheetItr != _spriteSheets.end() && !spriteSheetItr->second->frames.empty(); } -SpriteFrame* SpriteFrameCache::findFrame(const std::string& frame) +SpriteFrame* SpriteFrameCache::findFrame(std::string_view frame) { return _spriteFrames.at(frame); } @@ -377,7 +378,7 @@ void SpriteFrameCache::addSpriteFrameCapInset(SpriteFrame* spriteFrame, const Re texture->addSpriteFrameCapInset(spriteFrame, capInsets); } -Map& SpriteFrameCache::getSpriteFrames() +StringMap& SpriteFrameCache::getSpriteFrames() { return _spriteFrames; } diff --git a/cocos/2d/CCSpriteFrameCache.h b/cocos/2d/CCSpriteFrameCache.h index 3009a6bd85e5..78db1c5bffd4 100644 --- a/cocos/2d/CCSpriteFrameCache.h +++ b/cocos/2d/CCSpriteFrameCache.h @@ -117,7 +117,7 @@ class CC_DLL SpriteFrameCache : public Ref /** Adds multiple Sprite Frames from a plist file. * A texture will be loaded automatically. The texture name will composed by replacing the .plist suffix with .png. - * If you want to use another texture, you should use the addSpriteFramesWithFile(const std::string& plist, const + * If you want to use another texture, you should use the addSpriteFramesWithFile(std::string_view plist, const * std::string& textureFileName) method. * @js addSpriteFrames * @lua addSpriteFrames @@ -125,7 +125,7 @@ class CC_DLL SpriteFrameCache : public Ref * @param spriteSheetFileName file name. * @param spriteSheetFormat */ - void addSpriteFramesWithFile(const std::string& spriteSheetFileName, + void addSpriteFramesWithFile(std::string_view spriteSheetFileName, uint32_t spriteSheetFormat = SpriteSheetFormat::PLIST); /** Adds multiple Sprite Frames from a plist file. The texture will be associated with the created sprite frames. @@ -137,8 +137,8 @@ class CC_DLL SpriteFrameCache : public Ref * @param textureFileName Texture file name. * @param spriteSheetFormat */ - void addSpriteFramesWithFile(const std::string& spriteSheetFileName, - const std::string& textureFileName, + void addSpriteFramesWithFile(std::string_view spriteSheetFileName, + std::string_view textureFileName, uint32_t spriteSheetFormat = SpriteSheetFormat::PLIST); /** Adds multiple Sprite Frames from a plist file. The texture will be associated with the created sprite frames. @@ -149,7 +149,7 @@ class CC_DLL SpriteFrameCache : public Ref * @param texture Texture pointer. * @param spriteSheetFormat */ - void addSpriteFramesWithFile(const std::string& spriteSheetFileName, + void addSpriteFramesWithFile(std::string_view spriteSheetFileName, Texture2D* texture, uint32_t spriteSheetFormat = SpriteSheetFormat::PLIST); @@ -172,7 +172,7 @@ class CC_DLL SpriteFrameCache : public Ref * @param frame A certain sprite frame. * @param frameName The name of the sprite frame. */ - void addSpriteFrame(SpriteFrame* frame, const std::string& frameName); + void addSpriteFrame(SpriteFrame* frame, std::string_view frameName); /** Check if multiple Sprite Frames from a plist file have been loaded. * @js NA @@ -181,7 +181,7 @@ class CC_DLL SpriteFrameCache : public Ref * @param plist Plist file name. * @return True if the file is loaded. */ - bool isSpriteFramesWithFileLoaded(const std::string& plist) const; + bool isSpriteFramesWithFileLoaded(std::string_view plist) const; /** Purges the dictionary of loaded sprite frames. * Call this method if you receive the "Memory Warning". @@ -202,7 +202,7 @@ class CC_DLL SpriteFrameCache : public Ref * * @param name The name of the sprite frame that needs to removed. */ - void removeSpriteFrameByName(const std::string& name); + void removeSpriteFrameByName(std::string_view name); /** Removes multiple Sprite Frames from a plist file. * Sprite Frames stored in this file will be removed. @@ -211,7 +211,7 @@ class CC_DLL SpriteFrameCache : public Ref * * @param plist The name of the plist that needs to removed. */ - void removeSpriteFramesFromFile(const std::string& plist); + void removeSpriteFramesFromFile(std::string_view plist); /** Removes multiple Sprite Frames from a plist file content. * Sprite Frames stored in this file will be removed. @@ -220,7 +220,7 @@ class CC_DLL SpriteFrameCache : public Ref * @param plist_content The string of the plist content that needs to removed. * @js NA */ - void removeSpriteFramesFromFileContent(const std::string& plist_content); + void removeSpriteFramesFromFileContent(std::string_view plist_content); /** Removes all Sprite Frames associated with the specified textures. * It is convenient to call this method when a specific texture needs to be removed. @@ -239,22 +239,22 @@ class CC_DLL SpriteFrameCache : public Ref * @param name A certain sprite frame name. * @return The sprite frame. */ - SpriteFrame* getSpriteFrameByName(const std::string& name); + SpriteFrame* getSpriteFrameByName(std::string_view name); - bool reloadTexture(const std::string& spriteSheetFileName); + bool reloadTexture(std::string_view spriteSheetFileName); - SpriteFrame* findFrame(const std::string& frame); + SpriteFrame* findFrame(std::string_view frame); /** Record SpriteFrame with plist and frame name, add frame name * and plist to index */ void insertFrame(const std::shared_ptr& spriteSheet, - const std::string& frameName, + std::string_view frameName, SpriteFrame* frameObj); /** Delete frame from cache, rebuild index */ - bool eraseFrame(const std::string& frameName); + bool eraseFrame(std::string_view frameName); void addSpriteFrameCapInset(SpriteFrame* spriteFrame, const Rect& capInsets, Texture2D* texture); @@ -277,30 +277,35 @@ class CC_DLL SpriteFrameCache : public Ref bool eraseFrames(const std::vector& frame); /** Delete frame from index and SpriteFrame is kept. */ - bool removeSpriteSheet(const std::string& spriteSheetFileName); + bool removeSpriteSheet(std::string_view spriteSheetFileName); /** Clear index and all SpriteFrames. */ void clear(); - inline bool hasFrame(const std::string& frame) const; - inline bool isSpriteSheetInUse(const std::string& spriteSheetFileName) const; + inline bool hasFrame(std::string_view frame) const; + inline bool isSpriteSheetInUse(std::string_view spriteSheetFileName) const; - inline Map& getSpriteFrames(); + inline StringMap& getSpriteFrames(); - void markPlistFull(const std::string& spriteSheetFileName, bool full) + void markPlistFull(std::string_view spriteSheetFileName, bool full) { - _spriteSheets[spriteSheetFileName]->full = full; + // _spriteSheets[spriteSheetFileName]->full = full; + auto it = _spriteSheets.find(spriteSheetFileName); + if (it != _spriteSheets.end()) + { + it.value()->full = full; + } } - bool isPlistFull(const std::string& spriteSheetFileName) const + bool isPlistFull(std::string_view spriteSheetFileName) const { - auto&& it = _spriteSheets.find(spriteSheetFileName); + auto it = _spriteSheets.find(spriteSheetFileName); return it == _spriteSheets.end() ? false : it->second->full; } private: - Map _spriteFrames; - std::unordered_map> _spriteSheets; - std::unordered_map> _spriteFrameToSpriteSheetMap; + StringMap _spriteFrames; + hlookup::string_map> _spriteSheets; + hlookup::string_map> _spriteFrameToSpriteSheetMap; std::map> _spriteSheetLoaders; }; diff --git a/cocos/2d/CCSpriteSheetLoader.h b/cocos/2d/CCSpriteSheetLoader.h index 80d93632d576..1fee38854f67 100644 --- a/cocos/2d/CCSpriteSheetLoader.h +++ b/cocos/2d/CCSpriteSheetLoader.h @@ -65,7 +65,7 @@ class SpriteSheet public: std::string path; uint32_t format; - std::set frames; + hlookup::string_set frames; bool full = false; }; @@ -74,11 +74,11 @@ class ISpriteSheetLoader public: virtual ~ISpriteSheetLoader() = default; virtual uint32_t getFormat() = 0; - virtual void load(const std::string& filePath, SpriteFrameCache& cache) = 0; - virtual void load(const std::string& filePath, Texture2D* texture, SpriteFrameCache& cache) = 0; - virtual void load(const std::string& filePath, const std::string& textureFileName, SpriteFrameCache& cache) = 0; + virtual void load(std::string_view filePath, SpriteFrameCache& cache) = 0; + virtual void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) = 0; + virtual void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) = 0; virtual void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) = 0; - virtual void reload(const std::string& filePath, SpriteFrameCache& cache) = 0; + virtual void reload(std::string_view filePath, SpriteFrameCache& cache) = 0; }; class SpriteSheetLoader : public ISpriteSheetLoader @@ -93,11 +93,11 @@ class SpriteSheetLoader : public ISpriteSheetLoader PolygonInfo& polygonInfo); uint32_t getFormat() override = 0; - void load(const std::string& filePath, SpriteFrameCache& cache) override = 0; - void load(const std::string& filePath, Texture2D* texture, SpriteFrameCache& cache) override = 0; - void load(const std::string& filePath, const std::string& textureFileName, SpriteFrameCache& cache) override = 0; + void load(std::string_view filePath, SpriteFrameCache& cache) override = 0; + void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) override = 0; + void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) override = 0; void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) override = 0; - void reload(const std::string& filePath, SpriteFrameCache& cache) override = 0; + void reload(std::string_view filePath, SpriteFrameCache& cache) override = 0; }; // end of _2d group diff --git a/cocos/2d/CCTMXObjectGroup.cpp b/cocos/2d/CCTMXObjectGroup.cpp index 7196acad9b88..99042b01b332 100644 --- a/cocos/2d/CCTMXObjectGroup.cpp +++ b/cocos/2d/CCTMXObjectGroup.cpp @@ -40,7 +40,7 @@ TMXObjectGroup::~TMXObjectGroup() CCLOGINFO("deallocing TMXObjectGroup: %p", this); } -ValueMap TMXObjectGroup::getObject(const std::string& objectName) const +ValueMap TMXObjectGroup::getObject(std::string_view objectName) const { if (!_objects.empty()) { @@ -59,7 +59,7 @@ ValueMap TMXObjectGroup::getObject(const std::string& objectName) const return ValueMap(); } -Value TMXObjectGroup::getProperty(const std::string& propertyName) const +Value TMXObjectGroup::getProperty(std::string_view propertyName) const { if (_properties.find(propertyName) != _properties.end()) return _properties.at(propertyName); diff --git a/cocos/2d/CCTMXObjectGroup.h b/cocos/2d/CCTMXObjectGroup.h index d7df9de64bbd..5a012fc18025 100644 --- a/cocos/2d/CCTMXObjectGroup.h +++ b/cocos/2d/CCTMXObjectGroup.h @@ -60,13 +60,13 @@ class CC_DLL TMXObjectGroup : public Ref * * @return The group name. */ - const std::string& getGroupName() const { return _groupName; } + std::string_view getGroupName() const { return _groupName; } /** Set the group name. * * @param groupName A string,it is used to set the group name. */ - void setGroupName(const std::string& groupName) { _groupName = groupName; } + void setGroupName(std::string_view groupName) { _groupName = groupName; } /** Return the value for the specific property name. * @@ -74,14 +74,14 @@ class CC_DLL TMXObjectGroup : public Ref * @return Return the value for the specific property name. * @js NA */ - Value getProperty(const std::string& propertyName) const; + Value getProperty(std::string_view propertyName) const; /** Return the dictionary for the specific object name. * It will return the 1st object found on the array for the given name. * * @return Return the dictionary for the specific object name. */ - ValueMap getObject(const std::string& objectName) const; + ValueMap getObject(std::string_view objectName) const; /** Gets the offset position of child objects. * diff --git a/cocos/2d/CCTMXXMLParser.cpp b/cocos/2d/CCTMXXMLParser.cpp index 69161885483e..e8d33801d827 100644 --- a/cocos/2d/CCTMXXMLParser.cpp +++ b/cocos/2d/CCTMXXMLParser.cpp @@ -92,7 +92,7 @@ Rect TMXTilesetInfo::getRectForGID(uint32_t gid) // implementation TMXMapInfo -TMXMapInfo* TMXMapInfo::create(const std::string& tmxFile) +TMXMapInfo* TMXMapInfo::create(std::string_view tmxFile) { TMXMapInfo* ret = new TMXMapInfo(); if (ret->initWithTMXFile(tmxFile)) @@ -104,7 +104,7 @@ TMXMapInfo* TMXMapInfo::create(const std::string& tmxFile) return nullptr; } -TMXMapInfo* TMXMapInfo::createWithXML(const std::string& tmxString, const std::string& resourcePath) +TMXMapInfo* TMXMapInfo::createWithXML(std::string_view tmxString, std::string_view resourcePath) { TMXMapInfo* ret = new TMXMapInfo(); if (ret->initWithXML(tmxString, resourcePath)) @@ -116,7 +116,7 @@ TMXMapInfo* TMXMapInfo::createWithXML(const std::string& tmxString, const std::s return nullptr; } -void TMXMapInfo::internalInit(const std::string& tmxFileName, const std::string& resourcePath) +void TMXMapInfo::internalInit(std::string_view tmxFileName, std::string_view resourcePath) { if (!tmxFileName.empty()) { @@ -138,13 +138,13 @@ void TMXMapInfo::internalInit(const std::string& tmxFileName, const std::string& _currentFirstGID = -1; } -bool TMXMapInfo::initWithXML(const std::string& tmxString, const std::string& resourcePath) +bool TMXMapInfo::initWithXML(std::string_view tmxString, std::string_view resourcePath) { internalInit("", resourcePath); return parseXMLString(tmxString); } -bool TMXMapInfo::initWithTMXFile(const std::string& tmxFile) +bool TMXMapInfo::initWithTMXFile(std::string_view tmxFile) { internalInit(tmxFile, ""); return parseXMLFile(_TMXFileName); @@ -171,7 +171,7 @@ TMXMapInfo::~TMXMapInfo() CCLOGINFO("deallocing TMXMapInfo: %p", this); } -bool TMXMapInfo::parseXMLString(const std::string& xmlString) +bool TMXMapInfo::parseXMLString(std::string_view xmlString) { size_t len = xmlString.size(); if (len <= 0) @@ -186,10 +186,10 @@ bool TMXMapInfo::parseXMLString(const std::string& xmlString) parser.setDelegator(this); - return parser.parse(xmlString.c_str(), len); + return parser.parse(xmlString.data(), len); } -bool TMXMapInfo::parseXMLFile(const std::string& xmlFilename) +bool TMXMapInfo::parseXMLFile(std::string_view xmlFilename) { SAXParser parser; @@ -265,7 +265,7 @@ void TMXMapInfo::startElement(void* /*ctx*/, const char* name, const char** atts tmxMapInfo->setStaggerIndex(TMXStaggerIndex_Even); } - float hexSideLength = attributeDict["hexsidelength"].asFloat(); + auto hexSideLength = attributeDict["hexsidelength"].asInt(); tmxMapInfo->setHexSideLength(hexSideLength); Vec2 s; @@ -348,7 +348,7 @@ void TMXMapInfo::startElement(void* /*ctx*/, const char* name, const char** atts TMXLayerInfo* layer = tmxMapInfo->getLayers().back(); Vec2 layerSize = layer->_layerSize; uint32_t gid = static_cast(attributeDict["gid"].asUnsignedInt()); - int tilesAmount = layerSize.width * layerSize.height; + int tilesAmount = static_cast(layerSize.width * layerSize.height); if (_xmlTileIndex < tilesAmount) { @@ -443,7 +443,7 @@ void TMXMapInfo::startElement(void* /*ctx*/, const char* name, const char** atts TMXLayerInfo* layer = tmxMapInfo->getLayers().back(); Vec2 layerSize = layer->_layerSize; - int tilesAmount = layerSize.width * layerSize.height; + int tilesAmount = static_cast(layerSize.width * layerSize.height); uint32_t* tiles = (uint32_t*)malloc(tilesAmount * sizeof(uint32_t)); // set all value to 0 @@ -688,10 +688,10 @@ void TMXMapInfo::endElement(void* /*ctx*/, const char* name) TMXLayerInfo* layer = tmxMapInfo->getLayers().back(); - std::string currentString = tmxMapInfo->getCurrentString(); + auto currentString = tmxMapInfo->getCurrentString(); unsigned char* buffer; auto len = - base64Decode((unsigned char*)currentString.c_str(), (unsigned int)currentString.length(), &buffer); + base64Decode((unsigned char*)currentString.data(), (unsigned int)currentString.length(), &buffer); if (!buffer) { CCLOG("cocos2d: TiledMap: decode data error"); @@ -733,10 +733,11 @@ void TMXMapInfo::endElement(void* /*ctx*/, const char* name) TMXLayerInfo* layer = tmxMapInfo->getLayers().back(); tmxMapInfo->setStoringCharacters(false); - std::string currentString = tmxMapInfo->getCurrentString(); + auto currentString = tmxMapInfo->getCurrentString(); vector gidTokens; - istringstream filestr(currentString); + std::stringstream filestr; + filestr << currentString; string sRow; while (getline(filestr, sRow, '\n')) { @@ -810,7 +811,7 @@ void TMXMapInfo::textHandler(void* /*ctx*/, const char* ch, size_t len) if (tmxMapInfo->isStoringCharacters()) { - std::string currentString = tmxMapInfo->getCurrentString(); + std::string currentString{tmxMapInfo->getCurrentString()}; currentString += text; tmxMapInfo->setCurrentString(currentString); } diff --git a/cocos/2d/CCTMXXMLParser.h b/cocos/2d/CCTMXXMLParser.h index 20f780526c2d..1ec2a821f4e3 100644 --- a/cocos/2d/CCTMXXMLParser.h +++ b/cocos/2d/CCTMXXMLParser.h @@ -250,9 +250,9 @@ class CC_DLL TMXMapInfo : public Ref, public SAXDelegator { public: /** creates a TMX Format with a tmx file */ - static TMXMapInfo* create(const std::string& tmxFile); + static TMXMapInfo* create(std::string_view tmxFile); /** creates a TMX Format with an XML string and a TMX resource path */ - static TMXMapInfo* createWithXML(const std::string& tmxString, const std::string& resourcePath); + static TMXMapInfo* createWithXML(std::string_view tmxString, std::string_view resourcePath); /** * @js ctor @@ -265,13 +265,13 @@ class CC_DLL TMXMapInfo : public Ref, public SAXDelegator virtual ~TMXMapInfo(); /** initializes a TMX format with a tmx file */ - bool initWithTMXFile(const std::string& tmxFile); + bool initWithTMXFile(std::string_view tmxFile); /** initializes a TMX format with an XML string and a TMX resource path */ - bool initWithXML(const std::string& tmxString, const std::string& resourcePath); + bool initWithXML(std::string_view tmxString, std::string_view resourcePath); /** initializes parsing of an XML file, either a tmx (Map) file or tsx (Tileset) file */ - bool parseXMLFile(const std::string& xmlFilename); + bool parseXMLFile(std::string_view xmlFilename); /* initializes parsing of an XML string, either a tmx (Map) string or tsx (Tileset) string */ - bool parseXMLString(const std::string& xmlString); + bool parseXMLString(std::string_view xmlString); ValueMapIntKey& getTileProperties() { return _tileProperties; }; void setTileProperties(const ValueMapIntKey& tileProperties) { _tileProperties = tileProperties; } @@ -353,14 +353,14 @@ class CC_DLL TMXMapInfo : public Ref, public SAXDelegator */ void textHandler(void* ctx, const char* ch, size_t len) override; - const std::string& getCurrentString() const { return _currentString; } - void setCurrentString(const std::string& currentString) { _currentString = currentString; } - const std::string& getTMXFileName() const { return _TMXFileName; } - void setTMXFileName(const std::string& fileName) { _TMXFileName = fileName; } - const std::string& getExternalTilesetFileName() const { return _externalTilesetFilename; } + std::string_view getCurrentString() const { return _currentString; } + void setCurrentString(std::string_view currentString) { _currentString = currentString; } + std::string_view getTMXFileName() const { return _TMXFileName; } + void setTMXFileName(std::string_view fileName) { _TMXFileName = fileName; } + std::string_view getExternalTilesetFileName() const { return _externalTilesetFilename; } protected: - void internalInit(const std::string& tmxFileName, const std::string& resourcePath); + void internalInit(std::string_view tmxFileName, std::string_view resourcePath); /// map orientation int _orientation; diff --git a/cocos/2d/CCTextFieldTTF.cpp b/cocos/2d/CCTextFieldTTF.cpp index 8ccdaace71e9..a134395fb9ec 100644 --- a/cocos/2d/CCTextFieldTTF.cpp +++ b/cocos/2d/CCTextFieldTTF.cpp @@ -109,10 +109,10 @@ TextFieldTTF::~TextFieldTTF() {} // static constructor ////////////////////////////////////////////////////////////////////////// -TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(const std::string& placeholder, +TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(std::string_view placeholder, const Vec2& dimensions, TextHAlignment alignment, - const std::string& fontName, + std::string_view fontName, float fontSize) { TextFieldTTF* ret = new TextFieldTTF(); @@ -129,8 +129,8 @@ TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(const std::string& placehol return nullptr; } -TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(const std::string& placeholder, - const std::string& fontName, +TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(std::string_view placeholder, + std::string_view fontName, float fontSize) { TextFieldTTF* ret = new TextFieldTTF(); @@ -151,10 +151,10 @@ TextFieldTTF* TextFieldTTF::textFieldWithPlaceHolder(const std::string& placehol // initialize ////////////////////////////////////////////////////////////////////////// -bool TextFieldTTF::initWithPlaceHolder(const std::string& placeholder, +bool TextFieldTTF::initWithPlaceHolder(std::string_view placeholder, const Vec2& dimensions, TextHAlignment alignment, - const std::string& fontName, + std::string_view fontName, float fontSize) { setDimensions(dimensions.width, dimensions.height); @@ -162,7 +162,7 @@ bool TextFieldTTF::initWithPlaceHolder(const std::string& placeholder, return initWithPlaceHolder(placeholder, fontName, fontSize); } -bool TextFieldTTF::initWithPlaceHolder(const std::string& placeholder, const std::string& fontName, float fontSize) +bool TextFieldTTF::initWithPlaceHolder(std::string_view placeholder, std::string_view fontName, float fontSize) { _placeHolder = placeholder; @@ -366,7 +366,7 @@ void TextFieldTTF::deleteBackward() } } -const std::string& TextFieldTTF::getContentText() +std::string_view TextFieldTTF::getContentText() { return _inputText; } @@ -573,9 +573,9 @@ void TextFieldTTF::setString(std::string_view text) _charCount = charCount; } -void TextFieldTTF::appendString(const std::string& text) +void TextFieldTTF::appendString(std::string_view text) { - insertText(text.c_str(), text.length()); + insertText(text.data(), text.length()); } void TextFieldTTF::makeStringSupportCursor(std::string& displayText) @@ -677,13 +677,13 @@ void TextFieldTTF::controlKey(EventKeyboard::KeyCode keyCode) } } -const std::string& TextFieldTTF::getString() const +std::string_view TextFieldTTF::getString() const { return _inputText; } // place holder text property -void TextFieldTTF::setPlaceHolder(const std::string& text) +void TextFieldTTF::setPlaceHolder(std::string_view text) { _placeHolder = text; if (_inputText.empty() && !_isAttachWithIME) @@ -693,7 +693,7 @@ void TextFieldTTF::setPlaceHolder(const std::string& text) } } -const std::string& TextFieldTTF::getPlaceHolder() const +std::string_view TextFieldTTF::getPlaceHolder() const { return _placeHolder; } @@ -733,7 +733,7 @@ void TextFieldTTF::setSecureTextEntry(bool value) } } -void TextFieldTTF::setPasswordTextStyle(const std::string& text) +void TextFieldTTF::setPasswordTextStyle(std::string_view text) { if (text.length() < 1) { @@ -747,7 +747,7 @@ void TextFieldTTF::setPasswordTextStyle(const std::string& text) } } -const std::string& TextFieldTTF::getPasswordTextStyle() const +std::string_view TextFieldTTF::getPasswordTextStyle() const { return _passwordStyleText; } diff --git a/cocos/2d/CCTextFieldTTF.h b/cocos/2d/CCTextFieldTTF.h index 4eee6e0f8649..b9276ffb4a78 100644 --- a/cocos/2d/CCTextFieldTTF.h +++ b/cocos/2d/CCTextFieldTTF.h @@ -98,28 +98,28 @@ class CC_DLL TextFieldTTF : public Label, public IMEDelegate /** Creates a TextFieldTTF from a fontname, alignment, dimension and font size. * @js NA */ - static TextFieldTTF* textFieldWithPlaceHolder(const std::string& placeholder, + static TextFieldTTF* textFieldWithPlaceHolder(std::string_view placeholder, const Vec2& dimensions, TextHAlignment alignment, - const std::string& fontName, + std::string_view fontName, float fontSize); /** Creates a TextFieldTTF from a fontname and font size. * @js NA */ - static TextFieldTTF* textFieldWithPlaceHolder(const std::string& placeholder, - const std::string& fontName, + static TextFieldTTF* textFieldWithPlaceHolder(std::string_view placeholder, + std::string_view fontName, float fontSize); /** Initializes the TextFieldTTF with a font name, alignment, dimension and font size. */ - bool initWithPlaceHolder(const std::string& placeholder, + bool initWithPlaceHolder(std::string_view placeholder, const Vec2& dimensions, TextHAlignment alignment, - const std::string& fontName, + std::string_view fontName, float fontSize); /** Initializes the TextFieldTTF with a font name and font size. */ - bool initWithPlaceHolder(const std::string& placeholder, const std::string& fontName, float fontSize); + bool initWithPlaceHolder(std::string_view placeholder, std::string_view fontName, float fontSize); /** *@brief Open keyboard and receive input text. @@ -183,26 +183,26 @@ class CC_DLL TextFieldTTF : public Label, public IMEDelegate * Append to input text of TextField. *@param text The append text of TextField. */ - virtual void appendString(const std::string& text); + virtual void appendString(std::string_view text); /** * Query the input text of TextField. *@return Get the input text of TextField. */ - virtual const std::string& getString() const override; + virtual std::string_view getString() const override; /** * Change placeholder text. * place holder text displayed when there is no text in the text field. *@param text The placeholder string. */ - virtual void setPlaceHolder(const std::string& text); + virtual void setPlaceHolder(std::string_view text); /** * Query the placeholder string. *@return The placeholder string. */ - virtual const std::string& getPlaceHolder() const; + virtual std::string_view getPlaceHolder() const; /** * Set enable secure text entry representation. @@ -211,8 +211,8 @@ class CC_DLL TextFieldTTF : public Label, public IMEDelegate * @js NA */ virtual void setSecureTextEntry(bool value); - virtual void setPasswordTextStyle(const std::string& text); - const std::string& getPasswordTextStyle() const; + virtual void setPasswordTextStyle(std::string_view text); + std::string_view getPasswordTextStyle() const; /** * Query whether the currently display mode is secure text entry or not. @@ -260,7 +260,7 @@ class CC_DLL TextFieldTTF : public Label, public IMEDelegate virtual void didDetachWithIME() override; virtual void insertText(const char* text, size_t len) override; virtual void deleteBackward() override; - virtual const std::string& getContentText() override; + virtual std::string_view getContentText() override; virtual void controlKey(EventKeyboard::KeyCode keyCode) override; TextFieldDelegate* _delegate; diff --git a/cocos/2d/CCTileMapAtlas.cpp b/cocos/2d/CCTileMapAtlas.cpp index 987d598f7e87..f0ca242ed4d8 100644 --- a/cocos/2d/CCTileMapAtlas.cpp +++ b/cocos/2d/CCTileMapAtlas.cpp @@ -36,7 +36,7 @@ NS_CC_BEGIN // implementation TileMapAtlas -TileMapAtlas* TileMapAtlas::create(const std::string& tile, const std::string& mapFile, int tileWidth, int tileHeight) +TileMapAtlas* TileMapAtlas::create(std::string_view tile, std::string_view mapFile, int tileWidth, int tileHeight) { TileMapAtlas* ret = new TileMapAtlas(); if (ret->initWithTileFile(tile, mapFile, tileWidth, tileHeight)) @@ -48,7 +48,7 @@ TileMapAtlas* TileMapAtlas::create(const std::string& tile, const std::string& m return nullptr; } -bool TileMapAtlas::initWithTileFile(const std::string& tile, const std::string& mapFile, int tileWidth, int tileHeight) +bool TileMapAtlas::initWithTileFile(std::string_view tile, std::string_view mapFile, int tileWidth, int tileHeight) { this->loadTGAfile(mapFile); this->calculateItemsToRender(); @@ -100,7 +100,7 @@ void TileMapAtlas::calculateItemsToRender() } } -void TileMapAtlas::loadTGAfile(const std::string& file) +void TileMapAtlas::loadTGAfile(std::string_view file) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(file); diff --git a/cocos/2d/CCTileMapAtlas.h b/cocos/2d/CCTileMapAtlas.h index 711f9e13990b..b5adc261e2d1 100644 --- a/cocos/2d/CCTileMapAtlas.h +++ b/cocos/2d/CCTileMapAtlas.h @@ -59,7 +59,7 @@ class CC_DLL TileMapAtlas : public AtlasNode /** creates a TileMap with a tile file (atlas) with a map file and the width and height of each tile in points. The tile file will be loaded using the TextureMgr. */ - static TileMapAtlas* create(const std::string& tile, const std::string& mapFile, int tileWidth, int tileHeight); + static TileMapAtlas* create(std::string_view tile, std::string_view mapFile, int tileWidth, int tileHeight); /** * @js ctor */ @@ -73,7 +73,7 @@ class CC_DLL TileMapAtlas : public AtlasNode /** initializes a TileMap with a tile file (atlas) with a map file and the width and height of each tile in points. The file will be loaded using the TextureMgr. */ - bool initWithTileFile(const std::string& tile, const std::string& mapFile, int tileWidth, int tileHeight); + bool initWithTileFile(std::string_view tile, std::string_view mapFile, int tileWidth, int tileHeight); /** * Returns a tile from position x,y. *For the moment only channel R is used @@ -100,7 +100,7 @@ class CC_DLL TileMapAtlas : public AtlasNode void setTGAInfo(struct sImageTGA* TGAInfo) { _TGAInfo = TGAInfo; } protected: - void loadTGAfile(const std::string& file); + void loadTGAfile(std::string_view file); void calculateItemsToRender(); void updateAtlasValueAt(const Vec2& pos, const Color3B& value, int index); void updateAtlasValues(); diff --git a/cocos/3d/CCAnimate3D.cpp b/cocos/3d/CCAnimate3D.cpp index 7ad77b1ce53d..2376a4715ed6 100644 --- a/cocos/3d/CCAnimate3D.cpp +++ b/cocos/3d/CCAnimate3D.cpp @@ -128,9 +128,9 @@ Animate3D* Animate3D::reverse() const return animate; } -Node* findChildByNameRecursively(Node* node, const std::string& childName) +Node* findChildByNameRecursively(Node* node, std::string_view childName) { - const std::string& name = node->getName(); + std::string_view name = node->getName(); if (name == childName) return node; @@ -162,10 +162,10 @@ void Animate3D::startWithTarget(Node* target) { if (_animation) { - const std::unordered_map& boneCurves = _animation->getBoneCurves(); + auto& boneCurves = _animation->getBoneCurves(); for (const auto& iter : boneCurves) { - const std::string& boneName = iter.first; + std::string_view boneName = iter.first; auto skin = sprite->getSkeleton(); if (skin) { @@ -200,10 +200,10 @@ void Animate3D::startWithTarget(Node* target) } else { - const std::unordered_map& boneCurves = _animation->getBoneCurves(); + auto& boneCurves = _animation->getBoneCurves(); for (const auto& iter : boneCurves) { - const std::string& boneName = iter.first; + std::string_view boneName = iter.first; Node* node = nullptr; if (target->getName() == boneName) node = target; diff --git a/cocos/3d/CCAnimation3D.cpp b/cocos/3d/CCAnimation3D.cpp index 7657842afd36..4cc34726c44f 100644 --- a/cocos/3d/CCAnimation3D.cpp +++ b/cocos/3d/CCAnimation3D.cpp @@ -29,11 +29,11 @@ NS_CC_BEGIN -Animation3D* Animation3D::create(const std::string& fileName, const std::string& animationName) +Animation3D* Animation3D::create(std::string_view fileName, std::string_view animationName) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); - std::string key = fullPath + "#" + animationName; - auto animation = Animation3DCache::getInstance()->getAnimation(key); + fullPath.append("#").append(animationName); + auto animation = Animation3DCache::getInstance()->getAnimation(fullPath); if (animation != nullptr) return animation; @@ -50,7 +50,7 @@ Animation3D* Animation3D::create(const std::string& fileName, const std::string& return animation; } -bool Animation3D::initWithFile(const std::string& filename, const std::string& animationName) +bool Animation3D::initWithFile(std::string_view filename, std::string_view animationName) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filename); @@ -59,8 +59,8 @@ bool Animation3D::initWithFile(const std::string& filename, const std::string& a Animation3DData animationdata; if (bundle->load(fullPath) && bundle->loadAnimationData(animationName, &animationdata) && init(animationdata)) { - std::string key = fullPath + "#" + animationName; - Animation3DCache::getInstance()->addAnimation(key, this); + fullPath.append("#").append(animationName); + Animation3DCache::getInstance()->addAnimation(fullPath, this); Bundle3D::destroyBundle(bundle); return true; } @@ -70,7 +70,7 @@ bool Animation3D::initWithFile(const std::string& filename, const std::string& a return false; } -Animation3D::Curve* Animation3D::getBoneCurveByName(const std::string& name) const +Animation3D::Curve* Animation3D::getBoneCurveByName(std::string_view name) const { auto it = _boneCurves.find(name); if (it != _boneCurves.end()) @@ -199,7 +199,7 @@ void Animation3DCache::destroyInstance() CC_SAFE_DELETE(_cacheInstance); } -Animation3D* Animation3DCache::getAnimation(const std::string& key) +Animation3D* Animation3DCache::getAnimation(std::string_view key) { auto it = _animations.find(key); if (it != _animations.end()) @@ -207,14 +207,14 @@ Animation3D* Animation3DCache::getAnimation(const std::string& key) return nullptr; } -void Animation3DCache::addAnimation(const std::string& key, Animation3D* animation) +void Animation3DCache::addAnimation(std::string_view key, Animation3D* animation) { const auto& it = _animations.find(key); if (it != _animations.end()) { return; // already have this key } - _animations[key] = animation; + _animations.emplace(key, animation); //_animations[key] = animation; animation->retain(); } diff --git a/cocos/3d/CCAnimation3D.h b/cocos/3d/CCAnimation3D.h index 80f528ae2702..64b1302d83ee 100644 --- a/cocos/3d/CCAnimation3D.h +++ b/cocos/3d/CCAnimation3D.h @@ -69,7 +69,7 @@ class CC_DLL Animation3D : public Ref }; /**read all animation or only the animation with given animationName? animationName == "" read the first.*/ - static Animation3D* create(const std::string& filename, const std::string& animationName = ""); + static Animation3D* create(std::string_view filename, std::string_view animationName = ""); /**get duration*/ float getDuration() const { return _duration; } @@ -79,10 +79,10 @@ class CC_DLL Animation3D : public Ref * * @lua NA */ - Curve* getBoneCurveByName(const std::string& name) const; + Curve* getBoneCurveByName(std::string_view name) const; /**get the bone Curves set*/ - const std::unordered_map& getBoneCurves() const { return _boneCurves; } + const hlookup::string_map& getBoneCurves() const { return _boneCurves; } CC_CONSTRUCTOR_ACCESS : Animation3D(); virtual ~Animation3D(); @@ -90,10 +90,10 @@ class CC_DLL Animation3D : public Ref bool init(const Animation3DData& data); /**init Animation3D with file name and animation name*/ - bool initWithFile(const std::string& filename, const std::string& animationName); + bool initWithFile(std::string_view filename, std::string_view animationName); protected: - std::unordered_map _boneCurves; // bone curves map, key bone name, value AnimationCurve + hlookup::string_map _boneCurves; // bone curves map, key bone name, value AnimationCurve float _duration; // animation duration }; @@ -109,10 +109,10 @@ class Animation3DCache static void destroyInstance(); /**get animation by key*/ - Animation3D* getAnimation(const std::string& key); + Animation3D* getAnimation(std::string_view key); /**add animation to cache*/ - void addAnimation(const std::string& key, Animation3D* animation); + void addAnimation(std::string_view key, Animation3D* animation); /**remove all animation*/ void removeAllAnimations(); @@ -125,7 +125,7 @@ class Animation3DCache static Animation3DCache* _cacheInstance; // cache instance - std::unordered_map _animations; // cached animations + hlookup::string_map _animations; // cached animations }; // end of 3d group diff --git a/cocos/3d/CCBillBoard.cpp b/cocos/3d/CCBillBoard.cpp index 427d262a4c72..5eaba2dbb015 100644 --- a/cocos/3d/CCBillBoard.cpp +++ b/cocos/3d/CCBillBoard.cpp @@ -53,7 +53,7 @@ BillBoard* BillBoard::createWithTexture(Texture2D* texture, Mode mode) return nullptr; } -BillBoard* BillBoard::create(const std::string& filename, Mode mode) +BillBoard* BillBoard::create(std::string_view filename, Mode mode) { BillBoard* billboard = new BillBoard(); if (billboard->initWithFile(filename)) @@ -66,7 +66,7 @@ BillBoard* BillBoard::create(const std::string& filename, Mode mode) return nullptr; } -BillBoard* BillBoard::create(const std::string& filename, const Rect& rect, Mode mode) +BillBoard* BillBoard::create(std::string_view filename, const Rect& rect, Mode mode) { BillBoard* billboard = new BillBoard(); if (billboard->initWithFile(filename, rect)) diff --git a/cocos/3d/CCBillBoard.h b/cocos/3d/CCBillBoard.h index 4eef5d257a16..2f3237023571 100644 --- a/cocos/3d/CCBillBoard.h +++ b/cocos/3d/CCBillBoard.h @@ -63,7 +63,7 @@ class CC_DLL BillBoard : public Sprite * @param filename A path to image file, e.g., "scene1/monster.png" * @return An autoreleased BillBoard object. */ - static BillBoard* create(const std::string& filename, Mode mode = Mode::VIEW_POINT_ORIENTED); + static BillBoard* create(std::string_view filename, Mode mode = Mode::VIEW_POINT_ORIENTED); /** * Creates a BillBoard with an image filename and a rect. @@ -72,7 +72,7 @@ class CC_DLL BillBoard : public Sprite * @param rect A subrect of the image file * @return An autoreleased BillBoard object */ - static BillBoard* create(const std::string& filename, const Rect& rect, Mode mode = Mode::VIEW_POINT_ORIENTED); + static BillBoard* create(std::string_view filename, const Rect& rect, Mode mode = Mode::VIEW_POINT_ORIENTED); /** * Creates a BillBoard with a Texture2D object. diff --git a/cocos/3d/CCBundle3D.cpp b/cocos/3d/CCBundle3D.cpp index d735f5f39d2d..2f18d15daa71 100644 --- a/cocos/3d/CCBundle3D.cpp +++ b/cocos/3d/CCBundle3D.cpp @@ -169,7 +169,7 @@ void Bundle3D::clear() } } -bool Bundle3D::load(const std::string& path) +bool Bundle3D::load(std::string_view path) { if (path.empty()) return false; @@ -193,7 +193,7 @@ bool Bundle3D::load(const std::string& path) } else { - CCLOG("warning: %s is invalid file formate", path.c_str()); + CCLOG("warning: %s is invalid file formate", path.data()); } ret ? (_path = path) : (_path = ""); @@ -204,7 +204,7 @@ bool Bundle3D::load(const std::string& path) bool Bundle3D::loadObj(MeshDatas& meshdatas, MaterialDatas& materialdatas, NodeDatas& nodedatas, - const std::string& fullPath, + std::string_view fullPath, const char* mtl_basepath) { meshdatas.resetData(); @@ -219,7 +219,7 @@ bool Bundle3D::loadObj(MeshDatas& meshdatas, std::vector shapes; std::vector materials; - auto ret = tinyobj::LoadObj(shapes, materials, fullPath.c_str(), mtlPath.c_str()); + auto ret = tinyobj::LoadObj(shapes, materials, fullPath.data(), mtlPath.c_str()); if (ret.empty()) { // fill data @@ -329,11 +329,11 @@ bool Bundle3D::loadObj(MeshDatas& meshdatas, return true; } - CCLOG("warning: load %s file error: %s", fullPath.c_str(), ret.c_str()); + CCLOG("warning: load %s file error: %s", fullPath.data(), ret.c_str()); return false; } -bool Bundle3D::loadSkinData(const std::string& /*id*/, SkinData* skindata) +bool Bundle3D::loadSkinData(std::string_view /*id*/, SkinData* skindata) { skindata->resetData(); @@ -347,7 +347,7 @@ bool Bundle3D::loadSkinData(const std::string& /*id*/, SkinData* skindata) } } -bool Bundle3D::loadAnimationData(const std::string& id, Animation3DData* animationdata) +bool Bundle3D::loadAnimationData(std::string_view id, Animation3DData* animationdata) { animationdata->resetData(); @@ -1062,7 +1062,7 @@ bool Bundle3D::loadMaterialsJson(MaterialDatas& materialdatas) } return true; } -bool Bundle3D::loadJson(const std::string& path) +bool Bundle3D::loadJson(std::string_view path) { clear(); @@ -1084,7 +1084,7 @@ bool Bundle3D::loadJson(const std::string& path) return true; } -bool Bundle3D::loadBinary(const std::string& path) +bool Bundle3D::loadBinary(std::string_view path) { clear(); @@ -1094,7 +1094,7 @@ bool Bundle3D::loadBinary(const std::string& path) if (_binaryBuffer.isNull()) { clear(); - CCLOG("warning: Failed to read file: %s", path.c_str()); + CCLOG("warning: Failed to read file: %s", path.data()); return false; } @@ -1107,7 +1107,7 @@ bool Bundle3D::loadBinary(const std::string& path) if (_binaryReader.read(sig, 1, 4) != 4 || memcmp(sig, identifier, 4) != 0) { clear(); - CCLOG("warning: Invalid identifier: %s", path.c_str()); + CCLOG("warning: Invalid identifier: %s", path.data()); return false; } @@ -1127,7 +1127,7 @@ bool Bundle3D::loadBinary(const std::string& path) if (_binaryReader.read(&_referenceCount, 4, 1) != 1) { clear(); - CCLOG("warning: Failed to read ref table size '%s'.", path.c_str()); + CCLOG("warning: Failed to read ref table size '%s'.", path.data()); return false; } @@ -1141,7 +1141,7 @@ bool Bundle3D::loadBinary(const std::string& path) _binaryReader.read(&_references[i].offset, 4, 1) != 1) { clear(); - CCLOG("warning: Failed to read ref number %u for bundle '%s'.", i, path.c_str()); + CCLOG("warning: Failed to read ref number %u for bundle '%s'.", i, path.data()); CC_SAFE_DELETE_ARRAY(_references); return false; } @@ -1460,7 +1460,7 @@ bool loadMaterialDataJson_0_2(MaterialData* /*materialdata*/) return true; } -bool Bundle3D::loadAnimationDataJson(const std::string& id, Animation3DData* animationdata) +bool Bundle3D::loadAnimationDataJson(std::string_view id, Animation3DData* animationdata) { std::string anim = ""; if (_version == "1.2" || _version == "0.2") @@ -1549,7 +1549,7 @@ bool Bundle3D::loadAnimationDataJson(const std::string& id, Animation3DData* ani return true; } -bool Bundle3D::loadAnimationDataBinary(const std::string& id, Animation3DData* animationdata) +bool Bundle3D::loadAnimationDataBinary(std::string_view id, Animation3DData* animationdata) { if (_version == "0.1" || _version == "0.2" || _version == "0.3" || _version == "0.4") @@ -1560,9 +1560,9 @@ bool Bundle3D::loadAnimationDataBinary(const std::string& id, Animation3DData* a else { // if id is not a null string, we need to add a suffix of "animation" for seeding. - std::string id_ = id; - if (id != "") - id_ = id + "animation"; + std::string id_{id}; + if (!id.empty()) + id_.append("animation"); if (!seekToFirstType(BUNDLE_TYPE_ANIMATIONS, id_)) return false; @@ -1998,7 +1998,7 @@ NodeData* Bundle3D::parseNodesRecursivelyBinary(bool& skeleton, bool singleSprit return nodedata; } -backend::VertexFormat Bundle3D::parseGLDataType(const std::string& str, int size) +backend::VertexFormat Bundle3D::parseGLDataType(std::string_view str, int size) { backend::VertexFormat ret = backend::VertexFormat::INT; if (str == "GL_BYTE") @@ -2097,7 +2097,7 @@ backend::VertexFormat Bundle3D::parseGLDataType(const std::string& str, int size return ret; } -backend::SamplerAddressMode Bundle3D::parseSamplerAddressMode(const std::string& str) +backend::SamplerAddressMode Bundle3D::parseSamplerAddressMode(std::string_view str) { if (str == "REPEAT") @@ -2115,7 +2115,7 @@ backend::SamplerAddressMode Bundle3D::parseSamplerAddressMode(const std::string& } } -NTextureData::Usage Bundle3D::parseGLTextureType(const std::string& str) +NTextureData::Usage Bundle3D::parseGLTextureType(std::string_view str) { if (str == "AMBIENT") { @@ -2163,7 +2163,7 @@ NTextureData::Usage Bundle3D::parseGLTextureType(const std::string& str) return NTextureData::Usage::Unknown; } } -shaderinfos::VertexKey Bundle3D::parseGLProgramAttribute(const std::string& str) +shaderinfos::VertexKey Bundle3D::parseGLProgramAttribute(std::string_view str) { if (str == "VERTEX_ATTRIB_POSITION") { @@ -2233,14 +2233,14 @@ shaderinfos::VertexKey Bundle3D::parseGLProgramAttribute(const std::string& str) } } -void Bundle3D::getModelRelativePath(const std::string& path) +void Bundle3D::getModelRelativePath(std::string_view path) { ssize_t index = path.find_last_of('/'); std::string fullModelPath; _modelPath = path.substr(0, index + 1); } -Reference* Bundle3D::seekToFirstType(unsigned int type, const std::string& id) +Reference* Bundle3D::seekToFirstType(unsigned int type, std::string_view id) { // for each Reference for (unsigned int i = 0; i < _referenceCount; ++i) @@ -2266,7 +2266,7 @@ Reference* Bundle3D::seekToFirstType(unsigned int type, const std::string& id) return nullptr; } -std::vector Bundle3D::getTrianglesList(const std::string& path) +std::vector Bundle3D::getTrianglesList(std::string_view path) { std::vector trianglesList; diff --git a/cocos/3d/CCBundle3D.h b/cocos/3d/CCBundle3D.h index 1a92eeb20d91..6fb3d760a13e 100644 --- a/cocos/3d/CCBundle3D.h +++ b/cocos/3d/CCBundle3D.h @@ -64,32 +64,32 @@ class CC_DLL Bundle3D * get define data type * @param str The type in string */ - static backend::VertexFormat parseGLDataType(const std::string& str, int size); + static backend::VertexFormat parseGLDataType(std::string_view str, int size); /** * get define data type * @param str The type in string */ - static backend::SamplerAddressMode parseSamplerAddressMode(const std::string& str); + static backend::SamplerAddressMode parseSamplerAddressMode(std::string_view str); /** * load a file. You must load a file first, then call loadMeshData, loadSkinData, and so on * @param path File to be loaded * @return result of load */ - virtual bool load(const std::string& path); + virtual bool load(std::string_view path); /** * load skin data from bundle * @param id The ID of the skin, load the first Skin in the bundle if it is empty */ - virtual bool loadSkinData(const std::string& id, SkinData* skindata); + virtual bool loadSkinData(std::string_view id, SkinData* skindata); /** * load material data from bundle * @param id The ID of the animation, load the first animation in the bundle if it is empty */ - virtual bool loadAnimationData(const std::string& id, Animation3DData* animationdata); + virtual bool loadAnimationData(std::string_view id, Animation3DData* animationdata); // since 3.3, to support reskin virtual bool loadMeshDatas(MeshDatas& meshdatas); @@ -102,21 +102,21 @@ class CC_DLL Bundle3D * load triangle list * @param path the file path to load */ - static std::vector getTrianglesList(const std::string& path); + static std::vector getTrianglesList(std::string_view path); // load .obj file static bool loadObj(MeshDatas& meshdatas, MaterialDatas& materialdatas, NodeDatas& nodedatas, - const std::string& fullPath, + std::string_view fullPath, const char* mtl_basepath = nullptr); // calculate aabb static AABB calculateAABB(const std::vector& vertex, int stride, const std::vector& index); protected: - bool loadJson(const std::string& path); - bool loadBinary(const std::string& path); + bool loadJson(std::string_view path); + bool loadBinary(std::string_view path); bool loadMeshDatasJson(MeshDatas& meshdatas); bool loadMeshDataJson_0_1(MeshDatas& meshdatas); bool loadMeshDataJson_0_2(MeshDatas& meshdatas); @@ -137,8 +137,8 @@ class CC_DLL Bundle3D bool loadMaterialDataJson(MaterialData* materialdata); bool loadMaterialDataJson_0_1(MaterialData* materialdata); bool loadMaterialDataJson_0_2(MaterialData* materialdata); - bool loadAnimationDataJson(const std::string& id, Animation3DData* animationdata); - bool loadAnimationDataBinary(const std::string& id, Animation3DData* animationdata); + bool loadAnimationDataJson(std::string_view id, Animation3DData* animationdata); + bool loadAnimationDataBinary(std::string_view id, Animation3DData* animationdata); /** * load nodes of json @@ -156,26 +156,26 @@ class CC_DLL Bundle3D * get define data type * @param str The type in string */ - NTextureData::Usage parseGLTextureType(const std::string& str); + NTextureData::Usage parseGLTextureType(std::string_view str); /** * get vertex attribute type * @param str The type in string */ - shaderinfos::VertexKey parseGLProgramAttribute(const std::string& str); + shaderinfos::VertexKey parseGLProgramAttribute(std::string_view str); /* * get model path * @param str Full path of model file */ - void getModelRelativePath(const std::string& path); + void getModelRelativePath(std::string_view path); /* * set the read position in buffer to the target type * @param The data type * @param The data id */ - Reference* seekToFirstType(unsigned int type, const std::string& id = ""); + Reference* seekToFirstType(unsigned int type, std::string_view id = ""); CC_CONSTRUCTOR_ACCESS : Bundle3D(); virtual ~Bundle3D(); diff --git a/cocos/3d/CCBundle3DData.h b/cocos/3d/CCBundle3DData.h index 2f54bdfcf2af..25382094583d 100644 --- a/cocos/3d/CCBundle3DData.h +++ b/cocos/3d/CCBundle3DData.h @@ -220,21 +220,21 @@ struct SkinData rootBoneIndex = -1; } - void addSkinBoneNames(const std::string& name) + void addSkinBoneNames(std::string_view name) { auto it = std::find(skinBoneNames.begin(), skinBoneNames.end(), name); if (it == skinBoneNames.end()) - skinBoneNames.push_back(name); + skinBoneNames.push_back(std::string{name}); } - void addNodeBoneNames(const std::string& name) + void addNodeBoneNames(std::string_view name) { auto it = std::find(nodeBoneNames.begin(), nodeBoneNames.end(), name); if (it == nodeBoneNames.end()) - nodeBoneNames.push_back(name); + nodeBoneNames.push_back(std::string{name}); } - int getSkinBoneNameIndex(const std::string& name) const + int getSkinBoneNameIndex(std::string_view name) const { int i = 0; for (const auto& iter : skinBoneNames) @@ -246,7 +246,7 @@ struct SkinData return -1; } - int getBoneNameIndex(const std::string& name) const + int getBoneNameIndex(std::string_view name) const { int i = 0; for (const auto& iter : skinBoneNames) @@ -323,7 +323,7 @@ struct MaterialDatas { std::vector materials; void resetData() { materials.clear(); } - const NMaterialData* getMaterialData(const std::string& materialid) const + const NMaterialData* getMaterialData(std::string_view materialid) const { for (const auto& it : materials) { diff --git a/cocos/3d/CCMesh.cpp b/cocos/3d/CCMesh.cpp index 92a9434da0c9..31aa63a01611 100644 --- a/cocos/3d/CCMesh.cpp +++ b/cocos/3d/CCMesh.cpp @@ -228,7 +228,7 @@ Mesh* Mesh::create(const std::vector& vertices, return create("", indexData); } -Mesh* Mesh::create(const std::string& name, MeshIndexData* indexData, MeshSkin* skin) +Mesh* Mesh::create(std::string_view name, MeshIndexData* indexData, MeshSkin* skin) { auto state = new Mesh(); state->autorelease(); @@ -255,7 +255,7 @@ bool Mesh::isVisible() const return _visible; } -void Mesh::setTexture(const std::string& texPath) +void Mesh::setTexture(std::string_view texPath) { _texFile = texPath; auto tex = Director::getInstance()->getTextureCache()->addImage(texPath); @@ -307,7 +307,7 @@ void Mesh::setTexture(Texture2D* tex, NTextureData::Usage usage, bool cacheFileN } } -void Mesh::setTexture(const std::string& texPath, NTextureData::Usage usage) +void Mesh::setTexture(std::string_view texPath, NTextureData::Usage usage) { auto tex = Director::getInstance()->getTextureCache()->addImage(texPath); setTexture(tex, usage); diff --git a/cocos/3d/CCMesh.h b/cocos/3d/CCMesh.h index bbd9610b7ac7..3f8490edca82 100644 --- a/cocos/3d/CCMesh.h +++ b/cocos/3d/CCMesh.h @@ -83,7 +83,7 @@ class CC_DLL Mesh : public Ref * create mesh * @lua NA */ - static Mesh* create(const std::string& name, MeshIndexData* indexData, MeshSkin* skin = nullptr); + static Mesh* create(std::string_view name, MeshIndexData* indexData, MeshSkin* skin = nullptr); /** * get vertex buffer @@ -109,7 +109,7 @@ class CC_DLL Mesh : public Ref * call setTexture(texPath, NTextureData::Usage::Diffuse) * @param texPath texture path */ - void setTexture(const std::string& texPath); + void setTexture(std::string_view texPath); /** * set texture (diffuse), which is responsible for the main appearance. It is also means main texture, you can also * call setTexture(texPath, NTextureData::Usage::Diffuse) @@ -128,7 +128,7 @@ class CC_DLL Mesh : public Ref * @param texPath texture path * @param usage Usage of this texture */ - void setTexture(const std::string& texPath, NTextureData::Usage usage); + void setTexture(std::string_view texPath, NTextureData::Usage usage); /** * Get texture (diffuse), which is responsible for the main appearance. It is also means main texture, you can also * call getTexture(NTextureData::Usage::Diffuse) @@ -168,7 +168,7 @@ class CC_DLL Mesh : public Ref backend::ProgramState* getProgramState() const; /**name getter */ - const std::string& getName() const { return _name; } + std::string_view getName() const { return _name; } void setBlendFunc(const BlendFunc& blendFunc); const BlendFunc& getBlendFunc() const; @@ -225,7 +225,7 @@ class CC_DLL Mesh : public Ref /**Mesh index data setter*/ void setMeshIndexData(MeshIndexData* indexdata); /**name setter*/ - void setName(const std::string& name) { _name = name; } + void setName(std::string_view name) { _name = name; } /** * calculate the AABB of the mesh diff --git a/cocos/3d/CCMeshSkin.cpp b/cocos/3d/CCMeshSkin.cpp index 903ff6cc7b87..868aa50e088b 100644 --- a/cocos/3d/CCMeshSkin.cpp +++ b/cocos/3d/CCMeshSkin.cpp @@ -75,7 +75,7 @@ Bone3D* MeshSkin::getBoneByIndex(unsigned int index) const return nullptr; } -Bone3D* MeshSkin::getBoneByName(const std::string& id) const +Bone3D* MeshSkin::getBoneByName(std::string_view id) const { // search from skin bones for (const auto& it : _skinBones) diff --git a/cocos/3d/CCMeshSkin.h b/cocos/3d/CCMeshSkin.h index 13df17857297..3533f113376d 100644 --- a/cocos/3d/CCMeshSkin.h +++ b/cocos/3d/CCMeshSkin.h @@ -54,7 +54,7 @@ class CC_DLL MeshSkin : public Ref public: /**create a new meshskin if do not want to share meshskin*/ - static MeshSkin* create(Skeleton3D* skeleton, const std::string& filename, const std::string& name); + static MeshSkin* create(Skeleton3D* skeleton, std::string_view filename, std::string_view name); static MeshSkin* create(Skeleton3D* skeleton, const std::vector& boneNames, @@ -65,7 +65,7 @@ class CC_DLL MeshSkin : public Ref /**get bone*/ Bone3D* getBoneByIndex(unsigned int index) const; - Bone3D* getBoneByName(const std::string& id) const; + Bone3D* getBoneByName(std::string_view id) const; /**get bone index*/ int getBoneIndex(Bone3D* bone) const; diff --git a/cocos/3d/CCMeshVertexIndexData.cpp b/cocos/3d/CCMeshVertexIndexData.cpp index 0f4c7308594d..3e0544022d3c 100644 --- a/cocos/3d/CCMeshVertexIndexData.cpp +++ b/cocos/3d/CCMeshVertexIndexData.cpp @@ -49,7 +49,7 @@ using namespace std; NS_CC_BEGIN ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -MeshIndexData* MeshIndexData::create(const std::string& id, +MeshIndexData* MeshIndexData::create(std::string_view id, MeshVertexData* vertexData, backend::Buffer* indexbuffer, const AABB& aabb) @@ -160,7 +160,7 @@ MeshVertexData* MeshVertexData::create(const MeshData& meshdata) return vertexdata; } -MeshIndexData* MeshVertexData::getMeshIndexDataById(const std::string& id) const +MeshIndexData* MeshVertexData::getMeshIndexDataById(std::string_view id) const { for (auto it : _indexs) { diff --git a/cocos/3d/CCMeshVertexIndexData.h b/cocos/3d/CCMeshVertexIndexData.h index a65a9ab64105..ef68b9455cdf 100644 --- a/cocos/3d/CCMeshVertexIndexData.h +++ b/cocos/3d/CCMeshVertexIndexData.h @@ -55,7 +55,7 @@ class CC_DLL MeshIndexData : public Ref { public: /** create */ - static MeshIndexData* create(const std::string& id, + static MeshIndexData* create(std::string_view id, MeshVertexData* vertexData, backend::Buffer* indexbuffer, const AABB& aabb); @@ -74,8 +74,8 @@ class CC_DLL MeshIndexData : public Ref const AABB& getAABB() const { return _aabb; } /** id setter and getter */ - void setId(const std::string& id) { _id = id; } - const std::string& getId() const { return _id; } + void setId(std::string_view id) { _id = id; } + std::string_view getId() const { return _id; } /**primitive type setter & getter*/ MeshCommand::PrimitiveType getPrimitiveType() const { return _primitiveType; } @@ -128,7 +128,7 @@ class CC_DLL MeshVertexData : public Ref /** get index data by index */ MeshIndexData* getMeshIndexDataByIndex(int index) const { return _indexs.at(index); } /** get index data by id */ - MeshIndexData* getMeshIndexDataById(const std::string& id) const; + MeshIndexData* getMeshIndexDataById(std::string_view id) const; ssize_t getSizePerVertex() const { return _sizePerVertex; } diff --git a/cocos/3d/CCMotionStreak3D.cpp b/cocos/3d/CCMotionStreak3D.cpp index e7ca8d32df9b..6337c9fd6668 100644 --- a/cocos/3d/CCMotionStreak3D.cpp +++ b/cocos/3d/CCMotionStreak3D.cpp @@ -61,7 +61,7 @@ MotionStreak3D* MotionStreak3D::create(float fade, float minSeg, float stroke, const Color3B& color, - const std::string& path) + std::string_view path) { MotionStreak3D* ret = new MotionStreak3D(); if (ret && ret->initWithFade(fade, minSeg, stroke, color, path)) @@ -87,7 +87,7 @@ MotionStreak3D* MotionStreak3D::create(float fade, float minSeg, float stroke, c return nullptr; } -bool MotionStreak3D::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path) +bool MotionStreak3D::initWithFade(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path) { CCASSERT(!path.empty(), "Invalid filename"); diff --git a/cocos/3d/CCMotionStreak3D.h b/cocos/3d/CCMotionStreak3D.h index 6b020a02cd6a..59111ff86d6e 100644 --- a/cocos/3d/CCMotionStreak3D.h +++ b/cocos/3d/CCMotionStreak3D.h @@ -61,7 +61,7 @@ class CC_DLL MotionStreak3D : public Node, public TextureProtocol float minSeg, float stroke, const Color3B& color, - const std::string& path); + std::string_view path); /** Creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture. * * @param fade The fade time, in seconds. @@ -164,7 +164,7 @@ class CC_DLL MotionStreak3D : public Node, public TextureProtocol /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture filename */ - bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, const std::string& path); + bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path); /** initializes a motion streak with fade in seconds, minimum segments, stroke's width, color and texture */ bool initWithFade(float fade, float minSeg, float stroke, const Color3B& color, Texture2D* texture); diff --git a/cocos/3d/CCObjLoader.cpp b/cocos/3d/CCObjLoader.cpp index 4d78b5d4750a..b3f0935f86ee 100644 --- a/cocos/3d/CCObjLoader.cpp +++ b/cocos/3d/CCObjLoader.cpp @@ -395,7 +395,7 @@ static bool exportFaceGroupToShape(shape_t& shape, const std::vector& in_texcoords, const std::vector>& faceGroup, const int material_id, - const std::string& name, + std::string_view name, bool clearCache) { if (faceGroup.empty()) @@ -517,7 +517,7 @@ std::string LoadMtl(std::map& material_map, char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; #ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, _countof(namebuf)); + sscanf_s(token, "%s", namebuf, static_cast(_countof(namebuf))); #else sscanf(token, "%s", namebuf); #endif @@ -681,7 +681,7 @@ std::string LoadMtl(std::map& material_map, return err.str(); } -std::string MaterialFileReader::operator()(const std::string& matId, +std::string MaterialFileReader::operator()(std::string_view matId, std::vector& materials, std::map& matMap) { @@ -689,7 +689,7 @@ std::string MaterialFileReader::operator()(const std::string& matId, if (!m_mtlBasePath.empty()) { - filepath = std::string(m_mtlBasePath) + matId; + filepath.append(m_mtlBasePath).append(matId); } else { diff --git a/cocos/3d/CCObjLoader.h b/cocos/3d/CCObjLoader.h index ef0dde2912b0..af64222dc36d 100644 --- a/cocos/3d/CCObjLoader.h +++ b/cocos/3d/CCObjLoader.h @@ -75,7 +75,7 @@ class MaterialReader MaterialReader() {} virtual ~MaterialReader() {} - virtual std::string operator()(const std::string& matId, + virtual std::string operator()(std::string_view matId, std::vector& materials, std::map& matMap) = 0; }; @@ -83,9 +83,9 @@ class MaterialReader class MaterialFileReader : public MaterialReader { public: - MaterialFileReader(const std::string& mtl_basepath) : m_mtlBasePath(mtl_basepath) {} + MaterialFileReader(std::string_view mtl_basepath) : m_mtlBasePath(mtl_basepath) {} virtual ~MaterialFileReader() {} - virtual std::string operator()(const std::string& matId, + virtual std::string operator()(std::string_view matId, std::vector& materials, std::map& matMap); diff --git a/cocos/3d/CCSkeleton3D.cpp b/cocos/3d/CCSkeleton3D.cpp index 4bf8763fbada..7aa8d6a386f2 100644 --- a/cocos/3d/CCSkeleton3D.cpp +++ b/cocos/3d/CCSkeleton3D.cpp @@ -136,7 +136,7 @@ void Bone3D::clearBoneBlendState() /** * Creates C3DBone. */ -Bone3D* Bone3D::create(const std::string& id) +Bone3D* Bone3D::create(std::string_view id) { auto bone = new Bone3D(id); bone->autorelease(); @@ -185,7 +185,7 @@ void Bone3D::removeAllChildBone() _children.clear(); } -Bone3D::Bone3D(const std::string& id) : _name(id), _parent(nullptr), _worldDirty(true) {} +Bone3D::Bone3D(std::string_view id) : _name(id), _parent(nullptr), _worldDirty(true) {} Bone3D::~Bone3D() { @@ -279,7 +279,7 @@ Bone3D* Skeleton3D::getBoneByIndex(unsigned int index) const return nullptr; } -Bone3D* Skeleton3D::getBoneByName(const std::string& id) const +Bone3D* Skeleton3D::getBoneByName(std::string_view id) const { // search from bones for (auto it : _bones) diff --git a/cocos/3d/CCSkeleton3D.h b/cocos/3d/CCSkeleton3D.h index e63a06050cce..bd13a8a95998 100644 --- a/cocos/3d/CCSkeleton3D.h +++ b/cocos/3d/CCSkeleton3D.h @@ -61,7 +61,7 @@ class CC_DLL Bone3D : public Ref const Mat4& getWorldMat(); /**get bone name*/ - const std::string& getName() const { return _name; } + std::string_view getName() const { return _name; } /** * set animation value @@ -78,7 +78,7 @@ class CC_DLL Bone3D : public Ref /** * Creates C3DBone. */ - static Bone3D* create(const std::string& id); + static Bone3D* create(std::string_view id); /** * Sets the inverse bind pose matrix. @@ -139,7 +139,7 @@ class CC_DLL Bone3D : public Ref /** * Constructor. */ - Bone3D(const std::string& id); + Bone3D(std::string_view id); /** * Destructor. @@ -190,7 +190,7 @@ class CC_DLL Skeleton3D : public Ref /**get bone*/ Bone3D* getBoneByIndex(unsigned int index) const; - Bone3D* getBoneByName(const std::string& id) const; + Bone3D* getBoneByName(std::string_view id) const; /**get & set root bone*/ ssize_t getRootCount() const; diff --git a/cocos/3d/CCSkybox.cpp b/cocos/3d/CCSkybox.cpp index e21c9770f88a..7e9d1fc2e81a 100644 --- a/cocos/3d/CCSkybox.cpp +++ b/cocos/3d/CCSkybox.cpp @@ -41,12 +41,12 @@ Skybox::~Skybox() _texture->release(); } -Skybox* Skybox::create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +Skybox* Skybox::create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { auto ret = new Skybox(); ret->init(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z); @@ -90,12 +90,12 @@ bool Skybox::init() return true; } -bool Skybox::init(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +bool Skybox::init(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { auto texture = TextureCube::create(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z); if (texture == nullptr) diff --git a/cocos/3d/CCSkybox.h b/cocos/3d/CCSkybox.h index 644da6446330..40560f2978df 100644 --- a/cocos/3d/CCSkybox.h +++ b/cocos/3d/CCSkybox.h @@ -58,12 +58,12 @@ class CC_DLL Skybox : public Node @param negative_z texture for the rear side of the texture cube face. @return A new skybox inited with given parameters. */ - static Skybox* create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + static Skybox* create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); /**texture getter and setter*/ void setTexture(TextureCube*); @@ -93,12 +93,12 @@ class CC_DLL Skybox : public Node /** * initialize with texture path */ - bool init(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + bool init(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); protected: /** diff --git a/cocos/3d/CCSprite3D.cpp b/cocos/3d/CCSprite3D.cpp index 3dcdf8e65a8b..f4d2e8cb6826 100644 --- a/cocos/3d/CCSprite3D.cpp +++ b/cocos/3d/CCSprite3D.cpp @@ -63,7 +63,7 @@ Sprite3D* Sprite3D::create() return nullptr; } -Sprite3D* Sprite3D::create(const std::string& modelPath) +Sprite3D* Sprite3D::create(std::string_view modelPath) { CCASSERT(modelPath.length() >= 4, "invalid filename for Sprite3D"); @@ -77,7 +77,7 @@ Sprite3D* Sprite3D::create(const std::string& modelPath) CC_SAFE_DELETE(sprite); return nullptr; } -Sprite3D* Sprite3D::create(const std::string& modelPath, const std::string& texturePath) +Sprite3D* Sprite3D::create(std::string_view modelPath, std::string_view texturePath) { auto sprite = create(modelPath); if (sprite) @@ -88,15 +88,15 @@ Sprite3D* Sprite3D::create(const std::string& modelPath, const std::string& text return sprite; } -void Sprite3D::createAsync(const std::string& modelPath, +void Sprite3D::createAsync(std::string_view modelPath, const std::function& callback, void* callbackparam) { createAsync(modelPath, "", callback, callbackparam); } -void Sprite3D::createAsync(const std::string& modelPath, - const std::string& texturePath, +void Sprite3D::createAsync(std::string_view modelPath, + std::string_view texturePath, const std::function& callback, void* callbackparam) { @@ -197,7 +197,7 @@ AABB Sprite3D::getAABBRecursivelyImp(Node* node) return aabb; } -bool Sprite3D::loadFromCache(const std::string& path) +bool Sprite3D::loadFromCache(std::string_view path) { auto spritedata = Sprite3DCache::getInstance()->getSpriteData(path); if (spritedata) @@ -238,7 +238,7 @@ bool Sprite3D::loadFromCache(const std::string& path) return false; } -bool Sprite3D::loadFromFile(const std::string& path, +bool Sprite3D::loadFromFile(std::string_view path, NodeDatas* nodedatas, MeshDatas* meshdatas, MaterialDatas* materialdatas) @@ -296,7 +296,7 @@ bool Sprite3D::init() return false; } -bool Sprite3D::initWithFile(const std::string& path) +bool Sprite3D::initWithFile(std::string_view path) { _aabbDirty = true; _meshes.clear(); @@ -654,7 +654,7 @@ void Sprite3D::createNode(NodeData* nodedata, Node* root, const MaterialDatas& m } } -MeshIndexData* Sprite3D::getMeshIndexData(const std::string& indexId) const +MeshIndexData* Sprite3D::getMeshIndexData(std::string_view indexId) const { for (auto it : _meshVertexDatas) { @@ -672,7 +672,7 @@ void Sprite3D::addMesh(Mesh* mesh) _meshes.pushBack(mesh); } -void Sprite3D::setTexture(const std::string& texFile) +void Sprite3D::setTexture(std::string_view texFile) { auto tex = _director->getTextureCache()->addImage(texFile); setTexture(tex); @@ -685,7 +685,7 @@ void Sprite3D::setTexture(Texture2D* texture) mesh->setTexture(texture); } } -AttachNode* Sprite3D::getAttachNode(const std::string& boneName) +AttachNode* Sprite3D::getAttachNode(std::string_view boneName) { auto it = _attachments.find(boneName); if (it != _attachments.end()) @@ -698,7 +698,7 @@ AttachNode* Sprite3D::getAttachNode(const std::string& boneName) { auto attachNode = AttachNode::create(bone); addChild(attachNode); - _attachments[boneName] = attachNode; + _attachments.emplace(boneName, attachNode); // _attachments[boneName] = attachNode; return attachNode; } } @@ -706,7 +706,7 @@ AttachNode* Sprite3D::getAttachNode(const std::string& boneName) return nullptr; } -void Sprite3D::removeAttachNode(const std::string& boneName) +void Sprite3D::removeAttachNode(std::string_view boneName) { auto it = _attachments.find(boneName); if (it != _attachments.end()) @@ -918,7 +918,7 @@ Mesh* Sprite3D::getMeshByIndex(int index) const } /**get Mesh by Name */ -Mesh* Sprite3D::getMeshByName(const std::string& name) const +Mesh* Sprite3D::getMeshByName(std::string_view name) const { for (const auto& it : _meshes) { @@ -928,7 +928,7 @@ Mesh* Sprite3D::getMeshByName(const std::string& name) const return nullptr; } -std::vector Sprite3D::getMeshArrayByName(const std::string& name) const +std::vector Sprite3D::getMeshArrayByName(std::string_view name) const { std::vector meshes; for (const auto& it : _meshes) @@ -973,7 +973,7 @@ void Sprite3DCache::destroyInstance() } } -Sprite3DCache::Sprite3DData* Sprite3DCache::getSpriteData(const std::string& key) const +Sprite3DCache::Sprite3DData* Sprite3DCache::getSpriteData(std::string_view key) const { auto it = _spriteDatas.find(key); if (it != _spriteDatas.end()) @@ -981,18 +981,18 @@ Sprite3DCache::Sprite3DData* Sprite3DCache::getSpriteData(const std::string& key return nullptr; } -bool Sprite3DCache::addSprite3DData(const std::string& key, Sprite3DCache::Sprite3DData* spritedata) +bool Sprite3DCache::addSprite3DData(std::string_view key, Sprite3DCache::Sprite3DData* spritedata) { auto it = _spriteDatas.find(key); if (it == _spriteDatas.end()) { - _spriteDatas[key] = spritedata; + _spriteDatas.emplace(key, spritedata); // _spriteDatas[key] = spritedata; return true; } return false; } -void Sprite3DCache::removeSprite3DData(const std::string& key) +void Sprite3DCache::removeSprite3DData(std::string_view key) { auto it = _spriteDatas.find(key); if (it != _spriteDatas.end()) diff --git a/cocos/3d/CCSprite3D.h b/cocos/3d/CCSprite3D.h index 477b6968ce3a..ec5127ecd34a 100644 --- a/cocos/3d/CCSprite3D.h +++ b/cocos/3d/CCSprite3D.h @@ -62,10 +62,10 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol static Sprite3D* create(); /** creates a Sprite3D*/ - static Sprite3D* create(const std::string& modelPath); + static Sprite3D* create(std::string_view modelPath); // creates a Sprite3D. It only supports one texture, and overrides the internal texture with 'texturePath' - static Sprite3D* create(const std::string& modelPath, const std::string& texturePath); + static Sprite3D* create(std::string_view modelPath, std::string_view texturePath); /** create 3d sprite asynchronously * If the 3d model was previously loaded, it will create a new 3d sprite and the callback will be called at once. @@ -76,31 +76,31 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol * @param callback callback after loading * @param callbackparam user defined parameter for the callback */ - static void createAsync(const std::string& modelPath, + static void createAsync(std::string_view modelPath, const std::function& callback, void* callbackparam); - static void createAsync(const std::string& modelPath, - const std::string& texturePath, + static void createAsync(std::string_view modelPath, + std::string_view texturePath, const std::function& callback, void* callbackparam); /**set diffuse texture, set the first if multiple textures exist*/ - void setTexture(const std::string& texFile); + void setTexture(std::string_view texFile); void setTexture(Texture2D* texture); /**get Mesh by index*/ Mesh* getMeshByIndex(int index) const; /**get Mesh by Name, it returns the first one if there are more than one mesh with the same name */ - Mesh* getMeshByName(const std::string& name) const; + Mesh* getMeshByName(std::string_view name) const; /** * get mesh array by name, returns all meshes with the given name * * @lua NA */ - std::vector getMeshArrayByName(const std::string& name) const; + std::vector getMeshArrayByName(std::string_view name) const; /**get mesh*/ Mesh* getMesh() const; @@ -111,10 +111,10 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol Skeleton3D* getSkeleton() const { return _skeleton; } /**get AttachNode by bone name, return nullptr if not exist*/ - AttachNode* getAttachNode(const std::string& boneName); + AttachNode* getAttachNode(std::string_view boneName); /**remove attach node*/ - void removeAttachNode(const std::string& boneName); + void removeAttachNode(std::string_view boneName); /**remove all attach nodes*/ void removeAllAttachNode(); @@ -214,16 +214,16 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol virtual bool init() override; - bool initWithFile(const std::string& path); + bool initWithFile(std::string_view path); bool initFrom(const NodeDatas& nodedatas, const MeshDatas& meshdatas, const MaterialDatas& materialdatas); /**load sprite3d from cache, return true if succeed, false otherwise*/ - bool loadFromCache(const std::string& path); + bool loadFromCache(std::string_view path); /** load file and set it to meshedatas, nodedatas and materialdatas, obj file .mtl file should be at the same * directory if exist */ - bool loadFromFile(const std::string& path, + bool loadFromFile(std::string_view path, NodeDatas* nodedatas, MeshDatas* meshdatas, MaterialDatas* materialdatas); @@ -242,7 +242,7 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol Sprite3D* createSprite3DNode(NodeData* nodedata, ModelData* modeldata, const MaterialDatas& materialdatas); /**get MeshIndexData by Id*/ - MeshIndexData* getMeshIndexData(const std::string& indexId) const; + MeshIndexData* getMeshIndexData(std::string_view indexId) const; void addMesh(Mesh* mesh); @@ -257,7 +257,7 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol Vector _meshVertexDatas; - std::unordered_map _attachments; + hlookup::string_map _attachments; BlendFunc _blend; @@ -319,17 +319,17 @@ class CC_DLL Sprite3DCache * * @lua NA */ - Sprite3DData* getSpriteData(const std::string& key) const; + Sprite3DData* getSpriteData(std::string_view key) const; /** * add the SpriteData into Sprite3D by given the specified key * * @lua NA */ - bool addSprite3DData(const std::string& key, Sprite3DData* spritedata); + bool addSprite3DData(std::string_view key, Sprite3DData* spritedata); /**remove the SpriteData from Sprite3D by given the specified key*/ - void removeSprite3DData(const std::string& key); + void removeSprite3DData(std::string_view key); /**remove all the SpriteData from Sprite3D*/ void removeAllSprite3DData(); @@ -339,7 +339,7 @@ class CC_DLL Sprite3DCache protected: static Sprite3DCache* _cacheInstance; - std::unordered_map _spriteDatas; // cached sprite data + hlookup::string_map _spriteDatas; // cached sprite data }; // end of 3d group diff --git a/cocos/3d/CCSprite3DMaterial.cpp b/cocos/3d/CCSprite3DMaterial.cpp index 5be1ec697435..7181b6bfc49e 100644 --- a/cocos/3d/CCSprite3DMaterial.cpp +++ b/cocos/3d/CCSprite3DMaterial.cpp @@ -238,7 +238,7 @@ Sprite3DMaterial* Sprite3DMaterial::createBuiltInMaterial(MaterialType type, boo return nullptr; } -Sprite3DMaterial* Sprite3DMaterial::createWithFilename(const std::string& path) +Sprite3DMaterial* Sprite3DMaterial::createWithFilename(std::string_view path) { auto validfilename = FileUtils::getInstance()->fullPathForFilename(path); if (!validfilename.empty()) @@ -311,19 +311,19 @@ void Sprite3DMaterialCache::destroyInstance() } } -bool Sprite3DMaterialCache::addSprite3DMaterial(const std::string& key, Texture2D* texture) +bool Sprite3DMaterialCache::addSprite3DMaterial(std::string_view key, Texture2D* texture) { auto itr = _materials.find(key); if (itr == _materials.end()) { CC_SAFE_RETAIN(texture); - _materials[key] = texture; + _materials.emplace(key, texture); return true; } return false; } -Texture2D* Sprite3DMaterialCache::getSprite3DMaterial(const std::string& key) +Texture2D* Sprite3DMaterialCache::getSprite3DMaterial(std::string_view key) { auto itr = _materials.find(key); if (itr != _materials.end()) @@ -337,7 +337,7 @@ void Sprite3DMaterialCache::removeAllSprite3DMaterial() { for (auto& itr : _materials) { - CC_SAFE_RELEASE_NULL(itr.second); + CC_SAFE_RELEASE_NULL(const_cast(itr.second)); } _materials.clear(); } diff --git a/cocos/3d/CCSprite3DMaterial.h b/cocos/3d/CCSprite3DMaterial.h index 1a128d02189c..d89fc10a3340 100644 --- a/cocos/3d/CCSprite3DMaterial.h +++ b/cocos/3d/CCSprite3DMaterial.h @@ -87,7 +87,7 @@ class CC_DLL Sprite3DMaterial : public Material * @param path Path of material file * @return Created material */ - static Sprite3DMaterial* createWithFilename(const std::string& path); + static Sprite3DMaterial* createWithFilename(std::string_view path); /** * Create material with GLProgramState @@ -162,10 +162,10 @@ class Sprite3DMaterialCache static void destroyInstance(); /**add to cache*/ - bool addSprite3DMaterial(const std::string& key, Texture2D* tex); + bool addSprite3DMaterial(std::string_view key, Texture2D* tex); /**get material from cache*/ - Texture2D* getSprite3DMaterial(const std::string& key); + Texture2D* getSprite3DMaterial(std::string_view key); /**remove all spritematerial*/ void removeAllSprite3DMaterial(); @@ -179,7 +179,7 @@ class Sprite3DMaterialCache protected: static Sprite3DMaterialCache* _cacheInstance; // instance - std::unordered_map _materials; // cached material + hlookup::string_map _materials; // cached material }; // end of 3d group diff --git a/cocos/3d/CCTerrain.cpp b/cocos/3d/CCTerrain.cpp index cc3bea4f6cf2..df626733e8a7 100644 --- a/cocos/3d/CCTerrain.cpp +++ b/cocos/3d/CCTerrain.cpp @@ -83,7 +83,7 @@ bool Terrain::initWithTerrainData(TerrainData& parameter, CrackFixedType fixedTy return initResult; } -void cocos2d::Terrain::setLightMap(const std::string& fileName) +void cocos2d::Terrain::setLightMap(std::string_view fileName) { CC_SAFE_RELEASE(_lightMap); auto image = new Image(); @@ -197,7 +197,7 @@ void Terrain::draw(cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, } } -bool Terrain::initHeightMap(const std::string& heightMap) +bool Terrain::initHeightMap(std::string_view heightMap) { _heightMapImage = new Image(); _heightMapImage->initWithImageFile(heightMap); @@ -611,7 +611,7 @@ cocos2d::Vec2 Terrain::convertToTerrainSpace(const Vec2& worldSpaceXZ) const return Vec2(image_x, image_y); } -void Terrain::resetHeightMap(const std::string& heightMap) +void Terrain::resetHeightMap(std::string_view heightMap) { _heightMapImage->release(); _vertices.clear(); @@ -1154,8 +1154,8 @@ void Terrain::Chunk::updateIndicesLOD() } memcpy(_neighborOldLOD, currentNeighborLOD, sizeof(currentNeighborLOD)); _oldLod = _currentLod; - int gridY = _size.height; - int gridX = _size.width; + int gridY = static_cast(_size.height); + int gridX = static_cast(_size.width); int step = 1 << _currentLod; if ((_left && _left->_currentLod > _currentLod) || (_right && _right->_currentLod > _currentLod) || @@ -1644,8 +1644,8 @@ Terrain::QuadTree::~QuadTree() delete _br; } -Terrain::TerrainData::TerrainData(const std::string& heightMapsrc, - const std::string& textureSrc, +Terrain::TerrainData::TerrainData(std::string_view heightMapsrc, + std::string_view textureSrc, const Vec2& chunksize, float height, float scale) @@ -1659,8 +1659,8 @@ Terrain::TerrainData::TerrainData(const std::string& heightMapsrc, _skirtHeightRatio = 1; } -Terrain::TerrainData::TerrainData(const std::string& heightMapsrc, - const std::string& alphamap, +Terrain::TerrainData::TerrainData(std::string_view heightMapsrc, + std::string_view alphamap, const DetailMap& detail1, const DetailMap& detail2, const DetailMap& detail3, @@ -1682,8 +1682,8 @@ Terrain::TerrainData::TerrainData(const std::string& heightMapsrc, _skirtHeightRatio = 1; } -Terrain::TerrainData::TerrainData(const std::string& heightMapsrc, - const std::string& alphamap, +Terrain::TerrainData::TerrainData(std::string_view heightMapsrc, + std::string_view alphamap, const DetailMap& detail1, const DetailMap& detail2, const DetailMap& detail3, @@ -1729,7 +1729,7 @@ Terrain::ChunkIndices::~ChunkIndices() CC_SAFE_RELEASE_NULL(_indexBuffer); } -Terrain::DetailMap::DetailMap(const std::string& detailMapPath, float size /*= 35*/) +Terrain::DetailMap::DetailMap(std::string_view detailMapPath, float size /*= 35*/) { this->_detailMapSrc = detailMapPath; this->_detailMapSize = size; diff --git a/cocos/3d/CCTerrain.h b/cocos/3d/CCTerrain.h index 25ebc401c9aa..e05a5721b2cc 100644 --- a/cocos/3d/CCTerrain.h +++ b/cocos/3d/CCTerrain.h @@ -108,7 +108,7 @@ class CC_DLL Terrain : public Node { /*Constructors*/ DetailMap(); - DetailMap(const std::string& detailMapSrc, float size = 35); + DetailMap(std::string_view detailMapSrc, float size = 35); /*detail Image source file path*/ std::string _detailMapSrc; /*detailMapSize determine how many tiles that Terrain represent*/ @@ -136,14 +136,14 @@ class CC_DLL Terrain : public Node /**empty constructor*/ TerrainData(); /**constructor, this constructor construct a simple terrain which only have 1 detailmap*/ - TerrainData(const std::string& heightMapsrc, - const std::string& textureSrc, + TerrainData(std::string_view heightMapsrc, + std::string_view textureSrc, const Vec2& chunksize = Vec2(32, 32), float mapHeight = 2, float mapScale = 0.1); /**constructor, this constructor construct a terrain which have 4 detailmaps, 1 alpha map*/ - TerrainData(const std::string& heightMapsrc, - const std::string& alphamap, + TerrainData(std::string_view heightMapsrc, + std::string_view alphamap, const DetailMap& detail1, const DetailMap& detail2, const DetailMap& detail3, @@ -152,8 +152,8 @@ class CC_DLL Terrain : public Node float mapHeight = 2, float mapScale = 0.1); /**constructor, this constructor construct a terrain which have 3 detailmaps, 1 alpha map*/ - TerrainData(const std::string& heightMapsrc, - const std::string& alphamap, + TerrainData(std::string_view heightMapsrc, + std::string_view alphamap, const DetailMap& detail1, const DetailMap& detail2, const DetailMap& detail3, @@ -337,7 +337,7 @@ class CC_DLL Terrain : public Node public: /** set light map texture */ - void setLightMap(const std::string& fileName); + void setLightMap(std::string_view fileName); /** set directional light for the terrain @@ -349,7 +349,7 @@ class CC_DLL Terrain : public Node /**initialize all Properties which terrain need */ bool initProperties(); /**initialize heightMap data */ - bool initHeightMap(const std::string& heightMap); + bool initHeightMap(std::string_view heightMap); /**initialize alphaMap ,detailMaps textures*/ bool initTextures(); /**create entry*/ @@ -429,7 +429,7 @@ class CC_DLL Terrain : public Node /** * reset the heightmap data. */ - void resetHeightMap(const std::string& heightMap); + void resetHeightMap(std::string_view heightMap); /** * get the terrain's minimal height. diff --git a/cocos/3d/CCVertexAttribBinding.cpp b/cocos/3d/CCVertexAttribBinding.cpp index 9aa5e165b7fe..761a061dd8fd 100644 --- a/cocos/3d/CCVertexAttribBinding.cpp +++ b/cocos/3d/CCVertexAttribBinding.cpp @@ -133,7 +133,7 @@ bool VertexAttribBinding::hasAttribute(const shaderinfos::VertexKey& key) const return _attributes.find(name) != _attributes.end(); } -backend::AttributeBindInfo* VertexAttribBinding::getVertexAttribValue(const std::string& name) +backend::AttributeBindInfo* VertexAttribBinding::getVertexAttribValue(std::string_view name) { const auto itr = _attributes.find(name); if (itr != _attributes.end()) @@ -141,7 +141,7 @@ backend::AttributeBindInfo* VertexAttribBinding::getVertexAttribValue(const std: return nullptr; } -void VertexAttribBinding::setVertexAttribPointer(const std::string& name, +void VertexAttribBinding::setVertexAttribPointer(std::string_view name, backend::VertexFormat type, bool normalized, int offset, diff --git a/cocos/3d/CCVertexAttribBinding.h b/cocos/3d/CCVertexAttribBinding.h index 20879586c072..e92378262593 100644 --- a/cocos/3d/CCVertexAttribBinding.h +++ b/cocos/3d/CCVertexAttribBinding.h @@ -107,18 +107,18 @@ class CC_DLL VertexAttribBinding : public Ref VertexAttribBinding& operator=(const VertexAttribBinding&); bool init(MeshIndexData* meshIndexData, Pass* pass, MeshCommand*); - void setVertexAttribPointer(const std::string& name, + void setVertexAttribPointer(std::string_view name, backend::VertexFormat type, bool normalized, int offset, int flag); - backend::AttributeBindInfo* getVertexAttribValue(const std::string& name); + backend::AttributeBindInfo* getVertexAttribValue(std::string_view name); void parseAttributes(); MeshIndexData* _meshIndexData; backend::ProgramState* _programState; std::shared_ptr _vertexLayout = std::make_shared(); - std::unordered_map _attributes; + hlookup::string_map _attributes; uint32_t _vertexAttribsFlags; }; diff --git a/cocos/audio/include/AudioDecoder.h b/cocos/audio/include/AudioDecoder.h index 1e1a27043d2d..780ddc2933cb 100644 --- a/cocos/audio/include/AudioDecoder.h +++ b/cocos/audio/include/AudioDecoder.h @@ -60,7 +60,7 @@ class AudioDecoder * @brief Opens an audio file specified by a file path. * @return true if succeed, otherwise false. */ - virtual bool open(const std::string& path) = 0; + virtual bool open(std::string_view path) = 0; /** * @brief Checks whether decoder has opened file successfully. diff --git a/cocos/audio/include/AudioDecoderEXT.h b/cocos/audio/include/AudioDecoderEXT.h index d8d598c8ae8c..f6eea0dbd20b 100644 --- a/cocos/audio/include/AudioDecoderEXT.h +++ b/cocos/audio/include/AudioDecoderEXT.h @@ -49,7 +49,7 @@ class AudioDecoderEXT : public AudioDecoder * @brief Opens an audio file specified by a file path. * @return true if succeed, otherwise false. */ - bool open(const std::string& path) override; + bool open(std::string_view path) override; /** * @brief Closes opened audio file. diff --git a/cocos/audio/include/AudioDecoderManager.h b/cocos/audio/include/AudioDecoderManager.h index fe5c2d1ed938..3075bf10d9be 100644 --- a/cocos/audio/include/AudioDecoderManager.h +++ b/cocos/audio/include/AudioDecoderManager.h @@ -37,7 +37,7 @@ class AudioDecoderManager public: static bool init(); static void destroy(); - static AudioDecoder* createDecoder(const std::string& path); + static AudioDecoder* createDecoder(std::string_view path); static void destroyDecoder(AudioDecoder* decoder); }; diff --git a/cocos/audio/include/AudioDecoderMp3.h b/cocos/audio/include/AudioDecoderMp3.h index a8be6fbeb3de..97311573974e 100644 --- a/cocos/audio/include/AudioDecoderMp3.h +++ b/cocos/audio/include/AudioDecoderMp3.h @@ -52,7 +52,7 @@ class AudioDecoderMp3 : public AudioDecoder * @brief Opens an audio file specified by a file path. * @return true if succeed, otherwise false. */ - bool open(const std::string& path) override; + bool open(std::string_view path) override; /** * @brief Closes opened audio file. diff --git a/cocos/audio/include/AudioDecoderOgg.h b/cocos/audio/include/AudioDecoderOgg.h index 0ca447b68019..18d86ebcedd3 100644 --- a/cocos/audio/include/AudioDecoderOgg.h +++ b/cocos/audio/include/AudioDecoderOgg.h @@ -44,7 +44,7 @@ class AudioDecoderOgg : public AudioDecoder * @brief Opens an audio file specified by a file path. * @return true if succeed, otherwise false. */ - bool open(const std::string& path) override; + bool open(std::string_view path) override; /** * @brief Closes opened audio file. diff --git a/cocos/audio/include/AudioDecoderWav.h b/cocos/audio/include/AudioDecoderWav.h index 59864494638b..8e9e101dd2fc 100644 --- a/cocos/audio/include/AudioDecoderWav.h +++ b/cocos/audio/include/AudioDecoderWav.h @@ -128,7 +128,7 @@ class AudioDecoderWav : public AudioDecoder * @brief Opens an audio file specified by a file path. * @return true if succeed, otherwise false. */ - bool open(const std::string& path) override; + bool open(std::string_view path) override; /** * @brief The helper function for convert frames to bytes diff --git a/cocos/audio/include/AudioEngine.h b/cocos/audio/include/AudioEngine.h index ee89635def62..2d864b78ee45 100644 --- a/cocos/audio/include/AudioEngine.h +++ b/cocos/audio/include/AudioEngine.h @@ -126,7 +126,7 @@ class CC_DLL AudioEngine * * @see `AudioProfile` */ - static AUDIO_ID play2d(const std::string& filePath, + static AUDIO_ID play2d(std::string_view filePath, bool loop = false, float volume = 1.0f, const AudioProfile* profile = nullptr); @@ -232,7 +232,7 @@ class CC_DLL AudioEngine * @param audioID An audioID returned by the play2d function. * @param callback */ - static void setFinishCallback(AUDIO_ID audioID, const std::function& callback); + static void setFinishCallback(AUDIO_ID audioID, const std::function& callback); /** * Gets the maximum number of simultaneous audio instance of AudioEngine. @@ -253,7 +253,7 @@ class CC_DLL AudioEngine * @warning This can lead to stop related audio first. * @param filePath Audio file path. */ - static void uncache(const std::string& filePath); + static void uncache(std::string_view filePath); /** * Uncache all audio data from internal buffer. @@ -276,20 +276,20 @@ class CC_DLL AudioEngine * @param profileName A name of audio profile. * @return The audio profile. */ - static AudioProfile* getProfile(const std::string& profileName); + static AudioProfile* getProfile(std::string_view profileName); /** * Preload audio file. * @param filePath The file path of an audio. */ - static void preload(const std::string& filePath) { preload(filePath, nullptr); } + static void preload(std::string_view filePath) { preload(filePath, nullptr); } /** * Preload audio file. * @param filePath The file path of an audio. * @param callback A callback which will be called after loading is finished. */ - static void preload(const std::string& filePath, std::function callback); + static void preload(std::string_view filePath, std::function callback); /** * Gets playing audio count. @@ -346,10 +346,10 @@ class CC_DLL AudioEngine static std::unordered_map _audioIDInfoMap; // audio file path,audio IDs - static std::unordered_map> _audioPathIDMap; + static hlookup::string_map> _audioPathIDMap; // profileName,ProfileHelper - static std::unordered_map _audioPathProfileHelperMap; + static hlookup::string_map _audioPathProfileHelperMap; static unsigned int _maxInstances; diff --git a/cocos/audio/include/AudioEngineImpl.h b/cocos/audio/include/AudioEngineImpl.h index cbb5c7284afd..eb1c4c9610c7 100644 --- a/cocos/audio/include/AudioEngineImpl.h +++ b/cocos/audio/include/AudioEngineImpl.h @@ -49,7 +49,7 @@ class CC_DLL AudioEngineImpl : public cocos2d::Ref ~AudioEngineImpl(); bool init(); - AUDIO_ID play2d(const std::string& fileFullPath, bool loop, float volume); + AUDIO_ID play2d(std::string_view fileFullPath, bool loop, float volume); void setVolume(AUDIO_ID audioID, float volume); void setLoop(AUDIO_ID audioID, bool loop); bool pause(AUDIO_ID audioID); @@ -59,11 +59,11 @@ class CC_DLL AudioEngineImpl : public cocos2d::Ref float getDuration(AUDIO_ID audioID); float getCurrentTime(AUDIO_ID audioID); bool setCurrentTime(AUDIO_ID audioID, float time); - void setFinishCallback(AUDIO_ID audioID, const std::function& callback); + void setFinishCallback(AUDIO_ID audioID, const std::function& callback); - void uncache(const std::string& filePath); + void uncache(std::string_view filePath); void uncacheAll(); - AudioCache* preload(const std::string& filePath, std::function callback); + AudioCache* preload(std::string_view filePath, std::function callback); void update(float dt); private: @@ -81,7 +81,7 @@ class CC_DLL AudioEngineImpl : public cocos2d::Ref std::queue _unusedSourcesPool; // filePath,bufferInfo - std::unordered_map _audioCaches; + hlookup::string_map> _audioCaches; // audioID,AudioInfo std::unordered_map _audioPlayers; diff --git a/cocos/audio/include/AudioPlayer.h b/cocos/audio/include/AudioPlayer.h index e114c5ea8132..81512b98d99f 100644 --- a/cocos/audio/include/AudioPlayer.h +++ b/cocos/audio/include/AudioPlayer.h @@ -72,7 +72,7 @@ class CC_DLL AudioPlayer float _volume; bool _loop; - std::function _finishCallbak; + std::function _finishCallbak; bool _isDestroyed; bool _removeByAudioEngine; diff --git a/cocos/audio/src/AudioDecoderEXT.mm b/cocos/audio/src/AudioDecoderEXT.mm index d310eb38e800..3b1a99bc104b 100644 --- a/cocos/audio/src/AudioDecoderEXT.mm +++ b/cocos/audio/src/AudioDecoderEXT.mm @@ -45,7 +45,7 @@ of this software and associated documentation files (the "Software"), to deal closeInternal(); } - bool AudioDecoderEXT::open(const std::string& fullPath) + bool AudioDecoderEXT::open(std::string_view fullPath) { bool ret = false; CFURLRef fileURL = nil; diff --git a/cocos/audio/src/AudioDecoderManager.cpp b/cocos/audio/src/AudioDecoderManager.cpp index fc0730e1c4ea..879d893a63c0 100644 --- a/cocos/audio/src/AudioDecoderManager.cpp +++ b/cocos/audio/src/AudioDecoderManager.cpp @@ -60,7 +60,7 @@ void AudioDecoderManager::destroy() #endif } -AudioDecoder* AudioDecoderManager::createDecoder(const std::string& path) +AudioDecoder* AudioDecoderManager::createDecoder(std::string_view path) { cxx17::string_view svPath(path); if (cxx20::ic::ends_with(svPath, ".ogg")) diff --git a/cocos/audio/src/AudioDecoderMp3.cpp b/cocos/audio/src/AudioDecoderMp3.cpp index a1c8c2cc5a56..b02cecc2a112 100644 --- a/cocos/audio/src/AudioDecoderMp3.cpp +++ b/cocos/audio/src/AudioDecoderMp3.cpp @@ -126,7 +126,7 @@ AudioDecoderMp3::~AudioDecoderMp3() close(); } -bool AudioDecoderMp3::open(const std::string& fullPath) +bool AudioDecoderMp3::open(std::string_view fullPath) { #if !CC_USE_MPG123 do diff --git a/cocos/audio/src/AudioDecoderOgg.cpp b/cocos/audio/src/AudioDecoderOgg.cpp index 15c4cc9ce866..bad5a4f6f404 100644 --- a/cocos/audio/src/AudioDecoderOgg.cpp +++ b/cocos/audio/src/AudioDecoderOgg.cpp @@ -70,7 +70,7 @@ AudioDecoderOgg::~AudioDecoderOgg() close(); } -bool AudioDecoderOgg::open(const std::string& fullPath) +bool AudioDecoderOgg::open(std::string_view fullPath) { auto fs = FileUtils::getInstance()->openFileStream(fullPath, FileStream::Mode::READ).release(); if (!fs) diff --git a/cocos/audio/src/AudioDecoderWav.cpp b/cocos/audio/src/AudioDecoderWav.cpp index 28366caed4d1..3d6be1e0feee 100644 --- a/cocos/audio/src/AudioDecoderWav.cpp +++ b/cocos/audio/src/AudioDecoderWav.cpp @@ -78,7 +78,7 @@ static bool wav_scan_chunk(WAV_FILE* wavf, uint32_t chunkID, void* header, void* } return false; } -static bool wav_open(const std::string& fullPath, WAV_FILE* wavf) +static bool wav_open(std::string_view fullPath, WAV_FILE* wavf) { wavf->Stream = FileUtils::getInstance()->openFileStream(fullPath, FileStream::Mode::READ); if (!wavf->Stream) @@ -192,7 +192,7 @@ AudioDecoderWav::~AudioDecoderWav() close(); } -bool AudioDecoderWav::open(const std::string& fullPath) +bool AudioDecoderWav::open(std::string_view fullPath) { if (wav_open(fullPath, &_wavf)) { diff --git a/cocos/audio/src/AudioEngine.cpp b/cocos/audio/src/AudioEngine.cpp index a59ac5b9a9f2..8590394e9744 100644 --- a/cocos/audio/src/AudioEngine.cpp +++ b/cocos/audio/src/AudioEngine.cpp @@ -47,9 +47,9 @@ const int AudioEngine::INVALID_AUDIO_ID = -1; const float AudioEngine::TIME_UNKNOWN = -1.0f; // audio file path,audio IDs -std::unordered_map> AudioEngine::_audioPathIDMap; +hlookup::string_map> AudioEngine::_audioPathIDMap; // profileName,ProfileHelper -std::unordered_map AudioEngine::_audioPathProfileHelperMap; +hlookup::string_map AudioEngine::_audioPathProfileHelperMap; unsigned int AudioEngine::_maxInstances = MAX_AUDIOINSTANCES; AudioEngine::ProfileHelper* AudioEngine::_defaultProfileHelper = nullptr; std::unordered_map AudioEngine::_audioIDInfoMap; @@ -172,7 +172,7 @@ bool AudioEngine::lazyInit() return true; } -AUDIO_ID AudioEngine::play2d(const std::string& filePath, bool loop, float volume, const AudioProfile* profile) +AUDIO_ID AudioEngine::play2d(std::string_view filePath, bool loop, float volume, const AudioProfile* profile) { AUDIO_ID ret = AudioEngine::INVALID_AUDIO_ID; @@ -203,7 +203,7 @@ AUDIO_ID AudioEngine::play2d(const std::string& filePath, bool loop, float volum if (_audioIDInfoMap.size() >= _maxInstances) { - log("Fail to play %s cause by limited max instance of AudioEngine", filePath.c_str()); + log("Fail to play %s cause by limited max instance of AudioEngine", filePath.data()); break; } if (profileHelper) @@ -211,7 +211,7 @@ AUDIO_ID AudioEngine::play2d(const std::string& filePath, bool loop, float volum if (profileHelper->profile.maxInstances != 0 && profileHelper->audioIDs.size() >= profileHelper->profile.maxInstances) { - log("Fail to play %s cause by limited max instance of AudioProfile", filePath.c_str()); + log("Fail to play %s cause by limited max instance of AudioProfile", filePath.data()); break; } if (profileHelper->profile.minDelay > TIME_DELAY_PRECISION) @@ -220,7 +220,7 @@ AUDIO_ID AudioEngine::play2d(const std::string& filePath, bool loop, float volum if (profileHelper->lastPlayTime > TIME_DELAY_PRECISION && currTime - profileHelper->lastPlayTime <= profileHelper->profile.minDelay) { - log("Fail to play %s cause by limited minimum delay", filePath.c_str()); + log("Fail to play %s cause by limited minimum delay", filePath.data()); break; } } @@ -238,7 +238,7 @@ AUDIO_ID AudioEngine::play2d(const std::string& filePath, bool loop, float volum ret = _audioEngineImpl->play2d(filePath, loop, volume); if (ret != INVALID_AUDIO_ID) { - _audioPathIDMap[filePath].push_back(ret); + _audioPathIDMap[filePath.data()].push_back(ret); auto it = _audioPathIDMap.find(filePath); auto& audioRef = _audioIDInfoMap[ret]; @@ -380,7 +380,7 @@ void AudioEngine::stopAll() _audioIDInfoMap.clear(); } -void AudioEngine::uncache(const std::string& filePath) +void AudioEngine::uncache(std::string_view filePath) { if (!_audioEngineImpl) { @@ -463,7 +463,7 @@ float AudioEngine::getCurrentTime(AUDIO_ID audioID) return 0.0f; } -void AudioEngine::setFinishCallback(AUDIO_ID audioID, const std::function& callback) +void AudioEngine::setFinishCallback(AUDIO_ID audioID, const std::function& callback) { auto it = _audioIDInfoMap.find(audioID); if (it != _audioIDInfoMap.end()) @@ -539,7 +539,7 @@ AudioProfile* AudioEngine::getDefaultProfile() return &_defaultProfileHelper->profile; } -AudioProfile* AudioEngine::getProfile(const std::string& name) +AudioProfile* AudioEngine::getProfile(std::string_view name) { auto it = _audioPathProfileHelperMap.find(name); if (it != _audioPathProfileHelperMap.end()) @@ -552,7 +552,7 @@ AudioProfile* AudioEngine::getProfile(const std::string& name) } } -void AudioEngine::preload(const std::string& filePath, std::function callback) +void AudioEngine::preload(std::string_view filePath, std::function callback) { if (!isEnabled()) { diff --git a/cocos/audio/src/AudioEngineImpl.mm b/cocos/audio/src/AudioEngineImpl.mm index f51ed483fc25..55809b1fb5a4 100644 --- a/cocos/audio/src/AudioEngineImpl.mm +++ b/cocos/audio/src/AudioEngineImpl.mm @@ -32,7 +32,7 @@ of this software and associated documentation files (the "Software"), to deal #include "audio/include/AudioDecoderManager.h" #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC -#import +# import #endif #include "audio/include/AudioEngine.h" @@ -42,31 +42,33 @@ of this software and associated documentation files (the "Software"), to deal #include "base/ccUtils.h" #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS -#import +# import #endif using namespace cocos2d; -static ALCdevice* s_ALDevice = nullptr; -static ALCcontext* s_ALContext = nullptr; +static ALCdevice* s_ALDevice = nullptr; +static ALCcontext* s_ALContext = nullptr; static AudioEngineImpl* s_instance = nullptr; -static void ccALPauseDevice() { +static void ccALPauseDevice() +{ ALOGD("%s", "===> ccALPauseDevice"); #if CC_USE_ALSOFT alcDevicePauseSOFT(s_ALDevice); #else - if(alcGetCurrentContext()) + if (alcGetCurrentContext()) alcMakeContextCurrent(nullptr); #endif } -static void ccALResumeDevice() { +static void ccALResumeDevice() +{ ALOGD("%s", "===> ccALResumeDevice"); #if CC_USE_ALSOFT alcDeviceResumeSOFT(s_ALDevice); #else - if(alcGetCurrentContext()) + if (alcGetCurrentContext()) alcMakeContextCurrent(nullptr); alcMakeContextCurrent(s_ALContext); #endif @@ -75,8 +77,14 @@ static void ccALResumeDevice() { #if defined(__APPLE__) typedef ALvoid (*alSourceNotificationProc)(ALuint sid, ALuint notificationID, ALvoid* userData); -typedef ALenum (*alSourceAddNotificationProcPtr)(ALuint sid, ALuint notificationID, alSourceNotificationProc notifyProc, ALvoid* userData); -static ALenum alSourceAddNotificationExt(ALuint sid, ALuint notificationID, alSourceNotificationProc notifyProc, ALvoid* userData) +typedef ALenum (*alSourceAddNotificationProcPtr)(ALuint sid, + ALuint notificationID, + alSourceNotificationProc notifyProc, + ALvoid* userData); +static ALenum alSourceAddNotificationExt(ALuint sid, + ALuint notificationID, + alSourceNotificationProc notifyProc, + ALvoid* userData) { static alSourceAddNotificationProcPtr proc = nullptr; @@ -92,42 +100,48 @@ static ALenum alSourceAddNotificationExt(ALuint sid, ALuint notificationID, alSo return AL_INVALID_VALUE; } -#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS -@interface AudioEngineSessionHandler : NSObject -{ +# if CC_TARGET_PLATFORM == CC_PLATFORM_IOS +@interface AudioEngineSessionHandler : NSObject { } --(id) init; --(void)handleInterruption:(NSNotification*)notification; +- (id)init; +- (void)handleInterruption:(NSNotification*)notification; @end @implementation AudioEngineSessionHandler --(id) init +- (id)init { if (self = [super init]) { int deviceVer = [[[UIDevice currentDevice] systemVersion] intValue]; ALOGD("===> The device version: %d", deviceVer); - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:) name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:) name:UIApplicationDidBecomeActiveNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:) name:UIApplicationWillResignActiveNotification object:nil]; - - BOOL success = [[AVAudioSession sharedInstance] - setCategory: AVAudioSessionCategoryAmbient - error: nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleInterruption:) + name:AVAudioSessionInterruptionNotification + object:[AVAudioSession sharedInstance]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleInterruption:) + name:UIApplicationDidBecomeActiveNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleInterruption:) + name:UIApplicationWillResignActiveNotification + object:nil]; + + BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; if (!success) ALOGE("Fail to set audio session."); } return self; } --(void)handleInterruption:(NSNotification*)notification +- (void)handleInterruption:(NSNotification*)notification { static bool isAudioSessionInterrupted = false; - static bool resumeOnBecomingActive = false; - static bool pauseOnResignActive = false; + static bool resumeOnBecomingActive = false; + static bool pauseOnResignActive = false; if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) { @@ -138,13 +152,15 @@ -(void)handleInterruption:(NSNotification*)notification if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) { - ALOGD("AVAudioSessionInterruptionTypeBegan, application != UIApplicationStateActive, alcMakeContextCurrent(nullptr)"); + ALOGD("AVAudioSessionInterruptionTypeBegan, application != UIApplicationStateActive, " + "alcMakeContextCurrent(nullptr)"); } else { - ALOGD("AVAudioSessionInterruptionTypeBegan, application == UIApplicationStateActive, pauseOnResignActive = true"); + ALOGD("AVAudioSessionInterruptionTypeBegan, application == UIApplicationStateActive, " + "pauseOnResignActive = true"); } - + // We always pause device when interruption began ccALPauseDevice(); } @@ -154,8 +170,9 @@ -(void)handleInterruption:(NSNotification*)notification if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { - ALOGD("AVAudioSessionInterruptionTypeEnded, application == UIApplicationStateActive, alcMakeContextCurrent(s_ALContext)"); - NSError *error = nil; + ALOGD("AVAudioSessionInterruptionTypeEnded, application == UIApplicationStateActive, " + "alcMakeContextCurrent(s_ALContext)"); + NSError* error = nil; [[AVAudioSession sharedInstance] setActive:YES error:&error]; ccALResumeDevice(); if (Director::getInstance()->isPaused()) @@ -166,7 +183,8 @@ -(void)handleInterruption:(NSNotification*)notification } else { - ALOGD("AVAudioSessionInterruptionTypeEnded, application != UIApplicationStateActive, resumeOnBecomingActive = true"); + ALOGD("AVAudioSessionInterruptionTypeEnded, application != UIApplicationStateActive, " + "resumeOnBecomingActive = true"); resumeOnBecomingActive = true; } } @@ -188,14 +206,15 @@ -(void)handleInterruption:(NSNotification*)notification { resumeOnBecomingActive = false; ALOGD("UIApplicationDidBecomeActiveNotification, alcMakeContextCurrent(s_ALContext)"); - NSError *error = nil; - BOOL success = [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: &error]; - if (!success) { + NSError* error = nil; + BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error]; + if (!success) + { ALOGE("Fail to set audio session."); return; } [[AVAudioSession sharedInstance] setActive:YES error:&error]; - + ccALResumeDevice(); } else if (isAudioSessionInterrupted) @@ -205,18 +224,20 @@ -(void)handleInterruption:(NSNotification*)notification } } --(void) dealloc +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self name:AVAudioSessionInterruptionNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIApplicationWillResignActiveNotification + object:nil]; [super dealloc]; } @end static id s_AudioEngineSessionHandler = nullptr; -#endif +# endif ALvoid AudioEngineImpl::myAlSourceNotificationCallback(ALuint sid, ALuint notificationID, ALvoid* userData) { @@ -239,10 +260,7 @@ -(void) dealloc #endif -AudioEngineImpl::AudioEngineImpl() -: _scheduled(false) -, _currentAudioID(0) -, _scheduler(nullptr) +AudioEngineImpl::AudioEngineImpl() : _scheduled(false), _currentAudioID(0), _scheduler(nullptr) { s_instance = this; } @@ -254,7 +272,8 @@ -(void) dealloc _scheduler->unschedule(CC_SCHEDULE_SELECTOR(AudioEngineImpl::update), this); } - if (s_ALContext) { + if (s_ALContext) + { alDeleteSources(MAX_AUDIOINSTANCES, _alSources); _audioCaches.clear(); @@ -264,7 +283,8 @@ -(void) dealloc s_ALContext = nullptr; } - if (s_ALDevice) { + if (s_ALDevice) + { alcCloseDevice(s_ALDevice); s_ALDevice = nullptr; } @@ -280,30 +300,34 @@ -(void) dealloc bool AudioEngineImpl::init() { bool ret = false; - do{ + do + { #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS s_AudioEngineSessionHandler = [[AudioEngineSessionHandler alloc] init]; #endif s_ALDevice = alcOpenDevice(nullptr); - if (s_ALDevice) { + if (s_ALDevice) + { alGetError(); s_ALContext = alcCreateContext(s_ALDevice, nullptr); alcMakeContextCurrent(s_ALContext); alGenSources(MAX_AUDIOINSTANCES, _alSources); auto alError = alGetError(); - if(alError != AL_NO_ERROR) + if (alError != AL_NO_ERROR) { ALOGE("%s:generating sources failed! error = %x\n", __FUNCTION__, alError); break; } - for (int i = 0; i < MAX_AUDIOINSTANCES; ++i) { + for (int i = 0; i < MAX_AUDIOINSTANCES; ++i) + { _unusedSourcesPool.push(_alSources[i]); #if defined(__APPLE__) - alSourceAddNotificationExt(_alSources[i], AL_BUFFERS_PROCESSED, myAlSourceNotificationCallback, nullptr); + alSourceAddNotificationExt(_alSources[i], AL_BUFFERS_PROCESSED, myAlSourceNotificationCallback, + nullptr); #endif } @@ -368,28 +392,30 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) #endif // ================ Workaround end ================ // - _scheduler = Director::getInstance()->getScheduler(); - ret = AudioDecoderManager::init(); - const char* vender = alGetString(AL_VENDOR); + _scheduler = Director::getInstance()->getScheduler(); + ret = AudioDecoderManager::init(); + const char* vender = alGetString(AL_VENDOR); const char* version = alGetString(AL_VERSION); ALOGI("OpenAL was initialized successfully, vender:%s, version:%s", vender, version); } - }while (false); + } while (false); return ret; } -AudioCache* AudioEngineImpl::preload(const std::string& filePath, std::function callback) +AudioCache* AudioEngineImpl::preload(std::string_view filePath, std::function callback) { AudioCache* audioCache = nullptr; auto it = _audioCaches.find(filePath); - if (it == _audioCaches.end()) { - audioCache = &_audioCaches[filePath]; + if (it == _audioCaches.end()) + { + audioCache = new AudioCache(); // hlookup_second(it); + _audioCaches.emplace(filePath, std::unique_ptr(audioCache)); audioCache->_fileFullPath = FileUtils::getInstance()->fullPathForFilename(filePath); - unsigned int cacheId = audioCache->_id; - auto isCacheDestroyed = audioCache->_isDestroyed; - AudioEngine::addTask([audioCache, cacheId, isCacheDestroyed](){ + unsigned int cacheId = audioCache->_id; + auto isCacheDestroyed = audioCache->_isDestroyed; + AudioEngine::addTask([audioCache, cacheId, isCacheDestroyed]() { if (*isCacheDestroyed) { ALOGV("AudioCache (id=%u) was destroyed, no need to launch readDataTask.", cacheId); @@ -399,8 +425,9 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) audioCache->readDataTask(cacheId); }); } - else { - audioCache = &it->second; + else + { + audioCache = it->second.get(); } if (audioCache && callback) @@ -410,9 +437,10 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) return audioCache; } -AUDIO_ID AudioEngineImpl::play2d(const std::string &filePath ,bool loop ,float volume) +AUDIO_ID AudioEngineImpl::play2d(std::string_view filePath, bool loop, float volume) { - if (s_ALDevice == nullptr) { + if (s_ALDevice == nullptr) + { return AudioEngine::INVALID_AUDIO_ID; } @@ -423,16 +451,18 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) } auto player = new AudioPlayer; - if (player == nullptr) { + if (player == nullptr) + { return AudioEngine::INVALID_AUDIO_ID; } player->_alSource = alSource; - player->_loop = loop; - player->_volume = volume; + player->_loop = loop; + player->_volume = volume; auto audioCache = preload(filePath, nullptr); - if (audioCache == nullptr) { + if (audioCache == nullptr) + { delete player; return AudioEngine::INVALID_AUDIO_ID; } @@ -442,7 +472,7 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) _audioPlayers.emplace(++_currentAudioID, player); _threadMutex.unlock(); - audioCache->addPlayCallback(std::bind(&AudioEngineImpl::_play2d,this,audioCache,_currentAudioID)); + audioCache->addPlayCallback(std::bind(&AudioEngineImpl::_play2d, this, audioCache, _currentAudioID)); if (!_scheduled) { @@ -453,7 +483,7 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) return _currentAudioID; } -void AudioEngineImpl::_play2d(AudioCache *cache, AUDIO_ID audioID) +void AudioEngineImpl::_play2d(AudioCache* cache, AUDIO_ID audioID) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); @@ -461,13 +491,14 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) return; auto player = iter->second; - //Note: It maybe in sub thread or main thread :( + // Note: It maybe in sub thread or main thread :( if (!*cache->_isDestroyed && cache->_state == AudioCache::State::READY) { - if (player->play2d()) { - _scheduler->performFunctionInCocosThread([audioID](){ - - if (AudioEngine::_audioIDInfoMap.find(audioID) != AudioEngine::_audioIDInfoMap.end()) { + if (player->play2d()) + { + _scheduler->performFunctionInCocosThread([audioID]() { + if (AudioEngine::_audioIDInfoMap.find(audioID) != AudioEngine::_audioIDInfoMap.end()) + { AudioEngine::_audioIDInfoMap[audioID].state = AudioEngine::AudioState::PLAYING; } }); @@ -492,23 +523,25 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) return sourceId; } -void AudioEngineImpl::setVolume(AUDIO_ID audioID,float volume) +void AudioEngineImpl::setVolume(AUDIO_ID audioID, float volume) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return; - + auto player = iter->second; lck.unlock(); - + player->_volume = volume; - if (player->_ready) { + if (player->_ready) + { alSourcef(player->_alSource, AL_GAIN, volume); auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ALOGE("%s: audio id = " AUDIO_ID_PRID ", error = %x", __FUNCTION__, audioID, error); } } @@ -518,30 +551,39 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return; - + auto player = iter->second; lck.unlock(); - - if (player->_ready) { - if (player->_streamingSource) { + + if (player->_ready) + { + if (player->_streamingSource) + { player->setLoop(loop); - } else { - if (loop) { + } + else + { + if (loop) + { alSourcei(player->_alSource, AL_LOOPING, AL_TRUE); - } else { + } + else + { alSourcei(player->_alSource, AL_LOOPING, AL_FALSE); } auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ALOGE("%s: audio id = " AUDIO_ID_PRID ", error = %x", __FUNCTION__, audioID, error); } } } - else { + else + { player->_loop = loop; } } @@ -550,18 +592,19 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return false; - + auto player = iter->second; - + lck.unlock(); - + bool ret = true; alSourcePause(player->_alSource); auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ret = false; ALOGE("%s: audio id = " AUDIO_ID_PRID ", error = %x\n", __FUNCTION__, audioID, error); } @@ -574,16 +617,17 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) bool ret = true; std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return false; - + auto player = iter->second; lck.unlock(); - + alSourcePlay(player->_alSource); auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ret = false; ALOGE("%s: audio id = " AUDIO_ID_PRID ", error = %x\n", __FUNCTION__, audioID, error); } @@ -595,29 +639,30 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return; - + auto player = iter->second; player->destroy(); - // Call '_updatePlayersState' method to cleanup immediately since the schedule may be cancelled without any notification. + // Call '_updatePlayersState' method to cleanup immediately since the schedule may be cancelled without any + // notification. _updatePlayers(true); } void AudioEngineImpl::stopAll() { std::lock_guard lck(_threadMutex); - for(auto&& player : _audioPlayers) + for (auto&& player : _audioPlayers) { player.second->destroy(); } - //Note: Don't set the flag to false here, it should be set in 'update' function. + // Note: Don't set the flag to false here, it should be set in 'update' function. // Otherwise, the state got from alSourceState may be wrong -// for(int index = 0; index < MAX_AUDIOINSTANCES; ++index) -// { -// _alSourceUsed[_alSources[index]] = false; -// } + // for(int index = 0; index < MAX_AUDIOINSTANCES; ++index) + // { + // _alSourceUsed[_alSources[index]] = false; + // } // Call '_updatePlayers' method to cleanup immediately since the schedule may be cancelled without any notification. _updatePlayers(true); @@ -627,9 +672,11 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) { std::lock_guard lck(_threadMutex); auto it = _audioPlayers.find(audioID); - if (it != _audioPlayers.end()) { + if (it != _audioPlayers.end()) + { auto player = it->second; - if (player->_ready) { + if (player->_ready) + { return player->_audioCache->_duration; } } @@ -639,21 +686,25 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) float AudioEngineImpl::getCurrentTime(AUDIO_ID audioID) { std::unique_lock lck(_threadMutex); - auto it = _audioPlayers.find(audioID); + auto it = _audioPlayers.find(audioID); if (it == _audioPlayers.end()) return 0.0f; - float ret = 0.0f; + float ret = 0.0f; auto player = it->second; - if (player->_ready) { - if (player->_streamingSource) { + if (player->_ready) + { + if (player->_streamingSource) + { ret = player->getTime(); } - else { + else + { alGetSourcef(player->_alSource, AL_SEC_OFFSET, &ret); auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ALOGE("%s, audio id:" AUDIO_ID_PRID ",error code:%x", __FUNCTION__, audioID, error); } } @@ -667,23 +718,28 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) bool ret = false; std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return false; - + auto player = iter->second; - do { - if (!player->_ready) { + do + { + if (!player->_ready) + { break; } - if (player->_streamingSource) { + if (player->_streamingSource) + { ret = player->setTime(time); break; } - else { + else + { if (player->_audioCache->_framesRead != player->_audioCache->_totalFrames && - (time * player->_audioCache->_sampleRate) > player->_audioCache->_framesRead) { + (time * player->_audioCache->_sampleRate) > player->_audioCache->_framesRead) + { ALOGE("%s: audio id = " AUDIO_ID_PRID, __FUNCTION__, audioID); break; } @@ -691,7 +747,8 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) alSourcef(player->_alSource, AL_SEC_OFFSET, time); auto error = alGetError(); - if (error != AL_NO_ERROR) { + if (error != AL_NO_ERROR) + { ALOGE("%s: audio id = " AUDIO_ID_PRID ", error = %x", __FUNCTION__, audioID, error); } ret = true; @@ -701,16 +758,17 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) return ret; } -void AudioEngineImpl::setFinishCallback(AUDIO_ID audioID, const std::function &callback) +void AudioEngineImpl::setFinishCallback(AUDIO_ID audioID, + const std::function& callback) { std::unique_lock lck(_threadMutex); auto iter = _audioPlayers.find(audioID); - if(iter == _audioPlayers.end()) + if (iter == _audioPlayers.end()) return; - + auto player = iter->second; lck.unlock(); - + player->_finishCallbak = callback; } @@ -726,45 +784,49 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) AudioPlayer* player; ALuint alSource; -// ALOGV("AudioPlayer count: %d", (int)_audioPlayers.size()); - for (auto it = _audioPlayers.begin(); it != _audioPlayers.end(); ) { - audioID = it->first; - player = it->second; + // ALOGV("AudioPlayer count: %d", (int)_audioPlayers.size()); + for (auto it = _audioPlayers.begin(); it != _audioPlayers.end();) + { + audioID = it->first; + player = it->second; alSource = player->_alSource; if (player->_removeByAudioEngine) { AudioEngine::remove(audioID); - + it = _audioPlayers.erase(it); delete player; _unusedSourcesPool.push(alSource); } - else if (player->_ready && player->isFinished()) { + else if (player->_ready && player->isFinished()) + { std::string filePath; - if (player->_finishCallbak) { + if (player->_finishCallbak) + { auto& audioInfo = AudioEngine::_audioIDInfoMap[audioID]; - filePath = audioInfo.filePath; + filePath = audioInfo.filePath; } AudioEngine::remove(audioID); - + it = _audioPlayers.erase(it); - if (player->_finishCallbak) { + if (player->_finishCallbak) + { /// ###IMPORTANT: don't call immidiately, because at callback, user-end may play a new audio /// cause _audioPlayers' iterator goan to invalid. - _finishCallbacks.push_back([finishCallback = std::move(player->_finishCallbak), audioID, filePath = std::move(filePath)](){ - finishCallback(audioID, filePath); - }); + _finishCallbacks.push_back([finishCallback = std::move(player->_finishCallbak), audioID, + filePath = std::move(filePath)]() { finishCallback(audioID, filePath); }); } // clear cache when audio player finsihed properly player->setCache(nullptr); delete player; _unusedSourcesPool.push(alSource); } - else{ + else + { ++it; } } @@ -786,7 +848,8 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) _unscheduleUpdate(); } -void AudioEngineImpl::_unscheduleUpdate() { +void AudioEngineImpl::_unscheduleUpdate() +{ if (_scheduled) { _scheduled = false; @@ -794,7 +857,7 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) } } -void AudioEngineImpl::uncache(const std::string &filePath) +void AudioEngineImpl::uncache(std::string_view filePath) { _audioCaches.erase(filePath); } diff --git a/cocos/base/CCAutoreleasePool.cpp b/cocos/base/CCAutoreleasePool.cpp index 9be2e9cdf0f6..3027fee8a0f8 100644 --- a/cocos/base/CCAutoreleasePool.cpp +++ b/cocos/base/CCAutoreleasePool.cpp @@ -38,7 +38,7 @@ AutoreleasePool::AutoreleasePool() PoolManager::getInstance()->push(this); } -AutoreleasePool::AutoreleasePool(const std::string& name) +AutoreleasePool::AutoreleasePool(std::string_view name) : _name(name) #if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0) , _isClearing(false) diff --git a/cocos/base/CCAutoreleasePool.h b/cocos/base/CCAutoreleasePool.h index fde07e39ded7..d2a8341adef2 100644 --- a/cocos/base/CCAutoreleasePool.h +++ b/cocos/base/CCAutoreleasePool.h @@ -58,7 +58,7 @@ class CC_DLL AutoreleasePool * * @param name The name of created autorelease pool. */ - AutoreleasePool(const std::string& name); + AutoreleasePool(std::string_view name); /** * @js NA diff --git a/cocos/base/CCConfiguration.cpp b/cocos/base/CCConfiguration.cpp index 0d623209a947..1979f0225c22 100644 --- a/cocos/base/CCConfiguration.cpp +++ b/cocos/base/CCConfiguration.cpp @@ -186,7 +186,7 @@ void Configuration::destroyInstance() CC_SAFE_RELEASE_NULL(s_sharedConfiguration); } -bool Configuration::checkForGLExtension(const std::string& searchName) const +bool Configuration::checkForGLExtension(std::string_view searchName) const { return _glExtensions.find(searchName) != std::string::npos; } @@ -315,7 +315,7 @@ Animate3DQuality Configuration::getAnimate3DQuality() const // // generic getters for properties // -const Value& Configuration::getValue(const std::string& key, const Value& defaultValue) const +const Value& Configuration::getValue(std::string_view key, const Value& defaultValue) const { auto iter = _valueDict.find(key); if (iter != _valueDict.cend()) @@ -324,15 +324,15 @@ const Value& Configuration::getValue(const std::string& key, const Value& defaul return defaultValue; } -void Configuration::setValue(const std::string& key, const Value& value) +void Configuration::setValue(std::string_view key, const Value& value) { - _valueDict[key] = value; + hlookup::set_item(_valueDict, key, value); // _valueDict[key] = value; } // // load file // -void Configuration::loadConfigFile(const std::string& filename) +void Configuration::loadConfigFile(std::string_view filename) { ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(filename); CCASSERT(!dict.empty(), "cannot create dictionary"); @@ -360,14 +360,14 @@ void Configuration::loadConfigFile(const std::string& filename) if (!validMetadata) { - CCLOG("Invalid config format for file: %s", filename.c_str()); + CCLOG("Invalid config format for file: %s", filename.data()); return; } auto dataIter = dict.find("data"); if (dataIter == dict.cend() || dataIter->second.getType() != Value::Type::MAP) { - CCLOG("Expected 'data' dict, but not found. Config file: %s", filename.c_str()); + CCLOG("Expected 'data' dict, but not found. Config file: %s", filename.data()); return; } diff --git a/cocos/base/CCConfiguration.h b/cocos/base/CCConfiguration.h index 976113588474..aefcefbede10 100644 --- a/cocos/base/CCConfiguration.h +++ b/cocos/base/CCConfiguration.h @@ -205,7 +205,7 @@ class CC_DLL Configuration : public Ref * @param searchName A given search name. * @return Is true if an OpenGL is supported. */ - bool checkForGLExtension(const std::string& searchName) const; + bool checkForGLExtension(std::string_view searchName) const; /** Initialize method. * @@ -219,14 +219,14 @@ class CC_DLL Configuration : public Ref * @param defaultValue if not find the value, return the defaultValue. * @return */ - const Value& getValue(const std::string& key, const Value& defaultValue = Value::Null) const; + const Value& getValue(std::string_view key, const Value& defaultValue = Value::Null) const; /** Sets a new key/value pair in the configuration dictionary. * * @param key A given key. * @param value A given value. */ - void setValue(const std::string& key, const Value& value); + void setValue(std::string_view key, const Value& value); /** Returns the Configuration info. * @@ -243,7 +243,7 @@ class CC_DLL Configuration : public Ref * * @param filename Config file name. */ - void loadConfigFile(const std::string& filename); + void loadConfigFile(std::string_view filename); static const char* CONFIG_FILE_LOADED; diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index c0953cb9e517..e481a756036c 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -204,9 +204,10 @@ std::string& Console::Utility::trim(std::string& s) return Console::Utility::ltrim(Console::Utility::rtrim(s)); } -std::vector& Console::Utility::split(const std::string& s, char delim, std::vector& elems) +std::vector& Console::Utility::split(std::string_view s, char delim, std::vector& elems) { - std::stringstream ss(s); + std::stringstream ss; + ss << s; std::string item; while (std::getline(ss, item, delim)) { @@ -215,7 +216,7 @@ std::vector& Console::Utility::split(const std::string& s, char del return elems; } -std::vector Console::Utility::split(const std::string& s, char delim) +std::vector Console::Utility::split(std::string_view s, char delim) { std::vector elems; Console::Utility::split(s, delim, elems); @@ -223,13 +224,14 @@ std::vector Console::Utility::split(const std::string& s, char deli } // isFloat taken from http://stackoverflow.com/questions/447206/c-isfloat-function -bool Console::Utility::isFloat(const std::string& myString) +bool Console::Utility::isFloat(std::string_view myString) { - std::istringstream iss(myString); + std::stringstream ss; + ss << myString; float f; - iss >> std::noskipws >> f; // noskipws considers leading whitespace invalid + ss >> std::noskipws >> f; // noskipws considers leading whitespace invalid // Check the entire string was consumed and if either failbit or badbit is set - return iss.eof() && !iss.fail(); + return ss.eof() && !ss.fail(); } ssize_t Console::Utility::sendToConsole(int fd, const void* buffer, size_t length, int flags) @@ -275,12 +277,12 @@ void Console::Utility::sendPrompt(int fd) send(fd, prompt, strlen(prompt), 0); } -void Console::Utility::setPrompt(const std::string& prompt) +void Console::Utility::setPrompt(std::string_view prompt) { _prompt = prompt; } -const std::string& Console::Utility::getPrompt() +std::string_view Console::Utility::getPrompt() { return _prompt; } @@ -291,11 +293,11 @@ const std::string& Console::Utility::getPrompt() Console::Command::Command() : _callback(nullptr) {} -Console::Command::Command(const std::string& name, const std::string& help) +Console::Command::Command(std::string_view name, std::string_view help) : _name(name), _help(help), _callback(nullptr) {} -Console::Command::Command(const std::string& name, const std::string& help, const Callback& callback) +Console::Command::Command(std::string_view name, std::string_view help, const Callback& callback) : _name(name), _help(help), _callback(callback) {} @@ -378,7 +380,7 @@ void Console::Command::addSubCommand(const Command& subCmd) _subCommands[subCmd._name] = cmd; } -const Console::Command* Console::Command::getSubCommand(const std::string& subCmdName) const +const Console::Command* Console::Command::getSubCommand(std::string_view subCmdName) const { auto it = _subCommands.find(subCmdName); if (it != _subCommands.end()) @@ -389,7 +391,7 @@ const Console::Command* Console::Command::getSubCommand(const std::string& subCm return nullptr; } -void Console::Command::delSubCommand(const std::string& subCmdName) +void Console::Command::delSubCommand(std::string_view subCmdName) { auto iter = _subCommands.find(subCmdName); if (iter != _subCommands.end()) @@ -399,7 +401,7 @@ void Console::Command::delSubCommand(const std::string& subCmdName) } } -void Console::Command::commandHelp(int fd, const std::string& /*args*/) +void Console::Command::commandHelp(int fd, std::string_view /*args*/) { if (!_help.empty()) { @@ -412,7 +414,7 @@ void Console::Command::commandHelp(int fd, const std::string& /*args*/) } } -void Console::Command::commandGeneric(int fd, const std::string& args) +void Console::Command::commandGeneric(int fd, std::string_view args) { // The first argument (including the empty) std::string key(args); @@ -621,10 +623,10 @@ void Console::addCommand(const Command& cmd) delete iter->second; _commands.erase(iter); } - _commands[cmd.getName()] = newCommand; + _commands.emplace(cmd.getName(), newCommand); // _commands[cmd.getName()] = newCommand; } -void Console::addSubCommand(const std::string& cmdName, const Command& subCmd) +void Console::addSubCommand(std::string_view cmdName, const Command& subCmd) { auto it = _commands.find(cmdName); if (it != _commands.end()) @@ -639,7 +641,7 @@ void Console::addSubCommand(Command& cmd, const Command& subCmd) cmd.addSubCommand(subCmd); } -const Console::Command* Console::getCommand(const std::string& cmdName) +const Console::Command* Console::getCommand(std::string_view cmdName) { auto it = _commands.find(cmdName); if (it != _commands.end()) @@ -650,7 +652,7 @@ const Console::Command* Console::getCommand(const std::string& cmdName) return nullptr; } -const Console::Command* Console::getSubCommand(const std::string& cmdName, const std::string& subCmdName) +const Console::Command* Console::getSubCommand(std::string_view cmdName, std::string_view subCmdName) { auto it = _commands.find(cmdName); if (it != _commands.end()) @@ -661,12 +663,12 @@ const Console::Command* Console::getSubCommand(const std::string& cmdName, const return nullptr; } -const Console::Command* Console::getSubCommand(const Command& cmd, const std::string& subCmdName) +const Console::Command* Console::getSubCommand(const Command& cmd, std::string_view subCmdName) { return cmd.getSubCommand(subCmdName); } -void Console::delCommand(const std::string& cmdName) +void Console::delCommand(std::string_view cmdName) { auto it = _commands.find(cmdName); if (it != _commands.end()) @@ -676,7 +678,7 @@ void Console::delCommand(const std::string& cmdName) } } -void Console::delSubCommand(const std::string& cmdName, const std::string& subCmdName) +void Console::delSubCommand(std::string_view cmdName, std::string_view subCmdName) { auto it = _commands.find(cmdName); if (it != _commands.end()) @@ -686,7 +688,7 @@ void Console::delSubCommand(const std::string& cmdName, const std::string& subCm } } -void Console::delSubCommand(Command& cmd, const std::string& subCmdName) +void Console::delSubCommand(Command& cmd, std::string_view subCmdName) { cmd.delSubCommand(subCmdName); } @@ -701,7 +703,7 @@ void Console::log(const char* buf) } } -void Console::setBindAddress(const std::string& address) +void Console::setBindAddress(std::string_view address) { _bindAddress = address; } @@ -973,7 +975,7 @@ bool Console::parseCommand(socket_native_type fd) return true; } -void Console::performCommand(socket_native_type fd, const std::string& command) +void Console::performCommand(socket_native_type fd, std::string_view command) { std::vector args = Console::Utility::split(command, ' '); if (args.empty()) @@ -998,7 +1000,7 @@ void Console::performCommand(socket_native_type fd, const std::string& command) } else { - throw std::runtime_error("Unknown command " + command + ". Type 'help' for options\n"); + throw std::runtime_error(std::string{"Unknown command "}.append(command).append(". Type 'help' for options\n")); } } @@ -1162,7 +1164,7 @@ void Console::createCommandVersion() // commands // -void Console::commandAllocator(socket_native_type fd, const std::string& /*args*/) +void Console::commandAllocator(socket_native_type fd, std::string_view /*args*/) { #if CC_ENABLE_ALLOCATOR_DIAGNOSTICS auto info = allocator::AllocatorDiagnostics::instance()->diagnostics(); @@ -1173,7 +1175,7 @@ void Console::commandAllocator(socket_native_type fd, const std::string& /*args* #endif } -void Console::commandConfig(socket_native_type fd, const std::string& /*args*/) +void Console::commandConfig(socket_native_type fd, std::string_view /*args*/) { Scheduler* sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread([=]() { @@ -1182,49 +1184,49 @@ void Console::commandConfig(socket_native_type fd, const std::string& /*args*/) }); } -void Console::commandDebugMsg(socket_native_type fd, const std::string& /*args*/) +void Console::commandDebugMsg(socket_native_type fd, std::string_view /*args*/) { Console::Utility::mydprintf(fd, "Debug message is: %s\n", _sendDebugStrings ? "on" : "off"); } -void Console::commandDebugMsgSubCommandOnOff(socket_native_type /*fd*/, const std::string& args) +void Console::commandDebugMsgSubCommandOnOff(socket_native_type /*fd*/, std::string_view args) { _sendDebugStrings = (args.compare("on") == 0); } -void Console::commandDirectorSubCommandPause(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandDirectorSubCommandPause(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); Scheduler* sched = director->getScheduler(); sched->performFunctionInCocosThread([]() { Director::getInstance()->pause(); }); } -void Console::commandDirectorSubCommandResume(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandDirectorSubCommandResume(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); director->resume(); } -void Console::commandDirectorSubCommandStop(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandDirectorSubCommandStop(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); Scheduler* sched = director->getScheduler(); sched->performFunctionInCocosThread([]() { Director::getInstance()->stopAnimation(); }); } -void Console::commandDirectorSubCommandStart(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandDirectorSubCommandStart(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); director->startAnimation(); } -void Console::commandDirectorSubCommandEnd(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandDirectorSubCommandEnd(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); director->end(); } -void Console::commandExit(socket_native_type fd, const std::string& /*args*/) +void Console::commandExit(socket_native_type fd, std::string_view /*args*/) { FD_CLR(fd, &_read_set); _fds.erase(std::remove(_fds.begin(), _fds.end(), fd), _fds.end()); @@ -1235,23 +1237,23 @@ void Console::commandExit(socket_native_type fd, const std::string& /*args*/) #endif } -void Console::commandFileUtils(socket_native_type fd, const std::string& /*args*/) +void Console::commandFileUtils(socket_native_type fd, std::string_view /*args*/) { Scheduler* sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread(std::bind(&Console::printFileUtils, this, fd)); } -void Console::commandFileUtilsSubCommandFlush(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandFileUtilsSubCommandFlush(socket_native_type /*fd*/, std::string_view /*args*/) { FileUtils::getInstance()->purgeCachedEntries(); } -void Console::commandFps(socket_native_type fd, const std::string& /*args*/) +void Console::commandFps(socket_native_type fd, std::string_view /*args*/) { Console::Utility::mydprintf(fd, "FPS is: %s\n", Director::getInstance()->isDisplayStats() ? "on" : "off"); } -void Console::commandFpsSubCommandOnOff(socket_native_type /*fd*/, const std::string& args) +void Console::commandFpsSubCommandOnOff(socket_native_type /*fd*/, std::string_view args) { bool state = (args.compare("on") == 0); Director* dir = Director::getInstance(); @@ -1259,12 +1261,12 @@ void Console::commandFpsSubCommandOnOff(socket_native_type /*fd*/, const std::st sched->performFunctionInCocosThread(std::bind(&Director::setDisplayStats, dir, state)); } -void Console::commandHelp(socket_native_type fd, const std::string& /*args*/) +void Console::commandHelp(socket_native_type fd, std::string_view /*args*/) { sendHelp(fd, _commands, "\nAvailable commands:\n"); } -void Console::commandProjection(socket_native_type fd, const std::string& /*args*/) +void Console::commandProjection(socket_native_type fd, std::string_view /*args*/) { auto director = Director::getInstance(); char buf[20]; @@ -1288,25 +1290,26 @@ void Console::commandProjection(socket_native_type fd, const std::string& /*args Console::Utility::mydprintf(fd, "Current projection: %s\n", buf); } -void Console::commandProjectionSubCommand2d(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandProjectionSubCommand2d(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); Scheduler* sched = director->getScheduler(); sched->performFunctionInCocosThread([=]() { director->setProjection(Director::Projection::_2D); }); } -void Console::commandProjectionSubCommand3d(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandProjectionSubCommand3d(socket_native_type /*fd*/, std::string_view /*args*/) { auto director = Director::getInstance(); Scheduler* sched = director->getScheduler(); sched->performFunctionInCocosThread([=]() { director->setProjection(Director::Projection::_3D); }); } -void Console::commandResolution(socket_native_type /*fd*/, const std::string& args) +void Console::commandResolution(socket_native_type /*fd*/, std::string_view args) { int policy; float width, height; - std::istringstream stream(args); + std::stringstream stream; + stream << args; stream >> width >> height >> policy; Scheduler* sched = Director::getInstance()->getScheduler(); @@ -1316,7 +1319,7 @@ void Console::commandResolution(socket_native_type /*fd*/, const std::string& ar }); } -void Console::commandResolutionSubCommandEmpty(socket_native_type fd, const std::string& /*args*/) +void Console::commandResolutionSubCommandEmpty(socket_native_type fd, std::string_view /*args*/) { auto director = Director::getInstance(); Vec2 points = director->getWinSize(); @@ -1340,13 +1343,13 @@ void Console::commandResolutionSubCommandEmpty(socket_native_type fd, const std: (int)visibleRect.origin.y, (int)visibleRect.size.width, (int)visibleRect.size.height); } -void Console::commandSceneGraph(socket_native_type fd, const std::string& /*args*/) +void Console::commandSceneGraph(socket_native_type fd, std::string_view /*args*/) { Scheduler* sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread(std::bind(&Console::printSceneGraphBoot, this, fd)); } -void Console::commandTextures(socket_native_type fd, const std::string& /*args*/) +void Console::commandTextures(socket_native_type fd, std::string_view /*args*/) { Scheduler* sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread([=]() { @@ -1356,13 +1359,13 @@ void Console::commandTextures(socket_native_type fd, const std::string& /*args*/ }); } -void Console::commandTexturesSubCommandFlush(socket_native_type /*fd*/, const std::string& /*args*/) +void Console::commandTexturesSubCommandFlush(socket_native_type /*fd*/, std::string_view /*args*/) { Scheduler* sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread([]() { Director::getInstance()->getTextureCache()->removeAllTextures(); }); } -void Console::commandTouchSubCommandTap(socket_native_type fd, const std::string& args) +void Console::commandTouchSubCommandTap(socket_native_type fd, std::string_view args) { auto argv = Console::Utility::split(args, ' '); @@ -1387,7 +1390,7 @@ void Console::commandTouchSubCommandTap(socket_native_type fd, const std::string } } -void Console::commandTouchSubCommandSwipe(socket_native_type fd, const std::string& args) +void Console::commandTouchSubCommandSwipe(socket_native_type fd, std::string_view args) { auto argv = Console::Utility::split(args, ' '); @@ -1558,7 +1561,7 @@ void Console::commandUpload(socket_native_type fd) } } -void Console::commandVersion(socket_native_type fd, const std::string& /*args*/) +void Console::commandVersion(socket_native_type fd, std::string_view /*args*/) { Console::Utility::mydprintf(fd, "%s\n", adxeVersion()); } @@ -1619,7 +1622,7 @@ void Console::printFileUtils(socket_native_type fd) } void Console::sendHelp(socket_native_type fd, - const std::unordered_map& commands, + const hlookup::string_map& commands, const char* msg) { Console::Utility::sendToConsole(fd, msg, strlen(msg)); @@ -1629,14 +1632,14 @@ void Console::sendHelp(socket_native_type fd, if (command->getHelp().empty()) continue; - Console::Utility::mydprintf(fd, "\t%s", command->getName().c_str()); - ssize_t tabs = strlen(command->getName().c_str()) / 8; + Console::Utility::mydprintf(fd, "\t%s", command->getName().data()); + ssize_t tabs = strlen(command->getName().data()) / 8; tabs = 3 - tabs; for (int j = 0; j < tabs; j++) { Console::Utility::mydprintf(fd, "\t"); } - Console::Utility::mydprintf(fd, "%s\n", command->getHelp().c_str()); + Console::Utility::mydprintf(fd, "%s\n", command->getHelp().data()); } } diff --git a/cocos/base/CCConsole.h b/cocos/base/CCConsole.h index 20f5aa54f446..cfe23de808a7 100644 --- a/cocos/base/CCConsole.h +++ b/cocos/base/CCConsole.h @@ -82,11 +82,11 @@ class CC_DLL Console : public Ref static std::string& trim(std::string& s); // split - static std::vector& split(const std::string& s, char delim, std::vector& elems); - static std::vector split(const std::string& s, char delim); + static std::vector& split(std::string_view s, char delim, std::vector& elems); + static std::vector split(std::string_view s, char delim); /** Checks myString is a floating-point type. */ - static bool isFloat(const std::string& myString); + static bool isFloat(std::string_view myString); /** send a message to console */ static ssize_t sendToConsole(int fd, const void* buffer, size_t length, int flags = 0); @@ -98,10 +98,10 @@ class CC_DLL Console : public Ref static void sendPrompt(int fd); /** set a new string for the prompt. */ - static void setPrompt(const std::string& prompt); + static void setPrompt(std::string_view prompt); /** get the prompt string. */ - static const std::string& getPrompt(); + static std::string_view getPrompt(); private: static std::string _prompt; /*!< prompt */ @@ -111,11 +111,11 @@ class CC_DLL Console : public Ref class CC_DLL Command { public: - using Callback = std::function; + using Callback = std::function; /** Constructor */ Command(); - Command(const std::string& name, const std::string& help); - Command(const std::string& name, const std::string& help, const Callback& callback); + Command(std::string_view name, std::string_view help); + Command(std::string_view name, std::string_view help, const Callback& callback); /** Copy constructor */ Command(const Command& o); @@ -139,29 +139,29 @@ class CC_DLL Console : public Ref void addSubCommand(const Command& subCmd); /** get sub command */ - const Command* getSubCommand(const std::string& subCmdName) const; + const Command* getSubCommand(std::string_view subCmdName) const; /** delete sub command */ - void delSubCommand(const std::string& subCmdName); + void delSubCommand(std::string_view subCmdName); /** help command handler */ - void commandHelp(int fd, const std::string& args); + void commandHelp(int fd, std::string_view args); /** generic command handler */ - void commandGeneric(int fd, const std::string& args); + void commandGeneric(int fd, std::string_view args); /** Gets the name of the current command */ - const std::string& getName() const { return _name; } + std::string_view getName() const { return _name; } /** Gets the help information of the current command */ - const std::string& getHelp() const { return _help; } + std::string_view getHelp() const { return _help; } private: std::string _name; std::string _help; Callback _callback; - std::unordered_map _subCommands; + hlookup::string_map _subCommands; }; /** Constructor */ @@ -181,18 +181,18 @@ class CC_DLL Console : public Ref /** add custom command */ void addCommand(const Command& cmd); - void addSubCommand(const std::string& cmdName, const Command& subCmd); + void addSubCommand(std::string_view cmdName, const Command& subCmd); void addSubCommand(Command& cmd, const Command& subCmd); /** get custom command */ - const Command* getCommand(const std::string& cmdName); - const Command* getSubCommand(const std::string& cmdName, const std::string& subCmdName); - const Command* getSubCommand(const Command& cmd, const std::string& subCmdName); + const Command* getCommand(std::string_view cmdName); + const Command* getSubCommand(std::string_view cmdName, std::string_view subCmdName); + const Command* getSubCommand(const Command& cmd, std::string_view subCmdName); /** delete custom command */ - void delCommand(const std::string& cmdName); - void delSubCommand(const std::string& cmdName, const std::string& subCmdName); - void delSubCommand(Command& cmd, const std::string& subCmdName); + void delCommand(std::string_view cmdName); + void delSubCommand(std::string_view cmdName, std::string_view subCmdName); + void delSubCommand(Command& cmd, std::string_view subCmdName); /** log something in the console */ void log(const char* buf); @@ -202,7 +202,7 @@ class CC_DLL Console : public Ref * * @address : 127.0.0.1 */ - void setBindAddress(const std::string& address); + void setBindAddress(std::string_view address); /** Checks whether the server for console is bound with ipv6 address */ bool isIpv6Server() const; @@ -218,7 +218,7 @@ class CC_DLL Console : public Ref ssize_t readline(socket_native_type fd, char* buf, size_t maxlen); ssize_t readBytes(socket_native_type fd, char* buffer, size_t maxlen, bool* more); bool parseCommand(socket_native_type fd); - void performCommand(socket_native_type fd, const std::string& command); + void performCommand(socket_native_type fd, std::string_view command); void addClient(); @@ -240,33 +240,33 @@ class CC_DLL Console : public Ref void createCommandVersion(); // Add commands here - void commandAllocator(socket_native_type fd, const std::string& args); - void commandConfig(socket_native_type fd, const std::string& args); - void commandDebugMsg(socket_native_type fd, const std::string& args); - void commandDebugMsgSubCommandOnOff(socket_native_type fd, const std::string& args); - void commandDirectorSubCommandPause(socket_native_type fd, const std::string& args); - void commandDirectorSubCommandResume(socket_native_type fd, const std::string& args); - void commandDirectorSubCommandStop(socket_native_type fd, const std::string& args); - void commandDirectorSubCommandStart(socket_native_type fd, const std::string& args); - void commandDirectorSubCommandEnd(socket_native_type fd, const std::string& args); - void commandExit(socket_native_type fd, const std::string& args); - void commandFileUtils(socket_native_type fd, const std::string& args); - void commandFileUtilsSubCommandFlush(socket_native_type fd, const std::string& args); - void commandFps(socket_native_type fd, const std::string& args); - void commandFpsSubCommandOnOff(socket_native_type fd, const std::string& args); - void commandHelp(socket_native_type fd, const std::string& args); - void commandProjection(socket_native_type fd, const std::string& args); - void commandProjectionSubCommand2d(socket_native_type fd, const std::string& args); - void commandProjectionSubCommand3d(socket_native_type fd, const std::string& args); - void commandResolution(socket_native_type fd, const std::string& args); - void commandResolutionSubCommandEmpty(socket_native_type fd, const std::string& args); - void commandSceneGraph(socket_native_type fd, const std::string& args); - void commandTextures(socket_native_type fd, const std::string& args); - void commandTexturesSubCommandFlush(socket_native_type fd, const std::string& args); - void commandTouchSubCommandTap(socket_native_type fd, const std::string& args); - void commandTouchSubCommandSwipe(socket_native_type fd, const std::string& args); + void commandAllocator(socket_native_type fd, std::string_view args); + void commandConfig(socket_native_type fd, std::string_view args); + void commandDebugMsg(socket_native_type fd, std::string_view args); + void commandDebugMsgSubCommandOnOff(socket_native_type fd, std::string_view args); + void commandDirectorSubCommandPause(socket_native_type fd, std::string_view args); + void commandDirectorSubCommandResume(socket_native_type fd, std::string_view args); + void commandDirectorSubCommandStop(socket_native_type fd, std::string_view args); + void commandDirectorSubCommandStart(socket_native_type fd, std::string_view args); + void commandDirectorSubCommandEnd(socket_native_type fd, std::string_view args); + void commandExit(socket_native_type fd, std::string_view args); + void commandFileUtils(socket_native_type fd, std::string_view args); + void commandFileUtilsSubCommandFlush(socket_native_type fd, std::string_view args); + void commandFps(socket_native_type fd, std::string_view args); + void commandFpsSubCommandOnOff(socket_native_type fd, std::string_view args); + void commandHelp(socket_native_type fd, std::string_view args); + void commandProjection(socket_native_type fd, std::string_view args); + void commandProjectionSubCommand2d(socket_native_type fd, std::string_view args); + void commandProjectionSubCommand3d(socket_native_type fd, std::string_view args); + void commandResolution(socket_native_type fd, std::string_view args); + void commandResolutionSubCommandEmpty(socket_native_type fd, std::string_view args); + void commandSceneGraph(socket_native_type fd, std::string_view args); + void commandTextures(socket_native_type fd, std::string_view args); + void commandTexturesSubCommandFlush(socket_native_type fd, std::string_view args); + void commandTouchSubCommandTap(socket_native_type fd, std::string_view args); + void commandTouchSubCommandSwipe(socket_native_type fd, std::string_view args); void commandUpload(socket_native_type fd); - void commandVersion(socket_native_type fd, const std::string& args); + void commandVersion(socket_native_type fd, std::string_view args); // file descriptor: socket, console, etc. socket_native_type _listenfd; socket_native_type _maxfd; @@ -279,7 +279,7 @@ class CC_DLL Console : public Ref bool _endThread; bool _isIpv6Server; - std::unordered_map _commands; + hlookup::string_map _commands; // strings generated by cocos2d sent to the remote console bool _sendDebugStrings; @@ -300,7 +300,7 @@ class CC_DLL Console : public Ref /** send help message to console */ static void sendHelp(socket_native_type fd, - const std::unordered_map& commands, + const hlookup::string_map& commands, const char* msg); }; diff --git a/cocos/base/CCController-android.cpp b/cocos/base/CCController-android.cpp index 564735b5c987..ba8da87ab5a9 100644 --- a/cocos/base/CCController-android.cpp +++ b/cocos/base/CCController-android.cpp @@ -40,7 +40,7 @@ class ControllerImpl public: ControllerImpl(Controller* controller) : _controller(controller) {} - static std::vector::iterator findController(const std::string& deviceName, int deviceId) + static std::vector::iterator findController(std::string_view deviceName, int deviceId) { auto iter = std::find_if( Controller::s_allController.begin(), Controller::s_allController.end(), [&](Controller* controller) { @@ -50,7 +50,7 @@ class ControllerImpl return iter; } - static void onConnected(const std::string& deviceName, int deviceId) + static void onConnected(std::string_view deviceName, int deviceId) { // Check whether the controller is already connected. CCLOG("onConnected %s,%d", deviceName.c_str(), deviceId); @@ -68,7 +68,7 @@ class ControllerImpl controller->onConnected(); } - static void onDisconnected(const std::string& deviceName, int deviceId) + static void onDisconnected(std::string_view deviceName, int deviceId) { CCLOG("onDisconnected %s,%d", deviceName.c_str(), deviceId); @@ -83,7 +83,7 @@ class ControllerImpl Controller::s_allController.erase(iter); } - static void onButtonEvent(const std::string& deviceName, + static void onButtonEvent(std::string_view deviceName, int deviceId, int keyCode, bool isPressed, @@ -101,7 +101,7 @@ class ControllerImpl (*iter)->onButtonEvent(keyCode, isPressed, value, isAnalog); } - static void onAxisEvent(const std::string& deviceName, int deviceId, int axisCode, float value, bool isAnalog) + static void onAxisEvent(std::string_view deviceName, int deviceId, int axisCode, float value, bool isAnalog) { auto iter = findController(deviceName, deviceId); if (iter == Controller::s_allController.end()) diff --git a/cocos/base/CCController-linux-win32.cpp b/cocos/base/CCController-linux-win32.cpp index cca3d2ee2cf0..f99e23b64188 100644 --- a/cocos/base/CCController-linux-win32.cpp +++ b/cocos/base/CCController-linux-win32.cpp @@ -4203,7 +4203,7 @@ class CC_DLL ControllerImpl return iter; } - static void onConnected(const std::string& deviceName, int deviceId) + static void onConnected(std::string_view deviceName, int deviceId) { // Check whether the controller is already registered auto iter = findController(deviceId); @@ -4222,7 +4222,7 @@ class CC_DLL ControllerImpl if (deviceName.compare(it.first) == 0) { // Found controller profile. Attach it to the controller: - CCLOG("ControllerImpl: Found input profile for controller: %s", deviceName.c_str()); + CCLOG("ControllerImpl: Found input profile for controller: %s", deviceName.data()); controller->_buttonInputMap = it.second.first; controller->_axisInputMap = it.second.second; @@ -4241,7 +4241,7 @@ class CC_DLL ControllerImpl CCLOG( "ControllerImpl: Could not find a button input mapping for controller \"%s\", and keyCode " "\"%d\". This keyCode will not match any from Controller::Key", - controller->getDeviceName().c_str(), i); + controller->getDeviceName().data(), i); } } @@ -4255,7 +4255,7 @@ class CC_DLL ControllerImpl CCLOG( "ControllerImpl: Could not find an axis input mapping for controller \"%s\", and keyCode " "\"%d\". This keyCode will not match any from Controller::Key", - controller->getDeviceName().c_str(), i); + controller->getDeviceName().data(), i); } } # endif @@ -4268,12 +4268,12 @@ class CC_DLL ControllerImpl # ifdef COCOS2D_DEBUG if (controller->_buttonInputMap.empty()) { - CCLOG("ControllerImpl: Could not find a button input map for controller: %s", deviceName.c_str()); + CCLOG("ControllerImpl: Could not find a button input map for controller: %s", deviceName.data()); } if (controller->_axisInputMap.empty()) { - CCLOG("ControllerImpl: Could not find an axis input map for controller: %s", deviceName.c_str()); + CCLOG("ControllerImpl: Could not find an axis input map for controller: %s", deviceName.data()); } # endif diff --git a/cocos/base/CCController.h b/cocos/base/CCController.h index 646195def434..f6c3bc70f4f3 100644 --- a/cocos/base/CCController.h +++ b/cocos/base/CCController.h @@ -153,7 +153,7 @@ class CC_DLL Controller /** * Gets the name of this Controller object. */ - const std::string& getDeviceName() const { return _deviceName; } + std::string_view getDeviceName() const { return _deviceName; } /** * Gets the Controller id. diff --git a/cocos/base/CCEventCustom.cpp b/cocos/base/CCEventCustom.cpp index 025252f7a79a..e0d2671854b6 100644 --- a/cocos/base/CCEventCustom.cpp +++ b/cocos/base/CCEventCustom.cpp @@ -28,7 +28,7 @@ NS_CC_BEGIN -EventCustom::EventCustom(const std::string& eventName) : Event(Type::CUSTOM), _userData(nullptr), _eventName(eventName) +EventCustom::EventCustom(std::string_view eventName) : Event(Type::CUSTOM), _userData(nullptr), _eventName(eventName) {} NS_CC_END diff --git a/cocos/base/CCEventCustom.h b/cocos/base/CCEventCustom.h index ae14031001df..e7a03091c752 100644 --- a/cocos/base/CCEventCustom.h +++ b/cocos/base/CCEventCustom.h @@ -47,7 +47,7 @@ class CC_DLL EventCustom : public Event * @param eventName A given name of the custom event. * @js ctor */ - EventCustom(const std::string& eventName); + EventCustom(std::string_view eventName); /** Sets user data. * @@ -65,7 +65,7 @@ class CC_DLL EventCustom : public Event * * @return The name of the event. */ - const std::string& getEventName() const { return _eventName; } + std::string_view getEventName() const { return _eventName; } protected: void* _userData; ///< User data diff --git a/cocos/base/CCEventDispatcher.cpp b/cocos/base/CCEventDispatcher.cpp index 7a18512e6612..1c251a4f9600 100644 --- a/cocos/base/CCEventDispatcher.cpp +++ b/cocos/base/CCEventDispatcher.cpp @@ -452,7 +452,7 @@ void EventDispatcher::addEventListener(EventListener* listener) void EventDispatcher::forceAddEventListener(EventListener* listener) { EventListenerVector* listeners = nullptr; - EventListener::ListenerID listenerID = listener->getListenerID(); + auto listenerID = listener->getListenerID(); auto itr = _listenerMap.find(listenerID); if (itr == _listenerMap.end()) { @@ -579,7 +579,7 @@ void EventDispatcher::addEventListenerWithFixedPriority(EventListener* listener, addEventListener(listener); } -EventListenerCustom* EventDispatcher::addCustomEventListener(const std::string& eventName, +EventListenerCustom* EventDispatcher::addCustomEventListener(std::string_view eventName, const std::function& callback) { EventListenerCustom* listener = EventListenerCustom::create(eventName, callback); @@ -931,14 +931,14 @@ void EventDispatcher::dispatchEvent(Event* event) updateListeners(event); } -void EventDispatcher::dispatchCustomEvent(const std::string& eventName, void* optionalUserData) +void EventDispatcher::dispatchCustomEvent(std::string_view eventName, void* optionalUserData) { EventCustom ev(eventName); ev.setUserData(optionalUserData); dispatchEvent(&ev); } -bool EventDispatcher::hasEventListener(const EventListener::ListenerID& listenerID) const +bool EventDispatcher::hasEventListener(std::string_view listenerID) const { return getListeners(listenerID) != nullptr; } @@ -1268,7 +1268,7 @@ void EventDispatcher::updateDirtyFlagForSceneGraph() } } -void EventDispatcher::sortEventListeners(const EventListener::ListenerID& listenerID) +void EventDispatcher::sortEventListeners(std::string_view listenerID) { DirtyFlag dirtyFlag = DirtyFlag::NONE; @@ -1303,7 +1303,7 @@ void EventDispatcher::sortEventListeners(const EventListener::ListenerID& listen } } -void EventDispatcher::sortEventListenersOfSceneGraphPriority(const EventListener::ListenerID& listenerID, +void EventDispatcher::sortEventListenersOfSceneGraphPriority(std::string_view listenerID, Node* rootNode) { auto listeners = getListeners(listenerID); @@ -1337,7 +1337,7 @@ void EventDispatcher::sortEventListenersOfSceneGraphPriority(const EventListener #endif } -void EventDispatcher::sortEventListenersOfFixedPriority(const EventListener::ListenerID& listenerID) +void EventDispatcher::sortEventListenersOfFixedPriority(std::string_view listenerID) { auto listeners = getListeners(listenerID); @@ -1374,7 +1374,7 @@ void EventDispatcher::sortEventListenersOfFixedPriority(const EventListener::Lis #endif } -EventDispatcher::EventListenerVector* EventDispatcher::getListeners(const EventListener::ListenerID& listenerID) const +EventDispatcher::EventListenerVector* EventDispatcher::getListeners(std::string_view listenerID) const { auto iter = _listenerMap.find(listenerID); if (iter != _listenerMap.end()) @@ -1385,7 +1385,7 @@ EventDispatcher::EventListenerVector* EventDispatcher::getListeners(const EventL return nullptr; } -void EventDispatcher::removeEventListenersForListenerID(const EventListener::ListenerID& listenerID) +void EventDispatcher::removeEventListenersForListenerID(std::string_view listenerID) { auto listenerItemIter = _listenerMap.find(listenerID); if (listenerItemIter != _listenerMap.end()) @@ -1479,7 +1479,7 @@ void EventDispatcher::removeEventListenersForType(EventListener::Type listenerTy } } -void EventDispatcher::removeCustomEventListeners(const std::string& customEventName) +void EventDispatcher::removeCustomEventListeners(std::string_view customEventName) { removeEventListenersForListenerID(customEventName); } @@ -1539,7 +1539,7 @@ void EventDispatcher::setDirtyForNode(Node* node) } } -void EventDispatcher::setDirty(const EventListener::ListenerID& listenerID, DirtyFlag flag) +void EventDispatcher::setDirty(std::string_view listenerID, DirtyFlag flag) { auto iter = _priorityDirtyFlagMap.find(listenerID); if (iter == _priorityDirtyFlagMap.end()) diff --git a/cocos/base/CCEventDispatcher.h b/cocos/base/CCEventDispatcher.h index 2523f7ff2b96..9c01a79663a1 100644 --- a/cocos/base/CCEventDispatcher.h +++ b/cocos/base/CCEventDispatcher.h @@ -87,7 +87,7 @@ class CC_DLL EventDispatcher : public Ref * @param callback A given callback method that associated the event name. * @return the generated event. Needed in order to remove the event from the dispatcher */ - EventListenerCustom* addCustomEventListener(const std::string& eventName, + EventListenerCustom* addCustomEventListener(std::string_view eventName, const std::function& callback); ///////////////////////////////////////////// @@ -117,7 +117,7 @@ class CC_DLL EventDispatcher : public Ref * * @param customEventName A given event listener name which needs to be removed. */ - void removeCustomEventListeners(const std::string& customEventName); + void removeCustomEventListeners(std::string_view customEventName); /** Removes all listeners. */ @@ -177,7 +177,7 @@ class CC_DLL EventDispatcher : public Ref * @param eventName The name of the event which needs to be dispatched. * @param optionalUserData The optional user data, it's a void*, the default value is nullptr. */ - void dispatchCustomEvent(const std::string& eventName, void* optionalUserData = nullptr); + void dispatchCustomEvent(std::string_view eventName, void* optionalUserData = nullptr); /** Query whether the specified event listener id has been added. * @@ -185,7 +185,7 @@ class CC_DLL EventDispatcher : public Ref * * @return True if dispatching events is exist */ - bool hasEventListener(const EventListener::ListenerID& listenerID) const; + bool hasEventListener(std::string_view listenerID) const; ///////////////////////////////////////////// @@ -252,22 +252,22 @@ class CC_DLL EventDispatcher : public Ref void forceAddEventListener(EventListener* listener); /** Gets event the listener list for the event listener type. */ - EventListenerVector* getListeners(const EventListener::ListenerID& listenerID) const; + EventListenerVector* getListeners(std::string_view listenerID) const; /** Update dirty flag */ void updateDirtyFlagForSceneGraph(); /** Removes all listeners with the same event listener ID */ - void removeEventListenersForListenerID(const EventListener::ListenerID& listenerID); + void removeEventListenersForListenerID(std::string_view listenerID); /** Sort event listener */ - void sortEventListeners(const EventListener::ListenerID& listenerID); + void sortEventListeners(std::string_view listenerID); /** Sorts the listeners of specified type by scene graph priority */ - void sortEventListenersOfSceneGraphPriority(const EventListener::ListenerID& listenerID, Node* rootNode); + void sortEventListenersOfSceneGraphPriority(std::string_view listenerID, Node* rootNode); /** Sorts the listeners of specified type by fixed priority */ - void sortEventListenersOfFixedPriority(const EventListener::ListenerID& listenerID); + void sortEventListenersOfFixedPriority(std::string_view listenerID); /** Updates all listeners * 1) Removes all listener items that have been marked as 'removed' when dispatching event. @@ -311,7 +311,7 @@ class CC_DLL EventDispatcher : public Ref }; /** Sets the dirty flag for a specified listener ID */ - void setDirty(const EventListener::ListenerID& listenerID, DirtyFlag flag); + void setDirty(std::string_view listenerID, DirtyFlag flag); /** Walks though scene graph to get the draw order for each node, it's called before sorting event listener with * scene graph priority */ @@ -321,10 +321,10 @@ class CC_DLL EventDispatcher : public Ref void cleanToRemovedListeners(); /** Listeners map */ - std::unordered_map _listenerMap; + hlookup::string_map _listenerMap; /** The map of dirty flag */ - std::unordered_map _priorityDirtyFlagMap; + hlookup::string_map _priorityDirtyFlagMap; /** The map of node and event listeners */ std::unordered_map*> _nodeListenersMap; diff --git a/cocos/base/CCEventListener.cpp b/cocos/base/CCEventListener.cpp index 5da92081a718..d2e9e29c88ff 100644 --- a/cocos/base/CCEventListener.cpp +++ b/cocos/base/CCEventListener.cpp @@ -35,7 +35,7 @@ EventListener::~EventListener() CCLOGINFO("In the destructor of EventListener. %p", this); } -bool EventListener::init(Type t, const ListenerID& listenerID, const std::function& callback) +bool EventListener::init(Type t, std::string_view listenerID, const std::function& callback) { _onEvent = callback; _type = t; diff --git a/cocos/base/CCEventListener.h b/cocos/base/CCEventListener.h index 3f8a64631d57..6eb1f728edcf 100644 --- a/cocos/base/CCEventListener.h +++ b/cocos/base/CCEventListener.h @@ -79,7 +79,7 @@ class CC_DLL EventListener : public Ref * Initializes event with type and callback function * @js NA */ - bool init(Type t, const ListenerID& listenerID, const std::function& callback); + bool init(Type t, std::string_view listenerID, const std::function& callback); public: /** Destructor. @@ -143,7 +143,7 @@ class CC_DLL EventListener : public Ref /** Gets the listener ID of this listener * When event is being dispatched, listener ID is used as key for searching listeners according to event type. */ - const ListenerID& getListenerID() const { return _listenerID; } + std::string_view getListenerID() const { return _listenerID; } /** Sets the fixed priority for this listener * @note This method is only used for `fixed priority listeners`, it needs to access a non-zero value. diff --git a/cocos/base/CCEventListenerCustom.cpp b/cocos/base/CCEventListenerCustom.cpp index 6ccfe8071268..299d6724fcbf 100644 --- a/cocos/base/CCEventListenerCustom.cpp +++ b/cocos/base/CCEventListenerCustom.cpp @@ -30,7 +30,7 @@ NS_CC_BEGIN EventListenerCustom::EventListenerCustom() : _onCustomEvent(nullptr) {} -EventListenerCustom* EventListenerCustom::create(const std::string& eventName, +EventListenerCustom* EventListenerCustom::create(std::string_view eventName, const std::function& callback) { EventListenerCustom* ret = new EventListenerCustom(); @@ -45,7 +45,7 @@ EventListenerCustom* EventListenerCustom::create(const std::string& eventName, return ret; } -bool EventListenerCustom::init(const ListenerID& listenerId, const std::function& callback) +bool EventListenerCustom::init(std::string_view listenerId, const std::function& callback) { bool ret = false; diff --git a/cocos/base/CCEventListenerCustom.h b/cocos/base/CCEventListenerCustom.h index b9821624919a..ea68f2302e3c 100644 --- a/cocos/base/CCEventListenerCustom.h +++ b/cocos/base/CCEventListenerCustom.h @@ -66,7 +66,7 @@ class CC_DLL EventListenerCustom : public EventListener * @param callback The callback function when the specified event was emitted. * @return An autoreleased EventListenerCustom object. */ - static EventListenerCustom* create(const std::string& eventName, const std::function& callback); + static EventListenerCustom* create(std::string_view eventName, const std::function& callback); /// Overrides virtual bool checkAvailable() override; @@ -77,7 +77,7 @@ class CC_DLL EventListenerCustom : public EventListener EventListenerCustom(); /** Initializes event with type and callback function */ - bool init(const ListenerID& listenerId, const std::function& callback); + bool init(std::string_view listenerId, const std::function& callback); protected: std::function _onCustomEvent; diff --git a/cocos/base/CCIMEDelegate.h b/cocos/base/CCIMEDelegate.h index 9c9c63574c98..276c0d5d24f1 100644 --- a/cocos/base/CCIMEDelegate.h +++ b/cocos/base/CCIMEDelegate.h @@ -137,7 +137,7 @@ class CC_DLL IMEDelegate * @js NA * @lua NA */ - virtual const std::string& getContentText() { return STD_STRING_EMPTY; } + virtual std::string_view getContentText() { return STD_STRING_EMPTY; } ////////////////////////////////////////////////////////////////////////// // keyboard show/hide notification diff --git a/cocos/base/CCIMEDispatcher.cpp b/cocos/base/CCIMEDispatcher.cpp index ccd59f96dcf5..744446667823 100644 --- a/cocos/base/CCIMEDispatcher.cpp +++ b/cocos/base/CCIMEDispatcher.cpp @@ -247,7 +247,7 @@ void IMEDispatcher::dispatchControlKey(EventKeyboard::KeyCode keyCode) } while (0); } -const std::string& IMEDispatcher::getContentText() +std::string_view IMEDispatcher::getContentText() { if (_impl && _impl->_delegateWithIme) { diff --git a/cocos/base/CCIMEDispatcher.h b/cocos/base/CCIMEDispatcher.h index 5040b9d32431..4ab9b6f5b493 100644 --- a/cocos/base/CCIMEDispatcher.h +++ b/cocos/base/CCIMEDispatcher.h @@ -76,7 +76,7 @@ class CC_DLL IMEDispatcher * @brief Get the content text from IMEDelegate, retrieved previously from IME. * @lua NA */ - const std::string& getContentText(); + std::string_view getContentText(); ////////////////////////////////////////////////////////////////////////// // dispatch keyboard notification diff --git a/cocos/base/CCMap.h b/cocos/base/CCMap.h index 8bfd817dfab0..0fd8b66f9ff4 100644 --- a/cocos/base/CCMap.h +++ b/cocos/base/CCMap.h @@ -51,12 +51,12 @@ NS_CC_BEGIN * @js NA * @lua NA */ -template +template , typename E = std::equal_to> class Map { public: #if USE_STD_UNORDERED_MAP - typedef std::unordered_map RefMap; + typedef tsl::robin_map RefMap; #else typedef std::map RefMap; #endif @@ -86,14 +86,14 @@ class Map const_iterator cend() const { return _data.cend(); } /** Default constructor */ - Map() : _data() + Map() : _data() { static_assert(std::is_convertible::value, "Invalid Type for cocos2d::Map!"); CCLOGINFO("In the default constructor of Map!"); } /** Constructor with capacity. */ - explicit Map(ssize_t capacity) : _data() + explicit Map(ssize_t capacity) : _data() { static_assert(std::is_convertible::value, "Invalid Type for cocos2d::Map!"); CCLOGINFO("In the constructor with capacity of Map!"); @@ -101,7 +101,7 @@ class Map } /** Copy constructor. */ - Map(const Map& other) + Map(const Map& other) { static_assert(std::is_convertible::value, "Invalid Type for cocos2d::Map!"); CCLOGINFO("In the copy constructor of Map!"); @@ -110,7 +110,7 @@ class Map } /** Move constructor. */ - Map(Map&& other) + Map(Map&& other) { static_assert(std::is_convertible::value, "Invalid Type for cocos2d::Map!"); CCLOGINFO("In the move constructor of Map!"); @@ -121,7 +121,7 @@ class Map * Destructor. * It will release all objects in map. */ - ~Map() + ~Map() { CCLOGINFO("In the destructor of Map!"); clear(); @@ -223,7 +223,8 @@ class Map * Member type K is the keys for the elements in the container. defined in Map as an alias of its first * template parameter (Key). */ - const V at(const K& key) const + template + const V at(const K2& key) const { auto iter = _data.find(key); if (iter != _data.end()) @@ -231,7 +232,8 @@ class Map return nullptr; } - V at(const K& key) + template + V at(const K2& key) { auto iter = _data.find(key); if (iter != _data.end()) @@ -247,9 +249,17 @@ class Map * Member type 'K' is the type of the keys for the elements in the container, * defined in Map as an alias of its first template parameter (Key). */ - const_iterator find(const K& key) const { return _data.find(key); } + template + const_iterator find(const K2& key) const + { + return _data.find(key); + } - iterator find(const K& key) { return _data.find(key); } + template + iterator find(const K2& key) + { + return _data.find(key); + } /** * Inserts new elements in the map. @@ -259,7 +269,8 @@ class Map * @param key The key to be inserted. * @param object The object to be inserted. */ - void insert(const K& key, V object) + template + void insert(const K2& key, V object) { CCASSERT(object != nullptr, "Object is nullptr!"); object->retain(); @@ -287,7 +298,20 @@ class Map * Member type 'K' is the type of the keys for the elements in the container, * defined in Map as an alias of its first template parameter (Key). */ - size_t erase(const K& k) + //size_t erase(const K& k) + //{ + // auto iter = _data.find(k); + // if (iter != _data.end()) + // { + // iter->second->release(); + // _data.erase(iter); + // return 1; + // } + // return 0; + //} + + template + size_t erase(const _K2& k) { auto iter = _data.find(k); if (iter != _data.end()) @@ -304,7 +328,8 @@ class Map * * @param keys Keys of elements to be erased. */ - void erase(const std::vector& keys) + template + void erase(const std::vector<_K2>& keys) { for (const auto& key : keys) { @@ -369,7 +394,7 @@ class Map // } /** Copy assignment operator. */ - Map& operator=(const Map& other) + Map& operator=(const Map& other) { if (this != &other) { @@ -382,7 +407,7 @@ class Map } /** Move assignment operator. */ - Map& operator=(Map&& other) + Map& operator=(Map&& other) { if (this != &other) { @@ -406,6 +431,9 @@ class Map RefMap _data; }; +template +using StringMap = Map; + NS_CC_END // end group /// @} diff --git a/cocos/base/CCNS.cpp b/cocos/base/CCNS.cpp index 2ebd2ff5a699..17d4165860d3 100644 --- a/cocos/base/CCNS.cpp +++ b/cocos/base/CCNS.cpp @@ -38,7 +38,7 @@ NS_CC_BEGIN typedef std::vector strArray; // string toolkit -static inline void split(const std::string& src, const std::string& token, strArray& vect) +static inline void split(std::string_view src, std::string_view token, strArray& vect) { size_t nend = 0; size_t nbegin = 0; @@ -47,9 +47,9 @@ static inline void split(const std::string& src, const std::string& token, strAr { nend = src.find(token, nbegin); if (nend == std::string::npos) - vect.push_back(src.substr(nbegin, src.length() - nbegin)); + vect.push_back(std::string{src.substr(nbegin, src.length() - nbegin)}); else - vect.push_back(src.substr(nbegin, nend - nbegin)); + vect.push_back(std::string{src.substr(nbegin, nend - nbegin)}); nbegin = nend + tokenSize; } } @@ -58,7 +58,7 @@ static inline void split(const std::string& src, const std::string& token, strAr // if the form is right,the string will be split into the parameter strs; // or the parameter strs will be empty. // if the form is right return true,else return false. -static bool splitWithForm(const std::string& content, strArray& strs) +static bool splitWithForm(std::string_view content, strArray& strs) { bool bRet = false; @@ -74,7 +74,7 @@ static bool splitWithForm(const std::string& content, strArray& strs) // '}' is before '{' CC_BREAK_IF(nPosLeft > nPosRight); - const std::string pointStr = content.substr(nPosLeft + 1, nPosRight - nPosLeft - 1); + auto pointStr = content.substr(nPosLeft + 1, nPosRight - nPosLeft - 1); // nothing between '{' and '}' CC_BREAK_IF(pointStr.empty()); @@ -98,14 +98,14 @@ static bool splitWithForm(const std::string& content, strArray& strs) // implement the functions -Rect RectFromString(const std::string& str) +Rect RectFromString(std::string_view str) { Rect result = Rect::ZERO; do { CC_BREAK_IF(str.empty()); - std::string content = str; + auto content = str; // find the first '{' and the third '}' size_t nPosLeft = content.find('{'); @@ -127,8 +127,8 @@ Rect RectFromString(const std::string& str) CC_BREAK_IF(nPointEnd == std::string::npos); // get the point string and size string - const std::string pointStr = content.substr(0, nPointEnd); - const std::string sizeStr = content.substr(nPointEnd + 1, content.length() - nPointEnd); + auto pointStr = content.substr(0, nPointEnd); + auto sizeStr = content.substr(nPointEnd + 1, content.length() - nPointEnd); // split the string with ',' strArray pointInfo; @@ -147,7 +147,7 @@ Rect RectFromString(const std::string& str) return result; } -Vec2 PointFromString(const std::string& str) +Vec2 PointFromString(std::string_view str) { Vec2 ret; @@ -165,7 +165,7 @@ Vec2 PointFromString(const std::string& str) return ret; } -Vec2 SizeFromString(const std::string& pszContent) +Vec2 SizeFromString(std::string_view pszContent) { Vec2 ret = Vec2::ZERO; diff --git a/cocos/base/CCNS.h b/cocos/base/CCNS.h index 730fd94faa0f..c08b79999237 100644 --- a/cocos/base/CCNS.h +++ b/cocos/base/CCNS.h @@ -46,7 +46,7 @@ NS_CC_BEGIN * @return A Core Graphics structure that represents a rectangle. * If the string is not well-formed, the function returns Rect::ZERO. */ -Rect CC_DLL RectFromString(const std::string& str); +Rect CC_DLL RectFromString(std::string_view str); /** * @brief Returns a Core Graphics point structure corresponding to the data in a given string. @@ -58,7 +58,7 @@ Rect CC_DLL RectFromString(const std::string& str); * @return A Core Graphics structure that represents a point. * If the string is not well-formed, the function returns Vec2::ZERO. */ -Vec2 CC_DLL PointFromString(const std::string& str); +Vec2 CC_DLL PointFromString(std::string_view str); /** * @brief Returns a Core Graphics size structure corresponding to the data in a given string. @@ -70,7 +70,7 @@ Vec2 CC_DLL PointFromString(const std::string& str); * @return A Core Graphics structure that represents a size. * If the string is not well-formed, the function returns Vec2::ZERO. */ -Vec2 CC_DLL SizeFromString(const std::string& str); +Vec2 CC_DLL SizeFromString(std::string_view str); // end of data_structure group /** @} */ diff --git a/cocos/base/CCNinePatchImageParser.cpp b/cocos/base/CCNinePatchImageParser.cpp index ab71f14fdd43..5d23b2041f54 100644 --- a/cocos/base/CCNinePatchImageParser.cpp +++ b/cocos/base/CCNinePatchImageParser.cpp @@ -179,7 +179,7 @@ void NinePatchImageParser::setSpriteFrameInfo(Image* image, const cocos2d::Rect& this->_isRotated = rotated; } -bool NinePatchImageParser::isNinePatchImage(const std::string& filepath) +bool NinePatchImageParser::isNinePatchImage(std::string_view filepath) { size_t length = filepath.length(); if (length < 7) diff --git a/cocos/base/CCNinePatchImageParser.h b/cocos/base/CCNinePatchImageParser.h index c695e10b8544..b16c6be5937b 100644 --- a/cocos/base/CCNinePatchImageParser.h +++ b/cocos/base/CCNinePatchImageParser.h @@ -51,7 +51,7 @@ class CC_DLL NinePatchImageParser * * @return If the filename contains ".9.png", then return true, otherwise false. */ - static bool isNinePatchImage(const std::string& filename); + static bool isNinePatchImage(std::string_view filename); /** * Default constructor. diff --git a/cocos/base/CCProperties.cpp b/cocos/base/CCProperties.cpp index a518a91d7f7a..1d8b96fed5e3 100644 --- a/cocos/base/CCProperties.cpp +++ b/cocos/base/CCProperties.cpp @@ -38,7 +38,7 @@ USING_NS_CC; // Utility functions (shared with SceneLoader). /** @script{ignore} */ -void calculateNamespacePath(const std::string& urlString, +void calculateNamespacePath(std::string_view urlString, std::string& fileString, std::vector& namespacePath); /** @script{ignore} */ @@ -79,7 +79,7 @@ Properties::Properties(Data* data, ssize_t* dataIdx) Properties::Properties(Data* data, ssize_t* dataIdx, - const std::string& name, + std::string_view name, const char* id, const char* parentID, Properties* parent) @@ -97,7 +97,7 @@ Properties::Properties(Data* data, rewind(); } -Properties* Properties::createNonRefCounted(const std::string& url) +Properties* Properties::createNonRefCounted(std::string_view url) { if (url.empty()) { @@ -106,7 +106,7 @@ Properties* Properties::createNonRefCounted(const std::string& url) } // Calculate the file and full namespace path from the specified url. - std::string urlString = url; + auto& urlString = url; std::string fileString; std::vector namespacePath; calculateNamespacePath(urlString, fileString, namespacePath); @@ -122,7 +122,7 @@ Properties* Properties::createNonRefCounted(const std::string& url) Properties* p = getPropertiesFromNamespacePath(properties, namespacePath); if (!p) { - CCLOGWARN("Failed to load properties from url '%s'.", url.c_str()); + CCLOGWARN("Failed to load properties from url '%s'.", url.data()); CC_SAFE_DELETE(properties); return nullptr; } @@ -1093,7 +1093,7 @@ void Properties::setDirectoryPath(const std::string* path) } } -void Properties::setDirectoryPath(const std::string& path) +void Properties::setDirectoryPath(std::string_view path) { if (_dirPath == NULL) { @@ -1105,7 +1105,7 @@ void Properties::setDirectoryPath(const std::string& path) } } -void calculateNamespacePath(const std::string& urlString, +void calculateNamespacePath(std::string_view urlString, std::string& fileString, std::vector& namespacePath) { @@ -1115,13 +1115,13 @@ void calculateNamespacePath(const std::string& urlString, if (loc != std::string::npos) { fileString = urlString.substr(0, loc); - std::string namespacePathString = urlString.substr(loc + 1); + auto namespacePathString = urlString.substr(loc + 1); while ((loc = namespacePathString.find('/')) != std::string::npos) { - namespacePath.push_back(namespacePathString.substr(0, loc)); + namespacePath.push_back(std::string{namespacePathString.substr(0, loc)}); namespacePathString = namespacePathString.substr(loc + 1); } - namespacePath.push_back(namespacePathString); + namespacePath.push_back(std::string{namespacePathString}); } else { diff --git a/cocos/base/CCProperties.h b/cocos/base/CCProperties.h index 97c123802c1d..14ddc7eeb33f 100644 --- a/cocos/base/CCProperties.h +++ b/cocos/base/CCProperties.h @@ -183,7 +183,7 @@ class CC_DLL Properties * @return The created Properties or NULL if there was an error. * @script{create} */ - static Properties* createNonRefCounted(const std::string& url); + static Properties* createNonRefCounted(std::string_view url); /** * Destructor. @@ -533,7 +533,7 @@ class CC_DLL Properties { std::string name; std::string value; - Property(const std::string& aname, const std::string& avalue) : name(aname), value(avalue) {} + Property(std::string_view aname, std::string_view avalue) : name(aname), value(avalue) {} }; /** @@ -554,7 +554,7 @@ class CC_DLL Properties */ Properties(Data* data, ssize_t* dataIdx, - const std::string& name, + std::string_view name, const char* id, const char* parentID, Properties* parent); @@ -578,7 +578,7 @@ class CC_DLL Properties Properties* clone(); void setDirectoryPath(const std::string* path); - void setDirectoryPath(const std::string& path); + void setDirectoryPath(std::string_view path); /** * Reads the next character from the Data. Returns EOF if the end of the Data is reached. diff --git a/cocos/base/CCProtocols.h b/cocos/base/CCProtocols.h index 99708d8fc1a9..a5e3a138ef4c 100644 --- a/cocos/base/CCProtocols.h +++ b/cocos/base/CCProtocols.h @@ -250,7 +250,7 @@ class CC_DLL LabelProtocol * @js NA * @lua NA */ - virtual const std::string& getString() const = 0; + virtual std::string_view getString() const = 0; }; /** diff --git a/cocos/base/CCScheduler.cpp b/cocos/base/CCScheduler.cpp index 029a12f1b6bd..7709d9468741 100644 --- a/cocos/base/CCScheduler.cpp +++ b/cocos/base/CCScheduler.cpp @@ -188,7 +188,7 @@ TimerTargetCallback::TimerTargetCallback() : _target(nullptr), _callback(nullptr bool TimerTargetCallback::initWithCallback(Scheduler* scheduler, const ccSchedulerFunc& callback, void* target, - const std::string& key, + std::string_view key, float seconds, unsigned int repeat, float delay) @@ -283,7 +283,7 @@ void Scheduler::schedule(const ccSchedulerFunc& callback, void* target, float interval, bool paused, - const std::string& key) + std::string_view key) { this->schedule(callback, target, interval, CC_REPEAT_FOREVER, 0.0f, paused, key); } @@ -294,7 +294,7 @@ void Scheduler::schedule(const ccSchedulerFunc& callback, unsigned int repeat, float delay, bool paused, - const std::string& key) + std::string_view key) { CCASSERT(target, "Argument target must be non-nullptr"); CCASSERT(!key.empty(), "key should not be empty!"); @@ -344,7 +344,7 @@ void Scheduler::schedule(const ccSchedulerFunc& callback, timer->release(); } -void Scheduler::unschedule(const std::string& key, void* target) +void Scheduler::unschedule(std::string_view key, void* target) { // explicit handle nil arguments when removing an object if (target == nullptr || key.empty()) @@ -513,7 +513,7 @@ void Scheduler::schedulePerFrame(const ccSchedulerFunc& callback, void* target, } } -bool Scheduler::isScheduled(const std::string& key, const void* target) const +bool Scheduler::isScheduled(std::string_view key, const void* target) const { CCASSERT(!key.empty(), "Argument key must not be empty"); CCASSERT(target, "Argument target must be non-nullptr"); diff --git a/cocos/base/CCScheduler.h b/cocos/base/CCScheduler.h index 5cf609f375f3..2dfe4283c444 100644 --- a/cocos/base/CCScheduler.h +++ b/cocos/base/CCScheduler.h @@ -109,13 +109,13 @@ class CC_DLL TimerTargetCallback : public Timer bool initWithCallback(Scheduler* scheduler, const ccSchedulerFunc& callback, void* target, - const std::string& key, + std::string_view key, float seconds, unsigned int repeat, float delay); const ccSchedulerFunc& getCallback() const { return _callback; } - const std::string& getKey() const { return _key; } + std::string_view getKey() const { return _key; } virtual void trigger(float dt) override; virtual void cancel() override; @@ -252,7 +252,7 @@ class CC_DLL Scheduler : public Ref unsigned int repeat, float delay, bool paused, - const std::string& key); + std::string_view key); /** The scheduled method will be called every 'interval' seconds for ever. @param callback The callback function. @@ -263,7 +263,7 @@ class CC_DLL Scheduler : public Ref @param key The key to identify the callback function, because there is not way to identify a std::function<>. @since v3.0 */ - void schedule(const ccSchedulerFunc& callback, void* target, float interval, bool paused, const std::string& key); + void schedule(const ccSchedulerFunc& callback, void* target, float interval, bool paused, std::string_view key); /** The scheduled method will be called every `interval` seconds. If paused is true, then it won't be called until it is resumed. @@ -329,7 +329,7 @@ class CC_DLL Scheduler : public Ref @param target The target to be unscheduled. @since v3.0 */ - void unschedule(const std::string& key, void* target); + void unschedule(std::string_view key, void* target); /** Unschedules a selector for a given target. If you want to unschedule the "update", use `unscheduleUpdate()`. @@ -386,7 +386,7 @@ class CC_DLL Scheduler : public Ref @return True if the specified callback is invoked, false if not. @since v3.0.0 */ - bool isScheduled(const std::string& key, const void* target) const; + bool isScheduled(std::string_view key, const void* target) const; /** Checks whether a selector for a given target is scheduled. @param selector The selector to be checked. diff --git a/cocos/base/CCScriptSupport.h b/cocos/base/CCScriptSupport.h index 318eec1da08d..6613b152da6b 100644 --- a/cocos/base/CCScriptSupport.h +++ b/cocos/base/CCScriptSupport.h @@ -756,7 +756,7 @@ class CC_DLL ScriptEngineProtocol * @lua NA * @js NA */ - virtual bool parseConfig(ConfigType type, const std::string& str) = 0; + virtual bool parseConfig(ConfigType type, std::string_view str) = 0; /** Root a Reference. It tells the Garbage Collector that the associated Scripting object should not be collected diff --git a/cocos/base/CCUserDefault.cpp b/cocos/base/CCUserDefault.cpp index e3b243fe9c69..d241ca88a43f 100644 --- a/cocos/base/CCUserDefault.cpp +++ b/cocos/base/CCUserDefault.cpp @@ -211,12 +211,12 @@ double UserDefault::getDoubleForKey(const char* pKey, double defaultValue) return defaultValue; } -std::string UserDefault::getStringForKey(const char* pKey) +std::string_view UserDefault::getStringForKey(const char* pKey) { return getStringForKey(pKey, ""); } -std::string UserDefault::getStringForKey(const char* pKey, const std::string& defaultValue) +std::string_view UserDefault::getStringForKey(const char* pKey, std::string_view defaultValue) { auto pValue = getValueForKey(pKey); if (pValue) @@ -225,7 +225,7 @@ std::string UserDefault::getStringForKey(const char* pKey, const std::string& de return defaultValue; } -const std::string* UserDefault::getValueForKey(const std::string& key) +const std::string* UserDefault::getValueForKey(std::string_view key) { // do lazyInit at here to make sure _encryptEnabled works well, lazyInit(); @@ -294,7 +294,7 @@ void UserDefault::setDoubleForKey(const char* pKey, double value) setStringForKey(pKey, tmp); } -void UserDefault::setStringForKey(const char* pKey, const std::string& value) +void UserDefault::setStringForKey(const char* pKey, std::string_view value) { // ignore empty key if (!pKey || !*pKey) @@ -338,7 +338,7 @@ void UserDefault::setStringForKey(const char* pKey, const std::string& value) #endif } -void UserDefault::setValueForKey(const std::string& key, const std::string& value) +void UserDefault::setValueForKey(std::string_view key, std::string_view value) { // do lazyInit at here to make sure _encryptEnabled works well lazyInit(); @@ -346,7 +346,7 @@ void UserDefault::setValueForKey(const std::string& key, const std::string& valu updateValueForKey(key, value); } -void UserDefault::updateValueForKey(const std::string& key, const std::string& value) +void UserDefault::updateValueForKey(std::string_view key, std::string_view value) { auto it = _values.find(key); if (it != _values.end()) diff --git a/cocos/base/CCUserDefault.h b/cocos/base/CCUserDefault.h index 6f100450459f..cf5de7f394e9 100644 --- a/cocos/base/CCUserDefault.h +++ b/cocos/base/CCUserDefault.h @@ -149,7 +149,7 @@ class CC_DLL UserDefault * @return String value of the key. * @js NA */ - std::string getStringForKey(const char* key); + std::string_view getStringForKey(const char* key); /** * Get string value by key, if the key doesn't exist, will return passed default value. @@ -158,7 +158,7 @@ class CC_DLL UserDefault * @return String value of the key. * @js NA */ - virtual std::string getStringForKey(const char* key, const std::string& defaultValue); + virtual std::string_view getStringForKey(const char* key, std::string_view defaultValue); // set value methods @@ -203,7 +203,7 @@ class CC_DLL UserDefault * @param value A string value to set to the key. * @js NA */ - virtual void setStringForKey(const char* key, const std::string& value); + virtual void setStringForKey(const char* key, std::string_view value); /** * Since we reimplement UserDefault with file mapping io, @@ -265,16 +265,16 @@ class CC_DLL UserDefault void closeFileMapping(); // The low level API of all getXXXForKey - const std::string* getValueForKey(const std::string& key); + const std::string* getValueForKey(std::string_view key); // The low level API of all setXXXForKey - void setValueForKey(const std::string& key, const std::string& value); + void setValueForKey(std::string_view key, std::string_view value); // Update value without lazyInit - void updateValueForKey(const std::string& key, const std::string& value); + void updateValueForKey(std::string_view key, std::string_view value); protected: - std::unordered_map _values; + hlookup::string_map _values; static UserDefault* _userDefault; std::string _filePath; diff --git a/cocos/base/CCValue.cpp b/cocos/base/CCValue.cpp index 8045669764a7..225d8976ba46 100644 --- a/cocos/base/CCValue.cpp +++ b/cocos/base/CCValue.cpp @@ -92,7 +92,7 @@ Value::Value(const char* v) : _type(Type::STRING) _field.strVal = new std::string(v ? v : ""); } -Value::Value(const std::string& v) : _type(Type::STRING) +Value::Value(std::string_view v) : _type(Type::STRING) { _field.strVal = new std::string(v); } @@ -308,7 +308,7 @@ Value& Value::operator=(const char* v) return *this; } -Value& Value::operator=(const std::string& v) +Value& Value::operator=(std::string_view v) { reset(Type::STRING); *_field.strVal = v; @@ -769,7 +769,7 @@ std::string Value::asString() const return ret; } -const std::string& Value::asStringRef() const +std::string_view Value::asStringRef() const { if (_type == Type::STRING) return *_field.strVal; diff --git a/cocos/base/CCValue.h b/cocos/base/CCValue.h index 47e511cf43fa..27c8c94fc15d 100644 --- a/cocos/base/CCValue.h +++ b/cocos/base/CCValue.h @@ -43,7 +43,7 @@ NS_CC_BEGIN class Value; typedef std::vector ValueVector; -typedef std::unordered_map ValueMap; +typedef hlookup::string_map ValueMap; typedef std::unordered_map ValueMapIntKey; CC_DLL extern const ValueVector ValueVectorNull; @@ -91,7 +91,7 @@ class CC_DLL Value explicit Value(const char* v); /** Create a Value by a string. */ - explicit Value(const std::string& v); + explicit Value(std::string_view v); explicit Value(std::string&& v); @@ -142,7 +142,7 @@ class CC_DLL Value /** Assignment operator, assign from char* to Value. */ Value& operator=(const char* v); /** Assignment operator, assign from string to Value. */ - Value& operator=(const std::string& v); + Value& operator=(std::string_view v); Value& operator=(std::string&& v); /** Assignment operator, assign from ValueVector to Value. */ @@ -193,7 +193,7 @@ class CC_DLL Value std::string asString() const; /** Gets as a string value reference without conversion, if value type is not string will return "" */ - const std::string& asStringRef() const; + std::string_view asStringRef() const; /** Gets as a ValueVector reference. Will convert to ValueVector if possible, or will trigger assert error. */ ValueVector& asValueVector(); @@ -279,6 +279,11 @@ class CC_DLL Value Type _type; }; +inline const cocos2d::Value& optValue(const ValueMap& dictionary, std::string_view key) +{ + return dictionary.find(key) != dictionary.cend() ? dictionary.at(key) : cocos2d::Value::Null; +} + /** @} */ NS_CC_END diff --git a/cocos/base/ObjectFactory.cpp b/cocos/base/ObjectFactory.cpp index 065d70f04966..d0920f7dff71 100644 --- a/cocos/base/ObjectFactory.cpp +++ b/cocos/base/ObjectFactory.cpp @@ -30,12 +30,12 @@ NS_CC_BEGIN ObjectFactory::TInfo::TInfo() : _class(""), _fun(nullptr), _func(nullptr) {} -ObjectFactory::TInfo::TInfo(const std::string& type, Instance ins) : _class(type), _fun(ins), _func(nullptr) +ObjectFactory::TInfo::TInfo(std::string_view type, Instance ins) : _class(type), _fun(ins), _func(nullptr) { ObjectFactory::getInstance()->registerType(*this); } -ObjectFactory::TInfo::TInfo(const std::string& type, InstanceFunc ins) : _class(type), _fun(nullptr), _func(ins) +ObjectFactory::TInfo::TInfo(std::string_view type, InstanceFunc ins) : _class(type), _fun(nullptr), _func(ins) { ObjectFactory::getInstance()->registerType(*this); } @@ -85,12 +85,16 @@ void ObjectFactory::destroyInstance() CC_SAFE_DELETE(_sharedFactory); } -Ref* ObjectFactory::createObject(const std::string& name) +Ref* ObjectFactory::createObject(std::string_view name) { Ref* o = nullptr; do { - const TInfo t = _typeMap[name]; + // const TInfo t = _typeMap[name.data]; + auto it = _typeMap.find(name); + if (it == _typeMap.end()) + break; + auto& t = it->second; if (t._fun != nullptr) { o = t._fun(); diff --git a/cocos/base/ObjectFactory.h b/cocos/base/ObjectFactory.h index e7499b08e0e1..0ee3ad46f75a 100644 --- a/cocos/base/ObjectFactory.h +++ b/cocos/base/ObjectFactory.h @@ -42,8 +42,8 @@ class CC_DLL ObjectFactory struct CC_DLL TInfo { TInfo(); - TInfo(const std::string& type, Instance ins = nullptr); - TInfo(const std::string& type, InstanceFunc ins = nullptr); + TInfo(std::string_view type, Instance ins = nullptr); + TInfo(std::string_view type, InstanceFunc ins = nullptr); TInfo(const TInfo& t); ~TInfo(); TInfo& operator=(const TInfo& t); @@ -51,11 +51,11 @@ class CC_DLL ObjectFactory Instance _fun; InstanceFunc _func; }; - typedef std::unordered_map FactoryMap; + typedef hlookup::string_map FactoryMap; static ObjectFactory* getInstance(); static void destroyInstance(); - cocos2d::Ref* createObject(const std::string& name); + cocos2d::Ref* createObject(std::string_view name); void registerType(const TInfo& t); void removeAll(); diff --git a/cocos/base/ZipUtils.cpp b/cocos/base/ZipUtils.cpp index f5fa6beb313f..4454de57a855 100644 --- a/cocos/base/ZipUtils.cpp +++ b/cocos/base/ZipUtils.cpp @@ -658,7 +658,7 @@ struct ZipFilePrivate std::unique_ptr memfs; // std::unordered_map is faster if available on the platform - typedef std::unordered_map FileListContainer; + typedef hlookup::string_map FileListContainer; FileListContainer fileList; zlib_filefunc_def functionOverrides{}; @@ -683,10 +683,10 @@ ZipFile::ZipFile() : _data(new ZipFilePrivate()) _data->zipFile = nullptr; } -ZipFile::ZipFile(const std::string& zipFile, const std::string& filter) : _data(new ZipFilePrivate()) +ZipFile::ZipFile(std::string_view zipFile, std::string_view filter) : _data(new ZipFilePrivate()) { _data->zipFileName = zipFile; - _data->zipFile = unzOpen2(zipFile.c_str(), &_data->functionOverrides); + _data->zipFile = unzOpen2(zipFile.data(), &_data->functionOverrides); setFilter(filter); } @@ -700,7 +700,7 @@ ZipFile::~ZipFile() CC_SAFE_DELETE(_data); } -bool ZipFile::setFilter(const std::string& filter) +bool ZipFile::setFilter(std::string_view filter) { bool ret = false; do @@ -743,7 +743,7 @@ bool ZipFile::setFilter(const std::string& filter) return ret; } -bool ZipFile::fileExists(const std::string& fileName) const +bool ZipFile::fileExists(std::string_view fileName) const { bool ret = false; do @@ -756,7 +756,7 @@ bool ZipFile::fileExists(const std::string& fileName) const return ret; } -std::vector ZipFile::listFiles(const std::string& pathname) const +std::vector ZipFile::listFiles(std::string_view pathname) const { // filter files which `filename.startsWith(pathname)` @@ -766,22 +766,23 @@ std::vector ZipFile::listFiles(const std::string& pathname) const ZipFilePrivate::FileListContainer::const_iterator it = _data->fileList.begin(); ZipFilePrivate::FileListContainer::const_iterator end = _data->fileList.end(); // ensure pathname ends with `/` as a directory - std::string dirname = pathname[pathname.length() - 1] == '/' ? pathname : pathname + "/"; + std::string ensureDir; + std::string_view dirname = pathname[pathname.length() - 1] == '/' ? pathname : (ensureDir.append(pathname) += '/'); for (auto& item : _data->fileList) { - const std::string& filename = item.first; - if (cxx20::starts_with(cxx17::string_view{filename}, cxx17::string_view{dirname})) + std::string_view filename = item.first; + if (cxx20::starts_with(filename, cxx17::string_view{dirname})) { - std::string suffix = filename.substr(dirname.length()); + std::string_view suffix{filename.substr(dirname.length())}; auto pos = suffix.find('/'); if (pos == std::string::npos) { - fileSet.insert(suffix); + fileSet.insert(std::string{suffix}); } else { // fileSet.insert(parts[0] + "/"); - fileSet.insert(suffix.substr(0, pos + 1)); + fileSet.insert(std::string{suffix.substr(0, pos + 1)}); } } } @@ -789,7 +790,7 @@ std::vector ZipFile::listFiles(const std::string& pathname) const return std::vector{fileSet.begin(), fileSet.end()}; } -unsigned char* ZipFile::getFileData(const std::string& fileName, ssize_t* size) +unsigned char* ZipFile::getFileData(std::string_view fileName, ssize_t* size) { unsigned char* buffer = nullptr; if (size) @@ -800,7 +801,7 @@ unsigned char* ZipFile::getFileData(const std::string& fileName, ssize_t* size) CC_BREAK_IF(!_data->zipFile); CC_BREAK_IF(fileName.empty()); - ZipFilePrivate::FileListContainer::iterator it = _data->fileList.find(fileName); + auto it = _data->fileList.find(fileName); CC_BREAK_IF(it == _data->fileList.end()); ZipEntryInfo& fileInfo = it->second; @@ -828,7 +829,7 @@ unsigned char* ZipFile::getFileData(const std::string& fileName, ssize_t* size) return buffer; } -bool ZipFile::getFileData(const std::string& fileName, ResizableBuffer* buffer) +bool ZipFile::getFileData(std::string_view fileName, ResizableBuffer* buffer) { bool res = false; do @@ -915,14 +916,14 @@ bool ZipFile::initWithBuffer(const void* buffer, unsigned int size) return true; } -bool ZipFile::zfopen(const std::string& fileName, ZipFileStream* zfs) +bool ZipFile::zfopen(std::string_view fileName, ZipFileStream* zfs) { if (!zfs) return false; auto it = _data->fileList.find(fileName); if (it != _data->fileList.end()) { - zfs->entry = &it->second; + zfs->entry = &it->second; zfs->offset = 0; return true; } @@ -1005,7 +1006,7 @@ long long ZipFile::zfsize(ZipFileStream* zfs) return -1; } -unsigned char* ZipFile::getFileDataFromZip(const std::string& zipFilePath, const std::string& filename, ssize_t* size) +unsigned char* ZipFile::getFileDataFromZip(std::string_view zipFilePath, std::string_view filename, ssize_t* size) { unsigned char* buffer = nullptr; unzFile file = nullptr; @@ -1015,11 +1016,11 @@ unsigned char* ZipFile::getFileDataFromZip(const std::string& zipFilePath, const { CC_BREAK_IF(zipFilePath.empty()); - file = unzOpen(zipFilePath.c_str()); + file = unzOpen(zipFilePath.data()); CC_BREAK_IF(!file); // minizip 1.2.0 is same with other platforms - int ret = unzLocateFile(file, filename.c_str(), nullptr); + int ret = unzLocateFile(file, filename.data(), nullptr); CC_BREAK_IF(UNZ_OK != ret); diff --git a/cocos/base/ZipUtils.h b/cocos/base/ZipUtils.h index 4a74a38fb214..de982b90dc02 100644 --- a/cocos/base/ZipUtils.h +++ b/cocos/base/ZipUtils.h @@ -250,7 +250,7 @@ class CC_DLL ZipFile * * @since v2.0.5 */ - ZipFile(const std::string& zipFile, const std::string& filter = std::string()); + ZipFile(std::string_view zipFile, std::string_view filter = std::string()); virtual ~ZipFile(); /** @@ -262,7 +262,7 @@ class CC_DLL ZipFile * * @since v2.0.5 */ - bool setFilter(const std::string& filter); + bool setFilter(std::string_view filter); /** * Check does a file exists or not in zip file @@ -272,7 +272,7 @@ class CC_DLL ZipFile * * @since v2.0.5 */ - bool fileExists(const std::string& fileName) const; + bool fileExists(std::string_view fileName) const; /** * Get files and folders in pathname @@ -280,7 +280,7 @@ class CC_DLL ZipFile * @param dirname * @return */ - std::vector listFiles(const std::string& pathname) const; + std::vector listFiles(std::string_view pathname) const; /** * Get resource file data from a zip file. @@ -291,7 +291,7 @@ class CC_DLL ZipFile * * @since v2.0.5 */ - unsigned char* getFileData(const std::string& fileName, ssize_t* size); + unsigned char* getFileData(std::string_view fileName, ssize_t* size); /** * Get resource file data from a zip file. @@ -299,7 +299,7 @@ class CC_DLL ZipFile * @param[out] buffer If the file read operation succeeds, if will contain the file data. * @return True if successful. */ - bool getFileData(const std::string& fileName, ResizableBuffer* buffer); + bool getFileData(std::string_view fileName, ResizableBuffer* buffer); std::string getFirstFilename(); std::string getNextFilename(); @@ -310,7 +310,7 @@ class CC_DLL ZipFile * zipFile Streaming support, !!!important, the file in zip must no compress level, otherwise * stream seek doesn't work. */ - bool zfopen(const std::string& fileName, ZipFileStream* zfs); + bool zfopen(std::string_view fileName, ZipFileStream* zfs); int zfread(ZipFileStream* zfs, void* buf, unsigned int size); int32_t zfseek(ZipFileStream* zfs, int32_t offset, int origin); void zfclose(ZipFileStream* zfs); @@ -325,8 +325,8 @@ class CC_DLL ZipFile * @warning Recall: you are responsible for calling free() on any Non-nullptr pointer returned. */ CC_DEPRECATED() - static unsigned char* getFileDataFromZip(const std::string& zipFilePath, - const std::string& filename, + static unsigned char* getFileDataFromZip(std::string_view zipFilePath, + std::string_view filename, ssize_t* size); private: diff --git a/cocos/base/ccUTF8.cpp b/cocos/base/ccUTF8.cpp index 1c993a629967..2db5969e2b25 100644 --- a/cocos/base/ccUTF8.cpp +++ b/cocos/base/ccUTF8.cpp @@ -375,7 +375,7 @@ std::string getStringUTFCharsJNI(JNIEnv* env, jstring srcjStr, bool* ret) return utf8Str; } -jstring newStringUTFJNI(JNIEnv* env, const std::string& utf8Str, bool* ret) +jstring newStringUTFJNI(JNIEnv* env, std::string_view utf8Str, bool* ret) { std::u16string utf16Str; bool flag = cocos2d::StringUtils::UTF8ToUTF16(utf8Str, utf16Str); @@ -399,9 +399,9 @@ std::vector getChar16VectorFromUTF16String(const std::u16string& utf16 return std::vector(utf16.begin(), utf16.end()); } -int32_t getCharacterCountInUTF8String(const std::string& utf8) +int32_t getCharacterCountInUTF8String(std::string_view utf8) { - return getUTF8StringLength((const UTF8*)utf8.c_str()); + return getUTF8StringLength((const UTF8*)utf8.data()); } bool hasNonAsciiUTF8(const char* str, size_t len) @@ -455,7 +455,7 @@ bool isLegalUTF8String(const char* str, size_t len) StringUTF8::StringUTF8() {} -StringUTF8::StringUTF8(const std::string& newStr) +StringUTF8::StringUTF8(std::string_view newStr) { replace(newStr); } @@ -467,18 +467,18 @@ std::size_t StringUTF8::length() const return _str.size(); } -void StringUTF8::replace(const std::string& newStr) +void StringUTF8::replace(std::string_view newStr) { _str.clear(); if (!newStr.empty()) { - UTF8* sequenceUtf8 = (UTF8*)newStr.c_str(); + UTF8* sequenceUtf8 = (UTF8*)newStr.data(); int lengthString = getUTF8StringLength(sequenceUtf8); if (lengthString == 0) { - CCLOG("Bad utf-8 set string: %s", newStr.c_str()); + CCLOG("Bad utf-8 set string: %s", newStr.data()); return; } @@ -536,7 +536,7 @@ bool StringUTF8::deleteChar(std::size_t pos) } } -bool StringUTF8::insert(std::size_t pos, const std::string& insertStr) +bool StringUTF8::insert(std::size_t pos, std::string_view insertStr) { StringUTF8 utf8(insertStr); diff --git a/cocos/base/ccUTF8.h b/cocos/base/ccUTF8.h index 80626a4bc81c..a64837201807 100644 --- a/cocos/base/ccUTF8.h +++ b/cocos/base/ccUTF8.h @@ -147,7 +147,7 @@ CC_DLL std::string getStringUTFCharsJNI(JNIEnv* env, jstring srcjStr, bool* ret * @param ret True if the conversion succeeds and the ret pointer isn't null * @returns the result of jstring,the jstring need to DeleteLocalRef(jstring); */ -CC_DLL jstring newStringUTFJNI(JNIEnv* env, const std::string& utf8Str, bool* ret = nullptr); +CC_DLL jstring newStringUTFJNI(JNIEnv* env, std::string_view utf8Str, bool* ret = nullptr); #endif /** @@ -199,7 +199,7 @@ CC_DLL bool isUnicodeNonBreaking(char32_t ch); * @param utf8 An UTF-8 encoded string. * @returns The length of the string in characters. */ -CC_DLL int32_t getCharacterCountInUTF8String(const std::string& utf8); +CC_DLL int32_t getCharacterCountInUTF8String(std::string_view utf8); /** * @brief Gets the index of the last character that is not equal to the character given. @@ -245,18 +245,18 @@ class CC_DLL StringUTF8 typedef std::vector CharUTF8Store; StringUTF8(); - StringUTF8(const std::string& newStr); + StringUTF8(std::string_view newStr); ~StringUTF8(); std::size_t length() const; - void replace(const std::string& newStr); + void replace(std::string_view newStr); std::string getAsCharSequence() const; std::string getAsCharSequence(std::size_t pos) const; std::string getAsCharSequence(std::size_t pos, std::size_t len) const; bool deleteChar(std::size_t pos); - bool insert(std::size_t pos, const std::string& insertStr); + bool insert(std::size_t pos, std::string_view insertStr); bool insert(std::size_t pos, const StringUTF8& insertStr); CharUTF8Store& getString() { return _str; } diff --git a/cocos/base/ccUtils.cpp b/cocos/base/ccUtils.cpp index a661939ab0b9..c10a345f0b66 100644 --- a/cocos/base/ccUtils.cpp +++ b/cocos/base/ccUtils.cpp @@ -178,13 +178,13 @@ void captureNode(Node* startNode, std::function)> imageCallba } // [DEPRECATED] -void captureScreen(std::function afterCap, const std::string& filename) +void captureScreen(std::function afterCap, std::string_view filename) { std::string outfile; if (FileUtils::getInstance()->isAbsolutePath(filename)) outfile = filename; else - outfile = FileUtils::getInstance()->getWritablePath() + filename; + outfile = FileUtils::getInstance()->getWritablePath().append(filename); captureScreen([_afterCap = std::move(afterCap), _outfile = std::move(outfile)](RefPtr image) mutable { AsyncTaskPool::getInstance()->enqueue( @@ -199,7 +199,7 @@ void captureScreen(std::function afterCap, const }); } -std::vector findChildren(const Node& node, const std::string& name) +std::vector findChildren(const Node& node, std::string_view name) { std::vector vec; @@ -348,7 +348,7 @@ Sprite* createSpriteFromBase64(const char* base64String) return sprite; } -Node* findChild(Node* levelRoot, const std::string& name) +Node* findChild(Node* levelRoot, std::string_view name) { if (levelRoot == nullptr || name.empty()) return nullptr; @@ -389,7 +389,7 @@ Node* findChild(Node* levelRoot, int tag) return nullptr; } -std::string getFileMD5Hash(const std::string& filename) +std::string getFileMD5Hash(std::string_view filename) { Data data; FileUtils::getInstance()->getContents(filename, &data); diff --git a/cocos/base/ccUtils.h b/cocos/base/ccUtils.h index 9ea8fad56d15..8276c42355cf 100644 --- a/cocos/base/ccUtils.h +++ b/cocos/base/ccUtils.h @@ -92,7 +92,7 @@ CC_DLL void captureNode(Node* startNode, std::function)> imag * etc.). * @since v4.0 */ -CC_DLL void captureScreen(std::function afterCap, const std::string& filename); +CC_DLL void captureScreen(std::function afterCap, std::string_view filename); /** Find children by name, it will return all child that has the same name. * It supports c++ 11 regular expression. It is a helper function of `Node::enumerateChildren()`. @@ -103,7 +103,7 @@ CC_DLL void captureScreen(std::function afterCap * @return Array of Nodes that matches the name * @since v3.2 */ -CC_DLL std::vector findChildren(const Node& node, const std::string& name); +CC_DLL std::vector findChildren(const Node& node, std::string_view name); /** Same to ::atof, but strip the string, remain 7 numbers after '.' before call atof. * Why we need this? Because in android c++_static, atof ( and std::atof ) is unsupported for numbers have long decimal @@ -151,7 +151,7 @@ CC_DLL Sprite* createSpriteFromBase64(const char* base64String); * @return Returns found node or nullptr */ -CC_DLL Node* findChild(Node* levelRoot, const std::string& name); +CC_DLL Node* findChild(Node* levelRoot, std::string_view name); /** * Find a child by tag recursively @@ -166,7 +166,7 @@ CC_DLL Node* findChild(Node* levelRoot, int tag); * @return Returns found node or nullptr with specified type 'T' */ template -inline T findChild(Node* levelRoot, const std::string& name) +inline T findChild(Node* levelRoot, std::string_view name) { return dynamic_cast(findChild(levelRoot, name)); } @@ -187,7 +187,7 @@ inline T findChild(Node* levelRoot, int tag) * @param filename The file to calculate md5 hash. * @return The md5 hash for the file */ -CC_DLL std::string getFileMD5Hash(const std::string& filename); +CC_DLL std::string getFileMD5Hash(std::string_view filename); /** * Gets the md5 hash for the given buffer. diff --git a/cocos/base/hlookup.h b/cocos/base/hlookup.h new file mode 100644 index 000000000000..4a855cccff69 --- /dev/null +++ b/cocos/base/hlookup.h @@ -0,0 +1,62 @@ +// C++20 demo: Heterogeneous lookup for unordered containers (transparent hashing) +// https://en.cppreference.com/w/cpp/container/unordered_map/find +#pragma once +#include +#include +#include +#include +#include +#include +#include "tsl/robin_map.h" +#include "tsl/robin_set.h" + +using namespace std::string_literals; +using namespace std::string_view_literals; + +namespace hlookup +{ +struct string_hash +{ + using hash_type = std::hash; + using is_transparent = void; + + size_t operator()(const char* str) const { return hash_type{}(str); } + size_t operator()(std::string_view str) const { return hash_type{}(str); } + size_t operator()(std::string const& str) const { return hash_type{}(str); } +}; + +struct equal_to +{ + template + constexpr auto operator()(_Ty1&& _Left, _Ty2&& _Right) const + noexcept(noexcept(static_cast<_Ty1&&>(_Left) == static_cast<_Ty2&&>(_Right))) // strengthened + -> decltype(static_cast<_Ty1&&>(_Left) == static_cast<_Ty2&&>(_Right)) + { + return static_cast<_Ty1&&>(_Left) == static_cast<_Ty2&&>(_Right); + } + + using is_transparent = int; +}; + +template +using stl_string_map = std::map>; +using stl_string_set = std::set>; + +template +using string_map = tsl::robin_map; +using string_set = tsl::robin_set; + +template +inline auto set_item(_Cont& cont, std::string_view key, _Valty&& _Val) +{ + typename _Cont::iterator it = cont.find(key); + if (it != cont.end()) + it.value() = std::move(_Val); + else + it = cont.emplace(std::string{key}, std::forward<_Valty>(_Val)).first; + return it; +} + +constexpr auto empty_sv = ""sv; + +} // namespace hlookup diff --git a/cocos/navmesh/CCNavMesh.cpp b/cocos/navmesh/CCNavMesh.cpp index cd990f580f07..dacb3948fb29 100644 --- a/cocos/navmesh/CCNavMesh.cpp +++ b/cocos/navmesh/CCNavMesh.cpp @@ -90,7 +90,7 @@ static const int TILECACHESET_MAGIC = 'T' << 24 | 'S' << 16 | 'E' << 8 | 'T'; static const int TILECACHESET_VERSION = 2; // 1: fastlz, 2: lz4 static const int MAX_AGENTS = 128; -NavMesh* NavMesh::create(const std::string& navFilePath, const std::string& geomFilePath) +NavMesh* NavMesh::create(std::string_view navFilePath, std::string_view geomFilePath) { auto ref = new NavMesh(); if (ref->initWithFilePath(navFilePath, geomFilePath)) @@ -138,7 +138,7 @@ NavMesh::~NavMesh() _obstacleList.clear(); } -bool NavMesh::initWithFilePath(const std::string& navFilePath, const std::string& geomFilePath) +bool NavMesh::initWithFilePath(std::string_view navFilePath, std::string_view geomFilePath) { _navFilePath = navFilePath; _geomFilePath = geomFilePath; diff --git a/cocos/navmesh/CCNavMesh.h b/cocos/navmesh/CCNavMesh.h index 44aaaa1d0321..41ad2f8d6b58 100644 --- a/cocos/navmesh/CCNavMesh.h +++ b/cocos/navmesh/CCNavMesh.h @@ -60,7 +60,7 @@ class CC_DLL NavMesh : public Ref @param navFilePath The NavMesh File path. @param geomFilePath The geometry File Path,include offmesh information,etc. */ - static NavMesh* create(const std::string& navFilePath, const std::string& geomFilePath); + static NavMesh* create(std::string_view navFilePath, std::string_view geomFilePath); /** update navmesh. */ void update(float dt); @@ -99,7 +99,7 @@ class CC_DLL NavMesh : public Ref virtual ~NavMesh(); protected: - bool initWithFilePath(const std::string& navFilePath, const std::string& geomFilePath); + bool initWithFilePath(std::string_view navFilePath, std::string_view geomFilePath); bool read(); bool loadNavMeshFile(); bool loadGeomFile(); diff --git a/cocos/navmesh/CCNavMeshAgent.cpp b/cocos/navmesh/CCNavMeshAgent.cpp index 920bd386d1b8..f72ee758a250 100644 --- a/cocos/navmesh/CCNavMeshAgent.cpp +++ b/cocos/navmesh/CCNavMeshAgent.cpp @@ -60,7 +60,7 @@ NavMeshAgent* NavMeshAgent::create(const NavMeshAgentParam& param) return nullptr; } -const std::string& NavMeshAgent::getNavMeshAgentComponentName() +std::string_view NavMeshAgent::getNavMeshAgentComponentName() { static std::string comName = "___NavMeshAgentComponent___"; return comName; diff --git a/cocos/navmesh/CCNavMeshAgent.h b/cocos/navmesh/CCNavMeshAgent.h index d92e541d619f..9b532cfd4a6f 100644 --- a/cocos/navmesh/CCNavMeshAgent.h +++ b/cocos/navmesh/CCNavMeshAgent.h @@ -97,7 +97,7 @@ class CC_DLL NavMeshAgent : public Component @param param The parameters of agent. */ static NavMeshAgent* create(const NavMeshAgentParam& param); - static const std::string& getNavMeshAgentComponentName(); + static std::string_view getNavMeshAgentComponentName(); virtual void onEnter() override; virtual void onExit() override; diff --git a/cocos/navmesh/CCNavMeshObstacle.cpp b/cocos/navmesh/CCNavMeshObstacle.cpp index 61ad5d183a8c..81e9ec900fbe 100644 --- a/cocos/navmesh/CCNavMeshObstacle.cpp +++ b/cocos/navmesh/CCNavMeshObstacle.cpp @@ -45,7 +45,7 @@ NavMeshObstacle* NavMeshObstacle::create(float radius, float height) return nullptr; } -const std::string& NavMeshObstacle::getNavMeshObstacleComponentName() +std::string_view NavMeshObstacle::getNavMeshObstacleComponentName() { static std::string comName = "___NavMeshObstacleComponent___"; return comName; diff --git a/cocos/navmesh/CCNavMeshObstacle.h b/cocos/navmesh/CCNavMeshObstacle.h index 0dc5677284d0..b0a0ad32f3ec 100644 --- a/cocos/navmesh/CCNavMeshObstacle.h +++ b/cocos/navmesh/CCNavMeshObstacle.h @@ -64,7 +64,7 @@ class CC_DLL NavMeshObstacle : public Component @param height The height of obstacle. */ static NavMeshObstacle* create(float radius, float height); - static const std::string& getNavMeshObstacleComponentName(); + static std::string_view getNavMeshObstacleComponentName(); virtual void onEnter() override; virtual void onExit() override; diff --git a/cocos/network/CCDownloader-curl.cpp b/cocos/network/CCDownloader-curl.cpp index c91129d9715f..843d4b34c893 100644 --- a/cocos/network/CCDownloader-curl.cpp +++ b/cocos/network/CCDownloader-curl.cpp @@ -102,7 +102,7 @@ class DownloadTaskCURL : public IDownloadTask DLLOG("Destruct DownloadTaskCURL %p", this); } - bool init(const std::string& filename, const std::string& tempSuffix) + bool init(std::string_view filename, std::string_view tempSuffix) { if (0 == filename.length()) { @@ -166,7 +166,7 @@ class DownloadTaskCURL : public IDownloadTask } // init md5 state - _checksumFileName = filename + ".chksum"; + _checksumFileName = _tempFileName + ".chksum"; _fsMd5 = FileUtils::getInstance()->openFileStream(_checksumFileName, FileStream::Mode::OVERLAPPED); _fsMd5->seek(0, SEEK_END); @@ -215,7 +215,7 @@ class DownloadTaskCURL : public IDownloadTask /* retval: 0. don't check, 1. check succeed, 2. check failed */ - int checkFileMd5(const std::string& requiredsum, std::string* outsum = nullptr) + int checkFileMd5(std::string_view requiredsum, std::string* outsum = nullptr) { int status = 0; if (!requiredsum.empty()) diff --git a/cocos/network/CCDownloader.cpp b/cocos/network/CCDownloader.cpp index 14c337a1c2d4..5c9e67a36ac3 100644 --- a/cocos/network/CCDownloader.cpp +++ b/cocos/network/CCDownloader.cpp @@ -39,17 +39,17 @@ DownloadTask::DownloadTask() DLLOG("Construct DownloadTask %p", this); } -DownloadTask::DownloadTask(const std::string& srcUrl, const std::string& identifier) +DownloadTask::DownloadTask(std::string_view srcUrl, std::string_view identifier) { this->requestURL = srcUrl; this->identifier = identifier; this->background = false; } -DownloadTask::DownloadTask(const std::string& srcUrl, - const std::string& storagePath, - const std::string& checksum, - const std::string& identifier, +DownloadTask::DownloadTask(std::string_view srcUrl, + std::string_view storagePath, + std::string_view checksum, + std::string_view identifier, bool background) { this->requestURL = srcUrl; @@ -87,7 +87,7 @@ Downloader::Downloader(const DownloaderHints& hints) }; _impl->onTaskFinish = [this](const DownloadTask& task, int errorCode, int errorCodeInternal, - const std::string& errorStr, std::vector& data) { + std::string_view errorStr, std::vector& data) { if (DownloadTask::ERROR_NO_ERROR != errorCode) { if (onTaskError) @@ -121,8 +121,8 @@ Downloader::~Downloader() DLLOG("Destruct Downloader %p", this); } -std::shared_ptr Downloader::createDownloadDataTask(const std::string& srcUrl, - const std::string& identifier /* = ""*/) +std::shared_ptr Downloader::createDownloadDataTask(std::string_view srcUrl, + std::string_view identifier /* = ""*/) { auto task = std::make_shared(srcUrl, identifier); @@ -143,10 +143,10 @@ std::shared_ptr Downloader::createDownloadDataTask(const std::stri return task; } -std::shared_ptr Downloader::createDownloadFileTask(const std::string& srcUrl, - const std::string& storagePath, - const std::string& identifier, - const std::string& md5checksum, +std::shared_ptr Downloader::createDownloadFileTask(std::string_view srcUrl, + std::string_view storagePath, + std::string_view identifier, + std::string_view md5checksum, bool background) { auto task = std::make_shared(srcUrl, storagePath, md5checksum, identifier, background); @@ -167,7 +167,7 @@ std::shared_ptr Downloader::createDownloadFileTask(const std::stri return task; } -// std::string Downloader::getFileNameFromUrl(const std::string& srcUrl) +// std::string Downloader::getFileNameFromUrl(std::string_view srcUrl) //{ // // Find file name and file extension // std::string filename; diff --git a/cocos/network/CCDownloader.h b/cocos/network/CCDownloader.h index 164859bb73ec..16a6009ace81 100644 --- a/cocos/network/CCDownloader.h +++ b/cocos/network/CCDownloader.h @@ -72,11 +72,11 @@ class CC_DLL DownloadTask final } mutable progressInfo; DownloadTask(); - DownloadTask(const std::string& srcUrl, const std::string& identifier); - DownloadTask(const std::string& srcUrl, - const std::string& storagePath, - const std::string& checksum, // currently is MD5 - const std::string& identifier, + DownloadTask(std::string_view srcUrl, std::string_view identifier); + DownloadTask(std::string_view srcUrl, + std::string_view storagePath, + std::string_view checksum, // currently is MD5 + std::string_view identifier, bool background); virtual ~DownloadTask(); @@ -114,7 +114,7 @@ class CC_DLL Downloader final std::function onTaskProgress; - std::function + std::function onTaskError; void setOnFileTaskSuccess(const std::function& callback) @@ -129,18 +129,18 @@ class CC_DLL Downloader final void setOnTaskError( const std::function< - void(const DownloadTask& task, int errorCode, int errorCodeInternal, const std::string& errorStr)>& + void(const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr)>& callback) { onTaskError = callback; }; - std::shared_ptr createDownloadDataTask(const std::string& srcUrl, const std::string& identifier = ""); + std::shared_ptr createDownloadDataTask(std::string_view srcUrl, std::string_view identifier = ""); - std::shared_ptr createDownloadFileTask(const std::string& srcUrl, - const std::string& storagePath, - const std::string& identifier = "", - const std::string& checksum = "", + std::shared_ptr createDownloadFileTask(std::string_view srcUrl, + std::string_view storagePath, + std::string_view identifier = "", + std::string_view checksum = "", bool background = false); private: diff --git a/cocos/network/CCIDownloaderImpl.h b/cocos/network/CCIDownloaderImpl.h index 71ffa7925345..ceefec26fe78 100644 --- a/cocos/network/CCIDownloaderImpl.h +++ b/cocos/network/CCIDownloaderImpl.h @@ -67,7 +67,7 @@ class IDownloaderImpl std::function& data)> onTaskFinish; diff --git a/cocos/network/HttpClient.cpp b/cocos/network/HttpClient.cpp index 0f2f78290ef7..81b6dcfc5e29 100644 --- a/cocos/network/HttpClient.cpp +++ b/cocos/network/HttpClient.cpp @@ -104,7 +104,7 @@ void HttpClient::enableCookies(const char* cookieFile) _cookie->readFile(); } -void HttpClient::setSSLVerification(const std::string& caFile) +void HttpClient::setSSLVerification(std::string_view caFile) { std::lock_guard lock(_sslCaFileMutex); _sslCaFilename = caFile; @@ -167,9 +167,9 @@ void HttpClient::handleNetworkStatusChanged() _service->set_option(YOPT_S_DNS_DIRTY, 1); } -void HttpClient::setNameServers(const std::string& servers) +void HttpClient::setNameServers(std::string_view servers) { - _service->set_option(YOPT_S_DNS_LIST, servers.c_str()); + _service->set_option(YOPT_S_DNS_LIST, servers.data()); } yasio::io_service* HttpClient::getInternalService() @@ -208,7 +208,7 @@ int HttpClient::tryTakeAvailChannel() return -1; } -void HttpClient::processResponse(HttpResponse* response, const std::string& url) +void HttpClient::processResponse(HttpResponse* response, std::string_view url) { auto channelIndex = tryTakeAvailChannel(); response->retain(); @@ -221,7 +221,7 @@ void HttpClient::processResponse(HttpResponse* response, const std::string& url) auto& requestUri = response->getRequestUri(); auto channelHandle = _service->channel_at(channelIndex); channelHandle->ud_.ptr = response; - _service->set_option(YOPT_C_REMOTE_ENDPOINT, channelIndex, requestUri.getHost().c_str(), + _service->set_option(YOPT_C_REMOTE_ENDPOINT, channelIndex, requestUri.getHost().data(), (int)requestUri.getPort()); if (requestUri.isSecure()) _service->open(channelIndex, YCK_SSL_CLIENT); @@ -530,13 +530,13 @@ int HttpClient::getTimeoutForRead() return _timeoutForRead; } -const std::string& HttpClient::getCookieFilename() +std::string_view HttpClient::getCookieFilename() { std::lock_guard lock(_cookieFileMutex); return _cookieFilename; } -const std::string& HttpClient::getSSLVerification() +std::string_view HttpClient::getSSLVerification() { std::lock_guard lock(_sslCaFileMutex); return _sslCaFilename; diff --git a/cocos/network/HttpClient.h b/cocos/network/HttpClient.h index 7d6fd1a7a649..36a191fbf654 100644 --- a/cocos/network/HttpClient.h +++ b/cocos/network/HttpClient.h @@ -89,21 +89,21 @@ class CC_DLL HttpClient * * @return the cookie filename */ - const std::string& getCookieFilename(); + std::string_view getCookieFilename(); /** * Set root certificate path for SSL verification. * * @param caFile a full path of root certificate.if it is empty, SSL verification is disabled. */ - void setSSLVerification(const std::string& caFile); + void setSSLVerification(std::string_view caFile); /** * Get the ssl CA filename * * @return the ssl CA filename */ - const std::string& getSSLVerification(); + std::string_view getSSLVerification(); /** * Send http request concurrently, non-blocking @@ -197,7 +197,7 @@ class CC_DLL HttpClient * Sets custom dns server list: * format: "xxx.xxx.xxx.xxx[:port],xxx.xxx.xxx.xxx[:port] */ - void setNameServers(const std::string& servers); + void setNameServers(std::string_view servers); yasio::io_service* getInternalService(); @@ -205,7 +205,7 @@ class CC_DLL HttpClient HttpClient(); virtual ~HttpClient(); - void processResponse(HttpResponse* response, const std::string& url); + void processResponse(HttpResponse* response, std::string_view url); int tryTakeAvailChannel(); diff --git a/cocos/network/HttpCookie.cpp b/cocos/network/HttpCookie.cpp index be22e571b11e..bfe76554e184 100644 --- a/cocos/network/HttpCookie.cpp +++ b/cocos/network/HttpCookie.cpp @@ -151,11 +151,11 @@ std::string HttpCookie::checkAndGetFormatedMatchCookies(const Uri& uri) return ret; } -bool HttpCookie::updateOrAddCookie(const std::string& cookie, const Uri& uri) +bool HttpCookie::updateOrAddCookie(std::string_view cookie, const Uri& uri) { unsigned int count = 0; CookieInfo info; - xsbase::nzls::fast_split(cookie.c_str(), cookie.length(), ';', [&](const char* start, const char* end) { + xsbase::nzls::fast_split(cookie.data(), cookie.length(), ';', [&](const char* start, const char* end) { unsigned int count_ = 0; while (*start == ' ') ++start; // skip ws @@ -289,7 +289,7 @@ void HttpCookie::writeFile() fclose(out); } -void HttpCookie::setCookieFileName(const std::string& filename) +void HttpCookie::setCookieFileName(std::string_view filename) { _cookieFileName = filename; } diff --git a/cocos/network/HttpCookie.h b/cocos/network/HttpCookie.h index 8e7d116cac0c..4ba517d2d25f 100644 --- a/cocos/network/HttpCookie.h +++ b/cocos/network/HttpCookie.h @@ -90,7 +90,7 @@ class HttpCookie void readFile(); void writeFile(); - void setCookieFileName(const std::string& fileName); + void setCookieFileName(std::string_view fileName); const std::vector* getCookies() const; const CookieInfo* getMatchCookie(const Uri& uri) const; @@ -98,7 +98,7 @@ class HttpCookie // Check match cookies for http request std::string checkAndGetFormatedMatchCookies(const Uri& uri); - bool updateOrAddCookie(const std::string& cookie, const Uri& uri); + bool updateOrAddCookie(std::string_view cookie, const Uri& uri); private: std::string _cookieFileName; diff --git a/cocos/network/HttpRequest.h b/cocos/network/HttpRequest.h index 2dee876f3200..10a5ad007211 100644 --- a/cocos/network/HttpRequest.h +++ b/cocos/network/HttpRequest.h @@ -125,14 +125,14 @@ class CC_DLL HttpRequest : public Ref * * @param url the string object. */ - void setUrl(const std::string& url) { _url = url; } + void setUrl(std::string_view url) { _url = url; } /** * Get the url address of HttpRequest object. * * @return const char* the pointer of _url. */ - const std::string& getUrl() const { return _url; } + std::string_view getUrl() const { return _url; } /** * Set the request data of HttpRequest object. @@ -168,7 +168,7 @@ class CC_DLL HttpRequest : public Ref * * @param tag the string object. */ - void setTag(const std::string& tag) { _tag = tag; } + void setTag(std::string_view tag) { _tag = tag; } /** * Get the string tag to identify the request. diff --git a/cocos/network/HttpResponse.h b/cocos/network/HttpResponse.h index 8909c36440ea..68b3694df6e4 100644 --- a/cocos/network/HttpResponse.h +++ b/cocos/network/HttpResponse.h @@ -155,7 +155,7 @@ class CC_DLL HttpResponse : public cocos2d::Ref * @param value a string pointer that point to response data buffer. * @param n the defined size that the response data buffer would be copied. */ - bool prepareForProcess(const std::string& url) + bool prepareForProcess(std::string_view url) { /* Resets response status */ _finished = false; diff --git a/cocos/network/Uri.cpp b/cocos/network/Uri.cpp index 665837fccc88..835738740bff 100644 --- a/cocos/network/Uri.cpp +++ b/cocos/network/Uri.cpp @@ -143,7 +143,7 @@ bool Uri::operator==(const Uri& o) const _queryParams == o._queryParams); } -Uri Uri::parse(const std::string& str) +Uri Uri::parse(std::string_view str) { Uri uri; @@ -155,7 +155,7 @@ Uri Uri::parse(const std::string& str) return uri; } -bool Uri::doParse(const std::string& str) +bool Uri::doParse(std::string_view str) { static const std::regex uriRegex( "([a-zA-Z][a-zA-Z0-9+.-]*):" // scheme: @@ -182,7 +182,7 @@ bool Uri::doParse(const std::string& str) std::smatch match; if (UNLIKELY(!std::regex_match(copied.cbegin(), copied.cend(), match, uriRegex))) { - CCLOGERROR("Invalid URI: %s", str.c_str()); + CCLOGERROR("Invalid URI: %s", str.data()); return false; } diff --git a/cocos/network/Uri.h b/cocos/network/Uri.h index aa24b1d9249d..de32b9892158 100644 --- a/cocos/network/Uri.h +++ b/cocos/network/Uri.h @@ -58,7 +58,7 @@ class CC_DLL Uri /** * Parse a Uri from a string. Throws std::invalid_argument on parse error. */ - static Uri parse(const std::string& str); + static Uri parse(std::string_view str); /** Default constructor */ Uri(); @@ -85,18 +85,18 @@ class CC_DLL Uri bool isSecure() const { return _isSecure; } /** Gets the scheme name for this URI. */ - const std::string& getScheme() const { return _scheme; } + std::string_view getScheme() const { return _scheme; } /** Gets the user name with the specified URI. */ - const std::string& getUserName() const { return _username; } + std::string_view getUserName() const { return _username; } /** Gets the password with the specified URI. */ - const std::string& getPassword() const { return _password; } + std::string_view getPassword() const { return _password; } /** * Get host part of URI. If host is an IPv6 address, square brackets will be * returned, for example: "[::1]". */ - const std::string& getHost() const { return _host; } + std::string_view getHost() const { return _host; } /** * Get host part of URI. If host is an IPv6 address, square brackets will not * be returned, for exmaple "::1"; otherwise it returns the same thing as @@ -106,29 +106,29 @@ class CC_DLL Uri * or API that connects to that host/port; e.g. getaddrinfo() only understands * IPv6 host without square brackets */ - const std::string& getHostName() const { return _hostName; } + std::string_view getHostName() const { return _hostName; } /** Gets the port number of the URI. */ uint16_t getPort() const { return _port; } /** Gets the path part of the URI. */ - const std::string& getPath() const { return _path; } + std::string_view getPath() const { return _path; } /// Gets the path, query and fragment parts of the URI. - const std::string& getPathEtc() const { return _pathEtc; } + std::string_view getPathEtc() const { return _pathEtc; } /** Gets the query part of the URI. */ - const std::string& getQuery() const { return _query; } + std::string_view getQuery() const { return _query; } /** Gets the fragment part of the URI */ - const std::string& getFragment() const { return _fragment; } + std::string_view getFragment() const { return _fragment; } /** Gets the authority part (userName, password, host and port) of the URI. * @note If the port number is a well-known port * number for the given scheme (e.g., 80 for http), it * is not included in the authority. */ - const std::string& getAuthority() const { return _authority; } + std::string_view getAuthority() const { return _authority; } /** Gets a string representation of the URI. */ std::string toString() const; @@ -159,7 +159,7 @@ class CC_DLL Uri void clear(); private: - bool doParse(const std::string& str); + bool doParse(std::string_view str); bool _isValid; bool _isSecure; diff --git a/cocos/physics3d/CCPhysicsSprite3D.cpp b/cocos/physics3d/CCPhysicsSprite3D.cpp index be3b00805401..26a0da9a7f52 100644 --- a/cocos/physics3d/CCPhysicsSprite3D.cpp +++ b/cocos/physics3d/CCPhysicsSprite3D.cpp @@ -31,7 +31,7 @@ NS_CC_BEGIN -PhysicsSprite3D* PhysicsSprite3D::create(const std::string& modelPath, +PhysicsSprite3D* PhysicsSprite3D::create(std::string_view modelPath, Physics3DRigidBodyDes* rigidDes, const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics) @@ -50,7 +50,7 @@ PhysicsSprite3D* PhysicsSprite3D::create(const std::string& modelPath, return ret; } -PhysicsSprite3D* PhysicsSprite3D::createWithCollider(const std::string& modelPath, +PhysicsSprite3D* PhysicsSprite3D::createWithCollider(std::string_view modelPath, Physics3DColliderDes* colliderDes, const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics) diff --git a/cocos/physics3d/CCPhysicsSprite3D.h b/cocos/physics3d/CCPhysicsSprite3D.h index 3a61876de442..7e94346f5504 100644 --- a/cocos/physics3d/CCPhysicsSprite3D.h +++ b/cocos/physics3d/CCPhysicsSprite3D.h @@ -48,13 +48,13 @@ class CC_DLL PhysicsSprite3D : public cocos2d::Sprite3D { public: /** creates a PhysicsSprite3D*/ - static PhysicsSprite3D* create(const std::string& modelPath, + static PhysicsSprite3D* create(std::string_view modelPath, Physics3DRigidBodyDes* rigidDes, const cocos2d::Vec3& translateInPhysics = cocos2d::Vec3::ZERO, const cocos2d::Quaternion& rotInPhsyics = cocos2d::Quaternion::ZERO); /** creates a PhysicsSprite3D as a collider*/ - static PhysicsSprite3D* createWithCollider(const std::string& modelPath, + static PhysicsSprite3D* createWithCollider(std::string_view modelPath, Physics3DColliderDes* colliderDes, const cocos2d::Vec3& translateInPhysics = cocos2d::Vec3::ZERO, const cocos2d::Quaternion& rotInPhsyics = cocos2d::Quaternion::ZERO); diff --git a/cocos/platform/CCApplicationProtocol.h b/cocos/platform/CCApplicationProtocol.h index 7bb1e930fdaa..cfb3b0ba0443 100644 --- a/cocos/platform/CCApplicationProtocol.h +++ b/cocos/platform/CCApplicationProtocol.h @@ -152,7 +152,7 @@ class CC_DLL ApplicationProtocol * @js NA * @lua NA */ - virtual bool openURL(const std::string& url) = 0; + virtual bool openURL(std::string_view url) = 0; }; // end of platform group diff --git a/cocos/platform/CCFileStream.h b/cocos/platform/CCFileStream.h index e44e74a512fb..74caba22bc73 100644 --- a/cocos/platform/CCFileStream.h +++ b/cocos/platform/CCFileStream.h @@ -28,7 +28,7 @@ class CC_DLL FileStream * @param mode File open mode, being READ | WRITE | APPEND * @return true if successful, false if not */ - virtual bool open(const std::string& path, FileStream::Mode mode) = 0; + virtual bool open(std::string_view path, FileStream::Mode mode) = 0; /** * Close a file stream diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 06fd8061c896..588465d382e6 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -92,7 +92,7 @@ class DictMaker : public SAXDelegator ~DictMaker() {} - ValueMap dictionaryWithContentsOfFile(const std::string& fileName) + ValueMap dictionaryWithContentsOfFile(std::string_view fileName) { _resultType = SAX_RESULT_DICT; SAXParser parser; @@ -116,7 +116,7 @@ class DictMaker : public SAXDelegator return _rootDict; } - ValueVector arrayWithContentsOfFile(const std::string& fileName) + ValueVector arrayWithContentsOfFile(std::string_view fileName) { _resultType = SAX_RESULT_ARRAY; SAXParser parser; @@ -321,7 +321,7 @@ class DictMaker : public SAXDelegator } }; -ValueMap FileUtils::getValueMapFromFile(const std::string& filename) const +ValueMap FileUtils::getValueMapFromFile(std::string_view filename) const { const std::string fullPath = fullPathForFilename(filename); DictMaker tMaker; @@ -334,7 +334,7 @@ ValueMap FileUtils::getValueMapFromData(const char* filedata, int filesize) cons return tMaker.dictionaryWithDataOfFile(filedata, filesize); } -ValueVector FileUtils::getValueVectorFromFile(const std::string& filename) const +ValueVector FileUtils::getValueVectorFromFile(std::string_view filename) const { const std::string fullPath = fullPathForFilename(filename); DictMaker tMaker; @@ -350,12 +350,12 @@ static void generateElementForDict(const ValueMap& dict, pugi::xml_node& innerDi /* * Use pugixml to write plist files */ -bool FileUtils::writeToFile(const ValueMap& dict, const std::string& fullPath) const +bool FileUtils::writeToFile(const ValueMap& dict, std::string_view fullPath) const { return writeValueMapToFile(dict, fullPath); } -bool FileUtils::writeValueMapToFile(const ValueMap& dict, const std::string& fullPath) const +bool FileUtils::writeValueMapToFile(const ValueMap& dict, std::string_view fullPath) const { pugi::xml_document doc; doc.load_string(R"( @@ -371,7 +371,7 @@ bool FileUtils::writeValueMapToFile(const ValueMap& dict, const std::string& ful return writeStringToFile(ss.str(), fullPath); } -bool FileUtils::writeValueVectorToFile(const ValueVector& vecData, const std::string& fullPath) const +bool FileUtils::writeValueVectorToFile(const ValueVector& vecData, std::string_view fullPath) const { pugi::xml_document doc; doc.load_string(R"( @@ -460,35 +460,35 @@ FileUtils::FileUtils() : _writablePath("") {} FileUtils::~FileUtils() {} -bool FileUtils::writeStringToFile(const std::string& dataStr, const std::string& fullPath) const +bool FileUtils::writeStringToFile(std::string_view dataStr, std::string_view fullPath) const { - return FileUtils::writeBinaryToFile(dataStr.c_str(), dataStr.size(), fullPath); + return FileUtils::writeBinaryToFile(dataStr.data(), dataStr.size(), fullPath); } void FileUtils::writeStringToFile(std::string dataStr, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const { performOperationOffthread( - [fullPath](const std::string& dataStrIn) -> bool { + [fullPath](std::string_view dataStrIn) -> bool { return FileUtils::getInstance()->writeStringToFile(dataStrIn, fullPath); }, std::move(callback), std::move(dataStr)); } -bool FileUtils::writeDataToFile(const Data& data, const std::string& fullPath) const +bool FileUtils::writeDataToFile(const Data& data, std::string_view fullPath) const { return FileUtils::writeBinaryToFile(data.getBytes(), data.getSize(), fullPath); } -void FileUtils::writeDataToFile(Data data, const std::string& fullPath, std::function callback) const +void FileUtils::writeDataToFile(Data data, std::string_view fullPath, std::function callback) const { performOperationOffthread( [fullPath](const Data& dataIn) -> bool { return FileUtils::getInstance()->writeDataToFile(dataIn, fullPath); }, std::move(callback), std::move(data)); } -bool FileUtils::writeBinaryToFile(const void* data, size_t dataSize, const std::string& fullPath) +bool FileUtils::writeBinaryToFile(const void* data, size_t dataSize, std::string_view fullPath) { CCASSERT(!fullPath.empty() && dataSize > 0, "Invalid parameters."); @@ -521,14 +521,14 @@ void FileUtils::purgeCachedEntries() _fullPathCacheDir.clear(); } -std::string FileUtils::getStringFromFile(const std::string& filename) const +std::string FileUtils::getStringFromFile(std::string_view filename) const { std::string s; getContents(filename, &s); return s; } -void FileUtils::getStringFromFile(const std::string& path, std::function callback) const +void FileUtils::getStringFromFile(std::string_view path, std::function callback) const { // Get the full path on the main thread, to avoid the issue that FileUtil's is not // thread safe, and accessing the fullPath cache and searching the search paths is not thread safe @@ -538,21 +538,21 @@ void FileUtils::getStringFromFile(const std::string& path, std::function callback) const +void FileUtils::getDataFromFile(std::string_view filename, std::function callback) const { auto fullPath = fullPathForFilename(filename); performOperationOffthread([fullPath]() -> Data { return FileUtils::getInstance()->getDataFromFile(fullPath); }, std::move(callback)); } -FileUtils::Status FileUtils::getContents(const std::string& filename, ResizableBuffer* buffer) const +FileUtils::Status FileUtils::getContents(std::string_view filename, ResizableBuffer* buffer) const { if (filename.empty()) return Status::NotExists; @@ -591,7 +591,7 @@ FileUtils::Status FileUtils::getContents(const std::string& filename, ResizableB } void FileUtils::writeValueMapToFile(ValueMap dict, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const { @@ -603,7 +603,7 @@ void FileUtils::writeValueMapToFile(ValueMap dict, } void FileUtils::writeValueVectorToFile(ValueVector vecData, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const { performOperationOffthread( @@ -613,7 +613,7 @@ void FileUtils::writeValueVectorToFile(ValueVector vecData, std::move(callback), std::move(vecData)); } -std::string FileUtils::getNewFilename(const std::string& filename) const +std::string FileUtils::getNewFilename(std::string_view filename) const { std::string newFileName; @@ -633,11 +633,11 @@ std::string FileUtils::getNewFilename(const std::string& filename) const return newFileName; } -std::string FileUtils::getPathForFilename(const std::string& filename, - const std::string& resolutionDirectory, - const std::string& searchPath) const +std::string FileUtils::getPathForFilename(std::string_view filename, + std::string_view resolutionDirectory, + std::string_view searchPath) const { - std::string file = filename; + auto file = filename; std::string file_path = ""; size_t pos = filename.find_last_of('/'); if (pos != std::string::npos) @@ -647,7 +647,7 @@ std::string FileUtils::getPathForFilename(const std::string& filename, } // searchPath + file_path + resourceDirectory - std::string path = searchPath; + std::string path{searchPath}; path += file_path; path += resolutionDirectory; @@ -656,14 +656,14 @@ std::string FileUtils::getPathForFilename(const std::string& filename, return path; } -std::string FileUtils::getPathForDirectory(const std::string& dir, - const std::string& resolutionDiretory, - const std::string& searchPath) const +std::string FileUtils::getPathForDirectory(std::string_view dir, + std::string_view resolutionDiretory, + std::string_view searchPath) const { - return searchPath + resolutionDiretory + dir; + return std::string{searchPath}.append(resolutionDiretory).append(dir); } -std::string FileUtils::fullPathForFilename(const std::string& filename) const +std::string FileUtils::fullPathForFilename(std::string_view filename) const { DECLARE_GUARD; @@ -681,7 +681,7 @@ std::string FileUtils::fullPathForFilename(const std::string& filename) const */ if (isAbsolutePath(filename)) { - return filename; + return std::string{filename}; } // Already Cached ? @@ -713,14 +713,14 @@ std::string FileUtils::fullPathForFilename(const std::string& filename) const if (isPopupNotify()) { - CCLOG("cocos2d: fullPathForFilename: No file found at %s. Possible missing file.", filename.c_str()); + CCLOG("cocos2d: fullPathForFilename: No file found at %s. Possible missing file.", filename.data()); } // The file wasn't found, return empty string. - return ""; + return std::string{}; } -std::string FileUtils::fullPathForDirectory(const std::string& dir) const +std::string FileUtils::fullPathForDirectory(std::string_view dir) const { DECLARE_GUARD; @@ -731,7 +731,7 @@ std::string FileUtils::fullPathForDirectory(const std::string& dir) const if (isAbsolutePath(dir)) { - return dir; + return std::string{dir}; } // Already Cached ? @@ -740,7 +740,7 @@ std::string FileUtils::fullPathForDirectory(const std::string& dir) const { return cacheIter->second; } - std::string longdir = dir; + std::string longdir{dir}; std::string fullpath; if (longdir[longdir.length() - 1] != '/') @@ -766,16 +766,16 @@ std::string FileUtils::fullPathForDirectory(const std::string& dir) const if (isPopupNotify()) { - CCLOG("cocos2d: fullPathForDirectory: No directory found at %s. Possible missing directory.", dir.c_str()); + CCLOG("cocos2d: fullPathForDirectory: No directory found at %s. Possible missing directory.", dir.data()); } // The file wasn't found, return empty string. return ""; } -std::string FileUtils::fullPathFromRelativeFile(const std::string& filename, const std::string& relativeFile) const +std::string FileUtils::fullPathFromRelativeFile(std::string_view filename, std::string_view relativeFile) const { - return relativeFile.substr(0, relativeFile.rfind('/') + 1) + getNewFilename(filename); + return std::string{relativeFile.substr(0, relativeFile.rfind('/') + 1)}.append(getNewFilename(filename)); } void FileUtils::setSearchResolutionsOrder(const std::vector& searchResolutionsOrder) @@ -795,7 +795,7 @@ void FileUtils::setSearchResolutionsOrder(const std::vector& search for (const auto& iter : searchResolutionsOrder) { std::string resolutionDirectory = iter; - if (!existDefault && resolutionDirectory == "") + if (!existDefault && resolutionDirectory.empty()) { existDefault = true; } @@ -814,12 +814,12 @@ void FileUtils::setSearchResolutionsOrder(const std::vector& search } } -void FileUtils::addSearchResolutionsOrder(const std::string& order, const bool front) +void FileUtils::addSearchResolutionsOrder(std::string_view order, const bool front) { DECLARE_GUARD; - std::string resOrder = order; + std::string resOrder{order}; if (!resOrder.empty() && resOrder[resOrder.length() - 1] != '/') resOrder.push_back('/'); @@ -851,7 +851,7 @@ const std::vector FileUtils::getOriginalSearchPaths() const return _originalSearchPaths; } -void FileUtils::setWritablePath(const std::string& writablePath) +void FileUtils::setWritablePath(std::string_view writablePath) { DECLARE_GUARD; _writablePath = writablePath; @@ -863,7 +863,7 @@ const std::string FileUtils::getDefaultResourceRootPath() const return _defaultResRootPath; } -void FileUtils::setDefaultResourceRootPath(const std::string& path) +void FileUtils::setDefaultResourceRootPath(std::string_view path) { DECLARE_GUARD; if (_defaultResRootPath != path) @@ -919,14 +919,14 @@ void FileUtils::setSearchPaths(const std::vector& searchPaths) } } -void FileUtils::addSearchPath(const std::string& searchpath, const bool front) +void FileUtils::addSearchPath(std::string_view searchpath, const bool front) { DECLARE_GUARD; - std::string prefix; + std::string path; if (!isAbsolutePath(searchpath)) - prefix = _defaultResRootPath; + path = _defaultResRootPath; - std::string path = prefix + searchpath; + path.append(searchpath); if (!path.empty() && path[path.length() - 1] != '/') { path += "/"; @@ -934,13 +934,13 @@ void FileUtils::addSearchPath(const std::string& searchpath, const bool front) if (front) { - _originalSearchPaths.insert(_originalSearchPaths.begin(), searchpath); - _searchPathArray.insert(_searchPathArray.begin(), path); + _originalSearchPaths.insert(_originalSearchPaths.begin(), std::string{searchpath}); + _searchPathArray.insert(_searchPathArray.begin(), std::move(path)); } else { - _originalSearchPaths.push_back(searchpath); - _searchPathArray.push_back(path); + _originalSearchPaths.push_back(std::string{searchpath}); + _searchPathArray.push_back(std::move(path)); } } @@ -952,7 +952,7 @@ void FileUtils::setFilenameLookupDictionary(const ValueMap& filenameLookupDict) _filenameLookupDict = filenameLookupDict; } -void FileUtils::loadFilenameLookupDictionaryFromFile(const std::string& filename) +void FileUtils::loadFilenameLookupDictionaryFromFile(std::string_view filename) { const std::string fullPath = fullPathForFilename(filename); if (!fullPath.empty()) @@ -965,7 +965,7 @@ void FileUtils::loadFilenameLookupDictionaryFromFile(const std::string& filename if (version != 1) { CCLOG("cocos2d: ERROR: Invalid filenameLookup dictionary version: %d. Filename: %s", version, - filename.c_str()); + filename.data()); return; } setFilenameLookupDictionary(dict["filenames"].asValueMap()); @@ -973,12 +973,12 @@ void FileUtils::loadFilenameLookupDictionaryFromFile(const std::string& filename } } -std::string FileUtils::getFullPathForFilenameWithinDirectory(const std::string& directory, - const std::string& filename) const +std::string FileUtils::getFullPathForFilenameWithinDirectory(std::string_view directory, + std::string_view filename) const { // get directory+filename, safely adding '/' as necessary - std::string ret = directory; - if (directory.size() && directory[directory.size() - 1] != '/') + std::string ret{directory}; + if (!directory.empty() && directory[directory.size() - 1] != '/') { ret += '/'; } @@ -986,12 +986,12 @@ std::string FileUtils::getFullPathForFilenameWithinDirectory(const std::string& // if the file doesn't exist, return an empty string if (!isFileExistInternal(ret)) { - ret = ""; + ret.clear(); } return ret; } -bool FileUtils::isFileExist(const std::string& filename) const +bool FileUtils::isFileExist(std::string_view filename) const { if (isAbsolutePath(filename)) { @@ -1007,19 +1007,19 @@ bool FileUtils::isFileExist(const std::string& filename) const } } -void FileUtils::isFileExist(const std::string& filename, std::function callback) const +void FileUtils::isFileExist(std::string_view filename, std::function callback) const { auto fullPath = fullPathForFilename(filename); performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->isFileExist(fullPath); }, std::move(callback)); } -bool FileUtils::isAbsolutePath(const std::string& path) const +bool FileUtils::isAbsolutePath(std::string_view path) const { return isAbsolutePathInternal(path); } -bool FileUtils::isAbsolutePathInternal(const std::string& path) +bool FileUtils::isAbsolutePathInternal(std::string_view path) { #if defined(_WIN32) // see also: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN @@ -1034,7 +1034,7 @@ bool FileUtils::isAbsolutePathInternal(const std::string& path) #endif } -bool FileUtils::isDirectoryExist(const std::string& dirPath) const +bool FileUtils::isDirectoryExist(std::string_view dirPath) const { CCASSERT(!dirPath.empty(), "Invalid path"); @@ -1051,35 +1051,35 @@ bool FileUtils::isDirectoryExist(const std::string& dirPath) const } } -void FileUtils::isDirectoryExist(const std::string& fullPath, std::function callback) const +void FileUtils::isDirectoryExist(std::string_view fullPath, std::function callback) const { CCASSERT(isAbsolutePath(fullPath), "Async isDirectoryExist only accepts absolute file paths"); performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->isDirectoryExist(fullPath); }, std::move(callback)); } -void FileUtils::createDirectory(const std::string& dirPath, std::function callback) const +void FileUtils::createDirectory(std::string_view dirPath, std::function callback) const { performOperationOffthread([dirPath]() -> bool { return FileUtils::getInstance()->createDirectory(dirPath); }, std::move(callback)); } -void FileUtils::removeDirectory(const std::string& dirPath, std::function callback) const +void FileUtils::removeDirectory(std::string_view dirPath, std::function callback) const { performOperationOffthread([dirPath]() -> bool { return FileUtils::getInstance()->removeDirectory(dirPath); }, std::move(callback)); } -void FileUtils::removeFile(const std::string& filepath, std::function callback) const +void FileUtils::removeFile(std::string_view filepath, std::function callback) const { auto fullPath = fullPathForFilename(filepath); performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->removeFile(fullPath); }, std::move(callback)); } -void FileUtils::renameFile(const std::string& path, - const std::string& oldname, - const std::string& name, +void FileUtils::renameFile(std::string_view path, + std::string_view oldname, + std::string_view name, std::function callback) const { performOperationOffthread( @@ -1087,8 +1087,8 @@ void FileUtils::renameFile(const std::string& path, std::move(callback)); } -void FileUtils::renameFile(const std::string& oldfullpath, - const std::string& newfullpath, +void FileUtils::renameFile(std::string_view oldfullpath, + std::string_view newfullpath, std::function callback) const { performOperationOffthread( @@ -1096,21 +1096,21 @@ void FileUtils::renameFile(const std::string& oldfullpath, std::move(callback)); } -void FileUtils::getFileSize(const std::string& filepath, std::function callback) const +void FileUtils::getFileSize(std::string_view filepath, std::function callback) const { auto fullPath = fullPathForFilename(filepath); performOperationOffthread([fullPath]() { return FileUtils::getInstance()->getFileSize(fullPath); }, std::move(callback)); } -void FileUtils::listFilesAsync(const std::string& dirPath, std::function)> callback) const +void FileUtils::listFilesAsync(std::string_view dirPath, std::function)> callback) const { auto fullPath = fullPathForDirectory(dirPath); performOperationOffthread([fullPath]() { return FileUtils::getInstance()->listFiles(fullPath); }, std::move(callback)); } -void FileUtils::listFilesRecursivelyAsync(const std::string& dirPath, +void FileUtils::listFilesRecursivelyAsync(std::string_view dirPath, std::function)> callback) const { auto fullPath = fullPathForDirectory(dirPath); @@ -1123,7 +1123,7 @@ void FileUtils::listFilesRecursivelyAsync(const std::string& dirPath, std::move(callback)); } -std::unique_ptr FileUtils::openFileStream(const std::string& filePath, FileStream::Mode mode) +std::unique_ptr FileUtils::openFileStream(std::string_view filePath, FileStream::Mode mode) { PosixFileStream fs; @@ -1137,55 +1137,55 @@ std::unique_ptr FileUtils::openFileStream(const std::string& filePat #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) // windows os implement should override in platform specific FileUtiles class -bool FileUtils::isDirectoryExistInternal(const std::string& dirPath) const +bool FileUtils::isDirectoryExistInternal(std::string_view dirPath) const { CCASSERT(false, "FileUtils not support isDirectoryExistInternal"); return false; } -bool FileUtils::createDirectory(const std::string& path) const +bool FileUtils::createDirectory(std::string_view path) const { CCASSERT(false, "FileUtils not support createDirectory"); return false; } -bool FileUtils::removeDirectory(const std::string& path) const +bool FileUtils::removeDirectory(std::string_view path) const { CCASSERT(false, "FileUtils not support removeDirectory"); return false; } -bool FileUtils::removeFile(const std::string& path) const +bool FileUtils::removeFile(std::string_view path) const { CCASSERT(false, "FileUtils not support removeFile"); return false; } -bool FileUtils::renameFile(const std::string& oldfullpath, const std::string& newfullpath) const +bool FileUtils::renameFile(std::string_view oldfullpath, std::string_view newfullpath) const { CCASSERT(false, "FileUtils not support renameFile"); return false; } -bool FileUtils::renameFile(const std::string& path, const std::string& oldname, const std::string& name) const +bool FileUtils::renameFile(std::string_view path, std::string_view oldname, std::string_view name) const { CCASSERT(false, "FileUtils not support renameFile"); return false; } -int64_t FileUtils::getFileSize(const std::string& filepath) const +int64_t FileUtils::getFileSize(std::string_view filepath) const { CCASSERT(false, "getFileSize should be override by platform FileUtils"); return 0; } -std::vector FileUtils::listFiles(const std::string& dirPath) const +std::vector FileUtils::listFiles(std::string_view dirPath) const { CCASSERT(false, "FileUtils not support listFiles"); return std::vector(); } -void FileUtils::listFilesRecursively(const std::string& dirPath, std::vector* files) const +void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const { CCASSERT(false, "FileUtils not support listFilesRecursively"); return; @@ -1203,7 +1203,7 @@ void FileUtils::listFilesRecursively(const std::string& dirPath, std::vector # endif -bool FileUtils::isDirectoryExistInternal(const std::string& dirPath) const +bool FileUtils::isDirectoryExistInternal(std::string_view dirPath) const { struct stat st; if (stat(dirPath.c_str(), &st) == 0) @@ -1213,7 +1213,7 @@ bool FileUtils::isDirectoryExistInternal(const std::string& dirPath) const return false; } -bool FileUtils::createDirectory(const std::string& path) const +bool FileUtils::createDirectory(std::string_view path) const { CCASSERT(!path.empty(), "Invalid path"); @@ -1291,7 +1291,7 @@ int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, struct FTW # endif } // namespace -bool FileUtils::removeDirectory(const std::string& path) const +bool FileUtils::removeDirectory(std::string_view path) const { # if !defined(CC_TARGET_OS_TVOS) @@ -1315,7 +1315,7 @@ bool FileUtils::removeDirectory(const std::string& path) const # endif // !defined(CC_TARGET_OS_TVOS) } -bool FileUtils::removeFile(const std::string& path) const +bool FileUtils::removeFile(std::string_view path) const { if (remove(path.c_str())) { @@ -1327,7 +1327,7 @@ bool FileUtils::removeFile(const std::string& path) const } } -bool FileUtils::renameFile(const std::string& oldfullpath, const std::string& newfullpath) const +bool FileUtils::renameFile(std::string_view oldfullpath, std::string_view newfullpath) const { CCASSERT(!oldfullpath.empty(), "Invalid path"); CCASSERT(!newfullpath.empty(), "Invalid path"); @@ -1343,7 +1343,7 @@ bool FileUtils::renameFile(const std::string& oldfullpath, const std::string& ne return true; } -bool FileUtils::renameFile(const std::string& path, const std::string& oldname, const std::string& name) const +bool FileUtils::renameFile(std::string_view path, std::string_view oldname, std::string_view name) const { CCASSERT(!path.empty(), "Invalid path"); std::string oldPath = path + oldname; @@ -1352,7 +1352,7 @@ bool FileUtils::renameFile(const std::string& path, const std::string& oldname, return this->renameFile(oldPath, newPath); } -int64_t FileUtils::getFileSize(const std::string& filepath) const +int64_t FileUtils::getFileSize(std::string_view filepath) const { CCASSERT(!filepath.empty(), "Invalid path"); @@ -1380,7 +1380,7 @@ int64_t FileUtils::getFileSize(const std::string& filepath) const } } -std::vector FileUtils::listFiles(const std::string& dirPath) const +std::vector FileUtils::listFiles(std::string_view dirPath) const { std::vector files; std::string fullpath = fullPathForDirectory(dirPath); @@ -1421,7 +1421,7 @@ std::vector FileUtils::listFiles(const std::string& dirPath) const return files; } -void FileUtils::listFilesRecursively(const std::string& dirPath, std::vector* files) const +void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const { std::string fullpath = fullPathForDirectory(dirPath); if (isDirectoryExist(fullpath)) @@ -1483,7 +1483,7 @@ bool FileUtils::isPopupNotify() const return s_popupNotify; } -std::string FileUtils::getFileExtension(const std::string& filePath) const +std::string FileUtils::getFileExtension(std::string_view filePath) const { std::string fileExtension; size_t pos = filePath.find_last_of('.'); @@ -1497,16 +1497,16 @@ std::string FileUtils::getFileExtension(const std::string& filePath) const return fileExtension; } -std::string FileUtils::getFileShortName(const std::string& filePath) +std::string FileUtils::getFileShortName(std::string_view filePath) { - std::string fileExtension; + // std::string fileExtension; size_t pos = filePath.find_last_of("/\\"); if (pos != std::string::npos) { - return filePath.substr(pos + 1); + return std::string{filePath.substr(pos + 1)}; } - return filePath; + return std::string{filePath}; } void FileUtils::valueMapCompact(ValueMap& /*valueMap*/) const {} diff --git a/cocos/platform/CCFileUtils.h b/cocos/platform/CCFileUtils.h index 3376b9035d7f..93810f542329 100644 --- a/cocos/platform/CCFileUtils.h +++ b/cocos/platform/CCFileUtils.h @@ -157,7 +157,7 @@ class CC_DLL FileUtils /** * Gets string from a file. */ - virtual std::string getStringFromFile(const std::string& filename) const; + virtual std::string getStringFromFile(std::string_view filename) const; /** * Gets string from a file, async off the main cocos thread @@ -166,13 +166,13 @@ class CC_DLL FileUtils * @param callback Function that will be called when file is read. Will be called * on the main cocos thread. */ - virtual void getStringFromFile(const std::string& path, std::function callback) const; + virtual void getStringFromFile(std::string_view path, std::function callback) const; /** * Creates binary data from a file. * @return A data object. */ - virtual Data getDataFromFile(const std::string& filename) const; + virtual Data getDataFromFile(std::string_view filename) const; /** * Gets a binary data object from a file, async off the main cocos thread. @@ -181,7 +181,7 @@ class CC_DLL FileUtils * @param callback Function that will be called when file is read. Will be called * on the main cocos thread. */ - virtual void getDataFromFile(const std::string& filename, std::function callback) const; + virtual void getDataFromFile(std::string_view filename, std::function callback) const; enum class Status { @@ -255,12 +255,12 @@ class CC_DLL FileUtils template >::value>::type> - Status getContents(const std::string& filename, T* buffer) const + Status getContents(std::string_view filename, T* buffer) const { ResizableBufferAdapter buf(buffer); return getContents(filename, &buf); } - virtual Status getContents(const std::string& filename, ResizableBuffer* buffer) const; + virtual Status getContents(std::string_view filename, ResizableBuffer* buffer) const; /** Returns the fullpath for a given filename. @@ -310,7 +310,7 @@ class CC_DLL FileUtils @since v2.1 */ - virtual std::string fullPathForFilename(const std::string& filename) const; + virtual std::string fullPathForFilename(std::string_view filename) const; /** * Loads the filenameLookup dictionary from the contents of a filename. @@ -345,7 +345,7 @@ class CC_DLL FileUtils * @js loadFilenameLookup * @lua loadFilenameLookup */ - virtual void loadFilenameLookupDictionaryFromFile(const std::string& filename); + virtual void loadFilenameLookupDictionaryFromFile(std::string_view filename); /** * Sets the filenameLookup dictionary. @@ -365,7 +365,7 @@ class CC_DLL FileUtils * dictionary. ) * */ - virtual std::string fullPathFromRelativeFile(const std::string& filename, const std::string& relativeFile) const; + virtual std::string fullPathFromRelativeFile(std::string_view filename, std::string_view relativeFile) const; /** * Sets the array that contains the search order of the resources. @@ -384,7 +384,7 @@ class CC_DLL FileUtils * @see setSearchResolutionsOrder(), fullPathForFilename(). * @since v2.1 */ - virtual void addSearchResolutionsOrder(const std::string& order, const bool front = false); + virtual void addSearchResolutionsOrder(std::string_view order, const bool front = false); /** * Gets the array that contains the search order of the resources. @@ -424,14 +424,14 @@ class CC_DLL FileUtils /** * Set default resource root path. */ - void setDefaultResourceRootPath(const std::string& path); + void setDefaultResourceRootPath(std::string_view path); /** * Add search path. * * @since v2.1 */ - void addSearchPath(const std::string& path, const bool front = false); + void addSearchPath(std::string_view path, const bool front = false); /** * Gets the array of search paths. @@ -468,7 +468,7 @@ class CC_DLL FileUtils /** * Sets writable path. */ - virtual void setWritablePath(const std::string& writablePath); + virtual void setWritablePath(std::string_view writablePath); /** * Sets whether to pop-up a message box when failed to load an image. @@ -486,7 +486,7 @@ class CC_DLL FileUtils * @return ValueMap of the file contents. * @note This method is used internally. */ - virtual ValueMap getValueMapFromFile(const std::string& filename) const; + virtual ValueMap getValueMapFromFile(std::string_view filename) const; /** Converts the contents of a file to a ValueMap. * This method is used internally. @@ -500,7 +500,7 @@ class CC_DLL FileUtils *@param fullPath The full path to the file you want to save a string *@return bool */ - virtual bool writeToFile(const ValueMap& dict, const std::string& fullPath) const; + virtual bool writeToFile(const ValueMap& dict, std::string_view fullPath) const; /** * write a string into a file @@ -509,7 +509,7 @@ class CC_DLL FileUtils * @param fullPath The full path to the file you want to save a string * @return bool True if write success */ - virtual bool writeStringToFile(const std::string& dataStr, const std::string& fullPath) const; + virtual bool writeStringToFile(std::string_view dataStr, std::string_view fullPath) const; /** * Write a string to a file, done async off the main cocos thread @@ -525,7 +525,7 @@ class CC_DLL FileUtils * signifying if the write was successful. */ virtual void writeStringToFile(std::string dataStr, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const; /** @@ -535,12 +535,12 @@ class CC_DLL FileUtils *@param fullPath The full path to the file you want to save a string *@return bool */ - virtual bool writeDataToFile(const Data& data, const std::string& fullPath) const; + virtual bool writeDataToFile(const Data& data, std::string_view fullPath) const; /** * save data to file */ - static bool writeBinaryToFile(const void* data, size_t dataSize, const std::string& fullPath); + static bool writeBinaryToFile(const void* data, size_t dataSize, std::string_view fullPath); /** * Write Data into a file, done async off the main cocos thread. @@ -556,7 +556,7 @@ class CC_DLL FileUtils * function will be executed on the main cocos thread. It will have on boolean argument * signifying if the write was successful. */ - virtual void writeDataToFile(Data data, const std::string& fullPath, std::function callback) const; + virtual void writeDataToFile(Data data, std::string_view fullPath, std::function callback) const; /** * write ValueMap into a plist file @@ -565,7 +565,7 @@ class CC_DLL FileUtils *@param fullPath The full path to the file you want to save a string *@return bool */ - virtual bool writeValueMapToFile(const ValueMap& dict, const std::string& fullPath) const; + virtual bool writeValueMapToFile(const ValueMap& dict, std::string_view fullPath) const; /** * Write a ValueMap into a file, done async off the main cocos thread. @@ -582,7 +582,7 @@ class CC_DLL FileUtils * signifying if the write was successful. */ virtual void writeValueMapToFile(ValueMap dict, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const; /** @@ -592,7 +592,7 @@ class CC_DLL FileUtils *@param fullPath The full path to the file you want to save a string *@return bool */ - virtual bool writeValueVectorToFile(const ValueVector& vecData, const std::string& fullPath) const; + virtual bool writeValueVectorToFile(const ValueVector& vecData, std::string_view fullPath) const; /** * Write a ValueVector into a file, done async off the main cocos thread. @@ -609,12 +609,12 @@ class CC_DLL FileUtils * signifying if the write was successful. */ virtual void writeValueVectorToFile(ValueVector vecData, - const std::string& fullPath, + std::string_view fullPath, std::function callback) const; // Converts the contents of a file to a ValueVector. // This method is used internally. - virtual ValueVector getValueVectorFromFile(const std::string& filename) const; + virtual ValueVector getValueVectorFromFile(std::string_view filename) const; /** * Checks whether a file exists. @@ -623,7 +623,7 @@ class CC_DLL FileUtils * @param filename The path of the file, it could be a relative or absolute path. * @return True if the file exists, false if not. */ - virtual bool isFileExist(const std::string& filename) const; + virtual bool isFileExist(std::string_view filename) const; /** * Checks if a file exists, done async off the main cocos thread. @@ -635,7 +635,7 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the file exists, false otherwise. */ - virtual void isFileExist(const std::string& filename, std::function callback) const; + virtual void isFileExist(std::string_view filename, std::function callback) const; /** * Gets filename extension is a suffix (separated from the base filename by a dot) in lower case. @@ -643,14 +643,14 @@ class CC_DLL FileUtils * @param filePath The path of the file, it could be a relative or absolute path. * @return suffix for filename in lower case or empty if a dot not found. */ - virtual std::string getFileExtension(const std::string& filePath) const; + virtual std::string getFileExtension(std::string_view filePath) const; /** * Gets filename shotName * @param filePath The path of the file, it could be a relative or absolute path. * @return fileName.Extension without path */ - static std::string getFileShortName(const std::string& filePath); + static std::string getFileShortName(std::string_view filePath); /** * Checks whether the path is an absolute path. @@ -661,9 +661,9 @@ class CC_DLL FileUtils * @param path The path that needs to be checked. * @return True if it's an absolute path, false if not. */ - virtual bool isAbsolutePath(const std::string& path) const; + virtual bool isAbsolutePath(std::string_view path) const; - static bool isAbsolutePathInternal(const std::string& path); + static bool isAbsolutePathInternal(std::string_view path); /** * Checks whether the path is a directory. @@ -671,7 +671,7 @@ class CC_DLL FileUtils * @param dirPath The path of the directory, it could be a relative or an absolute path. * @return True if the directory exists, false if not. */ - virtual bool isDirectoryExist(const std::string& dirPath) const; + virtual bool isDirectoryExist(std::string_view dirPath) const; /** * Checks whether the absoulate path is a directory, async off of the main cocos thread. @@ -680,7 +680,7 @@ class CC_DLL FileUtils * @param callback that will accept a boolean, true if the file exists, false otherwise. * Callback will happen on the main cocos thread. */ - virtual void isDirectoryExist(const std::string& fullPath, std::function callback) const; + virtual void isDirectoryExist(std::string_view fullPath, std::function callback) const; /** * Creates a directory. @@ -688,7 +688,7 @@ class CC_DLL FileUtils * @param dirPath The path of the directory, it must be an absolute path. * @return True if the directory have been created successfully, false if not. */ - virtual bool createDirectory(const std::string& dirPath) const; + virtual bool createDirectory(std::string_view dirPath) const; /** * Create a directory, async off the main cocos thread. @@ -697,7 +697,7 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the directory was successfully, false otherwise. */ - virtual void createDirectory(const std::string& dirPath, std::function callback) const; + virtual void createDirectory(std::string_view dirPath, std::function callback) const; /** * Removes a directory. @@ -705,7 +705,7 @@ class CC_DLL FileUtils * @param dirPath The full path of the directory, it must be an absolute path. * @return True if the directory have been removed successfully, false if not. */ - virtual bool removeDirectory(const std::string& dirPath) const; + virtual bool removeDirectory(std::string_view dirPath) const; /** * Removes a directory, async off the main cocos thread. @@ -714,7 +714,7 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the directory was successfully removed, false otherwise. */ - virtual void removeDirectory(const std::string& dirPath, std::function callback) const; + virtual void removeDirectory(std::string_view dirPath, std::function callback) const; /** * Removes a file. @@ -722,7 +722,7 @@ class CC_DLL FileUtils * @param filepath The full path of the file, it must be an absolute path. * @return True if the file have been removed successfully, false if not. */ - virtual bool removeFile(const std::string& filepath) const; + virtual bool removeFile(std::string_view filepath) const; /** * Removes a file, async off the main cocos thread. @@ -731,7 +731,7 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the file was successfully removed, false otherwise. */ - virtual void removeFile(const std::string& filepath, std::function callback) const; + virtual void removeFile(std::string_view filepath, std::function callback) const; /** * Renames a file under the given directory. @@ -741,7 +741,7 @@ class CC_DLL FileUtils * @param name The new name of the file. * @return True if the file have been renamed successfully, false if not. */ - virtual bool renameFile(const std::string& path, const std::string& oldname, const std::string& name) const; + virtual bool renameFile(std::string_view path, std::string_view oldname, std::string_view name) const; /** * Renames a file under the given directory, async off the main cocos thread. @@ -752,9 +752,9 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the file was successfully renamed, false otherwise. */ - virtual void renameFile(const std::string& path, - const std::string& oldname, - const std::string& name, + virtual void renameFile(std::string_view path, + std::string_view oldname, + std::string_view name, std::function callback) const; /** @@ -764,7 +764,7 @@ class CC_DLL FileUtils * @param newfullpath The new fullpath of the file. Includes path and name. * @return True if the file have been renamed successfully, false if not. */ - virtual bool renameFile(const std::string& oldfullpath, const std::string& newfullpath) const; + virtual bool renameFile(std::string_view oldfullpath, std::string_view newfullpath) const; /** * Renames a file under the given directory, async off the main cocos thread. @@ -774,8 +774,8 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one boolean * argument, true if the file was successfully renamed, false otherwise. */ - virtual void renameFile(const std::string& oldfullpath, - const std::string& newfullpath, + virtual void renameFile(std::string_view oldfullpath, + std::string_view newfullpath, std::function callback) const; /** @@ -785,7 +785,7 @@ class CC_DLL FileUtils * @param filepath The path of the file, it could be a relative or absolute path. * @return The file size. */ - virtual int64_t getFileSize(const std::string& filepath) const; + virtual int64_t getFileSize(std::string_view filepath) const; /** * Retrieve the file size, async off the main cocos thread. @@ -795,7 +795,7 @@ class CC_DLL FileUtils * @param callback The function that will be called when the operation is complete. Will have one long * argument, the file size. */ - virtual void getFileSize(const std::string& filepath, std::function callback) const; + virtual void getFileSize(std::string_view filepath, std::function callback) const; /** * List all files in a directory. @@ -803,7 +803,7 @@ class CC_DLL FileUtils * @param dirPath The path of the directory, it could be a relative or an absolute path. * @return File paths in a string vector */ - virtual std::vector listFiles(const std::string& dirPath) const; + virtual std::vector listFiles(std::string_view dirPath) const; /** * List all files in a directory async, off of the main cocos thread. @@ -814,7 +814,7 @@ class CC_DLL FileUtils * @js NA * @lua NA */ - virtual void listFilesAsync(const std::string& dirPath, + virtual void listFilesAsync(std::string_view dirPath, std::function)> callback) const; /** @@ -823,7 +823,7 @@ class CC_DLL FileUtils * @param dirPath The path of the directory, it could be a relative or an absolute path. * @return File paths in a string vector */ - virtual void listFilesRecursively(const std::string& dirPath, std::vector* files) const; + virtual void listFilesRecursively(std::string_view dirPath, std::vector* files) const; /** * List all files recursively in a directory, async off the main cocos thread. @@ -834,11 +834,11 @@ class CC_DLL FileUtils * @js NA * @lua NA */ - virtual void listFilesRecursivelyAsync(const std::string& dirPath, + virtual void listFilesRecursivelyAsync(std::string_view dirPath, std::function)> callback) const; /** Returns the full path cache. */ - const std::unordered_map getFullPathCache() const { return _fullPathCache; } + const hlookup::string_map getFullPathCache() const { return _fullPathCache; } /** * Gets the new filename from the filename lookup dictionary. @@ -847,21 +847,21 @@ class CC_DLL FileUtils * @return The new filename after searching in the filename lookup dictionary. * If the original filename wasn't in the dictionary, it will return the original filename. */ - virtual std::string getNewFilename(const std::string& filename) const; + virtual std::string getNewFilename(std::string_view filename) const; /** * Checks whether a file exists without considering search paths and resolution orders. * @param filename The file (with absolute path) to look up for * @return Returns true if the file found at the given absolute path, otherwise returns false */ - virtual bool isFileExistInternal(const std::string& filename) const = 0; + virtual bool isFileExistInternal(std::string_view filename) const = 0; /** * Checks whether a directory exists without considering search paths and resolution orders. * @param dirPath The directory (with absolute path) to look up for * @return Returns true if the directory found at the given absolute path, otherwise returns false */ - virtual bool isDirectoryExistInternal(const std::string& dirPath) const; + virtual bool isDirectoryExistInternal(std::string_view dirPath) const; /** * Open a FileStream based on the implementation provided in openFileStream or its overrides @@ -869,7 +869,7 @@ class CC_DLL FileUtils * @param mode The mode to open the file in, being READ | WRITE | APPEND * @return Returns a pointer to the file stream */ - virtual std::unique_ptr openFileStream(const std::string& filePath, FileStream::Mode mode); + virtual std::unique_ptr openFileStream(std::string_view filePath, FileStream::Mode mode); protected: /** @@ -897,13 +897,13 @@ class CC_DLL FileUtils * @param searchPath The search path. * @return The full path of the file. It will return an empty string if the full path of the file doesn't exist. */ - virtual std::string getPathForFilename(const std::string& filename, - const std::string& resolutionDirectory, - const std::string& searchPath) const; + virtual std::string getPathForFilename(std::string_view filename, + std::string_view resolutionDirectory, + std::string_view searchPath) const; - virtual std::string getPathForDirectory(const std::string& dir, - const std::string& resolutionDiretory, - const std::string& searchPath) const; + virtual std::string getPathForDirectory(std::string_view dir, + std::string_view resolutionDiretory, + std::string_view searchPath) const; /** * Gets full path for the directory and the filename. @@ -915,14 +915,14 @@ class CC_DLL FileUtils * @param filename The name of the file. * @return The full path of the file, if the file can't be found, it will return an empty string. */ - virtual std::string getFullPathForFilenameWithinDirectory(const std::string& directory, - const std::string& filename) const; + virtual std::string getFullPathForFilenameWithinDirectory(std::string_view directory, + std::string_view filename) const; /** * Returns the fullpath for a given dirname. * @since 3.17.1 */ - virtual std::string fullPathForDirectory(const std::string& dirname) const; + virtual std::string fullPathForDirectory(std::string_view dirname) const; /** * mutex used to protect fields. @@ -968,13 +968,13 @@ class CC_DLL FileUtils * The full path cache for normal files. When a file is found, it will be added into this cache. * This variable is used for improving the performance of file search. */ - mutable std::unordered_map _fullPathCache; + mutable hlookup::string_map _fullPathCache; /** * The full path cache for directories. When a diretory is found, it will be added into this cache. * This variable is used for improving the performance of file search. */ - mutable std::unordered_map _fullPathCacheDir; + mutable hlookup::string_map _fullPathCacheDir; /** * Writable path. diff --git a/cocos/platform/CCGLView.cpp b/cocos/platform/CCGLView.cpp index 5c8494362ae9..7ee97868afbf 100644 --- a/cocos/platform/CCGLView.cpp +++ b/cocos/platform/CCGLView.cpp @@ -279,12 +279,12 @@ Rect GLView::getScissorRect() const return Rect(x, y, w, h); } -void GLView::setViewName(const std::string& viewname) +void GLView::setViewName(std::string_view viewname) { _viewName = viewname; } -const std::string& GLView::getViewName() const +std::string_view GLView::getViewName() const { return _viewName; } diff --git a/cocos/platform/CCGLView.h b/cocos/platform/CCGLView.h index 6cd6c1568b77..f5bbc43547f6 100644 --- a/cocos/platform/CCGLView.h +++ b/cocos/platform/CCGLView.h @@ -308,13 +308,13 @@ class CC_DLL GLView : public Ref * * @param viewname A string will be set to the view as name. */ - virtual void setViewName(const std::string& viewname); + virtual void setViewName(std::string_view viewname); /** Get the view name. * * @return The view name. */ - const std::string& getViewName() const; + std::string_view getViewName() const; /** Touch events are handled by default; if you want to customize your handlers, please override this function. * @@ -367,14 +367,14 @@ class CC_DLL GLView : public Ref * * @param filename A path to image file, e.g., "icons/cusom.png". */ - virtual void setIcon(const std::string& filename) const {}; + virtual void setIcon(std::string_view filename) const {}; /** Set window icon (implemented for windows and linux). * Best icon (based on size) will be auto selected. * * @param filelist The array contains icons. */ - virtual void setIcon(const std::vector& filelist) const {}; + virtual void setIcon(const std::vector& filelist) const {}; /** Set default window icon (implemented for windows and linux). * On windows it will use icon from .exe file (if included). diff --git a/cocos/platform/CCImage.cpp b/cocos/platform/CCImage.cpp index 6f2340a153da..7296355cae2b 100644 --- a/cocos/platform/CCImage.cpp +++ b/cocos/platform/CCImage.cpp @@ -601,7 +601,7 @@ Image::~Image() } } -bool Image::initWithImageFile(const std::string& path) +bool Image::initWithImageFile(std::string_view path) { bool ret = false; _filePath = FileUtils::getInstance()->fullPathForFilename(path); @@ -618,7 +618,7 @@ bool Image::initWithImageFile(const std::string& path) return ret; } -bool Image::initWithImageFileThreadSafe(const std::string& fullpath) +bool Image::initWithImageFileThreadSafe(std::string_view fullpath) { bool ret = false; _filePath = fullpath; @@ -2193,7 +2193,7 @@ void Image::forwardPixels(uint8_t* data, ssize_t dataLen, int offset, bool ownDa } #if (CC_TARGET_PLATFORM != CC_PLATFORM_IOS) -bool Image::saveToFile(const std::string& filename, bool isToRGB) +bool Image::saveToFile(std::string_view filename, bool isToRGB) { // only support for backend::PixelFormat::RGB8 or backend::PixelFormat::RGBA8 uncompressed data if (isCompressed() || (_pixelFormat != backend::PixelFormat::RGB8 && _pixelFormat != backend::PixelFormat::RGBA8)) @@ -2216,13 +2216,13 @@ bool Image::saveToFile(const std::string& filename, bool isToRGB) } else { - CCLOG("cocos2d: Image: saveToFile no support file extension(only .png or .jpg) for file: %s", filename.c_str()); + CCLOG("cocos2d: Image: saveToFile no support file extension(only .png or .jpg) for file: %s", filename.data()); return false; } } #endif -bool Image::saveImageToPNG(const std::string& filePath, bool isToRGB) +bool Image::saveImageToPNG(std::string_view filePath, bool isToRGB) { #if CC_USE_PNG bool ret = false; @@ -2365,7 +2365,7 @@ bool Image::saveImageToPNG(const std::string& filePath, bool isToRGB) #endif // CC_USE_PNG } -bool Image::saveImageToJPG(const std::string& filePath) +bool Image::saveImageToJPG(std::string_view filePath) { #if CC_USE_JPEG bool ret = false; diff --git a/cocos/platform/CCImage.h b/cocos/platform/CCImage.h index 3466dbe61744..ae1adc4ff3b9 100644 --- a/cocos/platform/CCImage.h +++ b/cocos/platform/CCImage.h @@ -148,7 +148,7 @@ class CC_DLL Image : public Ref @param path the absolute file path. @return true if loaded correctly. */ - bool initWithImageFile(const std::string& path); + bool initWithImageFile(std::string_view path); /** @brief Load image from stream buffer. @@ -191,7 +191,7 @@ class CC_DLL Image : public Ref @param filePath the file's absolute path, including file suffix. @param isToRGB whether the image is saved as RGB format. */ - bool saveToFile(const std::string& filename, bool isToRGB = true); + bool saveToFile(std::string_view filename, bool isToRGB = true); void premultiplyAlpha(); void reversePremultipliedAlpha(); @@ -218,8 +218,8 @@ class CC_DLL Image : public Ref // fast forward pixels to GPU if ownData void forwardPixels(uint8_t* data, ssize_t dataLen, int offset, bool ownData); - bool saveImageToPNG(const std::string& filePath, bool isToRGB = true); - bool saveImageToJPG(const std::string& filePath); + bool saveImageToPNG(std::string_view filePath, bool isToRGB = true); + bool saveImageToJPG(std::string_view filePath); protected: /** @@ -259,7 +259,7 @@ class CC_DLL Image : public Ref @param imageType the type of image, currently only supporting two types. @return true if loaded correctly. */ - bool initWithImageFileThreadSafe(const std::string& fullpath); + bool initWithImageFileThreadSafe(std::string_view fullpath); Format detectFormat(const uint8_t* data, ssize_t dataLen); bool isPng(const uint8_t* data, ssize_t dataLen); diff --git a/cocos/platform/CCPlatformMacros.h b/cocos/platform/CCPlatformMacros.h index 4f2a33e3e028..b8a6516c14d6 100644 --- a/cocos/platform/CCPlatformMacros.h +++ b/cocos/platform/CCPlatformMacros.h @@ -32,6 +32,7 @@ Copyright (c) 2021 Bytedance Inc. * Define some platform specific macros. */ #include "base/ccConfig.h" +#include "base/hlookup.h" #include "platform/CCPlatformConfig.h" #include "platform/CCPlatformDefine.h" diff --git a/cocos/platform/CCPosixFileStream.cpp b/cocos/platform/CCPosixFileStream.cpp index 6606cc594ceb..cdf1f76bee94 100644 --- a/cocos/platform/CCPosixFileStream.cpp +++ b/cocos/platform/CCPosixFileStream.cpp @@ -19,7 +19,7 @@ struct PXIoF long long (*size)(PXFileHandle& handle); }; -static int pfs_posix_open(const std::string& path, FileStream::Mode mode, PXFileHandle& handle) +static int pfs_posix_open(std::string_view path, FileStream::Mode mode, PXFileHandle& handle) { switch (mode) { @@ -127,7 +127,7 @@ PosixFileStream::~PosixFileStream() internalClose(); } -bool PosixFileStream::open(const std::string& path, FileStream::Mode mode) +bool PosixFileStream::open(std::string_view path, FileStream::Mode mode) { bool ok = false; #if CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID diff --git a/cocos/platform/CCPosixFileStream.h b/cocos/platform/CCPosixFileStream.h index 183f6d5dea43..46504a15a476 100644 --- a/cocos/platform/CCPosixFileStream.h +++ b/cocos/platform/CCPosixFileStream.h @@ -114,7 +114,7 @@ class CC_DLL PosixFileStream : public FileStream APPEND, }; - bool open(const std::string& path, FileStream::Mode mode) override; + bool open(std::string_view path, FileStream::Mode mode) override; int close() override; int seek(int64_t offset, int origin) override; diff --git a/cocos/platform/CCSAXParser.cpp b/cocos/platform/CCSAXParser.cpp index 2629c6a856df..7af489f71f43 100644 --- a/cocos/platform/CCSAXParser.cpp +++ b/cocos/platform/CCSAXParser.cpp @@ -108,7 +108,7 @@ bool SAXParser::parse(const char* xmlData, size_t dataLength) return false; } -bool SAXParser::parse(const std::string& filename) +bool SAXParser::parse(std::string_view filename) { bool ret = false; Data data = FileUtils::getInstance()->getDataFromFile(filename); diff --git a/cocos/platform/CCSAXParser.h b/cocos/platform/CCSAXParser.h index 7b948fc0711b..ecb4c7bbe5f5 100644 --- a/cocos/platform/CCSAXParser.h +++ b/cocos/platform/CCSAXParser.h @@ -90,7 +90,7 @@ class CC_DLL SAXParser * @js NA * @lua NA */ - bool parse(const std::string& filename); + bool parse(std::string_view filename); /** * New API for performance. diff --git a/cocos/platform/android/CCApplication-android.cpp b/cocos/platform/android/CCApplication-android.cpp index 08809fb6d7ad..7c1f36e81139 100644 --- a/cocos/platform/android/CCApplication-android.cpp +++ b/cocos/platform/android/CCApplication-android.cpp @@ -119,7 +119,7 @@ std::string Application::getVersion() return JniHelper::callStaticStringMethod(helperClassName, "getVersion"); } -bool Application::openURL(const std::string& url) +bool Application::openURL(std::string_view url) { return JniHelper::callStaticBooleanMethod(helperClassName, "openURL", url); } diff --git a/cocos/platform/android/CCApplication-android.h b/cocos/platform/android/CCApplication-android.h index 42cf2dc28721..71f0e2146eee 100644 --- a/cocos/platform/android/CCApplication-android.h +++ b/cocos/platform/android/CCApplication-android.h @@ -90,7 +90,7 @@ class CC_DLL Application : public ApplicationProtocol @param String with url to open. @return true if the resource located by the URL was successfully opened; otherwise false. */ - virtual bool openURL(const std::string& url) override; + virtual bool openURL(std::string_view url) override; /** @brief This function will be called when the application screen size is changed. diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index dabb0a4148c1..7b4647f4c6ce 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -103,7 +103,7 @@ bool FileUtilsAndroid::init() return FileUtils::init(); } -std::string FileUtilsAndroid::getNewFilename(const std::string& filename) const +std::string FileUtilsAndroid::getNewFilename(std::string_view filename) const { std::string newFileName = FileUtils::getNewFilename(filename); // ../xxx do not fix this path @@ -156,7 +156,7 @@ std::string FileUtilsAndroid::getNewFilename(const std::string& filename) const return newFileName; } -bool FileUtilsAndroid::isFileExistInternal(const std::string& strFilePath) const +bool FileUtilsAndroid::isFileExistInternal(std::string_view strFilePath) const { DECLARE_GUARD; @@ -204,7 +204,7 @@ bool FileUtilsAndroid::isFileExistInternal(const std::string& strFilePath) const return bFound; } -bool FileUtilsAndroid::isDirectoryExistInternal(const std::string& dirPath) const +bool FileUtilsAndroid::isDirectoryExistInternal(std::string_view dirPath) const { if (dirPath.empty()) { @@ -254,7 +254,7 @@ bool FileUtilsAndroid::isDirectoryExistInternal(const std::string& dirPath) cons return false; } -bool FileUtilsAndroid::isAbsolutePath(const std::string& strPath) const +bool FileUtilsAndroid::isAbsolutePath(std::string_view strPath) const { DECLARE_GUARD; // On Android, there are two situations for full path. @@ -264,7 +264,7 @@ bool FileUtilsAndroid::isAbsolutePath(const std::string& strPath) const return (strPath[0] == '/' || strPath.find(_defaultResRootPath) == 0); } -int64_t FileUtilsAndroid::getFileSize(const std::string& filepath) const +int64_t FileUtilsAndroid::getFileSize(std::string_view filepath) const { DECLARE_GUARD; int64_t size = FileUtils::getFileSize(filepath); @@ -292,7 +292,7 @@ int64_t FileUtilsAndroid::getFileSize(const std::string& filepath) const return size; } -std::vector FileUtilsAndroid::listFiles(const std::string& dirPath) const +std::vector FileUtilsAndroid::listFiles(std::string_view dirPath) const { if (!dirPath.empty() && dirPath[0] == '/') @@ -347,7 +347,7 @@ std::vector FileUtilsAndroid::listFiles(const std::string& dirPath) return fileList; } -FileUtils::Status FileUtilsAndroid::getContents(const std::string& filename, ResizableBuffer* buffer) const +FileUtils::Status FileUtilsAndroid::getContents(std::string_view filename, ResizableBuffer* buffer) const { static const std::string apkprefix("assets/"); if (filename.empty()) diff --git a/cocos/platform/android/CCFileUtils-android.h b/cocos/platform/android/CCFileUtils-android.h index 44ef3864fb32..fc3c6c8577f6 100644 --- a/cocos/platform/android/CCFileUtils-android.h +++ b/cocos/platform/android/CCFileUtils-android.h @@ -64,20 +64,20 @@ class CC_DLL FileUtilsAndroid : public FileUtils /* override functions */ bool init() override; - virtual std::string getNewFilename(const std::string& filename) const override; + virtual std::string getNewFilename(std::string_view filename) const override; - virtual FileUtils::Status getContents(const std::string& filename, ResizableBuffer* buffer) const override; + virtual FileUtils::Status getContents(std::string_view filename, ResizableBuffer* buffer) const override; virtual std::string getWritablePath() const override; std::string getNativeWritableAbsolutePath() const override; - virtual bool isAbsolutePath(const std::string& strPath) const override; + virtual bool isAbsolutePath(std::string_view strPath) const override; - virtual int64_t getFileSize(const std::string& filepath) const override; - virtual std::vector listFiles(const std::string& dirPath) const override; + virtual int64_t getFileSize(std::string_view filepath) const override; + virtual std::vector listFiles(std::string_view dirPath) const override; private: - virtual bool isFileExistInternal(const std::string& strFilePath) const override; - virtual bool isDirectoryExistInternal(const std::string& dirPath) const override; + virtual bool isFileExistInternal(std::string_view strFilePath) const override; + virtual bool isDirectoryExistInternal(std::string_view dirPath) const override; static AAssetManager* assetmanager; static ZipFile* obbfile; diff --git a/cocos/platform/android/CCGLViewImpl-android.cpp b/cocos/platform/android/CCGLViewImpl-android.cpp index b09471431223..8a0ff6eb3c6b 100644 --- a/cocos/platform/android/CCGLViewImpl-android.cpp +++ b/cocos/platform/android/CCGLViewImpl-android.cpp @@ -50,7 +50,7 @@ void initExtensions() NS_CC_BEGIN -GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, Rect rect, float frameZoomFactor) +GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, Rect rect, float frameZoomFactor) { auto ret = new GLViewImpl; if (ret && ret->initWithRect(viewName, rect, frameZoomFactor)) @@ -62,7 +62,7 @@ GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, Rect rect, f return nullptr; } -GLViewImpl* GLViewImpl::create(const std::string& viewName) +GLViewImpl* GLViewImpl::create(std::string_view viewName) { auto ret = new GLViewImpl; if (ret && ret->initWithFullScreen(viewName)) @@ -74,7 +74,7 @@ GLViewImpl* GLViewImpl::create(const std::string& viewName) return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); if (ret && ret->initWithFullScreen(viewName)) @@ -93,12 +93,12 @@ GLViewImpl::GLViewImpl() GLViewImpl::~GLViewImpl() {} -bool GLViewImpl::initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor) +bool GLViewImpl::initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor) { return true; } -bool GLViewImpl::initWithFullScreen(const std::string& viewName) +bool GLViewImpl::initWithFullScreen(std::string_view viewName) { return true; } diff --git a/cocos/platform/android/CCGLViewImpl-android.h b/cocos/platform/android/CCGLViewImpl-android.h index 0f7e2d539bab..fc421309649c 100644 --- a/cocos/platform/android/CCGLViewImpl-android.h +++ b/cocos/platform/android/CCGLViewImpl-android.h @@ -35,9 +35,9 @@ class CC_DLL GLViewImpl : public GLView { public: // static function - static GLViewImpl* create(const std::string& viewname); - static GLViewImpl* createWithRect(const std::string& viewName, Rect rect, float frameZoomFactor = 1.0f); - static GLViewImpl* createWithFullScreen(const std::string& viewName); + static GLViewImpl* create(std::string_view viewname); + static GLViewImpl* createWithRect(std::string_view viewName, Rect rect, float frameZoomFactor = 1.0f); + static GLViewImpl* createWithFullScreen(std::string_view viewName); bool isOpenGLReady() override; void end() override; @@ -49,8 +49,8 @@ class CC_DLL GLViewImpl : public GLView GLViewImpl(); virtual ~GLViewImpl(); - bool initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor); - bool initWithFullScreen(const std::string& viewName); + bool initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor); + bool initWithFullScreen(std::string_view viewName); }; NS_CC_END diff --git a/cocos/platform/android/jni/JniHelper.cpp b/cocos/platform/android/jni/JniHelper.cpp index bddad033dfc8..248f0c23cde8 100644 --- a/cocos/platform/android/jni/JniHelper.cpp +++ b/cocos/platform/android/jni/JniHelper.cpp @@ -319,7 +319,7 @@ jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t return ret; } -jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, const std::string& x) +jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, std::string_view x) { return convert(localRefs, t, x.c_str()); } @@ -338,7 +338,7 @@ void JniHelper::deleteLocalRefs(JNIEnv* env, LocalRefMapType& localRefs) localRefs[env].clear(); } -void JniHelper::reportError(const std::string& className, const std::string& methodName, const std::string& signature) +void JniHelper::reportError(std::string_view className, std::string_view methodName, std::string_view signature) { LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className.c_str(), methodName.c_str(), signature.c_str()); diff --git a/cocos/platform/android/jni/JniHelper.h b/cocos/platform/android/jni/JniHelper.h index 1367b95c5adc..52dcc2b3e394 100644 --- a/cocos/platform/android/jni/JniHelper.h +++ b/cocos/platform/android/jni/JniHelper.h @@ -74,7 +74,7 @@ class CC_DLL JniHelper @if no such method will log error */ template - static void callStaticVoidMethod(const std::string& className, const std::string& methodName, Ts... xs) + static void callStaticVoidMethod(std::string_view className, std::string_view methodName, Ts... xs) { cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")V"; @@ -96,7 +96,7 @@ class CC_DLL JniHelper @return value from Java static boolean method if there are proper JniMethodInfo; otherwise false. */ template - static bool callStaticBooleanMethod(const std::string& className, const std::string& methodName, Ts... xs) + static bool callStaticBooleanMethod(std::string_view className, std::string_view methodName, Ts... xs) { jboolean jret = JNI_FALSE; cocos2d::JniMethodInfo t; @@ -120,7 +120,7 @@ class CC_DLL JniHelper @return value from Java static int method if there are proper JniMethodInfo; otherwise 0. */ template - static int callStaticIntMethod(const std::string& className, const std::string& methodName, Ts... xs) + static int callStaticIntMethod(std::string_view className, std::string_view methodName, Ts... xs) { jint ret = 0; cocos2d::JniMethodInfo t; @@ -144,7 +144,7 @@ class CC_DLL JniHelper @return value from Java static float method if there are proper JniMethodInfo; otherwise 0. */ template - static float callStaticFloatMethod(const std::string& className, const std::string& methodName, Ts... xs) + static float callStaticFloatMethod(std::string_view className, std::string_view methodName, Ts... xs) { jfloat ret = 0.0; cocos2d::JniMethodInfo t; @@ -168,7 +168,7 @@ class CC_DLL JniHelper @return address of JniMethodInfo if there are proper JniMethodInfo; otherwise nullptr. */ template - static float* callStaticFloatArrayMethod(const std::string& className, const std::string& methodName, Ts... xs) + static float* callStaticFloatArrayMethod(std::string_view className, std::string_view methodName, Ts... xs) { static float ret[32]; cocos2d::JniMethodInfo t; @@ -204,7 +204,7 @@ class CC_DLL JniHelper @return address of JniMethodInfo if there are proper JniMethodInfo; otherwise nullptr. */ template - static int* callStaticIntArrayMethod(const std::string& className, const std::string& methodName, Ts... xs) + static int* callStaticIntArrayMethod(std::string_view className, std::string_view methodName, Ts... xs) { static int ret[32]; cocos2d::JniMethodInfo t; @@ -240,7 +240,7 @@ class CC_DLL JniHelper @return JniMethodInfo of Vec3 type if there are proper JniMethodInfo; otherwise Vec3(0, 0, 0). */ template - static Vec3 callStaticVec3Method(const std::string& className, const std::string& methodName, Ts... xs) + static Vec3 callStaticVec3Method(std::string_view className, std::string_view methodName, Ts... xs) { Vec3 ret; cocos2d::JniMethodInfo t; @@ -274,7 +274,7 @@ class CC_DLL JniHelper @return value from Java static double method if there are proper JniMethodInfo; otherwise 0. */ template - static double callStaticDoubleMethod(const std::string& className, const std::string& methodName, Ts... xs) + static double callStaticDoubleMethod(std::string_view className, std::string_view methodName, Ts... xs) { jdouble ret = 0.0; cocos2d::JniMethodInfo t; @@ -298,7 +298,7 @@ class CC_DLL JniHelper @return JniMethodInfo of string type if there are proper JniMethodInfo; otherwise empty string. */ template - static std::string callStaticStringMethod(const std::string& className, const std::string& methodName, Ts... xs) + static std::string callStaticStringMethod(std::string_view className, std::string_view methodName, Ts... xs) { std::string ret; @@ -334,7 +334,7 @@ class CC_DLL JniHelper static jstring convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, const char* x); - static jstring convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, const std::string& x); + static jstring convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, std::string_view x); inline static jint convert(LocalRefMapType&, cocos2d::JniMethodInfo&, int32_t value) { @@ -395,7 +395,7 @@ class CC_DLL JniHelper static std::string getJNISignature(const char*) { return "Ljava/lang/String;"; } - static std::string getJNISignature(const std::string&) { return "Ljava/lang/String;"; } + static std::string getJNISignature(std::string_view) { return "Ljava/lang/String;"; } template static std::string getJNISignature(T x) @@ -411,7 +411,7 @@ class CC_DLL JniHelper return getJNISignature(x) + getJNISignature(xs...); } - static void reportError(const std::string& className, const std::string& methodName, const std::string& signature); + static void reportError(std::string_view className, std::string_view methodName, std::string_view signature); }; NS_CC_END diff --git a/cocos/platform/apple/CCFileUtils-apple.h b/cocos/platform/apple/CCFileUtils-apple.h index 8eff83505aea..14a3fb62e41f 100644 --- a/cocos/platform/apple/CCFileUtils-apple.h +++ b/cocos/platform/apple/CCFileUtils-apple.h @@ -51,21 +51,21 @@ class CC_DLL FileUtilsApple : public FileUtils /* override functions */ virtual std::string getWritablePath() const override; virtual std::string getNativeWritableAbsolutePath() const override; - virtual std::string getFullPathForFilenameWithinDirectory(const std::string& directory, - const std::string& filename) const override; + virtual std::string getFullPathForFilenameWithinDirectory(std::string_view directory, + std::string_view filename) const override; #if CC_FILEUTILS_APPLE_ENABLE_OBJC void setBundle(NSBundle* bundle); #endif - virtual bool createDirectory(const std::string& path) const override; - virtual std::string getPathForDirectory(const std::string& dir, - const std::string& resolutionDiretory, - const std::string& searchPath) const override; + virtual bool createDirectory(std::string_view path) const override; + virtual std::string getPathForDirectory(std::string_view dir, + std::string_view resolutionDiretory, + std::string_view searchPath) const override; private: - virtual bool isFileExistInternal(const std::string& filePath) const override; - virtual bool removeDirectory(const std::string& dirPath) const override; + virtual bool isFileExistInternal(std::string_view filePath) const override; + virtual bool removeDirectory(std::string_view dirPath) const override; struct IMPL; std::unique_ptr pimpl_; diff --git a/cocos/platform/apple/CCFileUtils-apple.mm b/cocos/platform/apple/CCFileUtils-apple.mm index 75dabafb2131..1154fa28e549 100644 --- a/cocos/platform/apple/CCFileUtils-apple.mm +++ b/cocos/platform/apple/CCFileUtils-apple.mm @@ -105,7 +105,7 @@ void setBundle(NSBundle* bundle) { return strRet; } -bool FileUtilsApple::isFileExistInternal(const std::string& filePath) const +bool FileUtilsApple::isFileExistInternal(std::string_view filePath) const { if (filePath.empty()) { @@ -158,7 +158,7 @@ static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, str return ret; } -bool FileUtilsApple::removeDirectory(const std::string& path) const +bool FileUtilsApple::removeDirectory(std::string_view path) const { if (path.empty()) { @@ -200,7 +200,7 @@ static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, str } -std::string FileUtilsApple::getFullPathForFilenameWithinDirectory(const std::string& directory, const std::string& filename) const +std::string FileUtilsApple::getFullPathForFilenameWithinDirectory(std::string_view directory, std::string_view filename) const { if (directory[0] != '/') { @@ -222,7 +222,7 @@ static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, str return ""; } -bool FileUtilsApple::createDirectory(const std::string& path) const +bool FileUtilsApple::createDirectory(std::string_view path) const { CCASSERT(!path.empty(), "Invalid path"); diff --git a/cocos/platform/desktop/CCGLViewImpl-desktop.cpp b/cocos/platform/desktop/CCGLViewImpl-desktop.cpp index 7f18509643d9..2b3b152d2237 100644 --- a/cocos/platform/desktop/CCGLViewImpl-desktop.cpp +++ b/cocos/platform/desktop/CCGLViewImpl-desktop.cpp @@ -326,12 +326,12 @@ GLViewImpl::~GLViewImpl() #endif } -GLViewImpl* GLViewImpl::create(const std::string& viewName) +GLViewImpl* GLViewImpl::create(std::string_view viewName) { return GLViewImpl::create(viewName, false); } -GLViewImpl* GLViewImpl::create(const std::string& viewName, bool resizable) +GLViewImpl* GLViewImpl::create(std::string_view viewName, bool resizable) { auto ret = new GLViewImpl; if (ret->initWithRect(viewName, Rect(0, 0, 960, 640), 1.0f, resizable)) @@ -343,7 +343,7 @@ GLViewImpl* GLViewImpl::create(const std::string& viewName, bool resizable) return nullptr; } -GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable) +GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable) { auto ret = new GLViewImpl; if (ret->initWithRect(viewName, rect, frameZoomFactor, resizable)) @@ -355,7 +355,7 @@ GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, Rect rect, f return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); if (ret->initWithFullScreen(viewName)) @@ -367,7 +367,7 @@ GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName) return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName, +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName, const GLFWvidmode& videoMode, GLFWmonitor* monitor) { @@ -381,7 +381,7 @@ GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName, return nullptr; } -bool GLViewImpl::initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable) +bool GLViewImpl::initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable) { setViewName(viewName); @@ -509,7 +509,7 @@ bool GLViewImpl::initWithRect(const std::string& viewName, Rect rect, float fram return true; } -bool GLViewImpl::initWithFullScreen(const std::string& viewName) +bool GLViewImpl::initWithFullScreen(std::string_view viewName) { // Create fullscreen window on primary monitor at its current video mode. _monitor = glfwGetPrimaryMonitor(); @@ -520,7 +520,7 @@ bool GLViewImpl::initWithFullScreen(const std::string& viewName) return initWithRect(viewName, Rect(0, 0, (float)videoMode->width, (float)videoMode->height), 1.0f, false); } -bool GLViewImpl::initWithFullscreen(const std::string& viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor) +bool GLViewImpl::initWithFullscreen(std::string_view viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor) { // Create fullscreen on specified monitor at the specified video mode. _monitor = monitor; @@ -592,13 +592,12 @@ void GLViewImpl::enableRetina(bool enabled) void GLViewImpl::setIMEKeyboardState(bool /*bOpen*/) {} #if CC_ICON_SET_SUPPORT -void GLViewImpl::setIcon(const std::string& filename) const +void GLViewImpl::setIcon(std::string_view filename) const { - std::vector vec = {filename}; - this->setIcon(vec); + this->setIcon(std::vector{filename}); } -void GLViewImpl::setIcon(const std::vector& filelist) const +void GLViewImpl::setIcon(const std::vector& filelist) const { if (filelist.empty()) return; diff --git a/cocos/platform/desktop/CCGLViewImpl-desktop.h b/cocos/platform/desktop/CCGLViewImpl-desktop.h index f46a0f0ec2a4..74c7d895fec9 100644 --- a/cocos/platform/desktop/CCGLViewImpl-desktop.h +++ b/cocos/platform/desktop/CCGLViewImpl-desktop.h @@ -60,14 +60,14 @@ class CC_DLL GLViewImpl : public GLView friend class GLFWEventHandler; public: - static GLViewImpl* create(const std::string& viewName); - static GLViewImpl* create(const std::string& viewName, bool resizable); - static GLViewImpl* createWithRect(const std::string& viewName, + static GLViewImpl* create(std::string_view viewName); + static GLViewImpl* create(std::string_view viewName, bool resizable); + static GLViewImpl* createWithRect(std::string_view viewName, Rect size, float frameZoomFactor = 1.0f, bool resizable = false); - static GLViewImpl* createWithFullScreen(const std::string& viewName); - static GLViewImpl* createWithFullScreen(const std::string& viewName, + static GLViewImpl* createWithFullScreen(std::string_view viewName); + static GLViewImpl* createWithFullScreen(std::string_view viewName, const GLFWvidmode& videoMode, GLFWmonitor* monitor); @@ -121,8 +121,8 @@ class CC_DLL GLViewImpl : public GLView virtual void setIMEKeyboardState(bool bOpen) override; #if CC_ICON_SET_SUPPORT - virtual void setIcon(const std::string& filename) const override; - virtual void setIcon(const std::vector& filelist) const override; + virtual void setIcon(std::string_view filename) const override; + virtual void setIcon(const std::vector& filelist) const override; virtual void setDefaultIcon() const override; #endif /* CC_ICON_SET_SUPPORT */ @@ -157,9 +157,9 @@ class CC_DLL GLViewImpl : public GLView GLViewImpl(bool initglfw = true); virtual ~GLViewImpl(); - bool initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable); - bool initWithFullScreen(const std::string& viewName); - bool initWithFullscreen(const std::string& viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor); + bool initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable); + bool initWithFullScreen(std::string_view viewName); + bool initWithFullscreen(std::string_view viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor); bool loadGL(); diff --git a/cocos/platform/ios/CCApplication-ios.h b/cocos/platform/ios/CCApplication-ios.h index bcced55ac190..d87e7a79bcf2 100644 --- a/cocos/platform/ios/CCApplication-ios.h +++ b/cocos/platform/ios/CCApplication-ios.h @@ -87,7 +87,7 @@ class CC_DLL Application : public ApplicationProtocol @param String with url to open. @return true if the resource located by the URL was successfully opened; otherwise false. */ - virtual bool openURL(const std::string& url) override; + virtual bool openURL(std::string_view url) override; /** @brief This function will be called when the application screen size is changed. diff --git a/cocos/platform/ios/CCGLViewImpl-ios.h b/cocos/platform/ios/CCGLViewImpl-ios.h index 0aa8892865cd..f8ab60f75b2b 100644 --- a/cocos/platform/ios/CCGLViewImpl-ios.h +++ b/cocos/platform/ios/CCGLViewImpl-ios.h @@ -40,13 +40,13 @@ class CC_DLL GLViewImpl : public GLView static GLViewImpl* createWithEAGLView(void* eaGLView); /** creates a GLViewImpl with a title name in fullscreen mode */ - static GLViewImpl* create(const std::string& viewName); + static GLViewImpl* create(std::string_view viewName); /** creates a GLViewImpl with a title name, a rect and the zoom factor */ - static GLViewImpl* createWithRect(const std::string& viewName, const Rect& rect, float frameZoomFactor = 1.0f); + static GLViewImpl* createWithRect(std::string_view viewName, const Rect& rect, float frameZoomFactor = 1.0f); /** creates a GLViewImpl with a name in fullscreen mode */ - static GLViewImpl* createWithFullScreen(const std::string& viewName); + static GLViewImpl* createWithFullScreen(std::string_view viewName); static void convertAttrs(); static void* _pixelFormat; @@ -78,8 +78,8 @@ class CC_DLL GLViewImpl : public GLView virtual ~GLViewImpl(); bool initWithEAGLView(void* eaGLView); - bool initWithRect(const std::string& viewName, const Rect& rect, float frameZoomFactor); - bool initWithFullScreen(const std::string& viewName); + bool initWithRect(std::string_view viewName, const Rect& rect, float frameZoomFactor); + bool initWithFullScreen(std::string_view viewName); // the objective-c CCEAGLView instance void* _eaglview; diff --git a/cocos/platform/ios/CCGLViewImpl-ios.mm b/cocos/platform/ios/CCGLViewImpl-ios.mm index 53a1e78194d3..91e1dc06dee8 100644 --- a/cocos/platform/ios/CCGLViewImpl-ios.mm +++ b/cocos/platform/ios/CCGLViewImpl-ios.mm @@ -48,7 +48,7 @@ of this software and associated documentation files (the "Software"), to deal return nullptr; } -GLViewImpl* GLViewImpl::create(const std::string& viewName) +GLViewImpl* GLViewImpl::create(std::string_view viewName) { auto ret = new GLViewImpl; if(ret->initWithFullScreen(viewName)) { @@ -59,7 +59,7 @@ of this software and associated documentation files (the "Software"), to deal return nullptr; } -GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, const Rect& rect, float frameZoomFactor) +GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, const Rect& rect, float frameZoomFactor) { auto ret = new GLViewImpl; if(ret->initWithRect(viewName, rect, frameZoomFactor)) { @@ -70,7 +70,7 @@ of this software and associated documentation files (the "Software"), to deal return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); if(ret->initWithFullScreen(viewName)) { @@ -130,7 +130,7 @@ of this software and associated documentation files (the "Software"), to deal return true; } -bool GLViewImpl::initWithRect(const std::string& viewName, const Rect& rect, float frameZoomFactor) +bool GLViewImpl::initWithRect(std::string_view viewName, const Rect& rect, float frameZoomFactor) { CGRect r = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); convertAttrs(); @@ -156,7 +156,7 @@ of this software and associated documentation files (the "Software"), to deal return true; } -bool GLViewImpl::initWithFullScreen(const std::string& viewName) +bool GLViewImpl::initWithFullScreen(std::string_view viewName) { CGRect rect = [[UIScreen mainScreen] bounds]; Rect r; diff --git a/cocos/platform/ios/CCImage-ios.mm b/cocos/platform/ios/CCImage-ios.mm index b5b93879989d..9c323ccb366a 100644 --- a/cocos/platform/ios/CCImage-ios.mm +++ b/cocos/platform/ios/CCImage-ios.mm @@ -35,7 +35,7 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_BEGIN -bool cocos2d::Image::saveToFile(const std::string& filename, bool isToRGB) +bool cocos2d::Image::saveToFile(std::string_view filename, bool isToRGB) { //only support for backend::PixelFormat::RGB8 or backend::PixelFormat::RGBA8 uncompressed data if (isCompressed() || (_pixelFormat != backend::PixelFormat::RGB8 && _pixelFormat != backend::PixelFormat::RGBA8)) diff --git a/cocos/platform/linux/CCApplication-linux.cpp b/cocos/platform/linux/CCApplication-linux.cpp index be903a2dabcf..fa98b686a6d6 100644 --- a/cocos/platform/linux/CCApplication-linux.cpp +++ b/cocos/platform/linux/CCApplication-linux.cpp @@ -110,7 +110,7 @@ void Application::setAnimationInterval(float interval) _animationInterval = interval * 1000.0f; } -void Application::setResourceRootPath(const std::string& rootResDir) +void Application::setResourceRootPath(std::string_view rootResDir) { _resourceRootPath = rootResDir; if (_resourceRootPath[_resourceRootPath.length() - 1] != '/') @@ -123,7 +123,7 @@ void Application::setResourceRootPath(const std::string& rootResDir) pFileUtils->setSearchPaths(searchPaths); } -const std::string& Application::getResourceRootPath() +std::string_view Application::getResourceRootPath() { return _resourceRootPath; } @@ -138,7 +138,7 @@ std::string Application::getVersion() return ""; } -bool Application::openURL(const std::string& url) +bool Application::openURL(std::string_view url) { std::string op = std::string("xdg-open '").append(url).append("'"); return system(op.c_str()) == 0; diff --git a/cocos/platform/linux/CCApplication-linux.h b/cocos/platform/linux/CCApplication-linux.h index 8f40f7ea0044..3d5c05e60217 100644 --- a/cocos/platform/linux/CCApplication-linux.h +++ b/cocos/platform/linux/CCApplication-linux.h @@ -84,19 +84,19 @@ class Application : public ApplicationProtocol @param String with url to open. @return true if the resource located by the URL was successfully opened; otherwise false. */ - virtual bool openURL(const std::string& url) override; + virtual bool openURL(std::string_view url) override; /** * Sets the Resource root path. * @deprecated Please use FileUtils::getInstance()->setSearchPaths() instead. */ - CC_DEPRECATED_ATTRIBUTE void setResourceRootPath(const std::string& rootResDir); + CC_DEPRECATED_ATTRIBUTE void setResourceRootPath(std::string_view rootResDir); /** * Gets the Resource root path. * @deprecated Please use FileUtils::getInstance()->getSearchPaths() instead. */ - CC_DEPRECATED_ATTRIBUTE const std::string& getResourceRootPath(); + CC_DEPRECATED_ATTRIBUTE std::string_view getResourceRootPath(); /** @brief Get target platform diff --git a/cocos/platform/linux/CCFileUtils-linux.cpp b/cocos/platform/linux/CCFileUtils-linux.cpp index 0ec3a38d079f..91edc069101e 100644 --- a/cocos/platform/linux/CCFileUtils-linux.cpp +++ b/cocos/platform/linux/CCFileUtils-linux.cpp @@ -115,7 +115,7 @@ std::string FileUtilsLinux::getNativeWritableAbsolutePath() const return _writablePath; } -bool FileUtilsLinux::isFileExistInternal(const std::string& strFilePath) const +bool FileUtilsLinux::isFileExistInternal(std::string_view strFilePath) const { DECLARE_GUARD; if (strFilePath.empty()) diff --git a/cocos/platform/linux/CCFileUtils-linux.h b/cocos/platform/linux/CCFileUtils-linux.h index 258ac96d99ac..1dc54ec21311 100644 --- a/cocos/platform/linux/CCFileUtils-linux.h +++ b/cocos/platform/linux/CCFileUtils-linux.h @@ -56,7 +56,7 @@ class CC_DLL FileUtilsLinux : public FileUtils std::string getNativeWritableAbsolutePath() const override; private: - virtual bool isFileExistInternal(const std::string& strFilePath) const override; + virtual bool isFileExistInternal(std::string_view strFilePath) const override; }; // end of platform group diff --git a/cocos/platform/mac/CCApplication-mac.h b/cocos/platform/mac/CCApplication-mac.h index 9636b4af889a..fe6bbbff1a04 100644 --- a/cocos/platform/mac/CCApplication-mac.h +++ b/cocos/platform/mac/CCApplication-mac.h @@ -90,11 +90,11 @@ class CC_DLL Application : public ApplicationProtocol @param String with url to open. @return true if the resource located by the URL was successfully opened; otherwise false. */ - virtual bool openURL(const std::string& url) override; + virtual bool openURL(std::string_view url) override; - void setStartupScriptFilename(const std::string& startupScriptFile); + void setStartupScriptFilename(std::string_view startupScriptFile); - const std::string& getStartupScriptFilename(); + std::string_view getStartupScriptFilename(); protected: static Application* sm_pSharedApplication; diff --git a/cocos/platform/mac/CCApplication-mac.mm b/cocos/platform/mac/CCApplication-mac.mm index 8d8a92b31329..dddafef71daf 100644 --- a/cocos/platform/mac/CCApplication-mac.mm +++ b/cocos/platform/mac/CCApplication-mac.mm @@ -172,13 +172,13 @@ static int32_t getCurrentMillSecond() return [[NSWorkspace sharedWorkspace] openURL:nsUrl]; } -void Application::setStartupScriptFilename(const std::string& startupScriptFile) +void Application::setStartupScriptFilename(std::string_view startupScriptFile) { _startupScriptFilename = startupScriptFile; std::replace(_startupScriptFilename.begin(), _startupScriptFilename.end(), '\\', '/'); } -const std::string& Application::getStartupScriptFilename() +std::string_view Application::getStartupScriptFilename() { return _startupScriptFilename; } diff --git a/cocos/platform/mac/CCGLViewImpl-mac.h b/cocos/platform/mac/CCGLViewImpl-mac.h index 7c2d480dfa3c..01317ae283ce 100644 --- a/cocos/platform/mac/CCGLViewImpl-mac.h +++ b/cocos/platform/mac/CCGLViewImpl-mac.h @@ -58,14 +58,14 @@ class CC_DLL GLViewImpl : public GLView friend class GLFWEventHandler; public: - static GLViewImpl* create(const std::string& viewName); - static GLViewImpl* create(const std::string& viewName, bool resizable); - static GLViewImpl* createWithRect(const std::string& viewName, + static GLViewImpl* create(std::string_view viewName); + static GLViewImpl* create(std::string_view viewName, bool resizable); + static GLViewImpl* createWithRect(std::string_view viewName, Rect size, float frameZoomFactor = 1.0f, bool resizable = false); - static GLViewImpl* createWithFullScreen(const std::string& viewName); - static GLViewImpl* createWithFullScreen(const std::string& viewName, + static GLViewImpl* createWithFullScreen(std::string_view viewName); + static GLViewImpl* createWithFullScreen(std::string_view viewName, const GLFWvidmode& videoMode, GLFWmonitor* monitor); @@ -119,7 +119,7 @@ class CC_DLL GLViewImpl : public GLView virtual void setIMEKeyboardState(bool bOpen) override; #if CC_ICON_SET_SUPPORT - virtual void setIcon(const std::string& filename) const override; + virtual void setIcon(std::string_view filename) const override; virtual void setIcon(const std::vector& filelist) const override; virtual void setDefaultIcon() const override; #endif /* CC_ICON_SET_SUPPORT */ @@ -149,9 +149,9 @@ class CC_DLL GLViewImpl : public GLView GLViewImpl(bool initglfw = true); virtual ~GLViewImpl(); - bool initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable); - bool initWithFullScreen(const std::string& viewName); - bool initWithFullscreen(const std::string& viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor); + bool initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable); + bool initWithFullScreen(std::string_view viewName); + bool initWithFullscreen(std::string_view viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor); /* update frame layout when enter/exit full screen mode */ void updateWindowSize(); diff --git a/cocos/platform/mac/CCGLViewImpl-mac.mm b/cocos/platform/mac/CCGLViewImpl-mac.mm index 8d47ababc9ca..6e76c249413a 100644 --- a/cocos/platform/mac/CCGLViewImpl-mac.mm +++ b/cocos/platform/mac/CCGLViewImpl-mac.mm @@ -314,12 +314,12 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) glfwTerminate(); } -GLViewImpl* GLViewImpl::create(const std::string& viewName) +GLViewImpl* GLViewImpl::create(std::string_view viewName) { return GLViewImpl::create(viewName, false); } -GLViewImpl* GLViewImpl::create(const std::string& viewName, bool resizable) +GLViewImpl* GLViewImpl::create(std::string_view viewName, bool resizable) { auto ret = new GLViewImpl; if(ret->initWithRect(viewName, Rect(0, 0, 960, 640), 1.0f, resizable)) { @@ -330,7 +330,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return nullptr; } -GLViewImpl* GLViewImpl::createWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable) +GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable) { auto ret = new GLViewImpl; if(ret->initWithRect(viewName, rect, frameZoomFactor, resizable)) { @@ -341,7 +341,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); if(ret->initWithFullScreen(viewName)) { @@ -352,7 +352,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(const std::string& viewName, const GLFWvidmode &videoMode, GLFWmonitor *monitor) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName, const GLFWvidmode &videoMode, GLFWmonitor *monitor) { auto ret = new GLViewImpl(); if(ret->initWithFullscreen(viewName, videoMode, monitor)) { @@ -363,7 +363,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return nullptr; } -bool GLViewImpl::initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor, bool resizable) +bool GLViewImpl::initWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable) { setViewName(viewName); @@ -470,7 +470,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return true; } -bool GLViewImpl::initWithFullScreen(const std::string& viewName) +bool GLViewImpl::initWithFullScreen(std::string_view viewName) { //Create fullscreen window on primary monitor at its current video mode. _monitor = glfwGetPrimaryMonitor(); @@ -555,7 +555,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) } #if CC_ICON_SET_SUPPORT -void GLViewImpl::setIcon(const std::string& filename) const { +void GLViewImpl::setIcon(std::string_view filename) const { std::vector vec = {filename}; this->setIcon(vec); } diff --git a/cocos/platform/win32/CCApplication-win32.cpp b/cocos/platform/win32/CCApplication-win32.cpp index 3f51532ce9c0..ea159d973b98 100644 --- a/cocos/platform/win32/CCApplication-win32.cpp +++ b/cocos/platform/win32/CCApplication-win32.cpp @@ -287,14 +287,14 @@ std::string Application::getVersion() return verString; } -bool Application::openURL(const std::string& url) +bool Application::openURL(std::string_view url) { std::wstring wURL = ntcvt::from_chars(url, CP_UTF8); HINSTANCE r = ShellExecuteW(NULL, L"open", wURL.c_str(), NULL, NULL, SW_SHOWNORMAL); return (size_t)r > 32; } -void Application::setResourceRootPath(const std::string& rootResDir) +void Application::setResourceRootPath(std::string_view rootResDir) { _resourceRootPath = rootResDir; std::replace(_resourceRootPath.begin(), _resourceRootPath.end(), '\\', '/'); @@ -308,12 +308,12 @@ void Application::setResourceRootPath(const std::string& rootResDir) pFileUtils->setSearchPaths(searchPaths); } -const std::string& Application::getResourceRootPath(void) +std::string_view Application::getResourceRootPath(void) { return _resourceRootPath; } -void Application::setStartupScriptFilename(const std::string& startupScriptFile) +void Application::setStartupScriptFilename(std::string_view startupScriptFile) { _startupScriptFilename = startupScriptFile; std::replace(_startupScriptFilename.begin(), _startupScriptFilename.end(), '\\', '/'); diff --git a/cocos/platform/win32/CCApplication-win32.h b/cocos/platform/win32/CCApplication-win32.h index 011100a3f229..56fcc81e849c 100644 --- a/cocos/platform/win32/CCApplication-win32.h +++ b/cocos/platform/win32/CCApplication-win32.h @@ -78,23 +78,23 @@ class CC_DLL Application : public ApplicationProtocol @param String with url to open. @return true if the resource located by the URL was successfully opened; otherwise false. */ - virtual bool openURL(const std::string& url); + virtual bool openURL(std::string_view url); /** * Sets the Resource root path. * @deprecated Please use FileUtils::getInstance()->setSearchPaths() instead. */ - CC_DEPRECATED_ATTRIBUTE void setResourceRootPath(const std::string& rootResDir); + CC_DEPRECATED_ATTRIBUTE void setResourceRootPath(std::string_view rootResDir); /** * Gets the Resource root path. * @deprecated Please use FileUtils::getInstance()->getSearchPaths() instead. */ - CC_DEPRECATED_ATTRIBUTE const std::string& getResourceRootPath(); + CC_DEPRECATED_ATTRIBUTE std::string_view getResourceRootPath(); - void setStartupScriptFilename(const std::string& startupScriptFile); + void setStartupScriptFilename(std::string_view startupScriptFile); - const std::string& getStartupScriptFilename() { return _startupScriptFilename; } + std::string_view getStartupScriptFilename() { return _startupScriptFilename; } protected: HINSTANCE _instance; diff --git a/cocos/platform/win32/CCFileUtils-win32.cpp b/cocos/platform/win32/CCFileUtils-win32.cpp index 1dd25374afe9..acc434b15565 100644 --- a/cocos/platform/win32/CCFileUtils-win32.cpp +++ b/cocos/platform/win32/CCFileUtils-win32.cpp @@ -45,13 +45,13 @@ NS_CC_BEGIN // The root path of resources, the character encoding is UTF-8. // UTF-8 is the only encoding supported by adxe API by default. -static std::string s_workingPath = ""; -static std::string s_exePath = ""; +static std::wstring s_workingPath; +static std::string s_exePath; // D:\aaa\bbb\ccc\ddd\abc.txt --> D:/aaa/bbb/ccc/ddd/abc.txt -static std::string convertPathFormatToUnixStyle(const std::string& path) +static std::string convertPathFormatToUnixStyle(std::string_view path) { - std::string ret = path; + std::string ret{path}; int len = ret.length(); for (int i = 0; i < len; ++i) { @@ -63,6 +63,20 @@ static std::string convertPathFormatToUnixStyle(const std::string& path) return ret; } +static std::string convertPathFormatToWinStyle(std::string_view path) +{ + std::string ret{path}; + int len = ret.length(); + for (int i = 0; i < len; ++i) + { + if (ret[i] == '/') + { + ret[i] = '\\'; + } + } + return ret; +} + static void _checkWorkingPath() { if (s_workingPath.empty()) @@ -70,15 +84,17 @@ static void _checkWorkingPath() WCHAR utf16Path[CC_MAX_PATH] = {0}; int nNum = GetCurrentDirectoryW(CC_MAX_PATH - 2, utf16Path); - char utf8WorkingDir[CC_MAX_PATH] = {0}; - nNum = - WideCharToMultiByte(CP_UTF8, 0, utf16Path, nNum, utf8WorkingDir, sizeof(utf8WorkingDir), nullptr, nullptr); - if (nNum < (CC_MAX_PATH - 2)) - { - utf8WorkingDir[nNum] = '\\'; - utf8WorkingDir[nNum + 1] = '\0'; - s_workingPath = convertPathFormatToUnixStyle(utf8WorkingDir); - } + s_workingPath.assign(utf16Path, nNum); + + //char utf8WorkingDir[CC_MAX_PATH] = {0}; + //nNum = + // WideCharToMultiByte(CP_UTF8, 0, utf16Path, nNum, utf8WorkingDir, sizeof(utf8WorkingDir), nullptr, nullptr); + //if (nNum < (CC_MAX_PATH - 2)) + //{ + // utf8WorkingDir[nNum] = '\\'; + // utf8WorkingDir[nNum + 1] = '\0'; + // s_workingPath = convertPathFormatToUnixStyle(utf8WorkingDir); + //} } } @@ -121,25 +137,26 @@ bool FileUtilsWin32::init() DECLARE_GUARD; _checkWorkingPath(); - _defaultResRootPath = s_workingPath; + _defaultResRootPath = ntcvt::from_chars(s_workingPath); + _defaultResRootPathUtf16 = s_workingPath; bool bRet = FileUtils::init(); _checkExePath(); - if (s_workingPath != s_exePath) + if (_defaultResRootPath != s_exePath) addSearchPath(s_exePath); return bRet; } -bool FileUtilsWin32::isDirectoryExistInternal(const std::string& dirPath) const +bool FileUtilsWin32::isDirectoryExistInternal(std::string_view dirPath) const { uint32_t fAttrib = GetFileAttributesW(ntcvt::from_chars(dirPath).c_str()); return (fAttrib != INVALID_FILE_ATTRIBUTES && (fAttrib & FILE_ATTRIBUTE_DIRECTORY)); } -bool FileUtilsWin32::isFileExistInternal(const std::string& strFilePath) const +bool FileUtilsWin32::isFileExistInternal(std::string_view strFilePath) const { DECLARE_GUARD; if (strFilePath.empty()) @@ -147,17 +164,19 @@ bool FileUtilsWin32::isFileExistInternal(const std::string& strFilePath) const return false; } - std::string strPath = strFilePath; - if (!isAbsolutePath(strPath)) + std::wstring strPathUtf16; + if (!isAbsolutePath(strFilePath)) { // Not absolute path, add the default root path at the beginning. - strPath.insert(0, _defaultResRootPath); + strPathUtf16.insert(0, _defaultResRootPathUtf16); } + else + strPathUtf16 = ntcvt::from_chars(strFilePath); - DWORD attr = GetFileAttributesW(ntcvt::from_chars(strPath).c_str()); + DWORD attr = GetFileAttributesW(strPathUtf16.c_str()); return (attr != INVALID_FILE_ATTRIBUTES && !(attr & FILE_ATTRIBUTE_DIRECTORY)); } -FileUtils::Status FileUtilsWin32::getContents(const std::string& filename, ResizableBuffer* buffer) const +FileUtils::Status FileUtilsWin32::getContents(std::string_view filename, ResizableBuffer* buffer) const { if (filename.empty()) return FileUtils::Status::NotExists; @@ -199,9 +218,9 @@ FileUtils::Status FileUtilsWin32::getContents(const std::string& filename, Resiz return FileUtils::Status::OK; } -std::string FileUtilsWin32::getPathForFilename(const std::string& filename, - const std::string& resolutionDirectory, - const std::string& searchPath) const +std::string FileUtilsWin32::getPathForFilename(std::string_view filename, + std::string_view resolutionDirectory, + std::string_view searchPath) const { std::string unixFileName = convertPathFormatToUnixStyle(filename); std::string unixResolutionDirectory = convertPathFormatToUnixStyle(resolutionDirectory); @@ -210,8 +229,8 @@ std::string FileUtilsWin32::getPathForFilename(const std::string& filename, return FileUtils::getPathForFilename(unixFileName, unixResolutionDirectory, unixSearchPath); } -std::string FileUtilsWin32::getFullPathForFilenameWithinDirectory(const std::string& strDirectory, - const std::string& strFilename) const +std::string FileUtilsWin32::getFullPathForFilenameWithinDirectory(std::string_view strDirectory, + std::string_view strFilename) const { std::string unixDirectory = convertPathFormatToUnixStyle(strDirectory); std::string unixFilename = convertPathFormatToUnixStyle(strFilename); @@ -219,7 +238,7 @@ std::string FileUtilsWin32::getFullPathForFilenameWithinDirectory(const std::str return FileUtils::getFullPathForFilenameWithinDirectory(unixDirectory, unixFilename); } -void FileUtilsWin32::listFilesRecursively(const std::string& dirPath, std::vector* files) const +void FileUtilsWin32::listFilesRecursively(std::string_view dirPath, std::vector* files) const { std::string fullpath = fullPathForDirectory(dirPath); if (isDirectoryExist(fullpath)) @@ -265,7 +284,7 @@ void FileUtilsWin32::listFilesRecursively(const std::string& dirPath, std::vecto } } -int64_t FileUtilsWin32::getFileSize(const std::string& filepath) const +int64_t FileUtilsWin32::getFileSize(std::string_view filepath) const { if (filepath.empty()) return -1; @@ -276,7 +295,7 @@ int64_t FileUtilsWin32::getFileSize(const std::string& filepath) const return -1; } -std::vector FileUtilsWin32::listFiles(const std::string& dirPath) const +std::vector FileUtilsWin32::listFiles(std::string_view dirPath) const { std::string fullpath = fullPathForDirectory(dirPath); std::vector files; @@ -380,7 +399,7 @@ std::string FileUtilsWin32::getNativeWritableAbsolutePath() const return convertPathFormatToUnixStyle(ntcvt::from_chars(retPath)); } -bool FileUtilsWin32::renameFile(const std::string& oldfullpath, const std::string& newfullpath) const +bool FileUtilsWin32::renameFile(std::string_view oldfullpath, std::string_view newfullpath) const { CCASSERT(!oldfullpath.empty(), "Invalid path"); CCASSERT(!newfullpath.empty(), "Invalid path"); @@ -392,7 +411,7 @@ bool FileUtilsWin32::renameFile(const std::string& oldfullpath, const std::strin { if (!DeleteFile(_wNew.c_str())) { - CCLOGERROR("Fail to delete file %s !Error code is 0x%x", newfullpath.c_str(), GetLastError()); + CCLOGERROR("Fail to delete file %s !Error code is 0x%x", newfullpath.data(), GetLastError()); } } @@ -402,17 +421,19 @@ bool FileUtilsWin32::renameFile(const std::string& oldfullpath, const std::strin } else { - CCLOGERROR("Fail to rename file %s to %s !Error code is 0x%x", oldfullpath.c_str(), newfullpath.c_str(), + CCLOGERROR("Fail to rename file %s to %s !Error code is 0x%x", oldfullpath.data(), newfullpath.data(), GetLastError()); return false; } } -bool FileUtilsWin32::renameFile(const std::string& path, const std::string& oldname, const std::string& name) const +bool FileUtilsWin32::renameFile(std::string_view path, std::string_view oldname, std::string_view name) const { CCASSERT(!path.empty(), "Invalid path"); - std::string oldPath = path + oldname; - std::string newPath = path + name; + std::string oldPath{path}; + oldPath += oldname; + std::string newPath{path}; + newPath += name; std::regex pat("\\/"); std::string _old = std::regex_replace(oldPath, pat, "\\"); @@ -421,7 +442,7 @@ bool FileUtilsWin32::renameFile(const std::string& path, const std::string& oldn return renameFile(_old, _new); } -bool FileUtilsWin32::createDirectory(const std::string& dirPath) const +bool FileUtilsWin32::createDirectory(std::string_view dirPath) const { CCASSERT(!dirPath.empty(), "Invalid path"); @@ -478,10 +499,9 @@ bool FileUtilsWin32::createDirectory(const std::string& dirPath) const return true; } -bool FileUtilsWin32::removeFile(const std::string& filepath) const +bool FileUtilsWin32::removeFile(std::string_view filepath) const { - std::regex pat("\\/"); - std::string win32path = std::regex_replace(filepath, pat, "\\"); + std::string win32path = convertPathFormatToWinStyle(filepath); if (DeleteFileW(ntcvt::from_chars(win32path).c_str())) { @@ -489,14 +509,14 @@ bool FileUtilsWin32::removeFile(const std::string& filepath) const } else { - CCLOGERROR("Fail remove file %s !Error code is 0x%x", filepath.c_str(), GetLastError()); + CCLOGERROR("Fail remove file %s !Error code is 0x%x", filepath.data(), GetLastError()); return false; } } -bool FileUtilsWin32::removeDirectory(const std::string& dirPath) const +bool FileUtilsWin32::removeDirectory(std::string_view dirPath) const { - std::string dirPathCopy = dirPath; + std::string dirPathCopy{dirPath}; if (!dirPath.empty() && dirPath[dirPath.length() - 1] != '/' && dirPath[dirPath.length() - 1] != '\\') { dirPathCopy.push_back('/'); diff --git a/cocos/platform/win32/CCFileUtils-win32.h b/cocos/platform/win32/CCFileUtils-win32.h index 5188e7f83aea..9cfdb703f0e0 100644 --- a/cocos/platform/win32/CCFileUtils-win32.h +++ b/cocos/platform/win32/CCFileUtils-win32.h @@ -53,7 +53,7 @@ class CC_DLL FileUtilsWin32 : public FileUtils virtual std::string getNativeWritableAbsolutePath() const override; protected: - virtual bool isFileExistInternal(const std::string& strFilePath) const override; + virtual bool isFileExistInternal(std::string_view strFilePath) const override; /** * Renames a file under the given directory. @@ -63,9 +63,9 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param name The new name of the file. * @return True if the file have been renamed successfully, false if not. */ - virtual bool renameFile(const std::string& path, - const std::string& oldname, - const std::string& name) const override; + virtual bool renameFile(std::string_view path, + std::string_view oldname, + std::string_view name) const override; /** * Renames a file under the given directory. @@ -74,14 +74,14 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param newfullpath The new path + name of the file. * @return True if the file have been renamed successfully, false if not. */ - virtual bool renameFile(const std::string& oldfullpath, const std::string& newfullpath) const override; + virtual bool renameFile(std::string_view oldfullpath, std::string_view newfullpath) const override; /** * Checks whether a directory exists without considering search paths and resolution orders. * @param dirPath The directory (with absolute path) to look up for * @return Returns true if the directory found at the given absolute path, otherwise returns false */ - virtual bool isDirectoryExistInternal(const std::string& dirPath) const override; + virtual bool isDirectoryExistInternal(std::string_view dirPath) const override; /** * Removes a file. @@ -89,7 +89,7 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param filepath The full path of the file, it must be an absolute path. * @return True if the file have been removed successfully, false if not. */ - virtual bool removeFile(const std::string& filepath) const override; + virtual bool removeFile(std::string_view filepath) const override; /** * Creates a directory. @@ -97,7 +97,7 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param dirPath The path of the directory, it must be an absolute path. * @return True if the directory have been created successfully, false if not. */ - virtual bool createDirectory(const std::string& dirPath) const override; + virtual bool createDirectory(std::string_view dirPath) const override; /** * Removes a directory. @@ -105,11 +105,11 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param dirPath The full path of the directory, it must be an absolute path. * @return True if the directory have been removed successfully, false if not. */ - virtual bool removeDirectory(const std::string& dirPath) const override; + virtual bool removeDirectory(std::string_view dirPath) const override; - virtual FileUtils::Status getContents(const std::string& filename, ResizableBuffer* buffer) const override; + virtual FileUtils::Status getContents(std::string_view filename, ResizableBuffer* buffer) const override; - virtual int64_t getFileSize(const std::string& filepath) const override; + virtual int64_t getFileSize(std::string_view filepath) const override; /** * Gets full path for filename, resolution directory and search path. @@ -119,9 +119,9 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param searchPath The search path. * @return The full path of the file. It will return an empty string if the full path of the file doesn't exist. */ - virtual std::string getPathForFilename(const std::string& filename, - const std::string& resolutionDirectory, - const std::string& searchPath) const override; + virtual std::string getPathForFilename(std::string_view filename, + std::string_view resolutionDirectory, + std::string_view searchPath) const override; /** * Gets full path for the directory and the filename. @@ -133,8 +133,8 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param filename The name of the file. * @return The full path of the file, if the file can't be found, it will return an empty string. */ - virtual std::string getFullPathForFilenameWithinDirectory(const std::string& directory, - const std::string& filename) const override; + virtual std::string getFullPathForFilenameWithinDirectory(std::string_view directory, + std::string_view filename) const override; /** * List all files in a directory. @@ -142,7 +142,7 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param dirPath The path of the directory, it could be a relative or an absolute path. * @return File paths in a string vector */ - virtual std::vector listFiles(const std::string& dirPath) const override; + virtual std::vector listFiles(std::string_view dirPath) const override; /** * List all files recursively in a directory. @@ -150,7 +150,10 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param dirPath The path of the directory, it could be a relative or an absolute path. * @return File paths in a string vector */ - virtual void listFilesRecursively(const std::string& dirPath, std::vector* files) const override; + virtual void listFilesRecursively(std::string_view dirPath, std::vector* files) const override; + +private: + std::wstring_view _defaultResRootPathUtf16; }; // end of platform group diff --git a/cocos/renderer/CCMaterial.cpp b/cocos/renderer/CCMaterial.cpp index 17a43f39b939..da4aeb7cf106 100644 --- a/cocos/renderer/CCMaterial.cpp +++ b/cocos/renderer/CCMaterial.cpp @@ -48,7 +48,7 @@ NS_CC_BEGIN namespace { -std::string replaceDefines(const std::string& compileTimeDefines) +std::string replaceDefines(std::string_view compileTimeDefines) { auto defineParts = Console::Utility::split(compileTimeDefines, ';'); @@ -72,7 +72,7 @@ std::string replaceDefines(const std::string& compileTimeDefines) static const char* getOptionalString(Properties* properties, const char* key, const char* defaultValue); static bool isValidUniform(const char* name); -Material* Material::createWithFilename(const std::string& filepath) +Material* Material::createWithFilename(std::string_view filepath) { auto validfilename = FileUtils::getInstance()->fullPathForFilename(filepath); if (!validfilename.empty()) @@ -130,7 +130,7 @@ bool Material::initWithProgramState(backend::ProgramState* state) return false; } -bool Material::initWithFile(const std::string& validfilename) +bool Material::initWithFile(std::string_view validfilename) { // Warning: properties is not a "Ref" object, must be manually deleted Properties* properties = Properties::createNonRefCounted(validfilename); @@ -496,7 +496,7 @@ bool Material::parseRenderState(RenderState::StateBlock* state, Properties* prop return true; } -void Material::setName(const std::string& name) +void Material::setName(std::string_view name) { _name = name; } @@ -542,7 +542,7 @@ const Vector& Material::getTechniques() const return _techniques; } -Technique* Material::getTechniqueByName(const std::string& name) +Technique* Material::getTechniqueByName(std::string_view name) { for (const auto& technique : _techniques) { @@ -564,7 +564,7 @@ void Material::addTechnique(Technique* technique) _techniques.pushBack(technique); } -void Material::setTechnique(const std::string& techniqueName) +void Material::setTechnique(std::string_view techniqueName) { auto technique = getTechniqueByName(techniqueName); if (technique) diff --git a/cocos/renderer/CCMaterial.h b/cocos/renderer/CCMaterial.h index acc8ccdda2e8..bc94addc47cb 100644 --- a/cocos/renderer/CCMaterial.h +++ b/cocos/renderer/CCMaterial.h @@ -78,7 +78,7 @@ class CC_DLL Material : public Ref * * @return A new Material or NULL if there was an error. */ - static Material* createWithFilename(const std::string& path); + static Material* createWithFilename(std::string_view path); /** Creates a Material with a GLProgramState. It will only contain one Technique and one Pass. @@ -107,12 +107,12 @@ class CC_DLL Material : public Ref /// returns the material name std::string getName() const; /// sets the material name - void setName(const std::string& name); + void setName(std::string_view name); /** Returns a Technique by its name. returns `nullptr` if the Technique can't be found. */ - Technique* getTechniqueByName(const std::string& name); + Technique* getTechniqueByName(std::string_view name); /** Returns a Technique by index. returns `nullptr` if the index is invalid. @@ -132,7 +132,7 @@ class CC_DLL Material : public Ref void addTechnique(Technique* technique); /** Sets the current technique */ - void setTechnique(const std::string& techniqueName); + void setTechnique(std::string_view techniqueName); /** returns a clone (deep-copy) of the material */ virtual Material* clone() const; @@ -147,7 +147,7 @@ class CC_DLL Material : public Ref Material(); ~Material(); bool initWithProgramState(backend::ProgramState* state); - bool initWithFile(const std::string& file); + bool initWithFile(std::string_view file); bool initWithProperties(Properties* materialProperties); void setTarget(Node* target); diff --git a/cocos/renderer/CCPass.h b/cocos/renderer/CCPass.h index ee095d854fae..483112611e64 100644 --- a/cocos/renderer/CCPass.h +++ b/cocos/renderer/CCPass.h @@ -94,8 +94,8 @@ class CC_DLL Pass : public Ref */ VertexAttribBinding* getVertexAttributeBinding() const; - void setName(const std::string& name) { _name = name; } - const std::string& getName() const { return _name; } + void setName(std::string_view name) { _name = name; } + std::string_view getName() const { return _name; } inline RenderState::StateBlock& getStateBlock() { return _renderState._state; } diff --git a/cocos/renderer/CCRenderState.cpp b/cocos/renderer/CCRenderState.cpp index 4a1b8821d7a6..690af0e4595e 100644 --- a/cocos/renderer/CCRenderState.cpp +++ b/cocos/renderer/CCRenderState.cpp @@ -183,12 +183,12 @@ void RenderState::StateBlock::restoreUnmodifiedStates(int32_t overrideBits, Pipe } } -static bool parseBoolean(const std::string& value) +static bool parseBoolean(std::string_view value) { return (value.compare("true") == 0); } -static backend::BlendFactor parseBlend(const std::string& value) +static backend::BlendFactor parseBlend(std::string_view value) { // Convert the string to uppercase for comparison. std::string upper(value); @@ -222,12 +222,12 @@ static backend::BlendFactor parseBlend(const std::string& value) else { CCLOG("Unsupported blend value (%s). (Will default to BLEND_ONE if errors are treated as warnings)", - value.c_str()); + value.data()); return backend::BlendFactor::ONE; } } -static DepthFunction parseDepthFunc(const std::string& value) +static DepthFunction parseDepthFunc(std::string_view value) { // Convert string to uppercase for comparison std::string upper(value); @@ -251,12 +251,12 @@ static DepthFunction parseDepthFunc(const std::string& value) else { CCLOG("Unsupported depth function value (%s). Will default to DEPTH_LESS if errors are treated as warnings)", - value.c_str()); + value.data()); return DepthFunction::LESS; } } -static CullFaceSide parseCullFaceSide(const std::string& value) +static CullFaceSide parseCullFaceSide(std::string_view value) { // Convert string to uppercase for comparison std::string upper(value); @@ -271,12 +271,12 @@ static CullFaceSide parseCullFaceSide(const std::string& value) else { CCLOG("Unsupported cull face side value (%s). Will default to BACK if errors are treated as warnings.", - value.c_str()); + value.data()); return CullFaceSide::BACK; } } -static FrontFace parseFrontFace(const std::string& value) +static FrontFace parseFrontFace(std::string_view value) { // Convert string to uppercase for comparison std::string upper(value); @@ -288,12 +288,12 @@ static FrontFace parseFrontFace(const std::string& value) else { CCLOG("Unsupported front face side value (%s). Will default to CCW if errors are treated as warnings.", - value.c_str()); + value.data()); return FrontFace::COUNTER_CLOCK_WISE; } } -void RenderState::StateBlock::setState(const std::string& name, const std::string& value) +void RenderState::StateBlock::setState(std::string_view name, std::string_view value) { if (name.compare("blend") == 0) { @@ -333,7 +333,7 @@ void RenderState::StateBlock::setState(const std::string& name, const std::strin } else { - CCLOG("Unsupported render state string '%s'.", name.c_str()); + CCLOG("Unsupported render state string '%s'.", name.data()); } } diff --git a/cocos/renderer/CCRenderState.h b/cocos/renderer/CCRenderState.h index 3e94b36afbee..27fd7c497394 100644 --- a/cocos/renderer/CCRenderState.h +++ b/cocos/renderer/CCRenderState.h @@ -194,7 +194,7 @@ class CC_DLL RenderState : public Ref * @param name Name of the render state to set. * @param value Value of the specified render state. */ - void setState(const std::string& name, const std::string& value); + void setState(std::string_view name, std::string_view value); uint32_t getHash() const; bool isDirty() const; diff --git a/cocos/renderer/CCTechnique.cpp b/cocos/renderer/CCTechnique.cpp index 88e5ee9e8beb..bc7e20896aa6 100644 --- a/cocos/renderer/CCTechnique.cpp +++ b/cocos/renderer/CCTechnique.cpp @@ -98,7 +98,7 @@ std::string Technique::getName() const return _name; } -void Technique::setName(const std::string& name) +void Technique::setName(std::string_view name) { _name = name; } diff --git a/cocos/renderer/CCTechnique.h b/cocos/renderer/CCTechnique.h index aaf4c937d861..6c7641b557bb 100644 --- a/cocos/renderer/CCTechnique.h +++ b/cocos/renderer/CCTechnique.h @@ -91,7 +91,7 @@ class CC_DLL Technique : public Ref ~Technique(); bool init(Material* parent); - void setName(const std::string& name); + void setName(std::string_view name); RenderState _renderState; std::string _name; Vector _passes; diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index 55995f8d5a9b..c9209ec6f3a6 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -460,7 +460,7 @@ bool Texture2D::initWithImage(Image* image, backend::PixelFormat format) // implementation Texture2D (Text) bool Texture2D::initWithString(const char* text, - const std::string& fontName, + std::string_view fontName, float fontSize, const Vec2& dimensions /* = Vec2(0, 0)*/, TextHAlignment hAlignment /* = TextHAlignment::CENTER */, diff --git a/cocos/renderer/CCTexture2D.h b/cocos/renderer/CCTexture2D.h index 19afa6192876..9d4fb89c8493 100644 --- a/cocos/renderer/CCTexture2D.h +++ b/cocos/renderer/CCTexture2D.h @@ -273,7 +273,7 @@ class CC_DLL Texture2D : public Ref @param overflow Whether shrink font size when content larger than the dimensions. */ bool initWithString(const char* text, - const std::string& fontName, + std::string_view fontName, float fontSize, const Vec2& dimensions = Vec2(0, 0), TextHAlignment hAlignment = TextHAlignment::CENTER, diff --git a/cocos/renderer/CCTextureAtlas.cpp b/cocos/renderer/CCTextureAtlas.cpp index 5617481f5553..0810493c9f20 100644 --- a/cocos/renderer/CCTextureAtlas.cpp +++ b/cocos/renderer/CCTextureAtlas.cpp @@ -99,7 +99,7 @@ void TextureAtlas::setQuads(V3F_C4B_T2F_Quad* quads) // TextureAtlas - alloc & init -TextureAtlas* TextureAtlas::create(const std::string& file, ssize_t capacity) +TextureAtlas* TextureAtlas::create(std::string_view file, ssize_t capacity) { TextureAtlas* textureAtlas = new TextureAtlas(); if (textureAtlas->initWithFile(file, capacity)) @@ -123,7 +123,7 @@ TextureAtlas* TextureAtlas::createWithTexture(Texture2D* texture, ssize_t capaci return nullptr; } -bool TextureAtlas::initWithFile(const std::string& file, ssize_t capacity) +bool TextureAtlas::initWithFile(std::string_view file, ssize_t capacity) { // retained in property Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(file); @@ -134,7 +134,7 @@ bool TextureAtlas::initWithFile(const std::string& file, ssize_t capacity) } else { - CCLOG("cocos2d: Could not open file: %s", file.c_str()); + CCLOG("cocos2d: Could not open file: %s", file.data()); return false; } } diff --git a/cocos/renderer/CCTextureAtlas.h b/cocos/renderer/CCTextureAtlas.h index 0f8abffd2621..e088f3e95ffd 100644 --- a/cocos/renderer/CCTextureAtlas.h +++ b/cocos/renderer/CCTextureAtlas.h @@ -68,7 +68,7 @@ class CC_DLL TextureAtlas : public Ref @param file The file path. @param capacity Capacity for Quads. */ - static TextureAtlas* create(const std::string& file, ssize_t capacity); + static TextureAtlas* create(std::string_view file, ssize_t capacity); /** Creates a TextureAtlas with a previously initialized Texture2D object, and * with an initial capacity for n Quads. @@ -95,7 +95,7 @@ class CC_DLL TextureAtlas : public Ref @param file The file path. @param capacity Capacity for Quads. */ - bool initWithFile(const std::string& file, ssize_t capacity); + bool initWithFile(std::string_view file, ssize_t capacity); /** Initializes a TextureAtlas with a previously initialized Texture2D object, and * with an initial capacity for Quads. diff --git a/cocos/renderer/CCTextureCache.cpp b/cocos/renderer/CCTextureCache.cpp index 3315479d7b1d..36b3296ace4a 100644 --- a/cocos/renderer/CCTextureCache.cpp +++ b/cocos/renderer/CCTextureCache.cpp @@ -52,7 +52,7 @@ std::string TextureCache::s_etc1AlphaFileSuffix = "@alpha"; // implementation TextureCache -void TextureCache::setETC1AlphaFileSuffix(const std::string& suffix) +void TextureCache::setETC1AlphaFileSuffix(std::string_view suffix) { s_etc1AlphaFileSuffix = suffix; } @@ -82,7 +82,7 @@ std::string TextureCache::getDescription() const struct TextureCache::AsyncStruct { public: - AsyncStruct(const std::string& fn, const std::function& f, const std::string& key) + AsyncStruct(std::string_view fn, const std::function& f, std::string_view key) : filename(fn) , callback(f) , callbackKey(key) @@ -131,7 +131,7 @@ struct TextureCache::AsyncStruct Call unbindImageAsync(path) to prevent the call to the callback when the texture is loaded. */ -void TextureCache::addImageAsync(const std::string& path, const std::function& callback) +void TextureCache::addImageAsync(std::string_view path, const std::function& callback) { addImageAsync(path, callback, path); } @@ -170,9 +170,9 @@ void TextureCache::addImageAsync(const std::string& path, const std::function& callback, - const std::string& callbackKey) + std::string_view callbackKey) { Texture2D* texture = nullptr; @@ -223,7 +223,7 @@ void TextureCache::addImageAsync(const std::string& path, _sleepCondition.notify_one(); } -void TextureCache::unbindImageAsync(const std::string& callbackKey) +void TextureCache::unbindImageAsync(std::string_view callbackKey) { if (_asyncStructQueue.empty()) { @@ -383,7 +383,7 @@ void TextureCache::addImageAsyncCallBack(float /*dt*/) } } -Texture2D* TextureCache::addImage(const std::string& path) +Texture2D* TextureCache::addImage(std::string_view path) { Texture2D* texture = nullptr; Image* image = nullptr; @@ -422,7 +422,8 @@ Texture2D* TextureCache::addImage(const std::string& path) _textures.emplace(fullpath, texture); //-- ANDROID ETC1 ALPHA SUPPORTS. - std::string alphaFullPath = path + s_etc1AlphaFileSuffix; + std::string alphaFullPath{path}; + alphaFullPath += s_etc1AlphaFileSuffix; if (image->getFileType() == Image::Format::ETC1 && !s_etc1AlphaFileSuffix.empty() && FileUtils::getInstance()->isFileExist(alphaFullPath)) { @@ -438,7 +439,7 @@ Texture2D* TextureCache::addImage(const std::string& path) } else { - CCLOG("cocos2d: Couldn't create texture for file:%s in TextureCache", path.c_str()); + CCLOG("cocos2d: Couldn't create texture for file:%s in TextureCache", path.data()); CC_SAFE_RELEASE(texture); texture = nullptr; } @@ -450,7 +451,7 @@ Texture2D* TextureCache::addImage(const std::string& path) return texture; } -void TextureCache::parseNinePatchImage(cocos2d::Image* image, cocos2d::Texture2D* texture, const std::string& path) +void TextureCache::parseNinePatchImage(cocos2d::Image* image, cocos2d::Texture2D* texture, std::string_view path) { if (NinePatchImageParser::isNinePatchImage(path)) { @@ -460,7 +461,7 @@ void TextureCache::parseNinePatchImage(cocos2d::Image* image, cocos2d::Texture2D } } -Texture2D* TextureCache::addImage(Image* image, const std::string& key) +Texture2D* TextureCache::addImage(Image* image, std::string_view key) { CCASSERT(image != nullptr, "TextureCache: image MUST not be nil"); CCASSERT(image->getData() != nullptr, "TextureCache: image MUST not be nil"); @@ -497,7 +498,7 @@ Texture2D* TextureCache::addImage(Image* image, const std::string& key) return texture; } -bool TextureCache::reloadTexture(const std::string& fileName) +bool TextureCache::reloadTexture(std::string_view fileName) { Texture2D* texture = nullptr; @@ -585,14 +586,13 @@ void TextureCache::removeTexture(Texture2D* texture) } } -void TextureCache::removeTextureForKey(const std::string& textureKeyName) +void TextureCache::removeTextureForKey(std::string_view textureKeyName) { - std::string key = textureKeyName; - auto it = _textures.find(key); + auto it = _textures.find(textureKeyName); if (it == _textures.end()) { - key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); + auto key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); it = _textures.find(key); } @@ -603,14 +603,13 @@ void TextureCache::removeTextureForKey(const std::string& textureKeyName) } } -Texture2D* TextureCache::getTextureForKey(const std::string& textureKeyName) const +Texture2D* TextureCache::getTextureForKey(std::string_view textureKeyName) const { - std::string key = textureKeyName; - auto it = _textures.find(key); + auto it = _textures.find(textureKeyName); if (it == _textures.end()) { - key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); + auto key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); it = _textures.find(key); } @@ -676,14 +675,13 @@ std::string TextureCache::getCachedTextureInfo() const return buffer; } -void TextureCache::renameTextureWithKey(const std::string& srcName, const std::string& dstName) +void TextureCache::renameTextureWithKey(std::string_view srcName, std::string_view dstName) { - std::string key = srcName; - auto it = _textures.find(key); + auto it = _textures.find(srcName); if (it == _textures.end()) { - key = FileUtils::getInstance()->fullPathForFilename(srcName); + auto key = FileUtils::getInstance()->fullPathForFilename(srcName); it = _textures.find(key); } @@ -723,7 +721,7 @@ VolatileTexture::~VolatileTexture() CC_SAFE_RELEASE(_uiImage); } -void VolatileTextureMgr::addImageTexture(Texture2D* tt, const std::string& imageFileName) +void VolatileTextureMgr::addImageTexture(Texture2D* tt, std::string_view imageFileName) { if (_isReloading) { @@ -867,7 +865,7 @@ void VolatileTextureMgr::reloadAllTextures() } void VolatileTextureMgr::reloadTexture(Texture2D* texture, - const std::string& filename, + std::string_view filename, backend::PixelFormat pixelFormat) { if (!texture) diff --git a/cocos/renderer/CCTextureCache.h b/cocos/renderer/CCTextureCache.h index 2aca398febfd..f06643675861 100644 --- a/cocos/renderer/CCTextureCache.h +++ b/cocos/renderer/CCTextureCache.h @@ -64,7 +64,7 @@ class CC_DLL TextureCache : public Ref { public: // ETC1 ALPHA supports. - static void setETC1AlphaFileSuffix(const std::string& suffix); + static void setETC1AlphaFileSuffix(std::string_view suffix); static std::string getETC1AlphaFileSuffix(); public: @@ -92,7 +92,7 @@ class CC_DLL TextureCache : public Ref * Supported image extensions: .png, .bmp, .jpeg, .pvr. @param filepath The file path. */ - Texture2D* addImage(const std::string& filepath); + Texture2D* addImage(std::string_view filepath); /** Returns a Texture2D object given a file image. * If the file image was not previously loaded, it will create a new Texture2D object and it will return it. @@ -104,11 +104,11 @@ class CC_DLL TextureCache : public Ref @param callback A callback function would be invoked after the image is loaded. @since v0.8 */ - virtual void addImageAsync(const std::string& filepath, const std::function& callback); + virtual void addImageAsync(std::string_view filepath, const std::function& callback); - void addImageAsync(const std::string& path, + void addImageAsync(std::string_view path, const std::function& callback, - const std::string& callbackKey); + std::string_view callbackKey); /** Unbind a specified bound image asynchronous callback. * In the case an object who was bound to an image asynchronous callback was destroyed before the callback is @@ -116,7 +116,7 @@ class CC_DLL TextureCache : public Ref * @param filename It's the related/absolute path of the file image. * @since v3.1 */ - virtual void unbindImageAsync(const std::string& filename); + virtual void unbindImageAsync(std::string_view filename); /** Unbind all bound image asynchronous load callbacks. * @since v3.1 @@ -129,13 +129,13 @@ class CC_DLL TextureCache : public Ref * @param key The "key" parameter will be used as the "key" for the cache. * If "key" is nil, then a new texture will be created each time. */ - Texture2D* addImage(Image* image, const std::string& key); + Texture2D* addImage(Image* image, std::string_view key); /** Returns an already created texture. Returns nil if the texture doesn't exist. @param key It's the related/absolute path of the file image. @since v0.99.5 */ - Texture2D* getTextureForKey(const std::string& key) const; + Texture2D* getTextureForKey(std::string_view key) const; /** Reload texture from the image file. * If the file image hasn't loaded before, load it. @@ -143,7 +143,7 @@ class CC_DLL TextureCache : public Ref * @param fileName It's the related/absolute path of the file image. * @return True if the reloading is succeed, otherwise return false. */ - bool reloadTexture(const std::string& fileName); + bool reloadTexture(std::string_view fileName); /** Purges the dictionary of loaded textures. * Call this method if you receive the "Memory Warning". @@ -168,7 +168,7 @@ class CC_DLL TextureCache : public Ref @param key It's the related/absolute path of the file image. @since v0.99.4 */ - void removeTextureForKey(const std::string& key); + void removeTextureForKey(std::string_view key); /** Output to CCLOG the current contents of this TextureCache. * This will attempt to calculate the size of each texture, and the total texture memory in use. @@ -198,12 +198,12 @@ class CC_DLL TextureCache : public Ref * * @since v3.10 */ - void renameTextureWithKey(const std::string& srcName, const std::string& dstName); + void renameTextureWithKey(std::string_view srcName, std::string_view dstName); private: void addImageAsyncCallBack(float dt); void loadImage(); - void parseNinePatchImage(Image* image, Texture2D* texture, const std::string& path); + void parseNinePatchImage(Image* image, Texture2D* texture, std::string_view path); public: protected: @@ -224,7 +224,7 @@ class CC_DLL TextureCache : public Ref int _asyncRefCount; - std::unordered_map _textures; + hlookup::string_map _textures; static std::string s_etc1AlphaFileSuffix; }; @@ -272,7 +272,7 @@ class VolatileTexture class CC_DLL VolatileTextureMgr { public: - static void addImageTexture(Texture2D* tt, const std::string& imageFileName); + static void addImageTexture(Texture2D* tt, std::string_view imageFileName); static void addStringTexture(Texture2D* tt, const char* text, const FontDefinition& fontDefinition); static void addDataTexture(Texture2D* tt, void* data, @@ -292,7 +292,7 @@ class CC_DLL VolatileTextureMgr static VolatileTexture* findVolotileTexture(Texture2D* tt); private: - static void reloadTexture(Texture2D* texture, const std::string& filename, backend::PixelFormat pixelFormat); + static void reloadTexture(Texture2D* texture, std::string_view filename, backend::PixelFormat pixelFormat); }; #endif diff --git a/cocos/renderer/CCTextureCube.cpp b/cocos/renderer/CCTextureCube.cpp index d7a7929cb434..9a757b226423 100644 --- a/cocos/renderer/CCTextureCube.cpp +++ b/cocos/renderer/CCTextureCube.cpp @@ -119,7 +119,7 @@ unsigned char* getImageData(Image* img, backend::PixelFormat& ePixFmt) return pTmpData; } -Image* createImage(const std::string& path) +Image* createImage(std::string_view path) { // Split up directory and filename // MUTEX: @@ -150,12 +150,12 @@ TextureCube::~TextureCube() CC_SAFE_RELEASE_NULL(_texture); } -TextureCube* TextureCube::create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +TextureCube* TextureCube::create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { auto ret = new TextureCube(); if (ret->init(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z)) @@ -167,12 +167,12 @@ TextureCube* TextureCube::create(const std::string& positive_x, return nullptr; } -bool TextureCube::init(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z) +bool TextureCube::init(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z) { _imgPath[0] = positive_x; _imgPath[1] = negative_x; diff --git a/cocos/renderer/CCTextureCube.h b/cocos/renderer/CCTextureCube.h index 99ee3f1c3eb4..578c32eccac7 100644 --- a/cocos/renderer/CCTextureCube.h +++ b/cocos/renderer/CCTextureCube.h @@ -56,12 +56,12 @@ class CC_DLL TextureCube : public Ref @param negative_z texture for the rear side of the texture cube face. @return A new texture cube inited with given parameters. */ - static TextureCube* create(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + static TextureCube* create(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); /** Sets the min filter, mag filter, wrap s and wrap t texture parameters. If the texture size is NPOT (non power of 2), then in can only use GL_CLAMP_TO_EDGE in GL_TEXTURE_WRAP_{S,T}. @@ -86,12 +86,12 @@ class CC_DLL TextureCube : public Ref virtual ~TextureCube(); protected: - bool init(const std::string& positive_x, - const std::string& negative_x, - const std::string& positive_y, - const std::string& negative_y, - const std::string& positive_z, - const std::string& negative_z); + bool init(std::string_view positive_x, + std::string_view negative_x, + std::string_view positive_y, + std::string_view negative_y, + std::string_view positive_z, + std::string_view negative_z); private: std::vector _imgPath; diff --git a/cocos/renderer/backend/Device.h b/cocos/renderer/backend/Device.h index fbf8934bc597..27a498e334a7 100644 --- a/cocos/renderer/backend/Device.h +++ b/cocos/renderer/backend/Device.h @@ -125,7 +125,7 @@ class CC_DLL Device : public cocos2d::Ref * @param fragmentShader Specifes this is a fragment shader source. * @return A Program instance. */ - virtual Program* newProgram(const std::string& vertexShader, const std::string& fragmentShader) = 0; + virtual Program* newProgram(std::string_view vertexShader, std::string_view fragmentShader) = 0; /** * Get a DeviceInfo object. @@ -140,7 +140,7 @@ class CC_DLL Device : public cocos2d::Ref * @param source Specifies shader source. * @return A ShaderModule object. */ - virtual ShaderModule* newShaderModule(ShaderStage stage, const std::string& source) = 0; + virtual ShaderModule* newShaderModule(ShaderStage stage, std::string_view source) = 0; DeviceInfo* _deviceInfo = nullptr; ///< Device information. diff --git a/cocos/renderer/backend/Program.cpp b/cocos/renderer/backend/Program.cpp index 4c3da6cfaab0..b92ab3d0b24b 100644 --- a/cocos/renderer/backend/Program.cpp +++ b/cocos/renderer/backend/Program.cpp @@ -27,7 +27,7 @@ CC_BACKEND_BEGIN -Program::Program(const std::string& vs, const std::string& fs) : _vertexShader(vs), _fragmentShader(fs) {} +Program::Program(std::string_view vs, std::string_view fs) : _vertexShader(vs), _fragmentShader(fs) {} void Program::setProgramType(uint32_t type) { diff --git a/cocos/renderer/backend/Program.h b/cocos/renderer/backend/Program.h index 3cc20bdf216c..95b655820e46 100644 --- a/cocos/renderer/backend/Program.h +++ b/cocos/renderer/backend/Program.h @@ -60,7 +60,7 @@ class CC_DLL Program : public Ref * @param uniform Specifies the uniform name. * @return The uniform location. */ - virtual UniformLocation getUniformLocation(const std::string& uniform) const = 0; + virtual UniformLocation getUniformLocation(std::string_view uniform) const = 0; /** * Get uniform location by engine built-in uniform enum name. @@ -74,7 +74,7 @@ class CC_DLL Program : public Ref * @param name Specifies the attribute name. * @return The attribute location. */ - virtual int getAttributeLocation(const std::string& name) const = 0; + virtual int getAttributeLocation(std::string_view name) const = 0; /** * Get attribute location by engine built-in attribute enum name. @@ -99,19 +99,19 @@ class CC_DLL Program : public Ref * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - virtual const std::unordered_map getActiveAttributes() const = 0; + virtual hlookup::string_map getActiveAttributes() const = 0; /** * Get vertex shader. * @return Vertex shader. */ - const std::string& getVertexShader() const { return _vertexShader; } + std::string_view getVertexShader() const { return _vertexShader; } /** * Get fragment shader. * @ Fragment shader. */ - const std::string& getFragmentShader() const { return _fragmentShader; } + std::string_view getFragmentShader() const { return _fragmentShader; } /** * Get engine built-in program type. @@ -138,7 +138,8 @@ class CC_DLL Program : public Ref * Get all uniformInfos. * @return The uniformInfos. */ - virtual const std::unordered_map& getAllActiveUniformInfo(ShaderStage stage) const = 0; + virtual const hlookup::string_map& getAllActiveUniformInfo( + ShaderStage stage) const = 0; /** * Set engin built-in program type. @@ -151,7 +152,7 @@ class CC_DLL Program : public Ref * @param vs Specifes the vertex shader source. * @param fs Specifes the fragment shader source. */ - Program(const std::string& vs, const std::string& fs); + Program(std::string_view vs, std::string_view fs); #if CC_ENABLE_CACHE_TEXTURE_DATA /** diff --git a/cocos/renderer/backend/ProgramState.cpp b/cocos/renderer/backend/ProgramState.cpp index 8eacbc2bb658..79e036e3e08b 100644 --- a/cocos/renderer/backend/ProgramState.cpp +++ b/cocos/renderer/backend/ProgramState.cpp @@ -263,7 +263,7 @@ backend::UniformLocation ProgramState::getUniformLocation(backend::Uniform name) return _program->getUniformLocation(name); } -backend::UniformLocation ProgramState::getUniformLocation(const std::string& uniform) const +backend::UniformLocation ProgramState::getUniformLocation(std::string_view uniform) const { return _program->getUniformLocation(uniform); } @@ -514,13 +514,13 @@ void ProgramState::setTextureArray(int location, #endif } -void ProgramState::setParameterAutoBinding(const std::string& uniform, const std::string& autoBinding) +void ProgramState::setParameterAutoBinding(std::string_view uniform, std::string_view autoBinding) { _autoBindings.emplace(uniform, autoBinding); applyAutoBinding(uniform, autoBinding); } -void ProgramState::applyAutoBinding(const std::string& uniformName, const std::string& autoBinding) +void ProgramState::applyAutoBinding(std::string_view uniformName, std::string_view autoBinding) { for (const auto resolver : _customAutoBindingResolvers) { diff --git a/cocos/renderer/backend/ProgramState.h b/cocos/renderer/backend/ProgramState.h index 7a5f756e616b..d1c8cb272dd5 100644 --- a/cocos/renderer/backend/ProgramState.h +++ b/cocos/renderer/backend/ProgramState.h @@ -124,7 +124,7 @@ class CC_DLL ProgramState : public Ref * @return Uniform location. * @see `backend::UniformLocation getUniformLocation(backend::Uniform name) const` */ - backend::UniformLocation getUniformLocation(const std::string& uniform) const; + backend::UniformLocation getUniformLocation(std::string_view uniform) const; /** * Get uniform location in a more efficient way by the given built-in uniform name. @@ -138,15 +138,15 @@ class CC_DLL ProgramState : public Ref * Get an attribute location by the actual attribute name. * @param name Specifies the attribute name. * @return Attribute location. - * @see `int getAttributeLocation(const std::string& name) const` + * @see `int getAttributeLocation(std::string_view name) const` */ - inline int getAttributeLocation(const std::string& name) const { return _program->getAttributeLocation(name); } + inline int getAttributeLocation(std::string_view name) const { return _program->getAttributeLocation(name); } /** * Get an attribute location by the engine built-in attribute name. * @param name Specifies the built-in attribute name. * @return Attribute location. - * @see `int getAttributeLocation(const std::string& name) const` + * @see `int getAttributeLocation(std::string_view name) const` */ inline int getAttributeLocation(Attribute name) const { return _program->getAttributeLocation(name); } @@ -279,8 +279,8 @@ class CC_DLL ProgramState : public Ref * bound, false otherwise. */ virtual bool resolveAutoBinding(ProgramState*, - const std::string& uniformName, - const std::string& autoBinding) = 0; + std::string_view uniformName, + std::string_view autoBinding) = 0; }; /** * Sets a uniform auto-binding. @@ -292,7 +292,7 @@ class CC_DLL ProgramState : public Ref * @param uniformName The name of the material parameter to store an auto-binding for. * @param autoBinding A string matching one of the built-in AutoBinding enum constants. */ - void setParameterAutoBinding(const std::string& uniformName, const std::string& autoBinding); + void setParameterAutoBinding(std::string_view uniformName, std::string_view autoBinding); inline std::shared_ptr getVertexLayout() const { return _vertexLayout; } @@ -379,7 +379,7 @@ class CC_DLL ProgramState : public Ref * @param uniformName Name of the shader uniform. * @param autoBinding Name of the auto binding. */ - void applyAutoBinding(const std::string&, const std::string&); + void applyAutoBinding(std::string_view, std::string_view); backend::Program* _program = nullptr; std::unordered_map _callbackUniforms; diff --git a/cocos/renderer/backend/ShaderCache.cpp b/cocos/renderer/backend/ShaderCache.cpp index 7d92c21ba71d..149fc2fcb7e0 100644 --- a/cocos/renderer/backend/ShaderCache.cpp +++ b/cocos/renderer/backend/ShaderCache.cpp @@ -62,21 +62,21 @@ bool ShaderCache::init() return true; } -backend::ShaderModule* ShaderCache::newVertexShaderModule(const std::string& shaderSource) +backend::ShaderModule* ShaderCache::newVertexShaderModule(std::string_view shaderSource) { auto vertexShaderModule = newShaderModule(backend::ShaderStage::VERTEX, shaderSource); return vertexShaderModule; } -backend::ShaderModule* ShaderCache::newFragmentShaderModule(const std::string& shaderSource) +backend::ShaderModule* ShaderCache::newFragmentShaderModule(std::string_view shaderSource) { auto fragmenShaderModule = newShaderModule(backend::ShaderStage::FRAGMENT, shaderSource); return fragmenShaderModule; } -backend::ShaderModule* ShaderCache::newShaderModule(backend::ShaderStage stage, const std::string& shaderSource) +backend::ShaderModule* ShaderCache::newShaderModule(backend::ShaderStage stage, std::string_view shaderSource) { - std::size_t key = std::hash{}(shaderSource); + std::size_t key = std::hash{}(shaderSource); auto iter = _cachedShaders.find(key); if (_cachedShaders.end() != iter) return iter->second; diff --git a/cocos/renderer/backend/ShaderCache.h b/cocos/renderer/backend/ShaderCache.h index d5daf870aeb7..87709042f598 100644 --- a/cocos/renderer/backend/ShaderCache.h +++ b/cocos/renderer/backend/ShaderCache.h @@ -54,14 +54,14 @@ class CC_DLL ShaderCache : public Ref * If it is created before, then just return the cached shader module. * @param shaderSource The source code of the shader. */ - static backend::ShaderModule* newVertexShaderModule(const std::string& shaderSource); + static backend::ShaderModule* newVertexShaderModule(std::string_view shaderSource); /** * Create a fragment shader module. * If it is created before, then just return the cached shader module. * @param shaderSource The source code of the shader. */ - static backend::ShaderModule* newFragmentShaderModule(const std::string& shaderSource); + static backend::ShaderModule* newFragmentShaderModule(std::string_view shaderSource); /** * Remove all unused shaders. @@ -85,7 +85,7 @@ class CC_DLL ShaderCache : public Ref * @param source Specifies shader source. * @return A ShaderModule object. */ - static backend::ShaderModule* newShaderModule(backend::ShaderStage stage, const std::string& shaderSource); + static backend::ShaderModule* newShaderModule(backend::ShaderStage stage, std::string_view shaderSource); static std::unordered_map _cachedShaders; static ShaderCache* _sharedShaderCache; diff --git a/cocos/renderer/backend/VertexLayout.cpp b/cocos/renderer/backend/VertexLayout.cpp index 044a2661c032..ad8f48ab8954 100644 --- a/cocos/renderer/backend/VertexLayout.cpp +++ b/cocos/renderer/backend/VertexLayout.cpp @@ -28,7 +28,7 @@ CC_BACKEND_BEGIN -void VertexLayout::setAttribute(const std::string& name, +void VertexLayout::setAttribute(std::string_view name, std::size_t index, VertexFormat format, std::size_t offset, @@ -37,7 +37,11 @@ void VertexLayout::setAttribute(const std::string& name, if (index == -1) return; - _attributes[name] = {name, index, format, offset, needToBeNormallized}; + // FIXME 2021/12/25 TODO: store name key is enough + hlookup::set_item( + _attributes, name, + Attribute{name, index, format, offset, + needToBeNormallized}); // _attributes[name] = {name, index, format, offset, needToBeNormallized}; } void VertexLayout::setLayout(std::size_t stride) diff --git a/cocos/renderer/backend/VertexLayout.h b/cocos/renderer/backend/VertexLayout.h index e3b33746e45a..3c11bf49f38d 100644 --- a/cocos/renderer/backend/VertexLayout.h +++ b/cocos/renderer/backend/VertexLayout.h @@ -48,7 +48,7 @@ class CC_DLL VertexLayout struct Attribute { Attribute() = default; - Attribute(const std::string& _name, + Attribute(std::string_view _name, std::size_t _index, VertexFormat _format, std::size_t _offset, @@ -74,7 +74,7 @@ class CC_DLL VertexLayout * @param needToBeNormallized Specifies whether fixed-point data values should be normalized (true) or converted * directly as fixed-point values (false) when they are accessed. */ - void setAttribute(const std::string& name, + void setAttribute(std::string_view name, std::size_t index, VertexFormat format, std::size_t offset, @@ -103,7 +103,7 @@ class CC_DLL VertexLayout * Get attribute informations * @return Atrribute informations. */ - inline const std::unordered_map& getAttributes() const { return _attributes; } + inline const hlookup::string_map& getAttributes() const { return _attributes; } /** * Check if vertex layout has been set. @@ -111,7 +111,7 @@ class CC_DLL VertexLayout inline bool isValid() const { return _stride != 0; } private: - std::unordered_map _attributes; + hlookup::string_map _attributes; std::size_t _stride = 0; VertexStepMode _stepMode = VertexStepMode::VERTEX; }; diff --git a/cocos/renderer/backend/metal/DeviceMTL.h b/cocos/renderer/backend/metal/DeviceMTL.h index fac8be126d0c..10cfdd30f23a 100644 --- a/cocos/renderer/backend/metal/DeviceMTL.h +++ b/cocos/renderer/backend/metal/DeviceMTL.h @@ -133,7 +133,7 @@ class DeviceMTL : public Device * @param fragmentShader Specifes this is a fragment shader source. * @return A Program instance. */ - virtual Program* newProgram(const std::string& vertexShader, const std::string& fragmentShader) override; + virtual Program* newProgram(std::string_view vertexShader, std::string_view fragmentShader) override; /** * Get a MTLDevice object. @@ -154,7 +154,7 @@ class DeviceMTL : public Device * @param source Specifies shader source. * @return A ShaderModule object. */ - virtual ShaderModule* newShaderModule(ShaderStage stage, const std::string& source) override; + virtual ShaderModule* newShaderModule(ShaderStage stage, std::string_view source) override; private: static CAMetalLayer* _metalLayer; diff --git a/cocos/renderer/backend/metal/DeviceMTL.mm b/cocos/renderer/backend/metal/DeviceMTL.mm index 174e2807a921..e5f7feafef29 100644 --- a/cocos/renderer/backend/metal/DeviceMTL.mm +++ b/cocos/renderer/backend/metal/DeviceMTL.mm @@ -131,7 +131,7 @@ of this software and associated documentation files (the "Software"), to deal return rtGL; } -ShaderModule* DeviceMTL::newShaderModule(ShaderStage stage, const std::string& source) +ShaderModule* DeviceMTL::newShaderModule(ShaderStage stage, std::string_view source) { return new ShaderModuleMTL(_mtlDevice, stage, source); } @@ -146,7 +146,7 @@ of this software and associated documentation files (the "Software"), to deal return new RenderPipelineMTL(_mtlDevice); } -Program* DeviceMTL::newProgram(const std::string& vertexShader, const std::string& fragmentShader) +Program* DeviceMTL::newProgram(std::string_view vertexShader, std::string_view fragmentShader) { return new ProgramMTL(vertexShader, fragmentShader); } diff --git a/cocos/renderer/backend/metal/ProgramMTL.h b/cocos/renderer/backend/metal/ProgramMTL.h index 0b014941bd18..014a37743224 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.h +++ b/cocos/renderer/backend/metal/ProgramMTL.h @@ -47,7 +47,7 @@ class ProgramMTL : public Program * @param vertexShader Specifes the vertex shader source. * @param fragmentShader Specifes the fragment shader source. */ - ProgramMTL(const std::string& vertexShader, const std::string& fragmentShader); + ProgramMTL(std::string_view vertexShader, std::string_view fragmentShader); virtual ~ProgramMTL(); /** @@ -55,7 +55,7 @@ class ProgramMTL : public Program * @param uniform Specifies the uniform name. * @return The uniform location. */ - virtual UniformLocation getUniformLocation(const std::string& uniform) const override; + virtual UniformLocation getUniformLocation(std::string_view uniform) const override; /** * Get uniform location by engine built-in uniform enum name. @@ -69,7 +69,7 @@ class ProgramMTL : public Program * @param name Specifies the attribute name. * @return The attribute location. */ - virtual int getAttributeLocation(const std::string& name) const override; + virtual int getAttributeLocation(std::string_view name) const override; /** * Get attribute location by engine built-in attribute enum name. diff --git a/cocos/renderer/backend/metal/ProgramMTL.mm b/cocos/renderer/backend/metal/ProgramMTL.mm index d1f2cb7a86bc..ebf19caa624e 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.mm +++ b/cocos/renderer/backend/metal/ProgramMTL.mm @@ -31,7 +31,7 @@ of this software and associated documentation files (the "Software"), to deal const std::string metalSpecificDefine = "#define METAL\n"; } -ProgramMTL::ProgramMTL(const std::string& vertexShader, const std::string& fragmentShader) +ProgramMTL::ProgramMTL(std::string_view vertexShader, std::string_view fragmentShader) : Program(vertexShader, fragmentShader) { _vertexShader = static_cast(ShaderCache::newVertexShaderModule(vertexShader)); @@ -81,7 +81,7 @@ of this software and associated documentation files (the "Software"), to deal return uniformLocation; } -UniformLocation ProgramMTL::getUniformLocation(const std::string& uniform) const +UniformLocation ProgramMTL::getUniformLocation(std::string_view uniform) const { UniformLocation uniformLocation; auto vsLocation = _vertexShader->getUniformLocation(uniform); diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.h b/cocos/renderer/backend/metal/ShaderModuleMTL.h index 1272c3b409a3..274bbffac28b 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.h +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.h @@ -52,7 +52,7 @@ class ShaderModuleMTL : public ShaderModule * @param stage Specify what kinds of shader to be created. * @param source Specify the shader source. */ - ShaderModuleMTL(id mtlDevice, ShaderStage stage, const std::string& source); + ShaderModuleMTL(id mtlDevice, ShaderStage stage, std::string_view source); ~ShaderModuleMTL(); /** @@ -97,7 +97,7 @@ class ShaderModuleMTL : public ShaderModule * @param uniform Specifies the uniform name. * @return The uniform location. */ - int getUniformLocation(const std::string& name) const; + int getUniformLocation(std::string_view name) const; /** * Get attribute location by engine built-in attribute enum name. diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.mm b/cocos/renderer/backend/metal/ShaderModuleMTL.mm index d0f8291a41cd..00782d8eb4b3 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.mm +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.mm @@ -29,7 +29,7 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN -ShaderModuleMTL::ShaderModuleMTL(id mtlDevice, ShaderStage stage, const std::string& source) +ShaderModuleMTL::ShaderModuleMTL(id mtlDevice, ShaderStage stage, std::string_view source) : ShaderModule(stage) { // Convert GLSL shader to metal shader @@ -159,7 +159,7 @@ of this software and associated documentation files (the "Software"), to deal return _uniformLocation[name]; } -int ShaderModuleMTL::getUniformLocation(const std::string& name) const +int ShaderModuleMTL::getUniformLocation(std::string_view name) const { const auto& iter = _uniformInfos.find(name); if(iter != _uniformInfos.end()) diff --git a/cocos/renderer/backend/opengl/DeviceGL.cpp b/cocos/renderer/backend/opengl/DeviceGL.cpp index 0be7eab52c99..6f7b8b07b663 100644 --- a/cocos/renderer/backend/opengl/DeviceGL.cpp +++ b/cocos/renderer/backend/opengl/DeviceGL.cpp @@ -112,7 +112,7 @@ RenderTarget* DeviceGL::newRenderTarget(TargetBufferFlags rtf, return rtGL; } -ShaderModule* DeviceGL::newShaderModule(ShaderStage stage, const std::string& source) +ShaderModule* DeviceGL::newShaderModule(ShaderStage stage, std::string_view source) { return new ShaderModuleGL(stage, source); } @@ -127,7 +127,7 @@ RenderPipeline* DeviceGL::newRenderPipeline() return new RenderPipelineGL(); } -Program* DeviceGL::newProgram(const std::string& vertexShader, const std::string& fragmentShader) +Program* DeviceGL::newProgram(std::string_view vertexShader, std::string_view fragmentShader) { return new ProgramGL(vertexShader, fragmentShader); } diff --git a/cocos/renderer/backend/opengl/DeviceGL.h b/cocos/renderer/backend/opengl/DeviceGL.h index edf20369c9a6..80ea34835059 100644 --- a/cocos/renderer/backend/opengl/DeviceGL.h +++ b/cocos/renderer/backend/opengl/DeviceGL.h @@ -92,7 +92,7 @@ class DeviceGL : public Device * @param fragmentShader Specifes this is a fragment shader source. * @return A Program instance. */ - virtual Program* newProgram(const std::string& vertexShader, const std::string& fragmentShader) override; + virtual Program* newProgram(std::string_view vertexShader, std::string_view fragmentShader) override; protected: /** @@ -101,7 +101,7 @@ class DeviceGL : public Device * @param source Specifies shader source. * @return A ShaderModule object. */ - virtual ShaderModule* newShaderModule(ShaderStage stage, const std::string& source) override; + virtual ShaderModule* newShaderModule(ShaderStage stage, std::string_view source) override; GLint _defaultFBO = 0; // The value gets from glGetIntegerv, so need to use GLint }; diff --git a/cocos/renderer/backend/opengl/DeviceInfoGL.cpp b/cocos/renderer/backend/opengl/DeviceInfoGL.cpp index 1c2e5b89c1da..1c68c04c6fa5 100644 --- a/cocos/renderer/backend/opengl/DeviceInfoGL.cpp +++ b/cocos/renderer/backend/opengl/DeviceInfoGL.cpp @@ -169,7 +169,7 @@ bool DeviceInfoGL::checkForFeatureSupported(FeatureType feature) return featureSupported; } -bool DeviceInfoGL::checkForGLExtension(const std::string& searchName) const +bool DeviceInfoGL::checkForGLExtension(std::string_view searchName) const { return _glExtensions.find(searchName) != std::string::npos; } diff --git a/cocos/renderer/backend/opengl/DeviceInfoGL.h b/cocos/renderer/backend/opengl/DeviceInfoGL.h index 23c56727bca1..ec11777c48ce 100644 --- a/cocos/renderer/backend/opengl/DeviceInfoGL.h +++ b/cocos/renderer/backend/opengl/DeviceInfoGL.h @@ -79,7 +79,7 @@ class DeviceInfoGL : public DeviceInfo virtual bool checkForFeatureSupported(FeatureType feature) override; private: - bool checkForGLExtension(const std::string& searchName) const; + bool checkForGLExtension(std::string_view searchName) const; static bool checkSupportsCompressedFormat(int compressedFormat); diff --git a/cocos/renderer/backend/opengl/ProgramGL.cpp b/cocos/renderer/backend/opengl/ProgramGL.cpp index e1908f2ad08b..7a8702a93eaa 100644 --- a/cocos/renderer/backend/opengl/ProgramGL.cpp +++ b/cocos/renderer/backend/opengl/ProgramGL.cpp @@ -39,7 +39,7 @@ namespace static const std::string SHADER_PREDEFINE = "#version 100\n precision highp float;\n precision highp int;\n"; } -ProgramGL::ProgramGL(const std::string& vertexShader, const std::string& fragmentShader) +ProgramGL::ProgramGL(std::string_view vertexShader, std::string_view fragmentShader) : Program(vertexShader, fragmentShader) { #if defined(CC_USE_GLES) @@ -197,12 +197,12 @@ void ProgramGL::computeLocations() _builtinUniformLocation[Uniform::TEXTURE1].location[0] = location; } -bool ProgramGL::getAttributeLocation(const std::string& attributeName, unsigned int& location) const +bool ProgramGL::getAttributeLocation(std::string_view attributeName, unsigned int& location) const { - GLint loc = glGetAttribLocation(_program, attributeName.c_str()); + GLint loc = glGetAttribLocation(_program, attributeName.data()); if (-1 == loc) { - CCLOG("Cocos2d: %s: can not find vertex attribute of %s", __FUNCTION__, attributeName.c_str()); + CCLOG("Cocos2d: %s: can not find vertex attribute of %s", __FUNCTION__, attributeName.data()); return false; } @@ -210,9 +210,9 @@ bool ProgramGL::getAttributeLocation(const std::string& attributeName, unsigned return true; } -const std::unordered_map ProgramGL::getActiveAttributes() const +hlookup::string_map ProgramGL::getActiveAttributes() const { - std::unordered_map attributes; + hlookup::string_map attributes; if (!_program) return attributes; @@ -293,9 +293,9 @@ int ProgramGL::getAttributeLocation(Attribute name) const return _builtinAttributeLocation[name]; } -int ProgramGL::getAttributeLocation(const std::string& name) const +int ProgramGL::getAttributeLocation(std::string_view name) const { - return glGetAttribLocation(_program, name.c_str()); + return glGetAttribLocation(_program, name.data()); } UniformLocation ProgramGL::getUniformLocation(backend::Uniform name) const @@ -303,7 +303,7 @@ UniformLocation ProgramGL::getUniformLocation(backend::Uniform name) const return _builtinUniformLocation[name]; } -UniformLocation ProgramGL::getUniformLocation(const std::string& uniform) const +UniformLocation ProgramGL::getUniformLocation(std::string_view uniform) const { UniformLocation uniformLocation; if (_activeUniformInfos.find(uniform) != _activeUniformInfos.end()) @@ -352,7 +352,7 @@ const UniformInfo& ProgramGL::getActiveUniformInfo(ShaderStage stage, int locati return s_emptyInfo; } -const std::unordered_map& ProgramGL::getAllActiveUniformInfo(ShaderStage stage) const +const hlookup::string_map& ProgramGL::getAllActiveUniformInfo(ShaderStage stage) const { return _activeUniformInfos; } diff --git a/cocos/renderer/backend/opengl/ProgramGL.h b/cocos/renderer/backend/opengl/ProgramGL.h index 25be64d6f5aa..62e13b5c869d 100644 --- a/cocos/renderer/backend/opengl/ProgramGL.h +++ b/cocos/renderer/backend/opengl/ProgramGL.h @@ -68,7 +68,7 @@ class ProgramGL : public Program * @param vertexShader Specifes the vertex shader source. * @param fragmentShader Specifes the fragment shader source. */ - ProgramGL(const std::string& vertexShader, const std::string& fragmentShader); + ProgramGL(std::string_view vertexShader, std::string_view fragmentShader); ~ProgramGL(); @@ -89,7 +89,7 @@ class ProgramGL : public Program * @param uniform Specifies the uniform name. * @return The uniform location. */ - virtual UniformLocation getUniformLocation(const std::string& uniform) const override; + virtual UniformLocation getUniformLocation(std::string_view uniform) const override; /** * Get uniform location by engine built-in uniform enum name. @@ -103,7 +103,7 @@ class ProgramGL : public Program * @param name Specifies the attribute name. * @return The attribute location. */ - virtual int getAttributeLocation(const std::string& name) const override; + virtual int getAttributeLocation(std::string_view name) const override; /** * Get attribute location by engine built-in attribute enum name. @@ -128,7 +128,7 @@ class ProgramGL : public Program * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - virtual const std::unordered_map getActiveAttributes() const override; + virtual hlookup::string_map getActiveAttributes() const override; /** * Get uniform buffer size in bytes that can hold all the uniforms. @@ -149,12 +149,12 @@ class ProgramGL : public Program * Get all uniformInfos. * @return The uniformInfos. */ - virtual const std::unordered_map& getAllActiveUniformInfo( + virtual const hlookup::string_map& getAllActiveUniformInfo( ShaderStage stage) const override; private: void compileProgram(); - bool getAttributeLocation(const std::string& attributeName, unsigned int& location) const; + bool getAttributeLocation(std::string_view attributeName, unsigned int& location) const; void computeUniformInfos(); void computeLocations(); #if CC_ENABLE_CACHE_TEXTURE_DATA @@ -172,7 +172,7 @@ class ProgramGL : public Program ShaderModuleGL* _fragmentShaderModule = nullptr; std::vector _attributeInfos; - std::unordered_map _activeUniformInfos; + hlookup::string_map _activeUniformInfos; #if CC_ENABLE_CACHE_TEXTURE_DATA std::unordered_map _originalUniformLocations; ///< record the uniform location when shader was first created. diff --git a/cocos/renderer/backend/opengl/ShaderModuleGL.cpp b/cocos/renderer/backend/opengl/ShaderModuleGL.cpp index 23c1a1629b6e..3b6f49e6dd8c 100644 --- a/cocos/renderer/backend/opengl/ShaderModuleGL.cpp +++ b/cocos/renderer/backend/opengl/ShaderModuleGL.cpp @@ -31,7 +31,7 @@ CC_BACKEND_BEGIN -ShaderModuleGL::ShaderModuleGL(ShaderStage stage, const std::string& source) : ShaderModule(stage) +ShaderModuleGL::ShaderModuleGL(ShaderStage stage, std::string_view source) : ShaderModule(stage) { compileShader(stage, source); } @@ -41,10 +41,10 @@ ShaderModuleGL::~ShaderModuleGL() deleteShader(); } -void ShaderModuleGL::compileShader(ShaderStage stage, const std::string& source) +void ShaderModuleGL::compileShader(ShaderStage stage, std::string_view source) { GLenum shaderType = stage == ShaderStage::VERTEX ? GL_VERTEX_SHADER : GL_FRAGMENT_SHADER; - const GLchar* sourcePtr = reinterpret_cast(source.c_str()); + const GLchar* sourcePtr = reinterpret_cast(source.data()); _shader = glCreateShader(shaderType); if (!_shader) return; @@ -64,7 +64,7 @@ void ShaderModuleGL::compileShader(ShaderStage stage, const std::string& source) cocos2d::Data errorLog{}; glGetShaderInfoLog(_shader, logLength, nullptr, (GLchar*)errorLog.resize(logLength)); cocos2d::log("cocos2d: ERROR: Failed to compile shader, detail: %s\n%s", errorLog.getBytes(), - source.c_str()); + source.data()); } else { diff --git a/cocos/renderer/backend/opengl/ShaderModuleGL.h b/cocos/renderer/backend/opengl/ShaderModuleGL.h index 5bae6962bbc9..81ea52691ad2 100644 --- a/cocos/renderer/backend/opengl/ShaderModuleGL.h +++ b/cocos/renderer/backend/opengl/ShaderModuleGL.h @@ -44,7 +44,7 @@ class ShaderModuleGL : public ShaderModule * @param stage Specifies whether is vertex shader or fragment shader. * @param source Specifies shader source. */ - ShaderModuleGL(ShaderStage stage, const std::string& source); + ShaderModuleGL(ShaderStage stage, std::string_view source); ~ShaderModuleGL(); /** @@ -54,7 +54,7 @@ class ShaderModuleGL : public ShaderModule inline GLuint getShader() const { return _shader; } private: - void compileShader(ShaderStage stage, const std::string& source); + void compileShader(ShaderStage stage, std::string_view source); void deleteShader(); GLuint _shader = 0; diff --git a/cocos/ui/UIAbstractCheckButton.cpp b/cocos/ui/UIAbstractCheckButton.cpp index aec8a369deb8..412a33b46b29 100644 --- a/cocos/ui/UIAbstractCheckButton.cpp +++ b/cocos/ui/UIAbstractCheckButton.cpp @@ -73,11 +73,11 @@ AbstractCheckButton::AbstractCheckButton() AbstractCheckButton::~AbstractCheckButton() {} -bool AbstractCheckButton::init(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, +bool AbstractCheckButton::init(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType) { bool ret = true; @@ -120,11 +120,11 @@ void AbstractCheckButton::initRenderer() addProtectedChild(_frontCrossDisabledRenderer, FRONTCROSSDISABLED_RENDERER_Z, -1); } -void AbstractCheckButton::loadTextures(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, +void AbstractCheckButton::loadTextures(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType) { loadTextureBackGround(backGround, texType); @@ -134,7 +134,7 @@ void AbstractCheckButton::loadTextures(const std::string& backGround, loadTextureFrontCrossDisabled(frontCrossDisabled, texType); } -void AbstractCheckButton::loadTextureBackGround(const std::string& backGround, TextureResType texType) +void AbstractCheckButton::loadTextureBackGround(std::string_view backGround, TextureResType texType) { _backGroundFileName = backGround; @@ -169,7 +169,7 @@ void AbstractCheckButton::loadTextureBackGround(SpriteFrame* spriteFrame) this->setupBackgroundTexture(); } -void AbstractCheckButton::loadTextureBackGroundSelected(const std::string& backGroundSelected, TextureResType texType) +void AbstractCheckButton::loadTextureBackGroundSelected(std::string_view backGroundSelected, TextureResType texType) { _backGroundSelectedFileName = backGroundSelected; _isBackgroundSelectedTextureLoaded = !backGroundSelected.empty(); @@ -203,7 +203,7 @@ void AbstractCheckButton::setupBackgroundSelectedTexture() _backGroundSelectedBoxRendererAdaptDirty = true; } -void AbstractCheckButton::loadTextureFrontCross(const std::string& cross, TextureResType texType) +void AbstractCheckButton::loadTextureFrontCross(std::string_view cross, TextureResType texType) { _frontCrossFileName = cross; @@ -234,7 +234,7 @@ void AbstractCheckButton::setupFrontCrossTexture() _frontCrossRendererAdaptDirty = true; } -void AbstractCheckButton::loadTextureBackGroundDisabled(const std::string& backGroundDisabled, TextureResType texType) +void AbstractCheckButton::loadTextureBackGroundDisabled(std::string_view backGroundDisabled, TextureResType texType) { _backGroundDisabledFileName = backGroundDisabled; _isBackgroundDisabledTextureLoaded = !backGroundDisabled.empty(); @@ -269,7 +269,7 @@ void AbstractCheckButton::setupBackgroundDisable() _backGroundBoxDisabledRendererAdaptDirty = true; } -void AbstractCheckButton::loadTextureFrontCrossDisabled(const std::string& frontCrossDisabled, TextureResType texType) +void AbstractCheckButton::loadTextureFrontCrossDisabled(std::string_view frontCrossDisabled, TextureResType texType) { _frontCrossDisabledFileName = frontCrossDisabled; _isFrontCrossDisabledTextureLoaded = !frontCrossDisabled.empty(); diff --git a/cocos/ui/UIAbstractCheckButton.h b/cocos/ui/UIAbstractCheckButton.h index 38f97b046ab8..7d801dba7630 100644 --- a/cocos/ui/UIAbstractCheckButton.h +++ b/cocos/ui/UIAbstractCheckButton.h @@ -57,11 +57,11 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * @param frontCrossDisabled The front cross disabled state image name. * @param texType @see `Widget::TextureResType` */ - void loadTextures(const std::string& background, - const std::string& backgroundSelected, - const std::string& cross, - const std::string& backgroundDisabled, - const std::string& frontCrossDisabled, + void loadTextures(std::string_view background, + std::string_view backgroundSelected, + std::string_view cross, + std::string_view backgroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); /** @@ -70,7 +70,7 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * @param backGround The background image name. * @param type @see `Widget::TextureResType` */ - void loadTextureBackGround(const std::string& backGround, TextureResType type = TextureResType::LOCAL); + void loadTextureBackGround(std::string_view backGround, TextureResType type = TextureResType::LOCAL); /** * Load background selected state texture for check button. @@ -78,7 +78,7 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * @param backGroundSelected The background selected state image name. * @param texType @see `Widget::TextureResType` */ - void loadTextureBackGroundSelected(const std::string& backGroundSelected, + void loadTextureBackGroundSelected(std::string_view backGroundSelected, TextureResType texType = TextureResType::LOCAL); /** @@ -87,7 +87,7 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * @param crossTextureName The cross texture name. * @param texType @see `Widget::TextureResType` */ - void loadTextureFrontCross(const std::string& crossTextureName, TextureResType texType = TextureResType::LOCAL); + void loadTextureFrontCross(std::string_view crossTextureName, TextureResType texType = TextureResType::LOCAL); /** * Load background disabled state texture for checkbox. @@ -96,7 +96,7 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * * @param texType @see `Widget::TextureResType` */ - void loadTextureBackGroundDisabled(const std::string& backGroundDisabled, + void loadTextureBackGroundDisabled(std::string_view backGroundDisabled, TextureResType texType = TextureResType::LOCAL); /** @@ -105,7 +105,7 @@ class CC_GUI_DLL AbstractCheckButton : public Widget * @param frontCrossDisabled The front cross disabled state texture name. * @param texType @see `Widget::TextureResType` */ - void loadTextureFrontCrossDisabled(const std::string& frontCrossDisabled, + void loadTextureFrontCrossDisabled(std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); /** @@ -174,11 +174,11 @@ class CC_GUI_DLL AbstractCheckButton : public Widget ResourceData getCrossDisabledFile(); CC_CONSTRUCTOR_ACCESS : virtual bool init() override; - virtual bool init(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, + virtual bool init(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); protected: diff --git a/cocos/ui/UIButton.cpp b/cocos/ui/UIButton.cpp index 8b2025a1a784..195bdde8ebe4 100644 --- a/cocos/ui/UIButton.cpp +++ b/cocos/ui/UIButton.cpp @@ -92,9 +92,9 @@ Button* Button::create() return nullptr; } -Button* Button::create(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disableImage, +Button* Button::create(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disableImage, TextureResType texType) { Button* btn = new Button; @@ -107,9 +107,9 @@ Button* Button::create(const std::string& normalImage, return nullptr; } -bool Button::init(const std::string& normalImage, - const std::string& selectedImage, - const std::string& disableImage, +bool Button::init(std::string_view normalImage, + std::string_view selectedImage, + std::string_view disableImage, TextureResType texType) { @@ -250,9 +250,9 @@ void Button::ignoreContentAdaptWithSize(bool ignore) } } -void Button::loadTextures(const std::string& normal, - const std::string& selected, - const std::string& disabled, +void Button::loadTextures(std::string_view normal, + std::string_view selected, + std::string_view disabled, TextureResType texType) { loadTextureNormal(normal, texType); @@ -260,7 +260,7 @@ void Button::loadTextures(const std::string& normal, loadTextureDisabled(disabled, texType); } -void Button::loadTextureNormal(const std::string& normal, TextureResType texType) +void Button::loadTextureNormal(std::string_view normal, TextureResType texType) { _normalFileName = normal; _normalTexType = texType; @@ -319,7 +319,7 @@ void Button::loadTextureNormal(SpriteFrame* normalSpriteFrame) this->setupNormalTexture(nullptr != normalSpriteFrame); } -void Button::loadTexturePressed(const std::string& selected, TextureResType texType) +void Button::loadTexturePressed(std::string_view selected, TextureResType texType) { _clickedFileName = selected; _pressedTexType = texType; @@ -362,7 +362,7 @@ void Button::loadTexturePressed(SpriteFrame* pressedSpriteFrame) this->setupPressedTexture(nullptr != pressedSpriteFrame); } -void Button::loadTextureDisabled(const std::string& disabled, TextureResType texType) +void Button::loadTextureDisabled(std::string_view disabled, TextureResType texType) { _disabledFileName = disabled; _disabledTexType = texType; @@ -718,7 +718,7 @@ void Button::setTitleAlignment(TextHAlignment hAlignment, TextVAlignment vAlignm _titleRenderer->setAlignment(hAlignment, vAlignment); } -void Button::setTitleText(const std::string& text) +void Button::setTitleText(std::string_view text) { if (text.compare(getTitleText()) == 0) { @@ -737,7 +737,7 @@ void Button::setTitleText(const std::string& text) updateTitleLocation(); } -std::string Button::getTitleText() const +std::string_view Button::getTitleText() const { if (!_titleRenderer) { @@ -806,13 +806,13 @@ float Button::getZoomScale() const return _zoomScale; } -void Button::setTitleFontName(const std::string& fontName) +void Button::setTitleFontName(std::string_view fontName) { createTitleRendererIfNull(); if (FileUtils::getInstance()->isFileExist(fontName)) { - std::string lowerCasedFontName = fontName; + std::string lowerCasedFontName{fontName}; std::transform(lowerCasedFontName.begin(), lowerCasedFontName.end(), lowerCasedFontName.begin(), ::tolower); if (lowerCasedFontName.find(".fnt") != std::string::npos) { @@ -838,7 +838,7 @@ Label* Button::getTitleRenderer() const return _titleRenderer; } -std::string Button::getTitleFontName() const +std::string_view Button::getTitleFontName() const { if (_titleRenderer) { @@ -857,7 +857,7 @@ std::string Button::getTitleFontName() const } } - return ""; + return ""sv; } std::string Button::getDescription() const diff --git a/cocos/ui/UIButton.h b/cocos/ui/UIButton.h index 3db6e5c1231a..5405d437190a 100644 --- a/cocos/ui/UIButton.h +++ b/cocos/ui/UIButton.h @@ -80,9 +80,9 @@ class CC_GUI_DLL Button : public Widget * @param texType @see `TextureResType` * @return a Button instance. */ - static Button* create(const std::string& normalImage, - const std::string& selectedImage = "", - const std::string& disableImage = "", + static Button* create(std::string_view normalImage, + std::string_view selectedImage = "", + std::string_view disableImage = "", TextureResType texType = TextureResType::LOCAL); /** @@ -93,9 +93,9 @@ class CC_GUI_DLL Button : public Widget * @param disabled disabled state texture name. * @param texType @see `TextureResType` */ - void loadTextures(const std::string& normal, - const std::string& selected, - const std::string& disabled = "", + void loadTextures(std::string_view normal, + std::string_view selected, + std::string_view disabled = "", TextureResType texType = TextureResType::LOCAL); /** @@ -104,7 +104,7 @@ class CC_GUI_DLL Button : public Widget * @param normal normal state texture. * @param texType @see `TextureResType` */ - void loadTextureNormal(const std::string& normal, TextureResType texType = TextureResType::LOCAL); + void loadTextureNormal(std::string_view normal, TextureResType texType = TextureResType::LOCAL); /** * Load selected state texture for button. @@ -112,7 +112,7 @@ class CC_GUI_DLL Button : public Widget * @param selected selected state texture. * @param texType @see `TextureResType` */ - void loadTexturePressed(const std::string& selected, TextureResType texType = TextureResType::LOCAL); + void loadTexturePressed(std::string_view selected, TextureResType texType = TextureResType::LOCAL); /** * Load disabled state texture for button. @@ -120,7 +120,7 @@ class CC_GUI_DLL Button : public Widget * @param disabled dark state texture. * @param texType @see `TextureResType` */ - void loadTextureDisabled(const std::string& disabled, TextureResType texType = TextureResType::LOCAL); + void loadTextureDisabled(std::string_view disabled, TextureResType texType = TextureResType::LOCAL); /** * Sets capInsets for button. @@ -206,13 +206,13 @@ class CC_GUI_DLL Button : public Widget * Change the content of button's title. *@param text The title in std::string. */ - void setTitleText(const std::string& text); + void setTitleText(std::string_view text); /** * Query the button title content. *@return Get the button's title content. */ - std::string getTitleText() const; + std::string_view getTitleText() const; /** * Change the color of button's title. @@ -242,13 +242,13 @@ class CC_GUI_DLL Button : public Widget * Change the font name of button's title *@param fontName a font name string. */ - void setTitleFontName(const std::string& fontName); + void setTitleFontName(std::string_view fontName); /** * Query the font name of button's title *@return font name in std::string */ - std::string getTitleFontName() const; + std::string_view getTitleFontName() const; /** * Sets the title's text horizontal alignment. @@ -314,9 +314,9 @@ class CC_GUI_DLL Button : public Widget ResourceData getDisabledFile(); CC_CONSTRUCTOR_ACCESS : virtual bool init() override; - virtual bool init(const std::string& normalImage, - const std::string& selectedImage = "", - const std::string& disableImage = "", + virtual bool init(std::string_view normalImage, + std::string_view selectedImage = "", + std::string_view disableImage = "", TextureResType texType = TextureResType::LOCAL); virtual Vec2 getNormalTextureSize() const; diff --git a/cocos/ui/UICheckBox.cpp b/cocos/ui/UICheckBox.cpp index 6cce622d6f73..c98813b25166 100644 --- a/cocos/ui/UICheckBox.cpp +++ b/cocos/ui/UICheckBox.cpp @@ -48,11 +48,11 @@ CheckBox* CheckBox::create() return nullptr; } -CheckBox* CheckBox::create(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, +CheckBox* CheckBox::create(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType) { CheckBox* pWidget = new CheckBox; @@ -65,7 +65,7 @@ CheckBox* CheckBox::create(const std::string& backGround, return nullptr; } -CheckBox* CheckBox::create(const std::string& backGround, const std::string& cross, TextureResType texType) +CheckBox* CheckBox::create(std::string_view backGround, std::string_view cross, TextureResType texType) { CheckBox* pWidget = new CheckBox; if (pWidget->init(backGround, "", cross, "", "", texType)) diff --git a/cocos/ui/UICheckBox.h b/cocos/ui/UICheckBox.h index ec29f433b162..5d3d43d02cc3 100644 --- a/cocos/ui/UICheckBox.h +++ b/cocos/ui/UICheckBox.h @@ -93,11 +93,11 @@ class CC_GUI_DLL CheckBox : public AbstractCheckButton * * @return A CheckBox instance pointer. */ - static CheckBox* create(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, + static CheckBox* create(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); /** @@ -108,8 +108,8 @@ class CC_GUI_DLL CheckBox : public AbstractCheckButton * @param texType The texture's resource type in `Widget::TextureResType`. * @return A CheckBox instance pointer */ - static CheckBox* create(const std::string& backGround, - const std::string& cross, + static CheckBox* create(std::string_view backGround, + std::string_view cross, TextureResType texType = TextureResType::LOCAL); /** diff --git a/cocos/ui/UIEditBox/UIEditBox.cpp b/cocos/ui/UIEditBox/UIEditBox.cpp index 78c7eb1c0460..fefa1cdcb303 100644 --- a/cocos/ui/UIEditBox/UIEditBox.cpp +++ b/cocos/ui/UIEditBox/UIEditBox.cpp @@ -56,15 +56,15 @@ void EditBox::openKeyboard() const _editBoxImpl->openKeyboard(); } -EditBox* EditBox::create(const Vec2& size, const std::string& normalImage, TextureResType texType) +EditBox* EditBox::create(const Vec2& size, std::string_view normalImage, TextureResType texType) { return EditBox::create(size, normalImage, "", "", texType); } EditBox* EditBox::create(const Vec2& size, - const std::string& normalImage, - const std::string& pressedImage /* = "" */, - const std::string& disabledImage /* = "" */, + std::string_view normalImage, + std::string_view pressedImage /* = "" */, + std::string_view disabledImage /* = "" */, TextureResType texType /* = TextureResType::LOCAL */) { EditBox* pRet = new EditBox(); @@ -136,16 +136,16 @@ bool EditBox::initWithSizeAndBackgroundSprite(const Vec2& size, } bool EditBox::initWithSizeAndBackgroundSprite(const Vec2& size, - const std::string& pNormal9SpriteBg, + std::string_view pNormal9SpriteBg, TextureResType texType) { return initWithSizeAndTexture(size, pNormal9SpriteBg, "", "", texType); } bool EditBox::initWithSizeAndTexture(const Vec2& size, - const std::string& normalImage, - const std::string& pressedImage /* = "" */, - const std::string& disabledImage /* = "" */, + std::string_view normalImage, + std::string_view pressedImage /* = "" */, + std::string_view disabledImage /* = "" */, TextureResType texType /* = TextureResType::LOCAL */) { if (Widget::init()) @@ -178,9 +178,9 @@ void EditBox::initRenderer() addProtectedChild(_disabledRenderer, DISABLED_RENDERER_Z, -1); } -void EditBox::loadTextures(const std::string& normal, - const std::string& pressed, - const std::string& disabled, +void EditBox::loadTextures(std::string_view normal, + std::string_view pressed, + std::string_view disabled, TextureResType texType) { loadTextureNormal(normal, texType); @@ -188,7 +188,7 @@ void EditBox::loadTextures(const std::string& normal, loadTextureDisabled(disabled, texType); } -void EditBox::loadTextureNormal(const std::string& normal, TextureResType texType) +void EditBox::loadTextureNormal(std::string_view normal, TextureResType texType) { _normalFileName = normal; _normalTexType = texType; @@ -236,7 +236,7 @@ void EditBox::loadTextureNormal(SpriteFrame* normalSpriteFrame) this->setupNormalTexture(nullptr != normalSpriteFrame); } -void EditBox::loadTexturePressed(const std::string& pressed, TextureResType texType) +void EditBox::loadTexturePressed(std::string_view pressed, TextureResType texType) { _pressedFileName = pressed; _pressedTexType = texType; @@ -279,7 +279,7 @@ void EditBox::loadTexturePressed(SpriteFrame* pressedSpriteFrame) this->setupPressedTexture(nullptr != pressedSpriteFrame); } -void EditBox::loadTextureDisabled(const std::string& disabled, TextureResType texType) +void EditBox::loadTextureDisabled(std::string_view disabled, TextureResType texType) { _disabledFileName = disabled; _disabledTexType = texType; diff --git a/cocos/ui/UIEditBox/UIEditBox.h b/cocos/ui/UIEditBox/UIEditBox.h index 9d76b3bf785a..2ecb082d6205 100644 --- a/cocos/ui/UIEditBox/UIEditBox.h +++ b/cocos/ui/UIEditBox/UIEditBox.h @@ -78,7 +78,7 @@ class CC_GUI_DLL EditBoxDelegate * @param editBox The edit box object that generated the event. * @param text The new text. */ - virtual void editBoxTextChanged(EditBox* /*editBox*/, const std::string& /*text*/) {} + virtual void editBoxTextChanged(EditBox* /*editBox*/, std::string_view /*text*/) {} /** * This method is called when the return button was pressed or the outside area of keyboard was touched. @@ -214,16 +214,16 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * create a edit box with size. * @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again. */ - static EditBox* create(const Size& size, const std::string& normalImage, TextureResType texType); + static EditBox* create(const Size& size, std::string_view normalImage, TextureResType texType); /** * create a edit box with size. * @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again. */ static EditBox* create(const Size& size, - const std::string& normalImage, - const std::string& pressedImage = "", - const std::string& disabledImage = "", + std::string_view normalImage, + std::string_view pressedImage = "", + std::string_view disabledImage = "", TextureResType texType = TextureResType::LOCAL); /** @@ -248,7 +248,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @return Whether initialization is successfully or not. */ bool initWithSizeAndBackgroundSprite(const Size& size, - const std::string& normal9SpriteBg, + std::string_view normal9SpriteBg, TextureResType texType = TextureResType::LOCAL); /** @@ -281,9 +281,9 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @return Whether initialization is successfully or not. */ bool initWithSizeAndTexture(const Size& size, - const std::string& normalImage, - const std::string& pressedImage = "", - const std::string& disabledImage = "", + std::string_view normalImage, + std::string_view pressedImage = "", + std::string_view disabledImage = "", TextureResType texType = TextureResType::LOCAL); /** @@ -294,9 +294,9 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @param disabled disabled state texture name. * @param texType @see `TextureResType` */ - void loadTextures(const std::string& normal, - const std::string& pressed, - const std::string& disabled = "", + void loadTextures(std::string_view normal, + std::string_view pressed, + std::string_view disabled = "", TextureResType texType = TextureResType::LOCAL); /** @@ -305,7 +305,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @param normal normal state texture. * @param texType @see `TextureResType` */ - void loadTextureNormal(const std::string& normal, TextureResType texType = TextureResType::LOCAL); + void loadTextureNormal(std::string_view normal, TextureResType texType = TextureResType::LOCAL); /** * Load pressed state texture for edit box. @@ -313,7 +313,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @param pressed pressed state texture. * @param texType @see `TextureResType` */ - void loadTexturePressed(const std::string& pressed, TextureResType texType = TextureResType::LOCAL); + void loadTexturePressed(std::string_view pressed, TextureResType texType = TextureResType::LOCAL); /** * Load disabled state texture for edit box. @@ -321,7 +321,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate * @param disabled dark state texture. * @param texType @see `TextureResType` */ - void loadTextureDisabled(const std::string& disabled, TextureResType texType = TextureResType::LOCAL); + void loadTextureDisabled(std::string_view disabled, TextureResType texType = TextureResType::LOCAL); /** * Sets capInsets for edit box. diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp index f23a4345c0aa..367231058a17 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp @@ -50,8 +50,8 @@ namespace ui # define LOGD(...) __android_log_print(ANDROID_LOG_ERROR, "", __VA_ARGS__) static void editBoxEditingDidBegin(int index); -static void editBoxEditingDidChanged(int index, const std::string& text); -static void editBoxEditingDidEnd(int index, const std::string& text, int action); +static void editBoxEditingDidChanged(int index, std::string_view text); +static void editBoxEditingDidEnd(int index, std::string_view text, int action); extern "C" { JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxEditBoxHelper_editBoxEditingDidBegin(JNIEnv*, jclass, jint index) { @@ -221,7 +221,7 @@ void editBoxEditingDidBegin(int index) s_allEditBoxes[index]->editBoxEditingDidBegin(); } } -void editBoxEditingDidChanged(int index, const std::string& text) +void editBoxEditingDidChanged(int index, std::string_view text) { auto it = s_allEditBoxes.find(index); if (it != s_allEditBoxes.end()) @@ -230,7 +230,7 @@ void editBoxEditingDidChanged(int index, const std::string& text) } } -void editBoxEditingDidEnd(int index, const std::string& text, int action) +void editBoxEditingDidEnd(int index, std::string_view text, int action) { auto it = s_allEditBoxes.find(index); if (it != s_allEditBoxes.end()) diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-common.cpp b/cocos/ui/UIEditBox/UIEditBoxImpl-common.cpp index bf99aa2f5db2..bd3fe9ba63a8 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-common.cpp +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-common.cpp @@ -346,7 +346,7 @@ void EditBoxImplCommon::closeKeyboard() _editingMode = false; } -void EditBoxImplCommon::onEndEditing(const std::string& /*text*/) +void EditBoxImplCommon::onEndEditing(std::string_view /*text*/) { _editBox->setBrightStyle(Widget::BrightStyle::NORMAL); _editingMode = false; @@ -374,7 +374,7 @@ void EditBoxImplCommon::editBoxEditingDidBegin() #endif } -void EditBoxImplCommon::editBoxEditingDidEnd(const std::string& text, EditBoxDelegate::EditBoxEndAction action) +void EditBoxImplCommon::editBoxEditingDidEnd(std::string_view text, EditBoxDelegate::EditBoxEndAction action) { // LOGD("textFieldShouldEndEditing..."); _text = text; @@ -405,7 +405,7 @@ void EditBoxImplCommon::editBoxEditingDidEnd(const std::string& text, EditBoxDel } } -void EditBoxImplCommon::editBoxEditingChanged(const std::string& text) +void EditBoxImplCommon::editBoxEditingChanged(std::string_view text) { // LOGD("editBoxTextChanged..."); cocos2d::ui::EditBoxDelegate* pDelegate = _editBox->getDelegate(); diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-common.h b/cocos/ui/UIEditBox/UIEditBoxImpl-common.h index 419ce7a0c923..b14e41fe6b4b 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-common.h +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-common.h @@ -107,11 +107,11 @@ class CC_GUI_DLL EditBoxImplCommon : public EditBoxImpl virtual void openKeyboard() override; virtual void closeKeyboard() override; - virtual void onEndEditing(const std::string& text); + virtual void onEndEditing(std::string_view text); void editBoxEditingDidBegin(); - void editBoxEditingChanged(const std::string& text); - void editBoxEditingDidEnd(const std::string& text, + void editBoxEditingChanged(std::string_view text); + void editBoxEditingDidEnd(std::string_view text, EditBoxDelegate::EditBoxEndAction action = EditBoxDelegate::EditBoxEndAction::UNKNOWN); virtual bool isEditing() override = 0; diff --git a/cocos/ui/UIHelper.cpp b/cocos/ui/UIHelper.cpp index 60f3a98ebbc1..eaa645c707b7 100644 --- a/cocos/ui/UIHelper.cpp +++ b/cocos/ui/UIHelper.cpp @@ -63,7 +63,7 @@ Widget* Helper::seekWidgetByTag(Widget* root, int tag) return nullptr; } -Widget* Helper::seekWidgetByName(Widget* root, const std::string& name) +Widget* Helper::seekWidgetByName(Widget* root, std::string_view name) { if (!root) { @@ -116,25 +116,25 @@ Widget* Helper::seekActionWidgetByActionTag(Widget* root, int tag) return nullptr; } -std::string Helper::getSubStringOfUTF8String(const std::string& str, +std::string Helper::getSubStringOfUTF8String(std::string_view str, std::string::size_type start, std::string::size_type length) { std::u32string utf32; if (!StringUtils::UTF8ToUTF32(str, utf32)) { - CCLOGERROR("Can't convert string to UTF-32: %s", str.c_str()); + CCLOGERROR("Can't convert string to UTF-32: %s", str.data()); return ""; } if (utf32.size() < start) { - CCLOGERROR("'start' is out of range: %d, %s", static_cast(start), str.c_str()); + CCLOGERROR("'start' is out of range: %d, %s", static_cast(start), str.data()); return ""; } std::string result; if (!StringUtils::UTF32ToUTF8(utf32.substr(start, length), result)) { - CCLOGERROR("Can't convert internal UTF-32 string to UTF-8: %s", str.c_str()); + CCLOGERROR("Can't convert internal UTF-32 string to UTF-8: %s", str.data()); return ""; } return result; diff --git a/cocos/ui/UIHelper.h b/cocos/ui/UIHelper.h index 9f833bef1884..9d49b129c7b8 100644 --- a/cocos/ui/UIHelper.h +++ b/cocos/ui/UIHelper.h @@ -66,7 +66,7 @@ class CC_GUI_DLL Helper * @param name The widget name. * @return Widget instance pointer. */ - static Widget* seekWidgetByName(Widget* root, const std::string& name); + static Widget* seekWidgetByName(Widget* root, std::string_view name); /** * Find a widget with a specific action tag from root widget @@ -87,7 +87,7 @@ class CC_GUI_DLL Helper * @return a UTF8 substring * @js NA */ - static std::string getSubStringOfUTF8String(const std::string& str, + static std::string getSubStringOfUTF8String(std::string_view str, std::string::size_type start, std::string::size_type length); diff --git a/cocos/ui/UIImageView.cpp b/cocos/ui/UIImageView.cpp index da9ed8c515d1..ffa039153654 100644 --- a/cocos/ui/UIImageView.cpp +++ b/cocos/ui/UIImageView.cpp @@ -50,7 +50,7 @@ ImageView::ImageView() ImageView::~ImageView() {} -ImageView* ImageView::create(const std::string& imageFileName, TextureResType texType) +ImageView* ImageView::create(std::string_view imageFileName, TextureResType texType) { ImageView* widget = new ImageView(); if (widget->init(imageFileName, texType)) @@ -89,7 +89,7 @@ bool ImageView::init() return ret; } -bool ImageView::init(const std::string& imageFileName, TextureResType texType) +bool ImageView::init(std::string_view imageFileName, TextureResType texType) { bool bRet = true; do @@ -113,7 +113,7 @@ void ImageView::initRenderer() addProtectedChild(_imageRenderer, IMAGE_RENDERER_Z, -1); } -void ImageView::loadTexture(const std::string& fileName, TextureResType texType) +void ImageView::loadTexture(std::string_view fileName, TextureResType texType) { if (fileName.empty()) { diff --git a/cocos/ui/UIImageView.h b/cocos/ui/UIImageView.h index 525cdd2195a3..5fbb2cbde5fd 100644 --- a/cocos/ui/UIImageView.h +++ b/cocos/ui/UIImageView.h @@ -75,7 +75,7 @@ class CC_GUI_DLL ImageView : public Widget, public cocos2d::BlendProtocol * @param texType @see `Widget::TextureResType` * @return A ImageView instance. */ - static ImageView* create(const std::string& imageFileName, TextureResType texType = TextureResType::LOCAL); + static ImageView* create(std::string_view imageFileName, TextureResType texType = TextureResType::LOCAL); /** * Load texture for imageview. @@ -83,7 +83,7 @@ class CC_GUI_DLL ImageView : public Widget, public cocos2d::BlendProtocol * @param fileName file name of texture. * @param texType @see `Widget::TextureResType` */ - void loadTexture(const std::string& fileName, TextureResType texType = TextureResType::LOCAL); + void loadTexture(std::string_view fileName, TextureResType texType = TextureResType::LOCAL); /** * Updates the texture rect of the ImageView in points. @@ -150,7 +150,7 @@ class CC_GUI_DLL ImageView : public Widget, public cocos2d::BlendProtocol // initializes state of widget. virtual bool init() override; - virtual bool init(const std::string& imageFileName, TextureResType texType = TextureResType::LOCAL); + virtual bool init(std::string_view imageFileName, TextureResType texType = TextureResType::LOCAL); protected: virtual void initRenderer() override; diff --git a/cocos/ui/UILayout.cpp b/cocos/ui/UILayout.cpp index d3c914d1ebcb..a8444a5d644f 100644 --- a/cocos/ui/UILayout.cpp +++ b/cocos/ui/UILayout.cpp @@ -166,7 +166,7 @@ void Layout::addChild(Node* child, int zOrder, int tag) _doLayoutDirty = true; } -void Layout::addChild(Node* child, int zOrder, const std::string& name) +void Layout::addChild(Node* child, int zOrder, std::string_view name) { if (dynamic_cast(child)) { @@ -566,7 +566,7 @@ bool Layout::isBackGroundImageScale9Enabled() const return _backGroundScale9Enabled; } -void Layout::setBackGroundImage(const std::string& fileName, TextureResType texType) +void Layout::setBackGroundImage(std::string_view fileName, TextureResType texType) { if (fileName.empty()) { diff --git a/cocos/ui/UILayout.h b/cocos/ui/UILayout.h index 33c8903a3da9..d1dba4fbceff 100644 --- a/cocos/ui/UILayout.h +++ b/cocos/ui/UILayout.h @@ -171,7 +171,7 @@ class CC_GUI_DLL Layout : public Widget, public LayoutProtocol * @param fileName image file path. * @param texType @see TextureResType. */ - void setBackGroundImage(const std::string& fileName, TextureResType texType = TextureResType::LOCAL); + void setBackGroundImage(std::string_view fileName, TextureResType texType = TextureResType::LOCAL); /** * Sets a background image capinsets for layout, it only affects the scale9 enabled background image @@ -371,7 +371,7 @@ class CC_GUI_DLL Layout : public Widget, public LayoutProtocol * @param tag A integer to identify the node easily. Please refer to setTag(int) */ virtual void addChild(Node* child, int localZOrder, int tag) override; - virtual void addChild(Node* child, int localZOrder, const std::string& name) override; + virtual void addChild(Node* child, int localZOrder, std::string_view name) override; virtual void visit(Renderer* renderer, const Mat4& parentTransform, uint32_t parentFlags) override; diff --git a/cocos/ui/UILayoutManager.cpp b/cocos/ui/UILayoutManager.cpp index 6c40796bae3d..20c3cabce3d0 100644 --- a/cocos/ui/UILayoutManager.cpp +++ b/cocos/ui/UILayoutManager.cpp @@ -236,7 +236,7 @@ Widget* RelativeLayoutManager::getRelativeWidget(Widget* widget) { Widget* relativeWidget = nullptr; RelativeLayoutParameter* layoutParameter = dynamic_cast(widget->getLayoutParameter()); - const std::string relativeName = layoutParameter->getRelativeToWidgetName(); + auto relativeName = layoutParameter->getRelativeToWidgetName(); if (!relativeName.empty()) { diff --git a/cocos/ui/UILayoutParameter.cpp b/cocos/ui/UILayoutParameter.cpp index 0bf409a4dc1f..d80d751a16ed 100644 --- a/cocos/ui/UILayoutParameter.cpp +++ b/cocos/ui/UILayoutParameter.cpp @@ -146,22 +146,22 @@ RelativeLayoutParameter::RelativeAlign RelativeLayoutParameter::getAlign() const return _relativeAlign; } -void RelativeLayoutParameter::setRelativeToWidgetName(const std::string& name) +void RelativeLayoutParameter::setRelativeToWidgetName(std::string_view name) { _relativeWidgetName = name; } -const std::string& RelativeLayoutParameter::getRelativeToWidgetName() const +std::string_view RelativeLayoutParameter::getRelativeToWidgetName() const { return _relativeWidgetName; } -void RelativeLayoutParameter::setRelativeName(const std::string& name) +void RelativeLayoutParameter::setRelativeName(std::string_view name) { _relativeLayoutName = name; } -const std::string& RelativeLayoutParameter::getRelativeName() const +std::string_view RelativeLayoutParameter::getRelativeName() const { return _relativeLayoutName; } diff --git a/cocos/ui/UILayoutParameter.h b/cocos/ui/UILayoutParameter.h index 1a2615da8fda..9e6b92a5d816 100644 --- a/cocos/ui/UILayoutParameter.h +++ b/cocos/ui/UILayoutParameter.h @@ -363,27 +363,27 @@ class CC_GUI_DLL RelativeLayoutParameter : public LayoutParameter * * @param name Relative widget name. */ - void setRelativeToWidgetName(const std::string& name); + void setRelativeToWidgetName(std::string_view name); /** * Get the relative widget name. * @return name A relative widget name in string. */ - const std::string& getRelativeToWidgetName() const; + std::string_view getRelativeToWidgetName() const; /** * Set a name for LayoutParameter in Relative Layout. * * @param name A string name. */ - void setRelativeName(const std::string& name); + void setRelativeName(std::string_view name); /** * Get a name of LayoutParameter in Relative Layout. * * @return name Relative name in string. */ - const std::string& getRelativeName() const; + std::string_view getRelativeName() const; // override functions. virtual LayoutParameter* createCloneInstance() override; diff --git a/cocos/ui/UIListView.cpp b/cocos/ui/UIListView.cpp index 32616f2bb58f..68b62f2c1722 100644 --- a/cocos/ui/UIListView.cpp +++ b/cocos/ui/UIListView.cpp @@ -292,7 +292,7 @@ void ListView::addChild(cocos2d::Node* child, int zOrder) ListView::addChild(child, zOrder, child->getName()); } -void ListView::addChild(Node* child, int zOrder, const std::string& name) +void ListView::addChild(Node* child, int zOrder, std::string_view name) { ScrollView::addChild(child, zOrder, name); diff --git a/cocos/ui/UIListView.h b/cocos/ui/UIListView.h index b1b54b8e5632..2b961b2a9b77 100644 --- a/cocos/ui/UIListView.h +++ b/cocos/ui/UIListView.h @@ -309,7 +309,7 @@ class CC_GUI_DLL ListView : public ScrollView virtual void addChild(Node* child) override; virtual void addChild(Node* child, int localZOrder) override; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void removeAllChildren() override; virtual void removeAllChildrenWithCleanup(bool cleanup) override; virtual void removeChild(Node* child, bool cleanup = true) override; diff --git a/cocos/ui/UILoadingBar.cpp b/cocos/ui/UILoadingBar.cpp index e1a9e518dfb5..b3518941ce98 100644 --- a/cocos/ui/UILoadingBar.cpp +++ b/cocos/ui/UILoadingBar.cpp @@ -71,12 +71,12 @@ LoadingBar* LoadingBar::create() return nullptr; } -LoadingBar* LoadingBar::create(const std::string& textureName, float percentage) +LoadingBar* LoadingBar::create(std::string_view textureName, float percentage) { return LoadingBar::create(textureName, TextureResType::LOCAL, percentage); } -LoadingBar* LoadingBar::create(const std::string& textureName, TextureResType texType, float percentage) +LoadingBar* LoadingBar::create(std::string_view textureName, TextureResType texType, float percentage) { LoadingBar* widget = new LoadingBar; if (widget->init()) @@ -125,7 +125,7 @@ LoadingBar::Direction LoadingBar::getDirection() const return _direction; } -void LoadingBar::loadTexture(const std::string& texture, TextureResType texType) +void LoadingBar::loadTexture(std::string_view texture, TextureResType texType) { if (texture.empty()) { diff --git a/cocos/ui/UILoadingBar.h b/cocos/ui/UILoadingBar.h index b83b298db69c..6206bf32f1dc 100644 --- a/cocos/ui/UILoadingBar.h +++ b/cocos/ui/UILoadingBar.h @@ -88,7 +88,7 @@ class CC_GUI_DLL LoadingBar : public Widget * @param percentage A percentage in float. * @return A LoadingBar instance. */ - static LoadingBar* create(const std::string& textureName, float percentage = 0); + static LoadingBar* create(std::string_view textureName, float percentage = 0); /** * @brief Create a LoadingBar with a texture name along with its texture type and a predefined progress value. @@ -98,7 +98,7 @@ class CC_GUI_DLL LoadingBar : public Widget * @param percentage A percentage in float, default value is 0. * @return A LoadingBar instance. */ - static LoadingBar* create(const std::string& textureName, TextureResType texType, float percentage = 0); + static LoadingBar* create(std::string_view textureName, TextureResType texType, float percentage = 0); /** * Change the progress direction of LoadingBar. @@ -122,7 +122,7 @@ class CC_GUI_DLL LoadingBar : public Widget * @param texture File name of texture. * @param texType Texture resource type,@see TextureResType. */ - void loadTexture(const std::string& texture, TextureResType texType = TextureResType::LOCAL); + void loadTexture(std::string_view texture, TextureResType texType = TextureResType::LOCAL); /** * Changes the progress value of LoadingBar. diff --git a/cocos/ui/UIPageView.cpp b/cocos/ui/UIPageView.cpp index 06a56f3258f6..b92f56a7b6a4 100644 --- a/cocos/ui/UIPageView.cpp +++ b/cocos/ui/UIPageView.cpp @@ -465,7 +465,7 @@ float PageView::getIndicatorIndexNodesScale() const return _indicator->getIndexNodesScale(); } -void PageView::setIndicatorIndexNodesTexture(const std::string& texName, Widget::TextureResType texType) +void PageView::setIndicatorIndexNodesTexture(std::string_view texName, Widget::TextureResType texType) { if (_indicator != nullptr) { diff --git a/cocos/ui/UIPageView.h b/cocos/ui/UIPageView.h index 97d8320ddf37..6325e9561c86 100644 --- a/cocos/ui/UIPageView.h +++ b/cocos/ui/UIPageView.h @@ -314,7 +314,7 @@ class CC_GUI_DLL PageView : public ListView * @param fileName File name of texture. * @param resType @see TextureResType . */ - void setIndicatorIndexNodesTexture(const std::string& texName, + void setIndicatorIndexNodesTexture(std::string_view texName, Widget::TextureResType texType = Widget::TextureResType::LOCAL); /** diff --git a/cocos/ui/UIPageViewIndicator.cpp b/cocos/ui/UIPageViewIndicator.cpp index 530df5a82ce2..94590ced01fe 100644 --- a/cocos/ui/UIPageViewIndicator.cpp +++ b/cocos/ui/UIPageViewIndicator.cpp @@ -195,7 +195,7 @@ void PageViewIndicator::setIndexNodesScale(float indexNodesScale) rearrange(); } -void PageViewIndicator::setIndexNodesTexture(const std::string& texName, Widget::TextureResType texType) +void PageViewIndicator::setIndexNodesTexture(std::string_view texName, Widget::TextureResType texType) { _useDefaultTexture = false; _indexNodesTextureFile = texName; diff --git a/cocos/ui/UIPageViewIndicator.h b/cocos/ui/UIPageViewIndicator.h index d498c4cdfdd6..97649861e1b8 100644 --- a/cocos/ui/UIPageViewIndicator.h +++ b/cocos/ui/UIPageViewIndicator.h @@ -74,7 +74,7 @@ class PageViewIndicator : public ProtectedNode * @param fileName File name of texture. * @param resType @see TextureResType . */ - void setIndexNodesTexture(const std::string& texName, + void setIndexNodesTexture(std::string_view texName, Widget::TextureResType texType = Widget::TextureResType::LOCAL); protected: diff --git a/cocos/ui/UIRadioButton.cpp b/cocos/ui/UIRadioButton.cpp index 14d9e639d974..ff1ad49f1dca 100644 --- a/cocos/ui/UIRadioButton.cpp +++ b/cocos/ui/UIRadioButton.cpp @@ -52,11 +52,11 @@ RadioButton* RadioButton::create() return nullptr; } -RadioButton* RadioButton::create(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, +RadioButton* RadioButton::create(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType) { RadioButton* pWidget = new RadioButton(); @@ -69,7 +69,7 @@ RadioButton* RadioButton::create(const std::string& backGround, return nullptr; } -RadioButton* RadioButton::create(const std::string& backGround, const std::string& cross, TextureResType texType) +RadioButton* RadioButton::create(std::string_view backGround, std::string_view cross, TextureResType texType) { RadioButton* pWidget = new RadioButton(); if (pWidget->init(backGround, "", cross, "", "", texType)) diff --git a/cocos/ui/UIRadioButton.h b/cocos/ui/UIRadioButton.h index 9adb3c83577f..43deb3b92e02 100644 --- a/cocos/ui/UIRadioButton.h +++ b/cocos/ui/UIRadioButton.h @@ -98,11 +98,11 @@ class CC_GUI_DLL RadioButton : public AbstractCheckButton * * @return A RadioButton instance pointer. */ - static RadioButton* create(const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, + static RadioButton* create(std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); /** @@ -113,8 +113,8 @@ class CC_GUI_DLL RadioButton : public AbstractCheckButton * @param texType The texture's resource type in `Widget::TextureResType`. * @return A RadioButton instance pointer */ - static RadioButton* create(const std::string& backGround, - const std::string& cross, + static RadioButton* create(std::string_view backGround, + std::string_view cross, TextureResType texType = TextureResType::LOCAL); /** diff --git a/cocos/ui/UIRichText.cpp b/cocos/ui/UIRichText.cpp index e46456085bba..b2650303e4fd 100644 --- a/cocos/ui/UIRichText.cpp +++ b/cocos/ui/UIRichText.cpp @@ -51,7 +51,7 @@ class ListenerComponent : public Component static const std::string COMPONENT_NAME; /*!< component name */ static ListenerComponent* create(Node* parent, - const std::string& url, + std::string_view url, const RichText::OpenUrlHandler handleOpenUrl = nullptr) { auto component = new ListenerComponent(parent, url, std::move(handleOpenUrl)); @@ -59,7 +59,7 @@ class ListenerComponent : public Component return component; } - explicit ListenerComponent(Node* parent, const std::string& url, const RichText::OpenUrlHandler handleOpenUrl) + explicit ListenerComponent(Node* parent, std::string_view url, const RichText::OpenUrlHandler handleOpenUrl) : _parent(parent), _url(url), _handleOpenUrl(std::move(handleOpenUrl)) { setName(ListenerComponent::COMPONENT_NAME); @@ -124,11 +124,11 @@ void RichElement::setColor(const Color3B& color) RichElementText* RichElementText::create(int tag, const Color3B& color, uint8_t opacity, - const std::string& text, - const std::string& fontName, + std::string_view text, + std::string_view fontName, float fontSize, uint32_t flags, - const std::string& url, + std::string_view url, const Color3B& outlineColor, int outlineSize, const Color3B& shadowColor, @@ -150,11 +150,11 @@ RichElementText* RichElementText::create(int tag, bool RichElementText::init(int tag, const Color3B& color, uint8_t opacity, - const std::string& text, - const std::string& fontName, + std::string_view text, + std::string_view fontName, float fontSize, uint32_t flags, - const std::string& url, + std::string_view url, const Color3B& outlineColor, int outlineSize, const Color3B& shadowColor, @@ -183,8 +183,8 @@ bool RichElementText::init(int tag, RichElementImage* RichElementImage::create(int tag, const Color3B& color, uint8_t opacity, - const std::string& filePath, - const std::string& url, + std::string_view filePath, + std::string_view url, Widget::TextureResType texType) { RichElementImage* element = new RichElementImage(); @@ -200,8 +200,8 @@ RichElementImage* RichElementImage::create(int tag, bool RichElementImage::init(int tag, const Color3B& color, uint8_t opacity, - const std::string& filePath, - const std::string& url, + std::string_view filePath, + std::string_view url, Widget::TextureResType texType) { if (RichElement::init(tag, color, opacity)) @@ -226,7 +226,7 @@ void RichElementImage::setHeight(int height) _height = height; } -void RichElementImage::setUrl(const std::string& url) +void RichElementImage::setUrl(std::string_view url) { _url = url; } @@ -334,7 +334,7 @@ class MyXMLVisitor : public SAXDelegator bool isFontElement; RichText::VisitEnterHandler handleVisitEnter; }; - typedef std::unordered_map TagTables; + typedef hlookup::string_map TagTables; static TagTables _tagTables; @@ -376,11 +376,11 @@ class MyXMLVisitor : public SAXDelegator void pushBackElement(RichElement* element); - static void setTagDescription(const std::string& tag, + static void setTagDescription(std::string_view tag, bool isFontElement, RichText::VisitEnterHandler&& handleVisitEnter); - static void removeTagDescription(const std::string& tag); + static void removeTagDescription(std::string_view tag); private: ValueMap tagAttrMapWithXMLElement(const char** attrs); @@ -907,14 +907,19 @@ void MyXMLVisitor::pushBackElement(RichElement* element) _richText->pushBackElement(element); } -void MyXMLVisitor::setTagDescription(const std::string& tag, +void MyXMLVisitor::setTagDescription(std::string_view tag, bool isFontElement, RichText::VisitEnterHandler&& handleVisitEnter) { - MyXMLVisitor::_tagTables[tag] = {isFontElement, std::move(handleVisitEnter)}; + hlookup::set_item( + MyXMLVisitor::_tagTables, tag, + TagBehavior{ + isFontElement, + std::move( + handleVisitEnter)}); // MyXMLVisitor::_tagTables[tag] = {isFontElement, std::move(handleVisitEnter)}; } -void MyXMLVisitor::removeTagDescription(const std::string& tag) +void MyXMLVisitor::removeTagDescription(std::string_view tag) { MyXMLVisitor::_tagTables.erase(tag); } @@ -1004,7 +1009,7 @@ RichText* RichText::create() return nullptr; } -RichText* RichText::createWithXML(const std::string& xml, const ValueMap& defaults, const OpenUrlHandler& handleOpenUrl) +RichText* RichText::createWithXML(std::string_view xml, const ValueMap& defaults, const OpenUrlHandler& handleOpenUrl) { RichText* widget = new RichText(); if (widget->initWithXML(xml, defaults, handleOpenUrl)) @@ -1025,7 +1030,7 @@ bool RichText::init() return false; } -bool RichText::initWithXML(const std::string& origxml, const ValueMap& defaults, const OpenUrlHandler& handleOpenUrl) +bool RichText::initWithXML(std::string_view origxml, const ValueMap& defaults, const OpenUrlHandler& handleOpenUrl) { static std::function startTagFont = [](RichText* richText) { std::string fontFace = richText->getFontFace(); @@ -1109,7 +1114,7 @@ void RichText::setHorizontalAlignment(cocos2d::ui::RichText::HorizontalAlignment } } -void RichText::setFontColor(const std::string& color) +void RichText::setFontColor(std::string_view color) { _defaults[KEY_FONT_COLOR_STRING] = color; } @@ -1134,7 +1139,7 @@ float RichText::getFontSize() return _defaults.at(KEY_FONT_SIZE).asFloat(); } -void RichText::setFontFace(const std::string& face) +void RichText::setFontFace(std::string_view face) { _defaults[KEY_FONT_FACE] = face; } @@ -1144,7 +1149,7 @@ std::string RichText::getFontFace() return _defaults.at(KEY_FONT_FACE).asString(); } -void RichText::setAnchorFontColor(const std::string& color) +void RichText::setAnchorFontColor(std::string_view color) { _defaults[KEY_ANCHOR_FONT_COLOR_STRING] = color; } @@ -1393,12 +1398,12 @@ ValueMap RichText::getDefaults() const return defaults; } -cocos2d::Color3B RichText::color3BWithString(const std::string& color) +cocos2d::Color3B RichText::color3BWithString(std::string_view color) { if (color.length() == 4) { int r, g, b; - sscanf(color.c_str(), "%*c%1x%1x%1x", &r, &g, &b); + sscanf(color.data(), "%*c%1x%1x%1x", &r, &g, &b); r += r * 16; g += g * 16; b += b * 16; @@ -1407,13 +1412,13 @@ cocos2d::Color3B RichText::color3BWithString(const std::string& color) else if (color.length() == 7) { int r, g, b; - sscanf(color.c_str(), "%*c%2x%2x%2x", &r, &g, &b); + sscanf(color.data(), "%*c%2x%2x%2x", &r, &g, &b); return Color3B(r, g, b); } else if (color.length() == 9) { int r, g, b, a; - sscanf(color.c_str(), "%*c%2x%2x%2x%2x", &r, &g, &b, &a); + sscanf(color.data(), "%*c%2x%2x%2x%2x", &r, &g, &b, &a); return Color3B(r, g, b); } return Color3B::WHITE; @@ -1440,17 +1445,17 @@ std::string RichText::stringWithColor4B(const cocos2d::Color4B& color4b) return std::string(buf, 9); } -void RichText::setTagDescription(const std::string& tag, bool isFontElement, VisitEnterHandler handleVisitEnter) +void RichText::setTagDescription(std::string_view tag, bool isFontElement, VisitEnterHandler handleVisitEnter) { MyXMLVisitor::setTagDescription(tag, isFontElement, std::move(handleVisitEnter)); } -void RichText::removeTagDescription(const std::string& tag) +void RichText::removeTagDescription(std::string_view tag) { MyXMLVisitor::removeTagDescription(tag); } -void RichText::openUrl(const std::string& url) +void RichText::openUrl(std::string_view url) { if (_handleOpenUrl) { @@ -1767,13 +1772,13 @@ int findSplitPositionForChar(Label* label, } } // namespace -void RichText::handleTextRenderer(const std::string& text, - const std::string& fontName, +void RichText::handleTextRenderer(std::string_view text, + std::string_view fontName, float fontSize, const Color3B& color, uint8_t opacity, uint32_t flags, - const std::string& url, + std::string_view url, const Color3B& outlineColor, int outlineSize, const Color3B& shadowColor, @@ -1785,7 +1790,8 @@ void RichText::handleTextRenderer(const std::string& text, RichText::WrapMode wrapMode = static_cast(_defaults.at(KEY_WRAP_MODE).asInt()); // split text by \n - std::stringstream ss(text); + std::stringstream ss; + ss << text; std::string currentText; size_t realLines = 0; while (std::getline(ss, currentText, '\n')) @@ -1877,13 +1883,13 @@ void RichText::handleTextRenderer(const std::string& text, } } -void RichText::handleImageRenderer(const std::string& filePath, +void RichText::handleImageRenderer(std::string_view filePath, Widget::TextureResType textureType, const Color3B& /*color*/, uint8_t /*opacity*/, int width, int height, - const std::string& url) + std::string_view url) { Sprite* imageRenderer; if (textureType == Widget::TextureResType::LOCAL) @@ -2062,10 +2068,9 @@ bool isWhitespace(char c) { return std::isspace(c, std::locale()); } -std::string rtrim(std::string s) +void rtrim(std::string& s) { s.erase(std::find_if_not(s.rbegin(), s.rend(), isWhitespace).base(), s.end()); - return s; } } // namespace @@ -2076,7 +2081,8 @@ float RichText::stripTrailingWhitespace(const Vector& row) if (auto label = dynamic_cast(row.back())) { const auto width = label->getContentSize().width; - const auto trimmedString = rtrim(label->getString()); + std::string trimmedString{label->getString()}; + rtrim(trimmedString); if (label->getString() != trimmedString) { label->setString(trimmedString); diff --git a/cocos/ui/UIRichText.h b/cocos/ui/UIRichText.h index 4c694c8af9c2..932ddd29cce6 100644 --- a/cocos/ui/UIRichText.h +++ b/cocos/ui/UIRichText.h @@ -148,11 +148,11 @@ class CC_GUI_DLL RichElementText : public RichElement bool init(int tag, const Color3B& color, uint8_t opacity, - const std::string& text, - const std::string& fontName, + std::string_view text, + std::string_view fontName, float fontSize, uint32_t flags, - const std::string& url, + std::string_view url, const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1, const Color3B& shadowColor = Color3B::BLACK, @@ -182,11 +182,11 @@ class CC_GUI_DLL RichElementText : public RichElement static RichElementText* create(int tag, const Color3B& color, uint8_t opacity, - const std::string& text, - const std::string& fontName, + std::string_view text, + std::string_view fontName, float fontSize, uint32_t flags = 0, - const std::string& url = "", + std::string_view url = "", const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1, const Color3B& shadowColor = Color3B::BLACK, @@ -244,8 +244,8 @@ class CC_GUI_DLL RichElementImage : public RichElement bool init(int tag, const Color3B& color, uint8_t opacity, - const std::string& filePath, - const std::string& url = "", + std::string_view filePath, + std::string_view url = "", Widget::TextureResType texType = Widget::TextureResType::LOCAL); /** @@ -262,13 +262,13 @@ class CC_GUI_DLL RichElementImage : public RichElement static RichElementImage* create(int tag, const Color3B& color, uint8_t opacity, - const std::string& filePath, - const std::string& url = "", + std::string_view filePath, + std::string_view url = "", Widget::TextureResType texType = Widget::TextureResType::LOCAL); void setWidth(int width); void setHeight(int height); - void setUrl(const std::string& url); + void setUrl(std::string_view url); protected: std::string _filePath; @@ -386,7 +386,7 @@ class CC_GUI_DLL RichText : public Widget * @brief call to open a resource specified by a URL * @param url a URL */ - typedef std::function OpenUrlHandler; + typedef std::function OpenUrlHandler; /** * @brief called on the specified tag @@ -461,7 +461,7 @@ class CC_GUI_DLL RichText : public Widget * * @return RichText instance. */ - static RichText* createWithXML(const std::string& xml, + static RichText* createWithXML(std::string_view xml, const ValueMap& defaults = ValueMap(), const OpenUrlHandler& handleOpenUrl = nullptr); @@ -517,14 +517,14 @@ class CC_GUI_DLL RichText : public Widget HorizontalAlignment a); /*!< sets the horizontal alignment mode: LEFT, CENTER, or RIGHT */ HorizontalAlignment getHorizontalAlignment() const; /*!< returns the current horizontal alignment mode */ void setFontColor( - const std::string& color); /*!< Set the font color. @param color the #RRGGBB hexadecimal notation. */ + std::string_view color); /*!< Set the font color. @param color the #RRGGBB hexadecimal notation. */ std::string getFontColor(); /*!< return the current font color */ Color3B getFontColor3B(); /*!< return the current font color */ void setFontSize(float size); /*!< Set the font size. @param size the font size. */ float getFontSize(); /*!< return the current font size */ - void setFontFace(const std::string& face); /*!< Set the font face. @param face the font face. */ + void setFontFace(std::string_view face); /*!< Set the font face. @param face the font face. */ std::string getFontFace(); /*!< return the current font face */ - void setAnchorFontColor(const std::string& color); /*!< Set the font color of a-tag. @param face the font color. */ + void setAnchorFontColor(std::string_view color); /*!< Set the font color of a-tag. @param face the font color. */ std::string getAnchorFontColor(); /*!< return the current font color of a-tag */ cocos2d::Color3B getAnchorFontColor3B(); /*!< return the current font color of a-tag */ void setAnchorTextBold(bool enable); /*!< enable bold text of a-tag */ @@ -555,7 +555,7 @@ class CC_GUI_DLL RichText : public Widget void setDefaults(const ValueMap& defaults); /*!< set the default values */ ValueMap getDefaults() const; /*!< returns the default values */ - cocos2d::Color3B color3BWithString(const std::string& color); /*!< convert a color string into a Color3B. */ + cocos2d::Color3B color3BWithString(std::string_view color); /*!< convert a color string into a Color3B. */ std::string stringWithColor3B(const cocos2d::Color3B& color3b); /*!< convert a Color3B into a color string. */ std::string stringWithColor4B(const cocos2d::Color4B& color4b); /*!< convert a Color4B into a color string. */ @@ -565,15 +565,15 @@ class CC_GUI_DLL RichText : public Widget * @param isFontElement use attributes of text tag * @param handleVisitEnter callback */ - static void setTagDescription(const std::string& tag, bool isFontElement, VisitEnterHandler handleVisitEnter); + static void setTagDescription(std::string_view tag, bool isFontElement, VisitEnterHandler handleVisitEnter); /** * @brief remove a callback to own tag. * @param tag tag's name */ - static void removeTagDescription(const std::string& tag); + static void removeTagDescription(std::string_view tag); - void openUrl(const std::string& url); + void openUrl(std::string_view url); /** * @brief Asks the callback to open a resource specified by a URL. @@ -584,7 +584,7 @@ class CC_GUI_DLL RichText : public Widget CC_CONSTRUCTOR_ACCESS : virtual bool init() override; - bool initWithXML(const std::string& xml, + bool initWithXML(std::string_view xml, const ValueMap& defaults = ValueMap(), const OpenUrlHandler& handleOpenUrl = nullptr); @@ -593,26 +593,26 @@ class CC_GUI_DLL RichText : public Widget virtual void initRenderer() override; void pushToContainer(Node* renderer); - void handleTextRenderer(const std::string& text, - const std::string& fontName, + void handleTextRenderer(std::string_view text, + std::string_view fontName, float fontSize, const Color3B& color, uint8_t opacity, uint32_t flags, - const std::string& url = "", + std::string_view url = "", const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1, const Color3B& shadowColor = Color3B::BLACK, const Vec2& shadowOffset = Vec2(2.0, -2.0), int shadowBlurRadius = 0, const Color3B& glowColor = Color3B::WHITE); - void handleImageRenderer(const std::string& filePath, + void handleImageRenderer(std::string_view filePath, Widget::TextureResType textureType, const Color3B& color, uint8_t opacity, int width, int height, - const std::string& url); + std::string_view url); void handleCustomRenderer(Node* renderer); void formatRenderers(); void addNewLine(); diff --git a/cocos/ui/UIScale9Sprite.cpp b/cocos/ui/UIScale9Sprite.cpp index dba22480e45f..eedb3152d40c 100644 --- a/cocos/ui/UIScale9Sprite.cpp +++ b/cocos/ui/UIScale9Sprite.cpp @@ -53,7 +53,7 @@ Scale9Sprite* Scale9Sprite::create() return nullptr; } -Scale9Sprite* Scale9Sprite::create(const std::string& filename, const Rect& rect, const Rect& capInsets) +Scale9Sprite* Scale9Sprite::create(std::string_view filename, const Rect& rect, const Rect& capInsets) { Scale9Sprite* ret = new Scale9Sprite(); if (ret->initWithFile(filename, rect, capInsets)) @@ -65,12 +65,12 @@ Scale9Sprite* Scale9Sprite::create(const std::string& filename, const Rect& rect return nullptr; } -Scale9Sprite* Scale9Sprite::create(const std::string& filename, const Rect& rect) +Scale9Sprite* Scale9Sprite::create(std::string_view filename, const Rect& rect) { return create(filename, rect, Rect::ZERO); } -Scale9Sprite* Scale9Sprite::create(const Rect& capInsets, const std::string& file) +Scale9Sprite* Scale9Sprite::create(const Rect& capInsets, std::string_view file) { Scale9Sprite* ret = new Scale9Sprite(); if (ret->initWithFile(capInsets, file)) @@ -82,7 +82,7 @@ Scale9Sprite* Scale9Sprite::create(const Rect& capInsets, const std::string& fil return nullptr; } -Scale9Sprite* Scale9Sprite::create(const std::string& fileaname) +Scale9Sprite* Scale9Sprite::create(std::string_view fileaname) { return create(Rect::ZERO, fileaname); } @@ -104,7 +104,7 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrame(SpriteFrame* spriteFrame) return createWithSpriteFrame(spriteFrame, Rect::ZERO); } -Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets) +Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(std::string_view spriteFrameName, const Rect& capInsets) { Scale9Sprite* ret = new Scale9Sprite(); if (ret->initWithSpriteFrameName(spriteFrameName, capInsets)) @@ -116,7 +116,7 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(const std::string& spriteF return nullptr; } -Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(const std::string& spriteFrameName) +Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(std::string_view spriteFrameName) { Scale9Sprite* ret = new Scale9Sprite(); if (ret->initWithSpriteFrameName(spriteFrameName, Rect::ZERO)) @@ -142,7 +142,7 @@ Scale9Sprite::Scale9Sprite() Scale9Sprite::~Scale9Sprite() {} -bool Scale9Sprite::initWithFile(const Rect& capInsets, const std::string& file) +bool Scale9Sprite::initWithFile(const Rect& capInsets, std::string_view file) { // calls super bool ret = Sprite::initWithFile(file); @@ -150,7 +150,7 @@ bool Scale9Sprite::initWithFile(const Rect& capInsets, const std::string& file) return ret; } -bool Scale9Sprite::initWithFile(const std::string& filename) +bool Scale9Sprite::initWithFile(std::string_view filename) { // calls super auto originalCapInsets = this->getCapInsets(); @@ -159,7 +159,7 @@ bool Scale9Sprite::initWithFile(const std::string& filename) return ret; } -bool Scale9Sprite::initWithFile(const std::string& filename, const Rect& rect) +bool Scale9Sprite::initWithFile(std::string_view filename, const Rect& rect) { // calls super auto originalCapInsets = this->getCapInsets(); @@ -176,7 +176,7 @@ bool Scale9Sprite::initWithSpriteFrame(SpriteFrame* spriteFrame, const Rect& cap return ret; } -bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets) +bool Scale9Sprite::initWithSpriteFrameName(std::string_view spriteFrameName, const Rect& capInsets) { // calls super bool ret = Sprite::initWithSpriteFrameName(spriteFrameName); @@ -184,7 +184,7 @@ bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName, c return ret; } -bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName) +bool Scale9Sprite::initWithSpriteFrameName(std::string_view spriteFrameName) { // calls super auto originalCapInsets = this->getCapInsets(); @@ -242,7 +242,7 @@ bool Scale9Sprite::init(Sprite* sprite, return ret; } -bool Scale9Sprite::initWithFile(const std::string& filename, const Rect& rect, const Rect& capInsets) +bool Scale9Sprite::initWithFile(std::string_view filename, const Rect& rect, const Rect& capInsets) { // calls super bool ret = false; diff --git a/cocos/ui/UIScale9Sprite.h b/cocos/ui/UIScale9Sprite.h index 94c4226d5839..3e11d0743ca8 100644 --- a/cocos/ui/UIScale9Sprite.h +++ b/cocos/ui/UIScale9Sprite.h @@ -108,7 +108,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param capInsets A specified cap insets. * @return A Scale9Sprite instance. */ - static Scale9Sprite* create(const std::string& file, const Rect& rect, const Rect& capInsets); + static Scale9Sprite* create(std::string_view file, const Rect& rect, const Rect& capInsets); /** * Creates a 9-slice sprite with a texture file. The whole texture will be @@ -119,7 +119,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param file A texture file name. * @return A Scale9Sprite instance. */ - static Scale9Sprite* create(const Rect& capInsets, const std::string& file); + static Scale9Sprite* create(const Rect& capInsets, std::string_view file); /** * Creates a 9-slice sprite with a texture file and a delimitation zone. The @@ -130,7 +130,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param rect A delimitation zone. * @return A Scale9Sprite instance. */ - static Scale9Sprite* create(const std::string& file, const Rect& rect); + static Scale9Sprite* create(std::string_view file, const Rect& rect); /** * Creates a 9-slice sprite with a texture file. The whole texture will be @@ -140,7 +140,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param file A texture file name. * @return A Scale9Sprite instance. */ - static Scale9Sprite* create(const std::string& file); + static Scale9Sprite* create(std::string_view file); /** * Creates a 9-slice sprite with an sprite frame. @@ -177,7 +177,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param spriteFrameName A sprite frame name. * @return A Scale9Sprite instance. */ - static Scale9Sprite* createWithSpriteFrameName(const std::string& spriteFrameName); + static Scale9Sprite* createWithSpriteFrameName(std::string_view spriteFrameName); /** * Creates a 9-slice sprite with an sprite frame name and the centre of its zone. @@ -190,7 +190,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param capInsets A delimitation zone. * @return A Scale9Sprite instance. */ - static Scale9Sprite* createWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets); + static Scale9Sprite* createWithSpriteFrameName(std::string_view spriteFrameName, const Rect& capInsets); // overridden methods that takes different parameters using Sprite::initWithFile; @@ -212,7 +212,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param capInsets The values to use for the cap insets. * @return True if initialize success, false otherwise. */ - virtual bool initWithFile(const std::string& file, const Rect& rect, const Rect& capInsets); + virtual bool initWithFile(std::string_view file, const Rect& rect, const Rect& capInsets); /** * Initializes a 9-slice sprite with a texture file and with the specified cap @@ -225,7 +225,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param capInsets The values to use for the cap insets. * @return True if initializes success, false otherwise. */ - virtual bool initWithFile(const Rect& capInsets, const std::string& file); + virtual bool initWithFile(const Rect& capInsets, std::string_view file); /** * Initializes a 9-slice sprite with an sprite frame and with the specified @@ -251,7 +251,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param capInsets The values to use for the cap insets. * @return True if initializes success, false otherwise. */ - virtual bool initWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets); + virtual bool initWithSpriteFrameName(std::string_view spriteFrameName, const Rect& capInsets); // override function @@ -268,7 +268,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * texture's full rect. * @return True if initializes success, false otherwise. */ - virtual bool initWithFile(const std::string& file, const Rect& rect) override; + virtual bool initWithFile(std::string_view file, const Rect& rect) override; /** * Initializes a 9-slice sprite with a texture file. The whole texture will be @@ -280,7 +280,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param file The name of the texture file. * @return True if initializes success, false otherwise. */ - virtual bool initWithFile(const std::string& file) override; + virtual bool initWithFile(std::string_view file) override; /** * Initializes a 9-slice sprite with an sprite frame name. @@ -291,7 +291,7 @@ class CC_GUI_DLL Scale9Sprite : public Sprite * @param spriteFrameName The sprite frame name. * @return True if initializes success, false otherwise. */ - virtual bool initWithSpriteFrameName(const std::string& spriteFrameName) override; + virtual bool initWithSpriteFrameName(std::string_view spriteFrameName) override; virtual bool init() override; diff --git a/cocos/ui/UIScrollView.cpp b/cocos/ui/UIScrollView.cpp index ae12b010d55a..b0df2ffd9ebc 100644 --- a/cocos/ui/UIScrollView.cpp +++ b/cocos/ui/UIScrollView.cpp @@ -287,7 +287,7 @@ void ScrollView::addChild(Node* child, int zOrder, int tag) _innerContainer->addChild(child, zOrder, tag); } -void ScrollView::addChild(Node* child, int zOrder, const std::string& name) +void ScrollView::addChild(Node* child, int zOrder, std::string_view name) { child->setGlobalZOrder(_globalZOrder); _innerContainer->addChild(child, zOrder, name); @@ -328,7 +328,7 @@ Node* ScrollView::getChildByTag(int tag) const return _innerContainer->getChildByTag(tag); } -Node* ScrollView::getChildByName(const std::string& name) const +Node* ScrollView::getChildByName(std::string_view name) const { return _innerContainer->getChildByName(name); } diff --git a/cocos/ui/UIScrollView.h b/cocos/ui/UIScrollView.h index 96d9949a77b6..c1cbe9ba8cba 100644 --- a/cocos/ui/UIScrollView.h +++ b/cocos/ui/UIScrollView.h @@ -343,7 +343,7 @@ class CC_GUI_DLL ScrollView : public Layout virtual void addChild(Node* child) override; virtual void addChild(Node* child, int localZOrder) override; virtual void addChild(Node* child, int localZOrder, int tag) override; - virtual void addChild(Node* child, int localZOrder, const std::string& name) override; + virtual void addChild(Node* child, int localZOrder, std::string_view name) override; virtual void removeAllChildren() override; virtual void removeAllChildrenWithCleanup(bool cleanup) override; virtual void removeChild(Node* child, bool cleanup = true) override; @@ -351,7 +351,7 @@ class CC_GUI_DLL ScrollView : public Layout virtual const Vector& getChildren() const override; virtual ssize_t getChildrenCount() const override; virtual Node* getChildByTag(int tag) const override; - virtual Node* getChildByName(const std::string& name) const override; + virtual Node* getChildByName(std::string_view name) const override; // touch event callback virtual bool onTouchBegan(Touch* touch, Event* unusedEvent) override; virtual void onTouchMoved(Touch* touch, Event* unusedEvent) override; diff --git a/cocos/ui/UISlider.cpp b/cocos/ui/UISlider.cpp index c28cfbbca51e..f1c9919ef28f 100644 --- a/cocos/ui/UISlider.cpp +++ b/cocos/ui/UISlider.cpp @@ -103,8 +103,8 @@ Slider* Slider::create() return nullptr; } -Slider* Slider::create(const std::string& barTextureName, - const std::string& normalBallTextureName, +Slider* Slider::create(std::string_view barTextureName, + std::string_view normalBallTextureName, TextureResType resType) { Slider* widget = new Slider(); @@ -157,7 +157,7 @@ void Slider::initRenderer() addProtectedChild(_slidBallRenderer, SLIDBALL_RENDERER_Z, -1); } -void Slider::loadBarTexture(const std::string& fileName, TextureResType texType) +void Slider::loadBarTexture(std::string_view fileName, TextureResType texType) { _textureFile = fileName; _barTexType = texType; @@ -202,7 +202,7 @@ void Slider::setupBarTexture() _originalBarRect = _barRenderer->getTextureRect(); } -void Slider::loadProgressBarTexture(const std::string& fileName, TextureResType texType) +void Slider::loadProgressBarTexture(std::string_view fileName, TextureResType texType) { _progressBarTextureFile = fileName; _progressBarTexType = texType; @@ -330,9 +330,9 @@ const Rect& Slider::getCapInsetsProgressBarRenderer() const return _capInsetsProgressBarRenderer; } -void Slider::loadSlidBallTextures(const std::string& normal, - const std::string& pressed, - const std::string& disabled, +void Slider::loadSlidBallTextures(std::string_view normal, + std::string_view pressed, + std::string_view disabled, TextureResType texType) { loadSlidBallTextureNormal(normal, texType); @@ -340,7 +340,7 @@ void Slider::loadSlidBallTextures(const std::string& normal, loadSlidBallTextureDisabled(disabled, texType); } -void Slider::loadSlidBallTextureNormal(const std::string& normal, TextureResType texType) +void Slider::loadSlidBallTextureNormal(std::string_view normal, TextureResType texType) { _slidBallNormalTextureFile = normal; _ballNTexType = texType; @@ -370,7 +370,7 @@ void Slider::loadSlidBallTextureNormal(SpriteFrame* spriteframe) this->updateChildrenDisplayedRGBA(); } -void Slider::loadSlidBallTexturePressed(const std::string& pressed, TextureResType texType) +void Slider::loadSlidBallTexturePressed(std::string_view pressed, TextureResType texType) { _slidBallPressedTextureFile = pressed; _isSliderBallPressedTextureLoaded = !pressed.empty(); @@ -402,7 +402,7 @@ void Slider::loadSlidBallTexturePressed(SpriteFrame* spriteframe) this->updateChildrenDisplayedRGBA(); } -void Slider::loadSlidBallTextureDisabled(const std::string& disabled, TextureResType texType) +void Slider::loadSlidBallTextureDisabled(std::string_view disabled, TextureResType texType) { _slidBallDisabledTextureFile = disabled; _isSliderBallDisabledTexturedLoaded = !disabled.empty(); diff --git a/cocos/ui/UISlider.h b/cocos/ui/UISlider.h index b0b30ad0c94b..d774b4079503 100644 --- a/cocos/ui/UISlider.h +++ b/cocos/ui/UISlider.h @@ -98,8 +98,8 @@ class CC_GUI_DLL Slider : public Widget * @param resType Texture resource type. * @return An autoreleased Slider object. */ - static Slider* create(const std::string& barTextureName, - const std::string& normalBallTextureName, + static Slider* create(std::string_view barTextureName, + std::string_view normalBallTextureName, TextureResType resType = TextureResType::LOCAL); /** @@ -108,7 +108,7 @@ class CC_GUI_DLL Slider : public Widget * @param fileName File name of texture. * @param resType @see TextureResType . */ - void loadBarTexture(const std::string& fileName, TextureResType resType = TextureResType::LOCAL); + void loadBarTexture(std::string_view fileName, TextureResType resType = TextureResType::LOCAL); /** * Sets if slider is using scale9 renderer. @@ -162,9 +162,9 @@ class CC_GUI_DLL Slider : public Widget * @param disabled Disabled state texture. * @param texType @see TextureResType . */ - void loadSlidBallTextures(const std::string& normal, - const std::string& pressed = "", - const std::string& disabled = "", + void loadSlidBallTextures(std::string_view normal, + std::string_view pressed = "", + std::string_view disabled = "", TextureResType texType = TextureResType::LOCAL); /** @@ -173,7 +173,7 @@ class CC_GUI_DLL Slider : public Widget * @param normal Normal state texture. * @param resType @see TextureResType . */ - void loadSlidBallTextureNormal(const std::string& normal, TextureResType resType = TextureResType::LOCAL); + void loadSlidBallTextureNormal(std::string_view normal, TextureResType resType = TextureResType::LOCAL); /** * Load pressed state texture for slider ball. @@ -181,7 +181,7 @@ class CC_GUI_DLL Slider : public Widget * @param pressed Pressed state texture. * @param resType @see TextureResType . */ - void loadSlidBallTexturePressed(const std::string& pressed, TextureResType resType = TextureResType::LOCAL); + void loadSlidBallTexturePressed(std::string_view pressed, TextureResType resType = TextureResType::LOCAL); /** * Load disabled state texture for slider ball. @@ -189,7 +189,7 @@ class CC_GUI_DLL Slider : public Widget * @param disabled Disabled state texture. * @param resType @see TextureResType . */ - void loadSlidBallTextureDisabled(const std::string& disabled, TextureResType resType = TextureResType::LOCAL); + void loadSlidBallTextureDisabled(std::string_view disabled, TextureResType resType = TextureResType::LOCAL); /** * Load dark state texture for slider progress bar. @@ -197,7 +197,7 @@ class CC_GUI_DLL Slider : public Widget * @param fileName File path of texture. * @param resType @see TextureResType . */ - void loadProgressBarTexture(const std::string& fileName, TextureResType resType = TextureResType::LOCAL); + void loadProgressBarTexture(std::string_view fileName, TextureResType resType = TextureResType::LOCAL); /** * Changes the progress direction of slider. diff --git a/cocos/ui/UITabControl.cpp b/cocos/ui/UITabControl.cpp index 65c9b54f9aee..37e9c39614e5 100644 --- a/cocos/ui/UITabControl.cpp +++ b/cocos/ui/UITabControl.cpp @@ -487,9 +487,9 @@ TabHeader* TabHeader::create() return nullptr; } -TabHeader* TabHeader::create(const std::string& titleStr, - const std::string& backGround, - const std::string& cross, +TabHeader* TabHeader::create(std::string_view titleStr, + std::string_view backGround, + std::string_view cross, TextureResType texType) { TabHeader* tabcell = new TabHeader; @@ -505,12 +505,12 @@ TabHeader* TabHeader::create(const std::string& titleStr, return nullptr; } -TabHeader* TabHeader::create(const std::string& titleStr, - const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, +TabHeader* TabHeader::create(std::string_view titleStr, + std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType /*= TextureResType::LOCAL*/) { TabHeader* tabcell = new TabHeader; @@ -543,7 +543,7 @@ void TabHeader::initRenderer() addProtectedChild(_tabLabelRender, -1, -1); } -void TabHeader::setTitleText(const std::string& text) +void TabHeader::setTitleText(std::string_view text) { if (text == getTitleText()) { @@ -555,11 +555,11 @@ void TabHeader::setTitleText(const std::string& text) _tabLabelRender->setPosition(_contentSize * 0.5f); } -std::string TabHeader::getTitleText() const +std::string_view TabHeader::getTitleText() const { if (nullptr == _tabLabelRender) { - return ""; + return ""sv; } return _tabLabelRender->getString(); } @@ -609,11 +609,11 @@ void TabHeader::updateContentSize() onSizeChanged(); } -void TabHeader::setTitleFontName(const std::string& fontName) +void TabHeader::setTitleFontName(std::string_view fontName) { if (FileUtils::getInstance()->isFileExist(fontName)) { - std::string lowerCasedFontName = fontName; + std::string lowerCasedFontName{fontName}; std::transform(lowerCasedFontName.begin(), lowerCasedFontName.end(), lowerCasedFontName.begin(), ::tolower); if (lowerCasedFontName.find(".fnt") != std::string::npos) { @@ -647,7 +647,7 @@ Label* TabHeader::getTitleRenderer() const return _tabLabelRender; } -std::string TabHeader::getTitleFontName() const +std::string_view TabHeader::getTitleFontName() const { if (this->_fontType == FontType::SYSTEM) { @@ -661,7 +661,7 @@ std::string TabHeader::getTitleFontName() const { return _tabLabelRender->getBMFontFilePath(); } - return ""; + return ""sv; } void TabHeader::onSizeChanged() diff --git a/cocos/ui/UITabControl.h b/cocos/ui/UITabControl.h index 7da800751dea..98765bdde408 100644 --- a/cocos/ui/UITabControl.h +++ b/cocos/ui/UITabControl.h @@ -70,9 +70,9 @@ class CC_GUI_DLL TabHeader : public AbstractCheckButton * @param texType The texture's resource type in `Widget::TextureResType`. * @return A TabHeader instance pointer */ - static TabHeader* create(const std::string& titleStr, - const std::string& backGround, - const std::string& cross, + static TabHeader* create(std::string_view titleStr, + std::string_view backGround, + std::string_view cross, TextureResType texType = TextureResType::LOCAL); /** @@ -87,12 +87,12 @@ class CC_GUI_DLL TabHeader : public AbstractCheckButton * * @return A TabHeader instance pointer. */ - static TabHeader* create(const std::string& titleStr, - const std::string& backGround, - const std::string& backGroundSelected, - const std::string& cross, - const std::string& backGroundDisabled, - const std::string& frontCrossDisabled, + static TabHeader* create(std::string_view titleStr, + std::string_view backGround, + std::string_view backGroundSelected, + std::string_view cross, + std::string_view backGroundDisabled, + std::string_view frontCrossDisabled, TextureResType texType = TextureResType::LOCAL); /** * Return the inner Label renderer of TabHeader. @@ -104,13 +104,13 @@ class CC_GUI_DLL TabHeader : public AbstractCheckButton * Change the content of Header's text. *@param text The Header's text. */ - void setTitleText(const std::string& text); + void setTitleText(std::string_view text); /** * get the TabHeader text *@return he TabHeader text */ - std::string getTitleText() const; + std::string_view getTitleText() const; /** * Change the color of he TabHeader text @@ -140,13 +140,13 @@ class CC_GUI_DLL TabHeader : public AbstractCheckButton * Change the font name of TabHeader text *@param fontName a font name string. */ - void setTitleFontName(const std::string& fontName); + void setTitleFontName(std::string_view fontName); /** * get the font name of TabHeader text *@return font name in std::string */ - std::string getTitleFontName() const; + std::string_view getTitleFontName() const; /** * get the index this header in the TabControl diff --git a/cocos/ui/UIText.cpp b/cocos/ui/UIText.cpp index db2457e21610..554e02429263 100644 --- a/cocos/ui/UIText.cpp +++ b/cocos/ui/UIText.cpp @@ -71,7 +71,7 @@ bool Text::init() return false; } -Text* Text::create(const std::string& textContent, const std::string& fontName, float fontSize) +Text* Text::create(std::string_view textContent, std::string_view fontName, float fontSize) { Text* text = new Text(); if (text->init(textContent, fontName, fontSize)) @@ -83,7 +83,7 @@ Text* Text::create(const std::string& textContent, const std::string& fontName, return nullptr; } -bool Text::init(const std::string& textContent, const std::string& fontName, float fontSize) +bool Text::init(std::string_view textContent, std::string_view fontName, float fontSize) { bool ret = true; do @@ -117,7 +117,7 @@ void Text::setString(std::string_view text) _labelRendererAdaptDirty = true; } -const std::string& Text::getString() const +std::string_view Text::getString() const { return _labelRenderer->getString(); } @@ -149,7 +149,7 @@ float Text::getFontSize() const return _fontSize; } -void Text::setFontName(const std::string& name) +void Text::setFontName(std::string_view name) { if (FileUtils::getInstance()->isFileExist(name)) { @@ -173,7 +173,7 @@ void Text::setFontName(const std::string& name) _labelRendererAdaptDirty = true; } -const std::string& Text::getFontName() const +std::string_view Text::getFontName() const { return _fontName; } diff --git a/cocos/ui/UIText.h b/cocos/ui/UIText.h index 39721ef6973b..10b980a381d4 100644 --- a/cocos/ui/UIText.h +++ b/cocos/ui/UIText.h @@ -96,7 +96,7 @@ class CC_GUI_DLL Text : public Widget, public cocos2d::BlendProtocol * @param fontSize A given font size. * @return An autoreleased Text object. */ - static Text* create(const std::string& textContent, const std::string& fontName, float fontSize); + static Text* create(std::string_view textContent, std::string_view fontName, float fontSize); /** * Changes the string value of label. @@ -110,7 +110,7 @@ class CC_GUI_DLL Text : public Widget, public cocos2d::BlendProtocol * * @return String value. */ - const std::string& getString() const; + std::string_view getString() const; /** * Gets the string length of the label. @@ -151,13 +151,13 @@ class CC_GUI_DLL Text : public Widget, public cocos2d::BlendProtocol * @endcode * @param name Font name. */ - void setFontName(const std::string& name); + void setFontName(std::string_view name); /** Gets the font name. * * @return Font name. */ - const std::string& getFontName() const; + std::string_view getFontName() const; /** Gets the font type. * @return The font type. @@ -342,7 +342,7 @@ class CC_GUI_DLL Text : public Widget, public cocos2d::BlendProtocol virtual const BlendFunc& getBlendFunc() const override; CC_CONSTRUCTOR_ACCESS : virtual bool init() override; - virtual bool init(const std::string& textContent, const std::string& fontName, float fontSize); + virtual bool init(std::string_view textContent, std::string_view fontName, float fontSize); protected: virtual void initRenderer() override; diff --git a/cocos/ui/UITextAtlas.cpp b/cocos/ui/UITextAtlas.cpp index 98eb85c0e801..e6ab8300fedd 100644 --- a/cocos/ui/UITextAtlas.cpp +++ b/cocos/ui/UITextAtlas.cpp @@ -66,11 +66,11 @@ void TextAtlas::initRenderer() addProtectedChild(_labelAtlasRenderer, LABELATLAS_RENDERER_Z, -1); } -TextAtlas* TextAtlas::create(const std::string& stringValue, - const std::string& charMapFile, +TextAtlas* TextAtlas::create(std::string_view stringValue, + std::string_view charMapFile, int itemWidth, int itemHeight, - const std::string& startCharMap) + std::string_view startCharMap) { TextAtlas* widget = new TextAtlas(); if (widget->init()) @@ -83,11 +83,11 @@ TextAtlas* TextAtlas::create(const std::string& stringValue, return nullptr; } -void TextAtlas::setProperty(const std::string& stringValue, - const std::string& charMapFile, +void TextAtlas::setProperty(std::string_view stringValue, + std::string_view charMapFile, int itemWidth, int itemHeight, - const std::string& startCharMap) + std::string_view startCharMap) { _stringValue = stringValue; _charMapFileName = charMapFile; @@ -116,7 +116,7 @@ void TextAtlas::setString(std::string_view value) // CCLOG("cssss w %f, h %f", _contentSize.width, _contentSize.height); } -const std::string& TextAtlas::getString() const +std::string_view TextAtlas::getString() const { return _labelAtlasRenderer->getString(); } diff --git a/cocos/ui/UITextAtlas.h b/cocos/ui/UITextAtlas.h index f84739ada084..25b9817f570c 100644 --- a/cocos/ui/UITextAtlas.h +++ b/cocos/ui/UITextAtlas.h @@ -82,11 +82,11 @@ class CC_GUI_DLL TextAtlas : public Widget * @param startCharMap The starting char of the atlas. * @return An autoreleased TextAtlas object. */ - static TextAtlas* create(const std::string& stringValue, - const std::string& charMapFile, + static TextAtlas* create(std::string_view stringValue, + std::string_view charMapFile, int itemWidth, int itemHeight, - const std::string& startCharMap); + std::string_view startCharMap); /** Initializes the LabelAtlas with a string, a char map file(the atlas), the width and height of each element and * the starting char of the atlas. @@ -98,11 +98,11 @@ class CC_GUI_DLL TextAtlas : public Widget * @param startCharMap The starting char of the atlas. */ - void setProperty(const std::string& stringValue, - const std::string& charMapFile, + void setProperty(std::string_view stringValue, + std::string_view charMapFile, int itemWidth, int itemHeight, - const std::string& startCharMap); + std::string_view startCharMap); /**Set string value for labelatlas. * @@ -114,7 +114,7 @@ class CC_GUI_DLL TextAtlas : public Widget * * @return The string value of TextAtlas. */ - const std::string& getString() const; + std::string_view getString() const; /** * Gets the string length of the label. diff --git a/cocos/ui/UITextBMFont.cpp b/cocos/ui/UITextBMFont.cpp index 125f921598cc..28de90891b2e 100644 --- a/cocos/ui/UITextBMFont.cpp +++ b/cocos/ui/UITextBMFont.cpp @@ -53,7 +53,7 @@ TextBMFont* TextBMFont::create() return nullptr; } -TextBMFont* TextBMFont::create(const std::string& text, const std::string& filename) +TextBMFont* TextBMFont::create(std::string_view text, std::string_view filename) { TextBMFont* widget = new TextBMFont(); if (widget->init()) @@ -73,7 +73,7 @@ void TextBMFont::initRenderer() addProtectedChild(_labelBMFontRenderer, LABELBMFONT_RENDERER_Z, -1); } -void TextBMFont::setFntFile(const std::string& fileName) +void TextBMFont::setFntFile(std::string_view fileName) { if (fileName.empty()) { @@ -86,7 +86,7 @@ void TextBMFont::setFntFile(const std::string& fileName) _labelBMFontRendererAdaptDirty = true; } -void TextBMFont::setString(const std::string& value) +void TextBMFont::setString(std::string_view value) { if (value == _labelBMFontRenderer->getString()) { @@ -98,7 +98,7 @@ void TextBMFont::setString(const std::string& value) _labelBMFontRendererAdaptDirty = true; } -const std::string& TextBMFont::getString() const +std::string_view TextBMFont::getString() const { return _stringValue; } diff --git a/cocos/ui/UITextBMFont.h b/cocos/ui/UITextBMFont.h index 70fb5564d1fd..eb3f16fc6756 100644 --- a/cocos/ui/UITextBMFont.h +++ b/cocos/ui/UITextBMFont.h @@ -69,16 +69,16 @@ class CC_GUI_DLL TextBMFont : public Widget */ static TextBMFont* create(); - static TextBMFont* create(const std::string& text, const std::string& filename); + static TextBMFont* create(std::string_view text, std::string_view filename); /** init a bitmap font atlas with an initial string and the FNT file */ - void setFntFile(const std::string& fileName); + void setFntFile(std::string_view fileName); /** set string value for labelbmfont*/ - void setString(const std::string& value); + void setString(std::string_view value); /** get string value for labelbmfont*/ - const std::string& getString() const; + std::string_view getString() const; /** * Gets the string length of the label. diff --git a/cocos/ui/UITextField.cpp b/cocos/ui/UITextField.cpp index 25b75a61e23b..8e16b2a83a8a 100644 --- a/cocos/ui/UITextField.cpp +++ b/cocos/ui/UITextField.cpp @@ -52,7 +52,7 @@ UICCTextField::UICCTextField() UICCTextField::~UICCTextField() {} -UICCTextField* UICCTextField::create(const std::string& placeholder, const std::string& fontName, float fontSize) +UICCTextField* UICCTextField::create(std::string_view placeholder, std::string_view fontName, float fontSize) { UICCTextField* pRet = new UICCTextField(); @@ -191,12 +191,12 @@ bool UICCTextField::isPasswordEnabled() const return this->isSecureTextEntry(); } -void UICCTextField::setPasswordStyleText(const std::string& styleText) +void UICCTextField::setPasswordStyleText(std::string_view styleText) { this->setPasswordTextStyle(styleText); } -void UICCTextField::setPasswordText(const std::string& text) +void UICCTextField::setPasswordText(std::string_view text) { std::string tempStr = ""; int32_t text_count = StringUtils::getCharacterCountInUTF8String(text); @@ -292,7 +292,7 @@ TextField* TextField::create() return nullptr; } -TextField* TextField::create(const std::string& placeholder, const std::string& fontName, int fontSize) +TextField* TextField::create(std::string_view placeholder, std::string_view fontName, int fontSize) { TextField* widget = new TextField(); if (widget->init()) @@ -358,7 +358,7 @@ Vec2 TextField::getTouchSize() const return Vec2(_touchWidth, _touchHeight); } -void TextField::setString(const std::string& text) +void TextField::setString(std::string_view text) { std::string strText(text); @@ -386,14 +386,14 @@ void TextField::setString(const std::string& text) updateContentSizeWithTextureSize(_textFieldRenderer->getContentSize()); } -void TextField::setPlaceHolder(const std::string& value) +void TextField::setPlaceHolder(std::string_view value) { _textFieldRenderer->setPlaceHolder(value); _textFieldRendererAdaptDirty = true; updateContentSizeWithTextureSize(_textFieldRenderer->getContentSize()); } -const std::string& TextField::getPlaceHolder() const +std::string_view TextField::getPlaceHolder() const { return _textFieldRenderer->getPlaceHolder(); } @@ -449,11 +449,11 @@ int TextField::getFontSize() const return _fontSize; } -void TextField::setFontName(const std::string& name) +void TextField::setFontName(std::string_view name) { if (FileUtils::getInstance()->isFileExist(name)) { - std::string lcName = name; + std::string lcName{name}; std::transform(lcName.begin(), lcName.end(), lcName.begin(), ::tolower); if (lcName.substr(lcName.length() - 4) == ".fnt") { @@ -483,7 +483,7 @@ void TextField::setFontName(const std::string& name) updateContentSizeWithTextureSize(_textFieldRenderer->getContentSize()); } -const std::string& TextField::getFontName() const +std::string_view TextField::getFontName() const { return _fontName; } @@ -493,7 +493,7 @@ void TextField::didNotSelectSelf() _textFieldRenderer->detachWithIME(); } -const std::string& TextField::getString() const +std::string_view TextField::getString() const { return _textFieldRenderer->getString(); } @@ -563,7 +563,7 @@ void TextField::setPasswordStyleText(const char* styleText) const char* TextField::getPasswordStyleText() const { - return _textFieldRenderer->getPasswordTextStyle().c_str(); + return _textFieldRenderer->getPasswordTextStyle().data(); } void TextField::update(float /*dt*/) diff --git a/cocos/ui/UITextField.h b/cocos/ui/UITextField.h index 2e9c8a8362fc..c39bcc410b6d 100644 --- a/cocos/ui/UITextField.h +++ b/cocos/ui/UITextField.h @@ -74,7 +74,7 @@ class CC_GUI_DLL UICCTextField : public TextFieldTTF, public TextFieldDelegate *@param fontSize Font size in float. *@return A UICCTextField instance. */ - static UICCTextField* create(const std::string& placeholder, const std::string& fontName, float fontSize); + static UICCTextField* create(std::string_view placeholder, std::string_view fontName, float fontSize); // override functions virtual bool onTextFieldAttachWithIME(TextFieldTTF* pSender) override; @@ -142,14 +142,14 @@ class CC_GUI_DLL UICCTextField : public TextFieldTTF, public TextFieldDelegate * * @param styleText The styleText for password mask, the default value is "*". */ - void setPasswordStyleText(const std::string& styleText); + void setPasswordStyleText(std::string_view styleText); /** * @brief Set the password text content. * * @param text The content of password. */ - void setPasswordText(const std::string& text); + void setPasswordText(std::string_view text); /** * @brief Toggle attach with IME. @@ -270,7 +270,7 @@ class CC_GUI_DLL TextField : public Widget * @param fontSize The font size. * @return A TextField instance. */ - static TextField* create(const std::string& placeholder, const std::string& fontName, int fontSize); + static TextField* create(std::string_view placeholder, std::string_view fontName, int fontSize); /** * @brief Set the touch size @@ -300,14 +300,14 @@ class CC_GUI_DLL TextField : public Widget * * @param value The string value of placeholder. */ - void setPlaceHolder(const std::string& value); + void setPlaceHolder(std::string_view value); /** * @brief Get the placeholder of TextField. * * @return A placeholder string. */ - const std::string& getPlaceHolder() const; + std::string_view getPlaceHolder() const; /** * @brief Query the placeholder string color. @@ -363,14 +363,14 @@ class CC_GUI_DLL TextField : public Widget * * @param name The font name string. */ - void setFontName(const std::string& name); + void setFontName(std::string_view name); /** * @brief Query the TextField's font name. * * @return The font name string. */ - const std::string& getFontName() const; + std::string_view getFontName() const; /** * @brief Detach the IME. @@ -381,13 +381,13 @@ class CC_GUI_DLL TextField : public Widget *Change content of TextField. *@param text A string content. */ - void setString(const std::string& text); + void setString(std::string_view text); /** *Query the content of TextField. *@return The string value of TextField. */ - const std::string& getString() const; + std::string_view getString() const; virtual bool onTouchBegan(Touch* touch, Event* unusedEvent) override; diff --git a/cocos/ui/UITextFieldEx.cpp b/cocos/ui/UITextFieldEx.cpp index 90e45b4a2854..a14258c1b8c3 100644 --- a/cocos/ui/UITextFieldEx.cpp +++ b/cocos/ui/UITextFieldEx.cpp @@ -28,8 +28,8 @@ NS_CC_BEGIN # define nxbeep(t) #endif -static Label* createLabel(const std::string& text, - const std::string& font, +static Label* createLabel(std::string_view text, + std::string_view font, float fontSize, const Vec2& dimensions = Vec2::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT, @@ -161,7 +161,7 @@ static int _truncateUTF8String(const char* text, int limit, int& nb) return n; } -static void internalSetLableFont(Label* l, const std::string& fontName, float fontSize) +static void internalSetLableFont(Label* l, std::string_view fontName, float fontSize) { if (FileUtils::getInstance()->isFileExist(fontName)) { @@ -178,7 +178,7 @@ static void internalSetLableFont(Label* l, const std::string& fontName, float fo } } -static float internalCalcStringWidth(std::string_view s, const std::string& fontName, float fontSize) +static float internalCalcStringWidth(std::string_view s, std::string_view fontName, float fontSize) { auto label = createLabel(std::string{s}, fontName, fontSize); return label->getContentSize().width; @@ -269,8 +269,8 @@ TextFieldEx::~TextFieldEx() ////////////////////////////////////////////////////////////////////////// // static constructor ////////////////////////////////////////////////////////////////////////// -TextFieldEx* TextFieldEx::create(const std::string& placeholder, - const std::string& fontName, +TextFieldEx* TextFieldEx::create(std::string_view placeholder, + std::string_view fontName, float fontSize, float cursorWidth, const Color4B& cursorColor) @@ -292,8 +292,8 @@ TextFieldEx* TextFieldEx::create(const std::string& placeholder, ////////////////////////////////////////////////////////////////////////// // initialize ////////////////////////////////////////////////////////////////////////// -bool TextFieldEx::initWithPlaceHolder(const std::string& placeholder, - const std::string& fontName, +bool TextFieldEx::initWithPlaceHolder(std::string_view placeholder, + std::string_view fontName, float fontSize, float cursorWidth, const Color4B& cursorColor) @@ -316,12 +316,12 @@ bool TextFieldEx::initWithPlaceHolder(const std::string& placeholder, return true; } -const std::string& TextFieldEx::getTextFontName() const +std::string_view TextFieldEx::getTextFontName() const { return this->fontName; } -void TextFieldEx::setTextFontName(const std::string& fontName) +void TextFieldEx::setTextFontName(std::string_view fontName) { if (FileUtils::getInstance()->isFileExist(fontName)) { @@ -740,7 +740,7 @@ void TextFieldEx::handleDeleteKeyEvent() this->onTextModify(); } -const std::string& TextFieldEx::getContentText() +std::string_view TextFieldEx::getContentText() { return inputText; } @@ -784,7 +784,7 @@ void TextFieldEx::setPlaceholderColor(const Color4B& color) ////////////////////////////////////////////////////////////////////////// // input text property -void TextFieldEx::setString(const std::string& text) +void TextFieldEx::setString(std::string_view text) { static char bulletString[] = {(char)0xe2, (char)0x80, (char)0xa2, (char)0x00}; @@ -838,13 +838,13 @@ void TextFieldEx::updateContentSize(void) this->setContentSize(renderLabel->getContentSize()); } -const std::string& TextFieldEx::getString() const +std::string_view TextFieldEx::getString() const { return inputText; } // place holder text property -void TextFieldEx::setPlaceholderText(const std::string& text) +void TextFieldEx::setPlaceholderText(std::string_view text) { placeHolder = text; if (inputText.empty()) @@ -854,7 +854,7 @@ void TextFieldEx::setPlaceholderText(const std::string& text) } } -const std::string& TextFieldEx::getPlaceholderText() const +std::string_view TextFieldEx::getPlaceholderText() const { return placeHolder; } diff --git a/cocos/ui/UITextFieldEx.h b/cocos/ui/UITextFieldEx.h index b94a7c7a2b65..a337388c0f94 100644 --- a/cocos/ui/UITextFieldEx.h +++ b/cocos/ui/UITextFieldEx.h @@ -29,14 +29,14 @@ class CC_DLL TextFieldEx : public cocos2d::Node, public IMEDelegate */ virtual ~TextFieldEx(); - static TextFieldEx* create(const std::string& placeholder, - const std::string& fontName, + static TextFieldEx* create(std::string_view placeholder, + std::string_view fontName, float fontSize, float cursorWidth = 2, const Color4B& color = Color4B::WHITE); - bool initWithPlaceHolder(const std::string& placeholder, - const std::string& fontName, + bool initWithPlaceHolder(std::string_view placeholder, + std::string_view fontName, float fontSize, float cursorWidth = 2, const Color4B& color = Color4B::WHITE); @@ -58,8 +58,8 @@ class CC_DLL TextFieldEx : public cocos2d::Node, public IMEDelegate const Color3B& getCursorColor(void) const; // input text property - virtual void setString(const std::string& text); - virtual const std::string& getString() const; + virtual void setString(std::string_view text); + virtual std::string_view getString() const; // Continuous touch event trigger support. void setContinuousTouchDelayTime(float delay) { _continuousTouchDelayTime = delay; } @@ -71,8 +71,8 @@ class CC_DLL TextFieldEx : public cocos2d::Node, public IMEDelegate // place holder text property // place holder text displayed when there is no text in the text field. - virtual void setPlaceholderText(const std::string& text); - virtual const std::string& getPlaceholderText(void) const; + virtual void setPlaceholderText(std::string_view text); + virtual std::string_view getPlaceholderText(void) const; virtual void setPasswordEnabled(bool value); virtual bool isPasswordEnabled() const; @@ -97,8 +97,8 @@ class CC_DLL TextFieldEx : public cocos2d::Node, public IMEDelegate /// fonts void setTextFontSize(float size); float getTextFontSize() const; - void setTextFontName(const std::string& fontName); - const std::string& getTextFontName() const; + void setTextFontName(std::string_view fontName); + std::string_view getTextFontName() const; CC_SYNTHESIZE(size_t, charLimit, CharLimit); @@ -122,7 +122,7 @@ class CC_DLL TextFieldEx : public cocos2d::Node, public IMEDelegate virtual bool canDetachWithIME() override; virtual void deleteBackward() override; - virtual const std::string& getContentText() override; + virtual std::string_view getContentText() override; void handleDeleteKeyEvent(); diff --git a/cocos/ui/UIVideoPlayer-android.cpp b/cocos/ui/UIVideoPlayer-android.cpp index dab2aafc7be2..b43537e4f05b 100644 --- a/cocos/ui/UIVideoPlayer-android.cpp +++ b/cocos/ui/UIVideoPlayer-android.cpp @@ -124,7 +124,7 @@ VideoPlayer::~VideoPlayer() JniHelper::callStaticVoidMethod(videoHelperClassName, "removeVideoWidget", _videoPlayerIndex); } -void VideoPlayer::setFileName(const std::string& fileName) +void VideoPlayer::setFileName(std::string_view fileName) { _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); _videoSource = VideoPlayer::Source::FILENAME; @@ -132,7 +132,7 @@ void VideoPlayer::setFileName(const std::string& fileName) _videoURL); } -void VideoPlayer::setURL(const std::string& videoUrl) +void VideoPlayer::setURL(std::string_view videoUrl) { _videoURL = videoUrl; _videoSource = VideoPlayer::Source::URL; diff --git a/cocos/ui/UIVideoPlayer-ios.mm b/cocos/ui/UIVideoPlayer-ios.mm index f41d63a57f75..24f925c2a7b8 100644 --- a/cocos/ui/UIVideoPlayer-ios.mm +++ b/cocos/ui/UIVideoPlayer-ios.mm @@ -290,14 +290,14 @@ -(void) removePlayerEventListener } } -void VideoPlayer::setFileName(const std::string& fileName) +void VideoPlayer::setFileName(std::string_view fileName) { _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); _videoSource = VideoPlayer::Source::FILENAME; [((UIVideoViewWrapperIos*)_videoView) setURL:(int)_videoSource :_videoURL]; } -void VideoPlayer::setURL(const std::string& videoUrl) +void VideoPlayer::setURL(std::string_view videoUrl) { _videoURL = videoUrl; _videoSource = VideoPlayer::Source::URL; diff --git a/cocos/ui/UIVideoPlayer.h b/cocos/ui/UIVideoPlayer.h index c97d5c3b7bae..76e82663f23f 100644 --- a/cocos/ui/UIVideoPlayer.h +++ b/cocos/ui/UIVideoPlayer.h @@ -86,26 +86,26 @@ class VideoPlayer : public cocos2d::ui::Widget /** * Sets a file path as a video source for VideoPlayer. */ - virtual void setFileName(const std::string& videoPath); + virtual void setFileName(std::string_view videoPath); /** * @brief Get the local video file name. * * @return The video file name. */ - virtual const std::string& getFileName() const { return _videoURL; } + virtual std::string_view getFileName() const { return _videoURL; } /** * Sets a URL as a video source for VideoPlayer. */ - virtual void setURL(const std::string& _videoURL); + virtual void setURL(std::string_view _videoURL); /** * @brief Get the URL of remoting video source. * * @return A remoting URL address. */ - virtual const std::string& getURL() const { return _videoURL; } + virtual std::string_view getURL() const { return _videoURL; } /** * @brief Set if playback is done in loop mode diff --git a/cocos/ui/UIWebView/UIWebView-inl.h b/cocos/ui/UIWebView/UIWebView-inl.h index 586aecc8e58f..8f510b017723 100644 --- a/cocos/ui/UIWebView/UIWebView-inl.h +++ b/cocos/ui/UIWebView/UIWebView-inl.h @@ -53,35 +53,35 @@ WebView* WebView::create() return nullptr; } -void WebView::setJavascriptInterfaceScheme(const std::string& scheme) +void WebView::setJavascriptInterfaceScheme(std::string_view scheme) { _impl->setJavascriptInterfaceScheme(scheme); } void WebView::loadData(const cocos2d::Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL) + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL) { _impl->loadData(data, MIMEType, encoding, baseURL); } -void WebView::loadHTMLString(const std::string& string, const std::string& baseURL) +void WebView::loadHTMLString(std::string_view string, std::string_view baseURL) { _impl->loadHTMLString(string, baseURL); } -void WebView::loadURL(const std::string& url) +void WebView::loadURL(std::string_view url) { this->loadURL(url, false); } -void WebView::loadURL(const std::string& url, bool cleanCachedData) +void WebView::loadURL(std::string_view url, bool cleanCachedData) { _impl->loadURL(url, cleanCachedData); } -void WebView::loadFile(const std::string& fileName) +void WebView::loadFile(std::string_view fileName) { _impl->loadFile(fileName); } @@ -116,7 +116,7 @@ void WebView::goForward() _impl->goForward(); } -void WebView::evaluateJS(const std::string& js) +void WebView::evaluateJS(std::string_view js) { _impl->evaluateJS(js); } @@ -204,7 +204,7 @@ void WebView::setOnDidFinishLoading(const ccWebViewCallback& callback) _onDidFinishLoading = callback; } -void WebView::setOnShouldStartLoading(const std::function& callback) +void WebView::setOnShouldStartLoading(const std::function& callback) { _onShouldStartLoading = callback; } @@ -214,7 +214,7 @@ void WebView::setOnJSCallback(const ccWebViewCallback& callback) _onJSCallback = callback; } -std::function WebView::getOnShouldStartLoading() const +std::function WebView::getOnShouldStartLoading() const { return _onShouldStartLoading; } diff --git a/cocos/ui/UIWebView/UIWebView.h b/cocos/ui/UIWebView/UIWebView.h index bc37e130d2ff..e881dc7cdf41 100644 --- a/cocos/ui/UIWebView/UIWebView.h +++ b/cocos/ui/UIWebView/UIWebView.h @@ -59,7 +59,7 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget * * @see WebView::setOnJSCallback() */ - void setJavascriptInterfaceScheme(const std::string& scheme); + void setJavascriptInterfaceScheme(std::string_view scheme); /** * Sets the main page contents, MIME type, content encoding, and base URL. @@ -70,9 +70,9 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget * @param baseURL The base URL for the content. */ void loadData(const cocos2d::Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL); + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL); /** * Sets the main page content and base URL. @@ -80,28 +80,28 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget * @param string The content for the main page. * @param baseURL The base URL for the content. */ - void loadHTMLString(const std::string& string, const std::string& baseURL = ""); + void loadHTMLString(std::string_view string, std::string_view baseURL = ""); /** * Loads the given URL. It doesn't clean cached data. * * @param url Content URL. */ - void loadURL(const std::string& url); + void loadURL(std::string_view url); /** * Loads the given URL with cleaning cached data or not. * @param url Content URL. * @cleanCachedData Whether to clean cached data. */ - void loadURL(const std::string& url, bool cleanCachedData); + void loadURL(std::string_view url, bool cleanCachedData); /** * Loads the given fileName. * * @param fileName Content fileName. */ - void loadFile(const std::string& fileName); + void loadFile(std::string_view fileName); /** * Stops the current load. @@ -140,7 +140,7 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget /** * Evaluates JavaScript in the context of the currently displayed page. */ - void evaluateJS(const std::string& js); + void evaluateJS(std::string_view js); /** * Set WebView should support zooming. The default value is false. @@ -153,12 +153,12 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget * @param callback The web view that is about to load new content. * @return YES if the web view should begin loading content; otherwise, NO. */ - void setOnShouldStartLoading(const std::function& callback); + void setOnShouldStartLoading(const std::function& callback); /** * A callback which will be called when a WebView event happens. */ - typedef std::function ccWebViewCallback; + typedef std::function ccWebViewCallback; /** * Call after a web view finishes loading. @@ -182,7 +182,7 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget /** * Get the callback when WebView is about to start. */ - std::function getOnShouldStartLoading() const; + std::function getOnShouldStartLoading() const; /** * Get the callback when WebView has finished loading. @@ -231,7 +231,7 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget virtual cocos2d::ui::Widget* createCloneInstance() override; virtual void copySpecialProperties(Widget* model) override; - std::function _onShouldStartLoading = nullptr; + std::function _onShouldStartLoading = nullptr; ccWebViewCallback _onDidFinishLoading = nullptr; ccWebViewCallback _onDidFailLoading = nullptr; ccWebViewCallback _onJSCallback = nullptr; diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp index cd61a73d6e45..d713947e31f6 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp @@ -44,7 +44,7 @@ static const std::string className = "org.cocos2dx.lib.Cocos2dxWebViewHelper"; static const std::string s_defaultBaseUrl = "file:///android_asset/"; static const std::string s_sdRootBaseUrl = "file://"; -static std::string getFixedBaseUrl(const std::string& baseUrl) +static std::string getFixedBaseUrl(std::string_view baseUrl) { std::string fixedBaseUrl; if (baseUrl.empty()) @@ -165,7 +165,7 @@ int createWebViewJNI() return -1; } -std::string getUrlStringByFileName(const std::string& fileName) +std::string getUrlStringByFileName(std::string_view fileName) { // LOGD("error: %s,%d",__func__,__LINE__); const std::string basePath("file:///android_asset/"); @@ -214,31 +214,31 @@ WebViewImpl::~WebViewImpl() } void WebViewImpl::loadData(const Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL) + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, dataString, MIMEType, encoding, baseURL); } -void WebViewImpl::loadHTMLString(const std::string& string, const std::string& baseURL) +void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) { JniHelper::callStaticVoidMethod(className, "loadHTMLString", _viewTag, string, getFixedBaseUrl(baseURL)); } -void WebViewImpl::loadURL(const std::string& url) +void WebViewImpl::loadURL(std::string_view url) { this->loadURL(url, false); } -void WebViewImpl::loadURL(const std::string& url, bool cleanCachedData) +void WebViewImpl::loadURL(std::string_view url, bool cleanCachedData) { JniHelper::callStaticVoidMethod(className, "loadUrl", _viewTag, url, cleanCachedData); } -void WebViewImpl::loadFile(const std::string& fileName) +void WebViewImpl::loadFile(std::string_view fileName) { auto fullPath = getUrlStringByFileName(fileName); JniHelper::callStaticVoidMethod(className, "loadFile", _viewTag, fullPath); @@ -274,12 +274,12 @@ void WebViewImpl::goForward() JniHelper::callStaticVoidMethod(className, "goForward", _viewTag); } -void WebViewImpl::setJavascriptInterfaceScheme(const std::string& scheme) +void WebViewImpl::setJavascriptInterfaceScheme(std::string_view scheme) { JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, scheme); } -void WebViewImpl::evaluateJS(const std::string& js) +void WebViewImpl::evaluateJS(std::string_view js) { JniHelper::callStaticVoidMethod(className, "evaluateJS", _viewTag, js); } @@ -289,7 +289,7 @@ void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) JniHelper::callStaticVoidMethod(className, "setScalesPageToFit", _viewTag, scalesPageToFit); } -bool WebViewImpl::shouldStartLoading(const int viewTag, const std::string& url) +bool WebViewImpl::shouldStartLoading(const int viewTag, std::string_view url) { bool allowLoad = true; auto it = s_WebViewImpls.find(viewTag); @@ -304,7 +304,7 @@ bool WebViewImpl::shouldStartLoading(const int viewTag, const std::string& url) return allowLoad; } -void WebViewImpl::didFinishLoading(const int viewTag, const std::string& url) +void WebViewImpl::didFinishLoading(const int viewTag, std::string_view url) { auto it = s_WebViewImpls.find(viewTag); if (it != s_WebViewImpls.end()) @@ -317,7 +317,7 @@ void WebViewImpl::didFinishLoading(const int viewTag, const std::string& url) } } -void WebViewImpl::didFailLoading(const int viewTag, const std::string& url) +void WebViewImpl::didFailLoading(const int viewTag, std::string_view url) { auto it = s_WebViewImpls.find(viewTag); if (it != s_WebViewImpls.end()) @@ -330,7 +330,7 @@ void WebViewImpl::didFailLoading(const int viewTag, const std::string& url) } } -void WebViewImpl::onJsCallback(const int viewTag, const std::string& message) +void WebViewImpl::onJsCallback(const int viewTag, std::string_view message) { auto it = s_WebViewImpls.find(viewTag); if (it != s_WebViewImpls.end()) diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.h b/cocos/ui/UIWebView/UIWebViewImpl-android.h index 653078cc28ab..7bebb3ba75e0 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.h @@ -53,19 +53,19 @@ class WebViewImpl virtual ~WebViewImpl(); - void setJavascriptInterfaceScheme(const std::string& scheme); + void setJavascriptInterfaceScheme(std::string_view scheme); void loadData(const cocos2d::Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL); + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL); - void loadHTMLString(const std::string& string, const std::string& baseURL); + void loadHTMLString(std::string_view string, std::string_view baseURL); - void loadURL(const std::string& url); - void loadURL(const std::string& url, bool cleanCachedData); + void loadURL(std::string_view url); + void loadURL(std::string_view url, bool cleanCachedData); - void loadFile(const std::string& fileName); + void loadFile(std::string_view fileName); void stopLoading(); @@ -79,7 +79,7 @@ class WebViewImpl void goForward(); - void evaluateJS(const std::string& js); + void evaluateJS(std::string_view js); void setScalesPageToFit(const bool scalesPageToFit); @@ -95,10 +95,10 @@ class WebViewImpl void setBackgroundTransparent(); - static bool shouldStartLoading(const int viewTag, const std::string& url); - static void didFinishLoading(const int viewTag, const std::string& url); - static void didFailLoading(const int viewTag, const std::string& url); - static void onJsCallback(const int viewTag, const std::string& message); + static bool shouldStartLoading(const int viewTag, std::string_view url); + static void didFinishLoading(const int viewTag, std::string_view url); + static void didFailLoading(const int viewTag, std::string_view url); + static void onJsCallback(const int viewTag, std::string_view message); private: int _viewTag; diff --git a/cocos/ui/UIWebView/UIWebViewImpl-ios.h b/cocos/ui/UIWebView/UIWebViewImpl-ios.h index 03fe18cc860b..4e55c87f4a92 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-ios.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-ios.h @@ -49,19 +49,19 @@ class WebViewImpl virtual ~WebViewImpl(); - void setJavascriptInterfaceScheme(const std::string& scheme); + void setJavascriptInterfaceScheme(std::string_view scheme); void loadData(const cocos2d::Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL); + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL); - void loadHTMLString(const std::string& string, const std::string& baseURL); + void loadHTMLString(std::string_view string, std::string_view baseURL); - void loadURL(const std::string& url); - void loadURL(const std::string& url, bool cleanCachedData); + void loadURL(std::string_view url); + void loadURL(std::string_view url, bool cleanCachedData); - void loadFile(const std::string& fileName); + void loadFile(std::string_view fileName); void stopLoading(); @@ -75,7 +75,7 @@ class WebViewImpl void goForward(); - void evaluateJS(const std::string& js); + void evaluateJS(std::string_view js); void setScalesPageToFit(const bool scalesPageToFit); diff --git a/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp b/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp index 89ecd6d0522f..aea7857f45b6 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp @@ -57,9 +57,9 @@ USING_NS_CC; using namespace rapidjson; -using msg_cb_t = std::function; +using msg_cb_t = std::function; -inline std::string htmlFromUri(const std::string& s) +inline std::string htmlFromUri(std::string_view s) { if (s.substr(0, 15) == "data:text/html,") { @@ -139,14 +139,14 @@ inline int jsonUnescape(const char* s, size_t n, char* out) // The following is a special case, where the exact json string is not returned due // to how rapidjson re-creates the nested object, original: "{"bar": 1}", parsed result: "{"bar":1}" // assert(jsonParse(R"({"foo": {"bar": 1}})", "foo", -1) == R"({"bar":1})"); -inline std::string jsonParse(const std::string& s, const std::string& key, const int index) +inline std::string jsonParse(std::string_view s, std::string_view key, const int index) { const char* value = nullptr; size_t value_sz{}; StringBuffer sb; Writer writer(sb); Document d; - d.Parse(s.c_str()); + d.Parse(s.data()); if (key.empty() && index > -1) { if (d.IsArray()) @@ -162,7 +162,7 @@ inline std::string jsonParse(const std::string& s, const std::string& key, const } else { - auto&& fieldItr = d.FindMember(key.c_str()); + auto&& fieldItr = d.FindMember(key.data()); if (fieldItr != d.MemberEnd()) { auto&& jsonValue = fieldItr->value; @@ -214,12 +214,12 @@ static std::string getUriStringFromArgs(ArgType* args) return {}; } -static std::string getDataURI(const std::string& data, const std::string& mime_type) +static std::string getDataURI(std::string_view data, std::string_view mime_type) { char* encodedData; cocos2d::base64Encode(reinterpret_cast(data.data()), static_cast(data.size()), &encodedData); - return "data:" + mime_type + ";base64," + utils::urlEncode(encodedData); + return std::string{"data:"}.append(mime_type).append(";base64,").append(utils::urlEncode(encodedData)); } static double getDeviceScaleFactor() @@ -250,24 +250,24 @@ class Win32WebControl public: Win32WebControl(); - bool createWebView(const std::function& shouldStartLoading, - const std::function& didFinishLoading, - const std::function& didFailLoading, - const std::function& onJsCallback); + bool createWebView(const std::function& shouldStartLoading, + const std::function& didFinishLoading, + const std::function& didFailLoading, + const std::function& onJsCallback); void removeWebView(); void setWebViewRect(const int left, const int top, const int width, const int height); - void setJavascriptInterfaceScheme(const std::string& scheme); - void loadHTMLString(const std::string& html, const std::string& baseURL); - void loadURL(const std::string& url, bool cleanCachedData); - void loadFile(const std::string& filePath); + void setJavascriptInterfaceScheme(std::string_view scheme); + void loadHTMLString(std::string_view html, std::string_view baseURL); + void loadURL(std::string_view url, bool cleanCachedData); + void loadFile(std::string_view filePath); void stopLoading(); void reload() const; bool canGoBack() const; bool canGoForward() const; void goBack() const; void goForward() const; - void evaluateJS(const std::string& js); + void evaluateJS(std::string_view js); void setScalesPageToFit(const bool scalesPageToFit); void setWebViewVisible(const bool visible) const; void setBounces(bool bounces); @@ -286,19 +286,19 @@ class Win32WebControl std::string m_jsScheme; bool _scalesPageToFit{}; - std::function _shouldStartLoading; - std::function _didFinishLoading; - std::function _didFailLoading; - std::function _onJsCallback; + std::function _shouldStartLoading; + std::function _didFinishLoading; + std::function _didFailLoading; + std::function _onJsCallback; static bool s_isInitialized; static void lazyInit(); - static LPWSTR to_lpwstr(const std::string s) + static LPWSTR to_lpwstr(std::string_view s) { - const int n = MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, NULL, 0); + const int n = MultiByteToWideChar(CP_UTF8, 0, s.data(), -1, NULL, 0); auto* ws = new wchar_t[n]; - MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, ws, n); + MultiByteToWideChar(CP_UTF8, 0, s.data(), -1, ws, n); return ws; } @@ -325,7 +325,7 @@ class Win32WebControl m_webview->AddRef(); flag.clear(); }, - [this](const std::string& url) -> bool { + [this](std::string_view url) -> bool { const auto scheme = url.substr(0, url.find_first_of(':')); if (scheme == m_jsScheme) { @@ -358,7 +358,7 @@ class Win32WebControl if (_didFailLoading) _didFailLoading(result); }, - [this](const std::string& url) { loadURL(url, false); })); + [this](std::string_view url) { loadURL(url, false); })); if (res != S_OK) { @@ -386,28 +386,28 @@ class Win32WebControl m_controller->put_Bounds(bounds); } - void navigate(const std::string url) + void navigate(std::string_view url) { auto wurl = to_lpwstr(url); m_webview->Navigate(wurl); delete[] wurl; } - void init(const std::string js) + void init(std::string_view js) { LPCWSTR wjs = to_lpwstr(js); m_webview->AddScriptToExecuteOnDocumentCreated(wjs, nullptr); delete[] wjs; } - void eval(const std::string js) + void eval(std::string_view js) { LPCWSTR wjs = to_lpwstr(js); m_webview->ExecuteScript(wjs, nullptr); delete[] wjs; } - void on_message(const std::string msg) + void on_message(std::string_view msg) { const auto seq = jsonParse(msg, "id", 0); const auto name = jsonParse(msg, "method", 0); @@ -440,10 +440,10 @@ class Win32WebControl webview2_com_handler(HWND hwnd, msg_cb_t msgCb, webview2_com_handler_cb_t cb, - std::function navStartingCallback, + std::function navStartingCallback, std::function navCompleteCallback, std::function navErrorCallback, - std::function loadUrlCallback) + std::function loadUrlCallback) : m_window(hwnd) , m_msgCb(std::move(msgCb)) , m_cb(std::move(cb)) @@ -587,10 +587,10 @@ class Win32WebControl HWND m_window; msg_cb_t m_msgCb; webview2_com_handler_cb_t m_cb; - std::function m_navStartingCallback; + std::function m_navStartingCallback; std::function m_navCompleteCallback; std::function m_navErrorCallback; - std::function m_loadUrlCallback; + std::function m_loadUrlCallback; }; }; @@ -607,7 +607,7 @@ WebViewImpl::WebViewImpl(WebView* webView) : _createSucceeded(false), _systemWeb } _createSucceeded = _systemWebControl->createWebView( - [this](const std::string& url) -> bool { + [this](std::string_view url) -> bool { const auto shouldStartLoading = _webView->getOnShouldStartLoading(); if (shouldStartLoading != nullptr) { @@ -615,21 +615,21 @@ WebViewImpl::WebViewImpl(WebView* webView) : _createSucceeded(false), _systemWeb } return true; }, - [this](const std::string& url) { + [this](std::string_view url) { WebView::ccWebViewCallback didFinishLoading = _webView->getOnDidFinishLoading(); if (didFinishLoading != nullptr) { didFinishLoading(_webView, url); } }, - [this](const std::string& url) { + [this](std::string_view url) { WebView::ccWebViewCallback didFailLoading = _webView->getOnDidFailLoading(); if (didFailLoading != nullptr) { didFailLoading(_webView, url); } }, - [this](const std::string& url) { + [this](std::string_view url) { WebView::ccWebViewCallback onJsCallback = _webView->getOnJSCallback(); if (onJsCallback != nullptr) { @@ -649,9 +649,9 @@ WebViewImpl::~WebViewImpl() } void WebViewImpl::loadData(const Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL) + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL) { if (_createSucceeded) { @@ -662,7 +662,7 @@ void WebViewImpl::loadData(const Data& data, } } -void WebViewImpl::loadHTMLString(const std::string& string, const std::string& baseURL) +void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) { if (_createSucceeded) { @@ -684,7 +684,7 @@ void WebViewImpl::loadHTMLString(const std::string& string, const std::string& b } } -void WebViewImpl::loadURL(const std::string& url, bool cleanCachedData) +void WebViewImpl::loadURL(std::string_view url, bool cleanCachedData) { if (_createSucceeded) { @@ -692,7 +692,7 @@ void WebViewImpl::loadURL(const std::string& url, bool cleanCachedData) } } -void WebViewImpl::loadFile(const std::string& fileName) +void WebViewImpl::loadFile(std::string_view fileName) { if (_createSucceeded) { @@ -751,7 +751,7 @@ void WebViewImpl::goForward() } } -void WebViewImpl::setJavascriptInterfaceScheme(const std::string& scheme) +void WebViewImpl::setJavascriptInterfaceScheme(std::string_view scheme) { if (_createSucceeded) { @@ -759,7 +759,7 @@ void WebViewImpl::setJavascriptInterfaceScheme(const std::string& scheme) } } -void WebViewImpl::evaluateJS(const std::string& js) +void WebViewImpl::evaluateJS(std::string_view js) { if (_createSucceeded) { @@ -838,10 +838,10 @@ Win32WebControl::Win32WebControl() : _shouldStartLoading(nullptr), _didFinishLoa } } -bool Win32WebControl::createWebView(const std::function& shouldStartLoading, - const std::function& didFinishLoading, - const std::function& didFailLoading, - const std::function& onJsCallback) +bool Win32WebControl::createWebView(const std::function& shouldStartLoading, + const std::function& didFinishLoading, + const std::function& didFailLoading, + const std::function& onJsCallback) { bool ret = false; do @@ -905,7 +905,7 @@ bool Win32WebControl::createWebView(const std::functionput_ZoomFactor(_scalesPageToFit ? getDeviceScaleFactor() : 1.0); } -void Win32WebControl::setJavascriptInterfaceScheme(const std::string& scheme) +void Win32WebControl::setJavascriptInterfaceScheme(std::string_view scheme) { m_jsScheme = scheme; } -void Win32WebControl::loadHTMLString(const std::string& html, const std::string& baseURL) +void Win32WebControl::loadHTMLString(std::string_view html, std::string_view baseURL) { if (!html.empty()) { @@ -971,7 +971,7 @@ void Win32WebControl::loadHTMLString(const std::string& html, const std::string& } } -void Win32WebControl::loadURL(const std::string& url, bool cleanCachedData) +void Win32WebControl::loadURL(std::string_view url, bool cleanCachedData) { if (cleanCachedData) { @@ -980,7 +980,7 @@ void Win32WebControl::loadURL(const std::string& url, bool cleanCachedData) navigate(url); } -void Win32WebControl::loadFile(const std::string& filePath) +void Win32WebControl::loadFile(std::string_view filePath) { auto fullPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(filePath); if (fullPath.find("file:///") != 0) @@ -1029,7 +1029,7 @@ void Win32WebControl::goForward() const m_webview->GoForward(); } -void Win32WebControl::evaluateJS(const std::string& js) +void Win32WebControl::evaluateJS(std::string_view js) { eval(js); } diff --git a/cocos/ui/UIWebView/UIWebViewImpl-win32.h b/cocos/ui/UIWebView/UIWebViewImpl-win32.h index b963ba4a868a..5dca559a57e0 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-win32.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-win32.h @@ -58,21 +58,21 @@ class WebViewImpl WebViewImpl(cocos2d::ui::WebView* webView); virtual ~WebViewImpl(); - void setJavascriptInterfaceScheme(const std::string& scheme); + void setJavascriptInterfaceScheme(std::string_view scheme); void loadData(const cocos2d::Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL); - void loadHTMLString(const std::string& string, const std::string& baseURL); - void loadURL(const std::string& url, bool cleanCachedData); - void loadFile(const std::string& fileName); + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL); + void loadHTMLString(std::string_view string, std::string_view baseURL); + void loadURL(std::string_view url, bool cleanCachedData); + void loadFile(std::string_view fileName); void stopLoading(); void reload(); bool canGoBack(); bool canGoForward(); void goBack(); void goForward(); - void evaluateJS(const std::string& js); + void evaluateJS(std::string_view js); void setScalesPageToFit(const bool scalesPageToFit); virtual void draw(cocos2d::Renderer* renderer, cocos2d::Mat4 const& transform, uint32_t flags); diff --git a/cocos/ui/UIWidget.h b/cocos/ui/UIWidget.h index 98e841c53863..29c9a3786fcd 100644 --- a/cocos/ui/UIWidget.h +++ b/cocos/ui/UIWidget.h @@ -684,25 +684,25 @@ class CC_GUI_DLL Widget : public ProtectedNode, public LayoutParameterProtocol * Set callback name. *@param callbackName A string representation of callback name. */ - void setCallbackName(const std::string& callbackName) { _callbackName = callbackName; } + void setCallbackName(std::string_view callbackName) { _callbackName = callbackName; } /** * Query callback name. *@return The callback name. */ - const std::string& getCallbackName() const { return _callbackName; } + std::string_view getCallbackName() const { return _callbackName; } /** * Set callback type. * @param callbackType A string representation of callback type. */ - void setCallbackType(const std::string& callbackType) { _callbackType = callbackType; } + void setCallbackType(std::string_view callbackType) { _callbackType = callbackType; } /** * Query callback type. *@return Callback type string. */ - const std::string& getCallbackType() const { return _callbackType; } + std::string_view getCallbackType() const { return _callbackType; } /** * Toggle layout component enable. diff --git a/extensions/DragonBones/CCArmatureDisplay.cpp b/extensions/DragonBones/CCArmatureDisplay.cpp index 5f11f16381d7..1801334daeac 100644 --- a/extensions/DragonBones/CCArmatureDisplay.cpp +++ b/extensions/DragonBones/CCArmatureDisplay.cpp @@ -1,4 +1,4 @@ -#include "CCArmatureDisplay.h" +#include "CCArmatureDisplay.h" #include "CCSlot.h" DRAGONBONES_NAMESPACE_BEGIN @@ -56,7 +56,7 @@ void CCArmatureDisplay::dbUpdate() } } -void CCArmatureDisplay::addDBEventListener(const std::string& type, const std::function& callback) +void CCArmatureDisplay::addDBEventListener(std::string_view type, const std::function& callback) { auto lambda = [callback](cocos2d::EventCustom* event) -> void { callback(static_cast(event->getUserData())); @@ -64,12 +64,12 @@ void CCArmatureDisplay::addDBEventListener(const std::string& type, const std::f _dispatcher->addCustomEventListener(type, lambda); } -void CCArmatureDisplay::dispatchDBEvent(const std::string& type, EventObject* value) +void CCArmatureDisplay::dispatchDBEvent(std::string_view type, EventObject* value) { _dispatcher->dispatchCustomEvent(type, value); } -void CCArmatureDisplay::removeDBEventListener(const std::string& type, +void CCArmatureDisplay::removeDBEventListener(std::string_view type, const std::function& callback) { // TODO diff --git a/extensions/DragonBones/CCArmatureDisplay.h b/extensions/DragonBones/CCArmatureDisplay.h index 2e594a566c23..0c6092f3d961 100644 --- a/extensions/DragonBones/CCArmatureDisplay.h +++ b/extensions/DragonBones/CCArmatureDisplay.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -83,20 +83,20 @@ class CCArmatureDisplay : public cocos2d::Node, public virtual IArmatureProxy /** * @inheritDoc */ - inline virtual bool hasDBEventListener(const std::string& type) const override { return _dispatcher->isEnabled(); } + inline virtual bool hasDBEventListener(std::string_view type) const override { return _dispatcher->isEnabled(); } /** * @inheritDoc */ - virtual void dispatchDBEvent(const std::string& type, EventObject* value) override; + virtual void dispatchDBEvent(std::string_view type, EventObject* value) override; /** * @inheritDoc */ - virtual void addDBEventListener(const std::string& type, + virtual void addDBEventListener(std::string_view type, const std::function& listener) override; /** * @inheritDoc */ - virtual void removeDBEventListener(const std::string& type, + virtual void removeDBEventListener(std::string_view type, const std::function& listener) override; /** * @inheritDoc diff --git a/extensions/DragonBones/CCFactory.cpp b/extensions/DragonBones/CCFactory.cpp index 85c8565d040b..ee24fc555c92 100644 --- a/extensions/DragonBones/CCFactory.cpp +++ b/extensions/DragonBones/CCFactory.cpp @@ -1,4 +1,4 @@ -#include "CCFactory.h" +#include "CCFactory.h" #include "CCTextureAtlasData.h" #include "CCArmatureDisplay.h" #include "CCSlot.h" @@ -144,7 +144,7 @@ Slot* CCFactory::_buildSlot(const BuildArmaturePackage& dataPackage, const SlotD return slot; } -DragonBonesData* CCFactory::loadDragonBonesData(const std::string& filePath, const std::string& name, float scale) +DragonBonesData* CCFactory::loadDragonBonesData(std::string_view filePath, std::string_view name, float scale) { if (!name.empty()) { @@ -185,7 +185,7 @@ DragonBonesData* CCFactory::loadDragonBonesData(const std::string& filePath, con return nullptr; } -TextureAtlasData* CCFactory::loadTextureAtlasData(const std::string& filePath, const std::string& name, float scale) +TextureAtlasData* CCFactory::loadTextureAtlasData(std::string_view filePath, std::string_view name, float scale) { _prevPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(filePath); const auto data = cocos2d::FileUtils::getInstance()->getStringFromFile(_prevPath); @@ -197,10 +197,10 @@ TextureAtlasData* CCFactory::loadTextureAtlasData(const std::string& filePath, c return static_cast(BaseFactory::parseTextureAtlasData(data.c_str(), nullptr, name, scale)); } -CCArmatureDisplay* CCFactory::buildArmatureDisplay(const std::string& armatureName, - const std::string& dragonBonesName, - const std::string& skinName, - const std::string& textureAtlasName) const +CCArmatureDisplay* CCFactory::buildArmatureDisplay(std::string_view armatureName, + std::string_view dragonBonesName, + std::string_view skinName, + std::string_view textureAtlasName) const { const auto armature = buildArmature(armatureName, dragonBonesName, skinName, textureAtlasName); if (armature != nullptr) @@ -213,7 +213,7 @@ CCArmatureDisplay* CCFactory::buildArmatureDisplay(const std::string& armatureNa return nullptr; } -cocos2d::Sprite* CCFactory::getTextureDisplay(const std::string& textureName, const std::string& dragonBonesName) const +cocos2d::Sprite* CCFactory::getTextureDisplay(std::string_view textureName, std::string_view dragonBonesName) const { const auto textureData = static_cast(_getTextureData(dragonBonesName, textureName)); if (textureData != nullptr && textureData->spriteFrame != nullptr) diff --git a/extensions/DragonBones/CCFactory.h b/extensions/DragonBones/CCFactory.h index 4ffa18400803..435f745ae52d 100644 --- a/extensions/DragonBones/CCFactory.h +++ b/extensions/DragonBones/CCFactory.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -102,8 +102,8 @@ class CCFactory : public BaseFactory Armature* armature) const override; public: - virtual DragonBonesData* loadDragonBonesData(const std::string& filePath, - const std::string& name = "", + virtual DragonBonesData* loadDragonBonesData(std::string_view filePath, + std::string_view name = "", float scale = 1.0f); /** * - Load and parse a texture atlas data and texture from the local and cache them to the factory. @@ -132,8 +132,8 @@ class CCFactory : public BaseFactory * * @language zh_CN */ - virtual TextureAtlasData* loadTextureAtlasData(const std::string& filePath, - const std::string& name = "", + virtual TextureAtlasData* loadTextureAtlasData(std::string_view filePath, + std::string_view name = "", float scale = 1.0f); /** * - Create a armature from cached DragonBonesData instances and TextureAtlasData instances, then use the {@link @@ -168,10 +168,10 @@ class CCFactory : public BaseFactory * * @language zh_CN */ - virtual CCArmatureDisplay* buildArmatureDisplay(const std::string& armatureName, - const std::string& dragonBonesName = "", - const std::string& skinName = "", - const std::string& textureAtlasName = "") const; + virtual CCArmatureDisplay* buildArmatureDisplay(std::string_view armatureName, + std::string_view dragonBonesName = "", + std::string_view skinName = "", + std::string_view textureAtlasName = "") const; /** * - Create the display object with the specified texture. * @param textureName - The texture data name. @@ -186,8 +186,8 @@ class CCFactory : public BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual cocos2d::Sprite* getTextureDisplay(const std::string& textureName, - const std::string& dragonBonesName = "") const; + virtual cocos2d::Sprite* getTextureDisplay(std::string_view textureName, + std::string_view dragonBonesName = "") const; /** * - A global sound event manager. * Sound events can be listened to uniformly from the manager. diff --git a/extensions/DragonBones/animation/Animation.cpp b/extensions/DragonBones/animation/Animation.cpp index 56de8389225a..77ae02d80cc5 100644 --- a/extensions/DragonBones/animation/Animation.cpp +++ b/extensions/DragonBones/animation/Animation.cpp @@ -1,4 +1,4 @@ -#include "Animation.h" +#include "Animation.h" #include "../model/DisplayData.h" #include "../model/AnimationConfig.h" #include "../model/AnimationData.h" @@ -216,7 +216,7 @@ void Animation::reset() _lastAnimationState = nullptr; } -void Animation::stop(const std::string& animationName) +void Animation::stop(std::string_view animationName) { if (!animationName.empty()) { @@ -384,7 +384,7 @@ AnimationState* Animation::playConfig(AnimationConfig* animationConfig) return animationState; } -AnimationState* Animation::play(const std::string& animationName, int playTimes) +AnimationState* Animation::play(std::string_view animationName, int playTimes) { _animationConfig->clear(); _animationConfig->resetToPose = true; @@ -418,18 +418,18 @@ AnimationState* Animation::play(const std::string& animationName, int playTimes) return _lastAnimationState; } #ifdef EGRET_WASM -AnimationState* Animation::fadeIn(const std::string& animationName, +AnimationState* Animation::fadeIn(std::string_view animationName, float fadeInTime, int playTimes, int layer, - const std::string& group, + std::string_view group, int fadeOutMode /*AnimationFadeOutMode*/ #else -AnimationState* Animation::fadeIn(const std::string& animationName, +AnimationState* Animation::fadeIn(std::string_view animationName, float fadeInTime, int playTimes, int layer, - const std::string& group, + std::string_view group, AnimationFadeOutMode fadeOutMode #endif // EGRET_WASM ) @@ -445,7 +445,7 @@ AnimationState* Animation::fadeIn(const std::string& animationName, return playConfig(_animationConfig); } -AnimationState* Animation::gotoAndPlayByTime(const std::string& animationName, float time, int playTimes) +AnimationState* Animation::gotoAndPlayByTime(std::string_view animationName, float time, int playTimes) { _animationConfig->clear(); _animationConfig->resetToPose = true; @@ -457,7 +457,7 @@ AnimationState* Animation::gotoAndPlayByTime(const std::string& animationName, f return playConfig(_animationConfig); } -AnimationState* Animation::gotoAndPlayByFrame(const std::string& animationName, unsigned frame, int playTimes) +AnimationState* Animation::gotoAndPlayByFrame(std::string_view animationName, unsigned frame, int playTimes) { _animationConfig->clear(); _animationConfig->resetToPose = true; @@ -474,7 +474,7 @@ AnimationState* Animation::gotoAndPlayByFrame(const std::string& animationName, return playConfig(_animationConfig); } -AnimationState* Animation::gotoAndPlayByProgress(const std::string& animationName, float progress, int playTimes) +AnimationState* Animation::gotoAndPlayByProgress(std::string_view animationName, float progress, int playTimes) { _animationConfig->clear(); _animationConfig->resetToPose = true; @@ -491,7 +491,7 @@ AnimationState* Animation::gotoAndPlayByProgress(const std::string& animationNam return playConfig(_animationConfig); } -AnimationState* Animation::gotoAndStopByTime(const std::string& animationName, float time) +AnimationState* Animation::gotoAndStopByTime(std::string_view animationName, float time) { const auto animationState = gotoAndPlayByTime(animationName, time, 1); if (animationState != nullptr) @@ -502,7 +502,7 @@ AnimationState* Animation::gotoAndStopByTime(const std::string& animationName, f return animationState; } -AnimationState* Animation::gotoAndStopByFrame(const std::string& animationName, unsigned frame) +AnimationState* Animation::gotoAndStopByFrame(std::string_view animationName, unsigned frame) { const auto animationState = gotoAndPlayByFrame(animationName, frame, 1); if (animationState != nullptr) @@ -513,7 +513,7 @@ AnimationState* Animation::gotoAndStopByFrame(const std::string& animationName, return animationState; } -AnimationState* Animation::gotoAndStopByProgress(const std::string& animationName, float progress) +AnimationState* Animation::gotoAndStopByProgress(std::string_view animationName, float progress) { const auto animationState = gotoAndPlayByProgress(animationName, progress, 1); if (animationState != nullptr) @@ -524,7 +524,7 @@ AnimationState* Animation::gotoAndStopByProgress(const std::string& animationNam return animationState; } -AnimationState* Animation::getState(const std::string& animationName) const +AnimationState* Animation::getState(std::string_view animationName) const { int i = _animationStates.size(); while (i--) @@ -539,7 +539,7 @@ AnimationState* Animation::getState(const std::string& animationName) const return nullptr; } -bool Animation::hasAnimation(const std::string& animationName) const +bool Animation::hasAnimation(std::string_view animationName) const { return _animations.find(animationName) != _animations.end(); } @@ -570,7 +570,7 @@ bool Animation::isCompleted() const return !_animationStates.empty(); } -const std::string& Animation::getLastAnimationName() const +std::string_view Animation::getLastAnimationName() const { if (_lastAnimationState != nullptr) { diff --git a/extensions/DragonBones/animation/Animation.h b/extensions/DragonBones/animation/Animation.h index 33927b75ab66..e5e2d74fa97d 100644 --- a/extensions/DragonBones/animation/Animation.h +++ b/extensions/DragonBones/animation/Animation.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -115,7 +115,7 @@ class Animation final : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - void stop(const std::string& animationName); + void stop(std::string_view animationName); /** * - Play animation with a specific animation config. * The API is still in the experimental phase and may encounter bugs or stability or compatibility issues when used. @@ -166,7 +166,7 @@ class Animation final : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - AnimationState* play(const std::string& animationName = "", int playTimes = -1); + AnimationState* play(std::string_view animationName = "", int playTimes = -1); /** * - Fade in a specific animation. * @param animationName - The name of animation data. @@ -211,11 +211,11 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* fadeIn(const std::string& animationName, + AnimationState* fadeIn(std::string_view animationName, float fadeInTime = -1.f, int playTimes = -1, int layer = 0, - const std::string& group = "", + std::string_view group = "", AnimationFadeOutMode fadeOutMode = AnimationFadeOutMode::SameLayerAndGroup); /** * - Play a specific animation from the specific time. @@ -236,7 +236,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndPlayByTime(const std::string& animationName, float time = 0.f, int playTimes = -1); + AnimationState* gotoAndPlayByTime(std::string_view animationName, float time = 0.f, int playTimes = -1); /** * - Play a specific animation from the specific frame. * @param animationName - The name of animation data. @@ -256,7 +256,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndPlayByFrame(const std::string& animationName, unsigned frame = 0, int playTimes = -1); + AnimationState* gotoAndPlayByFrame(std::string_view animationName, unsigned frame = 0, int playTimes = -1); /** * - Play a specific animation from the specific progress. * @param animationName - The name of animation data. @@ -276,7 +276,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndPlayByProgress(const std::string& animationName, float progress = 0.f, int playTimes = -1); + AnimationState* gotoAndPlayByProgress(std::string_view animationName, float progress = 0.f, int playTimes = -1); /** * - Stop a specific animation at the specific time. * @param animationName - The name of animation data. @@ -293,7 +293,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndStopByTime(const std::string& animationName, float time = 0.f); + AnimationState* gotoAndStopByTime(std::string_view animationName, float time = 0.f); /** * - Stop a specific animation at the specific frame. * @param animationName - The name of animation data. @@ -310,7 +310,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndStopByFrame(const std::string& animationName, unsigned frame = 0); + AnimationState* gotoAndStopByFrame(std::string_view animationName, unsigned frame = 0); /** * - Stop a specific animation at the specific progress. * @param animationName - The name of animation data. @@ -327,7 +327,7 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - AnimationState* gotoAndStopByProgress(const std::string& animationName, float progress = 0.f); + AnimationState* gotoAndStopByProgress(std::string_view animationName, float progress = 0.f); /** * - Get a specific animation state. * @param animationName - The name of animation state. @@ -354,7 +354,7 @@ class Animation final : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - AnimationState* getState(const std::string& animationName) const; + AnimationState* getState(std::string_view animationName) const; /** * - Check whether a specific animation data is included. * @param animationName - The name of animation data. @@ -369,7 +369,7 @@ class Animation final : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - bool hasAnimation(const std::string& animationName) const; + bool hasAnimation(std::string_view animationName) const; /** * - Get all the animation states. * @version DragonBones 5.1 @@ -419,7 +419,7 @@ class Animation final : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - const std::string& getLastAnimationName() const; + std::string_view getLastAnimationName() const; /** * - The name of all animation data * @version DragonBones 4.5 diff --git a/extensions/DragonBones/animation/AnimationState.cpp b/extensions/DragonBones/animation/AnimationState.cpp index 48274df1946b..2e9503f9a6ff 100644 --- a/extensions/DragonBones/animation/AnimationState.cpp +++ b/extensions/DragonBones/animation/AnimationState.cpp @@ -1,4 +1,4 @@ -#include "AnimationState.h" +#include "AnimationState.h" #include "WorldClock.h" #include "../model/DisplayData.h" #include "../model/AnimationConfig.h" @@ -745,12 +745,12 @@ void AnimationState::fadeOut(float fadeOutTime, bool pausePlayhead) _fadeTime = fadeTotalTime * (1.0f - _fadeProgress); } -bool AnimationState::containsBoneMask(const std::string& boneName) const +bool AnimationState::containsBoneMask(std::string_view boneName) const { return _boneMask.empty() || std::find(_boneMask.cbegin(), _boneMask.cend(), boneName) != _boneMask.cend(); } -void AnimationState::addBoneMask(const std::string& boneName, bool recursive) +void AnimationState::addBoneMask(std::string_view boneName, bool recursive) { const auto currentBone = _armature->getBone(boneName); if (currentBone == nullptr) @@ -778,7 +778,7 @@ void AnimationState::addBoneMask(const std::string& boneName, bool recursive) _timelineDirty = 1; } -void AnimationState::removeBoneMask(const std::string& boneName, bool recursive) +void AnimationState::removeBoneMask(std::string_view boneName, bool recursive) { { auto iterator = std::find(_boneMask.begin(), _boneMask.end(), boneName); diff --git a/extensions/DragonBones/animation/AnimationState.h b/extensions/DragonBones/animation/AnimationState.h index a99da36f0e58..8536ad257775 100644 --- a/extensions/DragonBones/animation/AnimationState.h +++ b/extensions/DragonBones/animation/AnimationState.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -325,7 +325,7 @@ class AnimationState : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - bool containsBoneMask(const std::string& boneName) const; + bool containsBoneMask(std::string_view boneName) const; /** * - Add a specific bone mask. * @param boneName - The bone name. @@ -340,7 +340,7 @@ class AnimationState : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - void addBoneMask(const std::string& boneName, bool recursive = true); + void addBoneMask(std::string_view boneName, bool recursive = true); /** * - Remove the mask of a specific bone. * @param boneName - The bone name. @@ -355,7 +355,7 @@ class AnimationState : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - void removeBoneMask(const std::string& boneName, bool recursive = true); + void removeBoneMask(std::string_view boneName, bool recursive = true); /** * - Remove all bone masks. * @version DragonBones 3.0 @@ -456,7 +456,7 @@ class AnimationState : public BaseObject */ float getCurrentTime() const; void setCurrentTime(float value); - inline const std::string& getName() const { return name; } + inline std::string_view getName() const { return name; } /** * - The animation data. diff --git a/extensions/DragonBones/armature/Armature.cpp b/extensions/DragonBones/armature/Armature.cpp index 7e6cc57b9544..e4aabc2763d0 100644 --- a/extensions/DragonBones/armature/Armature.cpp +++ b/extensions/DragonBones/armature/Armature.cpp @@ -1,4 +1,4 @@ -#include "Armature.h" +#include "Armature.h" #include "../model/TextureAtlasData.h" #include "../model/UserData.h" #include "../animation/WorldClock.h" @@ -275,7 +275,7 @@ void Armature::advanceTime(float passedTime) _proxy->dbUpdate(); } -void Armature::invalidUpdate(const std::string& boneName, bool updateSlot) +void Armature::invalidUpdate(std::string_view boneName, bool updateSlot) { if (!boneName.empty()) { @@ -431,7 +431,7 @@ Slot* Armature::intersectsSegment(float xA, return intSlotA; } -Bone* Armature::getBone(const std::string& name) const +Bone* Armature::getBone(std::string_view name) const { for (const auto& bone : _bones) { @@ -451,7 +451,7 @@ Bone* Armature::getBoneByDisplay(void* display) const return slot != nullptr ? slot->getParent() : nullptr; } -Slot* Armature::getSlot(const std::string& name) const +Slot* Armature::getSlot(std::string_view name) const { for (const auto slot : _slots) { diff --git a/extensions/DragonBones/armature/Armature.h b/extensions/DragonBones/armature/Armature.h index 6f6f5f7bbecb..c78d0fe9a232 100644 --- a/extensions/DragonBones/armature/Armature.h +++ b/extensions/DragonBones/armature/Armature.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -201,7 +201,7 @@ class Armature : public virtual IAnimatable, public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - void invalidUpdate(const std::string& boneName = "", bool updateSlot = false); + void invalidUpdate(std::string_view boneName = "", bool updateSlot = false); /** * - Check whether a specific point is inside a custom bounding box in a slot. * The coordinate system of the point is the inner coordinate system of the armature. @@ -278,7 +278,7 @@ class Armature : public virtual IAnimatable, public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - Bone* getBone(const std::string& name) const; + Bone* getBone(std::string_view name) const; /** * - Get a specific bone by the display. * @param display - The display object. @@ -308,7 +308,7 @@ class Armature : public virtual IAnimatable, public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - Slot* getSlot(const std::string& name) const; + Slot* getSlot(std::string_view name) const; /** * - Get a specific slot by the display. * @param display - The display object. @@ -426,7 +426,7 @@ class Armature : public virtual IAnimatable, public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline const std::string& getName() const { return _armatureData->name; } + inline std::string_view getName() const { return _armatureData->name; } /** * - The armature data. * @see dragonBones.ArmatureData diff --git a/extensions/DragonBones/armature/Bone.h b/extensions/DragonBones/armature/Bone.h index cba7c2d65068..3541143b0b58 100644 --- a/extensions/DragonBones/armature/Bone.h +++ b/extensions/DragonBones/armature/Bone.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -198,7 +198,7 @@ class Bone final : public TransformObject * @version DragonBones 3.0 * @language zh_CN */ - inline const std::string& getName() const { return _boneData->name; } + inline std::string_view getName() const { return _boneData->name; } /** * - The parent bone to which it belongs. * @version DragonBones 3.0 diff --git a/extensions/DragonBones/armature/Constraint.h b/extensions/DragonBones/armature/Constraint.h index 92ba6e9f5041..99d38b15ec14 100644 --- a/extensions/DragonBones/armature/Constraint.h +++ b/extensions/DragonBones/armature/Constraint.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -75,7 +75,7 @@ class Constraint : public BaseObject virtual void update() = 0; virtual void invalidUpdate() = 0; - inline const std::string& getName() { return _constraintData->name; } + inline std::string_view getName() { return _constraintData->name; } }; /** * @internal diff --git a/extensions/DragonBones/armature/Slot.h b/extensions/DragonBones/armature/Slot.h index 234e2f79c687..6700737b08b9 100644 --- a/extensions/DragonBones/armature/Slot.h +++ b/extensions/DragonBones/armature/Slot.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -343,7 +343,7 @@ class Slot : public TransformObject * @version DragonBones 3.0 * @language zh_CN */ - inline const std::string& getName() const { return _slotData->name; } + inline std::string_view getName() const { return _slotData->name; } /** * - Contains a display list of display objects or child armatures. * @version DragonBones 3.0 diff --git a/extensions/DragonBones/core/DragonBones.h b/extensions/DragonBones/core/DragonBones.h index 9ddab3b97aaf..68d8d4abc67f 100644 --- a/extensions/DragonBones/core/DragonBones.h +++ b/extensions/DragonBones/core/DragonBones.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -360,14 +360,14 @@ inline int indexOf(const std::vector& vector, const T& value) } template -inline T* mapFind(const std::map& map, const std::string& key) +inline T* mapFind(const std::map& map, std::string_view key) { auto iterator = map.find(key); return (iterator != map.end()) ? iterator->second : nullptr; } template -inline T* mapFindB(std::map& map, const std::string& key) +inline T* mapFindB(std::map& map, std::string_view key) { auto iterator = map.find(key); return (iterator != map.end()) ? &iterator->second : nullptr; diff --git a/extensions/DragonBones/event/IEventDispatcher.h b/extensions/DragonBones/event/IEventDispatcher.h index ded91d92db61..26476941ee3a 100644 --- a/extensions/DragonBones/event/IEventDispatcher.h +++ b/extensions/DragonBones/event/IEventDispatcher.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -56,7 +56,7 @@ class IEventDispatcher * @version DragonBones 4.5 * @language zh_CN */ - virtual bool hasDBEventListener(const std::string& type) const = 0; + virtual bool hasDBEventListener(std::string_view type) const = 0; /** * - Dispatches an event into the event flow. * @param type - Event type. @@ -73,7 +73,7 @@ class IEventDispatcher * @version DragonBones 4.5 * @language zh_CN */ - virtual void dispatchDBEvent(const std::string& type, EventObject* value) = 0; + virtual void dispatchDBEvent(std::string_view type, EventObject* value) = 0; /** * - Add an event listener object so that the listener receives notification of an event. * @param type - Event type. @@ -90,7 +90,7 @@ class IEventDispatcher * @version DragonBones 4.5 * @language zh_CN */ - virtual void addDBEventListener(const std::string& type, const std::function& listener) = 0; + virtual void addDBEventListener(std::string_view type, const std::function& listener) = 0; /** * - Removes a listener from the object. * @param type - Event type. @@ -107,7 +107,7 @@ class IEventDispatcher * @version DragonBones 4.5 * @language zh_CN */ - virtual void removeDBEventListener(const std::string& type, const std::function& listener) = 0; + virtual void removeDBEventListener(std::string_view type, const std::function& listener) = 0; }; DRAGONBONES_NAMESPACE_END diff --git a/extensions/DragonBones/factory/BaseFactory.cpp b/extensions/DragonBones/factory/BaseFactory.cpp index c7eb5242e242..a3f5f623ca48 100644 --- a/extensions/DragonBones/factory/BaseFactory.cpp +++ b/extensions/DragonBones/factory/BaseFactory.cpp @@ -1,11 +1,11 @@ -#include "BaseFactory.h" +#include "BaseFactory.h" DRAGONBONES_NAMESPACE_BEGIN JSONDataParser BaseFactory::_jsonParser; BinaryDataParser BaseFactory::_binaryParser; -TextureData* BaseFactory::_getTextureData(const std::string& textureAtlasName, const std::string& textureName) const +TextureData* BaseFactory::_getTextureData(std::string_view textureAtlasName, std::string_view textureName) const { const auto iterator = _textureAtlasDataMap.find(textureAtlasName); if (iterator != _textureAtlasDataMap.end()) @@ -42,10 +42,10 @@ TextureData* BaseFactory::_getTextureData(const std::string& textureAtlasName, c } bool BaseFactory::_fillBuildArmaturePackage(BuildArmaturePackage& dataPackage, - const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& skinName, - const std::string& textureAtlasName) const + std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view skinName, + std::string_view textureAtlasName) const { std::string mapName = dragonBonesName; DragonBonesData* dragonBonesData = nullptr; @@ -309,7 +309,7 @@ std::pair BaseFactory::_getSlotDisplay(const BuildArmaturePa return display; } -DragonBonesData* BaseFactory::parseDragonBonesData(const char* rawData, const std::string& name, float scale) +DragonBonesData* BaseFactory::parseDragonBonesData(const char* rawData, std::string_view name, float scale) { DRAGONBONES_ASSERT(rawData != nullptr, ""); @@ -350,7 +350,7 @@ DragonBonesData* BaseFactory::parseDragonBonesData(const char* rawData, const st TextureAtlasData* BaseFactory::parseTextureAtlasData(const char* rawData, void* textureAtlas, - const std::string& name, + std::string_view name, float scale) { const auto textureAtlasData = _buildTextureAtlasData(nullptr, nullptr); @@ -361,7 +361,7 @@ TextureAtlasData* BaseFactory::parseTextureAtlasData(const char* rawData, return textureAtlasData; } -void BaseFactory::addDragonBonesData(DragonBonesData* data, const std::string& name) +void BaseFactory::addDragonBonesData(DragonBonesData* data, std::string_view name) { const auto& mapName = !name.empty() ? name : data->name; if (_dragonBonesDataMap.find(mapName) != _dragonBonesDataMap.cend()) @@ -378,7 +378,7 @@ void BaseFactory::addDragonBonesData(DragonBonesData* data, const std::string& n _dragonBonesDataMap[mapName] = data; } -void BaseFactory::removeDragonBonesData(const std::string& name, bool disposeData) +void BaseFactory::removeDragonBonesData(std::string_view name, bool disposeData) { const auto iterator = _dragonBonesDataMap.find(name); if (iterator != _dragonBonesDataMap.cend()) @@ -392,7 +392,7 @@ void BaseFactory::removeDragonBonesData(const std::string& name, bool disposeDat } } -void BaseFactory::addTextureAtlasData(TextureAtlasData* data, const std::string& name) +void BaseFactory::addTextureAtlasData(TextureAtlasData* data, std::string_view name) { const auto& mapName = !name.empty() ? name : data->name; auto& textureAtlasList = _textureAtlasDataMap[mapName]; @@ -402,7 +402,7 @@ void BaseFactory::addTextureAtlasData(TextureAtlasData* data, const std::string& } } -void BaseFactory::removeTextureAtlasData(const std::string& name, bool disposeData) +void BaseFactory::removeTextureAtlasData(std::string_view name, bool disposeData) { const auto iterator = _textureAtlasDataMap.find(name); if (iterator != _textureAtlasDataMap.end()) @@ -419,7 +419,7 @@ void BaseFactory::removeTextureAtlasData(const std::string& name, bool disposeDa } } -ArmatureData* BaseFactory::getArmatureData(const std::string& name, const std::string& dragonBonesName) const +ArmatureData* BaseFactory::getArmatureData(std::string_view name, std::string_view dragonBonesName) const { BuildArmaturePackage dataPackage; if (!_fillBuildArmaturePackage(dataPackage, dragonBonesName, name, "", "")) @@ -452,10 +452,10 @@ void BaseFactory::clear(bool disposeData) _textureAtlasDataMap.clear(); } -Armature* BaseFactory::buildArmature(const std::string& armatureName, - const std::string& dragonBonesName, - const std::string& skinName, - const std::string& textureAtlasName) const +Armature* BaseFactory::buildArmature(std::string_view armatureName, + std::string_view dragonBonesName, + std::string_view skinName, + std::string_view textureAtlasName) const { BuildArmaturePackage dataPackage; if (!_fillBuildArmaturePackage(dataPackage, dragonBonesName, armatureName, skinName, textureAtlasName)) @@ -512,10 +512,10 @@ void BaseFactory::replaceDisplay(Slot* slot, DisplayData* displayData, int displ slot->setDisplayList(displayList); } -bool BaseFactory::replaceSlotDisplay(const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& slotName, - const std::string& displayName, +bool BaseFactory::replaceSlotDisplay(std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view slotName, + std::string_view displayName, Slot* slot, int displayIndex) const { @@ -538,9 +538,9 @@ bool BaseFactory::replaceSlotDisplay(const std::string& dragonBonesName, return true; } -bool BaseFactory::replaceSlotDisplayList(const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& slotName, +bool BaseFactory::replaceSlotDisplayList(std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view slotName, Slot* slot) const { DRAGONBONES_ASSERT(slot, "Arguments error."); diff --git a/extensions/DragonBones/factory/BaseFactory.h b/extensions/DragonBones/factory/BaseFactory.h index 8d9329d57982..9142a316e287 100644 --- a/extensions/DragonBones/factory/BaseFactory.h +++ b/extensions/DragonBones/factory/BaseFactory.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -99,12 +99,12 @@ class BaseFactory protected: virtual inline bool _isSupportMesh() const { return true; } - virtual TextureData* _getTextureData(const std::string& textureAtlasName, const std::string& textureName) const; + virtual TextureData* _getTextureData(std::string_view textureAtlasName, std::string_view textureName) const; virtual bool _fillBuildArmaturePackage(BuildArmaturePackage& dataPackage, - const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& skinName, - const std::string& textureAtlasName) const; + std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view skinName, + std::string_view textureAtlasName) const; virtual void _buildBones(const BuildArmaturePackage& dataPackage, Armature* armature) const; /** * @private @@ -152,7 +152,7 @@ class BaseFactory * @language zh_CN */ virtual DragonBonesData* parseDragonBonesData(const char* rawData, - const std::string& name = "", + std::string_view name = "", float scale = 1.0f); /** * - Parse the raw texture atlas data and the texture atlas object to a TextureAtlasData instance and cache it to @@ -186,7 +186,7 @@ class BaseFactory */ virtual TextureAtlasData* parseTextureAtlasData(const char* rawData, void* textureAtlas, - const std::string& name = "", + std::string_view name = "", float scale = 1.0f); /** * - Get a specific DragonBonesData instance. @@ -210,7 +210,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - inline DragonBonesData* getDragonBonesData(const std::string& name) const + inline DragonBonesData* getDragonBonesData(std::string_view name) const { return mapFind(_dragonBonesDataMap, name); } @@ -237,7 +237,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual void addDragonBonesData(DragonBonesData* data, const std::string& name = ""); + virtual void addDragonBonesData(DragonBonesData* data, std::string_view name = ""); /** * - Remove a DragonBonesData instance. * @param name - The DragonBonesData instance cache name. @@ -260,7 +260,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual void removeDragonBonesData(const std::string& name, bool disposeData = true); + virtual void removeDragonBonesData(std::string_view name, bool disposeData = true); /** * - Get a list of specific TextureAtlasData instances. * @param name - The TextureAtlasData cahce name. @@ -281,7 +281,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - inline std::vector* getTextureAtlasData(const std::string& name) + inline std::vector* getTextureAtlasData(std::string_view name) { return mapFindB(_textureAtlasDataMap, name); } @@ -308,7 +308,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual void addTextureAtlasData(TextureAtlasData* data, const std::string& name = ""); + virtual void addTextureAtlasData(TextureAtlasData* data, std::string_view name = ""); /** * - Remove a TextureAtlasData instance. * @param name - The TextureAtlasData instance cache name. @@ -331,7 +331,7 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual void removeTextureAtlasData(const std::string& name, bool disposeData = true); + virtual void removeTextureAtlasData(std::string_view name, bool disposeData = true); /** * - Get a specific armature data. * @param name - The armature data name. @@ -348,7 +348,7 @@ class BaseFactory * @version DragonBones 5.1 * @language zh_CN */ - virtual ArmatureData* getArmatureData(const std::string& name, const std::string& dragonBonesName = "") const; + virtual ArmatureData* getArmatureData(std::string_view name, std::string_view dragonBonesName = "") const; /** * - Clear all cached DragonBonesData instances and TextureAtlasData instances. * @param disposeData - Whether to dispose data. @@ -403,10 +403,10 @@ class BaseFactory * @version DragonBones 3.0 * @language zh_CN */ - virtual Armature* buildArmature(const std::string& armatureName, - const std::string& dragonBonesName = "", - const std::string& skinName = "", - const std::string& textureAtlasName = "") const; + virtual Armature* buildArmature(std::string_view armatureName, + std::string_view dragonBonesName = "", + std::string_view skinName = "", + std::string_view textureAtlasName = "") const; /** * @private */ @@ -448,18 +448,18 @@ class BaseFactory * @version DragonBones 4.5 * @language zh_CN */ - virtual bool replaceSlotDisplay(const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& slotName, - const std::string& displayName, + virtual bool replaceSlotDisplay(std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view slotName, + std::string_view displayName, Slot* slot, int displayIndex = -1) const; /** * @private */ - virtual bool replaceSlotDisplayList(const std::string& dragonBonesName, - const std::string& armatureName, - const std::string& slotName, + virtual bool replaceSlotDisplayList(std::string_view dragonBonesName, + std::string_view armatureName, + std::string_view slotName, Slot* slot) const; /** * - Share specific skin data with specific armature. diff --git a/extensions/DragonBones/model/AnimationConfig.cpp b/extensions/DragonBones/model/AnimationConfig.cpp index 26d198f630dd..6e012bc6bef4 100644 --- a/extensions/DragonBones/model/AnimationConfig.cpp +++ b/extensions/DragonBones/model/AnimationConfig.cpp @@ -1,4 +1,4 @@ -#include "AnimationConfig.h" +#include "AnimationConfig.h" #include "../armature/Armature.h" #include "../armature/Bone.h" @@ -63,12 +63,12 @@ void AnimationConfig::copyFrom(AnimationConfig* value) boneMask = value->boneMask; } -bool AnimationConfig::containsBoneMask(const std::string& boneName) const +bool AnimationConfig::containsBoneMask(std::string_view boneName) const { return boneMask.empty() || std::find(boneMask.cbegin(), boneMask.cend(), boneName) != boneMask.cend(); } -void AnimationConfig::addBoneMask(Armature* armature, const std::string& boneName, bool recursive) +void AnimationConfig::addBoneMask(Armature* armature, std::string_view boneName, bool recursive) { const auto currentBone = armature->getBone(boneName); if (currentBone == nullptr) @@ -94,7 +94,7 @@ void AnimationConfig::addBoneMask(Armature* armature, const std::string& boneNam } } -void AnimationConfig::removeBoneMask(Armature* armature, const std::string& boneName, bool recursive) +void AnimationConfig::removeBoneMask(Armature* armature, std::string_view boneName, bool recursive) { { auto iterator = std::find(boneMask.begin(), boneMask.end(), boneName); diff --git a/extensions/DragonBones/model/AnimationConfig.h b/extensions/DragonBones/model/AnimationConfig.h index c53fe730c14a..dd90b4e7c817 100644 --- a/extensions/DragonBones/model/AnimationConfig.h +++ b/extensions/DragonBones/model/AnimationConfig.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -296,15 +296,15 @@ class AnimationConfig : public BaseObject /** * @private */ - bool containsBoneMask(const std::string& boneName) const; + bool containsBoneMask(std::string_view boneName) const; /** * @private */ - void addBoneMask(Armature* armature, const std::string& boneName, bool recursive); + void addBoneMask(Armature* armature, std::string_view boneName, bool recursive); /** * @private */ - void removeBoneMask(Armature* armature, const std::string& boneName, bool recursive); + void removeBoneMask(Armature* armature, std::string_view boneName, bool recursive); public: // For WebAssembly. int getFadeOutMode() const { return (int)fadeOutMode; } diff --git a/extensions/DragonBones/model/AnimationData.h b/extensions/DragonBones/model/AnimationData.h index 8d7a37708ea4..9a4879c068ce 100644 --- a/extensions/DragonBones/model/AnimationData.h +++ b/extensions/DragonBones/model/AnimationData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -181,35 +181,35 @@ class AnimationData : public BaseObject /** * @private */ - std::vector* getBoneTimelines(const std::string& timelineName) + std::vector* getBoneTimelines(std::string_view timelineName) { return mapFindB(boneTimelines, timelineName); } /** * @private */ - inline std::vector* getSlotTimelines(const std::string& timelineName) + inline std::vector* getSlotTimelines(std::string_view timelineName) { return mapFindB(slotTimelines, timelineName); } /** * @private */ - inline std::vector* getConstraintTimelines(const std::string& timelineName) + inline std::vector* getConstraintTimelines(std::string_view timelineName) { return mapFindB(constraintTimelines, timelineName); } /** * @private */ - inline std::vector* getBoneCachedFrameIndices(const std::string& boneName) + inline std::vector* getBoneCachedFrameIndices(std::string_view boneName) { return mapFindB(boneCachedFrameIndices, boneName); } /** * @private */ - inline std::vector* getSlotCachedFrameIndices(const std::string& slotName) + inline std::vector* getSlotCachedFrameIndices(std::string_view slotName) { return mapFindB(slotCachedFrameIndices, slotName); } diff --git a/extensions/DragonBones/model/ArmatureData.cpp b/extensions/DragonBones/model/ArmatureData.cpp index 9cc86af721c4..66f9dfca75d5 100644 --- a/extensions/DragonBones/model/ArmatureData.cpp +++ b/extensions/DragonBones/model/ArmatureData.cpp @@ -1,4 +1,4 @@ -#include "ArmatureData.h" +#include "ArmatureData.h" #include "UserData.h" #include "DragonBonesData.h" #include "ConstraintData.h" @@ -264,9 +264,9 @@ void ArmatureData::addAction(ActionData* value, bool isDefault) } } -MeshDisplayData* ArmatureData::getMesh(const std::string& skinName, - const std::string& slotName, - const std::string& meshName) const +MeshDisplayData* ArmatureData::getMesh(std::string_view skinName, + std::string_view slotName, + std::string_view meshName) const { const auto skin = getSkin(skinName); if (skin == nullptr) diff --git a/extensions/DragonBones/model/ArmatureData.h b/extensions/DragonBones/model/ArmatureData.h index 838df4adb7b8..d8f24547d012 100644 --- a/extensions/DragonBones/model/ArmatureData.h +++ b/extensions/DragonBones/model/ArmatureData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -223,7 +223,7 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline BoneData* getBone(const std::string& boneName) const { return mapFind(bones, boneName); } + inline BoneData* getBone(std::string_view boneName) const { return mapFind(bones, boneName); } /** * - Get a specific slot data. * @param slotName - The slot name. @@ -236,11 +236,11 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline SlotData* getSlot(const std::string& slotName) const { return mapFind(slots, slotName); } + inline SlotData* getSlot(std::string_view slotName) const { return mapFind(slots, slotName); } /** * @private */ - inline ConstraintData* getConstraint(const std::string& constraintName) const + inline ConstraintData* getConstraint(std::string_view constraintName) const { return mapFind(constraints, constraintName); } @@ -256,13 +256,13 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline SkinData* getSkin(const std::string& skinName) const { return mapFind(skins, skinName); } + inline SkinData* getSkin(std::string_view skinName) const { return mapFind(skins, skinName); } /** * @private */ - MeshDisplayData* getMesh(const std::string& skinName, - const std::string& slotName, - const std::string& meshName) const; + MeshDisplayData* getMesh(std::string_view skinName, + std::string_view slotName, + std::string_view meshName) const; /** * - Get a specific animation data. * @param animationName - The animation animationName. @@ -275,7 +275,7 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline AnimationData* getAnimation(const std::string& animationName) const + inline AnimationData* getAnimation(std::string_view animationName) const { return mapFind(animations, animationName); } diff --git a/extensions/DragonBones/model/DragonBonesData.h b/extensions/DragonBones/model/DragonBonesData.h index eef82b2b87e2..982f75c66d06 100644 --- a/extensions/DragonBones/model/DragonBonesData.h +++ b/extensions/DragonBones/model/DragonBonesData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -158,7 +158,7 @@ class DragonBonesData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline ArmatureData* getArmature(const std::string& armatureName) const + inline ArmatureData* getArmature(std::string_view armatureName) const { return mapFind(armatures, armatureName); } diff --git a/extensions/DragonBones/model/SkinData.cpp b/extensions/DragonBones/model/SkinData.cpp index 7e6fe2501152..7f53de7acfe2 100644 --- a/extensions/DragonBones/model/SkinData.cpp +++ b/extensions/DragonBones/model/SkinData.cpp @@ -1,4 +1,4 @@ -#include "SkinData.h" +#include "SkinData.h" #include "DisplayData.h" DRAGONBONES_NAMESPACE_BEGIN @@ -21,7 +21,7 @@ void SkinData::_onClear() parent = nullptr; } -void SkinData::addDisplay(const std::string& slotName, DisplayData* value) +void SkinData::addDisplay(std::string_view slotName, DisplayData* value) { if (value != nullptr) { @@ -31,7 +31,7 @@ void SkinData::addDisplay(const std::string& slotName, DisplayData* value) displays[slotName].push_back(value); // TODO clear prev } -DisplayData* SkinData::getDisplay(const std::string& slotName, const std::string& displayName) +DisplayData* SkinData::getDisplay(std::string_view slotName, std::string_view displayName) { const auto slotDisplays = getDisplays(slotName); if (slotDisplays != nullptr) diff --git a/extensions/DragonBones/model/SkinData.h b/extensions/DragonBones/model/SkinData.h index e054e9f96c35..7228dfd8fdbb 100644 --- a/extensions/DragonBones/model/SkinData.h +++ b/extensions/DragonBones/model/SkinData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -24,6 +24,7 @@ #define DRAGONBONES_SKIN_DATA_H #include "../core/BaseObject.h" +#include "base/hlookup.h" DRAGONBONES_NAMESPACE_BEGIN /** @@ -55,7 +56,7 @@ class SkinData : public BaseObject /** * @private */ - std::map> displays; + hlookup::string_map> displays; /** * @private */ @@ -68,15 +69,15 @@ class SkinData : public BaseObject /** * @internal */ - void addDisplay(const std::string& slotName, DisplayData* value); + void addDisplay(std::string_view slotName, DisplayData* value); /** * @private */ - DisplayData* getDisplay(const std::string& slotName, const std::string& displayName); + DisplayData* getDisplay(std::string_view slotName, std::string_view displayName); /** * @private */ - std::vector* getDisplays(const std::string& slotName) { return mapFindB(displays, slotName); } + std::vector* getDisplays(std::string_view slotName) { return mapFindB(displays, slotName); } public: // For WebAssembly. TODO parent const std::map>& getSlotDisplays() const { return displays; } diff --git a/extensions/DragonBones/model/TextureAtlasData.h b/extensions/DragonBones/model/TextureAtlasData.h index ad5bcb504b49..b10d5eeaf6f2 100644 --- a/extensions/DragonBones/model/TextureAtlasData.h +++ b/extensions/DragonBones/model/TextureAtlasData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -100,7 +100,7 @@ class TextureAtlasData : public BaseObject /** * @private */ - inline TextureData* getTexture(const std::string& textureName) const { return mapFind(textures, textureName); } + inline TextureData* getTexture(std::string_view textureName) const { return mapFind(textures, textureName); } protected: virtual void _onClear() override; diff --git a/extensions/DragonBones/parser/DataParser.cpp b/extensions/DragonBones/parser/DataParser.cpp index 684d192e257d..699628894ef8 100644 --- a/extensions/DragonBones/parser/DataParser.cpp +++ b/extensions/DragonBones/parser/DataParser.cpp @@ -1,4 +1,4 @@ -#include "DataParser.h" +#include "DataParser.h" DRAGONBONES_NAMESPACE_BEGIN @@ -125,7 +125,7 @@ const char* DataParser::GOTO_AND_PLAY = "gotoAndPlay"; const char* DataParser::DEFAULT_NAME = "default"; -TextureFormat DataParser::_getTextureFormat(const std::string& value) +TextureFormat DataParser::_getTextureFormat(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); @@ -158,7 +158,7 @@ TextureFormat DataParser::_getTextureFormat(const std::string& value) return TextureFormat::DEFAULT; } -ArmatureType DataParser::_getArmatureType(const std::string& value) +ArmatureType DataParser::_getArmatureType(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); @@ -179,7 +179,7 @@ ArmatureType DataParser::_getArmatureType(const std::string& value) return ArmatureType::Armature; } -DisplayType DataParser::_getDisplayType(const std::string& value) +DisplayType DataParser::_getDisplayType(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); @@ -204,7 +204,7 @@ DisplayType DataParser::_getDisplayType(const std::string& value) return DisplayType::Image; } -BoundingBoxType DataParser::_getBoundingBoxType(const std::string& value) +BoundingBoxType DataParser::_getBoundingBoxType(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); @@ -225,7 +225,7 @@ BoundingBoxType DataParser::_getBoundingBoxType(const std::string& value) return BoundingBoxType::Rectangle; } -ActionType DataParser::_getActionType(const std::string& value) +ActionType DataParser::_getActionType(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); @@ -246,7 +246,7 @@ ActionType DataParser::_getActionType(const std::string& value) return ActionType::Play; } -BlendMode DataParser::_getBlendMode(const std::string& value) +BlendMode DataParser::_getBlendMode(std::string_view value) { auto lower = value; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); diff --git a/extensions/DragonBones/parser/DataParser.h b/extensions/DragonBones/parser/DataParser.h index 08328ccd5fca..ccad44049d8a 100644 --- a/extensions/DragonBones/parser/DataParser.h +++ b/extensions/DragonBones/parser/DataParser.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -166,12 +166,12 @@ class DataParser static const char* DEFAULT_NAME; - static TextureFormat _getTextureFormat(const std::string& value); - static ArmatureType _getArmatureType(const std::string& value); - static DisplayType _getDisplayType(const std::string& value); - static BoundingBoxType _getBoundingBoxType(const std::string& value); - static ActionType _getActionType(const std::string& value); - static BlendMode _getBlendMode(const std::string& value); + static TextureFormat _getTextureFormat(std::string_view value); + static ArmatureType _getArmatureType(std::string_view value); + static DisplayType _getDisplayType(std::string_view value); + static BoundingBoxType _getBoundingBoxType(std::string_view value); + static ActionType _getActionType(std::string_view value); + static BlendMode _getBlendMode(std::string_view value); public: virtual DragonBonesData* parseDragonBonesData(const char* rawData, float scale = 1.0f) = 0; diff --git a/extensions/DragonBones/parser/JSONDataParser.h b/extensions/DragonBones/parser/JSONDataParser.h index afa6e045d4c6..a80b510c37b9 100644 --- a/extensions/DragonBones/parser/JSONDataParser.h +++ b/extensions/DragonBones/parser/JSONDataParser.h @@ -1,4 +1,4 @@ -#ifndef DRAGONBONES_JSON_DATA_PARSER_H +#ifndef DRAGONBONES_JSON_DATA_PARSER_H #define DRAGONBONES_JSON_DATA_PARSER_H #include "DataParser.h" @@ -81,7 +81,7 @@ class JSONDataParser : public DataParser inline static std::string _getString(const rapidjson::Value& rawData, const char* key, - const std::string& defaultValue) + std::string_view defaultValue) { if (rawData.HasMember(key)) { @@ -118,7 +118,7 @@ class JSONDataParser : public DataParser inline static std::string _getParameter(const rapidjson::Value& rawData, std::size_t index, - const std::string& defaultValue) + std::string_view defaultValue) { if (rawData.Size() > index) { diff --git a/extensions/GUI/CCControlExtension/CCControlButton.cpp b/extensions/GUI/CCControlExtension/CCControlButton.cpp index ba95b0ed8e91..1d9ea36046a7 100644 --- a/extensions/GUI/CCControlExtension/CCControlButton.cpp +++ b/extensions/GUI/CCControlExtension/CCControlButton.cpp @@ -141,15 +141,15 @@ ControlButton* ControlButton::create(Node* label, return pRet; } -bool ControlButton::initWithTitleAndFontNameAndFontSize(const std::string& title, - const std::string& fontName, +bool ControlButton::initWithTitleAndFontNameAndFontSize(std::string_view title, + std::string_view fontName, float fontSize) { return initWithLabelAndBackgroundSprite(Label::createWithSystemFont(title, fontName, fontSize), cocos2d::ui::Scale9Sprite::create(), true); } -ControlButton* ControlButton::create(const std::string& title, const std::string& fontName, float fontSize) +ControlButton* ControlButton::create(std::string_view title, std::string_view fontName, float fontSize) { ControlButton* pRet = new ControlButton(); pRet->initWithTitleAndFontNameAndFontSize(title, fontName, fontSize); @@ -291,7 +291,7 @@ std::string ControlButton::getTitleForState(State state) return iter != _titleDispatchTable.end() ? iter->second : ""; } -void ControlButton::setTitleForState(const std::string& title, State state) +void ControlButton::setTitleForState(std::string_view title, State state) { _titleDispatchTable.erase((int)state); @@ -371,12 +371,12 @@ void ControlButton::setTitleLabelForState(Node* titleLabel, State state) } } -void ControlButton::setTitleTTFForState(const std::string& fontName, State state) +void ControlButton::setTitleTTFForState(std::string_view fontName, State state) { this->setTitleLabelForState(Label::createWithSystemFont(getTitleForState(state), fontName, 12), state); } -const std::string& ControlButton::getTitleTTFForState(State state) +std::string_view ControlButton::getTitleTTFForState(State state) { LabelProtocol* label = dynamic_cast(this->getTitleLabelForState(state)); Label* labelTTF = dynamic_cast(label); @@ -416,13 +416,13 @@ float ControlButton::getTitleTTFSizeForState(State state) } } -void ControlButton::setTitleBMFontForState(const std::string& fntFile, State state) +void ControlButton::setTitleBMFontForState(std::string_view fntFile, State state) { std::string title = this->getTitleForState(state); this->setTitleLabelForState(Label::createWithBMFont(fntFile, title), state); } -const std::string& ControlButton::getTitleBMFontForState(State state) +std::string_view ControlButton::getTitleBMFontForState(State state) { LabelProtocol* label = dynamic_cast(this->getTitleLabelForState(state)); auto labelBMFont = dynamic_cast(label); diff --git a/extensions/GUI/CCControlExtension/CCControlButton.h b/extensions/GUI/CCControlExtension/CCControlButton.h index 51a8fcac34db..c28624cc4e20 100644 --- a/extensions/GUI/CCControlExtension/CCControlButton.h +++ b/extensions/GUI/CCControlExtension/CCControlButton.h @@ -57,7 +57,7 @@ class CC_EX_DLL ControlButton : public Control static ControlButton* create(); static ControlButton* create(cocos2d::ui::Scale9Sprite* sprite); static ControlButton* create(Node* label, cocos2d::ui::Scale9Sprite* backgroundSprite); - static ControlButton* create(const std::string& title, const std::string& fontName, float fontSize); + static ControlButton* create(std::string_view title, std::string_view fontName, float fontSize); static ControlButton* create(Node* label, cocos2d::ui::Scale9Sprite* backgroundSprite, bool adjustBackGroundSize); virtual void needsLayout() override; @@ -87,7 +87,7 @@ class CC_EX_DLL ControlButton : public Control * @param state The state that uses the specified title. The values are described * in "CCControlState". */ - virtual void setTitleForState(const std::string& title, State state); + virtual void setTitleForState(std::string_view title, State state); /** * Returns the title color used for a state. @@ -128,8 +128,8 @@ class CC_EX_DLL ControlButton : public Control */ virtual void setTitleLabelForState(Node* label, State state); - virtual void setTitleTTFForState(const std::string& fntFile, State state); - virtual const std::string& getTitleTTFForState(State state); + virtual void setTitleTTFForState(std::string_view fntFile, State state); + virtual std::string_view getTitleTTFForState(State state); virtual void setTitleTTFSizeForState(float size, State state); virtual float getTitleTTFSizeForState(State state); @@ -140,8 +140,8 @@ class CC_EX_DLL ControlButton : public Control * @param state The state that uses the specified fntFile. The values are described * in "CCControlState". */ - virtual void setTitleBMFontForState(const std::string& fntFile, State state); - virtual const std::string& getTitleBMFontForState(State state); + virtual void setTitleBMFontForState(std::string_view fntFile, State state); + virtual std::string_view getTitleBMFontForState(State state); /** * Returns the background sprite used for a state. @@ -188,7 +188,7 @@ class CC_EX_DLL ControlButton : public Control virtual void setColor(const Color3B&) override; virtual void updateDisplayedColor(const Color3B& parentColor) override; - const std::string& getCurrentTitle() const { return _currentTitle; }; + std::string_view getCurrentTitle() const { return _currentTitle; }; std::string getCurrentTitle() { return _currentTitle; }; CC_CONSTRUCTOR_ACCESS : @@ -207,8 +207,8 @@ class CC_EX_DLL ControlButton : public Control cocos2d::ui::Scale9Sprite* backgroundSprite, bool adjustBackGroundSize); virtual bool initWithBackgroundSprite(cocos2d::ui::Scale9Sprite* sprite); - virtual bool initWithTitleAndFontNameAndFontSize(const std::string& title, - const std::string& fontName, + virtual bool initWithTitleAndFontNameAndFontSize(std::string_view title, + std::string_view fontName, float fontSize); protected: diff --git a/extensions/GUI/CCControlExtension/CCControlSwitch.cpp b/extensions/GUI/CCControlExtension/CCControlSwitch.cpp index 09d14b6e6a00..431b465a6c6f 100644 --- a/extensions/GUI/CCControlExtension/CCControlSwitch.cpp +++ b/extensions/GUI/CCControlExtension/CCControlSwitch.cpp @@ -78,7 +78,7 @@ class ControlSwitchSprite : public Sprite, public ActionTweenDelegate * @js NA * @lua NA */ - virtual void updateTweenAction(float value, const std::string& key) override; + virtual void updateTweenAction(float value, std::string_view key) override; /** Contains the position (in x-axis) of the slider inside the receiver. */ float _sliderXPosition; @@ -214,7 +214,7 @@ bool ControlSwitchSprite::initWithMaskSprite(Sprite* maskSprite, return false; } -void ControlSwitchSprite::updateTweenAction(float value, const std::string& key) +void ControlSwitchSprite::updateTweenAction(float value, std::string_view key) { CCLOGINFO("key = %s, value = %f", key.c_str(), value); setSliderXPosition(value); diff --git a/extensions/GUI/CCScrollView/CCScrollView.cpp b/extensions/GUI/CCScrollView/CCScrollView.cpp index 6bf9f47288ec..bfa2cf5e127e 100644 --- a/extensions/GUI/CCScrollView/CCScrollView.cpp +++ b/extensions/GUI/CCScrollView/CCScrollView.cpp @@ -327,7 +327,7 @@ void ScrollView::setZoomScaleInDuration(float s, float dt) } } -void ScrollView::updateTweenAction(float value, const std::string& /*key*/) +void ScrollView::updateTweenAction(float value, std::string_view /*key*/) { this->setZoomScale(value); } @@ -551,7 +551,7 @@ void ScrollView::removeAllChildren() removeAllChildrenWithCleanup(true); } -void ScrollView::addChild(Node* child, int zOrder, const std::string& name) +void ScrollView::addChild(Node* child, int zOrder, std::string_view name) { if (_container != child) { diff --git a/extensions/GUI/CCScrollView/CCScrollView.h b/extensions/GUI/CCScrollView/CCScrollView.h index 304f4cab750b..9aef265af42f 100644 --- a/extensions/GUI/CCScrollView/CCScrollView.h +++ b/extensions/GUI/CCScrollView/CCScrollView.h @@ -251,7 +251,7 @@ class CC_EX_DLL ScrollView : public Layer, public ActionTweenDelegate using Node::addChild; virtual void addChild(Node* child, int zOrder, int tag) override; - virtual void addChild(Node* child, int zOrder, const std::string& name) override; + virtual void addChild(Node* child, int zOrder, std::string_view name) override; virtual void removeAllChildren() override; virtual void removeAllChildrenWithCleanup(bool cleanup) override; @@ -259,7 +259,7 @@ class CC_EX_DLL ScrollView : public Layer, public ActionTweenDelegate /** * CCActionTweenDelegate */ - void updateTweenAction(float value, const std::string& key) override; + void updateTweenAction(float value, std::string_view key) override; bool hasVisibleParents() const; diff --git a/extensions/ImGuiEXT/CCImGuiEXT.cpp b/extensions/ImGuiEXT/CCImGuiEXT.cpp index b3b801a33e65..000806050e14 100644 --- a/extensions/ImGuiEXT/CCImGuiEXT.cpp +++ b/extensions/ImGuiEXT/CCImGuiEXT.cpp @@ -5,12 +5,12 @@ NS_CC_EXT_BEGIN -static uint32_t fourccValue(const std::string& str) +static uint32_t fourccValue(std::string_view str) { if (str.empty() || str[0] != '#') return (uint32_t)-1; uint32_t value = 0; - memcpy(&value, str.c_str() + 1, std::min(sizeof(value), str.size() - 1)); + memcpy(&value, str.data() + 1, std::min(sizeof(value), str.size() - 1)); return value; } @@ -246,7 +246,7 @@ float ImGuiEXT::scaleAllByDPI(float userScale) return zoomFactor; } -void ImGuiEXT::addFont(const std::string& fontFile, float fontSize, CHS_GLYPH_RANGE glyphRange) +void ImGuiEXT::addFont(std::string_view fontFile, float fontSize, CHS_GLYPH_RANGE glyphRange) { if (FileUtils::getInstance()->isFileExistInternal(fontFile)) { @@ -255,7 +255,7 @@ void ImGuiEXT::addFont(const std::string& fontFile, float fontSize, CHS_GLYPH_RA } } -void ImGuiEXT::removeFont(const std::string& fontFile) +void ImGuiEXT::removeFont(std::string_view fontFile) { auto count = _fontsInfoMap.size(); _fontsInfoMap.erase(fontFile); @@ -339,7 +339,7 @@ void ImGuiEXT::update() // commands will be processed after update } -bool ImGuiEXT::addRenderLoop(const std::string& id, std::function func, Scene* target) +bool ImGuiEXT::addRenderLoop(std::string_view id, std::function func, Scene* target) { // TODO: check whether exist auto fourccId = fourccValue(id); @@ -362,7 +362,7 @@ bool ImGuiEXT::addRenderLoop(const std::string& id, std::function func, return false; } -void ImGuiEXT::removeRenderLoop(const std::string& id) +void ImGuiEXT::removeRenderLoop(std::string_view id) { auto fourccId = fourccValue(id); const auto iter = _renderPiplines.find(fourccId); @@ -603,16 +603,16 @@ void ImGuiEXT::setLabelColor(Label* label, ImGuiCol col) setLabelColor(label, ImGui::GetStyleColorVec4(col)); } -ImWchar* ImGuiEXT::addGlyphRanges(const std::string& key, const std::vector& ranges) +ImWchar* ImGuiEXT::addGlyphRanges(std::string_view key, const std::vector& ranges) { auto it = glyphRanges.find(key); // the pointer must be persistant, do not replace if (it != glyphRanges.end()) return it->second.data(); - glyphRanges[key] = ranges; + it = glyphRanges.emplace(key, ranges).first; // glyphRanges[key] = ranges; if (ranges.empty()) - glyphRanges[key].push_back(0); - return glyphRanges[key].data(); + it->second.push_back(0); + return it->second.data(); } void ImGuiEXT::mergeFontGlyphs(ImFont* dst, ImFont* src, ImWchar start, ImWchar end) @@ -712,13 +712,13 @@ void ImGuiEXT::setMarkdownFont(int index, ImFont* font, bool seperator, float sc ImGuiMarkdownConfig.headingScales[index] = scale; } -void ImGuiEXT::setMarkdownLinkIcon(const std::string& icon) +void ImGuiEXT::setMarkdownLinkIcon(std::string_view icon) { ImGuiMarkdownLinkIcon = icon; ImGuiMarkdownConfig.linkIcon = ImGuiMarkdownLinkIcon.c_str(); } -void ImGuiEXT::markdown(const std::string& content) +void ImGuiEXT::markdown(std::string_view content) { ImGui::Markdown(content.c_str(), content.size(), ImGuiMarkdownConfig); } diff --git a/extensions/ImGuiEXT/CCImGuiEXT.h b/extensions/ImGuiEXT/CCImGuiEXT.h index 7c80b711c7f1..c03cddc0c241 100644 --- a/extensions/ImGuiEXT/CCImGuiEXT.h +++ b/extensions/ImGuiEXT/CCImGuiEXT.h @@ -50,10 +50,10 @@ class ImGuiEXT /// /// /// - void addFont(const std::string& fontFile, + void addFont(std::string_view fontFile, float fontSize = DEFAULT_FONT_SIZE, CHS_GLYPH_RANGE glyphRange = CHS_GLYPH_RANGE::NONE); - void removeFont(const std::string& fontFile); + void removeFont(std::string_view fontFile); void clearFonts(); /// @@ -62,13 +62,13 @@ class ImGuiEXT /// The FOURCC id of render loop, starts with '#', such as "#abcd" /// the ImGui render loop /// The target scene to track event, nullptr for global, useful for global GM tools - bool addRenderLoop(const std::string& id, std::function func, Scene* target); + bool addRenderLoop(std::string_view id, std::function func, Scene* target); /// /// Remove ImGui render loop /// /// FOURCC starts with '#', such as "#abcd" - void removeRenderLoop(const std::string& id); + void removeRenderLoop(std::string_view id); void end(); @@ -112,7 +112,7 @@ class ImGuiEXT static void setLabelColor(Label* label, bool disabled = false); static void setLabelColor(Label* label, ImGuiCol col); - ImWchar* addGlyphRanges(const std::string& key, const std::vector& ranges); + ImWchar* addGlyphRanges(std::string_view key, const std::vector& ranges); static void mergeFontGlyphs(ImFont* dst, ImFont* src, ImWchar start, ImWchar end); int getCCRefId(Ref* p); @@ -126,8 +126,8 @@ class ImGuiEXT void setMarkdownLinkCallback(const MdLinkCallback& f); void setMarkdownImageCallback(const MdImageCallback& f); void setMarkdownFont(int index, ImFont* font, bool seperator, float scale = 1.f); - void setMarkdownLinkIcon(const std::string& icon); - void markdown(const std::string& content); + void setMarkdownLinkIcon(std::string_view icon); + void markdown(std::string_view content); #endif private: @@ -154,7 +154,7 @@ class ImGuiEXT std::unordered_map usedCCRefIdMap; // cocos objects should be retained until next frame Vector usedCCRef; - std::unordered_map> glyphRanges; + hlookup::string_map> glyphRanges; float _contentZoomFactor = 1.0f; @@ -168,7 +168,7 @@ class ImGuiEXT CHS_GLYPH_RANGE glyphRange; }; - std::unordered_map _fontsInfoMap; + hlookup::string_map _fontsInfoMap; bool _purgeNextLoop = false; }; diff --git a/extensions/Particle3D/CCParticle3DRender.cpp b/extensions/Particle3D/CCParticle3DRender.cpp index 58b022430ec8..d2907930af07 100644 --- a/extensions/Particle3D/CCParticle3DRender.cpp +++ b/extensions/Particle3D/CCParticle3DRender.cpp @@ -51,7 +51,7 @@ Particle3DQuadRender::~Particle3DQuadRender() CC_SAFE_RELEASE(_indexBuffer); } -Particle3DQuadRender* Particle3DQuadRender::create(const std::string& texFile) +Particle3DQuadRender* Particle3DQuadRender::create(std::string_view texFile) { auto ret = new Particle3DQuadRender(); if (ret->initQuadRender(texFile)) @@ -185,7 +185,7 @@ void Particle3DQuadRender::render(Renderer* renderer, const Mat4& transform, Par renderer->addCommand(&_afterCommand); } -bool Particle3DQuadRender::initQuadRender(const std::string& texFile) +bool Particle3DQuadRender::initQuadRender(std::string_view texFile) { CC_SAFE_RELEASE_NULL(_programState); @@ -285,7 +285,7 @@ Particle3DModelRender::~Particle3DModelRender() } } -Particle3DModelRender* Particle3DModelRender::create(const std::string& modelFile, const std::string& texFile) +Particle3DModelRender* Particle3DModelRender::create(std::string_view modelFile, std::string_view texFile) { auto ret = new Particle3DModelRender(); ret->_modelFile = modelFile; diff --git a/extensions/Particle3D/CCParticle3DRender.h b/extensions/Particle3D/CCParticle3DRender.h index aaa0d70104f1..0d2d0b018885 100644 --- a/extensions/Particle3D/CCParticle3DRender.h +++ b/extensions/Particle3D/CCParticle3DRender.h @@ -95,7 +95,7 @@ class CC_EX_DLL Particle3DRender : public Ref class CC_EX_DLL Particle3DQuadRender : public Particle3DRender { public: - static Particle3DQuadRender* create(const std::string& texFile = ""); + static Particle3DQuadRender* create(std::string_view texFile = ""); virtual void render(Renderer* renderer, const Mat4& transform, ParticleSystem3D* particleSystem) override; @@ -104,7 +104,7 @@ class CC_EX_DLL Particle3DQuadRender : public Particle3DRender virtual ~Particle3DQuadRender(); protected: - bool initQuadRender(const std::string& texFile); + bool initQuadRender(std::string_view texFile); void onBeforeDraw(); void onAfterDraw(); @@ -145,7 +145,7 @@ class CC_EX_DLL Particle3DQuadRender : public Particle3DRender class CC_EX_DLL Particle3DModelRender : public Particle3DRender { public: - static Particle3DModelRender* create(const std::string& modelFile, const std::string& texFile = ""); + static Particle3DModelRender* create(std::string_view modelFile, std::string_view texFile = ""); virtual void render(Renderer* renderer, const Mat4& transform, ParticleSystem3D* particleSystem) override; diff --git a/extensions/Particle3D/PU/CCPUAffector.cpp b/extensions/Particle3D/PU/CCPUAffector.cpp index 7f0ea5bbdd3f..80323f456289 100644 --- a/extensions/Particle3D/PU/CCPUAffector.cpp +++ b/extensions/Particle3D/PU/CCPUAffector.cpp @@ -161,16 +161,16 @@ void PUAffector::copyAttributesTo(PUAffector* affector) affector->_excludedEmitters = _excludedEmitters; } -void PUAffector::addEmitterToExclude(const std::string& emitterName) +void PUAffector::addEmitterToExclude(std::string_view emitterName) { auto iter = std::find(_excludedEmitters.begin(), _excludedEmitters.end(), emitterName); if (iter == _excludedEmitters.end()) { - _excludedEmitters.push_back(emitterName); + _excludedEmitters.push_back(std::string{emitterName}); } } -void PUAffector::removeEmitterToExclude(const std::string& emitterName) +void PUAffector::removeEmitterToExclude(std::string_view emitterName) { auto iter = std::find(_excludedEmitters.begin(), _excludedEmitters.end(), emitterName); if (iter != _excludedEmitters.end()) @@ -189,7 +189,7 @@ void PUAffector::process(PUParticle3D* particle, float delta, bool firstParticle if (!_excludedEmitters.empty() && particle->parentEmitter) { // Return if the emitter which emits this particle is part of the vector - std::string emitterName = particle->parentEmitter->getName(); + auto emitterName = particle->parentEmitter->getName(); auto iter = std::find(_excludedEmitters.begin(), _excludedEmitters.end(), emitterName); if (iter != _excludedEmitters.end()) { diff --git a/extensions/Particle3D/PU/CCPUAffector.h b/extensions/Particle3D/PU/CCPUAffector.h index 219d620568d5..255401c9a6f8 100644 --- a/extensions/Particle3D/PU/CCPUAffector.h +++ b/extensions/Particle3D/PU/CCPUAffector.h @@ -91,22 +91,22 @@ class CC_EX_DLL PUAffector : public Particle3DAffector /** Todo */ - const std::string& getAffectorType() const { return _affectorType; }; - void setAffectorType(const std::string& affectorType) { _affectorType = affectorType; }; + std::string_view getAffectorType() const { return _affectorType; }; + void setAffectorType(std::string_view affectorType) { _affectorType = affectorType; }; /** Add a ParticleEmitter name that excludes Particles emitted by this ParticleEmitter from being affected. */ - void addEmitterToExclude(const std::string& emitterName); + void addEmitterToExclude(std::string_view emitterName); /** Remove a ParticleEmitter name that excludes Particles emitted by this ParticleEmitter. */ - void removeEmitterToExclude(const std::string& emitterName); + void removeEmitterToExclude(std::string_view emitterName); /** Todo */ - const std::string& getName() const { return _name; }; - void setName(const std::string& name) { _name = name; }; + std::string_view getName() const { return _name; }; + void setName(std::string_view name) { _name = name; }; virtual void copyAttributesTo(PUAffector* affector); diff --git a/extensions/Particle3D/PU/CCPUAffectorManager.cpp b/extensions/Particle3D/PU/CCPUAffectorManager.cpp index e9b4e5e00f6d..c5be72d24dbf 100644 --- a/extensions/Particle3D/PU/CCPUAffectorManager.cpp +++ b/extensions/Particle3D/PU/CCPUAffectorManager.cpp @@ -63,7 +63,7 @@ PUAffectorManager* PUAffectorManager::Instance() return &pam; } -PUScriptTranslator* PUAffectorManager::getTranslator(const std::string& type) +PUScriptTranslator* PUAffectorManager::getTranslator(std::string_view type) { if (type == "Align") { @@ -172,7 +172,7 @@ PUScriptTranslator* PUAffectorManager::getTranslator(const std::string& type) return nullptr; } -PUAffector* PUAffectorManager::createAffector(const std::string& type) +PUAffector* PUAffectorManager::createAffector(std::string_view type) { if (type == "Align") { diff --git a/extensions/Particle3D/PU/CCPUAffectorManager.h b/extensions/Particle3D/PU/CCPUAffectorManager.h index 8fe439c10f2e..9a768d52fe58 100644 --- a/extensions/Particle3D/PU/CCPUAffectorManager.h +++ b/extensions/Particle3D/PU/CCPUAffectorManager.h @@ -66,8 +66,8 @@ class CC_EX_DLL PUAffectorManager /** */ - PUScriptTranslator* getTranslator(const std::string& type); - PUAffector* createAffector(const std::string& type); + PUScriptTranslator* getTranslator(std::string_view type); + PUAffector* createAffector(std::string_view type); CC_CONSTRUCTOR_ACCESS : PUAffectorManager(); ~PUAffectorManager(); diff --git a/extensions/Particle3D/PU/CCPUBeamRender.cpp b/extensions/Particle3D/PU/CCPUBeamRender.cpp index c68c2f603ee7..d278f52dc818 100644 --- a/extensions/Particle3D/PU/CCPUBeamRender.cpp +++ b/extensions/Particle3D/PU/CCPUBeamRender.cpp @@ -49,7 +49,7 @@ const float PUBeamRender::DEFAULT_DEVIATION const size_t PUBeamRender::DEFAULT_NUMBER_OF_SEGMENTS = 2; const PUBillboardChain::TexCoordDirection PUBeamRender::DEFAULT_TEXTURE_DIRECTION = PUBillboardChain::TCD_V; -PUBeamRender* PUBeamRender::create(const std::string& texFile) +PUBeamRender* PUBeamRender::create(std::string_view texFile) { auto br = new PUBeamRender(); br->autorelease(); diff --git a/extensions/Particle3D/PU/CCPUBeamRender.h b/extensions/Particle3D/PU/CCPUBeamRender.h index 0d0ccc8ed6a1..6d6e270295d0 100644 --- a/extensions/Particle3D/PU/CCPUBeamRender.h +++ b/extensions/Particle3D/PU/CCPUBeamRender.h @@ -87,7 +87,7 @@ class CC_EX_DLL PUBeamRender : public PURender, public PUListener static const size_t DEFAULT_NUMBER_OF_SEGMENTS; static const PUBillboardChain::TexCoordDirection DEFAULT_TEXTURE_DIRECTION; - static PUBeamRender* create(const std::string& texFile = ""); + static PUBeamRender* create(std::string_view texFile = ""); virtual void prepare() override; virtual void unPrepare() override; diff --git a/extensions/Particle3D/PU/CCPUBehaviour.h b/extensions/Particle3D/PU/CCPUBehaviour.h index 15d098d43901..745cfb669ac3 100644 --- a/extensions/Particle3D/PU/CCPUBehaviour.h +++ b/extensions/Particle3D/PU/CCPUBehaviour.h @@ -45,8 +45,8 @@ class CC_EX_DLL PUBehaviour : public Ref public: /** Todo */ - const std::string& getBehaviourType() const { return _behaviourType; }; - void setBehaviourType(const std::string& behaviourType) { _behaviourType = behaviourType; }; + std::string_view getBehaviourType() const { return _behaviourType; }; + void setBehaviourType(std::string_view behaviourType) { _behaviourType = behaviourType; }; /** Notify that the Behaviour is rescaled. */ diff --git a/extensions/Particle3D/PU/CCPUBehaviourManager.cpp b/extensions/Particle3D/PU/CCPUBehaviourManager.cpp index 6ff319f6161d..2ce24c156a7d 100644 --- a/extensions/Particle3D/PU/CCPUBehaviourManager.cpp +++ b/extensions/Particle3D/PU/CCPUBehaviourManager.cpp @@ -38,7 +38,7 @@ PUBehaviourManager* PUBehaviourManager::Instance() return &pam; } -PUScriptTranslator* PUBehaviourManager::getTranslator(const std::string& type) +PUScriptTranslator* PUBehaviourManager::getTranslator(std::string_view type) { if (type == "Slave") { @@ -47,7 +47,7 @@ PUScriptTranslator* PUBehaviourManager::getTranslator(const std::string& type) return nullptr; } -PUBehaviour* PUBehaviourManager::createBehaviour(const std::string& type) +PUBehaviour* PUBehaviourManager::createBehaviour(std::string_view type) { if (type == "Slave") { diff --git a/extensions/Particle3D/PU/CCPUBehaviourManager.h b/extensions/Particle3D/PU/CCPUBehaviourManager.h index 91dfffb450bd..7f468f173a9d 100644 --- a/extensions/Particle3D/PU/CCPUBehaviourManager.h +++ b/extensions/Particle3D/PU/CCPUBehaviourManager.h @@ -41,8 +41,8 @@ class PUBehaviourManager /** */ - PUScriptTranslator* getTranslator(const std::string& type); - PUBehaviour* createBehaviour(const std::string& type); + PUScriptTranslator* getTranslator(std::string_view type); + PUBehaviour* createBehaviour(std::string_view type); CC_CONSTRUCTOR_ACCESS : PUBehaviourManager(); ~PUBehaviourManager(); diff --git a/extensions/Particle3D/PU/CCPUBillboardChain.cpp b/extensions/Particle3D/PU/CCPUBillboardChain.cpp index b83a9dcb4ec2..f0646533e284 100644 --- a/extensions/Particle3D/PU/CCPUBillboardChain.cpp +++ b/extensions/Particle3D/PU/CCPUBillboardChain.cpp @@ -48,8 +48,8 @@ PUBillboardChain::Element::Element(const Vec3& pos, float w, float tex, const Ve : position(pos), width(w), texCoord(tex), color(col), orientation(ori) {} //----------------------------------------------------------------------- -PUBillboardChain::PUBillboardChain(const std::string& /*name*/, - const std::string& texFile, +PUBillboardChain::PUBillboardChain(std::string_view /*name*/, + std::string_view texFile, size_t maxElements, size_t numberOfChains, bool useTextureCoords, @@ -627,7 +627,7 @@ void PUBillboardChain::updateIndexBuffer() } } //----------------------------------------------------------------------- -void PUBillboardChain::init(const std::string& texFile) +void PUBillboardChain::init(std::string_view texFile) { CC_SAFE_RELEASE_NULL(_programState); diff --git a/extensions/Particle3D/PU/CCPUBillboardChain.h b/extensions/Particle3D/PU/CCPUBillboardChain.h index 329029d2aca0..12825a0f1c62 100644 --- a/extensions/Particle3D/PU/CCPUBillboardChain.h +++ b/extensions/Particle3D/PU/CCPUBillboardChain.h @@ -77,8 +77,8 @@ class PUBillboardChain @param useVertexColours If true, use vertex colours from the chain elements @param dynamic If true, buffers are created with the intention of being updated */ - PUBillboardChain(const std::string& name, - const std::string& texFile = "", + PUBillboardChain(std::string_view name, + std::string_view texFile = "", size_t maxElements = 20, size_t numberOfChains = 1, bool useTextureCoords = true, @@ -245,7 +245,7 @@ class PUBillboardChain /// Update the contents of the index buffer virtual void updateIndexBuffer(); - void init(const std::string& texFile); + void init(std::string_view texFile); private: void onBeforeDraw(); diff --git a/extensions/Particle3D/PU/CCPUDoAffectorEventHandler.h b/extensions/Particle3D/PU/CCPUDoAffectorEventHandler.h index 3c2985c3d1b0..b4425d880c75 100644 --- a/extensions/Particle3D/PU/CCPUDoAffectorEventHandler.h +++ b/extensions/Particle3D/PU/CCPUDoAffectorEventHandler.h @@ -57,11 +57,11 @@ class CC_EX_DLL PUDoAffectorEventHandler : public PUEventHandler /** Get the name of the affector that must be enabled or disabled. */ - const std::string& getAffectorName() const { return _affectorName; }; + std::string_view getAffectorName() const { return _affectorName; }; /** Set the name of the affector. */ - void setAffectorName(const std::string& affectorName) { _affectorName = affectorName; }; + void setAffectorName(std::string_view affectorName) { _affectorName = affectorName; }; /** If the _handle() function of this class is invoked (by an Observer), it searches the ParticleAffector defined by the its name. diff --git a/extensions/Particle3D/PU/CCPUDoEnableComponentEventHandler.h b/extensions/Particle3D/PU/CCPUDoEnableComponentEventHandler.h index 9c9ff4c0fdd2..94e56865f26e 100644 --- a/extensions/Particle3D/PU/CCPUDoEnableComponentEventHandler.h +++ b/extensions/Particle3D/PU/CCPUDoEnableComponentEventHandler.h @@ -47,11 +47,11 @@ class CC_EX_DLL PUDoEnableComponentEventHandler : public PUEventHandler /** Get the name of the component that must be enabled or disabled. */ - const std::string& getComponentName() const { return _componentName; }; + std::string_view getComponentName() const { return _componentName; }; /** Set the name of the component that must be enabled or disables. */ - void setComponentName(const std::string& componentName) { _componentName = componentName; }; + void setComponentName(std::string_view componentName) { _componentName = componentName; }; /** Get the value that identifies whether the component must be enabled or disabled. */ diff --git a/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.cpp b/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.cpp index f70ba179ff43..d572be111809 100644 --- a/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.cpp +++ b/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.cpp @@ -241,7 +241,7 @@ void PUDoPlacementParticleEventHandler::particleExpired(PUParticleSystem3D* /*pa {} //----------------------------------------------------------------------- -void PUDoPlacementParticleEventHandler::setForceEmitterName(const std::string& forceEmitterName) +void PUDoPlacementParticleEventHandler::setForceEmitterName(std::string_view forceEmitterName) { _forceEmitterName = forceEmitterName; } diff --git a/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.h b/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.h index cb33bb8cbd2f..3304e7309499 100644 --- a/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.h +++ b/extensions/Particle3D/PU/CCPUDoPlacementParticleEventHandler.h @@ -78,11 +78,11 @@ class CC_EX_DLL PUDoPlacementParticleEventHandler : public PUEventHandler, publi /** Get the name of the emitter that is used to emit its particles. */ - const std::string& getForceEmitterName() const { return _forceEmitterName; }; + std::string_view getForceEmitterName() const { return _forceEmitterName; }; /** Set the name of the emitter that is used to emit its particles. */ - void setForceEmitterName(const std::string& forceEmitterName); + void setForceEmitterName(std::string_view forceEmitterName); /** Returns a pointer to the emitter that is used as a force emitter. */ diff --git a/extensions/Particle3D/PU/CCPUEmitter.cpp b/extensions/Particle3D/PU/CCPUEmitter.cpp index fdf3ac0487a3..2914895a70a0 100644 --- a/extensions/Particle3D/PU/CCPUEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUEmitter.cpp @@ -497,7 +497,7 @@ void PUEmitter::setParticleTextureCoordsRangeEnd(const unsigned short& particleT } //----------------------------------------------------------------------- -void PUEmitter::setEmitsName(const std::string& emitsName) +void PUEmitter::setEmitsName(std::string_view emitsName) { _emitsName = emitsName; _emitsEntity = nullptr; diff --git a/extensions/Particle3D/PU/CCPUEmitter.h b/extensions/Particle3D/PU/CCPUEmitter.h index 4aa3c3a1634a..bccc699bdf6c 100644 --- a/extensions/Particle3D/PU/CCPUEmitter.h +++ b/extensions/Particle3D/PU/CCPUEmitter.h @@ -112,13 +112,13 @@ class CC_EX_DLL PUEmitter : public Particle3DEmitter /** Todo */ - const std::string& getEmitterType() const { return _emitterType; } - void setEmitterType(const std::string& emitterType) { _emitterType = emitterType; }; + std::string_view getEmitterType() const { return _emitterType; } + void setEmitterType(std::string_view emitterType) { _emitterType = emitterType; }; /** Todo */ - const std::string& getName() const { return _name; } - void setName(const std::string& name) { _name = name; }; + std::string_view getName() const { return _name; } + void setName(std::string_view name) { _name = name; }; /** Todo */ @@ -188,8 +188,8 @@ class CC_EX_DLL PUEmitter : public Particle3DEmitter /** Todo */ - const std::string& getEmitsName() const { return _emitsName; } - void setEmitsName(const std::string& emitsName); + std::string_view getEmitsName() const { return _emitsName; } + void setEmitsName(std::string_view emitsName); PUParticle3D::ParticleType getEmitsType() const { return _emitsType; } void setEmitsType(PUParticle3D::ParticleType type) { _emitsType = type; }; Ref* getEmitsEntityPtr() const; diff --git a/extensions/Particle3D/PU/CCPUEmitterManager.cpp b/extensions/Particle3D/PU/CCPUEmitterManager.cpp index f18566fc94eb..4c587b04aa49 100644 --- a/extensions/Particle3D/PU/CCPUEmitterManager.cpp +++ b/extensions/Particle3D/PU/CCPUEmitterManager.cpp @@ -45,7 +45,7 @@ PUEmitterManager* PUEmitterManager::Instance() return &ptm; } -PUScriptTranslator* PUEmitterManager::getTranslator(const std::string& type) +PUScriptTranslator* PUEmitterManager::getTranslator(std::string_view type) { if (type == "Box") { @@ -86,7 +86,7 @@ PUScriptTranslator* PUEmitterManager::getTranslator(const std::string& type) return nullptr; } -PUEmitter* PUEmitterManager::createEmitter(const std::string& type) +PUEmitter* PUEmitterManager::createEmitter(std::string_view type) { if (type == "Box") { diff --git a/extensions/Particle3D/PU/CCPUEmitterManager.h b/extensions/Particle3D/PU/CCPUEmitterManager.h index 00ee4c33ae65..5affa49ef8be 100644 --- a/extensions/Particle3D/PU/CCPUEmitterManager.h +++ b/extensions/Particle3D/PU/CCPUEmitterManager.h @@ -48,8 +48,8 @@ class PUEmitterManager /** */ - PUScriptTranslator* getTranslator(const std::string& type); - PUEmitter* createEmitter(const std::string& type); + PUScriptTranslator* getTranslator(std::string_view type); + PUEmitter* createEmitter(std::string_view type); CC_CONSTRUCTOR_ACCESS : PUEmitterManager(); ~PUEmitterManager(); diff --git a/extensions/Particle3D/PU/CCPUEventHandler.h b/extensions/Particle3D/PU/CCPUEventHandler.h index 771252122f71..a9f4582b7780 100644 --- a/extensions/Particle3D/PU/CCPUEventHandler.h +++ b/extensions/Particle3D/PU/CCPUEventHandler.h @@ -44,8 +44,8 @@ class CC_EX_DLL PUEventHandler : public Ref public: /** Todo */ - const std::string& getName() const { return _name; }; - void setName(const std::string& name) { _name = name; }; + std::string_view getName() const { return _name; }; + void setName(std::string_view name) { _name = name; }; /** Todo */ @@ -54,8 +54,8 @@ class CC_EX_DLL PUEventHandler : public Ref /** Todo */ - const std::string& getEventHandlerType() const { return _eventHandlerType; }; - void setEventHandlerType(const std::string& eventHandlerType) { _eventHandlerType = eventHandlerType; }; + std::string_view getEventHandlerType() const { return _eventHandlerType; }; + void setEventHandlerType(std::string_view eventHandlerType) { _eventHandlerType = eventHandlerType; }; /** Notify that the event handler is rescaled. */ diff --git a/extensions/Particle3D/PU/CCPUEventHandlerManager.cpp b/extensions/Particle3D/PU/CCPUEventHandlerManager.cpp index df3803a8f43d..06206b7b9936 100644 --- a/extensions/Particle3D/PU/CCPUEventHandlerManager.cpp +++ b/extensions/Particle3D/PU/CCPUEventHandlerManager.cpp @@ -44,7 +44,7 @@ PUEventHandlerManager* PUEventHandlerManager::Instance() return &pem; } -PUScriptTranslator* PUEventHandlerManager::getTranslator(const std::string& type) +PUScriptTranslator* PUEventHandlerManager::getTranslator(std::string_view type) { if (type == "DoAffector") { @@ -77,7 +77,7 @@ PUScriptTranslator* PUEventHandlerManager::getTranslator(const std::string& type return nullptr; } -PUEventHandler* PUEventHandlerManager::createEventHandler(const std::string& type) +PUEventHandler* PUEventHandlerManager::createEventHandler(std::string_view type) { if (type == "DoAffector") { diff --git a/extensions/Particle3D/PU/CCPUEventHandlerManager.h b/extensions/Particle3D/PU/CCPUEventHandlerManager.h index 2cc470c60bb7..bd09e1487c7b 100644 --- a/extensions/Particle3D/PU/CCPUEventHandlerManager.h +++ b/extensions/Particle3D/PU/CCPUEventHandlerManager.h @@ -45,8 +45,8 @@ class PUEventHandlerManager /** */ - PUScriptTranslator* getTranslator(const std::string& type); - PUEventHandler* createEventHandler(const std::string& type); + PUScriptTranslator* getTranslator(std::string_view type); + PUEventHandler* createEventHandler(std::string_view type); CC_CONSTRUCTOR_ACCESS : diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.cpp b/extensions/Particle3D/PU/CCPUMaterialManager.cpp index 05aa70292cf6..867b66446281 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.cpp +++ b/extensions/Particle3D/PU/CCPUMaterialManager.cpp @@ -77,7 +77,7 @@ PUMaterialCache* PUMaterialCache::Instance() return &pmm; } -PUMaterial* PUMaterialCache::getMaterial(const std::string& name) +PUMaterial* PUMaterialCache::getMaterial(std::string_view name) { for (auto iter : _materialMap) { @@ -87,7 +87,7 @@ PUMaterial* PUMaterialCache::getMaterial(const std::string& name) return nullptr; } -bool PUMaterialCache::loadMaterials(const std::string& file) +bool PUMaterialCache::loadMaterials(std::string_view file) { bool isFirstCompile = true; auto list = PUScriptCompiler::Instance()->compile(file, isFirstCompile); @@ -128,18 +128,23 @@ int iterPath(const char* fpath, const struct stat* /*sb*/, int typeflag) } #endif -bool PUMaterialCache::loadMaterialsFromSearchPaths(const std::string& fileFolder) +bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) { bool state = false; #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) std::string seg("/"); - std::string fullPath = fileFolder + seg + std::string("*.material"); + std::string fullPath{fileFolder}; + fullPath += seg; + fullPath += std::string("*.material"); _finddata_t data; intptr_t handle = _findfirst(fullPath.c_str(), &data); int done = 0; while ((handle != -1) && (done == 0)) { - loadMaterials(fileFolder + seg + std::string(data.name)); + fullPath = fileFolder; + fullPath += seg; + fullPath += data.name; + loadMaterials(fullPath); done = _findnext(handle, &data); state = true; } diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.h b/extensions/Particle3D/PU/CCPUMaterialManager.h index 54543ce34919..a5cbac89349b 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.h +++ b/extensions/Particle3D/PU/CCPUMaterialManager.h @@ -63,9 +63,9 @@ class CC_EX_DLL PUMaterialCache static PUMaterialCache* Instance(); - bool loadMaterials(const std::string& file); - bool loadMaterialsFromSearchPaths(const std::string& fileFolder); - PUMaterial* getMaterial(const std::string& name); + bool loadMaterials(std::string_view file); + bool loadMaterialsFromSearchPaths(std::string_view fileFolder); + PUMaterial* getMaterial(std::string_view name); void addMaterial(PUMaterial* material); protected: diff --git a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp index b453dc4126c8..2ee1f24f7df8 100644 --- a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp @@ -162,7 +162,7 @@ const PUTriangle::PositionAndNormal PUTriangle::getRandomVertexAndNormal() //----------------------------------------------------------------------- //----------------------------------------------------------------------- //----------------------------------------------------------------------- -MeshInfo::MeshInfo(const std::string& /*meshName*/, +MeshInfo::MeshInfo(std::string_view /*meshName*/, MeshSurfaceDistribution distribution, const Quaternion& /*orientation*/, const Vec3& /*scale*/) @@ -527,12 +527,12 @@ void PUMeshSurfaceEmitter::initParticleDirection(PUParticle3D* particle) } } //----------------------------------------------------------------------- -const std::string& PUMeshSurfaceEmitter::getMeshName() const +std::string_view PUMeshSurfaceEmitter::getMeshName() const { return _meshName; } //----------------------------------------------------------------------- -void PUMeshSurfaceEmitter::setMeshName(const std::string& meshName, bool doBuild) +void PUMeshSurfaceEmitter::setMeshName(std::string_view meshName, bool doBuild) { _meshName = meshName; diff --git a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.h b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.h index 9f1cd8389f03..553d10117623 100644 --- a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.h +++ b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.h @@ -119,7 +119,7 @@ class MeshInfo }; /** Constructor **/ - MeshInfo(const std::string& meshName, + MeshInfo(std::string_view meshName, const MeshSurfaceDistribution distribution = MSD_HOMOGENEOUS, const Quaternion& orientation = Quaternion(), const Vec3& scale = Vec3::ZERO); @@ -173,11 +173,11 @@ class CC_EX_DLL PUMeshSurfaceEmitter : public PUEmitter /** Returns the mesh name. */ - const std::string& getMeshName() const; + std::string_view getMeshName() const; /** Sets the mesh name. */ - void setMeshName(const std::string& meshName, bool doBuild = true); + void setMeshName(std::string_view meshName, bool doBuild = true); /** Returns true if normals are used for the particle direction. */ diff --git a/extensions/Particle3D/PU/CCPUObserver.cpp b/extensions/Particle3D/PU/CCPUObserver.cpp index 6b93991b2a71..edfc370560a3 100644 --- a/extensions/Particle3D/PU/CCPUObserver.cpp +++ b/extensions/Particle3D/PU/CCPUObserver.cpp @@ -130,7 +130,7 @@ void PUObserver::notifyRescaled(const Vec3& scale) } } //----------------------------------------------------------------------- -PUEventHandler* PUObserver::createEventHandler(const std::string& eventHandlerType) +PUEventHandler* PUObserver::createEventHandler(std::string_view eventHandlerType) { PUEventHandler* eventHandler = PUEventHandlerManager::Instance()->createEventHandler(eventHandlerType); addEventHandler(eventHandler); @@ -168,7 +168,7 @@ PUEventHandler* PUObserver::getEventHandler(size_t index) const return _eventHandlers[index]; } //----------------------------------------------------------------------- -PUEventHandler* PUObserver::getEventHandler(const std::string& eventHandlerName) const +PUEventHandler* PUObserver::getEventHandler(std::string_view eventHandlerName) const { if (eventHandlerName.empty()) return nullptr; diff --git a/extensions/Particle3D/PU/CCPUObserver.h b/extensions/Particle3D/PU/CCPUObserver.h index c2455aa0368e..dcb354bc02ac 100644 --- a/extensions/Particle3D/PU/CCPUObserver.h +++ b/extensions/Particle3D/PU/CCPUObserver.h @@ -63,8 +63,8 @@ class CC_EX_DLL PUObserver : public Ref /** Todo */ - const std::string& getObserverType() const { return _observerType; }; - void setObserverType(const std::string& observerType) { _observerType = observerType; }; + std::string_view getObserverType() const { return _observerType; }; + void setObserverType(std::string_view observerType) { _observerType = observerType; }; /** Todo */ @@ -93,8 +93,8 @@ class CC_EX_DLL PUObserver : public Ref /** Todo */ - const std::string& getName() const { return _name; }; - void setName(const std::string& name) { _name = name; }; + std::string_view getName() const { return _name; }; + void setName(std::string_view name) { _name = name; }; /** Todo */ @@ -115,7 +115,7 @@ class CC_EX_DLL PUObserver : public Ref /** Todo */ - PUEventHandler* createEventHandler(const std::string& eventHandlerType); + PUEventHandler* createEventHandler(std::string_view eventHandlerType); /** Todo */ @@ -131,7 +131,7 @@ class CC_EX_DLL PUObserver : public Ref /** Todo */ - PUEventHandler* getEventHandler(const std::string& eventHandlerName) const; + PUEventHandler* getEventHandler(std::string_view eventHandlerName) const; /** Todo */ diff --git a/extensions/Particle3D/PU/CCPUObserverManager.cpp b/extensions/Particle3D/PU/CCPUObserverManager.cpp index 3ac7859ed6d9..a90e2fdb0941 100644 --- a/extensions/Particle3D/PU/CCPUObserverManager.cpp +++ b/extensions/Particle3D/PU/CCPUObserverManager.cpp @@ -48,7 +48,7 @@ PUObserverManager* PUObserverManager::Instance() return &pem; } -PUScriptTranslator* PUObserverManager::getTranslator(const std::string& type) +PUScriptTranslator* PUObserverManager::getTranslator(std::string_view type) { if (type == "OnClear") { @@ -97,7 +97,7 @@ PUScriptTranslator* PUObserverManager::getTranslator(const std::string& type) return nullptr; } -PUObserver* PUObserverManager::createObserver(const std::string& type) +PUObserver* PUObserverManager::createObserver(std::string_view type) { if (type == "OnClear") { diff --git a/extensions/Particle3D/PU/CCPUObserverManager.h b/extensions/Particle3D/PU/CCPUObserverManager.h index cd1a69dac889..8134843e1b34 100644 --- a/extensions/Particle3D/PU/CCPUObserverManager.h +++ b/extensions/Particle3D/PU/CCPUObserverManager.h @@ -50,8 +50,8 @@ class PUObserverManager /** */ - PUScriptTranslator* getTranslator(const std::string& type); - PUObserver* createObserver(const std::string& type); + PUScriptTranslator* getTranslator(std::string_view type); + PUObserver* createObserver(std::string_view type); CC_CONSTRUCTOR_ACCESS : diff --git a/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp b/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp index e9818e3a2512..6fabe49b9b13 100644 --- a/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp +++ b/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp @@ -259,7 +259,7 @@ PUParticleSystem3D* PUParticleSystem3D::create() return pups; } -PUParticleSystem3D* PUParticleSystem3D::create(const std::string& filePath, const std::string& materialPath) +PUParticleSystem3D* PUParticleSystem3D::create(std::string_view filePath, std::string_view materialPath) { PUParticleSystem3D* ret = new PUParticleSystem3D(); if (ret->initWithFilePathAndMaterialPath(filePath, materialPath)) @@ -274,7 +274,7 @@ PUParticleSystem3D* PUParticleSystem3D::create(const std::string& filePath, cons } } -PUParticleSystem3D* PUParticleSystem3D::create(const std::string& filePath) +PUParticleSystem3D* PUParticleSystem3D::create(std::string_view filePath) { PUParticleSystem3D* ret = new PUParticleSystem3D(); if (ret->initWithFilePath(filePath)) @@ -289,7 +289,7 @@ PUParticleSystem3D* PUParticleSystem3D::create(const std::string& filePath) } } -bool PUParticleSystem3D::initWithFilePath(const std::string& filePath) +bool PUParticleSystem3D::initWithFilePath(std::string_view filePath) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); convertToUnixStylePath(fullPath); @@ -318,7 +318,7 @@ bool PUParticleSystem3D::initWithFilePath(const std::string& filePath) return true; } -bool PUParticleSystem3D::initWithFilePathAndMaterialPath(const std::string& filePath, const std::string& materialPath) +bool PUParticleSystem3D::initWithFilePathAndMaterialPath(std::string_view filePath, std::string_view materialPath) { std::string matfullPath = FileUtils::getInstance()->fullPathForFilename(materialPath); convertToUnixStylePath(matfullPath); @@ -629,24 +629,24 @@ void PUParticleSystem3D::unPrepared() _particlePool.lockAllDatas(); for (auto& iter : _emittedEmitterParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->unPrepare(); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } - iter.second.lockAllDatas(); + const_cast(iter.second).lockAllDatas(); } for (auto& iter : _emittedSystemParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->unPrepared(); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } - iter.second.lockAllDatas(); + const_cast(iter.second).lockAllDatas(); } _prepared = false; } @@ -692,21 +692,21 @@ void PUParticleSystem3D::preUpdator(float elapsedTime) for (auto& iter : _emittedEmitterParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->preUpdateEmitter(elapsedTime); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } for (auto& iter : _emittedSystemParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->preUpdator(elapsedTime); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } } @@ -719,12 +719,12 @@ void PUParticleSystem3D::updator(float elapsedTime) for (auto& iter : _emittedEmitterParticlePool) { - processParticle(iter.second, firstActiveParticle, firstParticle, elapsedTime); + processParticle(const_cast(iter.second), firstActiveParticle, firstParticle, elapsedTime); } for (auto& iter : _emittedSystemParticlePool) { - processParticle(iter.second, firstActiveParticle, firstParticle, elapsedTime); + processParticle(const_cast(iter.second), firstActiveParticle, firstParticle, elapsedTime); } } @@ -763,21 +763,21 @@ void PUParticleSystem3D::postUpdator(float elapsedTime) for (auto& iter : _emittedEmitterParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->postUpdateEmitter(elapsedTime); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } for (auto& iter : _emittedSystemParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->postUpdator(elapsedTime); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } } @@ -901,7 +901,7 @@ void PUParticleSystem3D::setMaxVelocity(float maxVelocity) _maxVelocitySet = true; } -bool PUParticleSystem3D::initSystem(const std::string& filePath) +bool PUParticleSystem3D::initSystem(std::string_view filePath) { bool isFirstCompile = true; auto list = PUScriptCompiler::Instance()->compile(filePath, isFirstCompile); @@ -922,7 +922,7 @@ void PUParticleSystem3D::addEmitter(PUEmitter* emitter) } } -PUAffector* PUParticleSystem3D::getAffector(const std::string& name) +PUAffector* PUParticleSystem3D::getAffector(std::string_view name) { for (auto iter : _affectors) { @@ -934,7 +934,7 @@ PUAffector* PUParticleSystem3D::getAffector(const std::string& name) return nullptr; } -PUEmitter* PUParticleSystem3D::getEmitter(const std::string& name) +PUEmitter* PUParticleSystem3D::getEmitter(std::string_view name) { for (auto iter : _emitters) { @@ -1040,7 +1040,7 @@ void PUParticleSystem3D::addObserver(PUObserver* observer) } } -PUObserver* PUParticleSystem3D::getObserver(const std::string& name) +PUObserver* PUParticleSystem3D::getObserver(std::string_view name) { for (auto iter : _observers) { @@ -1074,21 +1074,21 @@ void PUParticleSystem3D::notifyRescaled(const Vec3& scl) for (auto& iter : _emittedEmitterParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->notifyRescaled(scl); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } for (auto& iter : _emittedSystemParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->notifyRescaled(scl); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } } @@ -1164,12 +1164,12 @@ void PUParticleSystem3D::clearAllParticles() _particlePool.lockAllDatas(); for (auto& iter : _emittedEmitterParticlePool) { - iter.second.lockAllDatas(); + const_cast(iter.second).lockAllDatas(); } for (auto& iter : _emittedSystemParticlePool) { - iter.second.lockAllDatas(); + const_cast(iter.second).lockAllDatas(); } } @@ -1303,11 +1303,11 @@ void PUParticleSystem3D::draw(Renderer* renderer, const Mat4& transform, uint32_ { for (auto& iter : _emittedSystemParticlePool) { - PUParticle3D* particle = static_cast(iter.second.getFirst()); + PUParticle3D* particle = static_cast(const_cast(iter.second).getFirst()); while (particle) { static_cast(particle->particleEntityPtr)->draw(renderer, transform, flags); - particle = static_cast(iter.second.getNext()); + particle = static_cast(const_cast(iter.second).getNext()); } } } diff --git a/extensions/Particle3D/PU/CCPUParticleSystem3D.h b/extensions/Particle3D/PU/CCPUParticleSystem3D.h index 4b73e26c1d2a..d7773d9892df 100644 --- a/extensions/Particle3D/PU/CCPUParticleSystem3D.h +++ b/extensions/Particle3D/PU/CCPUParticleSystem3D.h @@ -207,7 +207,7 @@ struct CC_EX_DLL PUParticle3D : public Particle3D class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D { public: - typedef std::unordered_map ParticlePoolMap; + typedef hlookup::string_map ParticlePoolMap; static const float DEFAULT_WIDTH; static const float DEFAULT_HEIGHT; @@ -218,8 +218,8 @@ class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D static const float DEFAULT_MAX_VELOCITY; static PUParticleSystem3D* create(); - static PUParticleSystem3D* create(const std::string& filePath); - static PUParticleSystem3D* create(const std::string& filePath, const std::string& materialPath); + static PUParticleSystem3D* create(std::string_view filePath); + static PUParticleSystem3D* create(std::string_view filePath, std::string_view materialPath); virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override; @@ -296,8 +296,8 @@ class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D */ void setMaxVelocity(float maxVelocity); - void setMaterialName(const std::string& name) { _matName = name; }; - const std::string& getMaterialName() const { return _matName; }; + void setMaterialName(std::string_view name) { _matName = name; }; + std::string_view getMaterialName() const { return _matName; }; /** Forces emission of particles. * @remarks The number of requested particles are the exact number that are emitted. No down-scaling is applied. @@ -309,8 +309,8 @@ class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D */ void addEmitter(PUEmitter* emitter); - PUAffector* getAffector(const std::string& name); - PUEmitter* getEmitter(const std::string& name); + PUAffector* getAffector(std::string_view name); + PUEmitter* getEmitter(std::string_view name); void removeAllEmitter(); void addListener(PUListener* listener); @@ -318,7 +318,7 @@ class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D void removeAllListener(); void addObserver(PUObserver* observer); - PUObserver* getObserver(const std::string& name); + PUObserver* getObserver(std::string_view name); void removerAllObserver(); void addBehaviourTemplate(PUBehaviour* behaviour); @@ -346,13 +346,13 @@ class CC_EX_DLL PUParticleSystem3D : public ParticleSystem3D virtual PUParticleSystem3D* clone(); virtual void copyAttributesTo(PUParticleSystem3D* system); - bool initSystem(const std::string& filePath); + bool initSystem(std::string_view filePath); CC_CONSTRUCTOR_ACCESS : PUParticleSystem3D(); virtual ~PUParticleSystem3D(); - bool initWithFilePath(const std::string& filePath); - bool initWithFilePathAndMaterialPath(const std::string& filePath, const std::string& materialPath); + bool initWithFilePath(std::string_view filePath); + bool initWithFilePathAndMaterialPath(std::string_view filePath, std::string_view materialPath); protected: void prepared(); diff --git a/extensions/Particle3D/PU/CCPURender.cpp b/extensions/Particle3D/PU/CCPURender.cpp index d22e2c977f01..cccefce1bdfc 100644 --- a/extensions/Particle3D/PU/CCPURender.cpp +++ b/extensions/Particle3D/PU/CCPURender.cpp @@ -56,7 +56,7 @@ void PURender::copyAttributesTo(PURender* render) // return left->depthInView > right->depthInView; // } -PUParticle3DQuadRender* PUParticle3DQuadRender::create(const std::string& texFile) +PUParticle3DQuadRender* PUParticle3DQuadRender::create(std::string_view texFile) { auto ret = new PUParticle3DQuadRender(); if (ret->initRender(texFile)) @@ -488,8 +488,8 @@ PUParticle3DQuadRender* PUParticle3DQuadRender::clone() return render; } -PUParticle3DModelRender* PUParticle3DModelRender::create(const std::string& modelFile, - const std::string& texFile /*= ""*/) +PUParticle3DModelRender* PUParticle3DModelRender::create(std::string_view modelFile, + std::string_view texFile /*= ""*/) { auto ret = new PUParticle3DModelRender(); ret->_modelFile = modelFile; @@ -614,7 +614,7 @@ PUParticle3DEntityRender::~PUParticle3DEntityRender() CC_SAFE_RELEASE(_indexBuffer); } -bool PUParticle3DEntityRender::initRender(const std::string& texFile) +bool PUParticle3DEntityRender::initRender(std::string_view texFile) { CC_SAFE_RELEASE_NULL(_programState); if (!texFile.empty()) @@ -693,7 +693,7 @@ PUParticle3DBoxRender::PUParticle3DBoxRender() PUParticle3DBoxRender::~PUParticle3DBoxRender() {} -PUParticle3DBoxRender* PUParticle3DBoxRender::create(const std::string& texFile) +PUParticle3DBoxRender* PUParticle3DBoxRender::create(std::string_view texFile) { auto ret = new PUParticle3DBoxRender(); if (ret->initRender(texFile)) @@ -883,7 +883,7 @@ PUParticle3DBoxRender* PUParticle3DBoxRender::clone() return render; } -PUSphereRender* PUSphereRender::create(const std::string& texFile) +PUSphereRender* PUSphereRender::create(std::string_view texFile) { auto ret = new PUSphereRender(); if (ret->initRender(texFile)) diff --git a/extensions/Particle3D/PU/CCPURender.h b/extensions/Particle3D/PU/CCPURender.h index e4076c656534..002f333daf68 100644 --- a/extensions/Particle3D/PU/CCPURender.h +++ b/extensions/Particle3D/PU/CCPURender.h @@ -47,8 +47,8 @@ class CC_EX_DLL PURender : public Particle3DRender virtual void unPrepare(){}; virtual void updateRender(PUParticle3D* particle, float deltaTime, bool firstParticle); - const std::string& getRenderType() const { return _renderType; }; - void setRenderType(const std::string& observerType) { _renderType = observerType; }; + std::string_view getRenderType() const { return _renderType; }; + void setRenderType(std::string_view observerType) { _renderType = observerType; }; virtual PURender* clone() = 0; void copyAttributesTo(PURender* render); @@ -70,7 +70,7 @@ class CC_EX_DLL PUParticle3DEntityRender : public PURender virtual ~PUParticle3DEntityRender(); protected: - bool initRender(const std::string& texFile); + bool initRender(std::string_view texFile); void onBeforeDraw(); @@ -141,7 +141,7 @@ class CC_EX_DLL PUParticle3DQuadRender : public PUParticle3DEntityRender VERTEX }; - static PUParticle3DQuadRender* create(const std::string& texFile = ""); + static PUParticle3DQuadRender* create(std::string_view texFile = ""); void setType(Type type); Type getType() const { return _type; } @@ -191,7 +191,7 @@ class CC_EX_DLL PUParticle3DQuadRender : public PUParticle3DEntityRender class CC_EX_DLL PUParticle3DModelRender : public PURender { public: - static PUParticle3DModelRender* create(const std::string& modelFile, const std::string& texFile = ""); + static PUParticle3DModelRender* create(std::string_view modelFile, std::string_view texFile = ""); virtual void render(Renderer* renderer, const Mat4& transform, ParticleSystem3D* particleSystem) override; @@ -212,7 +212,7 @@ class CC_EX_DLL PUParticle3DModelRender : public PURender class CC_EX_DLL PUParticle3DBoxRender : public PUParticle3DEntityRender { public: - static PUParticle3DBoxRender* create(const std::string& texFile = ""); + static PUParticle3DBoxRender* create(std::string_view texFile = ""); virtual void render(Renderer* renderer, const Mat4& transform, ParticleSystem3D* particleSystem) override; @@ -228,7 +228,7 @@ class CC_EX_DLL PUParticle3DBoxRender : public PUParticle3DEntityRender class CC_EX_DLL PUSphereRender : public PUParticle3DEntityRender { public: - static PUSphereRender* create(const std::string& texFile = ""); + static PUSphereRender* create(std::string_view texFile = ""); virtual void render(Renderer* renderer, const Mat4& transform, ParticleSystem3D* particleSystem) override; diff --git a/extensions/Particle3D/PU/CCPURibbonTrail.cpp b/extensions/Particle3D/PU/CCPURibbonTrail.cpp index b5bc2fc10b8e..fe05c3897704 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrail.cpp +++ b/extensions/Particle3D/PU/CCPURibbonTrail.cpp @@ -36,8 +36,8 @@ NS_CC_BEGIN -PURibbonTrail::PURibbonTrail(const std::string& name, - const std::string& texFile, +PURibbonTrail::PURibbonTrail(std::string_view name, + std::string_view texFile, size_t maxElements, size_t numberOfChains, bool useTextureCoords, diff --git a/extensions/Particle3D/PU/CCPURibbonTrail.h b/extensions/Particle3D/PU/CCPURibbonTrail.h index e57ccf58e606..9b3258796935 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrail.h +++ b/extensions/Particle3D/PU/CCPURibbonTrail.h @@ -48,8 +48,8 @@ class PURibbonTrail : public PUBillboardChain @param useVertexColors If true, use vertex colors from the chain elements (must be true if you intend to use fading) */ - PURibbonTrail(const std::string& name, - const std::string& texFile = "", + PURibbonTrail(std::string_view name, + std::string_view texFile = "", size_t maxElements = 20, size_t numberOfChains = 1, bool useTextureCoords = true, diff --git a/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp b/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp index 8a924a9c4b14..9d9d89a2bb4d 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp +++ b/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp @@ -48,7 +48,7 @@ const bool PURibbonTrailRender::DEFAULT_RANDOM_INITIAL_COLOUR = true; const Vec4 PURibbonTrailRender::DEFAULT_INITIAL_COLOUR(1, 1, 1, 1); const Vec4 PURibbonTrailRender::DEFAULT_COLOUR_CHANGE(0.5, 0.5, 0.5, 0.5); -PURibbonTrailRender* PURibbonTrailRender::create(const std::string& texFile) +PURibbonTrailRender* PURibbonTrailRender::create(std::string_view texFile) { auto br = new PURibbonTrailRender(); br->autorelease(); diff --git a/extensions/Particle3D/PU/CCPURibbonTrailRender.h b/extensions/Particle3D/PU/CCPURibbonTrailRender.h index 54ac52539ba9..ec3bb3870571 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrailRender.h +++ b/extensions/Particle3D/PU/CCPURibbonTrailRender.h @@ -83,7 +83,7 @@ class CC_EX_DLL PURibbonTrailRender : public PURender, public PUListener static const Vec4 DEFAULT_INITIAL_COLOUR; static const Vec4 DEFAULT_COLOUR_CHANGE; - static PURibbonTrailRender* create(const std::string& texFile = ""); + static PURibbonTrailRender* create(std::string_view texFile = ""); virtual void notifyRescaled(const Vec3& scale) override; virtual void prepare() override; diff --git a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp index c4b55f4abbc2..9b31dc5fc550 100644 --- a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp +++ b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp @@ -67,19 +67,20 @@ std::string PUObjectAbstractNode::getValue() const return cls; } -void PUObjectAbstractNode::addVariable(const std::string& inName) +void PUObjectAbstractNode::addVariable(std::string_view inName) { _env.emplace(inName, ""); } -void PUObjectAbstractNode::setVariable(const std::string& inName, const std::string& value) +void PUObjectAbstractNode::setVariable(std::string_view inName, std::string_view value) { - _env[inName] = value; + // _env[inName] = value; + hlookup::set_item(_env, inName, value); } -std::pair PUObjectAbstractNode::getVariable(const std::string& inName) const +std::pair PUObjectAbstractNode::getVariable(std::string_view inName) const { - std::unordered_map::const_iterator i = _env.find(inName); + auto i = _env.find(inName); if (i != _env.end()) return std::make_pair(true, i->second); @@ -94,7 +95,7 @@ std::pair PUObjectAbstractNode::getVariable(const std::string return std::make_pair(false, ""); } -const std::unordered_map& PUObjectAbstractNode::getVariables() const +const hlookup::string_map& PUObjectAbstractNode::getVariables() const { return _env; } @@ -187,15 +188,16 @@ PUScriptCompiler::~PUScriptCompiler() _compiledScripts.clear(); } -bool PUScriptCompiler::compile(const PUConcreteNodeList& nodes, const std::string& file) +hlookup::string_map::iterator PUScriptCompiler::compile(const PUConcreteNodeList& nodes, + std::string_view file) { if (nodes.empty()) - return false; + return _compiledScripts.end(); PUAbstractNodeList aNodes; convertToAST(nodes, aNodes); - _compiledScripts[file] = aNodes; + return hlookup::set_item(_compiledScripts, file, aNodes); // _compiledScripts[file] = aNodes; // for(PUAbstractNodeList::iterator i = aNodes.begin(); i != aNodes.end(); ++i) //{ // PUScriptTranslator *translator = PUTranslateManager::Instance()->getTranslator(*i); @@ -212,10 +214,10 @@ bool PUScriptCompiler::compile(const PUConcreteNodeList& nodes, const std::strin // for (auto iter : aNodes){ // delete iter; // } - return true; + // return true; } -const PUAbstractNodeList* PUScriptCompiler::compile(const std::string& file, bool& isFirstCompile) +const PUAbstractNodeList* PUScriptCompiler::compile(std::string_view file, bool& isFirstCompile) { auto iter = _compiledScripts.find(file); if (iter != _compiledScripts.end()) @@ -231,7 +233,7 @@ const PUAbstractNodeList* PUScriptCompiler::compile(const std::string& file, boo PUConcreteNodeList creteNodeList; lexer.openLexer(data, file, tokenList); parser.parse(creteNodeList, tokenList); - bool state = compile(creteNodeList, file); + auto it = compile(creteNodeList, file); for (auto iter1 : creteNodeList) { @@ -244,9 +246,9 @@ const PUAbstractNodeList* PUScriptCompiler::compile(const std::string& file, boo } isFirstCompile = true; - if (state) + if (it != _compiledScripts.end()) { - return &_compiledScripts[file]; + return &it->second; } return nullptr; } diff --git a/extensions/Particle3D/PU/CCPUScriptCompiler.h b/extensions/Particle3D/PU/CCPUScriptCompiler.h index 4834595f5948..e5bc4cc7b8fe 100644 --- a/extensions/Particle3D/PU/CCPUScriptCompiler.h +++ b/extensions/Particle3D/PU/CCPUScriptCompiler.h @@ -72,7 +72,7 @@ class CC_EX_DLL PUAbstractNode class CC_EX_DLL PUObjectAbstractNode : public PUAbstractNode { private: - std::unordered_map _env; + hlookup::string_map _env; public: std::string name, cls; @@ -88,10 +88,10 @@ class CC_EX_DLL PUObjectAbstractNode : public PUAbstractNode PUAbstractNode* clone() const; std::string getValue() const; - void addVariable(const std::string& name); - void setVariable(const std::string& name, const std::string& value); - std::pair getVariable(const std::string& name) const; - const std::unordered_map& getVariables() const; + void addVariable(std::string_view name); + void setVariable(std::string_view name, std::string_view value); + std::pair getVariable(std::string_view name) const; + const hlookup::string_map& getVariables() const; }; /** This abstract node represents a script property */ @@ -130,9 +130,9 @@ class CC_EX_DLL PUScriptCompiler { private: - bool compile(const PUConcreteNodeList& nodes, const std::string& file); + hlookup::string_map::iterator compile(const PUConcreteNodeList& nodes, std::string_view file); // is it excluded?// - bool isNameExcluded(const std::string& cls, PUAbstractNode* parent); + bool isNameExcluded(std::string_view cls, PUAbstractNode* parent); public: typedef std::unordered_map IdMap; @@ -141,7 +141,7 @@ class CC_EX_DLL PUScriptCompiler void setParticleSystem3D(PUParticleSystem3D* pu); - const PUAbstractNodeList* compile(const std::string& file, bool& isFirstCompile); + const PUAbstractNodeList* compile(std::string_view file, bool& isFirstCompile); void convertToAST(const PUConcreteNodeList& nodes, PUAbstractNodeList& aNodes); @@ -155,7 +155,7 @@ class CC_EX_DLL PUScriptCompiler void visit(PUConcreteNode* node); private: - std::unordered_map _compiledScripts; + hlookup::string_map _compiledScripts; PUAbstractNode* _current; PUAbstractNodeList* _nodes; PUParticleSystem3D* _PUParticleSystem3D; diff --git a/extensions/Particle3D/PU/CCPUScriptLexer.cpp b/extensions/Particle3D/PU/CCPUScriptLexer.cpp index a8720fca0fac..75aca400f7ed 100644 --- a/extensions/Particle3D/PU/CCPUScriptLexer.cpp +++ b/extensions/Particle3D/PU/CCPUScriptLexer.cpp @@ -31,7 +31,7 @@ PUScriptLexer::PUScriptLexer() {} PUScriptLexer::~PUScriptLexer() {} -void PUScriptLexer::openLexer(const std::string& str, const std::string& source, PUScriptTokenList& tokens) +void PUScriptLexer::openLexer(std::string_view str, std::string_view source, PUScriptTokenList& tokens) { enum { @@ -55,7 +55,7 @@ void PUScriptLexer::openLexer(const std::string& str, const std::string& source, // // Iterate over the input - std::string::const_iterator i = str.begin(), end = str.end(); + std::string_view::const_iterator i = str.begin(), end = str.end(); while (i != end) { lastc = c; @@ -233,7 +233,7 @@ void PUScriptLexer::openLexer(const std::string& str, const std::string& source, } } -void PUScriptLexer::setToken(const std::string& lexeme, int line, const std::string& source, PUScriptTokenList* tokens) +void PUScriptLexer::setToken(std::string_view lexeme, int line, std::string_view source, PUScriptTokenList* tokens) { const char openBracket = '{', closeBracket = '}', colon = ':', quote = '\"', var = '$'; diff --git a/extensions/Particle3D/PU/CCPUScriptLexer.h b/extensions/Particle3D/PU/CCPUScriptLexer.h index e5133cf323ef..907ef09a7bed 100644 --- a/extensions/Particle3D/PU/CCPUScriptLexer.h +++ b/extensions/Particle3D/PU/CCPUScriptLexer.h @@ -67,12 +67,12 @@ class PUScriptLexer PUScriptLexer(); ~PUScriptLexer(); - void openLexer(const std::string& str, const std::string& source, PUScriptTokenList& tokenList); + void openLexer(std::string_view str, std::string_view source, PUScriptTokenList& tokenList); /** Tokenizes the given input and returns the list of tokens found */ // tokenize(const std::string &str, const std::string &source); private: // Private utility operations - void setToken(const std::string& lexeme, int line, const std::string& source, PUScriptTokenList* tokens); + void setToken(std::string_view lexeme, int line, std::string_view source, PUScriptTokenList* tokens); bool isWhitespace(char c) const; bool isNewline(char c) const; }; diff --git a/extensions/Particle3D/PU/CCPUScriptTranslator.cpp b/extensions/Particle3D/PU/CCPUScriptTranslator.cpp index a73539e24a7a..3eeb334127e0 100644 --- a/extensions/Particle3D/PU/CCPUScriptTranslator.cpp +++ b/extensions/Particle3D/PU/CCPUScriptTranslator.cpp @@ -517,7 +517,7 @@ bool PUScriptTranslator::getQuaternion(PUAbstractNodeList::const_iterator i, //------------------------------------------------------------------------- bool PUScriptTranslator::passValidateProperty(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, - const std::string& token2, + std::string_view token2, ValidationType validationType) { if (!passValidatePropertyNoValues(compiler, prop, token2)) @@ -594,7 +594,7 @@ bool PUScriptTranslator::passValidateProperty(PUScriptCompiler* compiler, //------------------------------------------------------------------------- bool PUScriptTranslator::passValidatePropertyNoValues(PUScriptCompiler* /*compiler*/, PUPropertyAbstractNode* prop, - const std::string& /*token2*/) + std::string_view /*token2*/) { if (prop->values.empty()) { @@ -607,7 +607,7 @@ bool PUScriptTranslator::passValidatePropertyNoValues(PUScriptCompiler* /*compil //------------------------------------------------------------------------- bool PUScriptTranslator::passValidatePropertyNumberOfValues(PUScriptCompiler* /*compiler*/, PUPropertyAbstractNode* prop, - const std::string& /*token2*/, + std::string_view /*token2*/, unsigned short numberOfValues) { if (prop->values.size() > numberOfValues) @@ -619,7 +619,7 @@ bool PUScriptTranslator::passValidatePropertyNumberOfValues(PUScriptCompiler* /* //------------------------------------------------------------------------- bool PUScriptTranslator::passValidatePropertyNumberOfValuesRange(PUScriptCompiler* /*compiler*/, PUPropertyAbstractNode* prop, - const std::string& /*token2*/, + std::string_view /*token2*/, unsigned short minNumberOfValues, unsigned short maxNumberOfValues) { diff --git a/extensions/Particle3D/PU/CCPUScriptTranslator.h b/extensions/Particle3D/PU/CCPUScriptTranslator.h index 0e9af6d757f6..c57b7664a17c 100644 --- a/extensions/Particle3D/PU/CCPUScriptTranslator.h +++ b/extensions/Particle3D/PU/CCPUScriptTranslator.h @@ -679,27 +679,27 @@ class PUScriptTranslator */ bool passValidateProperty(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, - const std::string& token, + std::string_view token, ValidationType validationType); /** Validate whether a property has values. */ bool passValidatePropertyNoValues(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, - const std::string& token); + std::string_view token); /** Validate whether the number of values is correct. */ bool passValidatePropertyNumberOfValues(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, - const std::string& token, + std::string_view token, unsigned short numberOfValues); /** Validate whether the number of values is between a range. */ bool passValidatePropertyNumberOfValuesRange(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, - const std::string& token, + std::string_view token, unsigned short minNumberOfValues, unsigned short maxNumberOfValues); diff --git a/extensions/Particle3D/PU/CCPUSlaveEmitter.cpp b/extensions/Particle3D/PU/CCPUSlaveEmitter.cpp index 904cab168e9e..e5880b2f9c8d 100644 --- a/extensions/Particle3D/PU/CCPUSlaveEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUSlaveEmitter.cpp @@ -39,22 +39,22 @@ PUSlaveEmitter::PUSlaveEmitter() , _masterEmitterNameSet(false) {} //----------------------------------------------------------------------- -const std::string& PUSlaveEmitter::getMasterTechniqueName() const +std::string_view PUSlaveEmitter::getMasterTechniqueName() const { return _masterTechniqueName; } //----------------------------------------------------------------------- -void PUSlaveEmitter::setMasterTechniqueName(const std::string& masterTechniqueName) +void PUSlaveEmitter::setMasterTechniqueName(std::string_view masterTechniqueName) { _masterTechniqueName = masterTechniqueName; } //----------------------------------------------------------------------- -const std::string& PUSlaveEmitter::getMasterEmitterName() const +std::string_view PUSlaveEmitter::getMasterEmitterName() const { return _masterEmitterName; } //----------------------------------------------------------------------- -void PUSlaveEmitter::setMasterEmitterName(const std::string& masterEmitterName) +void PUSlaveEmitter::setMasterEmitterName(std::string_view masterEmitterName) { _masterEmitterName = masterEmitterName; _masterEmitterNameSet = true; diff --git a/extensions/Particle3D/PU/CCPUSlaveEmitter.h b/extensions/Particle3D/PU/CCPUSlaveEmitter.h index 32ab26c3c081..c260cf59e479 100644 --- a/extensions/Particle3D/PU/CCPUSlaveEmitter.h +++ b/extensions/Particle3D/PU/CCPUSlaveEmitter.h @@ -39,15 +39,15 @@ class CC_EX_DLL PUSlaveEmitter : public PUEmitter, public PUListener /** */ - const std::string& getMasterTechniqueName() const; + std::string_view getMasterTechniqueName() const; /** */ - void setMasterTechniqueName(const std::string& masterTechniqueName); + void setMasterTechniqueName(std::string_view masterTechniqueName); /** */ - const std::string& getMasterEmitterName() const; + std::string_view getMasterEmitterName() const; /** See ParticleEmitter. */ @@ -79,7 +79,7 @@ class CC_EX_DLL PUSlaveEmitter : public PUEmitter, public PUListener /** */ - void setMasterEmitterName(const std::string& masterEmitterName); + void setMasterEmitterName(std::string_view masterEmitterName); virtual PUSlaveEmitter* clone() override; virtual void copyAttributesTo(PUEmitter* emitter) override; diff --git a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp index c7fcbb0276d3..ffbf9934d343 100644 --- a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp @@ -84,12 +84,12 @@ NS_CC_BEGIN // mStep = step; // } ////----------------------------------------------------------------------- -// const std::string& Particle3DVertexEmitter::getMeshName() const +// std::string_view Particle3DVertexEmitter::getMeshName() const //{ // return mMeshName; // } ////----------------------------------------------------------------------- -// void Particle3DVertexEmitter::setMeshName(const std::string& meshName) +// void Particle3DVertexEmitter::setMeshName(std::string_view meshName) //{ // _setDefaults(); // Triggers loading the new mesh // mMeshName = meshName; diff --git a/extensions/Particle3D/PU/CCPUVertexEmitter.h b/extensions/Particle3D/PU/CCPUVertexEmitter.h index 7db52020dd36..b808d43acd36 100644 --- a/extensions/Particle3D/PU/CCPUVertexEmitter.h +++ b/extensions/Particle3D/PU/CCPUVertexEmitter.h @@ -148,7 +148,7 @@ NS_CC_BEGIN // // /** // */ -// const std::string& getMeshName() const; +// std::string_view getMeshName() const; // // /** // */ @@ -156,7 +156,7 @@ NS_CC_BEGIN // // /** // */ -// void setMeshName(const std::string& meshName); +// void setMeshName(std::string_view meshName); // // /** // */ diff --git a/extensions/assets-manager/AssetsManager.cpp b/extensions/assets-manager/AssetsManager.cpp index 2566e7b0c248..8b9b571df10e 100644 --- a/extensions/assets-manager/AssetsManager.cpp +++ b/extensions/assets-manager/AssetsManager.cpp @@ -182,7 +182,7 @@ AssetsManager::AssetsManager(const char* packageUrl /* =nullptr */, checkStoragePath(); // convert downloader error code to AssetsManager::ErrorCode _downloader->onTaskError = [this](const DownloadTask& /*task*/, int errorCode, int /*errorCodeInternal*/, - const std::string& /*errorStr*/) { + std::string_view /*errorStr*/) { _isDownloading = false; if (nullptr == _delegate) @@ -278,10 +278,10 @@ void AssetsManager::checkStoragePath() } // Multiple key names -static std::string keyWithHash(const char* prefix, const std::string& url) +static std::string keyWithHash(const char* prefix, std::string_view url) { char buf[256]; - sprintf(buf, "%s%zd", prefix, std::hash()(url)); + sprintf(buf, "%s%zd", prefix, std::hash()(url)); return buf; } @@ -565,9 +565,9 @@ void AssetsManager::setVersionFileUrl(const char* versionFileUrl) _versionFileUrl = versionFileUrl; } -string AssetsManager::getVersion() +std::string_view AssetsManager::getVersion() { - return UserDefault::getInstance()->getStringForKey(keyOfVersion().c_str()); + return UserDefault::getInstance()->getStringForKey(keyOfVersion().data()); } void AssetsManager::deleteVersion() diff --git a/extensions/assets-manager/AssetsManager.h b/extensions/assets-manager/AssetsManager.h index 34a1fb8125a8..b6587157a1ef 100644 --- a/extensions/assets-manager/AssetsManager.h +++ b/extensions/assets-manager/AssetsManager.h @@ -137,7 +137,7 @@ class CC_EX_DLL AssetsManager : public Node /* @brief Gets current version code. */ - std::string getVersion(); + std::string_view getVersion(); /* @brief Deletes recorded version code. */ diff --git a/extensions/assets-manager/AssetsManagerEx.cpp b/extensions/assets-manager/AssetsManagerEx.cpp index 10f555c1ce98..8636f4523e11 100644 --- a/extensions/assets-manager/AssetsManagerEx.cpp +++ b/extensions/assets-manager/AssetsManagerEx.cpp @@ -168,8 +168,7 @@ int AssetManagerEx_error_file_func(voidpf opaque, voidpf stream) // Implementation of AssetsManagerEx -AssetsManagerEx::AssetsManagerEx(const std::string& manifestUrl, const std::string& storagePath) - : _manifestUrl(manifestUrl) +AssetsManagerEx::AssetsManagerEx(std::string_view manifestUrl, std::string_view storagePath) : _manifestUrl(manifestUrl) { // Init variables _eventDispatcher = Director::getInstance()->getEventDispatcher(); @@ -208,14 +207,14 @@ AssetsManagerEx::~AssetsManagerEx() CC_SAFE_RELEASE(_remoteManifest); } -AssetsManagerEx* AssetsManagerEx::create(const std::string& manifestUrl, const std::string& storagePath) +AssetsManagerEx* AssetsManagerEx::create(std::string_view manifestUrl, std::string_view storagePath) { AssetsManagerEx* ret = new AssetsManagerEx(manifestUrl, storagePath); ret->autorelease(); return ret; } -void AssetsManagerEx::initManifests(const std::string& manifestUrl) +void AssetsManagerEx::initManifests(std::string_view manifestUrl) { _inited = true; // Init and load local manifest @@ -260,7 +259,7 @@ void AssetsManagerEx::prepareLocalManifest() _localManifest->prependSearchPaths(); } -void AssetsManagerEx::loadLocalManifest(const std::string& /*manifestUrl*/) +void AssetsManagerEx::loadLocalManifest(std::string_view /*manifestUrl*/) { Manifest* cachedManifest = nullptr; // Find the cached manifest file @@ -329,7 +328,7 @@ void AssetsManagerEx::loadLocalManifest(const std::string& /*manifestUrl*/) } } -std::string AssetsManagerEx::basename(const std::string& path) const +std::string_view AssetsManagerEx::basename(std::string_view path) const { size_t found = path.find_last_of("/\\"); @@ -343,7 +342,7 @@ std::string AssetsManagerEx::basename(const std::string& path) const } } -std::string AssetsManagerEx::get(const std::string& key) const +std::string AssetsManagerEx::get(std::string_view key) const { auto it = _assets->find(key); if (it != _assets->cend()) @@ -364,12 +363,12 @@ const Manifest* AssetsManagerEx::getRemoteManifest() const return _remoteManifest; } -const std::string& AssetsManagerEx::getStoragePath() const +std::string_view AssetsManagerEx::getStoragePath() const { return _storagePath; } -void AssetsManagerEx::setStoragePath(const std::string& storagePath) +void AssetsManagerEx::setStoragePath(std::string_view storagePath) { _storagePath = storagePath; adjustPath(_storagePath); @@ -389,16 +388,16 @@ void AssetsManagerEx::adjustPath(std::string& path) } } -bool AssetsManagerEx::decompress(const std::string& zip) +bool AssetsManagerEx::decompress(std::string_view zip) { // Find root path for zip file size_t pos = zip.find_last_of("/\\"); if (pos == std::string::npos) { - CCLOG("AssetsManagerEx : no root path specified for zip file %s\n", zip.c_str()); + CCLOG("AssetsManagerEx : no root path specified for zip file %s\n", zip.data()); return false; } - const std::string rootPath = zip.substr(0, pos + 1); + const std::string_view rootPath = zip.substr(0, pos + 1); zlib_filefunc_def_s zipFunctionOverrides; fillZipFunctionOverrides(zipFunctionOverrides); @@ -409,10 +408,10 @@ bool AssetsManagerEx::decompress(const std::string& zip) zipFunctionOverrides.opaque = &zipFileInfo; // Open the zip file - unzFile zipfile = unzOpen2(zip.c_str(), &zipFunctionOverrides); + unzFile zipfile = unzOpen2(zip.data(), &zipFunctionOverrides); if (!zipfile) { - CCLOG("AssetsManagerEx : can not open downloaded zip file %s\n", zip.c_str()); + CCLOG("AssetsManagerEx : can not open downloaded zip file %s\n", zip.data()); return false; } @@ -420,7 +419,7 @@ bool AssetsManagerEx::decompress(const std::string& zip) unz_global_info global_info; if (unzGetGlobalInfo(zipfile, &global_info) != UNZ_OK) { - CCLOG("AssetsManagerEx : can not read file global info of %s\n", zip.c_str()); + CCLOG("AssetsManagerEx : can not read file global info of %s\n", zip.data()); unzClose(zipfile); return false; } @@ -440,7 +439,8 @@ bool AssetsManagerEx::decompress(const std::string& zip) unzClose(zipfile); return false; } - const std::string fullPath = rootPath + fileName; + std::string fullPath{rootPath}; + fullPath += fileName; // Check if this entry is a directory or a file. const size_t filenameLength = strlen(fileName); @@ -459,7 +459,7 @@ bool AssetsManagerEx::decompress(const std::string& zip) else { // Create all directories in advance to avoid issue - std::string dir = basename(fullPath); + std::string_view dir = basename(fullPath); if (!_fileUtils->isDirectoryExist(dir)) { if (!_fileUtils->createDirectory(dir)) @@ -531,7 +531,7 @@ bool AssetsManagerEx::decompress(const std::string& zip) return true; } -void AssetsManagerEx::decompressDownloadedZip(const std::string& customId, const std::string& storagePath) +void AssetsManagerEx::decompressDownloadedZip(std::string_view customId, std::string_view storagePath) { struct AsyncData { @@ -573,8 +573,8 @@ void AssetsManagerEx::decompressDownloadedZip(const std::string& customId, const } void AssetsManagerEx::dispatchUpdateEvent(EventAssetsManagerEx::EventCode code, - const std::string& assetId /* = ""*/, - const std::string& message /* = ""*/, + std::string_view assetId /* = ""*/, + std::string_view message /* = ""*/, int curle_code /* = CURLE_OK*/, int curlm_code /* = CURLM_OK*/) { @@ -619,7 +619,7 @@ void AssetsManagerEx::downloadVersion() if (_updateState > State::PREDOWNLOAD_VERSION) return; - std::string versionUrl = _localManifest->getVersionFileUrl(); + std::string_view versionUrl = _localManifest->getVersionFileUrl(); if (!versionUrl.empty()) { @@ -786,7 +786,7 @@ void AssetsManagerEx::startUpdate() _tempManifest = _remoteManifest; // Check difference between local manifest and remote manifest - std::unordered_map diff_map = _localManifest->genDiff(_remoteManifest); + hlookup::string_map diff_map = _localManifest->genDiff(_remoteManifest); if (diff_map.empty()) { updateSucceed(); @@ -794,7 +794,7 @@ void AssetsManagerEx::startUpdate() else { // Generate download units for all assets that need to be updated or added - std::string packageUrl = _remoteManifest->getPackageUrl(); + std::string_view packageUrl = _remoteManifest->getPackageUrl(); // Save current download manifest information for resuming _tempManifest->saveToFile(_tempManifestPath); // Preprocessing local files in previous version and creating download folders @@ -803,10 +803,11 @@ void AssetsManagerEx::startUpdate() Manifest::AssetDiff diff = it->second; if (diff.type != Manifest::DiffType::DELETED) { - std::string path = diff.asset.path; + const std::string& path = diff.asset.path; DownloadUnit unit; - unit.customId = it->first; - unit.srcUrl = packageUrl + path; + unit.customId = it->first; + unit.srcUrl = packageUrl; + unit.srcUrl += path; unit.storagePath = _tempStoragePath + path; unit.size = diff.asset.size; _downloadUnits.emplace(unit.customId, unit); @@ -1034,8 +1035,8 @@ void AssetsManagerEx::downloadFailedAssets() updateAssets(_failedUnits); } -void AssetsManagerEx::fileError(const std::string& identifier, - const std::string& errorStr, +void AssetsManagerEx::fileError(std::string_view identifier, + std::string_view errorStr, int errorCode, int errorCodeInternal) { @@ -1056,7 +1057,7 @@ void AssetsManagerEx::fileError(const std::string& identifier, queueDowload(); } -void AssetsManagerEx::fileSuccess(const std::string& customId, const std::string& storagePath) +void AssetsManagerEx::fileSuccess(std::string_view customId, std::string_view storagePath) { // Set download state to SUCCESSED _tempManifest->setAssetDownloadState(customId, Manifest::DownloadState::SUCCESSED); @@ -1089,7 +1090,7 @@ void AssetsManagerEx::fileSuccess(const std::string& customId, const std::string void AssetsManagerEx::onError(const network::DownloadTask& task, int errorCode, int errorCodeInternal, - const std::string& errorStr) + std::string_view errorStr) { // Skip version error occurred if (task.identifier == VERSION_ID) @@ -1110,10 +1111,7 @@ void AssetsManagerEx::onError(const network::DownloadTask& task, } } -void AssetsManagerEx::onProgress(double total, - double downloaded, - const std::string& /*url*/, - const std::string& customId) +void AssetsManagerEx::onProgress(double total, double downloaded, std::string_view /*url*/, std::string_view customId) { if (customId == VERSION_ID || customId == MANIFEST_ID) { @@ -1170,9 +1168,7 @@ void AssetsManagerEx::onProgress(double total, } } -void AssetsManagerEx::onSuccess(const std::string& /*srcUrl*/, - const std::string& storagePath, - const std::string& customId) +void AssetsManagerEx::onSuccess(std::string_view /*srcUrl*/, std::string_view storagePath, std::string_view customId) { if (customId == VERSION_ID) { diff --git a/extensions/assets-manager/AssetsManagerEx.h b/extensions/assets-manager/AssetsManagerEx.h index 7180323d2d65..7a77db5b44c8 100644 --- a/extensions/assets-manager/AssetsManagerEx.h +++ b/extensions/assets-manager/AssetsManagerEx.h @@ -77,7 +77,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref @warning The cached manifest in your storage path have higher priority and will be searched first, only if it doesn't exist, AssetsManagerEx will use the given manifestUrl. */ - static AssetsManagerEx* create(const std::string& manifestUrl, const std::string& storagePath); + static AssetsManagerEx* create(std::string_view manifestUrl, std::string_view storagePath); /** @brief Check out if there is a new version of manifest. * You may use this method before updating, then let user determine whether @@ -99,7 +99,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref /** @brief Gets storage path. */ - const std::string& getStoragePath() const; + std::string_view getStoragePath() const; /** @brief Function for retrieving the local manifest object */ @@ -120,8 +120,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref /** @brief Set the handle function for comparing manifests versions * @param handle The compare function */ - void setVersionCompareHandle( - const std::function& handle) + void setVersionCompareHandle(const std::function& handle) { _versionCompareHandle = handle; }; @@ -130,37 +129,37 @@ class CC_EX_DLL AssetsManagerEx : public Ref * verification * @param callback The verify callback function */ - void setVerifyCallback(const std::function& callback) + void setVerifyCallback(const std::function& callback) { _verifyCallback = callback; }; CC_CONSTRUCTOR_ACCESS : - AssetsManagerEx(const std::string& manifestUrl, const std::string& storagePath); + AssetsManagerEx(std::string_view manifestUrl, std::string_view storagePath); virtual ~AssetsManagerEx(); protected: - std::string basename(const std::string& path) const; + std::string_view basename(std::string_view path) const; - std::string get(const std::string& key) const; + std::string get(std::string_view key) const; - void initManifests(const std::string& manifestUrl); + void initManifests(std::string_view manifestUrl); - void loadLocalManifest(const std::string& manifestUrl); + void loadLocalManifest(std::string_view manifestUrl); void prepareLocalManifest(); - void setStoragePath(const std::string& storagePath); + void setStoragePath(std::string_view storagePath); void adjustPath(std::string& path); void dispatchUpdateEvent(EventAssetsManagerEx::EventCode code, - const std::string& message = "", - const std::string& assetId = "", - int curle_code = 0, - int curlm_code = 0); + std::string_view message = "", + std::string_view assetId = "", + int curle_code = 0, + int curlm_code = 0); void downloadVersion(); void parseVersion(); @@ -168,8 +167,8 @@ class CC_EX_DLL AssetsManagerEx : public Ref void parseManifest(); void startUpdate(); void updateSucceed(); - bool decompress(const std::string& filename); - void decompressDownloadedZip(const std::string& customId, const std::string& storagePath); + bool decompress(std::string_view filename); + void decompressDownloadedZip(std::string_view customId, std::string_view storagePath); /** @brief Update a list of assets under the current AssetsManagerEx context */ @@ -187,12 +186,12 @@ class CC_EX_DLL AssetsManagerEx : public Ref */ void queueDowload(); - void fileError(const std::string& identifier, - const std::string& errorStr, + void fileError(std::string_view identifier, + std::string_view errorStr, int errorCode = 0, int errorCodeInternal = 0); - void fileSuccess(const std::string& customId, const std::string& storagePath); + void fileSuccess(std::string_view customId, std::string_view storagePath); /** @brief Call back function for error handling, the error will then be reported to user's listener registed in addUpdateEventListener @@ -204,7 +203,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref virtual void onError(const network::DownloadTask& task, int errorCode, int errorCodeInternal, - const std::string& errorStr); + std::string_view errorStr); /** @brief Call back function for recording downloading percent of the current asset, the progression will then be reported to user's listener registed in addUpdateProgressEventListener @@ -216,7 +215,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref * @js NA * @lua NA */ - virtual void onProgress(double total, double downloaded, const std::string& url, const std::string& customId); + virtual void onProgress(double total, double downloaded, std::string_view url, std::string_view customId); /** @brief Call back function for success of the current asset the success event will then be send to user's listener registed in addUpdateEventListener @@ -226,7 +225,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref * @js NA * @lua NA */ - virtual void onSuccess(const std::string& srcUrl, const std::string& storagePath, const std::string& customId); + virtual void onSuccess(std::string_view srcUrl, std::string_view storagePath, std::string_view customId); private: void batchDownload(); @@ -250,7 +249,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref std::shared_ptr _downloader; //! The reference to the local assets - const std::unordered_map* _assets = nullptr; + const hlookup::string_map* _assets = nullptr; //! The path to store successfully downloaded version. std::string _storagePath; @@ -320,7 +319,7 @@ class CC_EX_DLL AssetsManagerEx : public Ref double _totalSize; //! Downloaded size for each file - std::unordered_map _downloadedSize; + hlookup::string_map _downloadedSize; //! Total number of assets to download int _totalToDownload = 0; @@ -330,10 +329,10 @@ class CC_EX_DLL AssetsManagerEx : public Ref float _nextSavePoint = 0.f; //! Handle function to compare versions between different manifests - std::function _versionCompareHandle = nullptr; + std::function _versionCompareHandle = nullptr; //! Callback function to verify the downloaded assets - std::function _verifyCallback = nullptr; + std::function _verifyCallback = nullptr; //! Marker for whether the assets manager is inited bool _inited = false; diff --git a/extensions/assets-manager/CCEventAssetsManagerEx.cpp b/extensions/assets-manager/CCEventAssetsManagerEx.cpp index 183daae66016..e14a7eed3025 100644 --- a/extensions/assets-manager/CCEventAssetsManagerEx.cpp +++ b/extensions/assets-manager/CCEventAssetsManagerEx.cpp @@ -30,13 +30,13 @@ NS_CC_EXT_BEGIN -EventAssetsManagerEx::EventAssetsManagerEx(const std::string& eventName, +EventAssetsManagerEx::EventAssetsManagerEx(std::string_view eventName, cocos2d::extension::AssetsManagerEx* manager, const EventCode& code, float percent /* = 0 */, float percentByFile /* = 0*/, - const std::string& assetId /* = "" */, - const std::string& message /* = "" */, + std::string_view assetId /* = "" */, + std::string_view message /* = "" */, int curle_code /* = CURLE_OK*/, int curlm_code /* = CURLM_OK*/) : EventCustom(eventName) diff --git a/extensions/assets-manager/CCEventAssetsManagerEx.h b/extensions/assets-manager/CCEventAssetsManagerEx.h index 0d261ac5b958..cf205840bf40 100644 --- a/extensions/assets-manager/CCEventAssetsManagerEx.h +++ b/extensions/assets-manager/CCEventAssetsManagerEx.h @@ -74,13 +74,13 @@ class CC_EX_DLL EventAssetsManagerEx : public cocos2d::EventCustom CC_CONSTRUCTOR_ACCESS : /** Constructor */ - EventAssetsManagerEx(const std::string& eventName, + EventAssetsManagerEx(std::string_view eventName, cocos2d::extension::AssetsManagerEx* manager, const EventCode& code, float percent = 0, float percentByFile = 0, - const std::string& assetId = "", - const std::string& message = "", + std::string_view assetId = "", + std::string_view message = "", int curle_code = 0, int curlm_code = 0); diff --git a/extensions/assets-manager/Manifest.cpp b/extensions/assets-manager/Manifest.cpp index 43dc418e19e7..4e64bc8eae66 100644 --- a/extensions/assets-manager/Manifest.cpp +++ b/extensions/assets-manager/Manifest.cpp @@ -50,16 +50,16 @@ NS_CC_EXT_BEGIN -static int cmpVersion(const std::string& v1, const std::string& v2) +static int cmpVersion(std::string_view v1, std::string_view v2) { int i; int oct_v1[4] = {0}, oct_v2[4] = {0}; - int filled1 = std::sscanf(v1.c_str(), "%d.%d.%d.%d", &oct_v1[0], &oct_v1[1], &oct_v1[2], &oct_v1[3]); - int filled2 = std::sscanf(v2.c_str(), "%d.%d.%d.%d", &oct_v2[0], &oct_v2[1], &oct_v2[2], &oct_v2[3]); + int filled1 = std::sscanf(v1.data(), "%d.%d.%d.%d", &oct_v1[0], &oct_v1[1], &oct_v1[2], &oct_v1[3]); + int filled2 = std::sscanf(v2.data(), "%d.%d.%d.%d", &oct_v2[0], &oct_v2[1], &oct_v2[2], &oct_v2[3]); if (filled1 == 0 || filled2 == 0) { - return strcmp(v1.c_str(), v2.c_str()); + return v1 != v2; // strcmp(v1.data(), v2.data()); } for (i = 0; i < 4; i++) { @@ -71,7 +71,7 @@ static int cmpVersion(const std::string& v1, const std::string& v2) return 0; } -Manifest::Manifest(const std::string& manifestUrl /* = ""*/) +Manifest::Manifest(std::string_view manifestUrl /* = ""*/) : _versionLoaded(false) , _loaded(false) , _manifestRoot("") @@ -86,7 +86,7 @@ Manifest::Manifest(const std::string& manifestUrl /* = ""*/) parse(manifestUrl); } -void Manifest::loadJson(const std::string& url) +void Manifest::loadJson(std::string_view url) { clear(); std::string content; @@ -97,7 +97,7 @@ void Manifest::loadJson(const std::string& url) if (content.empty()) { - CCLOG("Fail to retrieve local file content: %s\n", url.c_str()); + CCLOG("Fail to retrieve local file content: %s\n", url.data()); } else { @@ -116,7 +116,7 @@ void Manifest::loadJson(const std::string& url) } } -void Manifest::parseVersion(const std::string& versionUrl) +void Manifest::parseVersion(std::string_view versionUrl) { loadJson(versionUrl); @@ -126,7 +126,7 @@ void Manifest::parseVersion(const std::string& versionUrl) } } -void Manifest::parse(const std::string& manifestUrl) +void Manifest::parse(std::string_view manifestUrl) { loadJson(manifestUrl); @@ -162,7 +162,7 @@ bool Manifest::versionEquals(const Manifest* b) const else { std::vector bGroups = b->getGroups(); - std::unordered_map bGroupVer = b->getGroupVerions(); + auto& bGroupVer = b->getGroupVerions(); // Check group size if (bGroups.size() != _groups.size()) return false; @@ -184,10 +184,10 @@ bool Manifest::versionEquals(const Manifest* b) const bool Manifest::versionGreater( const Manifest* b, - const std::function& handle) const + const std::function& handle) const { - std::string localVersion = getVersion(); - const std::string& bVersion = b->getVersion(); + std::string_view localVersion = getVersion(); + std::string_view bVersion = b->getVersion(); bool greater; if (handle) { @@ -200,16 +200,16 @@ bool Manifest::versionGreater( return greater; } -std::unordered_map Manifest::genDiff(const Manifest* b) const +hlookup::string_map Manifest::genDiff(const Manifest* b) const { - std::unordered_map diff_map; - const std::unordered_map& bAssets = b->getAssets(); + hlookup::string_map diff_map; + auto& bAssets = b->getAssets(); std::string key; Asset valueA; Asset valueB; - std::unordered_map::const_iterator valueIt, it; + hlookup::string_map::const_iterator valueIt, it; for (it = _assets.begin(); it != _assets.end(); ++it) { key = it->first; @@ -317,22 +317,22 @@ void Manifest::prependSearchPaths() } } -const std::string& Manifest::getPackageUrl() const +std::string_view Manifest::getPackageUrl() const { return _packageUrl; } -const std::string& Manifest::getManifestFileUrl() const +std::string_view Manifest::getManifestFileUrl() const { return _remoteManifestUrl; } -const std::string& Manifest::getVersionFileUrl() const +std::string_view Manifest::getVersionFileUrl() const { return _remoteVersionUrl; } -const std::string& Manifest::getVersion() const +std::string_view Manifest::getVersion() const { return _version; } @@ -342,22 +342,22 @@ const std::vector& Manifest::getGroups() const return _groups; } -const std::unordered_map& Manifest::getGroupVerions() const +const hlookup::string_map& Manifest::getGroupVerions() const { return _groupVer; } -const std::string& Manifest::getGroupVersion(const std::string& group) const +std::string_view Manifest::getGroupVersion(std::string_view group) const { return _groupVer.at(group); } -const std::unordered_map& Manifest::getAssets() const +const hlookup::string_map& Manifest::getAssets() const { return _assets; } -void Manifest::setAssetDownloadState(const std::string& key, const Manifest::DownloadState& state) +void Manifest::setAssetDownloadState(std::string_view key, const Manifest::DownloadState& state) { auto valueIt = _assets.find(key); if (valueIt != _assets.end()) @@ -372,9 +372,9 @@ void Manifest::setAssetDownloadState(const std::string& key, const Manifest::Dow rapidjson::Value& assets = _json[KEY_ASSETS]; if (assets.IsObject()) { - if (assets.HasMember(key.c_str())) + if (assets.HasMember(key.data())) { - rapidjson::Value& entry = assets[key.c_str()]; + rapidjson::Value& entry = assets[key.data()]; if (entry.HasMember(KEY_DOWNLOAD_STATE) && entry[KEY_DOWNLOAD_STATE].IsInt()) { entry[KEY_DOWNLOAD_STATE].SetInt((int)state); @@ -413,7 +413,7 @@ void Manifest::clear() } } -Manifest::Asset Manifest::parseAsset(const std::string& path, const rapidjson::Value& json) +Manifest::Asset Manifest::parseAsset(std::string_view path, const rapidjson::Value& json) { Asset asset; asset.path = path; @@ -553,7 +553,7 @@ void Manifest::loadManifest(const rapidjson::Document& json) _loaded = true; } -void Manifest::saveToFile(const std::string& filepath) +void Manifest::saveToFile(std::string_view filepath) { rapidjson::StringBuffer buffer; rapidjson::PrettyWriter writer(buffer); diff --git a/extensions/assets-manager/Manifest.h b/extensions/assets-manager/Manifest.h index 695cbe55c7e9..92edcb4dd288 100644 --- a/extensions/assets-manager/Manifest.h +++ b/extensions/assets-manager/Manifest.h @@ -56,7 +56,7 @@ struct ManifestAsset int downloadState; }; -typedef std::unordered_map DownloadUnits; +typedef hlookup::string_map DownloadUnits; class CC_EX_DLL Manifest : public Ref { @@ -99,19 +99,19 @@ class CC_EX_DLL Manifest : public Ref /** @brief Gets remote package url. */ - const std::string& getPackageUrl() const; + std::string_view getPackageUrl() const; /** @brief Gets remote manifest file url. */ - const std::string& getManifestFileUrl() const; + std::string_view getManifestFileUrl() const; /** @brief Gets remote version file url. */ - const std::string& getVersionFileUrl() const; + std::string_view getVersionFileUrl() const; /** @brief Gets manifest version. */ - const std::string& getVersion() const; + std::string_view getVersion() const; /** @brief Get the search paths list related to the Manifest. */ @@ -121,22 +121,22 @@ class CC_EX_DLL Manifest : public Ref /** @brief Constructor for Manifest class * @param manifestUrl Url of the local manifest */ - Manifest(const std::string& manifestUrl = ""); + Manifest(std::string_view manifestUrl = ""); /** @brief Load the json file into local json object * @param url Url of the json file */ - void loadJson(const std::string& url); + void loadJson(std::string_view url); /** @brief Parse the version file information into this manifest * @param versionUrl Url of the local version file */ - void parseVersion(const std::string& versionUrl); + void parseVersion(std::string_view versionUrl); /** @brief Parse the manifest file information into this manifest * @param manifestUrl Url of the local manifest */ - void parse(const std::string& manifestUrl); + void parse(std::string_view manifestUrl); /** @brief Check whether the version of this manifest equals to another. * @param b The other manifest @@ -151,12 +151,12 @@ class CC_EX_DLL Manifest : public Ref */ bool versionGreater( const Manifest* b, - const std::function& handle) const; + const std::function& handle) const; /** @brief Generate difference between this Manifest and another. * @param b The other manifest */ - std::unordered_map genDiff(const Manifest* b) const; + hlookup::string_map genDiff(const Manifest* b) const; /** @brief Generate resuming download assets list * @param units The download units reference to be modified by the generation result @@ -171,9 +171,9 @@ class CC_EX_DLL Manifest : public Ref void loadManifest(const rapidjson::Document& json); - void saveToFile(const std::string& filepath); + void saveToFile(std::string_view filepath); - Asset parseAsset(const std::string& path, const rapidjson::Value& json); + Asset parseAsset(std::string_view path, const rapidjson::Value& json); void clear(); @@ -183,26 +183,26 @@ class CC_EX_DLL Manifest : public Ref /** @brief Gets all groups version. */ - const std::unordered_map& getGroupVerions() const; + const hlookup::string_map& getGroupVerions() const; /** @brief Gets version for the given group. * @param group Key of the requested group */ - const std::string& getGroupVersion(const std::string& group) const; + std::string_view getGroupVersion(std::string_view group) const; /** * @brief Gets assets. * @lua NA */ - const std::unordered_map& getAssets() const; + const hlookup::string_map& getAssets() const; /** @brief Set the download state for an asset * @param key Key of the asset to set * @param state The current download state of the asset */ - void setAssetDownloadState(const std::string& key, const DownloadState& state); + void setAssetDownloadState(std::string_view key, const DownloadState& state); - void setManifestRoot(const std::string& root) { _manifestRoot = root; }; + void setManifestRoot(std::string_view root) { _manifestRoot = root; }; private: //! Indicate whether the version informations have been fully loaded @@ -233,13 +233,13 @@ class CC_EX_DLL Manifest : public Ref std::vector _groups; //! The versions of all local group [Optional] - std::unordered_map _groupVer; + hlookup::string_map _groupVer; //! The version of local engine std::string _engineVer; //! Full assets list - std::unordered_map _assets; + hlookup::string_map _assets; //! All search paths std::vector _searchPaths; diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimeline.cpp b/extensions/cocostudio/ActionTimeline/CCActionTimeline.cpp index bf4dd8ac18b8..6edbb870737a 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimeline.cpp +++ b/extensions/cocostudio/ActionTimeline/CCActionTimeline.cpp @@ -319,12 +319,12 @@ void ActionTimeline::removeAnimationInfo(std::string animationName) _animationInfos.erase(animationName); } -bool ActionTimeline::IsAnimationInfoExists(const std::string& animationName) +bool ActionTimeline::IsAnimationInfoExists(std::string_view animationName) { return _animationInfos.find(animationName) != _animationInfos.end(); } -const AnimationInfo& ActionTimeline::getAnimationInfo(const std::string& animationName) +const AnimationInfo& ActionTimeline::getAnimationInfo(std::string_view animationName) { return _animationInfos.find(animationName)->second; } @@ -369,7 +369,7 @@ void ActionTimeline::emitFrameEvent(Frame* frame) } } -void ActionTimeline::addFrameEndCallFunc(int frameIndex, const std::string& funcKey, std::function func) +void ActionTimeline::addFrameEndCallFunc(int frameIndex, std::string_view funcKey, std::function func) { if (func != nullptr) { @@ -377,7 +377,7 @@ void ActionTimeline::addFrameEndCallFunc(int frameIndex, const std::string& func } } -void ActionTimeline::removeFrameEndCallFunc(int frameIndex, const std::string& funcKey) +void ActionTimeline::removeFrameEndCallFunc(int frameIndex, std::string_view funcKey) { auto endClipCallsIter = _frameEndCallFuncs.find(frameIndex); if (endClipCallsIter != _frameEndCallFuncs.end()) diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimeline.h b/extensions/cocostudio/ActionTimeline/CCActionTimeline.h index 6437359ff4ec..5e9e1053c6df 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimeline.h +++ b/extensions/cocostudio/ActionTimeline/CCActionTimeline.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013 cocos2d-x.org http://www.cocos2d-x.org @@ -37,7 +37,7 @@ typedef struct AnimationInfo { AnimationInfo() : startIndex(0), endIndex(0) {} - AnimationInfo(const std::string& otherName, int otherStartIndex, int otherEndIndex) + AnimationInfo(std::string_view otherName, int otherStartIndex, int otherEndIndex) : name(otherName), startIndex(otherStartIndex), endIndex(otherEndIndex) {} @@ -150,8 +150,8 @@ class CCS_DLL ActionTimeline : public cocos2d::Action, public cocos2d::PlayableP /** AnimationInfo*/ virtual void addAnimationInfo(const AnimationInfo& animationInfo); virtual void removeAnimationInfo(std::string animationName); - virtual bool IsAnimationInfoExists(const std::string& animationName); - virtual const AnimationInfo& getAnimationInfo(const std::string& animationName); + virtual bool IsAnimationInfoExists(std::string_view animationName); + virtual const AnimationInfo& getAnimationInfo(std::string_view animationName); /**add a frame end call back to animation's end frame * @param animationName @addFrameEndCallFunc, make the animationName as funcKey * @param func the callback function @@ -171,9 +171,9 @@ class CCS_DLL ActionTimeline : public cocos2d::Action, public cocos2d::PlayableP * @param funcKey for identity the callback function * @param func the callback function */ - virtual void addFrameEndCallFunc(int frameIndex, const std::string& funcKey, std::function func); + virtual void addFrameEndCallFunc(int frameIndex, std::string_view funcKey, std::function func); // remove callback function after frameIndex which identified with funcKey - virtual void removeFrameEndCallFunc(int frameIndex, const std::string& funcKey); + virtual void removeFrameEndCallFunc(int frameIndex, std::string_view funcKey); // clear callback functions after frameIndex virtual void removeFrameEndCallFuncs(int frameIndex); // clear all the callback functions after frameIndexs in this actiontimeline diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp index 44af85a5c594..946ad6b2e3aa 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp +++ b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp @@ -126,7 +126,7 @@ void ActionTimelineCache::init() */ } -void ActionTimelineCache::removeAction(const std::string& fileName) +void ActionTimelineCache::removeAction(std::string_view fileName) { if (_animationActions.find(fileName) != _animationActions.end()) { @@ -134,7 +134,7 @@ void ActionTimelineCache::removeAction(const std::string& fileName) } } -ActionTimeline* ActionTimelineCache::createAction(const std::string& filename) +ActionTimeline* ActionTimelineCache::createAction(std::string_view filename) { std::string path = filename; size_t pos = path.find_last_of('.'); @@ -154,7 +154,7 @@ ActionTimeline* ActionTimelineCache::createAction(const std::string& filename) return nullptr; } -ActionTimeline* ActionTimelineCache::createActionFromJson(const std::string& fileName) +ActionTimeline* ActionTimelineCache::createActionFromJson(std::string_view fileName) { ActionTimeline* action = _animationActions.at(fileName); if (action == nullptr) @@ -164,7 +164,7 @@ ActionTimeline* ActionTimelineCache::createActionFromJson(const std::string& fil return action->clone(); } -ActionTimeline* ActionTimelineCache::createActionFromContent(const std::string& fileName, const std::string& content) +ActionTimeline* ActionTimelineCache::createActionFromContent(std::string_view fileName, std::string_view content) { ActionTimeline* action = _animationActions.at(fileName); if (action == nullptr) @@ -174,7 +174,7 @@ ActionTimeline* ActionTimelineCache::createActionFromContent(const std::string& return action->clone(); } -ActionTimeline* ActionTimelineCache::loadAnimationActionWithFile(const std::string& fileName) +ActionTimeline* ActionTimelineCache::loadAnimationActionWithFile(std::string_view fileName) { // Read content from file std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); @@ -183,8 +183,8 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithFile(const std::stri return loadAnimationActionWithContent(fileName, contentStr); } -ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(const std::string& fileName, - const std::string& content) +ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(std::string_view fileName, + std::string_view content) { // if already exists an action with filename, then return this action ActionTimeline* action = _animationActions.at(fileName); @@ -415,7 +415,7 @@ Frame* ActionTimelineCache::loadZOrderFrame(const rapidjson::Value& json) return frame; } -ActionTimeline* ActionTimelineCache::createActionWithFlatBuffersFile(const std::string& fileName) +ActionTimeline* ActionTimelineCache::createActionWithFlatBuffersFile(std::string_view fileName) { ActionTimeline* action = _animationActions.at(fileName); if (action == NULL) @@ -425,7 +425,7 @@ ActionTimeline* ActionTimelineCache::createActionWithFlatBuffersFile(const std:: return action->clone(); } -ActionTimeline* ActionTimelineCache::createActionWithDataBuffer(Data data, const std::string& fileName) +ActionTimeline* ActionTimelineCache::createActionWithDataBuffer(Data data, std::string_view fileName) { ActionTimeline* action = _animationActions.at(fileName); if (action == NULL) @@ -435,7 +435,7 @@ ActionTimeline* ActionTimelineCache::createActionWithDataBuffer(Data data, const return action->clone(); } -ActionTimeline* ActionTimelineCache::loadAnimationActionWithFlatBuffersFile(const std::string& fileName) +ActionTimeline* ActionTimelineCache::loadAnimationActionWithFlatBuffersFile(std::string_view fileName) { // if already exists an action with filename, then return this action ActionTimeline* action = _animationActions.at(fileName); @@ -455,7 +455,7 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithFlatBuffersFile(cons return action; } -ActionTimeline* ActionTimelineCache::loadAnimationWithDataBuffer(const cocos2d::Data& data, const std::string& fileName) +ActionTimeline* ActionTimelineCache::loadAnimationWithDataBuffer(const cocos2d::Data& data, std::string_view fileName) { // if already exists an action with filename, then return this action ActionTimeline* action = _animationActions.at(fileName); @@ -953,7 +953,7 @@ void ActionTimelineCache::loadEasingDataWithFlatBuffers(cocostudio::timeline::Fr } } -ActionTimeline* ActionTimelineCache::createActionWithFlatBuffersForSimulator(const std::string& fileName) +ActionTimeline* ActionTimelineCache::createActionWithFlatBuffersForSimulator(std::string_view fileName) { FlatBuffersSerialize* fbs = FlatBuffersSerialize::getInstance(); fbs->_isSimulator = true; diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h index 052280d16485..eb74ea3d583f 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h +++ b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013 cocos2d-x.org http://www.cocos2d-x.org @@ -71,24 +71,24 @@ class CCS_DLL ActionTimelineCache void init(); /** Remove action with filename, and also remove other resource relate with this file */ - void removeAction(const std::string& fileName); + void removeAction(std::string_view fileName); - static ActionTimeline* createAction(const std::string& fileName); + static ActionTimeline* createAction(std::string_view fileName); /** Clone a action with the specified name from the container. */ - ActionTimeline* createActionFromJson(const std::string& fileName); - ActionTimeline* createActionFromContent(const std::string& fileName, const std::string& content); + ActionTimeline* createActionFromJson(std::string_view fileName); + ActionTimeline* createActionFromContent(std::string_view fileName, std::string_view content); - ActionTimeline* loadAnimationActionWithFile(const std::string& fileName); - ActionTimeline* loadAnimationActionWithContent(const std::string& fileName, const std::string& content); + ActionTimeline* loadAnimationActionWithFile(std::string_view fileName); + ActionTimeline* loadAnimationActionWithContent(std::string_view fileName, std::string_view content); - ActionTimeline* createActionWithFlatBuffersFile(const std::string& fileName); - ActionTimeline* createActionWithDataBuffer(cocos2d::Data data, const std::string& fileName); + ActionTimeline* createActionWithFlatBuffersFile(std::string_view fileName); + ActionTimeline* createActionWithDataBuffer(cocos2d::Data data, std::string_view fileName); - ActionTimeline* loadAnimationActionWithFlatBuffersFile(const std::string& fileName); - ActionTimeline* loadAnimationWithDataBuffer(const cocos2d::Data& data, const std::string& fileName); + ActionTimeline* loadAnimationActionWithFlatBuffersFile(std::string_view fileName); + ActionTimeline* loadAnimationWithDataBuffer(const cocos2d::Data& data, std::string_view fileName); - ActionTimeline* createActionWithFlatBuffersForSimulator(const std::string& fileName); + ActionTimeline* createActionWithFlatBuffersForSimulator(std::string_view fileName); protected: Timeline* loadTimeline(const rapidjson::Value& json); diff --git a/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp b/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp index de7d55ca31d5..11b6ed2d4de6 100644 --- a/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp +++ b/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp @@ -108,7 +108,7 @@ void BoneNode::addChild(cocos2d::Node* child, int localZOrder, int tag) Node::addChild(child, localZOrder, tag); } -void BoneNode::addChild(Node* child, int localZOrder, const std::string& name) +void BoneNode::addChild(Node* child, int localZOrder, std::string_view name) { addToChildrenListHelper(child); Node::addChild(child, localZOrder, name); @@ -240,7 +240,7 @@ void BoneNode::displaySkin(SkinNode* skin, bool hideOthers) } } -void BoneNode::displaySkin(const std::string& skinName, bool hideOthers) +void BoneNode::displaySkin(std::string_view skinName, bool hideOthers) { for (auto& skin : _boneSkins) { @@ -661,7 +661,7 @@ void BoneNode::setLocalZOrder(int localZOrder) _rootSkeleton->_subBonesOrderDirty = true; } -void BoneNode::setName(const std::string& name) +void BoneNode::setName(std::string_view name) { auto oldname = getName(); Node::setName(name); diff --git a/extensions/cocostudio/ActionTimeline/CCBoneNode.h b/extensions/cocostudio/ActionTimeline/CCBoneNode.h index 02003d3ce76c..60450caa799c 100644 --- a/extensions/cocostudio/ActionTimeline/CCBoneNode.h +++ b/extensions/cocostudio/ActionTimeline/CCBoneNode.h @@ -52,7 +52,7 @@ class CCS_DLL BoneNode : public cocos2d::Node, public cocos2d::BlendProtocol using Node::addChild; // add child, and add child to bone list and skeleton's sub bone map or add it to skin list - virtual void addChild(cocos2d::Node* child, int localZOrder, const std::string& name) override; + virtual void addChild(cocos2d::Node* child, int localZOrder, std::string_view name) override; virtual void addChild(cocos2d::Node* child, int localZOrder, int tag) override; // remove child, and remove child from bone list and skeleton's sub bone map or remove it from skin list @@ -94,7 +94,7 @@ class CCS_DLL BoneNode : public cocos2d::Node, public cocos2d::BlendProtocol * prefer to use display(SkinNode* skin, bool hideOthers = false) * @param: hideOthers, set other skins invisible */ - virtual void displaySkin(const std::string& skinName, bool hideOthers); + virtual void displaySkin(std::string_view skinName, bool hideOthers); // get the skins which is visible (displaying skins) virtual cocos2d::Vector getVisibleSkins() const; @@ -146,7 +146,7 @@ class CCS_DLL BoneNode : public cocos2d::Node, public cocos2d::BlendProtocol virtual void setLocalZOrder(int localZOrder) override; // set name, and replace the subbone map in skeleton - virtual void setName(const std::string& name) override; + virtual void setName(std::string_view name) override; // set visible, and dirty the debugdraw to make debugdraw's render layer right virtual void setVisible(bool visible) override; diff --git a/extensions/cocostudio/ActionTimeline/CCFrame.cpp b/extensions/cocostudio/ActionTimeline/CCFrame.cpp index 2b410c5f27c3..fff31a344d80 100644 --- a/extensions/cocostudio/ActionTimeline/CCFrame.cpp +++ b/extensions/cocostudio/ActionTimeline/CCFrame.cpp @@ -548,7 +548,7 @@ void InnerActionFrame::setEndFrameIndex(int frameIndex) _endFrameIndex = frameIndex; } -void InnerActionFrame::setAnimationName(const std::string& animationName) +void InnerActionFrame::setAnimationName(std::string_view animationName) { if (!_enterWithName) { diff --git a/extensions/cocostudio/ActionTimeline/CCFrame.h b/extensions/cocostudio/ActionTimeline/CCFrame.h index f9c0ccd37c98..0c6d450b844a 100644 --- a/extensions/cocostudio/ActionTimeline/CCFrame.h +++ b/extensions/cocostudio/ActionTimeline/CCFrame.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013 cocos2d-x.org http://www.cocos2d-x.org @@ -293,7 +293,7 @@ class CCS_DLL InnerActionFrame : public Frame void setEndFrameIndex(int frameIndex); inline int getEndFrameIndex() const { return _endFrameIndex; } - void setAnimationName(const std::string& animationNamed); + void setAnimationName(std::string_view animationNamed); inline void setSingleFrameIndex(int frameIndex) { _singleFrameIndex = frameIndex; } inline int getSingleFrameIndex() const { return _singleFrameIndex; } diff --git a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp index 69417e6a473b..c2f8dbc7a124 100644 --- a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp +++ b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp @@ -308,7 +308,7 @@ void SkeletonNode::changeSkins(const std::map& boneSki } } -void SkeletonNode::changeSkins(const std::string& skinGroupName) +void SkeletonNode::changeSkins(std::string_view skinGroupName) { auto suit = _skinGroupMap.find(skinGroupName); if (suit != _skinGroupMap.end()) @@ -317,7 +317,7 @@ void SkeletonNode::changeSkins(const std::string& skinGroupName) } } -BoneNode* SkeletonNode::getBoneNode(const std::string& boneName) +BoneNode* SkeletonNode::getBoneNode(std::string_view boneName) { auto iter = _subBonesMap.find(boneName); if (iter != _subBonesMap.end()) diff --git a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h index e6117bdcb91c..05d65bf973d2 100644 --- a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h +++ b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h @@ -44,7 +44,7 @@ class CCS_DLL SkeletonNode : public BoneNode /** *get bonenode in skeleton node by bone name */ - BoneNode* getBoneNode(const std::string& boneName); + BoneNode* getBoneNode(std::string_view boneName); /** *get All bones in this skeleton, @@ -61,7 +61,7 @@ class CCS_DLL SkeletonNode : public BoneNode *@brief: change displays *@param: skinGroupName have */ - void changeSkins(const std::string& skinGroupName); + void changeSkins(std::string_view skinGroupName); /** *@brief: add a boneSkinNameMap as a SkinGroup named groupName diff --git a/extensions/cocostudio/ActionTimeline/CSLoader.cpp b/extensions/cocostudio/ActionTimeline/CSLoader.cpp index fcb10cc04e0b..61012e3c364d 100644 --- a/extensions/cocostudio/ActionTimeline/CSLoader.cpp +++ b/extensions/cocostudio/ActionTimeline/CSLoader.cpp @@ -280,7 +280,7 @@ void CSLoader::init() _componentFuncs.insert(ComponentPair(ClassName_ComAudio, std::bind(&CSLoader::loadComAudio, this, _1))); } -Node* CSLoader::createNode(const std::string& filename) +Node* CSLoader::createNode(std::string_view filename) { std::string path = filename; size_t pos = path.find_last_of('.'); @@ -300,7 +300,7 @@ Node* CSLoader::createNode(const std::string& filename) return nullptr; } -Node* CSLoader::createNode(const std::string& filename, const ccNodeLoadCallback& callback) +Node* CSLoader::createNode(std::string_view filename, const ccNodeLoadCallback& callback) { std::string path = filename; size_t pos = path.find_last_of('.'); @@ -316,7 +316,7 @@ Node* CSLoader::createNode(const std::string& filename, const ccNodeLoadCallback return nullptr; } -Node* CSLoader::createNodeWithVisibleSize(const std::string& filename) +Node* CSLoader::createNodeWithVisibleSize(std::string_view filename) { auto node = createNode(filename); if (node != nullptr) @@ -328,7 +328,7 @@ Node* CSLoader::createNodeWithVisibleSize(const std::string& filename) return node; } -Node* CSLoader::createNodeWithVisibleSize(const std::string& filename, const ccNodeLoadCallback& callback) +Node* CSLoader::createNodeWithVisibleSize(std::string_view filename, const ccNodeLoadCallback& callback) { auto node = createNode(filename, callback); if (node != nullptr) @@ -340,7 +340,7 @@ Node* CSLoader::createNodeWithVisibleSize(const std::string& filename, const ccN return node; } -std::string CSLoader::getExtentionName(const std::string& name) +std::string CSLoader::getExtentionName(std::string_view name) { std::string path = name; size_t pos = path.find_last_of('.'); @@ -349,7 +349,7 @@ std::string CSLoader::getExtentionName(const std::string& name) return result; } -ActionTimeline* CSLoader::createTimeline(const std::string& filename) +ActionTimeline* CSLoader::createTimeline(std::string_view filename) { std::string suffix = getExtentionName(filename); @@ -367,7 +367,7 @@ ActionTimeline* CSLoader::createTimeline(const std::string& filename) return nullptr; } -ActionTimeline* CSLoader::createTimeline(const Data& data, const std::string& filename) +ActionTimeline* CSLoader::createTimeline(const Data& data, std::string_view filename) { std::string suffix = getExtentionName(filename); @@ -387,7 +387,7 @@ ActionTimeline* CSLoader::createTimeline(const Data& data, const std::string& fi } /* -ActionTimelineNode* CSLoader::createActionTimelineNode(const std::string& filename) +ActionTimelineNode* CSLoader::createActionTimelineNode(std::string_view filename) { Node* root = createNode(filename); ActionTimeline* action = createTimeline(filename); @@ -401,7 +401,7 @@ ActionTimelineNode* CSLoader::createActionTimelineNode(const std::string& filena ActionTimelineNode* node = ActionTimelineNode::create(root, action); return node; } -ActionTimelineNode* CSLoader::createActionTimelineNode(const std::string& filename, int startIndex, int endIndex, bool +ActionTimelineNode* CSLoader::createActionTimelineNode(std::string_view filename, int startIndex, int endIndex, bool loop) { ActionTimelineNode* node = createActionTimelineNode(filename); @@ -413,7 +413,7 @@ loop) } */ -Node* CSLoader::createNodeFromJson(const std::string& filename) +Node* CSLoader::createNodeFromJson(std::string_view filename) { if (_recordJsonPath) { @@ -432,7 +432,7 @@ Node* CSLoader::createNodeFromJson(const std::string& filename) return node; } -Node* CSLoader::loadNodeWithFile(const std::string& fileName) +Node* CSLoader::loadNodeWithFile(std::string_view fileName) { // Read content from file std::string contentStr = FileUtils::getInstance()->getStringFromFile(fileName); @@ -445,7 +445,7 @@ Node* CSLoader::loadNodeWithFile(const std::string& fileName) return node; } -Node* CSLoader::loadNodeWithContent(const std::string& content) +Node* CSLoader::loadNodeWithContent(std::string_view content) { rapidjson::Document doc; doc.Parse<0>(content.c_str()); @@ -961,12 +961,12 @@ Node* CSLoader::createNode(const Data& data, const ccNodeLoadCallback& callback) return node; } -Node* CSLoader::createNodeWithFlatBuffersFile(const std::string& filename) +Node* CSLoader::createNodeWithFlatBuffersFile(std::string_view filename) { return createNodeWithFlatBuffersFile(filename, nullptr); } -Node* CSLoader::createNodeWithFlatBuffersFile(const std::string& filename, const ccNodeLoadCallback& callback) +Node* CSLoader::createNodeWithFlatBuffersFile(std::string_view filename, const ccNodeLoadCallback& callback) { Node* node = nodeWithFlatBuffersFile(filename, callback); @@ -995,12 +995,12 @@ inline void CSLoader::reconstructNestNode(cocos2d::Node* node) } } -Node* CSLoader::nodeWithFlatBuffersFile(const std::string& fileName) +Node* CSLoader::nodeWithFlatBuffersFile(std::string_view fileName) { return nodeWithFlatBuffersFile(fileName, nullptr); } -Node* CSLoader::nodeWithFlatBuffersFile(const std::string& fileName, const ccNodeLoadCallback& callback) +Node* CSLoader::nodeWithFlatBuffersFile(std::string_view fileName, const ccNodeLoadCallback& callback) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); @@ -1248,8 +1248,8 @@ Node* CSLoader::nodeWithFlatBuffers(const flatbuffers::NodeTree* nodetree, const } } -bool CSLoader::bindCallback(const std::string& callbackName, - const std::string& callbackType, +bool CSLoader::bindCallback(std::string_view callbackName, + std::string_view callbackType, cocos2d::ui::Widget* sender, cocos2d::Node* handler) { @@ -1293,7 +1293,7 @@ bool CSLoader::bindCallback(const std::string& callbackName, return false; } -bool CSLoader::isWidget(const std::string& type) +bool CSLoader::isWidget(std::string_view type) { return (type == ClassName_Panel || type == ClassName_Button || type == ClassName_CheckBox || type == ClassName_ImageView || type == ClassName_TextAtlas || type == ClassName_LabelAtlas || @@ -1303,7 +1303,7 @@ bool CSLoader::isWidget(const std::string& type) type == ClassName_PageView || type == ClassName_Widget || type == ClassName_Label); } -bool CSLoader::isCustomWidget(const std::string& type) +bool CSLoader::isCustomWidget(std::string_view type) { Widget* widget = dynamic_cast(ObjectFactory::getInstance()->createObject(type)); if (widget) @@ -1315,7 +1315,7 @@ bool CSLoader::isCustomWidget(const std::string& type) return false; } -std::string CSLoader::getGUIClassName(const std::string& name) +std::string CSLoader::getGUIClassName(std::string_view name) { std::string convertedClassName = name; if (name == "Panel") @@ -1412,7 +1412,7 @@ std::string CSLoader::getWidgetReaderClassName(Widget* widget) return readerName; } -void CSLoader::registReaderObject(const std::string& className, ObjectFactory::Instance ins) +void CSLoader::registReaderObject(std::string_view className, ObjectFactory::Instance ins) { ObjectFactory::TInfo t; t._class = className; @@ -1421,7 +1421,7 @@ void CSLoader::registReaderObject(const std::string& className, ObjectFactory::I ObjectFactory::getInstance()->registerType(t); } -Node* CSLoader::createNodeWithFlatBuffersForSimulator(const std::string& filename) +Node* CSLoader::createNodeWithFlatBuffersForSimulator(std::string_view filename) { FlatBuffersSerialize* fbs = FlatBuffersSerialize::getInstance(); fbs->_isSimulator = true; diff --git a/extensions/cocostudio/ActionTimeline/CSLoader.h b/extensions/cocostudio/ActionTimeline/CSLoader.h index afcd41f583d9..903e7b31facc 100644 --- a/extensions/cocostudio/ActionTimeline/CSLoader.h +++ b/extensions/cocostudio/ActionTimeline/CSLoader.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013 cocos2d-x.org http://www.cocos2d-x.org @@ -79,25 +79,25 @@ class CCS_DLL CSLoader void init(); - static cocos2d::Node* createNode(const std::string& filename); - static cocos2d::Node* createNode(const std::string& filename, const ccNodeLoadCallback& callback); + static cocos2d::Node* createNode(std::string_view filename); + static cocos2d::Node* createNode(std::string_view filename, const ccNodeLoadCallback& callback); static cocos2d::Node* createNode(const Data& data); static cocos2d::Node* createNode(const Data& data, const ccNodeLoadCallback& callback); - static cocos2d::Node* createNodeWithVisibleSize(const std::string& filename); - static cocos2d::Node* createNodeWithVisibleSize(const std::string& filename, const ccNodeLoadCallback& callback); + static cocos2d::Node* createNodeWithVisibleSize(std::string_view filename); + static cocos2d::Node* createNodeWithVisibleSize(std::string_view filename, const ccNodeLoadCallback& callback); - static cocostudio::timeline::ActionTimeline* createTimeline(const std::string& filename); - static cocostudio::timeline::ActionTimeline* createTimeline(const Data& data, const std::string& filename); + static cocostudio::timeline::ActionTimeline* createTimeline(std::string_view filename); + static cocostudio::timeline::ActionTimeline* createTimeline(const Data& data, std::string_view filename); /* - static cocostudio::timeline::ActionTimelineNode* createActionTimelineNode(const std::string& filename); - static cocostudio::timeline::ActionTimelineNode* createActionTimelineNode(const std::string& filename, int + static cocostudio::timeline::ActionTimelineNode* createActionTimelineNode(std::string_view filename); + static cocostudio::timeline::ActionTimelineNode* createActionTimelineNode(std::string_view filename, int startIndex, int endIndex, bool loop); */ - cocos2d::Node* createNodeFromJson(const std::string& filename); - cocos2d::Node* loadNodeWithFile(const std::string& fileName); - cocos2d::Node* loadNodeWithContent(const std::string& content); + cocos2d::Node* createNodeFromJson(std::string_view filename); + cocos2d::Node* loadNodeWithFile(std::string_view fileName); + cocos2d::Node* loadNodeWithContent(std::string_view content); void setRecordJsonPath(bool record) { _recordJsonPath = record; } bool isRecordJsonPath() const { return _recordJsonPath; } @@ -105,23 +105,23 @@ class CCS_DLL CSLoader void setJsonPath(std::string jsonPath) { _jsonPath = jsonPath; } std::string getJsonPath() const { return _jsonPath; } - cocos2d::Node* createNodeWithFlatBuffersFile(const std::string& filename); - cocos2d::Node* nodeWithFlatBuffersFile(const std::string& fileName); + cocos2d::Node* createNodeWithFlatBuffersFile(std::string_view filename); + cocos2d::Node* nodeWithFlatBuffersFile(std::string_view fileName); cocos2d::Node* nodeWithFlatBuffers(const flatbuffers::NodeTree* nodetree); - bool bindCallback(const std::string& callbackName, - const std::string& callbackType, + bool bindCallback(std::string_view callbackName, + std::string_view callbackType, cocos2d::ui::Widget* sender, cocos2d::Node* handler); - void registReaderObject(const std::string& className, ObjectFactory::Instance ins); + void registReaderObject(std::string_view className, ObjectFactory::Instance ins); - cocos2d::Node* createNodeWithFlatBuffersForSimulator(const std::string& filename); + cocos2d::Node* createNodeWithFlatBuffersForSimulator(std::string_view filename); cocos2d::Node* nodeWithFlatBuffersForSimulator(const flatbuffers::NodeTree* nodetree); protected: - cocos2d::Node* createNodeWithFlatBuffersFile(const std::string& filename, const ccNodeLoadCallback& callback); - cocos2d::Node* nodeWithFlatBuffersFile(const std::string& fileName, const ccNodeLoadCallback& callback); + cocos2d::Node* createNodeWithFlatBuffersFile(std::string_view filename, const ccNodeLoadCallback& callback); + cocos2d::Node* nodeWithFlatBuffersFile(std::string_view fileName, const ccNodeLoadCallback& callback); cocos2d::Node* nodeWithFlatBuffers(const flatbuffers::NodeTree* nodetree, const ccNodeLoadCallback& callback); cocos2d::Node* loadNode(const rapidjson::Value& json); @@ -144,14 +144,14 @@ class CCS_DLL CSLoader cocos2d::Component* loadComponent(const rapidjson::Value& json); cocos2d::Component* loadComAudio(const rapidjson::Value& json); - bool isWidget(const std::string& type); - bool isCustomWidget(const std::string& type); + bool isWidget(std::string_view type); + bool isCustomWidget(std::string_view type); - std::string getGUIClassName(const std::string& name); + std::string getGUIClassName(std::string_view name); std::string getWidgetReaderClassName(cocos2d::ui::Widget* widget); inline void reconstructNestNode(cocos2d::Node* node); - static inline std::string getExtentionName(const std::string& name); + static inline std::string getExtentionName(std::string_view name); typedef std::function NodeCreateFunc; typedef std::pair Pair; diff --git a/extensions/cocostudio/CCActionNode.cpp b/extensions/cocostudio/CCActionNode.cpp index 88ffc8b5edf1..7bb4b3b322f5 100644 --- a/extensions/cocostudio/CCActionNode.cpp +++ b/extensions/cocostudio/CCActionNode.cpp @@ -188,11 +188,11 @@ void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root) initActionNodeFromRoot(root); } -int ActionNode::valueToInt(const std::string& value) +int ActionNode::valueToInt(std::string_view value) { return atoi(value.c_str()); } -bool ActionNode::valueToBool(const std::string& value) +bool ActionNode::valueToBool(std::string_view value) { int intValue = valueToInt(value); if (1 == intValue) @@ -204,7 +204,7 @@ bool ActionNode::valueToBool(const std::string& value) return false; } } -float ActionNode::valueToFloat(const std::string& value) +float ActionNode::valueToFloat(std::string_view value) { return utils::atof(value.c_str()); } diff --git a/extensions/cocostudio/CCActionNode.h b/extensions/cocostudio/CCActionNode.h index 17c29ba996c0..ec1a6554c788 100644 --- a/extensions/cocostudio/CCActionNode.h +++ b/extensions/cocostudio/CCActionNode.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -162,9 +162,9 @@ class CCS_DLL ActionNode : public cocos2d::Ref virtual bool isActionDoneOnce(); protected: - int valueToInt(const std::string& value); - bool valueToBool(const std::string& value); - float valueToFloat(const std::string& value); + int valueToInt(std::string_view value); + bool valueToBool(std::string_view value); + float valueToFloat(std::string_view value); int _currentFrameIndex; int _destFrameIndex; diff --git a/extensions/cocostudio/CCActionObject.cpp b/extensions/cocostudio/CCActionObject.cpp index badd9c485281..8143324837fe 100644 --- a/extensions/cocostudio/CCActionObject.cpp +++ b/extensions/cocostudio/CCActionObject.cpp @@ -184,11 +184,11 @@ void ActionObject::initWithBinary(CocoLoader* cocoLoader, stExpCocoNode* cocoNod } } -int ActionObject::valueToInt(const std::string& value) +int ActionObject::valueToInt(std::string_view value) { return atoi(value.c_str()); } -bool ActionObject::valueToBool(const std::string& value) +bool ActionObject::valueToBool(std::string_view value) { int intValue = valueToInt(value); if (1 == intValue) @@ -200,7 +200,7 @@ bool ActionObject::valueToBool(const std::string& value) return false; } } -float ActionObject::valueToFloat(const std::string& value) +float ActionObject::valueToFloat(std::string_view value) { return utils::atof(value.c_str()); } diff --git a/extensions/cocostudio/CCActionObject.h b/extensions/cocostudio/CCActionObject.h index 195c741d5b9a..b151631ed454 100644 --- a/extensions/cocostudio/CCActionObject.h +++ b/extensions/cocostudio/CCActionObject.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -171,9 +171,9 @@ class CCS_DLL ActionObject : public cocos2d::Ref void simulationActionUpdate(float dt); protected: - int valueToInt(const std::string& value); - bool valueToBool(const std::string& value); - float valueToFloat(const std::string& value); + int valueToInt(std::string_view value); + bool valueToBool(std::string_view value); + float valueToFloat(std::string_view value); cocos2d::Vector _actionNodeList; std::string _name; diff --git a/extensions/cocostudio/CCArmature.cpp b/extensions/cocostudio/CCArmature.cpp index 985d3aec43f5..2a1f6402eb26 100644 --- a/extensions/cocostudio/CCArmature.cpp +++ b/extensions/cocostudio/CCArmature.cpp @@ -57,7 +57,7 @@ Armature* Armature::create() return nullptr; } -Armature* Armature::create(const std::string& name) +Armature* Armature::create(std::string_view name) { Armature* armature = new Armature(); if (armature->init(name)) @@ -69,7 +69,7 @@ Armature* Armature::create(const std::string& name) return nullptr; } -Armature* Armature::create(const std::string& name, Bone* parentBone) +Armature* Armature::create(std::string_view name, Bone* parentBone) { Armature* armature = new Armature(); if (armature->init(name, parentBone)) @@ -102,7 +102,7 @@ bool Armature::init() return init(""); } -bool Armature::init(const std::string& name) +bool Armature::init(std::string_view name) { bool bRet = false; do @@ -182,13 +182,13 @@ bool Armature::init(const std::string& name) return bRet; } -bool Armature::init(const std::string& name, Bone* parentBone) +bool Armature::init(std::string_view name, Bone* parentBone) { _parentBone = parentBone; return init(name); } -Bone* Armature::createBone(const std::string& boneName) +Bone* Armature::createBone(std::string_view boneName) { Bone* existedBone = getBone(boneName); if (existedBone != nullptr) @@ -217,7 +217,7 @@ Bone* Armature::createBone(const std::string& boneName) return bone; } -void Armature::addBone(Bone* bone, const std::string& parentName) +void Armature::addBone(Bone* bone, std::string_view parentName) { CCASSERT(bone != nullptr, "Argument must be non-nil"); CCASSERT(_boneDic.at(bone->getName()) == nullptr, "bone already added. It can't be added again"); @@ -260,12 +260,12 @@ void Armature::removeBone(Bone* bone, bool recursion) removeChild(bone, true); } -Bone* Armature::getBone(const std::string& name) const +Bone* Armature::getBone(std::string_view name) const { return _boneDic.at(name); } -void Armature::changeBoneParent(Bone* bone, const std::string& parentName) +void Armature::changeBoneParent(Bone* bone, std::string_view parentName) { CCASSERT(bone != nullptr, "bone must be added to the bone dictionary!"); diff --git a/extensions/cocostudio/CCArmature.h b/extensions/cocostudio/CCArmature.h index d207940d85cb..415018cd6ead 100644 --- a/extensions/cocostudio/CCArmature.h +++ b/extensions/cocostudio/CCArmature.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -85,9 +85,9 @@ class CCS_DLL Armature : public cocos2d::Node, public cocos2d::BlendProtocol * @param name Armature will use the name to find the ArmatureData to initializes it. * @return A initialized armature which is marked as "autorelease". */ - static Armature* create(const std::string& name); + static Armature* create(std::string_view name); - static Armature* create(const std::string& name, Bone* parentBone); + static Armature* create(std::string_view name, Bone* parentBone); public: /** @@ -109,29 +109,29 @@ class CCS_DLL Armature : public cocos2d::Node, public cocos2d::BlendProtocol * Init an armature with specified name * @param name Armature name */ - virtual bool init(const std::string& name); + virtual bool init(std::string_view name); - virtual bool init(const std::string& name, Bone* parentBone); + virtual bool init(std::string_view name, Bone* parentBone); /** * Add a Bone to this Armature, * * @param bone The Bone you want to add to Armature * @param parentName The parent Bone's name you want to add to . If it's nullptr, then set Armature to its parent */ - virtual void addBone(Bone* bone, const std::string& parentName); + virtual void addBone(Bone* bone, std::string_view parentName); /** * Get a bone with the specified name * * @param name The bone's name you want to get */ - virtual Bone* getBone(const std::string& name) const; + virtual Bone* getBone(std::string_view name) const; /** * Change a bone's parent with the specified parent name. * * @param bone The bone you want to change parent * @param parentName The new parent's name. */ - virtual void changeBoneParent(Bone* bone, const std::string& parentName); + virtual void changeBoneParent(Bone* bone, std::string_view parentName); /** * Remove a bone with the specified name. If recursion it will also remove child Bone recursionly. * @@ -246,7 +246,7 @@ class CCS_DLL Armature : public cocos2d::Node, public cocos2d::BlendProtocol * @js NA * @lua NA */ - Bone* createBone(const std::string& boneName); + Bone* createBone(std::string_view boneName); protected: ArmatureData* _armatureData; diff --git a/extensions/cocostudio/CCArmatureAnimation.cpp b/extensions/cocostudio/CCArmatureAnimation.cpp index 5f02e393e171..7b7258234a57 100644 --- a/extensions/cocostudio/CCArmatureAnimation.cpp +++ b/extensions/cocostudio/CCArmatureAnimation.cpp @@ -156,7 +156,7 @@ float ArmatureAnimation::getSpeedScale() const return _speedScale; } -void ArmatureAnimation::play(const std::string& animationName, int durationTo, int loop) +void ArmatureAnimation::play(std::string_view animationName, int durationTo, int loop) { if (animationName.empty()) { @@ -469,12 +469,12 @@ void ArmatureAnimation::setFrameEventCallFunc(Ref* target, SEL_FrameEventCallFun } void ArmatureAnimation::setMovementEventCallFunc( - std::function listener) + std::function listener) { _movementEventListener = listener; } void ArmatureAnimation::setFrameEventCallFunc( - std::function + std::function listener) { _frameEventListener = listener; @@ -488,7 +488,7 @@ void ArmatureAnimation::setUserObject(Ref* pUserObject) } void ArmatureAnimation::frameEvent(Bone* bone, - const std::string& frameEventName, + std::string_view frameEventName, int originFrameIndex, int currentFrameIndex) { @@ -504,7 +504,7 @@ void ArmatureAnimation::frameEvent(Bone* bone, } } -void ArmatureAnimation::movementEvent(Armature* armature, MovementEventType movementType, const std::string& movementID) +void ArmatureAnimation::movementEvent(Armature* armature, MovementEventType movementType, std::string_view movementID) { if ((_movementEventTarget && _movementEventCallFunc) || _movementEventListener) { diff --git a/extensions/cocostudio/CCArmatureAnimation.h b/extensions/cocostudio/CCArmatureAnimation.h index 77eb5984a094..c855e3b84424 100644 --- a/extensions/cocostudio/CCArmatureAnimation.h +++ b/extensions/cocostudio/CCArmatureAnimation.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -123,7 +123,7 @@ class CCS_DLL ArmatureAnimation : public ProcessBase * loop = 0 : this animation is not loop * loop > 0 : this animation is loop */ - virtual void play(const std::string& animationName, int durationTo = -1, int loop = -1); + virtual void play(std::string_view animationName, int durationTo = -1, int loop = -1); /** * Play animation by index, the other param is the same to play. @@ -192,10 +192,10 @@ class CCS_DLL ArmatureAnimation : public ProcessBase CC_DEPRECATED_ATTRIBUTE void setFrameEventCallFunc(cocos2d::Ref* target, SEL_FrameEventCallFunc callFunc); void setMovementEventCallFunc( - std::function + std::function listener); void setFrameEventCallFunc( - std::function + std::function listener); virtual void setAnimationData(AnimationData* data) @@ -257,12 +257,12 @@ class CCS_DLL ArmatureAnimation : public ProcessBase * @js NA * @lua NA */ - void frameEvent(Bone* bone, const std::string& frameEventName, int originFrameIndex, int currentFrameIndex); + void frameEvent(Bone* bone, std::string_view frameEventName, int originFrameIndex, int currentFrameIndex); /** * Emit a movement event */ - void movementEvent(Armature* armature, MovementEventType movementType, const std::string& movementID); + void movementEvent(Armature* armature, MovementEventType movementType, std::string_view movementID); void updateMovementList(); @@ -322,9 +322,9 @@ class CCS_DLL ArmatureAnimation : public ProcessBase cocos2d::Ref* _movementEventTarget; cocos2d::Ref* _frameEventTarget; - std::function + std::function _movementEventListener; - std::function + std::function _frameEventListener; }; diff --git a/extensions/cocostudio/CCArmatureDataManager.cpp b/extensions/cocostudio/CCArmatureDataManager.cpp index 20f716f0e30a..c0e39d227bdf 100644 --- a/extensions/cocostudio/CCArmatureDataManager.cpp +++ b/extensions/cocostudio/CCArmatureDataManager.cpp @@ -87,7 +87,7 @@ bool ArmatureDataManager::init() return bRet; } -void ArmatureDataManager::removeArmatureFileInfo(const std::string& configFilePath) +void ArmatureDataManager::removeArmatureFileInfo(std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -116,9 +116,9 @@ void ArmatureDataManager::removeArmatureFileInfo(const std::string& configFilePa } } -void ArmatureDataManager::addArmatureData(const std::string& id, +void ArmatureDataManager::addArmatureData(std::string_view id, ArmatureData* armatureData, - const std::string& configFilePath) + std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -128,19 +128,19 @@ void ArmatureDataManager::addArmatureData(const std::string& id, _armarureDatas.insert(id, armatureData); } -ArmatureData* ArmatureDataManager::getArmatureData(const std::string& id) +ArmatureData* ArmatureDataManager::getArmatureData(std::string_view id) { return dynamic_cast(_armarureDatas.at(id)); } -void ArmatureDataManager::removeArmatureData(const std::string& id) +void ArmatureDataManager::removeArmatureData(std::string_view id) { _armarureDatas.erase(id); } -void ArmatureDataManager::addAnimationData(const std::string& id, +void ArmatureDataManager::addAnimationData(std::string_view id, AnimationData* animationData, - const std::string& configFilePath) + std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -150,19 +150,19 @@ void ArmatureDataManager::addAnimationData(const std::string& id, _animationDatas.insert(id, animationData); } -AnimationData* ArmatureDataManager::getAnimationData(const std::string& id) +AnimationData* ArmatureDataManager::getAnimationData(std::string_view id) { return dynamic_cast(_animationDatas.at(id)); } -void ArmatureDataManager::removeAnimationData(const std::string& id) +void ArmatureDataManager::removeAnimationData(std::string_view id) { _animationDatas.erase(id); } -void ArmatureDataManager::addTextureData(const std::string& id, +void ArmatureDataManager::addTextureData(std::string_view id, TextureData* textureData, - const std::string& configFilePath) + std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -172,17 +172,17 @@ void ArmatureDataManager::addTextureData(const std::string& id, _textureDatas.insert(id, textureData); } -TextureData* ArmatureDataManager::getTextureData(const std::string& id) +TextureData* ArmatureDataManager::getTextureData(std::string_view id) { return dynamic_cast(_textureDatas.at(id)); } -void ArmatureDataManager::removeTextureData(const std::string& id) +void ArmatureDataManager::removeTextureData(std::string_view id) { _textureDatas.erase(id); } -void ArmatureDataManager::addArmatureFileInfo(const std::string& configFilePath) +void ArmatureDataManager::addArmatureFileInfo(std::string_view configFilePath) { addRelativeData(configFilePath); @@ -190,7 +190,7 @@ void ArmatureDataManager::addArmatureFileInfo(const std::string& configFilePath) DataReaderHelper::getInstance()->addDataFromFile(configFilePath); } -void ArmatureDataManager::addArmatureFileInfoAsync(const std::string& configFilePath, +void ArmatureDataManager::addArmatureFileInfoAsync(std::string_view configFilePath, Ref* target, SEL_SCHEDULE selector) { @@ -200,9 +200,9 @@ void ArmatureDataManager::addArmatureFileInfoAsync(const std::string& configFile DataReaderHelper::getInstance()->addDataFromFileAsync("", "", configFilePath, target, selector); } -void ArmatureDataManager::addArmatureFileInfo(const std::string& imagePath, - const std::string& plistPath, - const std::string& configFilePath) +void ArmatureDataManager::addArmatureFileInfo(std::string_view imagePath, + std::string_view plistPath, + std::string_view configFilePath) { addRelativeData(configFilePath); @@ -211,9 +211,9 @@ void ArmatureDataManager::addArmatureFileInfo(const std::string& imagePath, addSpriteFrameFromFile(plistPath, imagePath, configFilePath); } -void ArmatureDataManager::addArmatureFileInfoAsync(const std::string& imagePath, - const std::string& plistPath, - const std::string& configFilePath, +void ArmatureDataManager::addArmatureFileInfoAsync(std::string_view imagePath, + std::string_view plistPath, + std::string_view configFilePath, Ref* target, SEL_SCHEDULE selector) { @@ -224,9 +224,9 @@ void ArmatureDataManager::addArmatureFileInfoAsync(const std::string& imagePath, addSpriteFrameFromFile(plistPath, imagePath, configFilePath); } -void ArmatureDataManager::addSpriteFrameFromFile(const std::string& plistPath, - const std::string& imagePath, - const std::string& configFilePath) +void ArmatureDataManager::addSpriteFrameFromFile(std::string_view plistPath, + std::string_view imagePath, + std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -253,7 +253,7 @@ const cocos2d::Map& ArmatureDataManager::getTextureDa return _textureDatas; } -void ArmatureDataManager::addRelativeData(const std::string& configFilePath) +void ArmatureDataManager::addRelativeData(std::string_view configFilePath) { if (_relativeDatas.find(configFilePath) == _relativeDatas.end()) { @@ -261,7 +261,7 @@ void ArmatureDataManager::addRelativeData(const std::string& configFilePath) } } -RelativeData* ArmatureDataManager::getRelativeData(const std::string& configFilePath) +RelativeData* ArmatureDataManager::getRelativeData(std::string_view configFilePath) { return &_relativeDatas[configFilePath]; } diff --git a/extensions/cocostudio/CCArmatureDataManager.h b/extensions/cocostudio/CCArmatureDataManager.h index d7e9f5dd9783..8b89ddb7a563 100644 --- a/extensions/cocostudio/CCArmatureDataManager.h +++ b/extensions/cocostudio/CCArmatureDataManager.h @@ -80,99 +80,99 @@ class CCS_DLL ArmatureDataManager : public cocos2d::Ref * @param id The id of the armature data * @param armatureData ArmatureData * */ - void addArmatureData(const std::string& id, ArmatureData* armatureData, const std::string& configFilePath = ""); + void addArmatureData(std::string_view id, ArmatureData* armatureData, std::string_view configFilePath = ""); /** * @brief get armature data * @param id the id of the armature data you want to get * @return ArmatureData * */ - ArmatureData* getArmatureData(const std::string& id); + ArmatureData* getArmatureData(std::string_view id); /** * @brief remove armature data * @param id the id of the armature data you want to get */ - void removeArmatureData(const std::string& id); + void removeArmatureData(std::string_view id); /** * @brief add animation data * @param id the id of the animation data * @return AnimationData * */ - void addAnimationData(const std::string& id, AnimationData* animationData, const std::string& configFilePath = ""); + void addAnimationData(std::string_view id, AnimationData* animationData, std::string_view configFilePath = ""); /** * @brief get animation data from _animationDatas(Dictionary) * @param id the id of the animation data you want to get * @return AnimationData * */ - AnimationData* getAnimationData(const std::string& id); + AnimationData* getAnimationData(std::string_view id); /** * @brief remove animation data * @param id the id of the animation data */ - void removeAnimationData(const std::string& id); + void removeAnimationData(std::string_view id); /** * @brief add texture data * @param id the id of the texture data * @return TextureData * */ - void addTextureData(const std::string& id, TextureData* textureData, const std::string& configFilePath = ""); + void addTextureData(std::string_view id, TextureData* textureData, std::string_view configFilePath = ""); /** * @brief get texture data * @param id the id of the texture data you want to get * @return TextureData * */ - TextureData* getTextureData(const std::string& id); + TextureData* getTextureData(std::string_view id); /** * @brief remove texture data * @param id the id of the texture data you want to get */ - void removeTextureData(const std::string& id); + void removeTextureData(std::string_view id); /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. */ - void addArmatureFileInfo(const std::string& configFilePath); + void addArmatureFileInfo(std::string_view configFilePath); /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. * It will load data in a new thread */ - void addArmatureFileInfoAsync(const std::string& configFilePath, + void addArmatureFileInfoAsync(std::string_view configFilePath, cocos2d::Ref* target, cocos2d::SEL_SCHEDULE selector); /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. */ - void addArmatureFileInfo(const std::string& imagePath, - const std::string& plistPath, - const std::string& configFilePath); + void addArmatureFileInfo(std::string_view imagePath, + std::string_view plistPath, + std::string_view configFilePath); /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. * It will load data in a new thread */ - void addArmatureFileInfoAsync(const std::string& imagePath, - const std::string& plistPath, - const std::string& configFilePath, + void addArmatureFileInfoAsync(std::string_view imagePath, + std::string_view plistPath, + std::string_view configFilePath, cocos2d::Ref* target, cocos2d::SEL_SCHEDULE selector); /** * @brief Add sprite frame to CCSpriteFrameCache, it will save display name and it's relative image name */ - void addSpriteFrameFromFile(const std::string& plistPath, - const std::string& imagePath, - const std::string& configFilePath = ""); + void addSpriteFrameFromFile(std::string_view plistPath, + std::string_view imagePath, + std::string_view configFilePath = ""); - virtual void removeArmatureFileInfo(const std::string& configFilePath); + virtual void removeArmatureFileInfo(std::string_view configFilePath); /** * @brief Judge whether or not need auto load sprite file @@ -184,8 +184,8 @@ class CCS_DLL ArmatureDataManager : public cocos2d::Ref const cocos2d::Map& getTextureDatas() const; public: - void addRelativeData(const std::string& configFilePath); - RelativeData* getRelativeData(const std::string& configFilePath); + void addRelativeData(std::string_view configFilePath); + RelativeData* getRelativeData(std::string_view configFilePath); private: /** diff --git a/extensions/cocostudio/CCBatchNode.cpp b/extensions/cocostudio/CCBatchNode.cpp index f7ec04f51914..4344dea84115 100644 --- a/extensions/cocostudio/CCBatchNode.cpp +++ b/extensions/cocostudio/CCBatchNode.cpp @@ -69,7 +69,7 @@ void BatchNode::addChild(Node* child, int zOrder, int tag) } } -void BatchNode::addChild(cocos2d::Node* child, int zOrder, const std::string& name) +void BatchNode::addChild(cocos2d::Node* child, int zOrder, std::string_view name) { Node::addChild(child, zOrder, name); Armature* armature = dynamic_cast(child); diff --git a/extensions/cocostudio/CCBatchNode.h b/extensions/cocostudio/CCBatchNode.h index 88a398345174..7269f6dcbb40 100644 --- a/extensions/cocostudio/CCBatchNode.h +++ b/extensions/cocostudio/CCBatchNode.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -58,7 +58,7 @@ class CCS_DLL BatchNode : public cocos2d::Node virtual bool init() override; using Node::addChild; virtual void addChild(cocos2d::Node* pChild, int zOrder, int tag) override; - virtual void addChild(cocos2d::Node* pChild, int zOrder, const std::string& name) override; + virtual void addChild(cocos2d::Node* pChild, int zOrder, std::string_view name) override; virtual void removeChild(cocos2d::Node* child, bool cleanup) override; virtual void visit(cocos2d::Renderer* renderer, const cocos2d::Mat4& parentTransform, diff --git a/extensions/cocostudio/CCBone.cpp b/extensions/cocostudio/CCBone.cpp index bbe38bb39087..1fe824b92f0a 100644 --- a/extensions/cocostudio/CCBone.cpp +++ b/extensions/cocostudio/CCBone.cpp @@ -47,7 +47,7 @@ Bone* Bone::create() return nullptr; } -Bone* Bone::create(const std::string& name) +Bone* Bone::create(std::string_view name) { Bone* pBone = new Bone(); @@ -95,7 +95,7 @@ bool Bone::init() return Bone::init(nullptr); } -bool Bone::init(const std::string& name) +bool Bone::init(std::string_view name) { bool bRet = false; do @@ -416,7 +416,7 @@ void Bone::changeDisplayByIndex(int index, bool force) changeDisplayWithIndex(index, force); } -void Bone::changeDisplayByName(const std::string& name, bool force) +void Bone::changeDisplayByName(std::string_view name, bool force) { changeDisplayWithName(name, force); } @@ -426,7 +426,7 @@ void Bone::changeDisplayWithIndex(int index, bool force) _displayManager->changeDisplayWithIndex(index, force); } -void Bone::changeDisplayWithName(const std::string& name, bool force) +void Bone::changeDisplayWithName(std::string_view name, bool force) { _displayManager->changeDisplayWithName(name, force); } diff --git a/extensions/cocostudio/CCBone.h b/extensions/cocostudio/CCBone.h index bea21a95dfa5..409a0a381e4b 100644 --- a/extensions/cocostudio/CCBone.h +++ b/extensions/cocostudio/CCBone.h @@ -53,7 +53,7 @@ class CCS_DLL Bone : public cocos2d::Node * @param name If name is not null, then set name to the bone's name * @return A initialized bone which is marked as "autorelease". */ - static Bone* create(const std::string& name); + static Bone* create(std::string_view name); public: /** @@ -75,7 +75,7 @@ class CCS_DLL Bone : public cocos2d::Node * Initializes a Bone with the specified name * @param name Bone's name. */ - virtual bool init(const std::string& name); + virtual bool init(std::string_view name); /** * Add display and use displayData to init the display. @@ -95,10 +95,10 @@ class CCS_DLL Bone : public cocos2d::Node void removeDisplay(int index); CC_DEPRECATED_ATTRIBUTE void changeDisplayByIndex(int index, bool force); - CC_DEPRECATED_ATTRIBUTE void changeDisplayByName(const std::string& name, bool force); + CC_DEPRECATED_ATTRIBUTE void changeDisplayByName(std::string_view name, bool force); void changeDisplayWithIndex(int index, bool force); - void changeDisplayWithName(const std::string& name, bool force); + void changeDisplayWithName(std::string_view name, bool force); /** * Add a child to this bone, and it will let this child call setParent(Bone *parent) function to set self to it's diff --git a/extensions/cocostudio/CCComAttribute.cpp b/extensions/cocostudio/CCComAttribute.cpp index 57cf1b07672d..2993266d5601 100644 --- a/extensions/cocostudio/CCComAttribute.cpp +++ b/extensions/cocostudio/CCComAttribute.cpp @@ -49,27 +49,27 @@ bool ComAttribute::init() return true; } -void ComAttribute::setInt(const std::string& key, int value) +void ComAttribute::setInt(std::string_view key, int value) { _dict[key] = cocos2d::Value(value); } -void ComAttribute::setFloat(const std::string& key, float value) +void ComAttribute::setFloat(std::string_view key, float value) { _dict[key] = cocos2d::Value(value); } -void ComAttribute::setBool(const std::string& key, bool value) +void ComAttribute::setBool(std::string_view key, bool value) { _dict[key] = cocos2d::Value(value); } -void ComAttribute::setString(const std::string& key, const std::string& value) +void ComAttribute::setString(std::string_view key, std::string_view value) { _dict[key] = cocos2d::Value(value); } -int ComAttribute::getInt(const std::string& key, int def) const +int ComAttribute::getInt(std::string_view key, int def) const { if (_dict.find(key) != _dict.end()) { @@ -85,7 +85,7 @@ int ComAttribute::getInt(const std::string& key, int def) const return DICTOOL->getIntValue_json(_doc, key.c_str()); } -float ComAttribute::getFloat(const std::string& key, float def) const +float ComAttribute::getFloat(std::string_view key, float def) const { if (_dict.find(key) != _dict.end()) { @@ -100,7 +100,7 @@ float ComAttribute::getFloat(const std::string& key, float def) const return DICTOOL->getFloatValue_json(_doc, key.c_str()); } -bool ComAttribute::getBool(const std::string& key, bool def) const +bool ComAttribute::getBool(std::string_view key, bool def) const { if (_dict.find(key) != _dict.end()) { @@ -116,7 +116,7 @@ bool ComAttribute::getBool(const std::string& key, bool def) const return DICTOOL->getBooleanValue_json(_doc, key.c_str()); } -std::string ComAttribute::getString(const std::string& key, const std::string& def) const +std::string ComAttribute::getString(std::string_view key, std::string_view def) const { if (_dict.find(key) != _dict.end()) { @@ -206,7 +206,7 @@ bool ComAttribute::serialize(void* r) return ret; } -bool ComAttribute::parse(const std::string& jsonFile) +bool ComAttribute::parse(std::string_view jsonFile) { bool ret = false; do diff --git a/extensions/cocostudio/CCComAttribute.h b/extensions/cocostudio/CCComAttribute.h index 1a47ff8d055c..df368b8c462e 100644 --- a/extensions/cocostudio/CCComAttribute.h +++ b/extensions/cocostudio/CCComAttribute.h @@ -54,15 +54,15 @@ class CCS_DLL ComAttribute : public cocos2d::Component virtual bool init() override; virtual bool serialize(void* r) override; - void setInt(const std::string& key, int value); - void setFloat(const std::string& key, float value); - void setBool(const std::string& key, bool value); - void setString(const std::string& key, const std::string& value); - int getInt(const std::string& key, int def = 0) const; - float getFloat(const std::string& key, float def = 0.0f) const; - bool getBool(const std::string& key, bool def = false) const; - std::string getString(const std::string& key, const std::string& def = "") const; - bool parse(const std::string& jsonFile); + void setInt(std::string_view key, int value); + void setFloat(std::string_view key, float value); + void setBool(std::string_view key, bool value); + void setString(std::string_view key, std::string_view value); + int getInt(std::string_view key, int def = 0) const; + float getFloat(std::string_view key, float def = 0.0f) const; + bool getBool(std::string_view key, bool def = false) const; + std::string getString(std::string_view key, std::string_view def = "") const; + bool parse(std::string_view jsonFile); private: cocos2d::ValueMap _dict; diff --git a/extensions/cocostudio/CCComExtensionData.h b/extensions/cocostudio/CCComExtensionData.h index 0c5dcb7de01a..973549150616 100644 --- a/extensions/cocostudio/CCComExtensionData.h +++ b/extensions/cocostudio/CCComExtensionData.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2015 cocos2d-x.org http://www.cocos2d-x.org @@ -69,7 +69,7 @@ class CCS_DLL ComExtensionData : public cocos2d::Component static ComExtensionData* create(); virtual bool init() override; - virtual void setCustomProperty(const std::string& customProperty) { _customProperty = customProperty; } + virtual void setCustomProperty(std::string_view customProperty) { _customProperty = customProperty; } virtual std::string getCustomProperty() const { return _customProperty; }; virtual void setActionTag(int actionTag); diff --git a/extensions/cocostudio/CCComRender.cpp b/extensions/cocostudio/CCComRender.cpp index ad2262cf8de2..74cf487a8b24 100644 --- a/extensions/cocostudio/CCComRender.cpp +++ b/extensions/cocostudio/CCComRender.cpp @@ -383,7 +383,7 @@ ComRender* ComRender::create(cocos2d::Node* node, const char* comName) return ret; } -bool ComRender::readJson(const std::string& fileName, rapidjson::Document& doc) +bool ComRender::readJson(std::string_view fileName, rapidjson::Document& doc) { bool ret = false; do diff --git a/extensions/cocostudio/CCComRender.h b/extensions/cocostudio/CCComRender.h index 83bc28e58f8a..de0aaeebb17c 100644 --- a/extensions/cocostudio/CCComRender.h +++ b/extensions/cocostudio/CCComRender.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -79,7 +79,7 @@ class CCS_DLL ComRender : public cocos2d::Component virtual ~ComRender(); private: - bool readJson(const std::string& fileName, rapidjson::Document& doc); + bool readJson(std::string_view fileName, rapidjson::Document& doc); cocos2d::Node* _render; }; diff --git a/extensions/cocostudio/CCDataReaderHelper.cpp b/extensions/cocostudio/CCDataReaderHelper.cpp index 7cd5acea543d..9dee7de59096 100644 --- a/extensions/cocostudio/CCDataReaderHelper.cpp +++ b/extensions/cocostudio/CCDataReaderHelper.cpp @@ -133,7 +133,7 @@ static const char* COLOR_INFO = "color"; static const char* CONFIG_FILE_PATH = "config_file_path"; static const char* CONTENT_SCALE = "content_scale"; -static std::string readFileContent(const std::string& filename, bool binary) +static std::string readFileContent(std::string_view filename, bool binary) { auto fs = FileUtils::getInstance(); std::string s; @@ -264,7 +264,7 @@ DataReaderHelper::~DataReaderHelper() _dataReaderHelper = nullptr; } -void DataReaderHelper::addDataFromFile(const std::string& filePath) +void DataReaderHelper::addDataFromFile(std::string_view filePath) { /* * Check if file is already added to ArmatureDataManager, if then return. @@ -319,9 +319,9 @@ void DataReaderHelper::addDataFromFile(const std::string& filePath) } } -void DataReaderHelper::addDataFromFileAsync(const std::string& imagePath, - const std::string& plistPath, - const std::string& filePath, +void DataReaderHelper::addDataFromFileAsync(std::string_view imagePath, + std::string_view plistPath, + std::string_view filePath, Ref* target, SEL_SCHEDULE selector) { @@ -490,7 +490,7 @@ void DataReaderHelper::addDataAsyncCallBack(float /*dt*/) } } -void DataReaderHelper::removeConfigFile(const std::string& configFile) +void DataReaderHelper::removeConfigFile(std::string_view configFile) { auto it_end = _configFileList.end(); for (auto it = _configFileList.begin(); it != it_end; ++it) @@ -503,7 +503,7 @@ void DataReaderHelper::removeConfigFile(const std::string& configFile) } } -void DataReaderHelper::addDataFromCache(const std::string& pFileContent, DataInfo* dataInfo) +void DataReaderHelper::addDataFromCache(std::string_view pFileContent, DataInfo* dataInfo) { pugi::xml_document document; document.load_string(pFileContent.c_str()); @@ -1116,7 +1116,7 @@ ContourData* DataReaderHelper::decodeContour(pugi::xml_node& contourXML, DataInf return contourData; } -void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, DataInfo* dataInfo) +void DataReaderHelper::addDataFromJsonCache(std::string_view fileContent, DataInfo* dataInfo) { rapidjson::Document json; rapidjson::StringStream stream(fileContent.c_str()); diff --git a/extensions/cocostudio/CCDataReaderHelper.h b/extensions/cocostudio/CCDataReaderHelper.h index aa511c27aba6..b3437f7cb6b7 100644 --- a/extensions/cocostudio/CCDataReaderHelper.h +++ b/extensions/cocostudio/CCDataReaderHelper.h @@ -114,16 +114,16 @@ class CCS_DLL DataReaderHelper : cocos2d::Ref */ ~DataReaderHelper(); - void addDataFromFile(const std::string& filePath); - void addDataFromFileAsync(const std::string& imagePath, - const std::string& plistPath, - const std::string& filePath, + void addDataFromFile(std::string_view filePath); + void addDataFromFileAsync(std::string_view imagePath, + std::string_view plistPath, + std::string_view filePath, cocos2d::Ref* target, cocos2d::SEL_SCHEDULE selector); void addDataAsyncCallBack(float dt); - void removeConfigFile(const std::string& configFile); + void removeConfigFile(std::string_view configFile); public: /** @@ -132,7 +132,7 @@ class CCS_DLL DataReaderHelper : cocos2d::Ref * * @param xmlPath The cache of the xml */ - static void addDataFromCache(const std::string& pFileContent, DataInfo* dataInfo = nullptr); + static void addDataFromCache(std::string_view pFileContent, DataInfo* dataInfo = nullptr); /** * Decode Armature Datas from xml export from Dragon Bone flash tool @@ -166,7 +166,7 @@ class CCS_DLL DataReaderHelper : cocos2d::Ref static ContourData* decodeContour(pugi::xml_node& contourXML, DataInfo* dataInfo); public: - static void addDataFromJsonCache(const std::string& fileContent, DataInfo* dataInfo = nullptr); + static void addDataFromJsonCache(std::string_view fileContent, DataInfo* dataInfo = nullptr); static ArmatureData* decodeArmature(const rapidjson::Value& json, DataInfo* dataInfo); static BoneData* decodeBone(const rapidjson::Value& json, DataInfo* dataInfo); diff --git a/extensions/cocostudio/CCDatas.cpp b/extensions/cocostudio/CCDatas.cpp index ff8d44569d0a..65b5cada2ead 100644 --- a/extensions/cocostudio/CCDatas.cpp +++ b/extensions/cocostudio/CCDatas.cpp @@ -136,7 +136,7 @@ Color4B BaseData::getColor() return Color4B(r, g, b, a); } -std::string DisplayData::changeDisplayToTexture(const std::string& displayName) +std::string DisplayData::changeDisplayToTexture(std::string_view displayName) { // remove .xxx std::string textureName = displayName; @@ -216,7 +216,7 @@ void ArmatureData::addBoneData(BoneData* boneData) boneDataDic.insert(boneData->name, boneData); } -BoneData* ArmatureData::getBoneData(const std::string& boneName) +BoneData* ArmatureData::getBoneData(std::string_view boneName) { return static_cast(boneDataDic.at(boneName)); } @@ -305,7 +305,7 @@ void MovementData::addMovementBoneData(MovementBoneData* movBoneData) movBoneDataDic.insert(movBoneData->name, movBoneData); } -MovementBoneData* MovementData::getMovementBoneData(const std::string& boneName) +MovementBoneData* MovementData::getMovementBoneData(std::string_view boneName) { return movBoneDataDic.at(boneName); } @@ -320,7 +320,7 @@ void AnimationData::addMovement(MovementData* movData) movementNames.push_back(movData->name); } -MovementData* AnimationData::getMovement(const std::string& movementName) +MovementData* AnimationData::getMovement(std::string_view movementName) { return movementDataDic.at(movementName); } diff --git a/extensions/cocostudio/CCDatas.h b/extensions/cocostudio/CCDatas.h index 08985516ec6f..e0ed53be05bf 100644 --- a/extensions/cocostudio/CCDatas.h +++ b/extensions/cocostudio/CCDatas.h @@ -140,7 +140,7 @@ class CCS_DLL DisplayData : public cocos2d::Ref public: CC_CREATE_NO_PARAM_NO_INIT(DisplayData) - static std::string changeDisplayToTexture(const std::string& displayName); + static std::string changeDisplayToTexture(std::string_view displayName); public: /** @@ -282,7 +282,7 @@ class CCS_DLL ArmatureData : public cocos2d::Ref bool init(); void addBoneData(BoneData* boneData); - BoneData* getBoneData(const std::string& boneName); + BoneData* getBoneData(std::string_view boneName); public: std::string name; @@ -409,7 +409,7 @@ class CCS_DLL MovementData : public cocos2d::Ref ~MovementData(void); void addMovementBoneData(MovementBoneData* movBoneData); - MovementBoneData* getMovementBoneData(const std::string& boneName); + MovementBoneData* getMovementBoneData(std::string_view boneName); public: std::string name; @@ -443,7 +443,7 @@ class CCS_DLL MovementData : public cocos2d::Ref /** * @brief save movement bone data - * @key const std::string& + * @key std::string_view * @value MovementBoneData * */ cocos2d::Map movBoneDataDic; @@ -472,7 +472,7 @@ class CCS_DLL AnimationData : public cocos2d::Ref ~AnimationData(void); void addMovement(MovementData* movData); - MovementData* getMovement(const std::string& movementName); + MovementData* getMovement(std::string_view movementName); ssize_t getMovementCount(); public: diff --git a/extensions/cocostudio/CCDisplayManager.cpp b/extensions/cocostudio/CCDisplayManager.cpp index f5a4377d0482..7fdd2bc7abeb 100644 --- a/extensions/cocostudio/CCDisplayManager.cpp +++ b/extensions/cocostudio/CCDisplayManager.cpp @@ -239,7 +239,7 @@ void DisplayManager::changeDisplayWithIndex(int index, bool force) setCurrentDecorativeDisplay(decoDisplay); } -void DisplayManager::changeDisplayWithName(const std::string& name, bool force) +void DisplayManager::changeDisplayWithName(std::string_view name, bool force) { for (int i = 0; i < _decoDisplayList.size(); i++) { diff --git a/extensions/cocostudio/CCDisplayManager.h b/extensions/cocostudio/CCDisplayManager.h index 1e32d8f7a788..f43fb13e56ee 100644 --- a/extensions/cocostudio/CCDisplayManager.h +++ b/extensions/cocostudio/CCDisplayManager.h @@ -80,7 +80,7 @@ class CCS_DLL DisplayManager : public cocos2d::Ref * @deprecated, please use changeDisplayWithIndex and changeDisplayWithName */ CC_DEPRECATED_ATTRIBUTE void changeDisplayByIndex(int index, bool force); - CC_DEPRECATED_ATTRIBUTE void changeDisplayByName(const std::string& name, bool force); + CC_DEPRECATED_ATTRIBUTE void changeDisplayByName(std::string_view name, bool force); /** * Change display by index. You can just use this method to change display in the display list. @@ -93,7 +93,7 @@ class CCS_DLL DisplayManager : public cocos2d::Ref * index edit in the flash every key frame. */ void changeDisplayWithIndex(int index, bool force); - void changeDisplayWithName(const std::string& name, bool force); + void changeDisplayWithName(std::string_view name, bool force); cocos2d::Node* getDisplayRenderNode() const; DisplayType getDisplayRenderNodeType() const; diff --git a/extensions/cocostudio/CCSGUIReader.cpp b/extensions/cocostudio/CCSGUIReader.cpp index 0855bb102a0a..f2a0845df6d7 100644 --- a/extensions/cocostudio/CCSGUIReader.cpp +++ b/extensions/cocostudio/CCSGUIReader.cpp @@ -160,7 +160,7 @@ cocos2d::Size GUIReader::getFileDesignSize(const char* fileName) const return Size(w, h); } -void GUIReader::registerTypeAndCallBack(const std::string& classType, +void GUIReader::registerTypeAndCallBack(std::string_view classType, ObjectFactory::Instance ins, Ref* object, SEL_ParseEvent callBack) @@ -181,7 +181,7 @@ void GUIReader::registerTypeAndCallBack(const std::string& classType, } } -void GUIReader::registerTypeAndCallBack(const std::string& classType, +void GUIReader::registerTypeAndCallBack(std::string_view classType, ObjectFactory::InstanceFunc ins, Ref* object, SEL_ParseEvent callBack) @@ -309,7 +309,7 @@ std::string WidgetPropertiesReader::getWidgetReaderClassName(Widget* widget) return readerName; } -std::string WidgetPropertiesReader::getGUIClassName(const std::string& name) +std::string WidgetPropertiesReader::getGUIClassName(std::string_view name) { std::string convertedClassName = name; if (name == "Panel") @@ -340,7 +340,7 @@ std::string WidgetPropertiesReader::getGUIClassName(const std::string& name) return convertedClassName; } -cocos2d::ui::Widget* WidgetPropertiesReader::createGUI(const std::string& classname) +cocos2d::ui::Widget* WidgetPropertiesReader::createGUI(std::string_view classname) { std::string name = this->getGUIClassName(classname); @@ -349,7 +349,7 @@ cocos2d::ui::Widget* WidgetPropertiesReader::createGUI(const std::string& classn return dynamic_cast(object); } -WidgetReaderProtocol* WidgetPropertiesReader::createWidgetReaderProtocol(const std::string& classname) +WidgetReaderProtocol* WidgetPropertiesReader::createWidgetReaderProtocol(std::string_view classname) { Ref* object = ObjectFactory::getInstance()->createObject(classname); @@ -426,7 +426,7 @@ Widget* GUIReader::widgetFromBinaryFile(const char* fileName) return widget; } -std::string WidgetPropertiesReader::getWidgetReaderClassName(const std::string& classname) +std::string WidgetPropertiesReader::getWidgetReaderClassName(std::string_view classname) { // create widget reader to parse properties of widget std::string readerName = classname; @@ -1240,7 +1240,7 @@ void WidgetPropertiesReader0250::setPropsForAllWidgetFromJsonDictionary(WidgetRe const rapidjson::Value& /*options*/) {} -void WidgetPropertiesReader0250::setPropsForAllCustomWidgetFromJsonDictionary(const std::string& /*classType*/, +void WidgetPropertiesReader0250::setPropsForAllCustomWidgetFromJsonDictionary(std::string_view /*classType*/, cocos2d::ui::Widget* /*widget*/, const rapidjson::Value& /*customOptions*/) {} @@ -1542,7 +1542,7 @@ void WidgetPropertiesReader0300::setPropsForAllWidgetFromBinary(WidgetReaderProt reader->setPropsFromBinary(widget, cocoLoader, cocoNode); } -void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromBinary(const std::string& /*classType*/, +void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromBinary(std::string_view /*classType*/, cocos2d::ui::Widget* /*widget*/, CocoLoader* /*cocoLoader*/, stExpCocoNode* /*pCocoNode*/) @@ -1637,7 +1637,7 @@ void WidgetPropertiesReader0300::setPropsForAllWidgetFromJsonDictionary(WidgetRe reader->setPropsFromJsonDictionary(widget, options); } -void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, +void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromJsonDictionary(std::string_view classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions) { diff --git a/extensions/cocostudio/CCSGUIReader.h b/extensions/cocostudio/CCSGUIReader.h index 5c277866ccb7..1de130dd4d93 100644 --- a/extensions/cocostudio/CCSGUIReader.h +++ b/extensions/cocostudio/CCSGUIReader.h @@ -76,15 +76,15 @@ class CCS_DLL GUIReader : public cocos2d::Ref */ cocos2d::Size getFileDesignSize(const char* fileName) const; - void setFilePath(const std::string& strFilePath) { m_strFilePath = strFilePath; } - const std::string& getFilePath() const { return m_strFilePath; } + void setFilePath(std::string_view strFilePath) { m_strFilePath = strFilePath; } + std::string_view getFilePath() const { return m_strFilePath; } - void registerTypeAndCallBack(const std::string& classType, + void registerTypeAndCallBack(std::string_view classType, cocos2d::ObjectFactory::Instance ins, Ref* object, SEL_ParseEvent callBack); - void registerTypeAndCallBack(const std::string& classType, + void registerTypeAndCallBack(std::string_view classType, cocos2d::ObjectFactory::InstanceFunc ins, Ref* object, SEL_ParseEvent callBack); @@ -118,7 +118,7 @@ class CCS_DLL WidgetPropertiesReader : public cocos2d::Ref cocos2d::ui::Widget* widget, const rapidjson::Value& options) = 0; - virtual void setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, + virtual void setPropsForAllCustomWidgetFromJsonDictionary(std::string_view classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions) = 0; @@ -134,12 +134,12 @@ class CCS_DLL WidgetPropertiesReader : public cocos2d::Ref protected: void setAnchorPointForWidget(cocos2d::ui::Widget* widget, const rapidjson::Value& options); - std::string getWidgetReaderClassName(const std::string& classname); + std::string getWidgetReaderClassName(std::string_view classname); std::string getWidgetReaderClassName(cocos2d::ui::Widget* widget); - std::string getGUIClassName(const std::string& name); - cocos2d::ui::Widget* createGUI(const std::string& classname); - WidgetReaderProtocol* createWidgetReaderProtocol(const std::string& classname); + std::string getGUIClassName(std::string_view name); + cocos2d::ui::Widget* createGUI(std::string_view classname); + WidgetReaderProtocol* createWidgetReaderProtocol(std::string_view classname); protected: std::string m_strFilePath; @@ -189,7 +189,7 @@ class CCS_DLL WidgetPropertiesReader0250 : public WidgetPropertiesReader virtual void setPropsForAllWidgetFromJsonDictionary(WidgetReaderProtocol* reader, cocos2d::ui::Widget* widget, const rapidjson::Value& options) override; - virtual void setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, + virtual void setPropsForAllCustomWidgetFromJsonDictionary(std::string_view classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions) override; }; @@ -217,7 +217,7 @@ class CCS_DLL WidgetPropertiesReader0300 : public WidgetPropertiesReader CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) override; - virtual void setPropsForAllCustomWidgetFromBinary(const std::string& classType, + virtual void setPropsForAllCustomWidgetFromBinary(std::string_view classType, cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); @@ -228,7 +228,7 @@ class CCS_DLL WidgetPropertiesReader0300 : public WidgetPropertiesReader cocos2d::ui::Widget* widget, const rapidjson::Value& options) override; - virtual void setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, + virtual void setPropsForAllCustomWidgetFromJsonDictionary(std::string_view classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions) override; }; diff --git a/extensions/cocostudio/CCSSceneReader.cpp b/extensions/cocostudio/CCSSceneReader.cpp index 477341309d48..f69c5e05dd99 100644 --- a/extensions/cocostudio/CCSSceneReader.cpp +++ b/extensions/cocostudio/CCSSceneReader.cpp @@ -54,7 +54,7 @@ const char* SceneReader::sceneReaderVersion() } cocos2d::Node* SceneReader::createNodeWithSceneFile( - const std::string& fileName, + std::string_view fileName, AttachComponentType attachComponent /*= AttachComponentType::EMPTY_NODE*/) { std::string fileExtension = cocos2d::FileUtils::getInstance()->getFileExtension(fileName); @@ -166,7 +166,7 @@ cocos2d::Node* SceneReader::createNodeWithSceneFile( return nullptr; } -bool SceneReader::readJson(const std::string& fileName, rapidjson::Document& doc) +bool SceneReader::readJson(std::string_view fileName, rapidjson::Document& doc) { bool ret = false; do @@ -210,14 +210,14 @@ Node* SceneReader::nodeByTag(Node* parent, int tag) return _retNode; } -cocos2d::Component* SceneReader::createComponent(const std::string& classname) +cocos2d::Component* SceneReader::createComponent(std::string_view classname) { std::string name = this->getComponentClassName(classname); Ref* object = ObjectFactory::getInstance()->createObject(name); return dynamic_cast(object); } -std::string SceneReader::getComponentClassName(const std::string& name) +std::string SceneReader::getComponentClassName(std::string_view name) { std::string comName; if (name == "CCSprite" || name == "CCTMXTiledMap" || name == "CCParticleSystemQuad" || name == "CCArmature" || diff --git a/extensions/cocostudio/CCSSceneReader.h b/extensions/cocostudio/CCSSceneReader.h index 90163ac7e5b1..4cb2e599b217 100644 --- a/extensions/cocostudio/CCSSceneReader.h +++ b/extensions/cocostudio/CCSSceneReader.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. Copyright (c) 2021 Bytedance Inc. @@ -61,7 +61,7 @@ class CCS_DLL SceneReader */ static void destroyInstance(); static const char* sceneReaderVersion(); - cocos2d::Node* createNodeWithSceneFile(const std::string& fileName, + cocos2d::Node* createNodeWithSceneFile(std::string_view fileName, AttachComponentType attachComponent = AttachComponentType::EMPTY_NODE); void setTarget(const std::function& selector); cocos2d::Node* getNodeByTag(int nTag); @@ -70,15 +70,15 @@ class CCS_DLL SceneReader virtual ~SceneReader(); private: - std::string getComponentClassName(const std::string& name); + std::string getComponentClassName(std::string_view name); - cocos2d::Component* createComponent(const std::string& classname); + cocos2d::Component* createComponent(std::string_view classname); cocos2d::Node* createObject(const rapidjson::Value& dict, cocos2d::Node* parent, AttachComponentType attachComponent); void setPropertyFromJsonDict(const rapidjson::Value& dict, cocos2d::Node* node); - bool readJson(const std::string& fileName, rapidjson::Document& doc); + bool readJson(std::string_view fileName, rapidjson::Document& doc); cocos2d::Node* createObject(CocoLoader* cocoLoader, stExpCocoNode* cocoNode, diff --git a/extensions/cocostudio/CCSkin.cpp b/extensions/cocostudio/CCSkin.cpp index 253354a23517..8287a412bfa3 100644 --- a/extensions/cocostudio/CCSkin.cpp +++ b/extensions/cocostudio/CCSkin.cpp @@ -55,7 +55,7 @@ Skin* Skin::create() return nullptr; } -Skin* Skin::createWithSpriteFrameName(const std::string& pszSpriteFrameName) +Skin* Skin::createWithSpriteFrameName(std::string_view pszSpriteFrameName) { Skin* skin = new Skin(); if (skin->initWithSpriteFrameName(pszSpriteFrameName)) @@ -67,7 +67,7 @@ Skin* Skin::createWithSpriteFrameName(const std::string& pszSpriteFrameName) return nullptr; } -Skin* Skin::create(const std::string& pszFileName) +Skin* Skin::create(std::string_view pszFileName) { Skin* skin = new Skin(); if (skin->initWithFile(pszFileName)) @@ -81,7 +81,7 @@ Skin* Skin::create(const std::string& pszFileName) Skin::Skin() : _bone(nullptr), _armature(nullptr), _displayName(), _skinTransform(Mat4::IDENTITY) {} -bool Skin::initWithSpriteFrameName(const std::string& spriteFrameName) +bool Skin::initWithSpriteFrameName(std::string_view spriteFrameName) { CCAssert(spriteFrameName != "", ""); @@ -103,7 +103,7 @@ bool Skin::initWithSpriteFrameName(const std::string& spriteFrameName) return ret; } -bool Skin::initWithFile(const std::string& filename) +bool Skin::initWithFile(std::string_view filename) { bool ret = Sprite::initWithFile(filename); diff --git a/extensions/cocostudio/CCSkin.h b/extensions/cocostudio/CCSkin.h index 74046b428ad6..f1b0fc40b11d 100644 --- a/extensions/cocostudio/CCSkin.h +++ b/extensions/cocostudio/CCSkin.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -39,8 +39,8 @@ class CCS_DLL Skin : public cocos2d::Sprite { public: static Skin* create(); - static Skin* createWithSpriteFrameName(const std::string& pszSpriteFrameName); - static Skin* create(const std::string& pszFileName); + static Skin* createWithSpriteFrameName(std::string_view pszSpriteFrameName); + static Skin* create(std::string_view pszFileName); public: /** @@ -48,8 +48,8 @@ class CCS_DLL Skin : public cocos2d::Sprite */ Skin(); - virtual bool initWithSpriteFrameName(const std::string& spriteFrameName) override; - virtual bool initWithFile(const std::string& filename) override; + virtual bool initWithSpriteFrameName(std::string_view spriteFrameName) override; + virtual bool initWithFile(std::string_view filename) override; void updateArmatureTransform(); void updateTransform() override; @@ -73,7 +73,7 @@ class CCS_DLL Skin : public cocos2d::Sprite virtual void setBone(Bone* bone); virtual Bone* getBone() const; - virtual const std::string& getDisplayName() const { return _displayName; } + virtual std::string_view getDisplayName() const { return _displayName; } protected: BaseData _skinData; diff --git a/extensions/cocostudio/CCSpriteFrameCacheHelper.cpp b/extensions/cocostudio/CCSpriteFrameCacheHelper.cpp index ffa14bbaff6b..66f70f755213 100644 --- a/extensions/cocostudio/CCSpriteFrameCacheHelper.cpp +++ b/extensions/cocostudio/CCSpriteFrameCacheHelper.cpp @@ -50,7 +50,7 @@ void SpriteFrameCacheHelper::purge() _spriteFrameCacheHelper = nullptr; } -void SpriteFrameCacheHelper::retainSpriteFrames(const std::string& plistPath) +void SpriteFrameCacheHelper::retainSpriteFrames(std::string_view plistPath) { auto it = _usingSpriteFrames.find(plistPath); if (it != _usingSpriteFrames.end()) @@ -72,7 +72,7 @@ void SpriteFrameCacheHelper::retainSpriteFrames(const std::string& plistPath) _usingSpriteFrames[plistPath] = vec; } -void SpriteFrameCacheHelper::releaseSpriteFrames(const std::string& plistPath) +void SpriteFrameCacheHelper::releaseSpriteFrames(std::string_view plistPath) { auto it = _usingSpriteFrames.find(plistPath); if (it == _usingSpriteFrames.end()) @@ -89,13 +89,13 @@ void SpriteFrameCacheHelper::releaseSpriteFrames(const std::string& plistPath) _usingSpriteFrames.erase(it); } -void SpriteFrameCacheHelper::removeSpriteFrameFromFile(const std::string& plistPath) +void SpriteFrameCacheHelper::removeSpriteFrameFromFile(std::string_view plistPath) { SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(plistPath); releaseSpriteFrames(plistPath); } -void SpriteFrameCacheHelper::addSpriteFrameFromFile(const std::string& plistPath, const std::string& imagePath) +void SpriteFrameCacheHelper::addSpriteFrameFromFile(std::string_view plistPath, std::string_view imagePath) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(plistPath, imagePath); retainSpriteFrames(plistPath); diff --git a/extensions/cocostudio/CCSpriteFrameCacheHelper.h b/extensions/cocostudio/CCSpriteFrameCacheHelper.h index a24be2704919..0c84294e68c7 100644 --- a/extensions/cocostudio/CCSpriteFrameCacheHelper.h +++ b/extensions/cocostudio/CCSpriteFrameCacheHelper.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -60,12 +60,12 @@ class CCS_DLL SpriteFrameCacheHelper /** * @brief Add sprite frame to CCSpriteFrameCache, it will save display name and it's relative image name */ - void addSpriteFrameFromFile(const std::string& plistPath, const std::string& imagePath); - void removeSpriteFrameFromFile(const std::string& plistPath); + void addSpriteFrameFromFile(std::string_view plistPath, std::string_view imagePath); + void removeSpriteFrameFromFile(std::string_view plistPath); private: - void retainSpriteFrames(const std::string& plistPath); - void releaseSpriteFrames(const std::string& plistPath); + void retainSpriteFrames(std::string_view plistPath); + void releaseSpriteFrames(std::string_view plistPath); SpriteFrameCacheHelper(); ~SpriteFrameCacheHelper(); diff --git a/extensions/cocostudio/FlatBuffersSerialize.cpp b/extensions/cocostudio/FlatBuffersSerialize.cpp index 1ca0006455b0..8d064ea8498c 100644 --- a/extensions/cocostudio/FlatBuffersSerialize.cpp +++ b/extensions/cocostudio/FlatBuffersSerialize.cpp @@ -141,8 +141,8 @@ void FlatBuffersSerialize::deleteFlatBufferBuilder() } } -std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFile(const std::string& xmlFileName, - const std::string& flatbuffersFileName) +std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFile(std::string_view xmlFileName, + std::string_view flatbuffersFileName) { std::string inFullpath = FileUtils::getInstance()->fullPathForFilename(xmlFileName).c_str(); @@ -157,7 +157,7 @@ std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFile(const std::str } std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLBuffer(std::string& xmlBuffer, - const std::string& flatbuffersFileName) + std::string_view flatbuffersFileName) { // xml parse pugi::xml_document document; @@ -168,7 +168,7 @@ std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLBuffer(std::string& return ""; } -std::string FlatBuffersSerialize::serializeFlatBuffersWithOpaque(void* opaque, const std::string& flatbuffersFileName) +std::string FlatBuffersSerialize::serializeFlatBuffersWithOpaque(void* opaque, std::string_view flatbuffersFileName) { auto thiz = FlatBuffersSerialize::getInstance(); @@ -451,7 +451,7 @@ int FlatBuffersSerialize::getResourceType(std::string key) return 1; } -std::string FlatBuffersSerialize::getGUIClassName(const std::string& name) +std::string FlatBuffersSerialize::getGUIClassName(std::string_view name) { std::string convertedClassName = name; if (name == "Panel") @@ -1231,7 +1231,7 @@ flatbuffers::Offset FlatBuffersSerialize::createEasingD } /* create flat buffers with XML */ -FlatBufferBuilder* FlatBuffersSerialize::createFlatBuffersWithXMLFileForSimulator(const std::string& xmlFileName) +FlatBufferBuilder* FlatBuffersSerialize::createFlatBuffersWithXMLFileForSimulator(std::string_view xmlFileName) { std::string inFullpath = FileUtils::getInstance()->fullPathForFilename(xmlFileName); @@ -1520,9 +1520,9 @@ Offset FlatBuffersSerialize::createProjectNodeOptionsForSimu } /* Serialize language XML file to Flat Buffers file. */ -std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFileForLanguageData(const std::string& xmlFilePath, - const std::string& flatBuffersFilePath, - const std::string& languageName) +std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFileForLanguageData(std::string_view xmlFilePath, + std::string_view flatBuffersFilePath, + std::string_view languageName) { // Read and parse XML data file. if (!FileUtils::getInstance()->isFileExist(xmlFilePath)) diff --git a/extensions/cocostudio/FlatBuffersSerialize.h b/extensions/cocostudio/FlatBuffersSerialize.h index 21582b2c624e..6a0998839691 100644 --- a/extensions/cocostudio/FlatBuffersSerialize.h +++ b/extensions/cocostudio/FlatBuffersSerialize.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013 cocos2d-x.org http://www.cocos2d-x.org @@ -105,15 +105,15 @@ class CCS_DLL FlatBuffersSerialize void deleteFlatBufferBuilder(); - std::string test(const std::string& xmlFileName, const std::string& flatbuffersFileName); + std::string test(std::string_view xmlFileName, std::string_view flatbuffersFileName); /* serialize flat buffers with XML */ - static std::string serializeFlatBuffersWithXMLFile(const std::string& xmlFileName, - const std::string& flatbuffersFileName); + static std::string serializeFlatBuffersWithXMLFile(std::string_view xmlFileName, + std::string_view flatbuffersFileName); /* x-studio spec: serialize flat buffers with XML buffer */ static std::string serializeFlatBuffersWithXMLBuffer(std::string& xmlBuffer, - const std::string& flatbuffersFileName); - static std::string serializeFlatBuffersWithOpaque(void* opaque, const std::string& flatbuffersFileName); + std::string_view flatbuffersFileName); + static std::string serializeFlatBuffersWithOpaque(void* opaque, std::string_view flatbuffersFileName); // NodeTree flatbuffers::Offset createNodeTree(pugi::xml_node objectData, std::string classType); @@ -138,11 +138,11 @@ class CCS_DLL FlatBuffersSerialize /**/ int getResourceType(std::string key); - std::string getGUIClassName(const std::string& name); + std::string getGUIClassName(std::string_view name); std::string getWidgetReaderClassName(cocos2d::ui::Widget* widget); /* create flat buffers with XML */ - flatbuffers::FlatBufferBuilder* createFlatBuffersWithXMLFileForSimulator(const std::string& xmlFileName); + flatbuffers::FlatBufferBuilder* createFlatBuffersWithXMLFileForSimulator(std::string_view xmlFileName); flatbuffers::Offset createNodeTreeForSimulator(pugi::xml_node objectData, std::string classType); flatbuffers::Offset createProjectNodeOptionsForSimulator( @@ -151,9 +151,9 @@ class CCS_DLL FlatBuffersSerialize std::string getCsdVersion() { return _csdVersion; } /* Serialize language XML file to Flat Buffers file. */ - std::string serializeFlatBuffersWithXMLFileForLanguageData(const std::string& xmlFilePath, - const std::string& flatBuffersFilePath, - const std::string& languageName); + std::string serializeFlatBuffersWithXMLFileForLanguageData(std::string_view xmlFilePath, + std::string_view flatBuffersFilePath, + std::string_view languageName); public: std::vector> _textures; diff --git a/extensions/cocostudio/TriggerMng.cpp b/extensions/cocostudio/TriggerMng.cpp index 0ac9a3181dca..39ccd44571c3 100644 --- a/extensions/cocostudio/TriggerMng.cpp +++ b/extensions/cocostudio/TriggerMng.cpp @@ -505,7 +505,7 @@ ArmatureMovementDispatcher::~ArmatureMovementDispatcher(void) void ArmatureMovementDispatcher::animationEvent(Armature* armature, MovementEventType movementType, - const std::string& movementID) + std::string_view movementID) { for (auto iter = _mapEventAnimation->begin(); iter != _mapEventAnimation->end(); ++iter) { diff --git a/extensions/cocostudio/TriggerMng.h b/extensions/cocostudio/TriggerMng.h index 30474d2a0292..1830a67fe966 100644 --- a/extensions/cocostudio/TriggerMng.h +++ b/extensions/cocostudio/TriggerMng.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -46,7 +46,7 @@ class CCS_DLL ArmatureMovementDispatcher : public cocos2d::Ref public: void addAnimationEventCallBack(cocos2d::Ref* pTarget, SEL_MovementEventCallFunc mecf); void removeAnnimationEventCallBack(cocos2d::Ref* pTarget, SEL_MovementEventCallFunc mecf); - void animationEvent(Armature* armature, MovementEventType movementType, const std::string& movementID); + void animationEvent(Armature* armature, MovementEventType movementType, std::string_view movementID); private: std::unordered_map* _mapEventAnimation; diff --git a/extensions/cocostudio/WidgetCallBackHandlerProtocol.h b/extensions/cocostudio/WidgetCallBackHandlerProtocol.h index aae843e00e59..dd423e63ba28 100644 --- a/extensions/cocostudio/WidgetCallBackHandlerProtocol.h +++ b/extensions/cocostudio/WidgetCallBackHandlerProtocol.h @@ -36,9 +36,9 @@ class CCS_DLL WidgetCallBackHandlerProtocol public: virtual ~WidgetCallBackHandlerProtocol(); - virtual cocos2d::ui::Widget::ccWidgetTouchCallback onLocateTouchCallback(const std::string& callBackName); - virtual cocos2d::ui::Widget::ccWidgetClickCallback onLocateClickCallback(const std::string& callBackName); - virtual cocos2d::ui::Widget::ccWidgetEventCallback onLocateEventCallback(const std::string& callBackName); + virtual cocos2d::ui::Widget::ccWidgetTouchCallback onLocateTouchCallback(std::string_view callBackName); + virtual cocos2d::ui::Widget::ccWidgetClickCallback onLocateClickCallback(std::string_view callBackName); + virtual cocos2d::ui::Widget::ccWidgetEventCallback onLocateEventCallback(std::string_view callBackName); }; } // namespace cocostudio diff --git a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp index 00861efbd7b5..2a4a68060acb 100644 --- a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp +++ b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp @@ -230,7 +230,7 @@ cocos2d::Node* ArmatureNodeReader::createNodeWithFlatBuffers(const flatbuffers:: return node; } -std::string ArmatureNodeReader::getArmatureName(const std::string& exporJsonPath) +std::string ArmatureNodeReader::getArmatureName(std::string_view exporJsonPath) { // FileUtils.getFileData(exporJsonPath, "r", size) // need read armature name in exportJsonPath size_t end = exporJsonPath.find_last_of("."); diff --git a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.h b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.h index 3f7ae420b076..d37f2652ba85 100644 --- a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.h +++ b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2014 cocos2d-x.org http://www.cocos2d-x.org @@ -59,7 +59,7 @@ class ArmatureNodeReader : public cocos2d::Ref, public cocostudio::NodeReaderPro cocos2d::Node* createNodeWithFlatBuffers(const flatbuffers::Table* nodeOptions) override; private: - std::string getArmatureName(const std::string& exporJsonPath); + std::string getArmatureName(std::string_view exporJsonPath); }; #endif /* defined(__ARMATURENODEREADER_H_) */ diff --git a/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp b/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp index 6e417fcca679..866d8d76c66a 100644 --- a/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp +++ b/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp @@ -111,7 +111,7 @@ void ImageViewReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson const rapidjson::Value& imageFileNameDic = DICTOOL->getSubDictionary_json(options, P_FileNameData); int imageFileNameType = DICTOOL->getIntValue_json(imageFileNameDic, P_ResourceType); - const std::string& imageFilePath = DICTOOL->getStringValue_json(imageFileNameDic, P_Path); + std::string_view imageFilePath = DICTOOL->getStringValue_json(imageFileNameDic, P_Path); if (!imageFilePath.empty()) { diff --git a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp index 24997d4a98ba..31bcc5732aa1 100644 --- a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp +++ b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp @@ -30,7 +30,7 @@ static cocos2d::Node* createArmatureNode() return cocostudio::Armature::create(); } -static cocos2d::ParticleSystemQuad* createParticleSystemQuad(const std::string& path) +static cocos2d::ParticleSystemQuad* createParticleSystemQuad(std::string_view path) { return cocos2d::ParticleSystemQuad::create(path); } @@ -61,8 +61,8 @@ bool (*onAfterLoadObjectAsset)(cocos2d::Node*, cocos2d::ResourceData& assets, int index /*= 0*/) = &onLoadObjectAssetDummy; void (*onLoadSpriteFramesWithFile)(std::string& file) = nullptr; -void (*onNestingNodeLoading)(const std::string& filePath) = nullptr; -void (*onNestingNodeLoaded)(cocos2d::Node*, const std::string& filePath) = nullptr; +void (*onNestingNodeLoading)(std::string_view filePath) = nullptr; +void (*onNestingNodeLoaded)(cocos2d::Node*, std::string_view filePath) = nullptr; cocos2d::Node* (*aNode)(); cocos2d::ui::Widget* (*aWidget)(); cocos2d::Sprite* (*aSprite)(); @@ -137,7 +137,7 @@ cocos2d::ResourceData cocos2d::wext::makeResourceData(const flatbuffers::Resourc return fileData; } -cocos2d::ResourceData cocos2d::wext::makeResourceData(const std::string& path, int type) +cocos2d::ResourceData cocos2d::wext::makeResourceData(std::string_view path, int type) { cocos2d::ResourceData fileData; fileData.file = path; diff --git a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h index 7276307498eb..a92a24135fb0 100644 --- a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h +++ b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2014 cocos2d-x.org http://www.cocos2d-x.org @@ -141,7 +141,7 @@ CC_DLL extern APP_LOGERROR_FUNC getAppErrorLogFunc(); CCS_DLL extern void (*onLoadSpriteFramesWithFile)(std::string& file); CCS_DLL extern cocos2d::ResourceData makeResourceData(const flatbuffers::ResourceData* data); -CCS_DLL extern cocos2d::ResourceData makeResourceData(const std::string& path, int type = 0); +CCS_DLL extern cocos2d::ResourceData makeResourceData(std::string_view path, int type = 0); CCS_DLL extern cocos2d::ResourceData makeResourceData(std::string&& path, int type = 0); CCS_DLL extern void resetReaderAllHooks(); diff --git a/extensions/cocostudio/WidgetReader/WidgetReader.cpp b/extensions/cocostudio/WidgetReader/WidgetReader.cpp index e30e04d1c29e..c9cbce0976ba 100644 --- a/extensions/cocostudio/WidgetReader/WidgetReader.cpp +++ b/extensions/cocostudio/WidgetReader/WidgetReader.cpp @@ -98,9 +98,9 @@ WidgetReader::WidgetReader() , _opacity(255) , _isAdaptScreen(false) { - valueToInt = [=](const std::string& str) -> int { return atoi(str.c_str()); }; + valueToInt = [=](std::string_view str) -> int { return atoi(str.c_str()); }; - valueToBool = [=](const std::string& str) -> bool { + valueToBool = [=](std::string_view str) -> bool { int intValue = valueToInt(str); if (1 == intValue) { @@ -112,7 +112,7 @@ WidgetReader::WidgetReader() } }; - valueToFloat = [=](const std::string& str) -> float { return utils::atof(str.c_str()); }; + valueToFloat = [=](std::string_view str) -> float { return utils::atof(str.c_str()); }; } WidgetReader::~WidgetReader() {} @@ -303,7 +303,7 @@ void WidgetReader::endSetBasicProperties(Widget* widget) } std::string WidgetReader::getResourcePath(const rapidjson::Value& dict, - const std::string& key, + std::string_view key, cocos2d::ui::Widget::TextureResType texType) { std::string jsonPath = GUIReader::getInstance()->getFilePath(); @@ -940,7 +940,7 @@ Node* WidgetReader::createNodeWithFlatBuffers(const flatbuffers::Table* widgetOp return widget; } -std::string WidgetReader::getResourcePath(const std::string& path, cocos2d::ui::Widget::TextureResType texType) +std::string WidgetReader::getResourcePath(std::string_view path, cocos2d::ui::Widget::TextureResType texType) { std::string filePath = GUIReader::getInstance()->getFilePath(); const char* imageFileName = path.c_str(); diff --git a/extensions/cocostudio/WidgetReader/WidgetReader.h b/extensions/cocostudio/WidgetReader/WidgetReader.h index fb5e60d3d92f..e7641cdc39f5 100644 --- a/extensions/cocostudio/WidgetReader/WidgetReader.h +++ b/extensions/cocostudio/WidgetReader/WidgetReader.h @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** Copyright (c) 2014 cocos2d-x.org http://www.cocos2d-x.org @@ -66,7 +66,7 @@ class CCS_DLL WidgetReader : public cocos2d::Ref, public WidgetReaderProtocol, p protected: std::string getResourcePath(const rapidjson::Value& dict, - const std::string& key, + std::string_view key, cocos2d::ui::Widget::TextureResType texType); void setAnchorPointForWidget(cocos2d::ui::Widget* widget, const rapidjson::Value& options); @@ -74,7 +74,7 @@ class CCS_DLL WidgetReader : public cocos2d::Ref, public WidgetReaderProtocol, p stExpCocoNode* pCocoNode, cocos2d::ui::Widget::TextureResType texType); - std::string getResourcePath(const std::string& path, cocos2d::ui::Widget::TextureResType texType); + std::string getResourcePath(std::string_view path, cocos2d::ui::Widget::TextureResType texType); void beginSetBasicProperties(cocos2d::ui::Widget* widget); void endSetBasicProperties(cocos2d::ui::Widget* widget); diff --git a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp index 1118e57d2d8c..5ff34e083bf8 100644 --- a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp +++ b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp @@ -63,7 +63,7 @@ void adjustScriptFileName(std::string& scriptFileName) int ComponentLua::_index = 0; -ComponentLua* ComponentLua::create(const std::string& scriptFileName) +ComponentLua* ComponentLua::create(std::string_view scriptFileName) { CC_ASSERT(!scriptFileName.empty()); @@ -79,7 +79,7 @@ ComponentLua* ComponentLua::create(const std::string& scriptFileName) return componentLua; } -ComponentLua::ComponentLua(const std::string& scriptFileName) +ComponentLua::ComponentLua(std::string_view scriptFileName) : _scriptFileName(scriptFileName), _table(nullptr), _strIndex("") { _succeedLoadingScript = loadAndExecuteScript(); @@ -134,7 +134,7 @@ void ComponentLua::onExit() } } -bool ComponentLua::getLuaFunction(const std::string& functionName) +bool ComponentLua::getLuaFunction(std::string_view functionName) { lua_State* l = LuaEngine::getInstance()->getLuaStack()->getLuaState(); diff --git a/extensions/scripting/lua-bindings/manual/CCComponentLua.h b/extensions/scripting/lua-bindings/manual/CCComponentLua.h index 4a2425987b7c..5f17a086d351 100644 --- a/extensions/scripting/lua-bindings/manual/CCComponentLua.h +++ b/extensions/scripting/lua-bindings/manual/CCComponentLua.h @@ -34,9 +34,9 @@ NS_CC_BEGIN class ComponentLua : public Component { public: - static ComponentLua* create(const std::string& scriptFileName); + static ComponentLua* create(std::string_view scriptFileName); - ComponentLua(const std::string& scriptFileName); + ComponentLua(std::string_view scriptFileName); /** * This function is used to be invoked from lua side to get the corresponding script object of this component. */ @@ -52,7 +52,7 @@ class ComponentLua : public Component bool loadAndExecuteScript(); void getUserData(); void storeLuaTable(); - bool getLuaFunction(const std::string& functionName); + bool getLuaFunction(std::string_view functionName); void removeLuaTable(); static void initClass(); diff --git a/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp b/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp index c474533f3c99..4c50e1489f56 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp @@ -174,7 +174,7 @@ int LuaEngine::reallocateScriptHandler(int nHandler) return nRet; } -bool LuaEngine::parseConfig(ConfigType type, const std::string& str) +bool LuaEngine::parseConfig(ConfigType type, std::string_view str) { lua_getglobal(_stack->getLuaState(), "__onParseConfig"); if (!lua_isfunction(_stack->getLuaState(), -1)) diff --git a/extensions/scripting/lua-bindings/manual/CCLuaEngine.h b/extensions/scripting/lua-bindings/manual/CCLuaEngine.h index dbaf44d04c30..233543b72f54 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaEngine.h +++ b/extensions/scripting/lua-bindings/manual/CCLuaEngine.h @@ -188,7 +188,7 @@ class CC_LUA_DLL LuaEngine : public ScriptEngineProtocol * @return if __onParseConfig function exist in the Lua, it return the value that _stack->executeFunction returns * otherwise return false. */ - virtual bool parseConfig(ConfigType type, const std::string& str) override; + virtual bool parseConfig(ConfigType type, std::string_view str) override; /** * When some events triggered in the c++ also needs to pass on to lua to handle, we could call this function to send diff --git a/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp b/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp index 6bb23e16e167..06081839b85c 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp @@ -60,7 +60,7 @@ const LuaValue LuaValue::stringValue(const char* stringValue) return value; } -const LuaValue LuaValue::stringValue(const std::string& stringValue) +const LuaValue LuaValue::stringValue(std::string_view stringValue) { LuaValue value; value._type = LuaValueTypeString; @@ -94,7 +94,7 @@ const LuaValue LuaValue::ccobjectValue(Ref* ccobjectValue, const char* objectTyp return value; } -const LuaValue LuaValue::ccobjectValue(Ref* ccobjectValue, const std::string& objectTypename) +const LuaValue LuaValue::ccobjectValue(Ref* ccobjectValue, std::string_view objectTypename) { return LuaValue::ccobjectValue(ccobjectValue, objectTypename.c_str()); } diff --git a/extensions/scripting/lua-bindings/manual/CCLuaValue.h b/extensions/scripting/lua-bindings/manual/CCLuaValue.h index 0997bdbf43d2..8b918263e136 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaValue.h +++ b/extensions/scripting/lua-bindings/manual/CCLuaValue.h @@ -135,7 +135,7 @@ class LuaValue * @param stringValue a std::string object. * @return a LuaValue object. */ - static const LuaValue stringValue(const std::string& stringValue); + static const LuaValue stringValue(std::string_view stringValue); /** * Construct a LuaValue object by a LuaValueDict value. @@ -169,7 +169,7 @@ class LuaValue * @param objectTypename a std::string object represent the typename of object. * @return a LuaValue object. */ - static const LuaValue ccobjectValue(Ref* ccobjectValue, const std::string& objectTypename); + static const LuaValue ccobjectValue(Ref* ccobjectValue, std::string_view objectTypename); /** * Default constructor of LuaValue. @@ -204,7 +204,7 @@ class LuaValue * * @return the reference of _ccobjectType. */ - const std::string& getObjectTypename() const { return *_ccobjectType; } + std::string_view getObjectTypename() const { return *_ccobjectType; } /** * Get the int value of LuaValue object. @@ -232,7 +232,7 @@ class LuaValue * * @return the reference about string value. */ - const std::string& stringValue() const { return *_field.stringValue; } + std::string_view stringValue() const { return *_field.stringValue; } /** * Get the LuaValueDict value of LuaValue object. diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp index eba25e98e18a..1103d3f2fe0f 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp @@ -2725,7 +2725,7 @@ void ccvector_std_string_to_luaval(lua_State* L, const std::vector& int index = 1; - for (const std::string& value : inValue) + for (std::string_view value : inValue) { lua_pushnumber(L, (lua_Number)index); lua_pushstring(L, value.c_str()); diff --git a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp index 963f1d2e159d..da74a5ef6cb2 100644 --- a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp @@ -4546,7 +4546,7 @@ EventListenerAcceleration* LuaEventListenerAcceleration::create() return eventAcceleration; } -EventListenerCustom* LuaEventListenerCustom::create(const std::string& eventName) +EventListenerCustom* LuaEventListenerCustom::create(std::string_view eventName) { EventListenerCustom* eventCustom = new EventListenerCustom(); if (eventCustom->init(eventName, [=](EventCustom* event) { @@ -6109,7 +6109,7 @@ static int lua_cocos2dx_Console_addCommand(lua_State* tolua_S) handler = (toluafix_ref_function(tolua_S, 3, 0)); ScriptHandlerMgr::getInstance()->addCustomHandler((void*)cobj, handler); - Console::Command outValue = {name, help, [=](int fd, const std::string& args) { + Console::Command outValue = {name, help, [=](int fd, std::string_view args) { auto stack = LuaEngine::getInstance()->getLuaStack(); auto Ls = stack->getLuaState(); // lua-callback, the third param; @@ -7430,7 +7430,7 @@ static int tolua_cocos2d_utils_captureScreen(lua_State* tolua_S) LUA_FUNCTION handler = toluafix_ref_function(tolua_S, 2, 0); std::string fileName = tolua_tocppstring(tolua_S, 3, ""); cocos2d::utils::captureScreen( - [=](bool succeed, const std::string& name) { + [=](bool succeed, std::string_view name) { auto stack = LuaEngine::getInstance()->getLuaStack(); auto Ls = stack->getLuaState(); tolua_pushboolean(Ls, succeed); diff --git a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp index ffca5eacff6f..d8ab149f92ca 100644 --- a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp +++ b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp @@ -44,7 +44,7 @@ NS_CC_BEGIN class LuaEventListenerCustom { public: - static EventListenerCustom* create(const std::string& eventName); + static EventListenerCustom* create(std::string_view eventName); }; class LuaEventListenerAcceleration diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp index be047e4b4b7e..67a6425864ea 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp @@ -85,7 +85,7 @@ void CustomGUIReader::init(std::string& className, int createFunc, int setPropsF (*callbackMap)[className] = parseselector(CustomGUIReader::setCustomProps); } -void CustomGUIReader::setCustomProps(const std::string& classType, +void CustomGUIReader::setCustomProps(std::string_view classType, cocos2d::Ref* widget, const rapidjson::Value& customOptions) { diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.h b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.h index 79c4ab3ec743..9c331a16fd19 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.h +++ b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.h @@ -43,7 +43,7 @@ class CustomGUIReader : public Ref Ref* createInstance(); - void setCustomProps(const std::string& classType, cocos2d::Ref* widget, const rapidjson::Value& customOptions); + void setCustomProps(std::string_view classType, cocos2d::Ref* widget, const rapidjson::Value& customOptions); private: std::string _className; diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp index d063179bedc7..2bad612b736f 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp @@ -112,7 +112,7 @@ static int lua_cocos2dx_ArmatureAnimation_setMovementEventCallFunc(lua_State* L) ScriptHandlerMgr::HandlerType::ARMATURE_EVENT); self->setMovementEventCallFunc( - [=](Armature* armature, MovementEventType movementType, const std::string& movementID) { + [=](Armature* armature, MovementEventType movementType, std::string_view movementID) { if (0 != handler) { std::string strMovementID = movementID; @@ -188,7 +188,7 @@ static int lua_cocos2dx_ArmatureAnimation_setFrameEventCallFunc(lua_State* L) ScriptHandlerMgr::getInstance()->addObjectHandler((void*)wrapper, handler, ScriptHandlerMgr::HandlerType::ARMATURE_EVENT); - self->setFrameEventCallFunc([=](cocostudio::Bone* bone, const std::string& frameEventName, int originFrameIndex, + self->setFrameEventCallFunc([=](cocostudio::Bone* bone, std::string_view frameEventName, int originFrameIndex, int currentFrameIndex) { if (0 != handler) { diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.hpp b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.hpp index afd08dc0e5d9..422d717d843d 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.hpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.hpp @@ -78,7 +78,7 @@ struct LuaArmatureMovementEventData int movementType; std::string movementID; - LuaArmatureMovementEventData(cocos2d::Ref* _objTarget, int _movementType,const std::string& _movementID):objTarget(_objTarget),movementType(_movementType),movementID(_movementID) + LuaArmatureMovementEventData(cocos2d::Ref* _objTarget, int _movementType,std::string_view _movementID):objTarget(_objTarget),movementType(_movementType),movementID(_movementID) { } }; @@ -90,7 +90,7 @@ struct LuaArmatureFrameEventData int originFrameIndex; int currentFrameIndex; - LuaArmatureFrameEventData( cocos2d::Ref* _objTarget, const std::string& _frameEventName, int _originFrameIndex, int _currentFrameIndex):objTarget(_objTarget), frameEventName(_frameEventName),originFrameIndex(_originFrameIndex), currentFrameIndex(_currentFrameIndex) + LuaArmatureFrameEventData( cocos2d::Ref* _objTarget, std::string_view _frameEventName, int _originFrameIndex, int _currentFrameIndex):objTarget(_objTarget), frameEventName(_frameEventName),originFrameIndex(_originFrameIndex), currentFrameIndex(_currentFrameIndex) { } }; diff --git a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp index 179eb45bf0ae..500db96f54a8 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp @@ -271,7 +271,7 @@ static int lua_downloader_setOnTaskError(lua_State* L) saveCallback(L, d, "setOnTaskError"); d->setOnTaskError( - [d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, const std::string& errorSt) { + [d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorSt) { int ret = getCallback(L, d, "setOnTaskError"); // stack callbackfn if (ret) { diff --git a/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp b/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp index b6b942c6e793..a72bc5e4fb7d 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp @@ -76,16 +76,16 @@ class LuaMinXmlHttpRequest : public cocos2d::Ref inline int getReadyState() const { return _readyState; } inline cocos2d::network::HttpRequest* getHttpRequest() const { return _httpRequest; } - inline const std::string& getStatusText() const { return _statusText; } + inline std::string_view getStatusText() const { return _statusText; } inline void setStatus(int status) { _status = status; } inline int getStatus() { return _status; } - inline const std::string& getUrl() { return _url; } - inline void setUrl(const std::string& url) { _url = url; } + inline std::string_view getUrl() { return _url; } + inline void setUrl(std::string_view url) { _url = url; } - inline const std::string& getMethod() const { return _meth; } - inline void setMethod(const std::string& meth) { _meth = meth; } + inline std::string_view getMethod() const { return _meth; } + inline void setMethod(std::string_view meth) { _meth = meth; } inline void setAsync(bool isAsync) { _isAsync = isAsync; } inline void setIsNetWork(bool isNetWork) { _isNetwork = isNetWork; } diff --git a/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp b/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp index a9d616e84245..34b5ca82ef8e 100644 --- a/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp @@ -63,8 +63,8 @@ static int lua_cocos2dx_WebView_setOnShouldStartLoading(lua_State* L) #endif LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); - std::function callback = - [L, handler](ui::WebView* sender, const std::string& url) -> bool { + std::function callback = + [L, handler](ui::WebView* sender, std::string_view url) -> bool { toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); tolua_pushcppstring(L, url); return LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); @@ -119,8 +119,8 @@ static int lua_cocos2dx_WebView_setOnDidFinishLoading(lua_State* L) #endif LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); - std::function callback = - [L, handler](ui::WebView* sender, const std::string& url) { + std::function callback = + [L, handler](ui::WebView* sender, std::string_view url) { toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); tolua_pushcppstring(L, url); LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); @@ -174,8 +174,8 @@ static int lua_cocos2dx_WebView_setOnDidFailLoading(lua_State* L) #endif LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); - std::function callback = - [L, handler](ui::WebView* sender, const std::string& url) { + std::function callback = + [L, handler](ui::WebView* sender, std::string_view url) { toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); tolua_pushcppstring(L, url); LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); diff --git a/thirdparty/tsl/robin_hash.h b/thirdparty/tsl/robin_hash.h index 6e8dc7e7018b..42e712d1bc42 100644 --- a/thirdparty/tsl/robin_hash.h +++ b/thirdparty/tsl/robin_hash.h @@ -344,7 +344,7 @@ class bucket_entry : public bucket_entry_hash { * * Behaviour is undefined if the destructor of `ValueType` throws. */ -template class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { private: @@ -364,6 +364,7 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { using key_type = typename KeySelect::key_type; using value_type = ValueType; + using iterator_value_type = IteratorValueType; using size_type = std::size_t; using difference_type = std::ptrdiff_t; using hasher = Hash; @@ -439,13 +440,84 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { * instead of a `const std::pair&`, the user may modify the key which * will put the map in a undefined state. */ - template - class robin_iterator { + template <> + class robin_iterator { + friend class robin_hash; + + private: + using bucket_entry_ptr = typename std::conditional::type; + + robin_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} + + public: + using iterator_category = std::forward_iterator_tag; + using value_type = typename robin_hash::iterator_value_type; + using difference_type = std::ptrdiff_t; + using reference = value_type&; + using pointer = value_type*; + + robin_iterator() noexcept {} + + robin_iterator(const robin_iterator& other) = default; + robin_iterator(robin_iterator&& other) = default; + robin_iterator& operator=(const robin_iterator& other) = default; + robin_iterator& operator=(robin_iterator&& other) = default; + + const typename robin_hash::key_type& key() const { return KeySelect()(m_bucket->value()); } + + template ::value>::type* = nullptr> + typename U::value_type& value() const + { + return U()(m_bucket->value()); + } + + reference operator*() const { return *reinterpret_cast(std::addressof(m_bucket->value())); } + + pointer operator->() const { return reinterpret_cast(std::addressof(m_bucket->value())); } + + robin_iterator& operator++() + { + while (true) + { + if (m_bucket->last_bucket()) + { + ++m_bucket; + return *this; + } + + ++m_bucket; + if (!m_bucket->empty()) + { + return *this; + } + } + } + + robin_iterator operator++(int) + { + robin_iterator tmp(*this); + ++*this; + + return tmp; + } + + friend bool operator==(const robin_iterator& lhs, const robin_iterator& rhs) { return lhs.m_bucket == rhs.m_bucket; } + + friend bool operator!=(const robin_iterator& lhs, const robin_iterator& rhs) { return !(lhs == rhs); } + + private: + bucket_entry_ptr m_bucket; + }; + + + template <> + class robin_iterator { friend class robin_hash; private: using bucket_entry_ptr = - typename std::conditional::type; robin_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} @@ -460,9 +532,7 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { robin_iterator() noexcept {} // Copy constructor from iterator to const_iterator. - template ::type* = nullptr> - robin_iterator(const robin_iterator& other) noexcept + robin_iterator(const robin_iterator& other) noexcept : m_bucket(other.m_bucket) {} robin_iterator(const robin_iterator& other) = default; @@ -475,19 +545,11 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { } template ::value && - IsConst>::type* = nullptr> + typename std::enable_if::value>::type* = nullptr> const typename U::value_type& value() const { return U()(m_bucket->value()); } - template ::value && - !IsConst>::type* = nullptr> - typename U::value_type& value() const { - return U()(m_bucket->value()); - } - reference operator*() const { return m_bucket->value(); } pointer operator->() const { return std::addressof(m_bucket->value()); } @@ -1075,14 +1137,14 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { m_load_threshold = size_type(float(bucket_count()) * m_max_load_factor); } - void rehash(size_type n) { - n = (std::max)(n, + void rehash(size_type count_) { + count_ = (std::max)(count_, size_type(std::ceil(float(size()) / max_load_factor()))); - rehash_impl(n); + rehash_impl(count_); } - void reserve(size_type n) { - rehash(size_type(std::ceil(float(n) / max_load_factor()))); + void reserve(size_type count_) { + rehash(size_type(std::ceil(float(count_) / max_load_factor()))); } /* @@ -1305,8 +1367,8 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { std::move(value)); } - void rehash_impl(size_type n) { - robin_hash new_table(n, static_cast(*this), + void rehash_impl(size_type count_) { + robin_hash new_table(count_, static_cast(*this), static_cast(*this), get_allocator(), m_min_load_factor, m_max_load_factor); diff --git a/thirdparty/tsl/robin_map.h b/thirdparty/tsl/robin_map.h index 3c9b8556837b..64909c406d34 100644 --- a/thirdparty/tsl/robin_map.h +++ b/thirdparty/tsl/robin_map.h @@ -119,9 +119,11 @@ class robin_map { value_type& operator()(std::pair& key_value) noexcept { return key_value.second; } + + value_type& operator()(std::pair& key_value) noexcept { return key_value.second; } }; - using ht = detail_robin_hash::robin_hash, KeySelect, + using ht = detail_robin_hash::robin_hash, std::pair, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy>; @@ -129,6 +131,7 @@ class robin_map { using key_type = typename ht::key_type; using mapped_type = T; using value_type = typename ht::value_type; + using iterator_value_type = typename ht::iterator_value_type; using size_type = typename ht::size_type; using difference_type = typename ht::difference_type; using hasher = typename ht::hasher; @@ -445,8 +448,15 @@ class robin_map { return m_ht.at(key, precalculated_hash); } - T& operator[](const Key& key) { return m_ht[key]; } - T& operator[](Key&& key) { return m_ht[std::move(key)]; } + template < + class K, class KE = KeyEqual, + typename std::enable_if::value>::type* = nullptr> + T& operator[](const K& key) { return m_ht[key]; } + + template < + class K, class KE = KeyEqual, + typename std::enable_if::value>::type* = nullptr> + T& operator[](K&& key) { return m_ht[std::move(key)]; } size_type count(const Key& key) const { return m_ht.count(key); } @@ -692,8 +702,8 @@ class robin_map { void min_load_factor(float ml) { m_ht.min_load_factor(ml); } void max_load_factor(float ml) { m_ht.max_load_factor(ml); } - void rehash(size_type n) { m_ht.rehash(n); } - void reserve(size_type n) { m_ht.reserve(n); } + void rehash(size_type count_) { m_ht.rehash(count_); } + void reserve(size_type count_) { m_ht.reserve(count_); } /* * Observers diff --git a/thirdparty/tsl/robin_set.h b/thirdparty/tsl/robin_set.h index 47d12ab3b2f7..0813966c8d69 100644 --- a/thirdparty/tsl/robin_set.h +++ b/thirdparty/tsl/robin_set.h @@ -101,12 +101,13 @@ class robin_set { key_type& operator()(Key& key) noexcept { return key; } }; - using ht = detail_robin_hash::robin_hash; public: using key_type = typename ht::key_type; using value_type = typename ht::value_type; + using iterator_value_type = typename ht::iterator_value_type; using size_type = typename ht::size_type; using difference_type = typename ht::difference_type; using hasher = typename ht::hasher; @@ -547,8 +548,8 @@ class robin_set { void min_load_factor(float ml) { m_ht.min_load_factor(ml); } void max_load_factor(float ml) { m_ht.max_load_factor(ml); } - void rehash(size_type n) { m_ht.rehash(n); } - void reserve(size_type n) { m_ht.reserve(n); } + void rehash(size_type count_) { m_ht.rehash(count_); } + void reserve(size_type count_) { m_ht.reserve(count_); } /* * Observers From 01310bf1b16077bfe39bbeca6f3d84431ee51f9b Mon Sep 17 00:00:00 2001 From: halx99 Date: Mon, 27 Dec 2021 13:52:08 +0800 Subject: [PATCH 02/58] Modify some extensions for string_view --- cocos/2d/CCFontAtlasCache.cpp | 3 +- cocos/base/CCMap.h | 7 ++ cocos/base/hlookup.h | 4 +- cocos/platform/CCFileUtils.cpp | 2 +- cocos/platform/win32/CCFileUtils-win32.cpp | 12 +--- .../DragonBones/animation/Animation.cpp | 2 +- extensions/DragonBones/animation/Animation.h | 6 +- .../DragonBones/animation/AnimationState.cpp | 12 ++-- .../DragonBones/animation/AnimationState.h | 2 +- extensions/DragonBones/core/DragonBones.h | 11 +-- .../DragonBones/factory/BaseFactory.cpp | 4 +- extensions/DragonBones/factory/BaseFactory.h | 10 +-- .../DragonBones/model/AnimationConfig.cpp | 6 +- extensions/DragonBones/model/AnimationData.h | 10 +-- extensions/DragonBones/model/ArmatureData.h | 16 ++--- .../DragonBones/model/DragonBonesData.h | 6 +- extensions/DragonBones/model/SkinData.h | 2 +- .../DragonBones/model/TextureAtlasData.h | 11 +-- extensions/DragonBones/parser/DataParser.cpp | 12 ++-- .../DragonBones/parser/JSONDataParser.h | 12 ++-- .../ActionTimeline/CCActionTimeline.h | 4 +- .../ActionTimeline/CCActionTimelineCache.cpp | 15 ++-- .../ActionTimeline/CCActionTimelineCache.h | 4 +- .../cocostudio/ActionTimeline/CCBoneNode.cpp | 18 ++--- .../ActionTimeline/CCSkeletonNode.cpp | 8 +-- .../ActionTimeline/CCSkeletonNode.h | 10 +-- .../cocostudio/ActionTimeline/CSLoader.cpp | 72 ++++++++++--------- .../cocostudio/ActionTimeline/CSLoader.h | 6 +- extensions/cocostudio/CCActionNode.cpp | 4 +- extensions/cocostudio/CCActionObject.cpp | 4 +- extensions/cocostudio/CCArmature.cpp | 2 +- extensions/cocostudio/CCArmature.h | 4 +- extensions/cocostudio/CCArmatureAnimation.cpp | 4 +- extensions/cocostudio/CCArmatureAnimation.h | 4 +- .../cocostudio/CCArmatureDataManager.cpp | 14 ++-- extensions/cocostudio/CCArmatureDataManager.h | 14 ++-- extensions/cocostudio/CCComAttribute.cpp | 18 ++--- extensions/cocostudio/CCDataReaderHelper.cpp | 31 ++++---- extensions/cocostudio/CCDatas.cpp | 8 ++- extensions/cocostudio/CCDatas.h | 6 +- extensions/cocostudio/CCDisplayManager.cpp | 2 +- extensions/cocostudio/CCSGUIReader.cpp | 12 ++-- extensions/cocostudio/CCSGUIReader.h | 6 +- extensions/cocostudio/CCSSceneReader.cpp | 2 +- extensions/cocostudio/CCSkin.cpp | 2 +- .../cocostudio/CCSpriteFrameCacheHelper.h | 2 +- extensions/cocostudio/CocosStudioExport.h | 2 + .../cocostudio/FlatBuffersSerialize.cpp | 6 +- .../cocostudio/SpineSkeletonDataCache.h | 4 +- .../WidgetCallBackHandlerProtocol.cpp | 6 +- .../ArmatureNodeReader/ArmatureNodeReader.cpp | 2 +- .../WidgetReader/NodeReaderProtocol.cpp | 2 +- .../WidgetReader/NodeReaderProtocol.h | 2 +- .../TextAtlasReader/TextAtlasReader.cpp | 4 +- .../TextBMFontReader/TextBMFontReader.cpp | 4 +- .../TextFieldReader/TextFieldReader.cpp | 6 +- .../WidgetReader/TextReader/TextReader.cpp | 8 +-- .../cocostudio/WidgetReader/WidgetReader.cpp | 23 +++--- .../cocostudio/WidgetReader/WidgetReader.h | 6 +- .../Classes/HelloWorldScene.cpp | 2 +- 60 files changed, 255 insertions(+), 248 deletions(-) diff --git a/cocos/2d/CCFontAtlasCache.cpp b/cocos/2d/CCFontAtlasCache.cpp index 60a359c33409..4ab977172066 100644 --- a/cocos/2d/CCFontAtlasCache.cpp +++ b/cocos/2d/CCFontAtlasCache.cpp @@ -80,8 +80,7 @@ FontAtlas* FontAtlasCache::getFontAtlasTTF(const _ttfConfig* config) auto tempAtlas = font->newFontAtlas(); if (tempAtlas) { - _atlasMap[atlasName] = tempAtlas; - return _atlasMap[atlasName]; + return _atlasMap.emplace(atlasName, tempAtlas).first->second; } } } diff --git a/cocos/base/CCMap.h b/cocos/base/CCMap.h index 0fd8b66f9ff4..9555a28bf237 100644 --- a/cocos/base/CCMap.h +++ b/cocos/base/CCMap.h @@ -291,6 +291,13 @@ class Map return _data.erase(position); } + iterator erase(iterator position) + { + CCASSERT(position != _data.cend(), "Invalid iterator!"); + position->second->release(); + return _data.erase(position); + } + /** * Removes an element with an iterator from the Map container. * diff --git a/cocos/base/hlookup.h b/cocos/base/hlookup.h index 4a855cccff69..f271224defea 100644 --- a/cocos/base/hlookup.h +++ b/cocos/base/hlookup.h @@ -22,7 +22,7 @@ struct string_hash size_t operator()(const char* str) const { return hash_type{}(str); } size_t operator()(std::string_view str) const { return hash_type{}(str); } - size_t operator()(std::string const& str) const { return hash_type{}(str); } + size_t operator()(const std::string& str) const { return hash_type{}(str); } }; struct equal_to @@ -51,7 +51,7 @@ inline auto set_item(_Cont& cont, std::string_view key, _Valty&& _Val) { typename _Cont::iterator it = cont.find(key); if (it != cont.end()) - it.value() = std::move(_Val); + it->second = std::move(_Val); else it = cont.emplace(std::string{key}, std::forward<_Valty>(_Val)).first; return it; diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 588465d382e6..b86ec0fc8bb2 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -638,7 +638,7 @@ std::string FileUtils::getPathForFilename(std::string_view filename, std::string_view searchPath) const { auto file = filename; - std::string file_path = ""; + std::string_view file_path = hlookup::empty_sv; size_t pos = filename.find_last_of('/'); if (pos != std::string::npos) { diff --git a/cocos/platform/win32/CCFileUtils-win32.cpp b/cocos/platform/win32/CCFileUtils-win32.cpp index acc434b15565..809a91885212 100644 --- a/cocos/platform/win32/CCFileUtils-win32.cpp +++ b/cocos/platform/win32/CCFileUtils-win32.cpp @@ -84,17 +84,9 @@ static void _checkWorkingPath() WCHAR utf16Path[CC_MAX_PATH] = {0}; int nNum = GetCurrentDirectoryW(CC_MAX_PATH - 2, utf16Path); + s_workingPath.reserve(nNum + 1); s_workingPath.assign(utf16Path, nNum); - - //char utf8WorkingDir[CC_MAX_PATH] = {0}; - //nNum = - // WideCharToMultiByte(CP_UTF8, 0, utf16Path, nNum, utf8WorkingDir, sizeof(utf8WorkingDir), nullptr, nullptr); - //if (nNum < (CC_MAX_PATH - 2)) - //{ - // utf8WorkingDir[nNum] = '\\'; - // utf8WorkingDir[nNum + 1] = '\0'; - // s_workingPath = convertPathFormatToUnixStyle(utf8WorkingDir); - //} + s_workingPath.push_back('\\'); } } diff --git a/extensions/DragonBones/animation/Animation.cpp b/extensions/DragonBones/animation/Animation.cpp index 77ae02d80cc5..20dd91bafd9a 100644 --- a/extensions/DragonBones/animation/Animation.cpp +++ b/extensions/DragonBones/animation/Animation.cpp @@ -581,7 +581,7 @@ std::string_view Animation::getLastAnimationName() const return DEFAULT_NAME; } -void Animation::setAnimations(const std::map& value) +void Animation::setAnimations(const hlookup::string_map& value) { if (_animations == value) { diff --git a/extensions/DragonBones/animation/Animation.h b/extensions/DragonBones/animation/Animation.h index e5e2d74fa97d..9faa7b2aeb2b 100644 --- a/extensions/DragonBones/animation/Animation.h +++ b/extensions/DragonBones/animation/Animation.h @@ -64,7 +64,7 @@ class Animation final : public BaseObject float _inheritTimeScale; std::vector _animationNames; std::vector _animationStates; - std::map _animations; + hlookup::string_map _animations; Armature* _armature; AnimationConfig* _animationConfig; AnimationState* _lastAnimationState; @@ -441,8 +441,8 @@ class Animation final : public BaseObject * @version DragonBones 4.5 * @language zh_CN */ - inline const std::map& getAnimations() const { return _animations; } - void setAnimations(const std::map& value); + inline const hlookup::string_map& getAnimations() const { return _animations; } + void setAnimations(const hlookup::string_map& value); /** * - An AnimationConfig instance that can be used quickly. * @see dragonBones.AnimationConfig diff --git a/extensions/DragonBones/animation/AnimationState.cpp b/extensions/DragonBones/animation/AnimationState.cpp index 2e9503f9a6ff..0540ce842f2d 100644 --- a/extensions/DragonBones/animation/AnimationState.cpp +++ b/extensions/DragonBones/animation/AnimationState.cpp @@ -83,7 +83,7 @@ void AnimationState::_onClear() void AnimationState::_updateTimelines() { { // Update constraint timelines. - std::map> constraintTimelines; + hlookup::string_map> constraintTimelines; for (const auto timeline : _constraintTimelines) // Create constraint timelines map. { constraintTimelines[timeline->constraint->getName()].push_back(timeline); @@ -137,7 +137,7 @@ void AnimationState::_updateTimelines() void AnimationState::_updateBoneAndSlotTimelines() { { // Update bone timelines. - std::map> boneTimelines; + hlookup::string_map> boneTimelines; for (const auto timeline : _boneTimelines) // Create bone timelines map. { boneTimelines[timeline->bone->getName()].push_back(timeline); @@ -238,7 +238,7 @@ void AnimationState::_updateBoneAndSlotTimelines() } { // Update slot timelines. - std::map> slotTimelines; + hlookup::string_map> slotTimelines; std::vector ffdFlags; for (const auto timeline : _slotTimelines) // Create slot timelines map. { @@ -760,7 +760,7 @@ void AnimationState::addBoneMask(std::string_view boneName, bool recursive) if (std::find(_boneMask.cbegin(), _boneMask.cend(), boneName) == _boneMask.cend()) { - _boneMask.push_back(boneName); + _boneMask.push_back(std::string{boneName}); } if (recursive) // Add recursive mixing. @@ -770,7 +770,7 @@ void AnimationState::addBoneMask(std::string_view boneName, bool recursive) if (std::find(_boneMask.cbegin(), _boneMask.cend(), bone->getName()) == _boneMask.cend() && currentBone->contains(bone)) { - _boneMask.push_back(bone->getName()); + _boneMask.push_back(std::string{bone->getName()}); } } } @@ -816,7 +816,7 @@ void AnimationState::removeBoneMask(std::string_view boneName, bool recursive) if (!currentBone->contains(bone)) { - _boneMask.push_back(bone->getName()); + _boneMask.push_back(std::string{bone->getName()}); } } } diff --git a/extensions/DragonBones/animation/AnimationState.h b/extensions/DragonBones/animation/AnimationState.h index 8536ad257775..faf9d3ab1763 100644 --- a/extensions/DragonBones/animation/AnimationState.h +++ b/extensions/DragonBones/animation/AnimationState.h @@ -251,7 +251,7 @@ class AnimationState : public BaseObject std::vector _slotTimelines; std::vector _constraintTimelines; std::vector> _poseTimelines; - std::map _bonePoses; + hlookup::string_map _bonePoses; Armature* _armature; ZOrderTimelineState* _zOrderTimeline; diff --git a/extensions/DragonBones/core/DragonBones.h b/extensions/DragonBones/core/DragonBones.h index 68d8d4abc67f..336357fecfbd 100644 --- a/extensions/DragonBones/core/DragonBones.h +++ b/extensions/DragonBones/core/DragonBones.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -33,6 +33,7 @@ #include #include #include +#include "base/hlookup.h" // dragonBones assert #define DRAGONBONES_ASSERT(cond, msg) \ do \ @@ -359,15 +360,15 @@ inline int indexOf(const std::vector& vector, const T& value) return -1; } -template -inline T* mapFind(const std::map& map, std::string_view key) +template +inline auto mapFind(Cont& map, std::string_view key) { auto iterator = map.find(key); return (iterator != map.end()) ? iterator->second : nullptr; } -template -inline T* mapFindB(std::map& map, std::string_view key) +template +inline auto mapFindB(Cont& map, std::string_view key) { auto iterator = map.find(key); return (iterator != map.end()) ? &iterator->second : nullptr; diff --git a/extensions/DragonBones/factory/BaseFactory.cpp b/extensions/DragonBones/factory/BaseFactory.cpp index a3f5f623ca48..65c068596cc7 100644 --- a/extensions/DragonBones/factory/BaseFactory.cpp +++ b/extensions/DragonBones/factory/BaseFactory.cpp @@ -47,7 +47,7 @@ bool BaseFactory::_fillBuildArmaturePackage(BuildArmaturePackage& dataPackage, std::string_view skinName, std::string_view textureAtlasName) const { - std::string mapName = dragonBonesName; + auto mapName = dragonBonesName; DragonBonesData* dragonBonesData = nullptr; ArmatureData* armatureData = nullptr; @@ -141,7 +141,7 @@ void BaseFactory::_buildSlots(const BuildArmaturePackage& dataPackage, Armature* return; } - std::map*> skinSlots; + hlookup::string_map*> skinSlots; for (auto& pair : defaultSkin->displays) { auto& displays = pair.second; diff --git a/extensions/DragonBones/factory/BaseFactory.h b/extensions/DragonBones/factory/BaseFactory.h index 9142a316e287..61766b3fa43e 100644 --- a/extensions/DragonBones/factory/BaseFactory.h +++ b/extensions/DragonBones/factory/BaseFactory.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -68,8 +68,8 @@ class BaseFactory bool autoSearch; protected: - std::map _dragonBonesDataMap; - std::map> _textureAtlasDataMap; + hlookup::string_map _dragonBonesDataMap; + hlookup::string_map> _textureAtlasDataMap; DragonBones* _dragonBones; DataParser* _dataParser; @@ -550,14 +550,14 @@ class BaseFactory /** * @private */ - inline const std::map>& getAllTextureAtlasData() const + inline const hlookup::string_map>& getAllTextureAtlasData() const { return _textureAtlasDataMap; } /** * @private */ - inline const std::map& getAllDragonBonesData() const { return _dragonBonesDataMap; } + inline const hlookup::string_map& getAllDragonBonesData() const { return _dragonBonesDataMap; } /** * - An Worldclock instance updated by engine. * @version DragonBones 5.7 diff --git a/extensions/DragonBones/model/AnimationConfig.cpp b/extensions/DragonBones/model/AnimationConfig.cpp index 6e012bc6bef4..8ee7dac7d60c 100644 --- a/extensions/DragonBones/model/AnimationConfig.cpp +++ b/extensions/DragonBones/model/AnimationConfig.cpp @@ -78,7 +78,7 @@ void AnimationConfig::addBoneMask(Armature* armature, std::string_view boneName, if (std::find(boneMask.cbegin(), boneMask.cend(), boneName) == boneMask.cend()) // Add mixing { - boneMask.push_back(boneName); + boneMask.push_back(std::string{boneName}); } if (recursive) // Add recursive mixing. @@ -88,7 +88,7 @@ void AnimationConfig::addBoneMask(Armature* armature, std::string_view boneName, if (std::find(boneMask.cbegin(), boneMask.cend(), bone->getName()) == boneMask.cend() && currentBone->contains(bone)) { - boneMask.push_back(bone->getName()); + boneMask.push_back(std::string{bone->getName()}); } } } @@ -131,7 +131,7 @@ void AnimationConfig::removeBoneMask(Armature* armature, std::string_view boneNa if (!currentBone->contains(bone)) { - boneMask.push_back(bone->getName()); + boneMask.push_back(std::string{bone->getName()}); } } } diff --git a/extensions/DragonBones/model/AnimationData.h b/extensions/DragonBones/model/AnimationData.h index 9a4879c068ce..64e7be54df46 100644 --- a/extensions/DragonBones/model/AnimationData.h +++ b/extensions/DragonBones/model/AnimationData.h @@ -126,23 +126,23 @@ class AnimationData : public BaseObject /** * @private */ - std::map> boneTimelines; + hlookup::string_map> boneTimelines; /** * @private */ - std::map> slotTimelines; + hlookup::string_map> slotTimelines; /** * @private */ - std::map> constraintTimelines; + hlookup::string_map> constraintTimelines; /** * @private */ - std::map> boneCachedFrameIndices; + hlookup::string_map> boneCachedFrameIndices; /** * @private */ - std::map> slotCachedFrameIndices; + hlookup::string_map> slotCachedFrameIndices; /** * @private */ diff --git a/extensions/DragonBones/model/ArmatureData.h b/extensions/DragonBones/model/ArmatureData.h index d8f24547d012..83210f44015b 100644 --- a/extensions/DragonBones/model/ArmatureData.h +++ b/extensions/DragonBones/model/ArmatureData.h @@ -113,23 +113,23 @@ class ArmatureData : public BaseObject /** * @private */ - std::map bones; + hlookup::string_map bones; /** * @private */ - std::map slots; + hlookup::string_map slots; /** * @private */ - std::map constraints; + hlookup::string_map constraints; /** * @private */ - std::map skins; + hlookup::string_map skins; /** * @private */ - std::map animations; + hlookup::string_map animations; /** * - The default skin data. * @version DragonBones 4.5 @@ -223,7 +223,7 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline BoneData* getBone(std::string_view boneName) const { return mapFind(bones, boneName); } + inline BoneData* getBone(std::string_view boneName) const { return mapFind(bones, boneName); } /** * - Get a specific slot data. * @param slotName - The slot name. @@ -236,13 +236,13 @@ class ArmatureData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline SlotData* getSlot(std::string_view slotName) const { return mapFind(slots, slotName); } + inline SlotData* getSlot(std::string_view slotName) const { return mapFind(slots, slotName); } /** * @private */ inline ConstraintData* getConstraint(std::string_view constraintName) const { - return mapFind(constraints, constraintName); + return mapFind(constraints, constraintName); } /** * - Get a specific skin data. diff --git a/extensions/DragonBones/model/DragonBonesData.h b/extensions/DragonBones/model/DragonBonesData.h index 982f75c66d06..5b20114fd97c 100644 --- a/extensions/DragonBones/model/DragonBonesData.h +++ b/extensions/DragonBones/model/DragonBonesData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -107,7 +107,7 @@ class DragonBonesData : public BaseObject /** * @private */ - std::map armatures; + hlookup::string_map armatures; /** * @internal */ @@ -160,7 +160,7 @@ class DragonBonesData : public BaseObject */ inline ArmatureData* getArmature(std::string_view armatureName) const { - return mapFind(armatures, armatureName); + return mapFind(armatures, armatureName); } protected: diff --git a/extensions/DragonBones/model/SkinData.h b/extensions/DragonBones/model/SkinData.h index 7228dfd8fdbb..89e7abfc997b 100644 --- a/extensions/DragonBones/model/SkinData.h +++ b/extensions/DragonBones/model/SkinData.h @@ -80,7 +80,7 @@ class SkinData : public BaseObject std::vector* getDisplays(std::string_view slotName) { return mapFindB(displays, slotName); } public: // For WebAssembly. TODO parent - const std::map>& getSlotDisplays() const { return displays; } + const hlookup::string_map>& getSlotDisplays() const { return displays; } }; DRAGONBONES_NAMESPACE_END diff --git a/extensions/DragonBones/model/TextureAtlasData.h b/extensions/DragonBones/model/TextureAtlasData.h index b10d5eeaf6f2..ae98fe39a773 100644 --- a/extensions/DragonBones/model/TextureAtlasData.h +++ b/extensions/DragonBones/model/TextureAtlasData.h @@ -1,4 +1,4 @@ -/** +/** * The MIT License (MIT) * * Copyright (c) 2012-2018 DragonBones team and other contributors @@ -84,7 +84,7 @@ class TextureAtlasData : public BaseObject /** * @private */ - std::map textures; + hlookup::string_map textures; /** * @private */ @@ -100,13 +100,16 @@ class TextureAtlasData : public BaseObject /** * @private */ - inline TextureData* getTexture(std::string_view textureName) const { return mapFind(textures, textureName); } + inline TextureData* getTexture(std::string_view textureName) const + { + return mapFind(textures, textureName); + } protected: virtual void _onClear() override; public: // For WebAssembly. - const std::map& getTextures() const { return textures; } + const hlookup::string_map& getTextures() const { return textures; } }; /** * @internal diff --git a/extensions/DragonBones/parser/DataParser.cpp b/extensions/DragonBones/parser/DataParser.cpp index 699628894ef8..3d0207d8d9a5 100644 --- a/extensions/DragonBones/parser/DataParser.cpp +++ b/extensions/DragonBones/parser/DataParser.cpp @@ -127,7 +127,7 @@ const char* DataParser::DEFAULT_NAME = "default"; TextureFormat DataParser::_getTextureFormat(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "rgba8888") @@ -160,7 +160,7 @@ TextureFormat DataParser::_getTextureFormat(std::string_view value) ArmatureType DataParser::_getArmatureType(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "armature") @@ -181,7 +181,7 @@ ArmatureType DataParser::_getArmatureType(std::string_view value) DisplayType DataParser::_getDisplayType(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "image") @@ -206,7 +206,7 @@ DisplayType DataParser::_getDisplayType(std::string_view value) BoundingBoxType DataParser::_getBoundingBoxType(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "rectangle") @@ -227,7 +227,7 @@ BoundingBoxType DataParser::_getBoundingBoxType(std::string_view value) ActionType DataParser::_getActionType(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "play") @@ -248,7 +248,7 @@ ActionType DataParser::_getActionType(std::string_view value) BlendMode DataParser::_getBlendMode(std::string_view value) { - auto lower = value; + std::string lower{value}; std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); if (lower == "normal") diff --git a/extensions/DragonBones/parser/JSONDataParser.h b/extensions/DragonBones/parser/JSONDataParser.h index a80b510c37b9..21a437dac364 100644 --- a/extensions/DragonBones/parser/JSONDataParser.h +++ b/extensions/DragonBones/parser/JSONDataParser.h @@ -93,7 +93,7 @@ class JSONDataParser : public DataParser return dragonBones::to_string(rawData[key].GetDouble()); } - return defaultValue; + return std::string{defaultValue}; } inline static int _getParameter(const rapidjson::Value& rawData, std::size_t index, int defaultValue) @@ -125,7 +125,7 @@ class JSONDataParser : public DataParser return rawData[(int)index].GetString(); } - return defaultValue; + return std::string{defaultValue}; } protected: @@ -160,10 +160,10 @@ class JSONDataParser : public DataParser std::vector _cacheRawMeshes; std::vector _cacheMeshes; std::vector _actionFrames; - std::map _weightSlotPose; - std::map _weightBonePoses; - std::map> _cacheBones; - std::map> _slotChildActions; + hlookup::string_map _weightSlotPose; + hlookup::string_map _weightBonePoses; + hlookup::string_map> _cacheBones; + hlookup::string_map> _slotChildActions; public: JSONDataParser() diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimeline.h b/extensions/cocostudio/ActionTimeline/CCActionTimeline.h index 5e9e1053c6df..0d57dea4a181 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimeline.h +++ b/extensions/cocostudio/ActionTimeline/CCActionTimeline.h @@ -224,8 +224,8 @@ class CCS_DLL ActionTimeline : public cocos2d::Action, public cocos2d::PlayableP std::function _frameEventListener; std::function _lastFrameListener; - std::map>> _frameEndCallFuncs; - std::map _animationInfos; + std::map>> _frameEndCallFuncs; + hlookup::string_map _animationInfos; }; NS_TIMELINE_END diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp index 946ad6b2e3aa..40b966a8295b 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp +++ b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp @@ -136,9 +136,9 @@ void ActionTimelineCache::removeAction(std::string_view fileName) ActionTimeline* ActionTimelineCache::createAction(std::string_view filename) { - std::string path = filename; - size_t pos = path.find_last_of('.'); - std::string suffix = path.substr(pos + 1, path.length()); + auto path = filename; + size_t pos = path.find_last_of('.'); + auto suffix = path.substr(pos + 1, path.length()); ActionTimelineCache* cache = ActionTimelineCache::getInstance(); @@ -183,8 +183,7 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithFile(std::string_vie return loadAnimationActionWithContent(fileName, contentStr); } -ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(std::string_view fileName, - std::string_view content) +ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(std::string_view fileName, std::string_view content) { // if already exists an action with filename, then return this action ActionTimeline* action = _animationActions.at(fileName); @@ -192,7 +191,7 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(std::string_ return action; rapidjson::Document doc; - doc.Parse<0>(content.c_str()); + doc.Parse<0>(content.data(), content.length()); if (doc.HasParseError()) { CCLOG("GetParseError %d\n", doc.GetParseError()); @@ -442,7 +441,7 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithFlatBuffersFile(std: if (action) return action; - std::string path = fileName; + auto path = fileName; std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); @@ -462,7 +461,7 @@ ActionTimeline* ActionTimelineCache::loadAnimationWithDataBuffer(const cocos2d:: if (action) return action; - std::string path = fileName; + auto path = fileName; std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h index eb74ea3d583f..ff3ecc26a04a 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h +++ b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.h @@ -128,8 +128,8 @@ class CCS_DLL ActionTimelineCache typedef std::function FrameCreateFunc; typedef std::pair Pair; - std::unordered_map _funcs; - cocos2d::Map _animationActions; + hlookup::string_map _funcs; + cocos2d::StringMap _animationActions; }; NS_TIMELINE_END diff --git a/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp b/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp index 11b6ed2d4de6..b812c36371ee 100644 --- a/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp +++ b/extensions/cocostudio/ActionTimeline/CCBoneNode.cpp @@ -75,20 +75,20 @@ bool BoneNode::init() setProgramState(new cocos2d::backend::ProgramState(program), false); pipelineDescriptor.programState = _programState; - _mvpLocation = _programState->getUniformLocation("u_MVPMatrix"); + _mvpLocation = _programState->getUniformLocation("u_MVPMatrix"sv); auto vertexLayout = _programState->getVertexLayout(); const auto& attributeInfo = _programState->getProgram()->getActiveAttributes(); - auto iter = attributeInfo.find("a_position"); + auto iter = attributeInfo.find("a_position"sv); if (iter != attributeInfo.end()) { - vertexLayout->setAttribute("a_position", iter->second.location, cocos2d::backend::VertexFormat::FLOAT3, 0, + vertexLayout->setAttribute("a_position"sv, iter->second.location, cocos2d::backend::VertexFormat::FLOAT3, 0, false); } - iter = attributeInfo.find("a_color"); + iter = attributeInfo.find("a_color"sv); if (iter != attributeInfo.end()) { - vertexLayout->setAttribute("a_color", iter->second.location, cocos2d::backend::VertexFormat::FLOAT4, + vertexLayout->setAttribute("a_color"sv, iter->second.location, cocos2d::backend::VertexFormat::FLOAT4, 3 * sizeof(float), false); } vertexLayout->setLayout(7 * sizeof(float)); @@ -152,7 +152,7 @@ void BoneNode::removeFromBoneList(BoneNode* bone) { auto subBones = bone->getAllSubBones(); subBones.pushBack(bone); - for (auto& subBone : subBones) + for (auto subBone : subBones) { if (subBone->_rootSkeleton == nullptr) continue; @@ -186,7 +186,7 @@ void BoneNode::addToBoneList(BoneNode* bone) { auto subBones = bone->getAllSubBones(); subBones.pushBack(bone); - for (auto& subBone : subBones) + for (auto subBone : subBones) { subBone->_rootSkeleton = _rootSkeleton; auto bonename = subBone->getName(); @@ -198,8 +198,8 @@ void BoneNode::addToBoneList(BoneNode* bone) _rootSkeleton->_subBonesOrderDirty = true; } else - CCLOG("already has a bone named %s in skeleton %s", bonename.c_str(), - _rootSkeleton->getName().c_str()); + CCLOG("already has a bone named %s in skeleton %s", bonename.data(), + _rootSkeleton->getName().data()); } } else diff --git a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp index c2f8dbc7a124..d0a07494151d 100644 --- a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp +++ b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.cpp @@ -298,7 +298,7 @@ void SkeletonNode::batchDrawAllSubBones() #endif // CC_STUDIO_ENABLED_VIEW } -void SkeletonNode::changeSkins(const std::map& boneSkinNameMap) +void SkeletonNode::changeSkins(const hlookup::string_map& boneSkinNameMap) { for (auto& boneskin : boneSkinNameMap) { @@ -327,14 +327,14 @@ BoneNode* SkeletonNode::getBoneNode(std::string_view boneName) return nullptr; } -const cocos2d::Map& SkeletonNode::getAllSubBonesMap() const +const cocos2d::StringMap& SkeletonNode::getAllSubBonesMap() const { return _subBonesMap; } -void SkeletonNode::addSkinGroup(std::string groupName, std::map boneSkinNameMap) +void SkeletonNode::addSkinGroup(std::string groupName, hlookup::string_map boneSkinNameMap) { - _skinGroupMap.emplace(groupName, boneSkinNameMap); + _skinGroupMap.emplace(groupName, std::move(boneSkinNameMap)); } void SkeletonNode::checkSubBonesDirty() diff --git a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h index 05d65bf973d2..e511c802b806 100644 --- a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h +++ b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h @@ -49,13 +49,13 @@ class CCS_DLL SkeletonNode : public BoneNode /** *get All bones in this skeleton, */ - const cocos2d::Map& getAllSubBonesMap() const; + const cocos2d::StringMap& getAllSubBonesMap() const; /** *@brief: change displays *@param: boneSkinNameMap, map */ - void changeSkins(const std::map& boneSkinNameMap); + void changeSkins(const hlookup::string_map& boneSkinNameMap); /** *@brief: change displays @@ -68,7 +68,7 @@ class CCS_DLL SkeletonNode : public BoneNode *@param: groupName, key *@param: boneSkinNameMap, map */ - void addSkinGroup(std::string groupName, std::map boneSkinNameMap); + void addSkinGroup(std::string groupName, hlookup::string_map boneSkinNameMap); cocos2d::Rect getBoundingBox() const override; @@ -86,7 +86,7 @@ class CCS_DLL SkeletonNode : public BoneNode virtual void draw(cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, uint32_t flags) override; protected: - cocos2d::Map _subBonesMap; + cocos2d::StringMap _subBonesMap; private: struct VertexData @@ -98,7 +98,7 @@ class CCS_DLL SkeletonNode : public BoneNode cocos2d::Vec2 _squareVertices[8]; VertexData _vertexData[8]; - std::map> + hlookup::string_map > _skinGroupMap; // map< suit name, map< bone name, skin name> > CC_DISALLOW_COPY_AND_ASSIGN(SkeletonNode); diff --git a/extensions/cocostudio/ActionTimeline/CSLoader.cpp b/extensions/cocostudio/ActionTimeline/CSLoader.cpp index 61012e3c364d..19652fb35411 100644 --- a/extensions/cocostudio/ActionTimeline/CSLoader.cpp +++ b/extensions/cocostudio/ActionTimeline/CSLoader.cpp @@ -282,9 +282,9 @@ void CSLoader::init() Node* CSLoader::createNode(std::string_view filename) { - std::string path = filename; + auto path = filename; size_t pos = path.find_last_of('.'); - std::string suffix = path.substr(pos + 1, path.length()); + auto suffix = path.substr(pos + 1, path.length()); CSLoader* load = CSLoader::getInstance(); @@ -302,9 +302,9 @@ Node* CSLoader::createNode(std::string_view filename) Node* CSLoader::createNode(std::string_view filename, const ccNodeLoadCallback& callback) { - std::string path = filename; + auto path = filename; size_t pos = path.find_last_of('.'); - std::string suffix = path.substr(pos + 1, path.length()); + auto suffix = path.substr(pos + 1, path.length()); CSLoader* load = CSLoader::getInstance(); @@ -340,18 +340,18 @@ Node* CSLoader::createNodeWithVisibleSize(std::string_view filename, const ccNod return node; } -std::string CSLoader::getExtentionName(std::string_view name) +std::string_view CSLoader::getExtentionName(std::string_view name) { - std::string path = name; + auto path = name; size_t pos = path.find_last_of('.'); - std::string result = path.substr(pos + 1, path.length()); + auto result = path.substr(pos + 1, path.length()); return result; } ActionTimeline* CSLoader::createTimeline(std::string_view filename) { - std::string suffix = getExtentionName(filename); + auto suffix = getExtentionName(filename); ActionTimelineCache* cache = ActionTimelineCache::getInstance(); @@ -369,7 +369,7 @@ ActionTimeline* CSLoader::createTimeline(std::string_view filename) ActionTimeline* CSLoader::createTimeline(const Data& data, std::string_view filename) { - std::string suffix = getExtentionName(filename); + auto suffix = getExtentionName(filename); ActionTimelineCache* cache = ActionTimelineCache::getInstance(); @@ -379,7 +379,7 @@ ActionTimeline* CSLoader::createTimeline(const Data& data, std::string_view file } else if (suffix == "json" || suffix == "ExportJson") { - std::string content((char*)data.getBytes(), data.getSize()); + std::string_view content((char*)data.getBytes(), data.getSize()); return cache->createActionFromContent(filename, content); } @@ -417,7 +417,7 @@ Node* CSLoader::createNodeFromJson(std::string_view filename) { if (_recordJsonPath) { - std::string jsonPath = filename.substr(0, filename.find_last_of('/') + 1); + auto jsonPath = filename.substr(0, filename.find_last_of('/') + 1); GUIReader::getInstance()->setFilePath(jsonPath); _jsonPath = jsonPath; @@ -448,7 +448,7 @@ Node* CSLoader::loadNodeWithFile(std::string_view fileName) Node* CSLoader::loadNodeWithContent(std::string_view content) { rapidjson::Document doc; - doc.Parse<0>(content.c_str()); + doc.Parse<0>(content.data(), content.length()); if (doc.HasParseError()) { CCLOG("GetParseError %d\n", doc.GetParseError()); @@ -760,10 +760,10 @@ Node* CSLoader::loadWidget(const rapidjson::Value& json) if (isWidget(classname)) { - std::string readerName = getGUIClassName(classname); + std::string readerName{getGUIClassName(classname)}; readerName.append("Reader"); - std::string guiClassName = getGUIClassName(classname); + std::string_view guiClassName = getGUIClassName(classname); widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); // fix memory leak for v3.3 // widget->retain(); @@ -785,7 +785,7 @@ Node* CSLoader::loadWidget(const rapidjson::Value& json) // // 1st., custom widget parse properties of parent widget with parent widget reader - std::string readerName = getWidgetReaderClassName(widget); + std::string_view readerName = getWidgetReaderClassName(widget); WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); if (reader && widget) @@ -990,7 +990,7 @@ inline void CSLoader::reconstructNestNode(cocos2d::Node* node) else { _rootNode = _callbackHandlers.back(); - CCLOG("after pop back _rootNode name = %s", _rootNode->getName().c_str()); + CCLOG("after pop back _rootNode name = %s", _rootNode->getName().data()); } } } @@ -1010,7 +1010,7 @@ Node* CSLoader::nodeWithFlatBuffersFile(std::string_view fileName, const ccNodeL if (buf.isNull()) { - CCLOG("CSLoader::nodeWithFlatBuffersFile - failed read file: %s", fileName.c_str()); + CCLOG("CSLoader::nodeWithFlatBuffersFile - failed read file: %s", fileName.data()); CC_ASSERT(false); return nullptr; } @@ -1144,7 +1144,7 @@ Node* CSLoader::nodeWithFlatBuffers(const flatbuffers::NodeTree* nodetree, const { classname = customClassName; } - std::string readername = getGUIClassName(classname); + std::string readername{getGUIClassName(classname)}; readername.append("Reader"); NodeReaderProtocol* reader = @@ -1178,8 +1178,8 @@ Node* CSLoader::nodeWithFlatBuffers(const flatbuffers::NodeTree* nodetree, const Widget* widget = dynamic_cast(node); if (widget) { - std::string callbackName = widget->getCallbackName(); - std::string callbackType = widget->getCallbackType(); + auto callbackName = widget->getCallbackName(); + auto callbackType = widget->getCallbackType(); bindCallback(callbackName, callbackType, widget, _rootNode); } @@ -1288,7 +1288,7 @@ bool CSLoader::bindCallback(std::string_view callbackName, } } - CCLOG("callBackName %s cannot be found", callbackName.c_str()); + CCLOG("callBackName %s cannot be found", callbackName.data()); return false; } @@ -1315,40 +1315,42 @@ bool CSLoader::isCustomWidget(std::string_view type) return false; } -std::string CSLoader::getGUIClassName(std::string_view name) +std::string_view CSLoader::getGUIClassName(std::string_view name) { - std::string convertedClassName = name; + std::string_view convertedClassName; if (name == "Panel") { - convertedClassName = "Layout"; + convertedClassName = "Layout"sv; } else if (name == "TextArea") { - convertedClassName = "Text"; + convertedClassName = "Text"sv; } else if (name == "TextButton") { - convertedClassName = "Button"; + convertedClassName = "Button"sv; } else if (name == "Label") { - convertedClassName = "Text"; + convertedClassName = "Text"sv; } else if (name == "LabelAtlas") { - convertedClassName = "TextAtlas"; + convertedClassName = "TextAtlas"sv; } else if (name == "LabelBMFont") { - convertedClassName = "TextBMFont"; + convertedClassName = "TextBMFont"sv; } + else + convertedClassName = name; return convertedClassName; } -std::string CSLoader::getWidgetReaderClassName(Widget* widget) +std::string_view CSLoader::getWidgetReaderClassName(Widget* widget) { - std::string readerName; + std::string_view readerName; // 1st., custom widget parse properties of parent widget with parent widget reader if (dynamic_cast(widget)) @@ -1408,6 +1410,8 @@ std::string CSLoader::getWidgetReaderClassName(Widget* widget) { readerName = "WidgetReader"; } + else + readerName = hlookup::empty_sv; return readerName; } @@ -1495,7 +1499,7 @@ Node* CSLoader::nodeWithFlatBuffersForSimulator(const flatbuffers::NodeTree* nod } else { - std::string readername = getGUIClassName(classname); + std::string readername{getGUIClassName(classname)}; readername.append("Reader"); NodeReaderProtocol* reader = @@ -1508,8 +1512,8 @@ Node* CSLoader::nodeWithFlatBuffersForSimulator(const flatbuffers::NodeTree* nod Widget* widget = dynamic_cast(node); if (widget) { - std::string callbackName = widget->getCallbackName(); - std::string callbackType = widget->getCallbackType(); + auto callbackName = widget->getCallbackName(); + auto callbackType = widget->getCallbackType(); bindCallback(callbackName, callbackType, widget, _rootNode); } diff --git a/extensions/cocostudio/ActionTimeline/CSLoader.h b/extensions/cocostudio/ActionTimeline/CSLoader.h index 903e7b31facc..3ba1e7fedc1e 100644 --- a/extensions/cocostudio/ActionTimeline/CSLoader.h +++ b/extensions/cocostudio/ActionTimeline/CSLoader.h @@ -147,11 +147,11 @@ class CCS_DLL CSLoader bool isWidget(std::string_view type); bool isCustomWidget(std::string_view type); - std::string getGUIClassName(std::string_view name); - std::string getWidgetReaderClassName(cocos2d::ui::Widget* widget); + std::string_view getGUIClassName(std::string_view name); + std::string_view getWidgetReaderClassName(cocos2d::ui::Widget* widget); inline void reconstructNestNode(cocos2d::Node* node); - static inline std::string getExtentionName(std::string_view name); + static inline std::string_view getExtentionName(std::string_view name); typedef std::function NodeCreateFunc; typedef std::pair Pair; diff --git a/extensions/cocostudio/CCActionNode.cpp b/extensions/cocostudio/CCActionNode.cpp index 7bb4b3b322f5..c1c454802ab8 100644 --- a/extensions/cocostudio/CCActionNode.cpp +++ b/extensions/cocostudio/CCActionNode.cpp @@ -190,7 +190,7 @@ void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root) int ActionNode::valueToInt(std::string_view value) { - return atoi(value.c_str()); + return atoi(value.data()); } bool ActionNode::valueToBool(std::string_view value) { @@ -206,7 +206,7 @@ bool ActionNode::valueToBool(std::string_view value) } float ActionNode::valueToFloat(std::string_view value) { - return utils::atof(value.c_str()); + return utils::atof(value.data()); } void ActionNode::initWithBinary(CocoLoader* cocoLoader, stExpCocoNode* cocoNode, cocos2d::Ref* root) diff --git a/extensions/cocostudio/CCActionObject.cpp b/extensions/cocostudio/CCActionObject.cpp index 8143324837fe..48c85bac150d 100644 --- a/extensions/cocostudio/CCActionObject.cpp +++ b/extensions/cocostudio/CCActionObject.cpp @@ -186,7 +186,7 @@ void ActionObject::initWithBinary(CocoLoader* cocoLoader, stExpCocoNode* cocoNod int ActionObject::valueToInt(std::string_view value) { - return atoi(value.c_str()); + return atoi(value.data()); } bool ActionObject::valueToBool(std::string_view value) { @@ -202,7 +202,7 @@ bool ActionObject::valueToBool(std::string_view value) } float ActionObject::valueToFloat(std::string_view value) { - return utils::atof(value.c_str()); + return utils::atof(value.data()); } void ActionObject::addActionNode(ActionNode* node) diff --git a/extensions/cocostudio/CCArmature.cpp b/extensions/cocostudio/CCArmature.cpp index 2a1f6402eb26..ab518eda85f6 100644 --- a/extensions/cocostudio/CCArmature.cpp +++ b/extensions/cocostudio/CCArmature.cpp @@ -294,7 +294,7 @@ void Armature::changeBoneParent(Bone* bone, std::string_view parentName) } } -const cocos2d::Map& Armature::getBoneDic() const +const cocos2d::StringMap& Armature::getBoneDic() const { return _boneDic; } diff --git a/extensions/cocostudio/CCArmature.h b/extensions/cocostudio/CCArmature.h index 415018cd6ead..66866ed2a89d 100644 --- a/extensions/cocostudio/CCArmature.h +++ b/extensions/cocostudio/CCArmature.h @@ -144,7 +144,7 @@ class CCS_DLL Armature : public cocos2d::Node, public cocos2d::BlendProtocol * Get Armature's bone dictionary * @return Armature's bone dictionary */ - const cocos2d::Map& getBoneDic() const; + const cocos2d::StringMap& getBoneDic() const; /** * This boundingBox will calculate all bones' boundingBox every time @@ -258,7 +258,7 @@ class CCS_DLL Armature : public cocos2d::Node, public cocos2d::BlendProtocol mutable bool _armatureTransformDirty; - cocos2d::Map + cocos2d::StringMap _boneDic; //! The dictionary of the bones, include all bones in the armature, no matter it is the direct bone //! or the indirect bone. It is different from m_pChindren. diff --git a/extensions/cocostudio/CCArmatureAnimation.cpp b/extensions/cocostudio/CCArmatureAnimation.cpp index 7b7258234a57..3880ecabb326 100644 --- a/extensions/cocostudio/CCArmatureAnimation.cpp +++ b/extensions/cocostudio/CCArmatureAnimation.cpp @@ -138,7 +138,7 @@ void ArmatureAnimation::setSpeedScale(float speedScale) _processScale = !_movementData ? _speedScale : _speedScale * _movementData->scale; - const Map& map = _armature->getBoneDic(); + auto& map = _armature->getBoneDic(); for (auto& element : map) { Bone* bone = element.second; @@ -212,7 +212,7 @@ void ArmatureAnimation::play(std::string_view animationName, int durationTo, int MovementBoneData* movementBoneData = nullptr; _tweenList.clear(); - const Map& map = _armature->getBoneDic(); + auto& map = _armature->getBoneDic(); for (auto& element : map) { Bone* bone = element.second; diff --git a/extensions/cocostudio/CCArmatureAnimation.h b/extensions/cocostudio/CCArmatureAnimation.h index c855e3b84424..e1dce40f7863 100644 --- a/extensions/cocostudio/CCArmatureAnimation.h +++ b/extensions/cocostudio/CCArmatureAnimation.h @@ -43,8 +43,8 @@ enum MovementEventType class Armature; class Bone; -typedef void (cocos2d::Ref::*SEL_MovementEventCallFunc)(Armature*, MovementEventType, const std::string&); -typedef void (cocos2d::Ref::*SEL_FrameEventCallFunc)(Bone*, const std::string&, int, int); +typedef void (cocos2d::Ref::*SEL_MovementEventCallFunc)(Armature*, MovementEventType, std::string_view); +typedef void (cocos2d::Ref::*SEL_FrameEventCallFunc)(Bone*, std::string_view, int, int); #define movementEvent_selector(_SELECTOR) (cocostudio::SEL_MovementEventCallFunc)(&_SELECTOR) #define frameEvent_selector(_SELECTOR) (cocostudio::SEL_FrameEventCallFunc)(&_SELECTOR) diff --git a/extensions/cocostudio/CCArmatureDataManager.cpp b/extensions/cocostudio/CCArmatureDataManager.cpp index c0e39d227bdf..de37f70e7cd0 100644 --- a/extensions/cocostudio/CCArmatureDataManager.cpp +++ b/extensions/cocostudio/CCArmatureDataManager.cpp @@ -122,7 +122,7 @@ void ArmatureDataManager::addArmatureData(std::string_view id, { if (RelativeData* data = getRelativeData(configFilePath)) { - data->armatures.push_back(id); + data->armatures.push_back(std::string{id}); } _armarureDatas.insert(id, armatureData); @@ -144,7 +144,7 @@ void ArmatureDataManager::addAnimationData(std::string_view id, { if (RelativeData* data = getRelativeData(configFilePath)) { - data->animations.push_back(id); + data->animations.push_back(std::string{id}); } _animationDatas.insert(id, animationData); @@ -166,7 +166,7 @@ void ArmatureDataManager::addTextureData(std::string_view id, { if (RelativeData* data = getRelativeData(configFilePath)) { - data->textures.push_back(id); + data->textures.push_back(std::string{id}); } _textureDatas.insert(id, textureData); @@ -230,7 +230,7 @@ void ArmatureDataManager::addSpriteFrameFromFile(std::string_view plistPath, { if (RelativeData* data = getRelativeData(configFilePath)) { - data->plistFiles.push_back(plistPath); + data->plistFiles.push_back(std::string{plistPath}); } SpriteFrameCacheHelper::getInstance()->addSpriteFrameFromFile(plistPath, imagePath); } @@ -240,15 +240,15 @@ bool ArmatureDataManager::isAutoLoadSpriteFile() return _autoLoadSpriteFile; } -const cocos2d::Map& ArmatureDataManager::getArmatureDatas() const +const cocos2d::StringMap& ArmatureDataManager::getArmatureDatas() const { return _armarureDatas; } -const cocos2d::Map& ArmatureDataManager::getAnimationDatas() const +const cocos2d::StringMap& ArmatureDataManager::getAnimationDatas() const { return _animationDatas; } -const cocos2d::Map& ArmatureDataManager::getTextureDatas() const +const cocos2d::StringMap& ArmatureDataManager::getTextureDatas() const { return _textureDatas; } diff --git a/extensions/cocostudio/CCArmatureDataManager.h b/extensions/cocostudio/CCArmatureDataManager.h index 8b89ddb7a563..5862f016524c 100644 --- a/extensions/cocostudio/CCArmatureDataManager.h +++ b/extensions/cocostudio/CCArmatureDataManager.h @@ -179,9 +179,9 @@ class CCS_DLL ArmatureDataManager : public cocos2d::Ref */ bool isAutoLoadSpriteFile(); - const cocos2d::Map& getArmatureDatas() const; - const cocos2d::Map& getAnimationDatas() const; - const cocos2d::Map& getTextureDatas() const; + const cocos2d::StringMap& getArmatureDatas() const; + const cocos2d::StringMap& getAnimationDatas() const; + const cocos2d::StringMap& getTextureDatas() const; public: void addRelativeData(std::string_view configFilePath); @@ -193,25 +193,25 @@ class CCS_DLL ArmatureDataManager : public cocos2d::Ref * @key std::string * @value ArmatureData * */ - cocos2d::Map _armarureDatas; + cocos2d::StringMap _armarureDatas; /** * @brief save animation datas * @key std::string * @value AnimationData * */ - cocos2d::Map _animationDatas; + cocos2d::StringMap _animationDatas; /** * @brief save texture datas * @key std::string * @value TextureData * */ - cocos2d::Map _textureDatas; + cocos2d::StringMap _textureDatas; bool _autoLoadSpriteFile; - std::unordered_map _relativeDatas; + hlookup::string_map _relativeDatas; }; } // namespace cocostudio diff --git a/extensions/cocostudio/CCComAttribute.cpp b/extensions/cocostudio/CCComAttribute.cpp index 2993266d5601..f8c5381915d5 100644 --- a/extensions/cocostudio/CCComAttribute.cpp +++ b/extensions/cocostudio/CCComAttribute.cpp @@ -77,12 +77,12 @@ int ComAttribute::getInt(std::string_view key, int def) const return v.asInt(); } - if (!DICTOOL->checkObjectExist_json(_doc, key.c_str())) + if (!DICTOOL->checkObjectExist_json(_doc, key.data())) { return def; } - return DICTOOL->getIntValue_json(_doc, key.c_str()); + return DICTOOL->getIntValue_json(_doc, key.data()); } float ComAttribute::getFloat(std::string_view key, float def) const @@ -93,11 +93,11 @@ float ComAttribute::getFloat(std::string_view key, float def) const return v.asFloat(); } - if (!DICTOOL->checkObjectExist_json(_doc, key.c_str())) + if (!DICTOOL->checkObjectExist_json(_doc, key.data())) { return def; } - return DICTOOL->getFloatValue_json(_doc, key.c_str()); + return DICTOOL->getFloatValue_json(_doc, key.data()); } bool ComAttribute::getBool(std::string_view key, bool def) const @@ -108,12 +108,12 @@ bool ComAttribute::getBool(std::string_view key, bool def) const return v.asBool(); } - if (!DICTOOL->checkObjectExist_json(_doc, key.c_str())) + if (!DICTOOL->checkObjectExist_json(_doc, key.data())) { return def; } - return DICTOOL->getBooleanValue_json(_doc, key.c_str()); + return DICTOOL->getBooleanValue_json(_doc, key.data()); } std::string ComAttribute::getString(std::string_view key, std::string_view def) const @@ -124,12 +124,12 @@ std::string ComAttribute::getString(std::string_view key, std::string_view def) return v.asString(); } - if (!DICTOOL->checkObjectExist_json(_doc, key.c_str())) + if (!DICTOOL->checkObjectExist_json(_doc, key.data())) { - return def; + return std::string{def}; } - return DICTOOL->getStringValue_json(_doc, key.c_str()); + return DICTOOL->getStringValue_json(_doc, key.data()); } ComAttribute* ComAttribute::create() diff --git a/extensions/cocostudio/CCDataReaderHelper.cpp b/extensions/cocostudio/CCDataReaderHelper.cpp index 9dee7de59096..0ee6d288cee3 100644 --- a/extensions/cocostudio/CCDataReaderHelper.cpp +++ b/extensions/cocostudio/CCDataReaderHelper.cpp @@ -276,19 +276,15 @@ void DataReaderHelper::addDataFromFile(std::string_view filePath) return; } } - _configFileList.push_back(filePath); + _configFileList.push_back(std::string{filePath}); //! find the base file path - std::string basefilePath = filePath; - size_t pos = basefilePath.find_last_of('/'); + std::string basefilePath; + size_t pos = filePath.find_last_of('/'); if (pos != std::string::npos) { - basefilePath = basefilePath.substr(0, pos + 1); - } - else - { - basefilePath = ""; + basefilePath = filePath.substr(0, pos + 1); } std::string fileExtension = cocos2d::FileUtils::getInstance()->getFileExtension(filePath); @@ -346,19 +342,15 @@ void DataReaderHelper::addDataFromFileAsync(std::string_view imagePath, return; } } - _configFileList.push_back(filePath); + _configFileList.push_back(std::string{filePath}); //! find the base file path - std::string basefilePath = filePath; - size_t pos = basefilePath.find_last_of('/'); + std::string basefilePath; + size_t pos = filePath.find_last_of('/'); if (pos != std::string::npos) { - basefilePath = basefilePath.substr(0, pos + 1); - } - else - { - basefilePath = ""; + basefilePath = filePath.substr(0, pos + 1); } // lazy init @@ -506,7 +498,8 @@ void DataReaderHelper::removeConfigFile(std::string_view configFile) void DataReaderHelper::addDataFromCache(std::string_view pFileContent, DataInfo* dataInfo) { pugi::xml_document document; - document.load_string(pFileContent.c_str()); + pugi::xml_parse_result ret = document.load_buffer(pFileContent.data(), pFileContent.length()); + if(!ret) return; auto root = document.document_element(); dataInfo->flashToolVersion = root.attribute(VERSION).as_float(); @@ -1119,12 +1112,12 @@ ContourData* DataReaderHelper::decodeContour(pugi::xml_node& contourXML, DataInf void DataReaderHelper::addDataFromJsonCache(std::string_view fileContent, DataInfo* dataInfo) { rapidjson::Document json; - rapidjson::StringStream stream(fileContent.c_str()); + rapidjson::StringStream stream(fileContent.data()); if (fileContent.size() >= 3) { // Skip BOM if exists - const unsigned char* c = (const unsigned char*)fileContent.c_str(); + const unsigned char* c = (const unsigned char*)fileContent.data(); unsigned bom = c[0] | (c[1] << 8) | (c[2] << 16); if (bom == 0xBFBBEF) // UTF8 BOM diff --git a/extensions/cocostudio/CCDatas.cpp b/extensions/cocostudio/CCDatas.cpp index 65b5cada2ead..ef45d8bd45ff 100644 --- a/extensions/cocostudio/CCDatas.cpp +++ b/extensions/cocostudio/CCDatas.cpp @@ -139,13 +139,15 @@ Color4B BaseData::getColor() std::string DisplayData::changeDisplayToTexture(std::string_view displayName) { // remove .xxx - std::string textureName = displayName; - size_t startPos = textureName.find_last_of("."); + std::string textureName; + size_t startPos = displayName.find_last_of("."); if (startPos != std::string::npos) { - textureName = textureName.erase(startPos); + textureName.assign(displayName.data(), startPos); // textureName = textureName.erase(startPos); } + else + textureName = displayName; return textureName; } diff --git a/extensions/cocostudio/CCDatas.h b/extensions/cocostudio/CCDatas.h index e0ed53be05bf..dc2d76752648 100644 --- a/extensions/cocostudio/CCDatas.h +++ b/extensions/cocostudio/CCDatas.h @@ -286,7 +286,7 @@ class CCS_DLL ArmatureData : public cocos2d::Ref public: std::string name; - cocos2d::Map boneDataDic; + cocos2d::StringMap boneDataDic; float dataVersion; }; @@ -446,7 +446,7 @@ class CCS_DLL MovementData : public cocos2d::Ref * @key std::string_view * @value MovementBoneData * */ - cocos2d::Map movBoneDataDic; + cocos2d::StringMap movBoneDataDic; }; /** @@ -477,7 +477,7 @@ class CCS_DLL AnimationData : public cocos2d::Ref public: std::string name; - cocos2d::Map movementDataDic; + cocos2d::StringMap movementDataDic; std::vector movementNames; }; diff --git a/extensions/cocostudio/CCDisplayManager.cpp b/extensions/cocostudio/CCDisplayManager.cpp index 7fdd2bc7abeb..b6d07cc6fa0b 100644 --- a/extensions/cocostudio/CCDisplayManager.cpp +++ b/extensions/cocostudio/CCDisplayManager.cpp @@ -129,7 +129,7 @@ void DisplayManager::addDisplay(Node* display, int index) skin->setBone(_bone); displayData = SpriteDisplayData::create(); - DisplayFactory::initSpriteDisplay(_bone, decoDisplay, skin->getDisplayName().c_str(), skin); + DisplayFactory::initSpriteDisplay(_bone, decoDisplay, skin->getDisplayName().data(), skin); if (SpriteDisplayData* spriteDisplayData = (SpriteDisplayData*)decoDisplay->getDisplayData()) { diff --git a/extensions/cocostudio/CCSGUIReader.cpp b/extensions/cocostudio/CCSGUIReader.cpp index f2a0845df6d7..a3586e1e5015 100644 --- a/extensions/cocostudio/CCSGUIReader.cpp +++ b/extensions/cocostudio/CCSGUIReader.cpp @@ -311,7 +311,7 @@ std::string WidgetPropertiesReader::getWidgetReaderClassName(Widget* widget) std::string WidgetPropertiesReader::getGUIClassName(std::string_view name) { - std::string convertedClassName = name; + std::string convertedClassName; if (name == "Panel") { convertedClassName = "Layout"; @@ -336,6 +336,8 @@ std::string WidgetPropertiesReader::getGUIClassName(std::string_view name) { convertedClassName = "TextBMFont"; } + else + convertedClassName = name; return convertedClassName; } @@ -429,7 +431,7 @@ Widget* GUIReader::widgetFromBinaryFile(const char* fileName) std::string WidgetPropertiesReader::getWidgetReaderClassName(std::string_view classname) { // create widget reader to parse properties of widget - std::string readerName = classname; + std::string readerName; if (readerName == "Panel") { readerName = "Layout"; @@ -454,6 +456,8 @@ std::string WidgetPropertiesReader::getWidgetReaderClassName(std::string_view cl { readerName = "TextBMFont"; } + else + readerName = classname; readerName.append("Reader"); return readerName; } @@ -1643,10 +1647,10 @@ void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromJsonDictionary(st { GUIReader* guiReader = GUIReader::getInstance(); - std::map* object_map = guiReader->getParseObjectMap(); + hlookup::string_map* object_map = guiReader->getParseObjectMap(); Ref* object = (*object_map)[classType]; - std::map* selector_map = guiReader->getParseCallBackMap(); + hlookup::string_map* selector_map = guiReader->getParseCallBackMap(); SEL_ParseEvent selector = (*selector_map)[classType]; if (object && selector) diff --git a/extensions/cocostudio/CCSGUIReader.h b/extensions/cocostudio/CCSGUIReader.h index 1de130dd4d93..efec53063425 100644 --- a/extensions/cocostudio/CCSGUIReader.h +++ b/extensions/cocostudio/CCSGUIReader.h @@ -50,7 +50,7 @@ struct stExpCocoNode; #define kCCSVersion 1.0 -typedef void (cocos2d::Ref::*SEL_ParseEvent)(const std::string&, cocos2d::Ref*, const rapidjson::Value&); +typedef void (cocos2d::Ref::*SEL_ParseEvent)(std::string_view, cocos2d::Ref*, const rapidjson::Value&); #define parseselector(_SELECTOR) (SEL_ParseEvent)(&_SELECTOR) class CCS_DLL GUIReader : public cocos2d::Ref @@ -96,9 +96,9 @@ class CCS_DLL GUIReader : public cocos2d::Ref std::string m_strFilePath; cocos2d::ValueMap _fileDesignSizes; - typedef std::map ParseCallBackMap; + typedef hlookup::string_map ParseCallBackMap; ParseCallBackMap _mapParseSelector; - typedef std::map ParseObjectMap; + typedef hlookup::string_map ParseObjectMap; ParseObjectMap _mapObject; public: diff --git a/extensions/cocostudio/CCSSceneReader.cpp b/extensions/cocostudio/CCSSceneReader.cpp index f69c5e05dd99..c93c80f393ee 100644 --- a/extensions/cocostudio/CCSSceneReader.cpp +++ b/extensions/cocostudio/CCSSceneReader.cpp @@ -161,7 +161,7 @@ cocos2d::Node* SceneReader::createNodeWithSceneFile( } else { - log("read file [%s] error!\n", fileName.c_str()); + log("read file [%s] error!\n", fileName.data()); } return nullptr; } diff --git a/extensions/cocostudio/CCSkin.cpp b/extensions/cocostudio/CCSkin.cpp index 8287a412bfa3..a532988362fc 100644 --- a/extensions/cocostudio/CCSkin.cpp +++ b/extensions/cocostudio/CCSkin.cpp @@ -94,7 +94,7 @@ bool Skin::initWithSpriteFrameName(std::string_view spriteFrameName) } else { - CCLOG("Can't find CCSpriteFrame with %s. Please check your .plist file", spriteFrameName.c_str()); + CCLOG("Can't find CCSpriteFrame with %s. Please check your .plist file", spriteFrameName.data()); ret = false; } diff --git a/extensions/cocostudio/CCSpriteFrameCacheHelper.h b/extensions/cocostudio/CCSpriteFrameCacheHelper.h index 0c84294e68c7..8f168b545231 100644 --- a/extensions/cocostudio/CCSpriteFrameCacheHelper.h +++ b/extensions/cocostudio/CCSpriteFrameCacheHelper.h @@ -70,7 +70,7 @@ class CCS_DLL SpriteFrameCacheHelper SpriteFrameCacheHelper(); ~SpriteFrameCacheHelper(); - std::map> _usingSpriteFrames; + hlookup::string_map> _usingSpriteFrames; static SpriteFrameCacheHelper* _spriteFrameCacheHelper; }; diff --git a/extensions/cocostudio/CocosStudioExport.h b/extensions/cocostudio/CocosStudioExport.h index 89e1929c0dad..dcc448bf4074 100644 --- a/extensions/cocostudio/CocosStudioExport.h +++ b/extensions/cocostudio/CocosStudioExport.h @@ -31,4 +31,6 @@ # define CCS_DLL #endif +#include "base/hlookup.h" + #endif /* __CCEXTENSIONEXPORT_H__*/ \ No newline at end of file diff --git a/extensions/cocostudio/FlatBuffersSerialize.cpp b/extensions/cocostudio/FlatBuffersSerialize.cpp index 8d064ea8498c..bdd839b6e0e7 100644 --- a/extensions/cocostudio/FlatBuffersSerialize.cpp +++ b/extensions/cocostudio/FlatBuffersSerialize.cpp @@ -453,7 +453,7 @@ int FlatBuffersSerialize::getResourceType(std::string key) std::string FlatBuffersSerialize::getGUIClassName(std::string_view name) { - std::string convertedClassName = name; + std::string convertedClassName; if (name == "Panel") { convertedClassName = "Layout"; @@ -478,6 +478,8 @@ std::string FlatBuffersSerialize::getGUIClassName(std::string_view name) { convertedClassName = "TextBMFont"; } + else + convertedClassName = name; return convertedClassName; } @@ -1560,7 +1562,7 @@ std::string FlatBuffersSerialize::serializeFlatBuffersWithXMLFileForLanguageData hasKeyReaded = true; } // Record corresponding text. - else if (strcmp(languageName.c_str(), childElement.name()) == 0) + else if (languageName == childElement.name()) { const char* langText = childElement.text().as_string(); if (langText && langText[0] != '\0') diff --git a/extensions/cocostudio/SpineSkeletonDataCache.h b/extensions/cocostudio/SpineSkeletonDataCache.h index 317c64d06a32..51a3e1de4a23 100644 --- a/extensions/cocostudio/SpineSkeletonDataCache.h +++ b/extensions/cocostudio/SpineSkeletonDataCache.h @@ -39,7 +39,7 @@ class CCS_DLL SpineSkeletonDataCache void removeAllUnusedData(void); public: - std::map _cacheTable; + hlookup::string_map _cacheTable; void (*_reportError)(const char* pszFormat, ...); }; @@ -76,7 +76,7 @@ class SpineSkeletonDataCache void removeAllUnusedData(void); public: - std::map _cacheTable; + hlookup::string_map _cacheTable; void (*_reportError)(const char* pszFormat, ...); }; diff --git a/extensions/cocostudio/WidgetCallBackHandlerProtocol.cpp b/extensions/cocostudio/WidgetCallBackHandlerProtocol.cpp index a8a6b59e7d10..d51149ba9d1d 100644 --- a/extensions/cocostudio/WidgetCallBackHandlerProtocol.cpp +++ b/extensions/cocostudio/WidgetCallBackHandlerProtocol.cpp @@ -4,15 +4,15 @@ namespace cocostudio { WidgetCallBackHandlerProtocol::~WidgetCallBackHandlerProtocol() {} -cocos2d::ui::Widget::ccWidgetTouchCallback WidgetCallBackHandlerProtocol::onLocateTouchCallback(const std::string&) +cocos2d::ui::Widget::ccWidgetTouchCallback WidgetCallBackHandlerProtocol::onLocateTouchCallback(std::string_view) { return nullptr; } -cocos2d::ui::Widget::ccWidgetClickCallback WidgetCallBackHandlerProtocol::onLocateClickCallback(const std::string&) +cocos2d::ui::Widget::ccWidgetClickCallback WidgetCallBackHandlerProtocol::onLocateClickCallback(std::string_view) { return nullptr; } -cocos2d::ui::Widget::ccWidgetEventCallback WidgetCallBackHandlerProtocol::onLocateEventCallback(const std::string&) +cocos2d::ui::Widget::ccWidgetEventCallback WidgetCallBackHandlerProtocol::onLocateEventCallback(std::string_view) { return nullptr; } diff --git a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp index 2a4a68060acb..c78fc1aa1612 100644 --- a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp +++ b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp @@ -241,5 +241,5 @@ std::string ArmatureNodeReader::getArmatureName(std::string_view exporJsonPath) if (start == -1) start = 0; - return exporJsonPath.substr(start, end - start); + return std::string{exporJsonPath.substr(start, end - start)}; } diff --git a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp index 31bcc5732aa1..d64403d25245 100644 --- a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp +++ b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp @@ -79,7 +79,7 @@ cocos2d::ui::Layout* (*aLayout)(); cocos2d::ui::ScrollView* (*aScrollView)(); cocos2d::ui::ListView* (*aListView)(); cocos2d::ui::PageView* (*aPageView)(); -cocos2d::ParticleSystemQuad* (*aParticleSystemQuad)(const std::string&); +cocos2d::ParticleSystemQuad* (*aParticleSystemQuad)(std::string_view); cocos2d::Node* (*aArmatureNode)(); cocostudio::timeline::SkeletonNode* (*aSkeletonNode)(); cocostudio::timeline::BoneNode* (*aBoneNode)(); diff --git a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h index a92a24135fb0..ad10606f443a 100644 --- a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h +++ b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.h @@ -168,7 +168,7 @@ CCS_DLL extern cocos2d::ui::PageView* (*aPageView)(); CCS_DLL extern cocos2d::Node* (*aArmatureNode)(); CCS_DLL extern cocostudio::timeline::SkeletonNode* (*aSkeletonNode)(); CCS_DLL extern cocostudio::timeline::BoneNode* (*aBoneNode)(); -CCS_DLL extern cocos2d::ParticleSystemQuad* (*aParticleSystemQuad)(const std::string&); +CCS_DLL extern cocos2d::ParticleSystemQuad* (*aParticleSystemQuad)(std::string_view); CCS_DLL extern cocos2d::Node* (*aNestingNode)(std::string); ///// 3d objects ///// diff --git a/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp b/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp index 161a86263cff..e07405f1abec 100644 --- a/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp @@ -97,7 +97,7 @@ void TextAtlasReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson { WidgetReader::setPropsFromJsonDictionary(widget, options); - std::string jsonPath = GUIReader::getInstance()->getFilePath(); + std::string_view jsonPath = GUIReader::getInstance()->getFilePath(); TextAtlas* labelAtlas = static_cast(widget); // bool sv = DICTOOL->checkObjectExist_json(options, P_StringValue); @@ -112,7 +112,7 @@ void TextAtlasReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson { case 0: { - std::string tp_c = jsonPath; + std::string tp_c {jsonPath}; const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelAtlas->setProperty(DICTOOL->getStringValue_json(options, P_StringValue, "12345678"), cmf_tp, diff --git a/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp b/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp index fffff874b8a8..ae74e130cceb 100644 --- a/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp @@ -82,7 +82,7 @@ void TextBMFontReader::setPropsFromJsonDictionary(Widget* widget, const rapidjso { WidgetReader::setPropsFromJsonDictionary(widget, options); - std::string jsonPath = GUIReader::getInstance()->getFilePath(); + std::string_view jsonPath = GUIReader::getInstance()->getFilePath(); TextBMFont* labelBMFont = static_cast(widget); @@ -92,7 +92,7 @@ void TextBMFontReader::setPropsFromJsonDictionary(Widget* widget, const rapidjso { case 0: { - std::string tp_c = jsonPath; + std::string tp_c { jsonPath }; const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelBMFont->setFntFile(cmf_tp); diff --git a/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp b/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp index 484dca151fdd..efbe1ae426ff 100644 --- a/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp @@ -101,9 +101,9 @@ void TextFieldReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson textField->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize, 20)); - std::string jsonPath = GUIReader::getInstance()->getFilePath(); - std::string fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); - std::string fontFilePath = jsonPath.append(fontName); + std::string fontFilePath{GUIReader::getInstance()->getFilePath()}; + auto fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); + fontFilePath.append(fontName); if (FileUtils::getInstance()->isFileExist(fontFilePath)) textField->setFontName(fontFilePath); else diff --git a/extensions/cocostudio/WidgetReader/TextReader/TextReader.cpp b/extensions/cocostudio/WidgetReader/TextReader/TextReader.cpp index a42748e5e2a8..05624cde11a0 100644 --- a/extensions/cocostudio/WidgetReader/TextReader/TextReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextReader/TextReader.cpp @@ -57,7 +57,7 @@ void TextReader::setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* coc Text* label = static_cast(widget); - std::string binaryFilePath = GUIReader::getInstance()->getFilePath(); + std::string binaryFilePath{GUIReader::getInstance()->getFilePath()}; for (int i = 0; i < cocoNode->GetChildNum(); ++i) { @@ -96,7 +96,7 @@ void TextReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson::Val { WidgetReader::setPropsFromJsonDictionary(widget, options); - std::string jsonPath = GUIReader::getInstance()->getFilePath(); + std::string fontFilePath{GUIReader::getInstance()->getFilePath()}; Text* label = static_cast(widget); bool touchScaleChangeAble = DICTOOL->getBooleanValue_json(options, P_TouchScaleEnable); @@ -106,9 +106,9 @@ void TextReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson::Val label->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize, 20)); - std::string fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); + auto fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); - std::string fontFilePath = jsonPath.append(fontName); + fontFilePath.append(fontName); if (FileUtils::getInstance()->isFileExist(fontFilePath)) { label->setFontName(fontFilePath); diff --git a/extensions/cocostudio/WidgetReader/WidgetReader.cpp b/extensions/cocostudio/WidgetReader/WidgetReader.cpp index c9cbce0976ba..46037d585658 100644 --- a/extensions/cocostudio/WidgetReader/WidgetReader.cpp +++ b/extensions/cocostudio/WidgetReader/WidgetReader.cpp @@ -98,7 +98,7 @@ WidgetReader::WidgetReader() , _opacity(255) , _isAdaptScreen(false) { - valueToInt = [=](std::string_view str) -> int { return atoi(str.c_str()); }; + valueToInt = [=](std::string_view str) -> int { return atoi(str.data()); }; valueToBool = [=](std::string_view str) -> bool { int intValue = valueToInt(str); @@ -112,7 +112,7 @@ WidgetReader::WidgetReader() } }; - valueToFloat = [=](std::string_view str) -> float { return utils::atof(str.c_str()); }; + valueToFloat = [=](std::string_view str) -> float { return utils::atof(str.data()); }; } WidgetReader::~WidgetReader() {} @@ -306,14 +306,14 @@ std::string WidgetReader::getResourcePath(const rapidjson::Value& dict, std::string_view key, cocos2d::ui::Widget::TextureResType texType) { - std::string jsonPath = GUIReader::getInstance()->getFilePath(); - const char* imageFileName = DICTOOL->getStringValue_json(dict, key.c_str()); + std::string_view jsonPath = GUIReader::getInstance()->getFilePath(); + const char* imageFileName = DICTOOL->getStringValue_json(dict, key.data()); std::string imageFileName_tp; if (nullptr != imageFileName) { if (texType == ui::Widget::TextureResType::LOCAL) { - imageFileName_tp = jsonPath + imageFileName; + imageFileName_tp.append(jsonPath).append(imageFileName); } else if (texType == ui::Widget::TextureResType::PLIST) { @@ -339,14 +339,14 @@ std::string WidgetReader::getResourcePath(CocoLoader* cocoLoader, return ""; } - std::string binaryPath = GUIReader::getInstance()->getFilePath(); + std::string_view binaryPath = GUIReader::getInstance()->getFilePath(); std::string imageFileName_tp; if (!backgroundValue.empty()) { if (texType == ui::Widget::TextureResType::LOCAL) { - imageFileName_tp = binaryPath + backgroundValue; + imageFileName_tp.append(binaryPath).append(backgroundValue); } else if (texType == ui::Widget::TextureResType::PLIST) { @@ -942,18 +942,17 @@ Node* WidgetReader::createNodeWithFlatBuffers(const flatbuffers::Table* widgetOp std::string WidgetReader::getResourcePath(std::string_view path, cocos2d::ui::Widget::TextureResType texType) { - std::string filePath = GUIReader::getInstance()->getFilePath(); - const char* imageFileName = path.c_str(); + std::string_view filePath = GUIReader::getInstance()->getFilePath(); std::string imageFileName_tp; - if (nullptr != imageFileName && 0 != strcmp("", imageFileName)) + if (!path.empty()) { if (texType == ui::Widget::TextureResType::LOCAL) { - imageFileName_tp = filePath + imageFileName; + imageFileName_tp.append(filePath).append(path); } else if (texType == ui::Widget::TextureResType::PLIST) { - imageFileName_tp = imageFileName; + imageFileName_tp.assign(path); } else { diff --git a/extensions/cocostudio/WidgetReader/WidgetReader.h b/extensions/cocostudio/WidgetReader/WidgetReader.h index e7641cdc39f5..0b9a86316b23 100644 --- a/extensions/cocostudio/WidgetReader/WidgetReader.h +++ b/extensions/cocostudio/WidgetReader/WidgetReader.h @@ -79,9 +79,9 @@ class CCS_DLL WidgetReader : public cocos2d::Ref, public WidgetReaderProtocol, p void beginSetBasicProperties(cocos2d::ui::Widget* widget); void endSetBasicProperties(cocos2d::ui::Widget* widget); - std::function valueToInt; - std::function valueToBool; - std::function valueToFloat; + std::function valueToInt; + std::function valueToBool; + std::function valueToFloat; float _sizePercentX; float _sizePercentY; diff --git a/templates/cpp-template-default/Classes/HelloWorldScene.cpp b/templates/cpp-template-default/Classes/HelloWorldScene.cpp index 620e41e8664b..60b791bbde1b 100644 --- a/templates/cpp-template-default/Classes/HelloWorldScene.cpp +++ b/templates/cpp-template-default/Classes/HelloWorldScene.cpp @@ -97,7 +97,7 @@ bool HelloWorld::init() } // add "HelloWorld" splash screen" - auto sprite = Sprite::create("HelloWorld.png"); + auto sprite = Sprite::create("HelloWorld.png"sv); if (sprite == nullptr) { problemLoading("'HelloWorld.png'"); From 8e644ef0b45ac3ee419429c684d5fb1376cff29f Mon Sep 17 00:00:00 2001 From: halx99 Date: Mon, 27 Dec 2021 15:10:29 +0800 Subject: [PATCH 03/58] Modify fairygui for string_view --- cocos/2d/CCAnimationCache.h | 2 +- extensions/fairygui/GTextInput.cpp | 2 +- extensions/fairygui/GTextInput.h | 2 +- extensions/fairygui/ScrollPane.cpp | 4 +- extensions/fairygui/UIPackage.cpp | 12 +- extensions/fairygui/UIPackage.h | 4 +- extensions/fairygui/display/FUIContainer.cpp | 10 + extensions/fairygui/display/FUIContainer.h | 1 + extensions/fairygui/display/FUILabel.cpp | 2 +- extensions/fairygui/display/FUILabel.h | 2 +- extensions/fairygui/display/FUIRichText.cpp | 2 +- thirdparty/tsl/robin_hash.h | 272 +++++++++---------- 12 files changed, 162 insertions(+), 153 deletions(-) diff --git a/cocos/2d/CCAnimationCache.h b/cocos/2d/CCAnimationCache.h index e64fa50c2646..35ae26a737e6 100644 --- a/cocos/2d/CCAnimationCache.h +++ b/cocos/2d/CCAnimationCache.h @@ -120,7 +120,7 @@ class CC_DLL AnimationCache : public Ref void parseVersion2(const ValueMap& animations); private: - Map _animations; + StringMap _animations; static AnimationCache* s_sharedAnimationCache; }; diff --git a/extensions/fairygui/GTextInput.cpp b/extensions/fairygui/GTextInput.cpp index 3a9117675baf..902fc4be5244 100644 --- a/extensions/fairygui/GTextInput.cpp +++ b/extensions/fairygui/GTextInput.cpp @@ -122,7 +122,7 @@ void GTextInput::editBoxReturn(cocos2d::ui::EditBox * editBox) // dispatchEvent(UIEventType::Submit); } -void GTextInput::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) +void GTextInput::editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view /*text*/) { _text.clear(); _text.append(_input->getText()); diff --git a/extensions/fairygui/GTextInput.h b/extensions/fairygui/GTextInput.h index 8ce76371ce75..7741843e0c7a 100644 --- a/extensions/fairygui/GTextInput.h +++ b/extensions/fairygui/GTextInput.h @@ -36,7 +36,7 @@ class GTextInput : public GTextField, cocos2d::ui::EditBoxDelegate virtual void setTextFieldText() override; virtual void editBoxReturn(cocos2d::ui::EditBox* editBox) override; - virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) override; + virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) override; private: FUIInput* _input; diff --git a/extensions/fairygui/ScrollPane.cpp b/extensions/fairygui/ScrollPane.cpp index f976666c3015..7e25cbb04387 100644 --- a/extensions/fairygui/ScrollPane.cpp +++ b/extensions/fairygui/ScrollPane.cpp @@ -722,13 +722,13 @@ void ScrollPane::changeContentSizeOnScrolling(float deltaWidth, float deltaHeigh if (deltaWidth != 0 && isRightmost) { _xPos = _overlapSize.width; - _container->setPositionX(_container->getPositionX() - _xPos); + _container->setPositionX(-_xPos); } if (deltaHeight != 0 && isBottom) { _yPos = _overlapSize.height; - _container->setPositionY2(_container->getPositionY2() - _yPos); + _container->setPositionY2(-_yPos); } } diff --git a/extensions/fairygui/UIPackage.cpp b/extensions/fairygui/UIPackage.cpp index 19e0ebb3dcb3..bdd97c41d299 100644 --- a/extensions/fairygui/UIPackage.cpp +++ b/extensions/fairygui/UIPackage.cpp @@ -200,7 +200,7 @@ string UIPackage::getItemURL(const string& pkgName, const string& resName) return STD_STRING_EMPTY; } -PackageItem* UIPackage::getItemByURL(const string& url) +PackageItem* UIPackage::getItemByURL(std::string_view url) { if (url.size() == 0) return nullptr; @@ -214,22 +214,22 @@ PackageItem* UIPackage::getItemByURL(const string& url) { if (url.size() > 13) { - string pkgId = url.substr(5, 8); + std::string pkgId{url.substr(5, 8)}; UIPackage* pkg = getById(pkgId); if (pkg != nullptr) { - string srcId = url.substr(13); + std::string srcId{url.substr(13)}; return pkg->getItem(srcId); } } } else { - string pkgName = url.substr(pos1 + 2, pos2 - pos1 - 2); + std::string pkgName{url.substr(pos1 + 2, pos2 - pos1 - 2)}; UIPackage* pkg = getByName(pkgName); if (pkg != nullptr) { - string srcName = url.substr(pos2 + 1); + std::string srcName{url.substr(pos2 + 1)}; return pkg->getItemByName(srcName); } } @@ -274,7 +274,7 @@ void* UIPackage::getItemAsset(const std::string& pkgName, const std::string& res return nullptr; } -void* UIPackage::getItemAssetByURL(const std::string& url, PackageItemType type) +void* UIPackage::getItemAssetByURL(std::string_view url, PackageItemType type) { PackageItem* pi = UIPackage::getItemByURL(url); if (pi) diff --git a/extensions/fairygui/UIPackage.h b/extensions/fairygui/UIPackage.h index 041a86822a3f..a2b0c754d4f9 100644 --- a/extensions/fairygui/UIPackage.h +++ b/extensions/fairygui/UIPackage.h @@ -25,10 +25,10 @@ class UIPackage : public cocos2d::Ref static GObject* createObject(const std::string& pkgName, const std::string& resName); static GObject* createObjectFromURL(const std::string& url); static std::string getItemURL(const std::string& pkgName, const std::string& resName); - static PackageItem* getItemByURL(const std::string& url); + static PackageItem* getItemByURL(std::string_view url); static std::string normalizeURL(const std::string& url); static void* getItemAsset(const std::string& pkgName, const std::string& resName, PackageItemType type = PackageItemType::UNKNOWN); - static void* getItemAssetByURL(const std::string& url, PackageItemType type = PackageItemType::UNKNOWN); + static void* getItemAssetByURL(std::string_view url, PackageItemType type = PackageItemType::UNKNOWN); static cocos2d::Texture2D* getEmptyTexture() { return _emptyTexture; } const std::string& getId() const { return _id; } diff --git a/extensions/fairygui/display/FUIContainer.cpp b/extensions/fairygui/display/FUIContainer.cpp index 3cd5ff0c97f7..9676cf133ea7 100644 --- a/extensions/fairygui/display/FUIContainer.cpp +++ b/extensions/fairygui/display/FUIContainer.cpp @@ -496,4 +496,14 @@ void FUIContainer::visit(cocos2d::Renderer * renderer, const cocos2d::Mat4 & par Node::visit(renderer, parentTransform, parentFlags); } +void FUIContainer::setGlobalZOrder(float globalZOrder) +{ + Node::setGlobalZOrder(globalZOrder); + if (_stencilClippingSupport && _stencilClippingSupport->_stencil) + { + _stencilClippingSupport->_stencil->setGlobalZOrder(globalZOrder); + } +} + + NS_FGUI_END diff --git a/extensions/fairygui/display/FUIContainer.h b/extensions/fairygui/display/FUIContainer.h index 8f9958e83d10..6e991b5ba504 100644 --- a/extensions/fairygui/display/FUIContainer.h +++ b/extensions/fairygui/display/FUIContainer.h @@ -77,6 +77,7 @@ class FUIContainer : public cocos2d::Node void onExit() override; void visit(cocos2d::Renderer *renderer, const cocos2d::Mat4 &parentTransform, uint32_t parentFlags) override; void setCameraMask(unsigned short mask, bool applyChildren = true) override; + void setGlobalZOrder(float globalZOrder) override; GObject* gOwner; private: diff --git a/extensions/fairygui/display/FUILabel.cpp b/extensions/fairygui/display/FUILabel.cpp index 173acf1e58b5..9917d986a334 100644 --- a/extensions/fairygui/display/FUILabel.cpp +++ b/extensions/fairygui/display/FUILabel.cpp @@ -118,7 +118,7 @@ void FUILabel::applyTextFormat() disableEffect(LabelEffect::SHADOW); } -bool FUILabel::setBMFontFilePath(const std::string& bmfontFilePath, const Vec2& imageOffset, float fontSize) +bool FUILabel::setBMFontFilePath(std::string_view bmfontFilePath, const Vec2& imageOffset, float fontSize) { BitmapFont* bmFont = (BitmapFont*)UIPackage::getItemAssetByURL(bmfontFilePath, PackageItemType::FONT); if (bmFont == nullptr) diff --git a/extensions/fairygui/display/FUILabel.h b/extensions/fairygui/display/FUILabel.h index 0f9448dff397..6733431730ea 100644 --- a/extensions/fairygui/display/FUILabel.h +++ b/extensions/fairygui/display/FUILabel.h @@ -23,7 +23,7 @@ class FUILabel : public cocos2d::Label void setUnderlineColor(const cocos2d::Color3B& value); - virtual bool setBMFontFilePath(const std::string& bmfontFilePath, const cocos2d::Vec2& imageOffset = cocos2d::Vec2::ZERO, float fontSize = 0) override; + virtual bool setBMFontFilePath(std::string_view bmfontFilePath, const cocos2d::Vec2& imageOffset = cocos2d::Vec2::ZERO, float fontSize = 0) override; void setGrayed(bool value); protected: diff --git a/extensions/fairygui/display/FUIRichText.cpp b/extensions/fairygui/display/FUIRichText.cpp index 8e41ead1aa0e..e98495b7b089 100644 --- a/extensions/fairygui/display/FUIRichText.cpp +++ b/extensions/fairygui/display/FUIRichText.cpp @@ -76,7 +76,7 @@ static float stripTrailingWhitespace(const std::vector& row) { if (!row.empty()) { if (auto label = dynamic_cast(row.back())) { const auto width = label->getContentSize().width; - auto str = label->getString(); + std::string str{label->getString()}; rtrim(str); if (label->getString() != str) { label->setString(str); diff --git a/thirdparty/tsl/robin_hash.h b/thirdparty/tsl/robin_hash.h index 42e712d1bc42..70ef9e2d6d86 100644 --- a/thirdparty/tsl/robin_hash.h +++ b/thirdparty/tsl/robin_hash.h @@ -357,11 +357,7 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { "GrowthPolicy::bucket_for_hash must be noexcept."); static_assert(noexcept(std::declval().clear()), "GrowthPolicy::clear must be noexcept."); - public: - template - class robin_iterator; - using key_type = typename KeySelect::key_type; using value_type = ValueType; using iterator_value_type = IteratorValueType; @@ -374,8 +370,7 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { using const_reference = const value_type&; using pointer = value_type*; using const_pointer = const value_type*; - using iterator = robin_iterator; - using const_iterator = robin_iterator; + private: /** @@ -387,11 +382,9 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { StoreHash || ((sizeof(tsl::detail_robin_hash::bucket_entry) == sizeof(tsl::detail_robin_hash::bucket_entry)) && - (sizeof(std::size_t) == sizeof(truncated_hash_type) || - is_power_of_two_policy::value) && + (sizeof(std::size_t) == sizeof(truncated_hash_type) || is_power_of_two_policy::value) && // Don't store the hash for primitive types with default hash. - (!std::is_arithmetic::value || - !std::is_same>::value)); + (!std::is_arithmetic::value || !std::is_same>::value)); /** * Only use the stored hash on lookup if we are explicitly asked. We are not @@ -406,29 +399,33 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { * power of two modulo, we just mask the least significant bytes, we just have * to check that the truncated_hash_type didn't truncated more bytes. */ - static bool USE_STORED_HASH_ON_REHASH(size_type bucket_count) { - if (STORE_HASH && sizeof(std::size_t) == sizeof(truncated_hash_type)) { - TSL_RH_UNUSED(bucket_count); - return true; - } else if (STORE_HASH && is_power_of_two_policy::value) { - tsl_rh_assert(bucket_count > 0); - return (bucket_count - 1) <= - (std::numeric_limits::max)(); - } else { - TSL_RH_UNUSED(bucket_count); - return false; - } + static bool USE_STORED_HASH_ON_REHASH(size_type bucket_count) + { + if (STORE_HASH && sizeof(std::size_t) == sizeof(truncated_hash_type)) + { + TSL_RH_UNUSED(bucket_count); + return true; + } + else if (STORE_HASH && is_power_of_two_policy::value) + { + tsl_rh_assert(bucket_count > 0); + return (bucket_count - 1) <= (std::numeric_limits::max)(); + } + else + { + TSL_RH_UNUSED(bucket_count); + return false; + } } +public: using bucket_entry = tsl::detail_robin_hash::bucket_entry; using distance_type = typename bucket_entry::distance_type; - using buckets_allocator = typename std::allocator_traits< - allocator_type>::template rebind_alloc; + using buckets_allocator = typename std::allocator_traits::template rebind_alloc; using buckets_container_type = std::vector; - public: /** * The 'operator*()' and 'operator->()' methods return a const reference and * const pointer respectively to the stored value type. @@ -440,155 +437,156 @@ class robin_hash : private Hash, private KeyEqual, private GrowthPolicy { * instead of a `const std::pair&`, the user may modify the key which * will put the map in a undefined state. */ - template <> - class robin_iterator { - friend class robin_hash; - - private: - using bucket_entry_ptr = typename std::conditional::type; + class robin_iterator + { + friend class robin_hash; - robin_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} + private: + using bucket_entry_ptr = typename std::conditional::type; - public: - using iterator_category = std::forward_iterator_tag; - using value_type = typename robin_hash::iterator_value_type; - using difference_type = std::ptrdiff_t; - using reference = value_type&; - using pointer = value_type*; + robin_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} - robin_iterator() noexcept {} + public: + using iterator_category = std::forward_iterator_tag; + using value_type = typename robin_hash::iterator_value_type; + using difference_type = std::ptrdiff_t; + using reference = value_type&; + using pointer = value_type*; - robin_iterator(const robin_iterator& other) = default; - robin_iterator(robin_iterator&& other) = default; - robin_iterator& operator=(const robin_iterator& other) = default; - robin_iterator& operator=(robin_iterator&& other) = default; + robin_iterator() noexcept {} - const typename robin_hash::key_type& key() const { return KeySelect()(m_bucket->value()); } + robin_iterator(const robin_iterator& other) = default; + robin_iterator(robin_iterator&& other) = default; + robin_iterator& operator=(const robin_iterator& other) = default; + robin_iterator& operator=(robin_iterator&& other) = default; - template ::value>::type* = nullptr> - typename U::value_type& value() const - { - return U()(m_bucket->value()); - } + const typename robin_hash::key_type& key() const { return KeySelect()(m_bucket->value()); } - reference operator*() const { return *reinterpret_cast(std::addressof(m_bucket->value())); } + template ::value>::type* = nullptr> + typename U::value_type& value() const + { + return U()(m_bucket->value()); + } - pointer operator->() const { return reinterpret_cast(std::addressof(m_bucket->value())); } + reference operator*() const { return *reinterpret_cast(std::addressof(m_bucket->value())); } - robin_iterator& operator++() - { - while (true) - { - if (m_bucket->last_bucket()) - { - ++m_bucket; - return *this; - } + pointer operator->() const { return reinterpret_cast(std::addressof(m_bucket->value())); } - ++m_bucket; - if (!m_bucket->empty()) - { - return *this; - } - } - } + robin_iterator& operator++() + { + while (true) + { + if (m_bucket->last_bucket()) + { + ++m_bucket; + return *this; + } - robin_iterator operator++(int) - { - robin_iterator tmp(*this); - ++*this; + ++m_bucket; + if (!m_bucket->empty()) + { + return *this; + } + } + } - return tmp; - } + robin_iterator operator++(int) + { + robin_iterator tmp(*this); + ++*this; - friend bool operator==(const robin_iterator& lhs, const robin_iterator& rhs) { return lhs.m_bucket == rhs.m_bucket; } + return tmp; + } - friend bool operator!=(const robin_iterator& lhs, const robin_iterator& rhs) { return !(lhs == rhs); } + friend bool operator==(const robin_iterator& lhs, const robin_iterator& rhs) + { + return lhs.m_bucket == rhs.m_bucket; + } - private: - bucket_entry_ptr m_bucket; - }; + friend bool operator!=(const robin_iterator& lhs, const robin_iterator& rhs) { return !(lhs == rhs); } + private: + bucket_entry_ptr m_bucket; + }; - template <> - class robin_iterator { - friend class robin_hash; + class robin_const_iterator + { + friend class robin_hash; - private: - using bucket_entry_ptr = - typename std::conditional::type; + private: + using bucket_entry_ptr = typename std::conditional::type; - robin_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} + robin_const_iterator(bucket_entry_ptr bucket) noexcept : m_bucket(bucket) {} - public: - using iterator_category = std::forward_iterator_tag; - using value_type = const typename robin_hash::value_type; - using difference_type = std::ptrdiff_t; - using reference = value_type&; - using pointer = value_type*; + public: + using iterator_category = std::forward_iterator_tag; + using value_type = const typename robin_hash::value_type; + using difference_type = std::ptrdiff_t; + using reference = value_type&; + using pointer = value_type*; - robin_iterator() noexcept {} + robin_const_iterator() noexcept {} - // Copy constructor from iterator to const_iterator. - robin_iterator(const robin_iterator& other) noexcept - : m_bucket(other.m_bucket) {} + // Copy constructor from iterator to const_iterator. + robin_const_iterator(const robin_iterator& other) noexcept : m_bucket(other.m_bucket) {} - robin_iterator(const robin_iterator& other) = default; - robin_iterator(robin_iterator&& other) = default; - robin_iterator& operator=(const robin_iterator& other) = default; - robin_iterator& operator=(robin_iterator&& other) = default; + robin_const_iterator(const robin_const_iterator& other) = default; + robin_const_iterator(robin_const_iterator&& other) = default; + robin_const_iterator& operator=(const robin_const_iterator& other) = default; + robin_const_iterator& operator=(robin_const_iterator&& other) = default; - const typename robin_hash::key_type& key() const { - return KeySelect()(m_bucket->value()); - } + const typename robin_hash::key_type& key() const { return KeySelect()(m_bucket->value()); } - template ::value>::type* = nullptr> - const typename U::value_type& value() const { - return U()(m_bucket->value()); - } + template ::value>::type* = nullptr> + const typename U::value_type& value() const + { + return U()(m_bucket->value()); + } - reference operator*() const { return m_bucket->value(); } + reference operator*() const { return m_bucket->value(); } - pointer operator->() const { return std::addressof(m_bucket->value()); } + pointer operator->() const { return std::addressof(m_bucket->value()); } - robin_iterator& operator++() { - while (true) { - if (m_bucket->last_bucket()) { - ++m_bucket; - return *this; - } + robin_const_iterator& operator++() + { + while (true) + { + if (m_bucket->last_bucket()) + { + ++m_bucket; + return *this; + } - ++m_bucket; - if (!m_bucket->empty()) { - return *this; - } + ++m_bucket; + if (!m_bucket->empty()) + { + return *this; + } + } } - } - robin_iterator operator++(int) { - robin_iterator tmp(*this); - ++*this; + robin_const_iterator operator++(int) + { + robin_iterator tmp(*this); + ++*this; - return tmp; - } + return tmp; + } - friend bool operator==(const robin_iterator& lhs, - const robin_iterator& rhs) { - return lhs.m_bucket == rhs.m_bucket; - } + friend bool operator==(const robin_const_iterator& lhs, const robin_const_iterator& rhs) + { + return lhs.m_bucket == rhs.m_bucket; + } - friend bool operator!=(const robin_iterator& lhs, - const robin_iterator& rhs) { - return !(lhs == rhs); - } + friend bool operator!=(const robin_const_iterator& lhs, const robin_const_iterator& rhs) { return !(lhs == rhs); } - private: - bucket_entry_ptr m_bucket; + private: + bucket_entry_ptr m_bucket; }; + using iterator = robin_iterator; + using const_iterator = robin_const_iterator; + public: #if defined(__cplusplus) && __cplusplus >= 201402L robin_hash(size_type bucket_count, const Hash& hash, const KeyEqual& equal, From 7cdfcafd2a8aa5ed2373b1c52b25324cc218816c Mon Sep 17 00:00:00 2001 From: halx99 Date: Mon, 27 Dec 2021 19:18:36 +0800 Subject: [PATCH 04/58] string_view for android --- cocos/3d/CCMesh.cpp | 2 +- cocos/3d/CCSprite3DMaterial.cpp | 2 +- cocos/3d/CCVertexAttribBinding.cpp | 3 +- cocos/base/CCController-android.cpp | 6 +- cocos/network/HttpClient.cpp | 2 +- cocos/platform/CCFileUtils.cpp | 42 ++++++++------ cocos/platform/CCPosixFileStream.h | 2 +- .../android/CCApplication-android.cpp | 10 ++-- cocos/platform/android/CCCommon-android.cpp | 2 +- cocos/platform/android/CCDevice-android.cpp | 14 ++--- .../platform/android/CCFileUtils-android.cpp | 31 ++++++---- .../platform/android/CCGLViewImpl-android.cpp | 14 ++--- .../Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp | 6 +- .../Java_org_cocos2dx_lib_Cocos2dxHelper.cpp | 10 ++-- cocos/platform/android/jni/JniHelper.cpp | 9 ++- cocos/platform/android/jni/JniHelper.h | 22 ++++--- cocos/renderer/CCTexture2D.cpp | 2 +- cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp | 34 +++++------ cocos/ui/UIVideoPlayer-android.cpp | 36 ++++++------ cocos/ui/UIWebView/UIWebViewImpl-android.cpp | 58 +++++++++---------- cocos/ui/UIWebView/UIWebViewImpl-android.h | 2 + 21 files changed, 167 insertions(+), 142 deletions(-) diff --git a/cocos/3d/CCMesh.cpp b/cocos/3d/CCMesh.cpp index 31aa63a01611..3a2478849907 100644 --- a/cocos/3d/CCMesh.cpp +++ b/cocos/3d/CCMesh.cpp @@ -350,7 +350,7 @@ void Mesh::setMaterial(Material* material) if (_material->getTechnique()->getName().compare(technique->getName()) == 0) { auto program = pass->getProgramState()->getProgram(); - auto& attributes = program->getActiveAttributes(); + auto attributes = program->getActiveAttributes(); auto meshVertexData = _meshIndexData->getMeshVertexData(); auto attributeCount = meshVertexData->getMeshVertexAttribCount(); CCASSERT(attributes.size() <= attributeCount, "missing attribute data"); diff --git a/cocos/3d/CCSprite3DMaterial.cpp b/cocos/3d/CCSprite3DMaterial.cpp index 7181b6bfc49e..1c109af5bbf0 100644 --- a/cocos/3d/CCSprite3DMaterial.cpp +++ b/cocos/3d/CCSprite3DMaterial.cpp @@ -337,7 +337,7 @@ void Sprite3DMaterialCache::removeAllSprite3DMaterial() { for (auto& itr : _materials) { - CC_SAFE_RELEASE_NULL(const_cast(itr.second)); + CC_SAFE_RELEASE_NULL(itr.second); } _materials.clear(); } diff --git a/cocos/3d/CCVertexAttribBinding.cpp b/cocos/3d/CCVertexAttribBinding.cpp index 761a061dd8fd..e101fd2e7ccf 100644 --- a/cocos/3d/CCVertexAttribBinding.cpp +++ b/cocos/3d/CCVertexAttribBinding.cpp @@ -123,8 +123,7 @@ void VertexAttribBinding::parseAttributes() _vertexAttribsFlags = 0; auto program = _programState->getProgram(); - auto& attributes = program->getActiveAttributes(); - _attributes = attributes; + _attributes = program->getActiveAttributes(); } bool VertexAttribBinding::hasAttribute(const shaderinfos::VertexKey& key) const diff --git a/cocos/base/CCController-android.cpp b/cocos/base/CCController-android.cpp index ba8da87ab5a9..983b60bcf3a6 100644 --- a/cocos/base/CCController-android.cpp +++ b/cocos/base/CCController-android.cpp @@ -53,7 +53,7 @@ class ControllerImpl static void onConnected(std::string_view deviceName, int deviceId) { // Check whether the controller is already connected. - CCLOG("onConnected %s,%d", deviceName.c_str(), deviceId); + CCLOG("onConnected %s,%d", deviceName.data(), deviceId); auto iter = findController(deviceName, deviceId); if (iter != Controller::s_allController.end()) @@ -70,7 +70,7 @@ class ControllerImpl static void onDisconnected(std::string_view deviceName, int deviceId) { - CCLOG("onDisconnected %s,%d", deviceName.c_str(), deviceId); + CCLOG("onDisconnected %s,%d", deviceName.data(), deviceId); auto iter = findController(deviceName, deviceId); if (iter == Controller::s_allController.end()) @@ -159,7 +159,7 @@ Controller::Controller() void Controller::receiveExternalKeyEvent(int externalKeyCode, bool receive) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.GameControllerHelper", "receiveExternalKeyEvent", _deviceId, + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.GameControllerHelper"sv, "receiveExternalKeyEvent"sv, _deviceId, externalKeyCode, receive); } diff --git a/cocos/network/HttpClient.cpp b/cocos/network/HttpClient.cpp index 81b6dcfc5e29..6c54503bd76c 100644 --- a/cocos/network/HttpClient.cpp +++ b/cocos/network/HttpClient.cpp @@ -292,7 +292,7 @@ void HttpClient::handleNetworkEvent(yasio::io_event* event) obs.write_bytes(uri.getPath()); if (!usePostData) { - auto& query = uri.getQuery(); + auto query = uri.getQuery(); if (!query.empty()) { obs.write_byte('?'); diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index b86ec0fc8bb2..2efadeb57e01 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -1206,7 +1206,7 @@ void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector dirs; if (found != std::string::npos) @@ -1232,14 +1232,14 @@ bool FileUtils::createDirectory(std::string_view path) const { subpath = path.substr(start, found - start + 1); if (!subpath.empty()) - dirs.push_back(subpath); + dirs.push_back(std::string{subpath}); start = found + 1; found = path.find_first_of("/\\", start); if (found == std::string::npos) { if (start < path.length()) { - dirs.push_back(path.substr(start)); + dirs.push_back(std::string{path.substr(start)}); } break; } @@ -1249,17 +1249,17 @@ bool FileUtils::createDirectory(std::string_view path) const DIR* dir = NULL; // Create path recursively - subpath = ""; + std::string strSubpath; for (const auto& iter : dirs) { - subpath += iter; - dir = opendir(subpath.c_str()); + strSubpath += iter; + dir = opendir(strSubpath.c_str()); if (!dir) { // directory doesn't exist, should create a new one - int ret = mkdir(subpath.c_str(), S_IRWXU | S_IRWXG | S_IRWXO); + int ret = mkdir(strSubpath.c_str(), S_IRWXU | S_IRWXG | S_IRWXO); if (ret != 0 && (errno != EEXIST)) { // current directory can not be created, sub directories can not be created too @@ -1296,14 +1296,14 @@ bool FileUtils::removeDirectory(std::string_view path) const # if !defined(CC_TARGET_OS_TVOS) # if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) - if (nftw(path.c_str(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS) == -1) + if (nftw(path.data(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS) == -1) return false; else return true; # else - std::string command = "rm -r "; + std::string command = "rm -r \""s; // Path may include space. - command += "\"" + path + "\""; + command.append(path).append("\"", 1); if (system(command.c_str()) >= 0) return true; else @@ -1317,7 +1317,7 @@ bool FileUtils::removeDirectory(std::string_view path) const bool FileUtils::removeFile(std::string_view path) const { - if (remove(path.c_str())) + if (remove(path.data())) { return false; } @@ -1332,11 +1332,11 @@ bool FileUtils::renameFile(std::string_view oldfullpath, std::string_view newful CCASSERT(!oldfullpath.empty(), "Invalid path"); CCASSERT(!newfullpath.empty(), "Invalid path"); - int errorCode = rename(oldfullpath.c_str(), newfullpath.c_str()); + int errorCode = rename(oldfullpath.data(), newfullpath.data()); if (0 != errorCode) { - CCLOGERROR("Fail to rename file %s to %s !Error code is %d", oldfullpath.c_str(), newfullpath.c_str(), + CCLOGERROR("Fail to rename file %s to %s !Error code is %d", oldfullpath.data(), newfullpath.data(), errorCode); return false; } @@ -1346,8 +1346,10 @@ bool FileUtils::renameFile(std::string_view oldfullpath, std::string_view newful bool FileUtils::renameFile(std::string_view path, std::string_view oldname, std::string_view name) const { CCASSERT(!path.empty(), "Invalid path"); - std::string oldPath = path + oldname; - std::string newPath = path + name; + std::string oldPath{path}; + oldPath += oldname; + std::string newPath{path}; + newPath += name; return this->renameFile(oldPath, newPath); } @@ -1356,17 +1358,21 @@ int64_t FileUtils::getFileSize(std::string_view filepath) const { CCASSERT(!filepath.empty(), "Invalid path"); - std::string fullpath = filepath; + std::string_view path; + std::string fullpath; if (!isAbsolutePath(filepath)) { fullpath = fullPathForFilename(filepath); if (fullpath.empty()) return 0; + path = fullpath; } + else + path = filepath; struct stat info; // Get data associated with "crt_stat.c": - int result = ::stat(fullpath.c_str(), &info); + int result = ::stat(path.data(), &info); // Check if statistics are valid: if (result != 0) diff --git a/cocos/platform/CCPosixFileStream.h b/cocos/platform/CCPosixFileStream.h index 46504a15a476..02b668a616ce 100644 --- a/cocos/platform/CCPosixFileStream.h +++ b/cocos/platform/CCPosixFileStream.h @@ -54,7 +54,7 @@ # define O_APPEND_FLAGS O_APPEND | O_CREAT | O_RDWR, S_IRWXU # define O_OVERLAP_FLAGS O_CREAT | O_RDWR, S_IRWXU -# define posix_open_cxx(path, ...) ::open(path.c_str(), ##__VA_ARGS__) +# define posix_open_cxx(path, ...) ::open(path.data(), ##__VA_ARGS__) # define posix_open ::open # define posix_close ::close # define posix_lseek ::lseek diff --git a/cocos/platform/android/CCApplication-android.cpp b/cocos/platform/android/CCApplication-android.cpp index 7c1f36e81139..4464e487c602 100644 --- a/cocos/platform/android/CCApplication-android.cpp +++ b/cocos/platform/android/CCApplication-android.cpp @@ -43,7 +43,7 @@ extern "C" size_t __ctype_get_mb_cur_max(void) } #endif -static const std::string helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"; +static constexpr std::string_view helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"sv; NS_CC_BEGIN @@ -75,7 +75,7 @@ int Application::run() void Application::setAnimationInterval(float interval) { - JniHelper::callStaticVoidMethod("org/cocos2dx/lib/Cocos2dxRenderer", "setAnimationInterval", interval); + JniHelper::callStaticVoidMethod("org/cocos2dx/lib/Cocos2dxRenderer"sv, "setAnimationInterval"sv, interval); } ////////////////////////////////////////////////////////////////////////// @@ -96,7 +96,7 @@ Application* Application::sharedApplication() const char* Application::getCurrentLanguageCode() { static char code[3] = {0}; - std::string language = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage"); + std::string language = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage"sv); strncpy(code, language.c_str(), 2); code[2] = '\0'; return code; @@ -116,12 +116,12 @@ Application::Platform Application::getTargetPlatform() std::string Application::getVersion() { - return JniHelper::callStaticStringMethod(helperClassName, "getVersion"); + return JniHelper::callStaticStringMethod(helperClassName, "getVersion"sv); } bool Application::openURL(std::string_view url) { - return JniHelper::callStaticBooleanMethod(helperClassName, "openURL", url); + return JniHelper::callStaticBooleanMethod(helperClassName, "openURL"sv, url); } void Application::applicationScreenSizeChanged(int newWidth, int newHeight) {} diff --git a/cocos/platform/android/CCCommon-android.cpp b/cocos/platform/android/CCCommon-android.cpp index 4dda378de29c..e7b99340a190 100644 --- a/cocos/platform/android/CCCommon-android.cpp +++ b/cocos/platform/android/CCCommon-android.cpp @@ -35,7 +35,7 @@ NS_CC_BEGIN void ccMessageBox(const char* pszMsg, const char* pszTitle) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper", "showDialog", pszTitle, pszMsg); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "showDialog"sv, pszTitle, pszMsg); } void LuaLog(const char* pszFormat) diff --git a/cocos/platform/android/CCDevice-android.cpp b/cocos/platform/android/CCDevice-android.cpp index ebfda66eb062..be9042b3e017 100644 --- a/cocos/platform/android/CCDevice-android.cpp +++ b/cocos/platform/android/CCDevice-android.cpp @@ -33,7 +33,7 @@ THE SOFTWARE. #include "platform/CCFileUtils.h" #include "yasio/cxx17/string_view.hpp" -static const std::string helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"; +static constexpr std::string_view helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"sv; NS_CC_BEGIN @@ -42,7 +42,7 @@ int Device::getDPI() static int dpi = -1; if (dpi == -1) { - dpi = JniHelper::callStaticIntMethod(helperClassName, "getDPI"); + dpi = JniHelper::callStaticIntMethod(helperClassName, "getDPI"sv); } return dpi; } @@ -51,17 +51,17 @@ void Device::setAccelerometerEnabled(bool isEnabled) { if (isEnabled) { - JniHelper::callStaticVoidMethod(helperClassName, "enableAccelerometer"); + JniHelper::callStaticVoidMethod(helperClassName, "enableAccelerometer"sv); } else { - JniHelper::callStaticVoidMethod(helperClassName, "disableAccelerometer"); + JniHelper::callStaticVoidMethod(helperClassName, "disableAccelerometer"sv); } } void Device::setAccelerometerInterval(float interval) { - JniHelper::callStaticVoidMethod(helperClassName, "setAccelerometerInterval", interval); + JniHelper::callStaticVoidMethod(helperClassName, "setAccelerometerInterval"sv, interval); } class BitmapDC @@ -176,12 +176,12 @@ Data Device::getTextureDataForText(const char* text, void Device::setKeepScreenOn(bool value) { - JniHelper::callStaticVoidMethod(helperClassName, "setKeepScreenOn", value); + JniHelper::callStaticVoidMethod(helperClassName, "setKeepScreenOn"sv, value); } void Device::vibrate(float duration) { - JniHelper::callStaticVoidMethod(helperClassName, "vibrate", duration); + JniHelper::callStaticVoidMethod(helperClassName, "vibrate"sv, duration); } NS_CC_END diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index 7b4647f4c6ce..18e6958e6b1c 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -36,6 +36,8 @@ THE SOFTWARE. #include #include +#include "yasio/cxx17/string_view.hpp" + #define LOG_TAG "CCFileUtils-android.cpp" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) @@ -171,7 +173,7 @@ bool FileUtilsAndroid::isFileExistInternal(std::string_view strFilePath) const // Check whether file exists in apk. if (strFilePath[0] != '/') { - const char* s = strFilePath.c_str(); + const char* s = strFilePath.data(); // Found "assets/" at the beginning of the path and we don't want it if (strFilePath.find(_defaultResRootPath) == 0) @@ -198,7 +200,7 @@ bool FileUtilsAndroid::isFileExistInternal(std::string_view strFilePath) const else { struct stat st; - if (::stat(strFilePath.c_str(), &st) == 0) + if (::stat(strFilePath.data(), &st) == 0) bFound = S_ISREG(st.st_mode); } return bFound; @@ -211,13 +213,17 @@ bool FileUtilsAndroid::isDirectoryExistInternal(std::string_view dirPath) const return false; } - std::string dirPathCopy = dirPath; - if (dirPathCopy[dirPathCopy.length() - 1] == '/') + std::string_view path; + std::string dirPathCopy; + if (dirPath[dirPath.length() - 1] == '/') { - dirPathCopy.erase(dirPathCopy.length() - 1); + dirPathCopy.assign(dirPath.data(), dirPath.length() - 1); + path = dirPathCopy; } + else + path = dirPath; - const char* s = dirPathCopy.c_str(); + const char* s = path.data(); // find absolute path in flash memory if (s[0] == '/') @@ -275,13 +281,16 @@ int64_t FileUtilsAndroid::getFileSize(std::string_view filepath) const if (FileUtilsAndroid::assetmanager) { - string relativePath = filepath; - if (filepath.find(_defaultResRootPath) == 0) + std::string_view path; + std::string relativePath; + if (cxx20::starts_with(filepath, _defaultResRootPath)) { - relativePath = filepath.substr(_defaultResRootPath.size()); + path = relativePath = filepath.substr(_defaultResRootPath.size()); } + else + path = filepath; - AAsset* asset = AAssetManager_open(FileUtilsAndroid::assetmanager, relativePath.data(), AASSET_MODE_UNKNOWN); + AAsset* asset = AAssetManager_open(FileUtilsAndroid::assetmanager, path.data(), AASSET_MODE_UNKNOWN); if (asset) { size = AAsset_getLength(asset); @@ -414,7 +423,7 @@ std::string FileUtilsAndroid::getNativeWritableAbsolutePath() const { // Fix for Nexus 10 (Android 4.2 multi-user environment) // the path is retrieved through Java Context.getCacheDir() method - std::string path = JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper", "getCocos2dxWritablePath"); + std::string path = JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "getCocos2dxWritablePath"sv); if (!path.empty()) path.append("/"); diff --git a/cocos/platform/android/CCGLViewImpl-android.cpp b/cocos/platform/android/CCGLViewImpl-android.cpp index 8a0ff6eb3c6b..79a2be88241d 100644 --- a/cocos/platform/android/CCGLViewImpl-android.cpp +++ b/cocos/platform/android/CCGLViewImpl-android.cpp @@ -110,7 +110,7 @@ bool GLViewImpl::isOpenGLReady() void GLViewImpl::end() { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper", "terminateProcess"); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "terminateProcess"sv); } void GLViewImpl::swapBuffers() {} @@ -119,11 +119,11 @@ void GLViewImpl::setIMEKeyboardState(bool bOpen) { if (bOpen) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView", "openIMEKeyboard"); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView"sv, "openIMEKeyboard"sv); } else { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView", "closeIMEKeyboard"); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView"sv, "closeIMEKeyboard"sv); } } @@ -143,9 +143,9 @@ Rect GLViewImpl::getSafeAreaRect() const float marginX = DEFAULT_MARGIN_ANDROID / _scaleX; float marginY = DEFAULT_MARGIN_ANDROID / _scaleY; - bool isScreenRound = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "isScreenRound"); - bool hasSoftKeys = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "hasSoftKeys"); - bool isCutoutEnabled = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "isCutoutEnabled"); + bool isScreenRound = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "isScreenRound"sv); + bool hasSoftKeys = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "hasSoftKeys"sv); + bool isCutoutEnabled = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "isCutoutEnabled"sv); if (isScreenRound) { @@ -204,7 +204,7 @@ Rect GLViewImpl::getSafeAreaRect() const { // screen with enabled cutout area (ex. Google Pixel 3 XL, Huawei P20, Asus ZenFone 5, etc) static int* safeInsets = - JniHelper::callStaticIntArrayMethod("org/cocos2dx/lib/Cocos2dxHelper", "getSafeInsets"); + JniHelper::callStaticIntArrayMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "getSafeInsets"sv); if (safeInsets != nullptr) { float safeInsetBottom = safeInsets[0] / _scaleY; diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp index f89188ceb427..70a45a07bbc9 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp @@ -31,16 +31,16 @@ THE SOFTWARE. #include "platform/CCFileUtils.h" #include "base/ccUTF8.h" -static const std::string className = "org.cocos2dx.lib.Cocos2dxBitmap"; +static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxBitmap"sv; using namespace cocos2d; int getFontSizeAccordingHeightJni(int height) { - return JniHelper::callStaticIntMethod(className, "getFontSizeAccordingHeight", height); + return JniHelper::callStaticIntMethod(className, "getFontSizeAccordingHeight"sv, height); } std::string getStringWithEllipsisJni(const char* text, float width, float fontSize) { - return JniHelper::callStaticStringMethod(className, "getStringWithEllipsis", text, width, fontSize); + return JniHelper::callStaticStringMethod(className, "getStringWithEllipsis"sv, text, width, fontSize); } diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp index 0592dc404412..e8e6cb4a2700 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp @@ -37,7 +37,7 @@ THE SOFTWARE. #define LOG_TAG "Java_org_cocos2dx_lib_Cocos2dxHelper.cpp" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -static const std::string className = "org.cocos2dx.lib.Cocos2dxHelper"; +static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxHelper"sv; static EditTextCallback s_editTextCallback = nullptr; static void* s_ctx = nullptr; @@ -126,7 +126,7 @@ const char* getApkPath() { if (g_apkPath.empty()) { - g_apkPath = JniHelper::callStaticStringMethod(className, "getAssetsPath"); + g_apkPath = JniHelper::callStaticStringMethod(className, "getAssetsPath"sv); } return g_apkPath.c_str(); @@ -134,7 +134,7 @@ const char* getApkPath() std::string getPackageNameJNI() { - return JniHelper::callStaticStringMethod(className, "getCocos2dxPackageName"); + return JniHelper::callStaticStringMethod(className, "getCocos2dxPackageName"sv); } int getObbAssetFileDescriptorJNI(const char* path, int64_t* startOffset, int64_t* size) @@ -142,7 +142,7 @@ int getObbAssetFileDescriptorJNI(const char* path, int64_t* startOffset, int64_t JniMethodInfo methodInfo; int fd = 0; - if (JniHelper::getStaticMethodInfo(methodInfo, className.c_str(), "getObbAssetFileDescriptor", + if (JniHelper::getStaticMethodInfo(methodInfo, className.data(), "getObbAssetFileDescriptor", "(Ljava/lang/String;)[J")) { jstring stringArg = methodInfo.env->NewStringUTF(path); @@ -181,7 +181,7 @@ void conversionEncodingJNI(const char* src, int byteSize, const char* fromCharse { JniMethodInfo methodInfo; - if (JniHelper::getStaticMethodInfo(methodInfo, className.c_str(), "conversionEncoding", + if (JniHelper::getStaticMethodInfo(methodInfo, className.data(), "conversionEncoding", "([BLjava/lang/String;Ljava/lang/String;)[B")) { jbyteArray strArray = methodInfo.env->NewByteArray(byteSize); diff --git a/cocos/platform/android/jni/JniHelper.cpp b/cocos/platform/android/jni/JniHelper.cpp index 248f0c23cde8..b75845c64c74 100644 --- a/cocos/platform/android/jni/JniHelper.cpp +++ b/cocos/platform/android/jni/JniHelper.cpp @@ -320,6 +320,11 @@ jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t } jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, std::string_view x) +{ + return convert(localRefs, t, x.data()); +} + +jstring JniHelper::convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, const std::string& x) { return convert(localRefs, t, x.c_str()); } @@ -340,8 +345,8 @@ void JniHelper::deleteLocalRefs(JNIEnv* env, LocalRefMapType& localRefs) void JniHelper::reportError(std::string_view className, std::string_view methodName, std::string_view signature) { - LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className.c_str(), - methodName.c_str(), signature.c_str()); + LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className.data(), + methodName.data(), signature.data()); } } // namespace cocos2d diff --git a/cocos/platform/android/jni/JniHelper.h b/cocos/platform/android/jni/JniHelper.h index 52dcc2b3e394..d473fb9ffb7b 100644 --- a/cocos/platform/android/jni/JniHelper.h +++ b/cocos/platform/android/jni/JniHelper.h @@ -78,7 +78,7 @@ class CC_DLL JniHelper { cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")V"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; t.env->CallStaticVoidMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -101,7 +101,7 @@ class CC_DLL JniHelper jboolean jret = JNI_FALSE; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")Z"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; jret = t.env->CallStaticBooleanMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -125,7 +125,7 @@ class CC_DLL JniHelper jint ret = 0; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")I"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; ret = t.env->CallStaticIntMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -149,7 +149,7 @@ class CC_DLL JniHelper jfloat ret = 0.0; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; ret = t.env->CallStaticFloatMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -173,7 +173,7 @@ class CC_DLL JniHelper static float ret[32]; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; jfloatArray array = @@ -209,7 +209,7 @@ class CC_DLL JniHelper static int ret[32]; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[I"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; jintArray array = @@ -245,7 +245,7 @@ class CC_DLL JniHelper Vec3 ret; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; jfloatArray array = @@ -279,7 +279,7 @@ class CC_DLL JniHelper jdouble ret = 0.0; cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")D"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; ret = t.env->CallStaticDoubleMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -304,7 +304,7 @@ class CC_DLL JniHelper cocos2d::JniMethodInfo t; std::string signature = "(" + std::string(getJNISignature(xs...)) + ")Ljava/lang/String;"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), methodName.c_str(), signature.c_str())) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) { LocalRefMapType localRefs; jstring jret = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -336,6 +336,8 @@ class CC_DLL JniHelper static jstring convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, std::string_view x); + static jstring convert(LocalRefMapType& localRefs, cocos2d::JniMethodInfo& t, const std::string& x); + inline static jint convert(LocalRefMapType&, cocos2d::JniMethodInfo&, int32_t value) { return static_cast(value); @@ -396,6 +398,8 @@ class CC_DLL JniHelper static std::string getJNISignature(const char*) { return "Ljava/lang/String;"; } static std::string getJNISignature(std::string_view) { return "Ljava/lang/String;"; } + + static std::string getJNISignature(const std::string&) { return "Ljava/lang/String;"; } template static std::string getJNISignature(T x) diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index c9209ec6f3a6..46564478a522 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -741,7 +741,7 @@ void Texture2D::initProgram() // setup vertex layout auto vertexLayout = _programState->getVertexLayout(); - auto& attributes = _programState->getProgram()->getActiveAttributes(); + auto attributes = _programState->getProgram()->getActiveAttributes(); auto iter = attributes.find("a_position"); if (iter != attributes.end()) vertexLayout->setAttribute("a_position", iter->second.location, backend::VertexFormat::FLOAT2, 0, false); diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp index 367231058a17..f184ee5919f1 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp @@ -43,7 +43,7 @@ NS_CC_BEGIN -static const std::string editBoxClassName = "org.cocos2dx.lib.Cocos2dxEditBoxHelper"; +static constexpr std::string_view editBoxClassName = "org.cocos2dx.lib.Cocos2dxEditBoxHelper"sv; namespace ui { @@ -90,7 +90,7 @@ EditBoxImplAndroid::EditBoxImplAndroid(EditBox* pEditText) : EditBoxImplCommon(p EditBoxImplAndroid::~EditBoxImplAndroid() { s_allEditBoxes.erase(_editBoxIndex); - JniHelper::callStaticVoidMethod(editBoxClassName, "removeEditBox", _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "removeEditBox"sv, _editBoxIndex); } void EditBoxImplAndroid::createNativeControl(const Rect& frame) @@ -110,7 +110,7 @@ void EditBoxImplAndroid::createNativeControl(const Rect& frame) auto uiWidth = (rightTop.x - leftBottom.x) * glView->getScaleX(); auto uiHeight = (rightTop.y - leftBottom.y) * glView->getScaleY(); LOGD("scaleX = %f", glView->getScaleX()); - _editBoxIndex = JniHelper::callStaticIntMethod(editBoxClassName, "createEditBox", (int)uiLeft, (int)uiTop, + _editBoxIndex = JniHelper::callStaticIntMethod(editBoxClassName, "createEditBox"sv, (int)uiLeft, (int)uiTop, (int)uiWidth, (int)uiHeight, (float)glView->getScaleX()); s_allEditBoxes[_editBoxIndex] = this; } @@ -130,13 +130,13 @@ void EditBoxImplAndroid::setNativeFont(const char* pFontName, int fontSize) realFontPath = realFontPath.substr(sizeof("assets/") - 1); // Chop out the 'assets/' portion of the path. } } - JniHelper::callStaticVoidMethod(editBoxClassName, "setFont", _editBoxIndex, realFontPath, + JniHelper::callStaticVoidMethod(editBoxClassName, "setFont"sv, _editBoxIndex, realFontPath, (float)fontSize * glView->getScaleX()); } void EditBoxImplAndroid::setNativeFontColor(const Color4B& color) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setFontColor", _editBoxIndex, (int)color.r, (int)color.g, + JniHelper::callStaticVoidMethod(editBoxClassName, "setFontColor"sv, _editBoxIndex, (int)color.r, (int)color.g, (int)color.b, (int)color.a); } @@ -147,33 +147,33 @@ void EditBoxImplAndroid::setNativePlaceholderFont(const char* pFontName, int fon void EditBoxImplAndroid::setNativePlaceholderFontColor(const Color4B& color) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderTextColor", _editBoxIndex, (int)color.r, + JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderTextColor"sv, _editBoxIndex, (int)color.r, (int)color.g, (int)color.b, (int)color.a); } void EditBoxImplAndroid::setNativeInputMode(EditBox::InputMode inputMode) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setInputMode", _editBoxIndex, static_cast(inputMode)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setInputMode"sv, _editBoxIndex, static_cast(inputMode)); } void EditBoxImplAndroid::setNativeMaxLength(int maxLength) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setMaxLength", _editBoxIndex, maxLength); + JniHelper::callStaticVoidMethod(editBoxClassName, "setMaxLength"sv, _editBoxIndex, maxLength); } void EditBoxImplAndroid::setNativeInputFlag(EditBox::InputFlag inputFlag) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setInputFlag", _editBoxIndex, static_cast(inputFlag)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setInputFlag"sv, _editBoxIndex, static_cast(inputFlag)); } void EditBoxImplAndroid::setNativeReturnType(EditBox::KeyboardReturnType returnType) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setReturnType", _editBoxIndex, static_cast(returnType)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setReturnType"sv, _editBoxIndex, static_cast(returnType)); } void EditBoxImplAndroid::setNativeTextHorizontalAlignment(cocos2d::TextHAlignment alignment) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setTextHorizontalAlignment", _editBoxIndex, + JniHelper::callStaticVoidMethod(editBoxClassName, "setTextHorizontalAlignment"sv, _editBoxIndex, static_cast(alignment)); } @@ -184,33 +184,33 @@ bool EditBoxImplAndroid::isEditing() void EditBoxImplAndroid::setNativeText(const char* pText) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setText", _editBoxIndex, pText); + JniHelper::callStaticVoidMethod(editBoxClassName, "setText"sv, _editBoxIndex, pText); } void EditBoxImplAndroid::setNativePlaceHolder(const char* pText) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderText", _editBoxIndex, pText); + JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderText"sv, _editBoxIndex, pText); } void EditBoxImplAndroid::setNativeVisible(bool visible) { // don't need to be implemented on android platform. - JniHelper::callStaticVoidMethod(editBoxClassName, "setVisible", _editBoxIndex, visible); + JniHelper::callStaticVoidMethod(editBoxClassName, "setVisible"sv, _editBoxIndex, visible); } void EditBoxImplAndroid::updateNativeFrame(const Rect& rect) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setEditBoxViewRect", _editBoxIndex, (int)rect.origin.x, + JniHelper::callStaticVoidMethod(editBoxClassName, "setEditBoxViewRect"sv, _editBoxIndex, (int)rect.origin.x, (int)rect.origin.y, (int)rect.size.width, (int)rect.size.height); } void EditBoxImplAndroid::nativeOpenKeyboard() { - JniHelper::callStaticVoidMethod(editBoxClassName, "openKeyboard", _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "openKeyboard"sv, _editBoxIndex); } void EditBoxImplAndroid::nativeCloseKeyboard() { - JniHelper::callStaticVoidMethod(editBoxClassName, "closeKeyboard", _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "closeKeyboard"sv, _editBoxIndex); } void editBoxEditingDidBegin(int index) diff --git a/cocos/ui/UIVideoPlayer-android.cpp b/cocos/ui/UIVideoPlayer-android.cpp index b43537e4f05b..c3e1a4563861 100644 --- a/cocos/ui/UIVideoPlayer-android.cpp +++ b/cocos/ui/UIVideoPlayer-android.cpp @@ -38,7 +38,7 @@ //----------------------------------------------------------------------------------------------------------- -static const std::string videoHelperClassName = "org.cocos2dx.lib.Cocos2dxVideoHelper"; +static constexpr std::string_view videoHelperClassName = "org.cocos2dx.lib.Cocos2dxVideoHelper"sv; USING_NS_CC; @@ -60,7 +60,7 @@ int createVideoWidgetJNI() { JniMethodInfo t; int ret = -1; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.c_str(), "createVideoWidget", "()I")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "createVideoWidget", "()I")) { ret = t.env->CallStaticIntMethod(t.classID, t.methodID); @@ -73,7 +73,7 @@ int createVideoWidgetJNI() void setLoopingJNI(int index, bool looping) { JniMethodInfo t; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.c_str(), "setLooping", "(IZ)V")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "setLooping", "(IZ)V")) { t.env->CallStaticVoidMethod(t.classID, t.methodID, index, looping); @@ -84,7 +84,7 @@ void setLoopingJNI(int index, bool looping) void setUserInputEnabledJNI(int index, bool enableInput) { JniMethodInfo t; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.c_str(), "setUserInputEnabled", "(IZ)V")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "setUserInputEnabled", "(IZ)V")) { t.env->CallStaticVoidMethod(t.classID, t.methodID, index, enableInput); @@ -121,14 +121,14 @@ VideoPlayer::VideoPlayer() VideoPlayer::~VideoPlayer() { s_allVideoPlayers.erase(_videoPlayerIndex); - JniHelper::callStaticVoidMethod(videoHelperClassName, "removeVideoWidget", _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "removeVideoWidget"sv, _videoPlayerIndex); } void VideoPlayer::setFileName(std::string_view fileName) { _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); _videoSource = VideoPlayer::Source::FILENAME; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl", _videoPlayerIndex, (int)Source::FILENAME, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl"sv, _videoPlayerIndex, (int)Source::FILENAME, _videoURL); } @@ -136,7 +136,7 @@ void VideoPlayer::setURL(std::string_view videoUrl) { _videoURL = videoUrl; _videoSource = VideoPlayer::Source::URL; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl", _videoPlayerIndex, (int)Source::URL, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl"sv, _videoPlayerIndex, (int)Source::URL, _videoURL); } @@ -164,7 +164,7 @@ void VideoPlayer::draw(Renderer* renderer, const Mat4& transform, uint32_t flags if (flags & FLAGS_TRANSFORM_DIRTY) { auto uiRect = cocos2d::ui::Helper::convertBoundingBoxToScreen(this); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoRect", _videoPlayerIndex, (int)uiRect.origin.x, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoRect"sv, _videoPlayerIndex, (int)uiRect.origin.x, (int)uiRect.origin.y, (int)uiRect.size.width, (int)uiRect.size.height); } @@ -183,7 +183,7 @@ void VideoPlayer::setFullScreenEnabled(bool enabled) _fullScreenEnabled = enabled; auto frameSize = Director::getInstance()->getOpenGLView()->getFrameSize(); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setFullScreenEnabled", _videoPlayerIndex, enabled, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setFullScreenEnabled"sv, _videoPlayerIndex, enabled, (int)frameSize.width, (int)frameSize.height); } } @@ -198,7 +198,7 @@ void VideoPlayer::setKeepAspectRatioEnabled(bool enable) if (_keepAspectRatioEnabled != enable) { _keepAspectRatioEnabled = enable; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoKeepRatioEnabled", _videoPlayerIndex, enable); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoKeepRatioEnabled"sv, _videoPlayerIndex, enable); } } @@ -225,7 +225,7 @@ void VideoPlayer::play() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "startVideo", _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "startVideo"sv, _videoPlayerIndex); } } @@ -233,7 +233,7 @@ void VideoPlayer::pause() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "pauseVideo", _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "pauseVideo"sv, _videoPlayerIndex); } } @@ -241,7 +241,7 @@ void VideoPlayer::resume() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "resumeVideo", _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "resumeVideo"sv, _videoPlayerIndex); } } @@ -249,7 +249,7 @@ void VideoPlayer::stop() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "stopVideo", _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "stopVideo"sv, _videoPlayerIndex); } } @@ -257,7 +257,7 @@ void VideoPlayer::seekTo(float sec) { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "seekVideoTo", _videoPlayerIndex, int(sec * 1000)); + JniHelper::callStaticVoidMethod(videoHelperClassName, "seekVideoTo"sv, _videoPlayerIndex, int(sec * 1000)); } } @@ -282,7 +282,7 @@ void VideoPlayer::setVisible(bool visible) if (!visible || isRunning()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, visible); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, visible); } } @@ -291,14 +291,14 @@ void VideoPlayer::onEnter() Widget::onEnter(); if (isVisible() && !_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, true); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, true); } } void VideoPlayer::onExit() { Widget::onExit(); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, false); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, false); } void VideoPlayer::addEventListener(const VideoPlayer::ccVideoPlayerCallback& callback) diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp index d713947e31f6..511b86aa5d5d 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp @@ -37,12 +37,12 @@ #include "ui/UIHelper.h" #include "yasio/cxx17/string_view.hpp" -static const std::string className = "org.cocos2dx.lib.Cocos2dxWebViewHelper"; +static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxWebViewHelper"sv; #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "", __VA_ARGS__) -static const std::string s_defaultBaseUrl = "file:///android_asset/"; -static const std::string s_sdRootBaseUrl = "file://"; +static constexpr std::string_view s_defaultBaseUrl = "file:///android_asset/"sv; +static constexpr std::string_view s_sdRootBaseUrl = "file://"sv; static std::string getFixedBaseUrl(std::string_view baseUrl) { @@ -55,26 +55,26 @@ static std::string getFixedBaseUrl(std::string_view baseUrl) { fixedBaseUrl = baseUrl; } - else if (baseUrl.c_str()[0] != '/') + else if (baseUrl[0] != '/') { using namespace cxx17; // for cxx17::string_view literal - if (cxx20::starts_with(cxx17::string_view{baseUrl}, "assets/"_sv)) + if (cxx20::starts_with(baseUrl, "assets/"_sv)) { - fixedBaseUrl = s_defaultBaseUrl + baseUrl.c_str()[7]; + fixedBaseUrl.assign(s_defaultBaseUrl).push_back(baseUrl[7]); } else { - fixedBaseUrl = s_defaultBaseUrl + baseUrl; + fixedBaseUrl.assign(s_defaultBaseUrl).append(baseUrl); } } else { - fixedBaseUrl = s_sdRootBaseUrl + baseUrl; + fixedBaseUrl.assign(s_sdRootBaseUrl).append(baseUrl); } if (fixedBaseUrl.c_str()[fixedBaseUrl.length() - 1] != '/') { - fixedBaseUrl += "/"; + fixedBaseUrl.push_back('/'); } return fixedBaseUrl; @@ -155,7 +155,7 @@ namespace int createWebViewJNI() { cocos2d::JniMethodInfo t; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.c_str(), "createWebView", "()I")) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), "createWebView", "()I")) { // LOGD("error: %s,%d",__func__,__LINE__); jint viewTag = t.env->CallStaticIntMethod(t.classID, t.methodID); @@ -209,7 +209,7 @@ WebViewImpl::WebViewImpl(WebView* webView) : _viewTag(-1), _webView(webView) WebViewImpl::~WebViewImpl() { - JniHelper::callStaticVoidMethod(className, "removeWebView", _viewTag); + JniHelper::callStaticVoidMethod(className, "removeWebView"sv, _viewTag); s_WebViewImpls.erase(_viewTag); } @@ -219,13 +219,13 @@ void WebViewImpl::loadData(const Data& data, std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, dataString, MIMEType, encoding, + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, dataString, MIMEType, encoding, baseURL); } void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) { - JniHelper::callStaticVoidMethod(className, "loadHTMLString", _viewTag, string, getFixedBaseUrl(baseURL)); + JniHelper::callStaticVoidMethod(className, "loadHTMLString"sv, _viewTag, string, getFixedBaseUrl(baseURL)); } void WebViewImpl::loadURL(std::string_view url) @@ -235,58 +235,58 @@ void WebViewImpl::loadURL(std::string_view url) void WebViewImpl::loadURL(std::string_view url, bool cleanCachedData) { - JniHelper::callStaticVoidMethod(className, "loadUrl", _viewTag, url, cleanCachedData); + JniHelper::callStaticVoidMethod(className, "loadUrl"sv, _viewTag, url, cleanCachedData); } void WebViewImpl::loadFile(std::string_view fileName) { auto fullPath = getUrlStringByFileName(fileName); - JniHelper::callStaticVoidMethod(className, "loadFile", _viewTag, fullPath); + JniHelper::callStaticVoidMethod(className, "loadFile"sv, _viewTag, fullPath); } void WebViewImpl::stopLoading() { - JniHelper::callStaticVoidMethod(className, "stopLoading", _viewTag); + JniHelper::callStaticVoidMethod(className, "stopLoading"sv, _viewTag); } void WebViewImpl::reload() { - JniHelper::callStaticVoidMethod(className, "reload", _viewTag); + JniHelper::callStaticVoidMethod(className, "reload"sv, _viewTag); } bool WebViewImpl::canGoBack() { - return JniHelper::callStaticBooleanMethod(className, "canGoBack", _viewTag); + return JniHelper::callStaticBooleanMethod(className, "canGoBack"sv, _viewTag); } bool WebViewImpl::canGoForward() { - return JniHelper::callStaticBooleanMethod(className, "canGoForward", _viewTag); + return JniHelper::callStaticBooleanMethod(className, "canGoForward"sv, _viewTag); } void WebViewImpl::goBack() { - JniHelper::callStaticVoidMethod(className, "goBack", _viewTag); + JniHelper::callStaticVoidMethod(className, "goBack"sv, _viewTag); } void WebViewImpl::goForward() { - JniHelper::callStaticVoidMethod(className, "goForward", _viewTag); + JniHelper::callStaticVoidMethod(className, "goForward"sv, _viewTag); } void WebViewImpl::setJavascriptInterfaceScheme(std::string_view scheme) { - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, scheme); + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, scheme); } void WebViewImpl::evaluateJS(std::string_view js) { - JniHelper::callStaticVoidMethod(className, "evaluateJS", _viewTag, js); + JniHelper::callStaticVoidMethod(className, "evaluateJS"sv, _viewTag, js); } void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) { - JniHelper::callStaticVoidMethod(className, "setScalesPageToFit", _viewTag, scalesPageToFit); + JniHelper::callStaticVoidMethod(className, "setScalesPageToFit"sv, _viewTag, scalesPageToFit); } bool WebViewImpl::shouldStartLoading(const int viewTag, std::string_view url) @@ -348,29 +348,29 @@ void WebViewImpl::draw(cocos2d::Renderer* renderer, cocos2d::Mat4 const& transfo if (flags & cocos2d::Node::FLAGS_TRANSFORM_DIRTY) { auto uiRect = cocos2d::ui::Helper::convertBoundingBoxToScreen(_webView); - JniHelper::callStaticVoidMethod(className, "setWebViewRect", _viewTag, (int)uiRect.origin.x, + JniHelper::callStaticVoidMethod(className, "setWebViewRect"sv, _viewTag, (int)uiRect.origin.x, (int)uiRect.origin.y, (int)uiRect.size.width, (int)uiRect.size.height); } } void WebViewImpl::setVisible(bool visible) { - JniHelper::callStaticVoidMethod(className, "setVisible", _viewTag, visible); + JniHelper::callStaticVoidMethod(className, "setVisible"sv, _viewTag, visible); } void WebViewImpl::setOpacityWebView(const float opacity) { - JniHelper::callStaticVoidMethod(className, "setOpacityWebView", _viewTag, opacity); + JniHelper::callStaticVoidMethod(className, "setOpacityWebView"sv, _viewTag, opacity); }; float WebViewImpl::getOpacityWebView() const { - return JniHelper::callStaticFloatMethod(className, "getOpacityWebView", _viewTag); + return JniHelper::callStaticFloatMethod(className, "getOpacityWebView"sv, _viewTag); }; void WebViewImpl::setBackgroundTransparent() { - JniHelper::callStaticVoidMethod(className, "setBackgroundTransparent", _viewTag); + JniHelper::callStaticVoidMethod(className, "setBackgroundTransparent"sv, _viewTag); }; void WebViewImpl::setBounces(bool bounces) diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.h b/cocos/ui/UIWebView/UIWebViewImpl-android.h index 7bebb3ba75e0..9f1a178a5afe 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.h @@ -28,6 +28,8 @@ #include #include +#include +#include namespace cocos2d { From a0761b0a5d1a805f6245e2e39cc6fe54b5a9de8e Mon Sep 17 00:00:00 2001 From: halx99 Date: Mon, 27 Dec 2021 19:24:35 +0800 Subject: [PATCH 05/58] string_view for android --- .../jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp | 2 +- extensions/Particle3D/PU/CCPUMaterialManager.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp index bf9de1f55e3c..ec5960b5694e 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp @@ -84,7 +84,7 @@ JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeDeleteBackwa JNIEXPORT jstring JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeGetContentText(JNIEnv* env, jclass) { - std::string pszText = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText(); + auto pszText = cocos2d::IMEDispatcher::sharedDispatcher()->getContentText(); return cocos2d::StringUtils::newStringUTFJNI(env, pszText); } } diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.cpp b/extensions/Particle3D/PU/CCPUMaterialManager.cpp index 867b66446281..7a0818ce7fd9 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.cpp +++ b/extensions/Particle3D/PU/CCPUMaterialManager.cpp @@ -151,20 +151,21 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) _findclose(handle); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID /* || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX*/) std::string::size_type pos = fileFolder.find("assets/"); - std::string relativePath = fileFolder; + std::string_view relativePath = fileFolder; if (pos != std::string::npos) { // "assets/" is at the beginning of the path and we don't want it relativePath = fileFolder.substr(pos + strlen("assets/")); } - AAssetDir* dir = AAssetManager_openDir(FileUtilsAndroid::getAssetManager(), relativePath.c_str()); + AAssetDir* dir = AAssetManager_openDir(FileUtilsAndroid::getAssetManager(), relativePath.data()); const char* fileName = nullptr; - std::string seg("/"); + std::string_view seg("/",1); + std::string fullpath; while ((fileName = AAssetDir_getNextFileName(dir)) != nullptr) { if (FileUtils::getInstance()->getFileExtension(fileName) == ".material") { - std::string fullpath = fileFolder + seg + std::string(fileName); + fullpath.assign(fileFolder).append(seg).append(fileName); loadMaterials(fullpath); } } From 460498fdbb9b9e35e053cdf545c5679111924d36 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 10:49:14 +0800 Subject: [PATCH 06/58] string_view for osx --- cocos/audio/src/AudioDecoderEXT.mm | 4 +- cocos/renderer/backend/metal/ProgramMTL.h | 4 +- cocos/renderer/backend/metal/ProgramMTL.mm | 8 +-- .../renderer/backend/metal/ShaderModuleMTL.h | 8 +-- .../renderer/backend/metal/ShaderModuleMTL.mm | 10 ++-- cocos/renderer/shaders/label_sdf.frag | 52 +++++++++++++++++++ 6 files changed, 70 insertions(+), 16 deletions(-) create mode 100644 cocos/renderer/shaders/label_sdf.frag diff --git a/cocos/audio/src/AudioDecoderEXT.mm b/cocos/audio/src/AudioDecoderEXT.mm index 3b1a99bc104b..37d068e988ce 100644 --- a/cocos/audio/src/AudioDecoderEXT.mm +++ b/cocos/audio/src/AudioDecoderEXT.mm @@ -54,7 +54,7 @@ of this software and associated documentation files (the "Software"), to deal BREAK_IF_ERR_LOG(fullPath.empty(), "Invalid path!"); _fileStream = cocos2d::FileUtils::getInstance()->openFileStream(fullPath, FileStream::Mode::READ); - BREAK_IF_ERR_LOG(_fileStream == nullptr, "FileUtils::openFileStream FAILED for file: %s", fullPath.c_str()); + BREAK_IF_ERR_LOG(_fileStream == nullptr, "FileUtils::openFileStream FAILED for file: %s", fullPath.data()); if (_fileStream) { _streamSize = _fileStream->size(); // cache the stream size @@ -100,7 +100,7 @@ of this software and associated documentation files (the "Software"), to deal propertySize = sizeof(totalFrames); status = ExtAudioFileGetProperty(_extRef, kExtAudioFileProperty_FileLengthFrames, &propertySize, &totalFrames); BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileGetProperty(kExtAudioFileProperty_FileLengthFrames) FAILED, Error = %d",(int)status); - BREAK_IF_ERR_LOG(totalFrames <= 0, "Total frames is 0, it's an invalid audio file: %s", fullPath.c_str()); + BREAK_IF_ERR_LOG(totalFrames <= 0, "Total frames is 0, it's an invalid audio file: %s", fullPath.data()); _totalFrames = static_cast(totalFrames); _isOpened = true; diff --git a/cocos/renderer/backend/metal/ProgramMTL.h b/cocos/renderer/backend/metal/ProgramMTL.h index 014a37743224..aa92f8aa0568 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.h +++ b/cocos/renderer/backend/metal/ProgramMTL.h @@ -94,7 +94,7 @@ class ProgramMTL : public Program * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - const std::unordered_map getActiveAttributes() const override; + const hlookup::string_map getActiveAttributes() const override; /** * Get maximum vertex location. @@ -127,7 +127,7 @@ class ProgramMTL : public Program * Get all uniformInfos. * @return The uniformInfos. */ - virtual const std::unordered_map& getAllActiveUniformInfo( + virtual const hlookup::string_map& getAllActiveUniformInfo( ShaderStage stage) const override; private: diff --git a/cocos/renderer/backend/metal/ProgramMTL.mm b/cocos/renderer/backend/metal/ProgramMTL.mm index ebf19caa624e..62992aa005eb 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.mm +++ b/cocos/renderer/backend/metal/ProgramMTL.mm @@ -28,14 +28,16 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN namespace { - const std::string metalSpecificDefine = "#define METAL\n"; + constexpr std::string_view metalSpecificDefine = "#define METAL\n"sv; } ProgramMTL::ProgramMTL(std::string_view vertexShader, std::string_view fragmentShader) : Program(vertexShader, fragmentShader) { _vertexShader = static_cast(ShaderCache::newVertexShaderModule(vertexShader)); - _fragmentShader = static_cast(ShaderCache::newFragmentShaderModule(std::move(metalSpecificDefine + fragmentShader))); + std::string combinedSource{metalSpecificDefine}; + combinedSource += fragmentShader; + _fragmentShader = static_cast(ShaderCache::newFragmentShaderModule(std::move(combinedSource))); CC_SAFE_RETAIN(_vertexShader); CC_SAFE_RETAIN(_fragmentShader); @@ -52,7 +54,7 @@ of this software and associated documentation files (the "Software"), to deal return _vertexShader->getAttributeLocation(name); } -int ProgramMTL::getAttributeLocation(const std::string &name) const +int ProgramMTL::getAttributeLocation(std::string_view name) const { return _vertexShader->getAttributeLocation(name); } diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.h b/cocos/renderer/backend/metal/ShaderModuleMTL.h index 274bbffac28b..60fd36ca1726 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.h +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.h @@ -71,7 +71,7 @@ class ShaderModuleMTL : public ShaderModule * Get all uniformInfos. * @return The uniformInfos. */ - inline const std::unordered_map& getAllActiveUniformInfo() const { return _uniformInfos; } + inline const hlookup::string_map& getAllActiveUniformInfo() const { return _uniformInfos; } /** * Get maximum uniform location. @@ -83,7 +83,7 @@ class ShaderModuleMTL : public ShaderModule * Get active attribute informations. * @return Active attribute informations. key is attribute name and Value is corresponding attribute info. */ - inline const std::unordered_map getAttributeInfo() const { return _attributeInfo; } + inline const hlookup::string_map getAttributeInfo() const { return _attributeInfo; } /** * Get uniform location by engine built-in uniform enum name. @@ -128,9 +128,9 @@ class ShaderModuleMTL : public ShaderModule id _mtlFunction = nil; - std::unordered_map _uniformInfos; + hlookup::string_map _uniformInfos; std::unordered_map _activeUniformInfos; - std::unordered_map _attributeInfo; + hlookup::string_map _attributeInfo; int _maxLocation = -1; int _uniformLocation[UNIFORM_MAX]; diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.mm b/cocos/renderer/backend/metal/ShaderModuleMTL.mm index 00782d8eb4b3..10b80a299413 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.mm +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.mm @@ -36,11 +36,11 @@ of this software and associated documentation files (the "Software"), to deal //TODO: don't crreate/destroy ctx every time. glslopt_ctx* ctx = glslopt_initialize(kGlslTargetMetal); glslopt_shader_type shaderType = stage == ShaderStage::VERTEX ? kGlslOptShaderVertex : kGlslOptShaderFragment; - glslopt_shader* glslShader = glslopt_optimize(ctx, shaderType, source.c_str(), 0); + glslopt_shader* glslShader = glslopt_optimize(ctx, shaderType, source.data(), 0); if (!glslShader) { NSLog(@"Can not translate GLSL shader to metal shader:"); - NSLog(@"%s", source.c_str()); + NSLog(@"%s", source.data()); return; } @@ -48,7 +48,7 @@ of this software and associated documentation files (the "Software"), to deal if (!metalShader) { NSLog(@"Can not get metal shader:"); - NSLog(@"%s", source.c_str()); + NSLog(@"%s", source.data()); glslopt_cleanup(ctx); return; } @@ -161,10 +161,10 @@ of this software and associated documentation files (the "Software"), to deal int ShaderModuleMTL::getUniformLocation(std::string_view name) const { - const auto& iter = _uniformInfos.find(name); + auto iter = _uniformInfos.find(name); if(iter != _uniformInfos.end()) { - return _uniformInfos.at(name).location; + return iter->second.location; } else return -1; diff --git a/cocos/renderer/shaders/label_sdf.frag b/cocos/renderer/shaders/label_sdf.frag new file mode 100644 index 000000000000..00d9133694c8 --- /dev/null +++ b/cocos/renderer/shaders/label_sdf.frag @@ -0,0 +1,52 @@ +/**************************************************************************** + Copyright (c) 2018-2019 Xiamen Yaji Software Co., Ltd. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +const char* label_distanceNormal_frag = R"( + +#ifdef GL_ES +precision lowp float; +#endif + +varying vec4 v_fragmentColor; +varying vec2 v_texCoord; + +uniform vec4 u_textColor; +uniform sampler2D u_texture; + +void main() +{ + vec4 color = texture2D(u_texture, v_texCoord); + //the texture use dual channel 16-bit output for distance_map + //float dist = color.b+color.g/256.0; + // the texture use single channel 8-bit output for distance_map + float dist = color.a; + //TODO: Implementation 'fwidth' for glsl 1.0 + float width = fwidth(dist); + //assign width for constant will lead to a little bit fuzzy,it's temporary measure. + //float width = 0.04; + //float width = 1.0/16.0; + float alpha = smoothstep(0.5-width, 0.5+width, dist) * u_textColor.a; + gl_FragColor = v_fragmentColor * vec4(u_textColor.rgb,alpha); +} +)"; From 05b21f335d97f240fce948a056fe722d8bb51572 Mon Sep 17 00:00:00 2001 From: deal Date: Tue, 28 Dec 2021 10:57:56 +0800 Subject: [PATCH 07/58] Update clang-format.yml --- .github/workflows/clang-format.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml index 51ce1bc9a5e7..0f2511e349d6 100644 --- a/.github/workflows/clang-format.yml +++ b/.github/workflows/clang-format.yml @@ -7,7 +7,7 @@ on: # actions run ID description: 'Commit clang-format changes?' # Default value if no value is explicitly provided - default: false + default: 'false' # Input has to be provided for the workflow to run required: false @@ -23,7 +23,7 @@ jobs: with: source: './cocos ./extensions' exclude: './thidrparty ./extensions/fairygui ./extensions/scripting/lua-bindings/auto ./extensions/spine' - extensions: 'h,cpp,c' + extensions: 'h,cpp,c,mm' clangFormatVersion: 13 inplace: True - name: Commit clang-format changes From 9eeeb151a1c3fd1b30c2144753d970b32bfb2df9 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 03:00:34 +0000 Subject: [PATCH 08/58] Committing clang-format changes --- cocos/2d/CCComponentContainer.cpp | 2 +- cocos/2d/CCFontFNT.h | 3 +- cocos/2d/CCLabel.cpp | 5 +- cocos/2d/CCLabel.h | 4 +- cocos/2d/CCLabelTextFormatter.cpp | 4 +- cocos/2d/CCMotionStreak.cpp | 6 +- cocos/2d/CCPlistSpriteSheetLoader.cpp | 6 +- cocos/2d/CCScene.h | 2 +- cocos/2d/CCSpriteFrameCache.cpp | 7 +- cocos/2d/CCSpriteSheetLoader.h | 22 +- cocos/3d/CCAnimate3D.cpp | 4 +- cocos/3d/CCAnimation3D.cpp | 2 +- cocos/3d/CCMotionStreak3D.h | 6 +- cocos/3d/CCSprite3D.h | 5 +- cocos/3d/CCSprite3DMaterial.h | 4 +- cocos/3d/CCTerrain.cpp | 2 +- cocos/3d/CCVertexAttribBinding.cpp | 4 +- cocos/audio/src/AudioDecoderEXT.mm | 329 ++++----- cocos/audio/src/AudioEngineImpl.mm | 2 +- cocos/base/CCConsole.cpp | 7 +- cocos/base/CCConsole.h | 4 +- cocos/base/CCController-apple.mm | 482 +++++++------ cocos/base/CCEventCustom.cpp | 3 +- cocos/base/CCEventDispatcher.cpp | 9 +- cocos/base/CCMap.h | 30 +- cocos/base/CCProperties.cpp | 2 +- cocos/base/ZipUtils.cpp | 4 +- cocos/base/ZipUtils.h | 4 +- cocos/math/CCMathBase.h | 6 +- cocos/network/CCDownloader.h | 5 +- cocos/platform/CCFileUtils.cpp | 11 +- cocos/platform/CCFileUtils.h | 3 +- .../platform/android/CCFileUtils-android.cpp | 3 +- cocos/platform/android/jni/JniHelper.h | 2 +- cocos/platform/apple/CCDevice-apple.mm | 81 ++- cocos/platform/apple/CCFileUtils-apple.mm | 112 +-- .../platform/desktop/CCGLViewImpl-desktop.cpp | 24 +- cocos/platform/ios/CCApplication-ios.mm | 52 +- cocos/platform/ios/CCCommon-ios.mm | 19 +- cocos/platform/ios/CCDevice-ios.mm | 519 +++++++------- cocos/platform/ios/CCDirectorCaller-ios.mm | 66 +- cocos/platform/ios/CCEAGLView-ios.mm | 635 +++++++++-------- cocos/platform/ios/CCGLViewImpl-ios.mm | 109 +-- cocos/platform/ios/CCImage-ios.mm | 72 +- cocos/platform/ios/CCInputView-ios.mm | 137 ++-- cocos/platform/mac/CCApplication-mac.mm | 83 +-- cocos/platform/mac/CCCommon-mac.mm | 12 +- cocos/platform/mac/CCDevice-mac.mm | 420 ++++++----- cocos/platform/mac/CCGLViewImpl-mac.mm | 586 ++++++++-------- cocos/platform/win32/CCFileUtils-win32.cpp | 4 +- cocos/platform/win32/CCFileUtils-win32.h | 4 +- cocos/renderer/CCTexture2D.cpp | 2 +- cocos/renderer/CCTextureCache.cpp | 16 +- cocos/renderer/backend/Program.h | 3 +- cocos/renderer/backend/ProgramState.h | 4 +- cocos/renderer/backend/VertexLayout.cpp | 2 +- cocos/renderer/backend/metal/BufferMTL.mm | 12 +- cocos/renderer/backend/metal/BufferManager.mm | 2 +- .../backend/metal/CommandBufferMTL.mm | 476 +++++++------ .../backend/metal/DepthStencilStateMTL.mm | 168 ++--- cocos/renderer/backend/metal/DeviceInfoMTL.mm | 652 +++++++++--------- cocos/renderer/backend/metal/DeviceMTL.mm | 40 +- cocos/renderer/backend/metal/ProgramMTL.h | 3 +- cocos/renderer/backend/metal/ProgramMTL.mm | 91 +-- .../backend/metal/RenderPipelineMTL.mm | 363 +++++----- .../renderer/backend/metal/RenderTargetMTL.mm | 122 ++-- .../renderer/backend/metal/ShaderModuleMTL.mm | 140 ++-- cocos/renderer/backend/metal/TextureMTL.mm | 277 ++++---- cocos/renderer/backend/metal/UtilsMTL.mm | 182 ++--- cocos/renderer/backend/opengl/ProgramGL.h | 3 +- cocos/ui/UIButton.h | 6 +- cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm | 254 +++---- cocos/ui/UIEditBox/UIEditBox.h | 6 +- cocos/ui/UIEditBox/UIEditBoxImpl-ios.mm | 124 ++-- cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm | 117 ++-- cocos/ui/UIEditBox/iOS/CCUIEditBoxIOS.mm | 412 +++++------ .../UIEditBox/iOS/CCUIMultilineTextField.mm | 80 +-- .../UIEditBox/iOS/CCUISingleLineTextField.mm | 32 +- .../iOS/UITextField+CCUITextInput.mm | 54 +- .../UIEditBox/iOS/UITextView+CCUITextInput.mm | 66 +- cocos/ui/UILayoutManager.cpp | 2 +- cocos/ui/UIPageViewIndicator.h | 3 +- cocos/ui/UIRichText.cpp | 6 +- cocos/ui/UIRichText.h | 44 +- cocos/ui/UISlider.cpp | 4 +- cocos/ui/UISlider.h | 2 +- cocos/ui/UIVideoPlayer-ios.mm | 263 +++---- cocos/ui/UIWebView/UIWebView.h | 6 +- cocos/ui/UIWebView/UIWebView.mm | 8 +- cocos/ui/UIWebView/UIWebViewImpl-android.cpp | 4 +- cocos/ui/UIWebView/UIWebViewImpl-ios.mm | 402 ++++++----- extensions/DragonBones/CCArmatureDisplay.cpp | 3 +- extensions/DragonBones/CCArmatureDisplay.h | 3 +- extensions/DragonBones/CCFactory.h | 4 +- extensions/DragonBones/animation/Animation.h | 2 +- .../DragonBones/factory/BaseFactory.cpp | 2 +- extensions/DragonBones/factory/BaseFactory.h | 6 +- extensions/DragonBones/model/ArmatureData.h | 4 +- .../DragonBones/model/DragonBonesData.h | 5 +- .../DragonBones/model/TextureAtlasData.h | 5 +- .../GUI/CCControlExtension/CCControlButton.h | 4 +- extensions/ImGuiEXT/imgui/imconfig.h | 48 +- extensions/ImGuiEXT/imgui/imgui.cpp | 4 +- extensions/ImGuiEXT/imgui/imgui.h | 6 +- extensions/ImGuiEXT/imgui/imgui_demo.cpp | 2 +- extensions/ImGuiEXT/imgui/imgui_draw.cpp | 2 +- extensions/ImGuiEXT/imgui/imgui_tables.cpp | 2 +- extensions/ImGuiEXT/imgui/imgui_widgets.cpp | 2 +- extensions/Particle3D/PU/CCPUAffector.cpp | 2 +- extensions/Particle3D/PU/CCPUBillboardChain.h | 10 +- extensions/Particle3D/PU/CCPULineEmitter.cpp | 2 +- .../Particle3D/PU/CCPUMaterialManager.cpp | 6 +- .../Particle3D/PU/CCPUMeshSurfaceEmitter.cpp | 13 +- .../Particle3D/PU/CCPUParticleSystem3D.cpp | 2 +- .../PU/CCPUParticleSystem3DTranslator.cpp | 5 +- extensions/Particle3D/PU/CCPURender.cpp | 17 +- extensions/Particle3D/PU/CCPURibbonTrail.h | 8 +- .../Particle3D/PU/CCPURibbonTrailRender.cpp | 4 +- .../Particle3D/PU/CCPUScriptCompiler.cpp | 2 +- .../Particle3D/PU/CCPUScriptTranslator.h | 4 +- .../Particle3D/PU/CCPUVertexEmitter.cpp | 2 +- .../assets-manager/CCEventAssetsManagerEx.h | 8 +- extensions/assets-manager/Manifest.cpp | 10 +- extensions/assets-manager/Manifest.h | 5 +- .../ActionTimeline/CCSkeletonNode.h | 2 +- .../cocostudio/ActionTimeline/CSLoader.cpp | 16 +- extensions/cocostudio/CCActionNode.cpp | 4 +- extensions/cocostudio/CCArmatureAnimation.h | 3 +- .../cocostudio/CCArmatureDataManager.cpp | 8 +- extensions/cocostudio/CCArmatureDataManager.h | 4 +- extensions/cocostudio/CCDataReaderHelper.cpp | 7 +- extensions/cocostudio/CCSGUIReader.cpp | 4 +- extensions/cocostudio/FlatBuffersSerialize.h | 3 +- .../ArmatureNodeReader/ArmatureNodeReader.cpp | 2 +- .../ImageViewReader/ImageViewReader.cpp | 2 +- .../WidgetReader/NodeReaderProtocol.cpp | 6 +- .../TextAtlasReader/TextAtlasReader.cpp | 2 +- .../TextBMFontReader/TextBMFontReader.cpp | 2 +- .../TextFieldReader/TextFieldReader.cpp | 2 +- .../cocostudio/WidgetReader/WidgetReader.cpp | 4 +- .../lua_cocos2dx_coco_studio_manual.cpp | 24 +- .../manual/network/lua_downloader.cpp | 35 +- .../manual/platform/ios/CCLuaObjcBridge.mm | 175 +++-- .../manual/ui/lua_cocos2dx_webview_manual.cpp | 28 +- 144 files changed, 4657 insertions(+), 4262 deletions(-) diff --git a/cocos/2d/CCComponentContainer.cpp b/cocos/2d/CCComponentContainer.cpp index dda4e93b8cd7..456fcb8783fd 100644 --- a/cocos/2d/CCComponentContainer.cpp +++ b/cocos/2d/CCComponentContainer.cpp @@ -60,7 +60,7 @@ bool ComponentContainer::add(Component* com) CCASSERT(false, "ComponentContainer already have this kind of component"); break; } - hlookup::set_item(_componentMap, componentName, com);//_componentMap[componentName] = com; + hlookup::set_item(_componentMap, componentName, com); //_componentMap[componentName] = com; com->retain(); com->setOwner(_owner); com->onAdd(); diff --git a/cocos/2d/CCFontFNT.h b/cocos/2d/CCFontFNT.h index b1eb88ad5c26..a255920330a9 100644 --- a/cocos/2d/CCFontFNT.h +++ b/cocos/2d/CCFontFNT.h @@ -149,8 +149,7 @@ class CC_DLL FontFNT : public Font static FontFNT* create(std::string_view fntFilePath, std::string_view subTextureKey); static FontFNT* create(std::string_view fntFilePath); - CC_DEPRECATED_ATTRIBUTE static FontFNT* create(std::string_view fntFilePath, - const Vec2& imageOffset = Vec2::ZERO); + CC_DEPRECATED_ATTRIBUTE static FontFNT* create(std::string_view fntFilePath, const Vec2& imageOffset = Vec2::ZERO); /** Purges the cached data. Removes from memory the cached configurations and the atlas name dictionary. diff --git a/cocos/2d/CCLabel.cpp b/cocos/2d/CCLabel.cpp index ba6b570aaf40..e7f8a819435b 100644 --- a/cocos/2d/CCLabel.cpp +++ b/cocos/2d/CCLabel.cpp @@ -875,10 +875,7 @@ bool Label::setBMFontFilePath(std::string_view bmfontFilePath, float fontSize) return true; } -bool Label::setBMFontFilePath(std::string_view bmfontFilePath, - const Rect& imageRect, - bool imageRotated, - float fontSize) +bool Label::setBMFontFilePath(std::string_view bmfontFilePath, const Rect& imageRect, bool imageRotated, float fontSize) { FontAtlas* newAtlas = FontAtlasCache::getFontAtlasFNT(bmfontFilePath, imageRect, imageRotated); diff --git a/cocos/2d/CCLabel.h b/cocos/2d/CCLabel.h index fa6b9622ea23..fa3e5e57e808 100644 --- a/cocos/2d/CCLabel.h +++ b/cocos/2d/CCLabel.h @@ -341,9 +341,7 @@ class CC_DLL Label : public Node, public LabelProtocol, public BlendProtocol float fontSize = 0); /** Sets a new bitmap font to Label */ - virtual bool setBMFontFilePath(std::string_view bmfontFilePath, - std::string_view subTextureKey, - float fontSize = 0); + virtual bool setBMFontFilePath(std::string_view bmfontFilePath, std::string_view subTextureKey, float fontSize = 0); /** Sets a new bitmap font to Label */ CC_DEPRECATED_ATTRIBUTE virtual bool setBMFontFilePath(std::string_view bmfontFilePath, diff --git a/cocos/2d/CCLabelTextFormatter.cpp b/cocos/2d/CCLabelTextFormatter.cpp index 33dc2474aefc..2a28d7686f70 100644 --- a/cocos/2d/CCLabelTextFormatter.cpp +++ b/cocos/2d/CCLabelTextFormatter.cpp @@ -139,9 +139,9 @@ void Label::updateBMFontScale() auto font = _fontAtlas->getFont(); if (_currentLabelType == LabelType::BMFONT) { - FontFNT* bmFont = (FontFNT*)font; + FontFNT* bmFont = (FontFNT*)font; auto originalFontSize = bmFont->getOriginalFontSize(); - _bmfontScale = _bmFontSize * CC_CONTENT_SCALE_FACTOR() / originalFontSize; + _bmfontScale = _bmFontSize * CC_CONTENT_SCALE_FACTOR() / originalFontSize; } else { diff --git a/cocos/2d/CCMotionStreak.cpp b/cocos/2d/CCMotionStreak.cpp index 93833932a30b..1535875ef675 100644 --- a/cocos/2d/CCMotionStreak.cpp +++ b/cocos/2d/CCMotionStreak.cpp @@ -52,11 +52,7 @@ MotionStreak::~MotionStreak() CC_SAFE_FREE(_texCoords); } -MotionStreak* MotionStreak::create(float fade, - float minSeg, - float stroke, - const Color3B& color, - std::string_view path) +MotionStreak* MotionStreak::create(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path) { MotionStreak* ret = new MotionStreak(); if (ret->initWithFade(fade, minSeg, stroke, color, path)) diff --git a/cocos/2d/CCPlistSpriteSheetLoader.cpp b/cocos/2d/CCPlistSpriteSheetLoader.cpp index 98eef1d1520a..1406327d304a 100644 --- a/cocos/2d/CCPlistSpriteSheetLoader.cpp +++ b/cocos/2d/CCPlistSpriteSheetLoader.cpp @@ -74,9 +74,7 @@ void PlistSpriteSheetLoader::load(std::string_view filePath, Texture2D* texture, addSpriteFramesWithDictionary(dict, texture, filePath, cache); } -void PlistSpriteSheetLoader::load(std::string_view filePath, - std::string_view textureFileName, - SpriteFrameCache& cache) +void PlistSpriteSheetLoader::load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) { CCASSERT(!textureFileName.empty(), "texture name should not be null"); const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); @@ -401,7 +399,7 @@ void PlistSpriteSheetLoader::reloadSpriteFramesWithDictionary(ValueMap& dict, for (auto& iter : framesDict) { - const ValueMap& frameDict = iter.second.asValueMap(); + const ValueMap& frameDict = iter.second.asValueMap(); std::string_view spriteFrameName = iter.first; cache.eraseFrame(spriteFrameName); diff --git a/cocos/2d/CCScene.h b/cocos/2d/CCScene.h index 96890c12dfc6..2eed035aecb3 100644 --- a/cocos/2d/CCScene.h +++ b/cocos/2d/CCScene.h @@ -142,7 +142,7 @@ class CC_DLL Scene : public Node std::vector _cameras; // weak ref to Camera Camera* _defaultCamera = nullptr; // weak ref, default camera created by scene, _cameras[0], Caution that the // default camera can not be added to _cameras before onEnter is called - bool _cameraOrderDirty = true; // order is dirty, need sort + bool _cameraOrderDirty = true; // order is dirty, need sort EventListenerCustom* _event; std::vector _lights; diff --git a/cocos/2d/CCSpriteFrameCache.cpp b/cocos/2d/CCSpriteFrameCache.cpp index 537a33e9a444..6c4fc158a652 100644 --- a/cocos/2d/CCSpriteFrameCache.cpp +++ b/cocos/2d/CCSpriteFrameCache.cpp @@ -288,9 +288,10 @@ void SpriteFrameCache::insertFrame(const std::shared_ptr& spriteShe { spriteSheet->frames.emplace(frameName); _spriteFrames.insert(frameName, spriteFrame); // add SpriteFrame - _spriteSheets[spriteSheet->path] = spriteSheet; - hlookup::set_item(_spriteFrameToSpriteSheetMap, frameName, spriteSheet); // _spriteFrameToSpriteSheetMap[frameName] = spriteSheet; // insert - // index frameName->plist + _spriteSheets[spriteSheet->path] = spriteSheet; + hlookup::set_item(_spriteFrameToSpriteSheetMap, frameName, + spriteSheet); // _spriteFrameToSpriteSheetMap[frameName] = spriteSheet; // insert + // index frameName->plist } bool SpriteFrameCache::eraseFrame(std::string_view frameName) diff --git a/cocos/2d/CCSpriteSheetLoader.h b/cocos/2d/CCSpriteSheetLoader.h index 1fee38854f67..d4a236ee9db8 100644 --- a/cocos/2d/CCSpriteSheetLoader.h +++ b/cocos/2d/CCSpriteSheetLoader.h @@ -72,13 +72,13 @@ class SpriteSheet class ISpriteSheetLoader { public: - virtual ~ISpriteSheetLoader() = default; - virtual uint32_t getFormat() = 0; - virtual void load(std::string_view filePath, SpriteFrameCache& cache) = 0; - virtual void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) = 0; + virtual ~ISpriteSheetLoader() = default; + virtual uint32_t getFormat() = 0; + virtual void load(std::string_view filePath, SpriteFrameCache& cache) = 0; + virtual void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) = 0; virtual void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) = 0; - virtual void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) = 0; - virtual void reload(std::string_view filePath, SpriteFrameCache& cache) = 0; + virtual void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) = 0; + virtual void reload(std::string_view filePath, SpriteFrameCache& cache) = 0; }; class SpriteSheetLoader : public ISpriteSheetLoader @@ -92,12 +92,12 @@ class SpriteSheetLoader : public ISpriteSheetLoader const std::vector& triangleIndices, PolygonInfo& polygonInfo); - uint32_t getFormat() override = 0; - void load(std::string_view filePath, SpriteFrameCache& cache) override = 0; - void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) override = 0; + uint32_t getFormat() override = 0; + void load(std::string_view filePath, SpriteFrameCache& cache) override = 0; + void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) override = 0; void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) override = 0; - void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) override = 0; - void reload(std::string_view filePath, SpriteFrameCache& cache) override = 0; + void load(const Data& content, Texture2D* texture, SpriteFrameCache& cache) override = 0; + void reload(std::string_view filePath, SpriteFrameCache& cache) override = 0; }; // end of _2d group diff --git a/cocos/3d/CCAnimate3D.cpp b/cocos/3d/CCAnimate3D.cpp index 2376a4715ed6..a192bbd1bfc7 100644 --- a/cocos/3d/CCAnimate3D.cpp +++ b/cocos/3d/CCAnimate3D.cpp @@ -166,7 +166,7 @@ void Animate3D::startWithTarget(Node* target) for (const auto& iter : boneCurves) { std::string_view boneName = iter.first; - auto skin = sprite->getSkeleton(); + auto skin = sprite->getSkeleton(); if (skin) { auto bone = skin->getBoneByName(boneName); @@ -204,7 +204,7 @@ void Animate3D::startWithTarget(Node* target) for (const auto& iter : boneCurves) { std::string_view boneName = iter.first; - Node* node = nullptr; + Node* node = nullptr; if (target->getName() == boneName) node = target; else diff --git a/cocos/3d/CCAnimation3D.cpp b/cocos/3d/CCAnimation3D.cpp index 4cc34726c44f..7407b218871c 100644 --- a/cocos/3d/CCAnimation3D.cpp +++ b/cocos/3d/CCAnimation3D.cpp @@ -33,7 +33,7 @@ Animation3D* Animation3D::create(std::string_view fileName, std::string_view ani { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); fullPath.append("#").append(animationName); - auto animation = Animation3DCache::getInstance()->getAnimation(fullPath); + auto animation = Animation3DCache::getInstance()->getAnimation(fullPath); if (animation != nullptr) return animation; diff --git a/cocos/3d/CCMotionStreak3D.h b/cocos/3d/CCMotionStreak3D.h index 59111ff86d6e..dc7e072e3c45 100644 --- a/cocos/3d/CCMotionStreak3D.h +++ b/cocos/3d/CCMotionStreak3D.h @@ -57,11 +57,7 @@ class CC_DLL MotionStreak3D : public Node, public TextureProtocol * @param path The texture file name of stoke. * @return An autoreleased MotionStreak3D object. */ - static MotionStreak3D* create(float fade, - float minSeg, - float stroke, - const Color3B& color, - std::string_view path); + static MotionStreak3D* create(float fade, float minSeg, float stroke, const Color3B& color, std::string_view path); /** Creates and initializes a motion streak with fade in seconds, minimum segments, stroke's width, color, texture. * * @param fade The fade time, in seconds. diff --git a/cocos/3d/CCSprite3D.h b/cocos/3d/CCSprite3D.h index ec5127ecd34a..d038ce60b7da 100644 --- a/cocos/3d/CCSprite3D.h +++ b/cocos/3d/CCSprite3D.h @@ -223,10 +223,7 @@ class CC_DLL Sprite3D : public Node, public BlendProtocol /** load file and set it to meshedatas, nodedatas and materialdatas, obj file .mtl file should be at the same * directory if exist */ - bool loadFromFile(std::string_view path, - NodeDatas* nodedatas, - MeshDatas* meshdatas, - MaterialDatas* materialdatas); + bool loadFromFile(std::string_view path, NodeDatas* nodedatas, MeshDatas* meshdatas, MaterialDatas* materialdatas); /** * Visits this Sprite3D's children and draw them recursively. diff --git a/cocos/3d/CCSprite3DMaterial.h b/cocos/3d/CCSprite3DMaterial.h index d89fc10a3340..2162627f721d 100644 --- a/cocos/3d/CCSprite3DMaterial.h +++ b/cocos/3d/CCSprite3DMaterial.h @@ -178,8 +178,8 @@ class Sprite3DMaterialCache ~Sprite3DMaterialCache(); protected: - static Sprite3DMaterialCache* _cacheInstance; // instance - hlookup::string_map _materials; // cached material + static Sprite3DMaterialCache* _cacheInstance; // instance + hlookup::string_map _materials; // cached material }; // end of 3d group diff --git a/cocos/3d/CCTerrain.cpp b/cocos/3d/CCTerrain.cpp index df626733e8a7..19e0f005613c 100644 --- a/cocos/3d/CCTerrain.cpp +++ b/cocos/3d/CCTerrain.cpp @@ -343,7 +343,7 @@ float Terrain::getHeight(float x, float z, Vec3* normal) const normal->z = d - a; normal->normalize(); //(*normal) = (1-u)*(1-v)*getNormal(i,j)+ (1-u)*v*getNormal(i,j+1) + u*(1-v)*getNormal(i+1,j)+ - //u*v*getNormal(i+1,j+1); + // u*v*getNormal(i+1,j+1); } float result = (1 - u) * (1 - v) * getImageHeight(i, j) * getScaleY() + (1 - u) * v * getImageHeight(i, j + 1) * getScaleY() + diff --git a/cocos/3d/CCVertexAttribBinding.cpp b/cocos/3d/CCVertexAttribBinding.cpp index e101fd2e7ccf..f7325edb7e79 100644 --- a/cocos/3d/CCVertexAttribBinding.cpp +++ b/cocos/3d/CCVertexAttribBinding.cpp @@ -122,8 +122,8 @@ void VertexAttribBinding::parseAttributes() _attributes.clear(); _vertexAttribsFlags = 0; - auto program = _programState->getProgram(); - _attributes = program->getActiveAttributes(); + auto program = _programState->getProgram(); + _attributes = program->getActiveAttributes(); } bool VertexAttribBinding::hasAttribute(const shaderinfos::VertexKey& key) const diff --git a/cocos/audio/src/AudioDecoderEXT.mm b/cocos/audio/src/AudioDecoderEXT.mm index 37d068e988ce..eb7f9ceaa4c0 100644 --- a/cocos/audio/src/AudioDecoderEXT.mm +++ b/cocos/audio/src/AudioDecoderEXT.mm @@ -32,183 +32,194 @@ of this software and associated documentation files (the "Software"), to deal #define LOG_TAG "AudioDecoder" -namespace cocos2d { - - AudioDecoderEXT::AudioDecoderEXT() - : _extRef(nullptr), _fileStream(nullptr), _streamSize(0), _audioFileId(nullptr) +namespace cocos2d +{ + +AudioDecoderEXT::AudioDecoderEXT() : _extRef(nullptr), _fileStream(nullptr), _streamSize(0), _audioFileId(nullptr) +{ + memset(&_outputFormat, 0, sizeof(_outputFormat)); +} + +AudioDecoderEXT::~AudioDecoderEXT() +{ + closeInternal(); +} + +bool AudioDecoderEXT::open(std::string_view fullPath) +{ + bool ret = false; + CFURLRef fileURL = nil; + do { - memset(&_outputFormat, 0, sizeof(_outputFormat)); - } + BREAK_IF_ERR_LOG(fullPath.empty(), "Invalid path!"); - AudioDecoderEXT::~AudioDecoderEXT() - { - closeInternal(); - } - - bool AudioDecoderEXT::open(std::string_view fullPath) - { - bool ret = false; - CFURLRef fileURL = nil; - do - { - BREAK_IF_ERR_LOG(fullPath.empty(), "Invalid path!"); - - _fileStream = cocos2d::FileUtils::getInstance()->openFileStream(fullPath, FileStream::Mode::READ); - BREAK_IF_ERR_LOG(_fileStream == nullptr, "FileUtils::openFileStream FAILED for file: %s", fullPath.data()); - if (_fileStream) - { - _streamSize = _fileStream->size(); // cache the stream size - } - - OSStatus status = AudioFileOpenWithCallbacks(this, &AudioDecoderEXT::readCallback, nullptr, &AudioDecoderEXT::getSizeCallback, nullptr, 0, &_audioFileId); - BREAK_IF_ERR_LOG(status != noErr, "AudioFileOpenWithCallbacks FAILED, Error = %d", (int)status); - - status = ExtAudioFileWrapAudioFileID(_audioFileId, false, &_extRef); - BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileWrapAudioFileID FAILED, Error = %d", (int)status); - - BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileOpenURL FAILED, Error = %d", (int)status); - - AudioStreamBasicDescription fileFormat; - UInt32 propertySize = sizeof(fileFormat); - - // Get the audio data format - status = ExtAudioFileGetProperty(_extRef, kExtAudioFileProperty_FileDataFormat, &propertySize, &fileFormat); - BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileGetProperty(kExtAudioFileProperty_FileDataFormat) FAILED, Error = %d", (int)status); - BREAK_IF_ERR_LOG(fileFormat.mChannelsPerFrame > 2, "Unsupported Format, channel count is greater than stereo!"); - - // 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 = fileFormat.mSampleRate; - _outputFormat.mChannelsPerFrame = fileFormat.mChannelsPerFrame; - _outputFormat.mFormatID = kAudioFormatLinearPCM; - _outputFormat.mFramesPerPacket = 1; - _outputFormat.mBitsPerChannel = 16; - _outputFormat.mFormatFlags = kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger; - - _sampleRate = _outputFormat.mSampleRate; - _channelCount = _outputFormat.mChannelsPerFrame; - _bytesPerBlock = 2 * _outputFormat.mChannelsPerFrame; - - _outputFormat.mBytesPerPacket = _bytesPerBlock; - _outputFormat.mBytesPerFrame = _bytesPerBlock; - - status = ExtAudioFileSetProperty(_extRef, kExtAudioFileProperty_ClientDataFormat, sizeof(_outputFormat), &_outputFormat); - BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileSetProperty FAILED, Error = %d", (int)status); - - // Get the total frame count - SInt64 totalFrames = 0; - propertySize = sizeof(totalFrames); - status = ExtAudioFileGetProperty(_extRef, kExtAudioFileProperty_FileLengthFrames, &propertySize, &totalFrames); - BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileGetProperty(kExtAudioFileProperty_FileLengthFrames) FAILED, Error = %d",(int)status); - BREAK_IF_ERR_LOG(totalFrames <= 0, "Total frames is 0, it's an invalid audio file: %s", fullPath.data()); - _totalFrames = static_cast(totalFrames); - _isOpened = true; - - ret = true; - } while (false); - - if (fileURL != nil) - CFRelease(fileURL); - - if (!ret) + _fileStream = cocos2d::FileUtils::getInstance()->openFileStream(fullPath, FileStream::Mode::READ); + BREAK_IF_ERR_LOG(_fileStream == nullptr, "FileUtils::openFileStream FAILED for file: %s", fullPath.data()); + if (_fileStream) { - close(); + _streamSize = _fileStream->size(); // cache the stream size } - return ret; - } - - void AudioDecoderEXT::close() + OSStatus status = AudioFileOpenWithCallbacks(this, &AudioDecoderEXT::readCallback, nullptr, + &AudioDecoderEXT::getSizeCallback, nullptr, 0, &_audioFileId); + BREAK_IF_ERR_LOG(status != noErr, "AudioFileOpenWithCallbacks FAILED, Error = %d", (int)status); + + status = ExtAudioFileWrapAudioFileID(_audioFileId, false, &_extRef); + BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileWrapAudioFileID FAILED, Error = %d", (int)status); + + BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileOpenURL FAILED, Error = %d", (int)status); + + AudioStreamBasicDescription fileFormat; + UInt32 propertySize = sizeof(fileFormat); + + // Get the audio data format + status = ExtAudioFileGetProperty(_extRef, kExtAudioFileProperty_FileDataFormat, &propertySize, &fileFormat); + BREAK_IF_ERR_LOG(status != noErr, + "ExtAudioFileGetProperty(kExtAudioFileProperty_FileDataFormat) FAILED, Error = %d", + (int)status); + BREAK_IF_ERR_LOG(fileFormat.mChannelsPerFrame > 2, "Unsupported Format, channel count is greater than stereo!"); + + // 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 = fileFormat.mSampleRate; + _outputFormat.mChannelsPerFrame = fileFormat.mChannelsPerFrame; + _outputFormat.mFormatID = kAudioFormatLinearPCM; + _outputFormat.mFramesPerPacket = 1; + _outputFormat.mBitsPerChannel = 16; + _outputFormat.mFormatFlags = + kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger; + + _sampleRate = _outputFormat.mSampleRate; + _channelCount = _outputFormat.mChannelsPerFrame; + _bytesPerBlock = 2 * _outputFormat.mChannelsPerFrame; + + _outputFormat.mBytesPerPacket = _bytesPerBlock; + _outputFormat.mBytesPerFrame = _bytesPerBlock; + + status = ExtAudioFileSetProperty(_extRef, kExtAudioFileProperty_ClientDataFormat, sizeof(_outputFormat), + &_outputFormat); + BREAK_IF_ERR_LOG(status != noErr, "ExtAudioFileSetProperty FAILED, Error = %d", (int)status); + + // Get the total frame count + SInt64 totalFrames = 0; + propertySize = sizeof(totalFrames); + status = ExtAudioFileGetProperty(_extRef, kExtAudioFileProperty_FileLengthFrames, &propertySize, &totalFrames); + BREAK_IF_ERR_LOG(status != noErr, + "ExtAudioFileGetProperty(kExtAudioFileProperty_FileLengthFrames) FAILED, Error = %d", + (int)status); + BREAK_IF_ERR_LOG(totalFrames <= 0, "Total frames is 0, it's an invalid audio file: %s", fullPath.data()); + _totalFrames = static_cast(totalFrames); + _isOpened = true; + + ret = true; + } while (false); + + if (fileURL != nil) + CFRelease(fileURL); + + if (!ret) { - closeInternal(); + close(); } - uint32_t AudioDecoderEXT::read(uint32_t framesToRead, char* pcmBuf) - { - uint32_t ret = 0; - do - { - BREAK_IF_ERR_LOG(!isOpened(), "decoder isn't openned"); - BREAK_IF_ERR_LOG(framesToRead == INVALID_FRAME_INDEX, "frameToRead is INVALID_FRAME_INDEX"); - BREAK_IF_ERR_LOG(framesToRead == 0, "frameToRead is 0"); - BREAK_IF_ERR_LOG(pcmBuf == nullptr, "pcmBuf is nullptr"); - - AudioBufferList bufferList; - bufferList.mNumberBuffers = 1; - bufferList.mBuffers[0].mDataByteSize = framesToRead * _bytesPerBlock; - bufferList.mBuffers[0].mNumberChannels = _outputFormat.mChannelsPerFrame; - bufferList.mBuffers[0].mData = pcmBuf; - - UInt32 frames = framesToRead; - OSStatus status = ExtAudioFileRead(_extRef, &frames, &bufferList); - BREAK_IF(status != noErr); - ret = frames; - } while (false); - - return ret; - } + return ret; +} + +void AudioDecoderEXT::close() +{ + closeInternal(); +} - bool AudioDecoderEXT::seek(uint32_t frameOffset) +uint32_t AudioDecoderEXT::read(uint32_t framesToRead, char* pcmBuf) +{ + uint32_t ret = 0; + do { - bool ret = false; - do - { - BREAK_IF_ERR_LOG(!isOpened(), "decoder isn't openned"); - BREAK_IF_ERR_LOG(frameOffset == INVALID_FRAME_INDEX, "frameIndex is INVALID_FRAME_INDEX"); - - OSStatus status = ExtAudioFileSeek(_extRef, frameOffset); - BREAK_IF(status != noErr); - ret = true; - } while(false); - return ret; + BREAK_IF_ERR_LOG(!isOpened(), "decoder isn't openned"); + BREAK_IF_ERR_LOG(framesToRead == INVALID_FRAME_INDEX, "frameToRead is INVALID_FRAME_INDEX"); + BREAK_IF_ERR_LOG(framesToRead == 0, "frameToRead is 0"); + BREAK_IF_ERR_LOG(pcmBuf == nullptr, "pcmBuf is nullptr"); + + AudioBufferList bufferList; + bufferList.mNumberBuffers = 1; + bufferList.mBuffers[0].mDataByteSize = framesToRead * _bytesPerBlock; + bufferList.mBuffers[0].mNumberChannels = _outputFormat.mChannelsPerFrame; + bufferList.mBuffers[0].mData = pcmBuf; + + UInt32 frames = framesToRead; + OSStatus status = ExtAudioFileRead(_extRef, &frames, &bufferList); + BREAK_IF(status != noErr); + ret = frames; + } while (false); + + return ret; +} + +bool AudioDecoderEXT::seek(uint32_t frameOffset) +{ + bool ret = false; + do + { + BREAK_IF_ERR_LOG(!isOpened(), "decoder isn't openned"); + BREAK_IF_ERR_LOG(frameOffset == INVALID_FRAME_INDEX, "frameIndex is INVALID_FRAME_INDEX"); + + OSStatus status = ExtAudioFileSeek(_extRef, frameOffset); + BREAK_IF(status != noErr); + ret = true; + } while (false); + return ret; +} + +void AudioDecoderEXT::closeInternal() +{ + if (_extRef != nullptr) + { + ExtAudioFileDispose(_extRef); + AudioFileClose(_audioFileId); + _extRef = nullptr; + _audioFileId = nullptr; + _fileStream = nullptr; } - - void AudioDecoderEXT::closeInternal() +} + +OSStatus AudioDecoderEXT::readCallback(void* inClientData, + SInt64 inPosition, + UInt32 requestCount, + void* buffer, + UInt32* actualCount) +{ + if (!inClientData) { - if (_extRef != nullptr) - { - ExtAudioFileDispose(_extRef); - AudioFileClose(_audioFileId); - _extRef = nullptr; - _audioFileId = nullptr; - _fileStream = nullptr; - } + return kAudioFileNotOpenError; } - OSStatus AudioDecoderEXT::readCallback(void *inClientData, SInt64 inPosition, UInt32 requestCount, void *buffer, UInt32 *actualCount) + auto* audioDecoder = (AudioDecoderEXT*)inClientData; + auto* fileStream = audioDecoder->_fileStream.get(); + auto currPos = (SInt64)fileStream->tell(); + auto posDiff = inPosition - currPos; + if (posDiff != 0) { - if (!inClientData) - { - return kAudioFileNotOpenError; - } - - auto* audioDecoder = (AudioDecoderEXT*)inClientData; - auto* fileStream = audioDecoder->_fileStream.get(); - auto currPos = (SInt64)fileStream->tell(); - auto posDiff = inPosition - currPos; - if (posDiff != 0) + if (fileStream->seek(posDiff, SEEK_CUR) < 0) { - if (fileStream->seek(posDiff, SEEK_CUR) < 0) - { - return kAudioFilePositionError; - } + return kAudioFilePositionError; } - - const auto count = fileStream->read(buffer, requestCount); - - if (count < 0) - { - return kAudioFileEndOfFileError; - } - - *actualCount = count; - - return noErr; } - SInt64 AudioDecoderEXT::getSizeCallback(void *inClientData) + const auto count = fileStream->read(buffer, requestCount); + + if (count < 0) { - auto* audioDecoder = (AudioDecoderEXT*)inClientData; - return audioDecoder->_streamSize; + return kAudioFileEndOfFileError; } -} // namespace cocos2d { + + *actualCount = count; + + return noErr; +} + +SInt64 AudioDecoderEXT::getSizeCallback(void* inClientData) +{ + auto* audioDecoder = (AudioDecoderEXT*)inClientData; + return audioDecoder->_streamSize; +} +} // namespace cocos2d { diff --git a/cocos/audio/src/AudioEngineImpl.mm b/cocos/audio/src/AudioEngineImpl.mm index 55809b1fb5a4..f4aca8818f8e 100644 --- a/cocos/audio/src/AudioEngineImpl.mm +++ b/cocos/audio/src/AudioEngineImpl.mm @@ -410,7 +410,7 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *bids) auto it = _audioCaches.find(filePath); if (it == _audioCaches.end()) { - audioCache = new AudioCache(); // hlookup_second(it); + audioCache = new AudioCache(); // hlookup_second(it); _audioCaches.emplace(filePath, std::unique_ptr(audioCache)); audioCache->_fileFullPath = FileUtils::getInstance()->fullPathForFilename(filePath); unsigned int cacheId = audioCache->_id; diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index e481a756036c..79739b01a23f 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -293,8 +293,7 @@ std::string_view Console::Utility::getPrompt() Console::Command::Command() : _callback(nullptr) {} -Console::Command::Command(std::string_view name, std::string_view help) - : _name(name), _help(help), _callback(nullptr) +Console::Command::Command(std::string_view name, std::string_view help) : _name(name), _help(help), _callback(nullptr) {} Console::Command::Command(std::string_view name, std::string_view help, const Callback& callback) @@ -1621,9 +1620,7 @@ void Console::printFileUtils(socket_native_type fd) Console::Utility::sendPrompt(fd); } -void Console::sendHelp(socket_native_type fd, - const hlookup::string_map& commands, - const char* msg) +void Console::sendHelp(socket_native_type fd, const hlookup::string_map& commands, const char* msg) { Console::Utility::sendToConsole(fd, msg, strlen(msg)); for (auto& it : commands) diff --git a/cocos/base/CCConsole.h b/cocos/base/CCConsole.h index cfe23de808a7..07882085c6b7 100644 --- a/cocos/base/CCConsole.h +++ b/cocos/base/CCConsole.h @@ -299,9 +299,7 @@ class CC_DLL Console : public Ref void printFileUtils(socket_native_type fd); /** send help message to console */ - static void sendHelp(socket_native_type fd, - const hlookup::string_map& commands, - const char* msg); + static void sendHelp(socket_native_type fd, const hlookup::string_map& commands, const char* msg); }; NS_CC_END diff --git a/cocos/base/CCController-apple.mm b/cocos/base/CCController-apple.mm index 349ab4188c9a..0140a148ff4f 100644 --- a/cocos/base/CCController-apple.mm +++ b/cocos/base/CCController-apple.mm @@ -2,19 +2,19 @@ Copyright (c) 2014 cocos2d-x.org Copyright (c) 2014-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,36 +28,35 @@ of this software and associated documentation files (the "Software"), to deal #include "platform/CCPlatformConfig.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) -#include "base/ccMacros.h" -#include "base/CCEventDispatcher.h" -#include "base/CCEventController.h" -#include "base/CCEventListenerController.h" -#include "base/CCDirector.h" -#include "2d/CCLabel.h" +# include "base/ccMacros.h" +# include "base/CCEventDispatcher.h" +# include "base/CCEventController.h" +# include "base/CCEventListenerController.h" +# include "base/CCDirector.h" +# include "2d/CCLabel.h" -#import +# import typedef void (^GCControllerConnectionBlock)(GCController* controller); typedef void (^GCControllerDisconnectionBlock)(GCController* controller); -@interface GCControllerConnectionEventHandler : NSObject -{ +@interface GCControllerConnectionEventHandler : NSObject { } -@property (copy) GCControllerConnectionBlock _connectionBlock; -@property (copy) GCControllerDisconnectionBlock _disconnectionBlock; +@property(copy) GCControllerConnectionBlock _connectionBlock; +@property(copy) GCControllerDisconnectionBlock _disconnectionBlock; -+(GCControllerConnectionEventHandler*) getInstance; -+(void) destroyInstance; ++ (GCControllerConnectionEventHandler*)getInstance; ++ (void)destroyInstance; @end @implementation GCControllerConnectionEventHandler - static GCControllerConnectionEventHandler* __instance = nil; -+(GCControllerConnectionEventHandler*) getInstance { - ++ (GCControllerConnectionEventHandler*)getInstance +{ + if (__instance == nil) { __instance = [[GCControllerConnectionEventHandler alloc] init]; @@ -65,7 +64,8 @@ +(GCControllerConnectionEventHandler*) getInstance { return __instance; } -+(void) destroyInstance { ++ (void)destroyInstance +{ if (__instance) { [__instance release]; @@ -73,33 +73,44 @@ +(void) destroyInstance { } } --(void) observerConnection: (GCControllerConnectionBlock) connectBlock disconnection: (GCControllerDisconnectionBlock) disconnectBlock { - self._connectionBlock = connectBlock; +- (void)observerConnection:(GCControllerConnectionBlock)connectBlock + disconnection:(GCControllerDisconnectionBlock)disconnectBlock +{ + self._connectionBlock = connectBlock; self._disconnectionBlock = disconnectBlock; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onControllerConnected:) name:GCControllerDidConnectNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onControllerDisconnected:) name:GCControllerDidDisconnectNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onControllerConnected:) + name:GCControllerDidConnectNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onControllerDisconnected:) + name:GCControllerDidDisconnectNotification + object:nil]; } --(void)dealloc { +- (void)dealloc +{ [[NSNotificationCenter defaultCenter] removeObserver:self]; // Have to reset 'copy' property to nil value to avoid memory leak. - self._connectionBlock = nil; + self._connectionBlock = nil; self._disconnectionBlock = nil; [super dealloc]; } --(void) onControllerConnected :(NSNotification *)connectedNotification { - GCController *controller =(GCController *)[connectedNotification object]; - +- (void)onControllerConnected:(NSNotification*)connectedNotification +{ + GCController* controller = (GCController*)[connectedNotification object]; + self._connectionBlock(controller); } --(void) onControllerDisconnected :(NSNotification *)connectedNotification { - - GCController *controller =(GCController *)[connectedNotification object]; +- (void)onControllerDisconnected:(NSNotification*)connectedNotification +{ + + GCController* controller = (GCController*)[connectedNotification object]; self._disconnectionBlock(controller); } @@ -110,67 +121,64 @@ -(void) onControllerDisconnected :(NSNotification *)connectedNotification { class ControllerImpl { public: - ControllerImpl(Controller* controller) - : _controller(controller) - , _gcController(nil) - { - - } - + ControllerImpl(Controller* controller) : _controller(controller), _gcController(nil) {} + Controller* _controller; GCController* _gcController; }; void Controller::startDiscoveryController() { - if (NSClassFromString(@"GCController") == nil) { + if (NSClassFromString(@"GCController") == nil) + { return; } - [GCController startWirelessControllerDiscoveryWithCompletionHandler: nil]; - - [[GCControllerConnectionEventHandler getInstance] observerConnection: ^(GCController* gcController) { - - auto controller = new Controller(); - controller->_impl->_gcController = gcController; - controller->_deviceName = [gcController.vendorName UTF8String]; - - s_allController.push_back(controller); - - controller->registerListeners(); - controller->getDeviceName(); - - controller->onConnected(); - - } disconnection: ^(GCController* gcController) { - auto iter = std::find_if(s_allController.begin(), s_allController.end(), [gcController](Controller* c){ return c->_impl->_gcController == gcController; }); - - if(iter == s_allController.end()) - { - log("disconnect:Could not find the controller"); - return; + [GCController startWirelessControllerDiscoveryWithCompletionHandler:nil]; + + [[GCControllerConnectionEventHandler getInstance] + observerConnection:^(GCController* gcController) { + auto controller = new Controller(); + controller->_impl->_gcController = gcController; + controller->_deviceName = [gcController.vendorName UTF8String]; + + s_allController.push_back(controller); + + controller->registerListeners(); + controller->getDeviceName(); + + controller->onConnected(); } - - (*iter)->onDisconnected(); - s_allController.erase(iter); - - }]; + disconnection:^(GCController* gcController) { + auto iter = std::find_if(s_allController.begin(), s_allController.end(), + [gcController](Controller* c) { return c->_impl->_gcController == gcController; }); + + if (iter == s_allController.end()) + { + log("disconnect:Could not find the controller"); + return; + } + + (*iter)->onDisconnected(); + s_allController.erase(iter); + }]; } void Controller::stopDiscoveryController() { - if (NSClassFromString(@"GCController") == nil) { + if (NSClassFromString(@"GCController") == nil) + { return; } [GCController stopWirelessControllerDiscovery]; } Controller::Controller() -: _deviceId(0) -, _controllerTag(TAG_UNSET) -, _impl(new ControllerImpl(this)) -, _connectEvent(nullptr) -, _keyEvent(nullptr) -, _axisEvent(nullptr) + : _deviceId(0) + , _controllerTag(TAG_UNSET) + , _impl(new ControllerImpl(this)) + , _connectEvent(nullptr) + , _keyEvent(nullptr) + , _axisEvent(nullptr) { init(); } @@ -178,7 +186,7 @@ -(void) onControllerDisconnected :(NSNotification *)connectedNotification { Controller::~Controller() { delete _impl; - + delete _connectEvent; delete _keyEvent; delete _axisEvent; @@ -188,164 +196,184 @@ -(void) onControllerDisconnected :(NSNotification *)connectedNotification { { if (_impl->_gcController.extendedGamepad != nil) { - _impl->_gcController.extendedGamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); - }; - - _impl->_gcController.extendedGamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); - }; - - _impl->_gcController.extendedGamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.extendedGamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.extendedGamepad.leftThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - onAxisEvent(Key::JOYSTICK_LEFT_X, value, axis.isAnalog); - }; - - _impl->_gcController.extendedGamepad.leftThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - onAxisEvent(Key::JOYSTICK_LEFT_Y, -value, axis.isAnalog); - }; - - _impl->_gcController.extendedGamepad.rightThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - onAxisEvent(Key::JOYSTICK_RIGHT_X, value, axis.isAnalog); - }; - - _impl->_gcController.extendedGamepad.rightThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - onAxisEvent(Key::JOYSTICK_RIGHT_Y, -value, axis.isAnalog); - }; - - _impl->_gcController.extendedGamepad.valueChangedHandler = ^(GCExtendedGamepad *gamepad, GCControllerElement *element){ - if (element == gamepad.buttonA) - { - onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); - } - else if (element == gamepad.buttonB) - { - onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); - } - else if (element == gamepad.buttonX) - { - onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); - } - else if (element == gamepad.buttonY) - { - onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); - } - else if (element == gamepad.leftShoulder) - { - onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, gamepad.leftShoulder.isAnalog); - } - else if (element == gamepad.rightShoulder) - { - onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, gamepad.rightShoulder.isAnalog); - } - else if (element == gamepad.leftTrigger) - { - onAxisEvent(Key::AXIS_LEFT_TRIGGER, gamepad.leftTrigger.value, gamepad.leftTrigger.isAnalog); - } - else if (element == gamepad.rightTrigger) - { - onAxisEvent(Key::AXIS_RIGHT_TRIGGER, gamepad.rightTrigger.value, gamepad.rightTrigger.isAnalog); - } + _impl->_gcController.extendedGamepad.dpad.up.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.down.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.left.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.right.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.leftThumbstick.xAxis.valueChangedHandler = + ^(GCControllerAxisInput* axis, float value) { + onAxisEvent(Key::JOYSTICK_LEFT_X, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.leftThumbstick.yAxis.valueChangedHandler = + ^(GCControllerAxisInput* axis, float value) { + onAxisEvent(Key::JOYSTICK_LEFT_Y, -value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.rightThumbstick.xAxis.valueChangedHandler = + ^(GCControllerAxisInput* axis, float value) { + onAxisEvent(Key::JOYSTICK_RIGHT_X, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.rightThumbstick.yAxis.valueChangedHandler = + ^(GCControllerAxisInput* axis, float value) { + onAxisEvent(Key::JOYSTICK_RIGHT_Y, -value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.valueChangedHandler = ^(GCExtendedGamepad* gamepad, + GCControllerElement* element) { + if (element == gamepad.buttonA) + { + onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); + } + else if (element == gamepad.buttonB) + { + onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); + } + else if (element == gamepad.buttonX) + { + onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); + } + else if (element == gamepad.buttonY) + { + onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); + } + else if (element == gamepad.leftShoulder) + { + onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, + gamepad.leftShoulder.isAnalog); + } + else if (element == gamepad.rightShoulder) + { + onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, + gamepad.rightShoulder.isAnalog); + } + else if (element == gamepad.leftTrigger) + { + onAxisEvent(Key::AXIS_LEFT_TRIGGER, gamepad.leftTrigger.value, gamepad.leftTrigger.isAnalog); + } + else if (element == gamepad.rightTrigger) + { + onAxisEvent(Key::AXIS_RIGHT_TRIGGER, gamepad.rightTrigger.value, gamepad.rightTrigger.isAnalog); + } }; } else if (_impl->_gcController.gamepad != nil) { - _impl->_gcController.gamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); - }; - - _impl->_gcController.gamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); - }; - - _impl->_gcController.gamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.gamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.gamepad.valueChangedHandler = ^(GCGamepad *gamepad, GCControllerElement *element){ - - if (element == gamepad.buttonA) - { - onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); - } - else if (element == gamepad.buttonB) - { - onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); - } - else if (element == gamepad.buttonX) - { - onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); - } - else if (element == gamepad.buttonY) - { - onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); - } - else if (element == gamepad.leftShoulder) - { - onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, gamepad.leftShoulder.isAnalog); - } - else if (element == gamepad.rightShoulder) - { - onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, gamepad.rightShoulder.isAnalog); - } + _impl->_gcController.gamepad.dpad.up.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.down.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.left.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.right.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.valueChangedHandler = ^(GCGamepad* gamepad, GCControllerElement* element) { + if (element == gamepad.buttonA) + { + onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); + } + else if (element == gamepad.buttonB) + { + onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); + } + else if (element == gamepad.buttonX) + { + onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); + } + else if (element == gamepad.buttonY) + { + onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); + } + else if (element == gamepad.leftShoulder) + { + onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, + gamepad.leftShoulder.isAnalog); + } + else if (element == gamepad.rightShoulder) + { + onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, + gamepad.rightShoulder.isAnalog); + } }; } -#if defined(CC_TARGET_OS_TVOS) +# if defined(CC_TARGET_OS_TVOS) else if (_impl->_gcController.microGamepad != nil) { - _impl->_gcController.microGamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); - }; - - _impl->_gcController.microGamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); - }; - - _impl->_gcController.microGamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.microGamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); - }; - - _impl->_gcController.microGamepad.valueChangedHandler = ^(GCMicroGamepad *gamepad, GCControllerElement *element){ - - if (element == gamepad.buttonA) - { - onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); - } - else if (element == gamepad.buttonX) - { - onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); - } + _impl->_gcController.microGamepad.dpad.up.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); + }; + + _impl->_gcController.microGamepad.dpad.down.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); + }; + + _impl->_gcController.microGamepad.dpad.left.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.microGamepad.dpad.right.valueChangedHandler = + ^(GCControllerButtonInput* button, float value, BOOL pressed) { + onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.microGamepad.valueChangedHandler = ^(GCMicroGamepad* gamepad, + GCControllerElement* element) { + if (element == gamepad.buttonA) + { + onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); + } + else if (element == gamepad.buttonX) + { + onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); + } }; } -#endif - - _impl->_gcController.controllerPausedHandler = ^(GCController* gcCon){ - - auto iter = std::find_if(s_allController.begin(), s_allController.end(), [gcCon](Controller* c){ return c->_impl->_gcController == gcCon; }); - - if(iter == s_allController.end()) - { - log("Could not find the controller"); - return; - } - - onButtonEvent(Key::BUTTON_PAUSE, true, 1.0f, false); - onButtonEvent(Key::BUTTON_PAUSE, false, 0.0f, false); +# endif + + _impl->_gcController.controllerPausedHandler = ^(GCController* gcCon) { + auto iter = std::find_if(s_allController.begin(), s_allController.end(), + [gcCon](Controller* c) { return c->_impl->_gcController == gcCon; }); + + if (iter == s_allController.end()) + { + log("Could not find the controller"); + return; + } + + onButtonEvent(Key::BUTTON_PAUSE, true, 1.0f, false); + onButtonEvent(Key::BUTTON_PAUSE, false, 0.0f, false); }; } @@ -354,10 +382,8 @@ -(void) onControllerDisconnected :(NSNotification *)connectedNotification { return _impl->_gcController.isAttachedToDevice == YES; } -void Controller::receiveExternalKeyEvent(int externalKeyCode,bool receive) -{ -} +void Controller::receiveExternalKeyEvent(int externalKeyCode, bool receive) {} NS_CC_END -#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) +#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) diff --git a/cocos/base/CCEventCustom.cpp b/cocos/base/CCEventCustom.cpp index e0d2671854b6..2d3cb05fd2b7 100644 --- a/cocos/base/CCEventCustom.cpp +++ b/cocos/base/CCEventCustom.cpp @@ -28,7 +28,6 @@ NS_CC_BEGIN -EventCustom::EventCustom(std::string_view eventName) : Event(Type::CUSTOM), _userData(nullptr), _eventName(eventName) -{} +EventCustom::EventCustom(std::string_view eventName) : Event(Type::CUSTOM), _userData(nullptr), _eventName(eventName) {} NS_CC_END diff --git a/cocos/base/CCEventDispatcher.cpp b/cocos/base/CCEventDispatcher.cpp index 1c251a4f9600..41eae69d1e37 100644 --- a/cocos/base/CCEventDispatcher.cpp +++ b/cocos/base/CCEventDispatcher.cpp @@ -451,9 +451,9 @@ void EventDispatcher::addEventListener(EventListener* listener) void EventDispatcher::forceAddEventListener(EventListener* listener) { - EventListenerVector* listeners = nullptr; - auto listenerID = listener->getListenerID(); - auto itr = _listenerMap.find(listenerID); + EventListenerVector* listeners = nullptr; + auto listenerID = listener->getListenerID(); + auto itr = _listenerMap.find(listenerID); if (itr == _listenerMap.end()) { @@ -1303,8 +1303,7 @@ void EventDispatcher::sortEventListeners(std::string_view listenerID) } } -void EventDispatcher::sortEventListenersOfSceneGraphPriority(std::string_view listenerID, - Node* rootNode) +void EventDispatcher::sortEventListenersOfSceneGraphPriority(std::string_view listenerID, Node* rootNode) { auto listeners = getListeners(listenerID); diff --git a/cocos/base/CCMap.h b/cocos/base/CCMap.h index 9555a28bf237..475b017b3bb4 100644 --- a/cocos/base/CCMap.h +++ b/cocos/base/CCMap.h @@ -223,7 +223,7 @@ class Map * Member type K is the keys for the elements in the container. defined in Map as an alias of its first * template parameter (Key). */ - template + template const V at(const K2& key) const { auto iter = _data.find(key); @@ -305,19 +305,19 @@ class Map * Member type 'K' is the type of the keys for the elements in the container, * defined in Map as an alias of its first template parameter (Key). */ - //size_t erase(const K& k) + // size_t erase(const K& k) //{ - // auto iter = _data.find(k); - // if (iter != _data.end()) - // { - // iter->second->release(); - // _data.erase(iter); - // return 1; - // } - // return 0; - //} - - template + // auto iter = _data.find(k); + // if (iter != _data.end()) + // { + // iter->second->release(); + // _data.erase(iter); + // return 1; + // } + // return 0; + // } + + template size_t erase(const _K2& k) { auto iter = _data.find(k); @@ -335,7 +335,7 @@ class Map * * @param keys Keys of elements to be erased. */ - template + template void erase(const std::vector<_K2>& keys) { for (const auto& key : keys) @@ -438,7 +438,7 @@ class Map RefMap _data; }; -template +template using StringMap = Map; NS_CC_END diff --git a/cocos/base/CCProperties.cpp b/cocos/base/CCProperties.cpp index 1d8b96fed5e3..4709844f7a23 100644 --- a/cocos/base/CCProperties.cpp +++ b/cocos/base/CCProperties.cpp @@ -1114,7 +1114,7 @@ void calculateNamespacePath(std::string_view urlString, size_t loc = urlString.rfind('#'); if (loc != std::string::npos) { - fileString = urlString.substr(0, loc); + fileString = urlString.substr(0, loc); auto namespacePathString = urlString.substr(loc + 1); while ((loc = namespacePathString.find('/')) != std::string::npos) { diff --git a/cocos/base/ZipUtils.cpp b/cocos/base/ZipUtils.cpp index 4454de57a855..3aea081acede 100644 --- a/cocos/base/ZipUtils.cpp +++ b/cocos/base/ZipUtils.cpp @@ -774,7 +774,7 @@ std::vector ZipFile::listFiles(std::string_view pathname) const if (cxx20::starts_with(filename, cxx17::string_view{dirname})) { std::string_view suffix{filename.substr(dirname.length())}; - auto pos = suffix.find('/'); + auto pos = suffix.find('/'); if (pos == std::string::npos) { fileSet.insert(std::string{suffix}); @@ -923,7 +923,7 @@ bool ZipFile::zfopen(std::string_view fileName, ZipFileStream* zfs) auto it = _data->fileList.find(fileName); if (it != _data->fileList.end()) { - zfs->entry = &it->second; + zfs->entry = &it->second; zfs->offset = 0; return true; } diff --git a/cocos/base/ZipUtils.h b/cocos/base/ZipUtils.h index de982b90dc02..8fb4e5b5295f 100644 --- a/cocos/base/ZipUtils.h +++ b/cocos/base/ZipUtils.h @@ -325,9 +325,7 @@ class CC_DLL ZipFile * @warning Recall: you are responsible for calling free() on any Non-nullptr pointer returned. */ CC_DEPRECATED() - static unsigned char* getFileDataFromZip(std::string_view zipFilePath, - std::string_view filename, - ssize_t* size); + static unsigned char* getFileDataFromZip(std::string_view zipFilePath, std::string_view filename, ssize_t* size); private: /* Only used internal for createWithBuffer() */ diff --git a/cocos/math/CCMathBase.h b/cocos/math/CCMathBase.h index 36b6ff1a3afc..527be2f10e17 100644 --- a/cocos/math/CCMathBase.h +++ b/cocos/math/CCMathBase.h @@ -53,9 +53,9 @@ //#define MATH_LOG2E 1.442695040888963387f //#define MATH_PI 3.14159265358979323846f //#define MATH_RANDOM_MINUS1_1() ((2.0f*((float)rand()/RAND_MAX))-1.0f) // Returns a random float between -1 -//and 1. #define MATH_RANDOM_0_1() ((float)rand()/RAND_MAX) // Returns a random float -//between 0 and 1. #define MATH_CLAMP(x, lo, hi) ((x < lo) ? lo : ((x > hi) ? hi : x)) #ifndef M_1_PI #define -//M_1_PI 0.31830988618379067154 +// and 1. #define MATH_RANDOM_0_1() ((float)rand()/RAND_MAX) // Returns a random float +// between 0 and 1. #define MATH_CLAMP(x, lo, hi) ((x < lo) ? lo : ((x > hi) ? hi : x)) #ifndef M_1_PI #define +// M_1_PI 0.31830988618379067154 #ifdef __cplusplus # define NS_CC_MATH_BEGIN \ diff --git a/cocos/network/CCDownloader.h b/cocos/network/CCDownloader.h index 16a6009ace81..c6e3379a40f2 100644 --- a/cocos/network/CCDownloader.h +++ b/cocos/network/CCDownloader.h @@ -129,8 +129,7 @@ class CC_DLL Downloader final void setOnTaskError( const std::function< - void(const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr)>& - callback) + void(const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr)>& callback) { onTaskError = callback; }; @@ -141,7 +140,7 @@ class CC_DLL Downloader final std::string_view storagePath, std::string_view identifier = "", std::string_view checksum = "", - bool background = false); + bool background = false); private: std::unique_ptr _impl; diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 2efadeb57e01..dd1c96a44b1c 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -590,9 +590,7 @@ FileUtils::Status FileUtils::getContents(std::string_view filename, ResizableBuf return Status::OK; } -void FileUtils::writeValueMapToFile(ValueMap dict, - std::string_view fullPath, - std::function callback) const +void FileUtils::writeValueMapToFile(ValueMap dict, std::string_view fullPath, std::function callback) const { performOperationOffthread( @@ -637,9 +635,9 @@ std::string FileUtils::getPathForFilename(std::string_view filename, std::string_view resolutionDirectory, std::string_view searchPath) const { - auto file = filename; + auto file = filename; std::string_view file_path = hlookup::empty_sv; - size_t pos = filename.find_last_of('/'); + size_t pos = filename.find_last_of('/'); if (pos != std::string::npos) { file_path = filename.substr(0, pos + 1); @@ -1336,8 +1334,7 @@ bool FileUtils::renameFile(std::string_view oldfullpath, std::string_view newful if (0 != errorCode) { - CCLOGERROR("Fail to rename file %s to %s !Error code is %d", oldfullpath.data(), newfullpath.data(), - errorCode); + CCLOGERROR("Fail to rename file %s to %s !Error code is %d", oldfullpath.data(), newfullpath.data(), errorCode); return false; } return true; diff --git a/cocos/platform/CCFileUtils.h b/cocos/platform/CCFileUtils.h index 93810f542329..0e82201e78f2 100644 --- a/cocos/platform/CCFileUtils.h +++ b/cocos/platform/CCFileUtils.h @@ -814,8 +814,7 @@ class CC_DLL FileUtils * @js NA * @lua NA */ - virtual void listFilesAsync(std::string_view dirPath, - std::function)> callback) const; + virtual void listFilesAsync(std::string_view dirPath, std::function)> callback) const; /** * List all files recursively in a directory. diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index 18e6958e6b1c..fc960983243f 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -423,7 +423,8 @@ std::string FileUtilsAndroid::getNativeWritableAbsolutePath() const { // Fix for Nexus 10 (Android 4.2 multi-user environment) // the path is retrieved through Java Context.getCacheDir() method - std::string path = JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "getCocos2dxWritablePath"sv); + std::string path = + JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "getCocos2dxWritablePath"sv); if (!path.empty()) path.append("/"); diff --git a/cocos/platform/android/jni/JniHelper.h b/cocos/platform/android/jni/JniHelper.h index d473fb9ffb7b..ffc65fc55985 100644 --- a/cocos/platform/android/jni/JniHelper.h +++ b/cocos/platform/android/jni/JniHelper.h @@ -398,7 +398,7 @@ class CC_DLL JniHelper static std::string getJNISignature(const char*) { return "Ljava/lang/String;"; } static std::string getJNISignature(std::string_view) { return "Ljava/lang/String;"; } - + static std::string getJNISignature(const std::string&) { return "Ljava/lang/String;"; } template diff --git a/cocos/platform/apple/CCDevice-apple.mm b/cocos/platform/apple/CCDevice-apple.mm index e4a72afd2f0b..fff35eb1bbb4 100644 --- a/cocos/platform/apple/CCDevice-apple.mm +++ b/cocos/platform/apple/CCDevice-apple.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,51 +29,56 @@ of this software and associated documentation files (the "Software"), to deal #if CC_TARGET_PLATFORM == CC_PLATFORM_MAC -#include -#include -#include +# include +# include +# include #elif CC_TARGET_PLATFORM == CC_PLATFORM_IOS -#import +# import #endif #include "base/ccTypes.h" #include "platform/apple/CCDevice-apple.h" -namespace FontUtils { - NSMutableParagraphStyle* _calculateParagraphStyle(bool enableWrap, int overflow) - { - NSMutableParagraphStyle* paragraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease]; - paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; - return paragraphStyle; - } - - NSTextAlignment _calculateTextAlignment(cocos2d::Device::TextAlign align) - { - unsigned uHoriFlag = (int)align & 0x0f; - NSTextAlignment nsAlign = (2 == uHoriFlag) ? NSTextAlignmentRight - : (3 == uHoriFlag) ? NSTextAlignmentCenter - : NSTextAlignmentLeft; - - return nsAlign; - } - +namespace FontUtils +{ +NSMutableParagraphStyle* _calculateParagraphStyle(bool enableWrap, int overflow) +{ + NSMutableParagraphStyle* paragraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease]; + paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; + return paragraphStyle; +} + +NSTextAlignment _calculateTextAlignment(cocos2d::Device::TextAlign align) +{ + unsigned uHoriFlag = (int)align & 0x0f; + NSTextAlignment nsAlign = (2 == uHoriFlag) ? NSTextAlignmentRight + : (3 == uHoriFlag) ? NSTextAlignmentCenter + : NSTextAlignmentLeft; - - CGFloat _calculateTextDrawStartWidth(cocos2d::Device::TextAlign align, CGSize realDimensions, CGSize dimensions) + return nsAlign; +} + +CGFloat _calculateTextDrawStartWidth(cocos2d::Device::TextAlign align, CGSize realDimensions, CGSize dimensions) +{ + CGFloat xPadding = 0; + unsigned uHoriFlag = (int)align & 0x0f; + switch (uHoriFlag) { - CGFloat xPadding = 0; - unsigned uHoriFlag = (int)align & 0x0f; - switch (uHoriFlag) { - //center - case 3: xPadding = (dimensions.width - realDimensions.width) / 2.0f; break; - //right - case 2: xPadding = dimensions.width - realDimensions.width; break; - default: break; - } - return xPadding; + // center + case 3: + xPadding = (dimensions.width - realDimensions.width) / 2.0f; + break; + // right + case 2: + xPadding = dimensions.width - realDimensions.width; + break; + default: + break; } + return xPadding; +} } diff --git a/cocos/platform/apple/CCFileUtils-apple.mm b/cocos/platform/apple/CCFileUtils-apple.mm index 1154fa28e549..1931a51c4074 100644 --- a/cocos/platform/apple/CCFileUtils-apple.mm +++ b/cocos/platform/apple/CCFileUtils-apple.mm @@ -36,29 +36,27 @@ of this software and associated documentation files (the "Software"), to deal #include "base/CCDirector.h" #include "platform/CCFileUtils.h" -#define DECLARE_GUARD (void)0 // std::lock_guard mutexGuard(_mutex) +#define DECLARE_GUARD (void)0 // std::lock_guard mutexGuard(_mutex) NS_CC_BEGIN -struct FileUtilsApple::IMPL { - IMPL(NSBundle* bundle):bundle_([NSBundle mainBundle]) {} - void setBundle(NSBundle* bundle) { - bundle_ = bundle; - } - NSBundle* getBundle() const { - return bundle_; - } +struct FileUtilsApple::IMPL +{ + IMPL(NSBundle* bundle) : bundle_([NSBundle mainBundle]) {} + void setBundle(NSBundle* bundle) { bundle_ = bundle; } + NSBundle* getBundle() const { return bundle_; } + private: NSBundle* bundle_; }; -FileUtilsApple::FileUtilsApple() : pimpl_(new IMPL([NSBundle mainBundle])) { -} +FileUtilsApple::FileUtilsApple() : pimpl_(new IMPL([NSBundle mainBundle])) {} FileUtilsApple::~FileUtilsApple() = default; #if CC_FILEUTILS_APPLE_ENABLE_OBJC -void FileUtilsApple::setBundle(NSBundle* bundle) { +void FileUtilsApple::setBundle(NSBundle* bundle) +{ pimpl_->setBundle(bundle); } #endif @@ -72,17 +70,16 @@ void setBundle(NSBundle* bundle) { if (s_sharedFileUtils == nullptr) { s_sharedFileUtils = new FileUtilsApple(); - if(!s_sharedFileUtils->init()) + if (!s_sharedFileUtils->init()) { - delete s_sharedFileUtils; - s_sharedFileUtils = nullptr; - CCLOG("ERROR: Could not init CCFileUtilsApple"); + delete s_sharedFileUtils; + s_sharedFileUtils = nullptr; + CCLOG("ERROR: Could not init CCFileUtilsApple"); } } return s_sharedFileUtils; } - std::string FileUtilsApple::getWritablePath() const { DECLARE_GUARD; @@ -98,9 +95,9 @@ void setBundle(NSBundle* bundle) { } // save to document folder - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - std::string strRet = [documentsDirectory UTF8String]; + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString* documentsDirectory = [paths objectAtIndex:0]; + std::string strRet = [documentsDirectory UTF8String]; strRet.append("/"); return strRet; } @@ -121,8 +118,8 @@ void setBundle(NSBundle* bundle) { size_t pos = filePath.find_last_of("/"); if (pos != std::string::npos) { - file = filePath.substr(pos+1); - path = filePath.substr(0, pos+1); + file = filePath.substr(pos + 1); + path = filePath.substr(0, pos + 1); } else { @@ -130,16 +127,18 @@ void setBundle(NSBundle* bundle) { } NSString* fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:file.c_str()] - ofType:nil - inDirectory:[NSString stringWithUTF8String:path.c_str()]]; - if (fullpath != nil) { + ofType:nil + inDirectory:[NSString stringWithUTF8String:path.c_str()]]; + if (fullpath != nil) + { ret = true; } } else { // Search path is an absolute path. - if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:filePath.c_str()]]) { + if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:filePath.c_str()]]) + { ret = true; } } @@ -147,12 +146,12 @@ void setBundle(NSBundle* bundle) { return ret; } -static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) +static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, struct FTW* ftwbuf) { auto ret = remove(fpath); if (ret) { - log("Fail to remove: %s ",fpath); + log("Fail to remove: %s ", fpath); } return ret; @@ -166,56 +165,62 @@ static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, str return false; } - if (nftw(path.c_str(),unlink_cb, 64, FTW_DEPTH | FTW_PHYS)) + if (nftw(path.c_str(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS)) return false; else return true; } -std::string FileUtilsApple::getPathForDirectory(const std::string &dir, const std::string &resolutionDiretory, const std::string &searchPath) const +std::string FileUtilsApple::getPathForDirectory(const std::string& dir, + const std::string& resolutionDiretory, + const std::string& searchPath) const { auto path = searchPath + resolutionDiretory + dir; - - if(!path.empty() && path[path.length() -1] == '/') { + + if (!path.empty() && path[path.length() - 1] == '/') + { path.erase(path.end() - 1); } - - if(path[0] == '/') + + if (path[0] == '/') { BOOL isDir = false; - if([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:dir.c_str()] - isDirectory:&isDir]) { + if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:dir.c_str()] isDirectory:&isDir]) + { return isDir ? path : ""; } } else { - NSString *fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:path.c_str()] + NSString* fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:path.c_str()] ofType:nil]; - if(fullpath != nil) { + if (fullpath != nil) + { return [fullpath UTF8String]; } } return ""; } - -std::string FileUtilsApple::getFullPathForFilenameWithinDirectory(std::string_view directory, std::string_view filename) const +std::string FileUtilsApple::getFullPathForFilenameWithinDirectory(std::string_view directory, + std::string_view filename) const { if (directory[0] != '/') { NSString* fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:filename.c_str()] - ofType:nil - inDirectory:[NSString stringWithUTF8String:directory.c_str()]]; - if (fullpath != nil) { + ofType:nil + inDirectory:[NSString stringWithUTF8String:directory.c_str()]]; + if (fullpath != nil) + { return [fullpath UTF8String]; } } else { - std::string fullPath = directory+filename; + std::string fullPath = directory + filename; // Search path is an absolute path. - if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:fullPath.c_str()]]) { + if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:fullPath.c_str()]]) + { return fullPath; } } @@ -225,19 +230,22 @@ static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, str bool FileUtilsApple::createDirectory(std::string_view path) const { CCASSERT(!path.empty(), "Invalid path"); - + if (isDirectoryExist(path)) return true; - + NSError* error; - - bool result = [s_fileManager createDirectoryAtPath:[NSString stringWithUTF8String:path.c_str()] withIntermediateDirectories:YES attributes:nil error:&error]; - - if(!result && error != nil) + + bool result = [s_fileManager createDirectoryAtPath:[NSString stringWithUTF8String:path.c_str()] + withIntermediateDirectories:YES + attributes:nil + error:&error]; + + if (!result && error != nil) { CCLOGERROR("Fail to create directory \"%s\": %s", path.c_str(), [error.localizedDescription UTF8String]); } - + return result; } diff --git a/cocos/platform/desktop/CCGLViewImpl-desktop.cpp b/cocos/platform/desktop/CCGLViewImpl-desktop.cpp index 2b3b152d2237..d3183da959a7 100644 --- a/cocos/platform/desktop/CCGLViewImpl-desktop.cpp +++ b/cocos/platform/desktop/CCGLViewImpl-desktop.cpp @@ -575,18 +575,18 @@ void GLViewImpl::pollEvents() void GLViewImpl::enableRetina(bool enabled) { // official v4 comment follow sources - // #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - // _isRetinaEnabled = enabled; - // if (_isRetinaEnabled) - // { - // _retinaFactor = 1; - // } - // else - // { - // _retinaFactor = 2; - // } - // updateFrameSize(); - // #endif + // #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + // _isRetinaEnabled = enabled; + // if (_isRetinaEnabled) + // { + // _retinaFactor = 1; + // } + // else + // { + // _retinaFactor = 2; + // } + // updateFrameSize(); + // #endif } void GLViewImpl::setIMEKeyboardState(bool /*bOpen*/) {} diff --git a/cocos/platform/ios/CCApplication-ios.mm b/cocos/platform/ios/CCApplication-ios.mm index fbf2827c29e1..68d441a26c42 100644 --- a/cocos/platform/ios/CCApplication-ios.mm +++ b/cocos/platform/ios/CCApplication-ios.mm @@ -37,7 +37,7 @@ of this software and associated documentation files (the "Software"), to deal Application::Application() { - CC_ASSERT(! sm_pSharedApplication); + CC_ASSERT(!sm_pSharedApplication); sm_pSharedApplication = this; } @@ -58,7 +58,7 @@ of this software and associated documentation files (the "Software"), to deal void Application::setAnimationInterval(float interval) { - [[CCDirectorCaller sharedDirectorCaller] setAnimationInterval: interval ]; + [[CCDirectorCaller sharedDirectorCaller] setAnimationInterval:interval]; } ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -71,39 +71,39 @@ of this software and associated documentation files (the "Software"), to deal return sm_pSharedApplication; } -const char * Application::getCurrentLanguageCode() +const char* Application::getCurrentLanguageCode() { - static char code[3]={0}; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; - NSString *currentLanguage = [languages objectAtIndex:0]; + static char code[3] = {0}; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSArray* languages = [defaults objectForKey:@"AppleLanguages"]; + NSString* currentLanguage = [languages objectAtIndex:0]; // get the current language code.(such as English is "en", Chinese is "zh" and so on) - NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; - NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; + NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; + NSString* languageCode = [temp objectForKey:NSLocaleLanguageCode]; [languageCode getCString:code maxLength:3 encoding:NSASCIIStringEncoding]; - code[2]='\0'; + code[2] = '\0'; return code; } LanguageType Application::getCurrentLanguage() { // get the current language and country config - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; - NSString *currentLanguage = [languages objectAtIndex:0]; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSArray* languages = [defaults objectForKey:@"AppleLanguages"]; + NSString* currentLanguage = [languages objectAtIndex:0]; // get the current language code.(such as English is "en", Chinese is "zh" and so on) - NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; - NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; + NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; + NSString* languageCode = [temp objectForKey:NSLocaleLanguageCode]; return utils::getLanguageTypeByISO2([languageCode UTF8String]); - } Application::Platform Application::getTargetPlatform() { - if ([UIDevice.currentDevice userInterfaceIdiom] == UIUserInterfaceIdiomPad) // idiom for iOS <= 3.2, otherwise: [UIDevice userInterfaceIdiom] is faster. + if ([UIDevice.currentDevice userInterfaceIdiom] == + UIUserInterfaceIdiomPad) // idiom for iOS <= 3.2, otherwise: [UIDevice userInterfaceIdiom] is faster. { return Platform::OS_IPAD; } @@ -113,21 +113,23 @@ of this software and associated documentation files (the "Software"), to deal } } -std::string Application::getVersion() { +std::string Application::getVersion() +{ NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; - if (version) { + if (version) + { return [version UTF8String]; } return ""; } -bool Application::openURL(const std::string &url) +bool Application::openURL(const std::string& url) { NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; - NSURL* nsUrl = [NSURL URLWithString:msg]; - + NSURL* nsUrl = [NSURL URLWithString:msg]; + id application = [UIApplication sharedApplication]; - if ([application respondsToSelector:@selector(openURL:options:completionHandler:)] ) + if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) { [application openURL:nsUrl options:@{} completionHandler:nil]; } @@ -137,8 +139,6 @@ of this software and associated documentation files (the "Software"), to deal } } -void Application::applicationScreenSizeChanged(int newWidth, int newHeight) { - -} +void Application::applicationScreenSizeChanged(int newWidth, int newHeight) {} NS_CC_END diff --git a/cocos/platform/ios/CCCommon-ios.mm b/cocos/platform/ios/CCCommon-ios.mm index 254978be54fb..fb2a462e6364 100644 --- a/cocos/platform/ios/CCCommon-ios.mm +++ b/cocos/platform/ios/CCCommon-ios.mm @@ -36,29 +36,30 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_BEGIN // ios no MessageBox, use log instead -void ccMessageBox(const char * msg, const char * title) +void ccMessageBox(const char* msg, const char* title) { // only enable it on iOS. // FIXME: Implement it for tvOS #if !defined(CC_TARGET_OS_TVOS) - NSString * tmpTitle = (title) ? [NSString stringWithUTF8String : title] : nil; - NSString * tmpMsg = (msg) ? [NSString stringWithUTF8String : msg] : nil; + NSString* tmpTitle = (title) ? [NSString stringWithUTF8String:title] : nil; + NSString* tmpMsg = (msg) ? [NSString stringWithUTF8String:msg] : nil; UIAlertController* alertController = [UIAlertController alertControllerWithTitle:tmpTitle - message:tmpMsg - preferredStyle:UIAlertControllerStyleAlert]; + message:tmpMsg + preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) {}]; + UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" + style:UIAlertActionStyleDefault + handler:^(UIAlertAction* action){ + }]; [alertController addAction:defaultAction]; auto rootViewController = [UIApplication sharedApplication].windows[0].rootViewController; [rootViewController presentViewController:alertController animated:YES completion:nil]; #endif - } -void LuaLog(const char * format) +void LuaLog(const char* format) { puts(format); } diff --git a/cocos/platform/ios/CCDevice-ios.mm b/cocos/platform/ios/CCDevice-ios.mm index 9b3036fbc858..ae01148a19f8 100644 --- a/cocos/platform/ios/CCDevice-ios.mm +++ b/cocos/platform/ios/CCDevice-ios.mm @@ -34,29 +34,30 @@ of this software and associated documentation files (the "Software"), to deal // Accelerometer #if !defined(CC_TARGET_OS_TVOS) -#import +# import #endif -#import +#import #import // Vibrate #import const float MAX_MEASURE_HEIGHT = 10000; - static NSAttributedString* __attributedStringWithFontSize(NSMutableAttributedString* attributedString, CGFloat fontSize) { { [attributedString beginEditing]; - [attributedString enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attributedString.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { - - UIFont* font = value; - font = [font fontWithSize:fontSize]; + [attributedString enumerateAttribute:NSFontAttributeName + inRange:NSMakeRange(0, attributedString.length) + options:0 + usingBlock:^(id value, NSRange range, BOOL* stop) { + UIFont* font = value; + font = [font fontWithSize:fontSize]; - [attributedString removeAttribute:NSFontAttributeName range:range]; - [attributedString addAttribute:NSFontAttributeName value:font range:range]; - }]; + [attributedString removeAttribute:NSFontAttributeName range:range]; + [attributedString addAttribute:NSFontAttributeName value:font range:range]; + }]; [attributedString endEditing]; } @@ -69,97 +70,116 @@ static CGFloat _calculateTextDrawStartHeight(cocos2d::Device::TextAlign align, C float startH = 0; // vertical alignment unsigned int vAlignment = ((int)align >> 4) & 0x0F; - switch (vAlignment) { - //bottom - case 2:startH = dimensions.height - realDimensions.height;break; - //top - case 1:startH = 0;break; - //center - case 3: startH = (dimensions.height - realDimensions.height) / 2;break; - default: - break; + switch (vAlignment) + { + // bottom + case 2: + startH = dimensions.height - realDimensions.height; + break; + // top + case 1: + startH = 0; + break; + // center + case 3: + startH = (dimensions.height - realDimensions.height) / 2; + break; + default: + break; } return startH; } -static CGSize _calculateShrinkedSizeForString(NSAttributedString **str, +static CGSize _calculateShrinkedSizeForString(NSAttributedString** str, id font, CGSize constrainSize, bool enableWrap, int& newFontSize) { CGRect actualSize = CGRectMake(0, 0, constrainSize.width + 1, constrainSize.height + 1); - int fontSize = [font pointSize]; - fontSize = fontSize + 1; + int fontSize = [font pointSize]; + fontSize = fontSize + 1; - if (!enableWrap) { - while (actualSize.size.width > constrainSize.width || - actualSize.size.height > constrainSize.height) { + if (!enableWrap) + { + while (actualSize.size.width > constrainSize.width || actualSize.size.height > constrainSize.height) + { fontSize = fontSize - 1; - if(fontSize < 0) { + if (fontSize < 0) + { actualSize = CGRectMake(0, 0, 0, 0); break; } - NSMutableAttributedString *mutableString = [[*str mutableCopy] autorelease]; - *str = __attributedStringWithFontSize(mutableString, fontSize); + NSMutableAttributedString* mutableString = [[*str mutableCopy] autorelease]; + *str = __attributedStringWithFontSize(mutableString, fontSize); - CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)*str); + CTFramesetterRef framesetter = + CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef) * str); CGSize targetSize = CGSizeMake(MAX_MEASURE_HEIGHT, MAX_MEASURE_HEIGHT); - CGSize fitSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [(*str) length]), NULL, targetSize, NULL); + CGSize fitSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [(*str) length]), + NULL, targetSize, NULL); CFRelease(framesetter); - if (fitSize.width == 0 || fitSize.height == 0) { + if (fitSize.width == 0 || fitSize.height == 0) + { continue; } - + actualSize.size = fitSize; - - if (constrainSize.width <= 0) { + + if (constrainSize.width <= 0) + { constrainSize.width = fitSize.width; } - if (constrainSize.height <= 0) { + if (constrainSize.height <= 0) + { constrainSize.height = fitSize.height; } - if (fontSize <= 0) { + if (fontSize <= 0) + { break; } } - } - else { - while (actualSize.size.height > constrainSize.height || - actualSize.size.width > constrainSize.width) { + else + { + while (actualSize.size.height > constrainSize.height || actualSize.size.width > constrainSize.width) + { fontSize = fontSize - 1; - if(fontSize < 0) { + if (fontSize < 0) + { actualSize = CGRectMake(0, 0, 0, 0); break; } - - NSMutableAttributedString *mutableString = [[*str mutableCopy] autorelease]; - *str = __attributedStringWithFontSize(mutableString, fontSize); - + + NSMutableAttributedString* mutableString = [[*str mutableCopy] autorelease]; + *str = __attributedStringWithFontSize(mutableString, fontSize); + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(constrainSize.width, MAX_MEASURE_HEIGHT) - options:(NSStringDrawingUsesLineFragmentOrigin) - context:nil].size; + options:(NSStringDrawingUsesLineFragmentOrigin)context:nil] + .size; - if (fitSize.width == 0 || fitSize.height == 0) { + if (fitSize.width == 0 || fitSize.height == 0) + { continue; } - + actualSize.size = fitSize; - - if (constrainSize.height <= 0) { + + if (constrainSize.height <= 0) + { constrainSize.height = fitSize.height; } - if (constrainSize.width <= 0) { + if (constrainSize.width <= 0) + { constrainSize.width = fitSize.width; } - if (fontSize <= 0) { + if (fontSize <= 0) + { break; } } - } newFontSize = fontSize; @@ -170,16 +190,15 @@ static CGSize _calculateShrinkedSizeForString(NSAttributedString **str, #define SENSOR_DELAY_GAME 0.02 #if !defined(CC_TARGET_OS_TVOS) -@interface CCAccelerometerDispatcher : NSObject -{ - cocos2d::Acceleration *_acceleration; - CMMotionManager *_motionManager; +@interface CCAccelerometerDispatcher : NSObject { + cocos2d::Acceleration* _acceleration; + CMMotionManager* _motionManager; } -+ (id) sharedAccelerometerDispatcher; -- (id) init; -- (void) setAccelerometerEnabled: (bool) isEnabled; -- (void) setAccelerometerInterval:(float) interval; ++ (id)sharedAccelerometerDispatcher; +- (id)init; +- (void)setAccelerometerEnabled:(bool)isEnabled; +- (void)setAccelerometerInterval:(float)interval; @end @@ -187,26 +206,28 @@ @implementation CCAccelerometerDispatcher static CCAccelerometerDispatcher* s_pAccelerometerDispatcher; -+ (id) sharedAccelerometerDispatcher ++ (id)sharedAccelerometerDispatcher { - if (s_pAccelerometerDispatcher == nil) { + if (s_pAccelerometerDispatcher == nil) + { s_pAccelerometerDispatcher = [[self alloc] init]; } return s_pAccelerometerDispatcher; } -- (id) init +- (id)init { - if( (self = [super init]) ) { - _acceleration = new cocos2d::Acceleration(); - _motionManager = [[CMMotionManager alloc] init]; + if ((self = [super init])) + { + _acceleration = new cocos2d::Acceleration(); + _motionManager = [[CMMotionManager alloc] init]; _motionManager.accelerometerUpdateInterval = SENSOR_DELAY_GAME; } return self; } -- (void) dealloc +- (void)dealloc { s_pAccelerometerDispatcher = nullptr; delete _acceleration; @@ -214,13 +235,14 @@ - (void) dealloc [super dealloc]; } -- (void) setAccelerometerEnabled: (bool) isEnabled +- (void)setAccelerometerEnabled:(bool)isEnabled { if (isEnabled) { - [_motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { - [self accelerometer:accelerometerData]; - }]; + [_motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] + withHandler:^(CMAccelerometerData* accelerometerData, NSError* error) { + [self accelerometer:accelerometerData]; + }]; } else { @@ -228,16 +250,16 @@ - (void) setAccelerometerEnabled: (bool) isEnabled } } --(void) setAccelerometerInterval:(float)interval +- (void)setAccelerometerInterval:(float)interval { _motionManager.accelerometerUpdateInterval = interval; } -- (void)accelerometer:(CMAccelerometerData *)accelerometerData +- (void)accelerometer:(CMAccelerometerData*)accelerometerData { - _acceleration->x = accelerometerData.acceleration.x; - _acceleration->y = accelerometerData.acceleration.y; - _acceleration->z = accelerometerData.acceleration.z; + _acceleration->x = accelerometerData.acceleration.x; + _acceleration->y = accelerometerData.acceleration.y; + _acceleration->z = accelerometerData.acceleration.z; _acceleration->timestamp = accelerometerData.timestamp; double tmp = _acceleration->x; @@ -251,28 +273,28 @@ - (void)accelerometer:(CMAccelerometerData *)accelerometerData // Fallback on earlier versions orientation = [[UIApplication sharedApplication] statusBarOrientation]; } - + switch (orientation) { - case UIInterfaceOrientationLandscapeRight: - _acceleration->x = -_acceleration->y; - _acceleration->y = tmp; - break; - - case UIInterfaceOrientationLandscapeLeft: - _acceleration->x = _acceleration->y; - _acceleration->y = -tmp; - break; - - case UIInterfaceOrientationPortraitUpsideDown: - _acceleration->x = -_acceleration->y; - _acceleration->y = -tmp; - break; - - case UIInterfaceOrientationPortrait: - break; - default: - NSAssert(false, @"unknown orientation"); + case UIInterfaceOrientationLandscapeRight: + _acceleration->x = -_acceleration->y; + _acceleration->y = tmp; + break; + + case UIInterfaceOrientationLandscapeLeft: + _acceleration->x = _acceleration->y; + _acceleration->y = -tmp; + break; + + case UIInterfaceOrientationPortraitUpsideDown: + _acceleration->x = -_acceleration->y; + _acceleration->y = -tmp; + break; + + case UIInterfaceOrientationPortrait: + break; + default: + NSAssert(false, @"unknown orientation"); } cocos2d::EventAcceleration event(*_acceleration); @@ -280,8 +302,7 @@ - (void)accelerometer:(CMAccelerometerData *)accelerometerData dispatcher->dispatchEvent(&event); } @end -#endif // !defined(CC_TARGET_OS_TVOS) - +#endif // !defined(CC_TARGET_OS_TVOS) // @@ -295,23 +316,28 @@ - (void)accelerometer:(CMAccelerometerData *)accelerometerData { float scale = 1.0f; - if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { + if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) + { scale = [[UIScreen mainScreen] scale]; } UIUserInterfaceIdiom userInterfaceIdiom = [UIDevice.currentDevice userInterfaceIdiom]; - if (userInterfaceIdiom == UIUserInterfaceIdiomPad) { + if (userInterfaceIdiom == UIUserInterfaceIdiomPad) + { dpi = 132 * scale; - } else if (userInterfaceIdiom == UIUserInterfaceIdiomPhone) { + } + else if (userInterfaceIdiom == UIUserInterfaceIdiomPhone) + { dpi = 163 * scale; - } else { + } + else + { dpi = 160 * scale; } } return dpi; } - void Device::setAccelerometerEnabled(bool isEnabled) { #if !defined(CC_TARGET_OS_TVOS) @@ -330,67 +356,74 @@ - (void)accelerometer:(CMAccelerometerData *)accelerometerData { unsigned int height; unsigned int width; - bool isPremultipliedAlpha; - bool hasShadow; - CGSize shadowOffset; - float shadowBlur; - float shadowOpacity; - bool hasStroke; - float strokeColorR; - float strokeColorG; - float strokeColorB; - float strokeColorA; - float strokeSize; - float tintColorR; - float tintColorG; - float tintColorB; - float tintColorA; - - unsigned char* data; + bool isPremultipliedAlpha; + bool hasShadow; + CGSize shadowOffset; + float shadowBlur; + float shadowOpacity; + bool hasStroke; + float strokeColorR; + float strokeColorG; + float strokeColorB; + float strokeColorA; + float strokeSize; + float tintColorR; + float tintColorG; + float tintColorB; + float tintColorA; + + unsigned char* data; } tImageInfo; -static CGSize _calculateStringSize(NSAttributedString *str, id font, CGSize *constrainSize, bool enableWrap, int overflow) +static CGSize _calculateStringSize(NSAttributedString* str, + id font, + CGSize* constrainSize, + bool enableWrap, + int overflow) { CGSize textRect = CGSizeZero; - textRect.width = constrainSize->width > 0 ? constrainSize->width - : MAX_MEASURE_HEIGHT; - textRect.height = constrainSize->height > 0 ? constrainSize->height - : MAX_MEASURE_HEIGHT; - - if (overflow == 1) { - if(!enableWrap) { - textRect.width = MAX_MEASURE_HEIGHT; + textRect.width = constrainSize->width > 0 ? constrainSize->width : MAX_MEASURE_HEIGHT; + textRect.height = constrainSize->height > 0 ? constrainSize->height : MAX_MEASURE_HEIGHT; + + if (overflow == 1) + { + if (!enableWrap) + { + textRect.width = MAX_MEASURE_HEIGHT; textRect.height = MAX_MEASURE_HEIGHT; - } else { + } + else + { textRect.height = MAX_MEASURE_HEIGHT; } } CGSize dim; dim = [str boundingRectWithSize:CGSizeMake(textRect.width, textRect.height) - options:(NSStringDrawingUsesLineFragmentOrigin) - context:nil].size; + options:(NSStringDrawingUsesLineFragmentOrigin)context:nil] + .size; - dim.width = ceilf(dim.width); + dim.width = ceilf(dim.width); dim.height = ceilf(dim.height); return dim; } -static id _createSystemFont( const char * fontName, int size) +static id _createSystemFont(const char* fontName, int size) { - NSString * fntName = [NSString stringWithUTF8String:fontName]; - // On iOS custom fonts must be listed beforehand in the App info.plist (in order to be usable) and referenced only the by the font family name itself when - // calling [UIFont fontWithName]. Therefore even if the developer adds 'SomeFont.ttf' or 'fonts/SomeFont.ttf' to the App .plist, the font must - // be referenced as 'SomeFont' when calling [UIFont fontWithName]. Hence we strip out the folder path components and the extension here in order to get just - // the font family name itself. This stripping step is required especially for references to user fonts stored in CCB files; CCB files appear to store - // the '.ttf' extensions when referring to custom fonts. + NSString* fntName = [NSString stringWithUTF8String:fontName]; + // On iOS custom fonts must be listed beforehand in the App info.plist (in order to be usable) and referenced only + // the by the font family name itself when calling [UIFont fontWithName]. Therefore even if the developer adds + // 'SomeFont.ttf' or 'fonts/SomeFont.ttf' to the App .plist, the font must be referenced as 'SomeFont' when calling + // [UIFont fontWithName]. Hence we strip out the folder path components and the extension here in order to get just + // the font family name itself. This stripping step is required especially for references to user fonts stored in + // CCB files; CCB files appear to store the '.ttf' extensions when referring to custom fonts. fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; - + // create the font id font = [UIFont fontWithName:fntName size:size]; - + if (!font) { font = [UIFont systemFontOfSize:size]; @@ -398,86 +431,89 @@ static id _createSystemFont( const char * fontName, int size) return font; } -static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, const char * fontName, int size, tImageInfo* info, bool enableWrap, int overflow) +static bool _initWithString(const char* text, + cocos2d::Device::TextAlign align, + const char* fontName, + int size, + tImageInfo* info, + bool enableWrap, + int overflow) { bool bRet = false; do { - CC_BREAK_IF(! text || ! info); + CC_BREAK_IF(!text || !info); id font = _createSystemFont(fontName, size); - - CC_BREAK_IF(! font); - - NSString * str = [NSString stringWithUTF8String:text]; + + CC_BREAK_IF(!font); + + NSString* str = [NSString stringWithUTF8String:text]; CC_BREAK_IF(!str); CGSize dimensions; - dimensions.width = info->width; - dimensions.height = info->height; + dimensions.width = info->width; + dimensions.height = info->height; - NSTextAlignment nsAlign = FontUtils::_calculateTextAlignment(align); + NSTextAlignment nsAlign = FontUtils::_calculateTextAlignment(align); NSMutableParagraphStyle* paragraphStyle = FontUtils::_calculateParagraphStyle(enableWrap, overflow); - paragraphStyle.alignment = nsAlign; + paragraphStyle.alignment = nsAlign; // measure text size with specified font and determine the rectangle to draw text in - UIColor *foregroundColor = [UIColor colorWithRed:info->tintColorR - green:info->tintColorG - blue:info->tintColorB - alpha:info->tintColorA]; + UIColor* foregroundColor = [UIColor colorWithRed:info->tintColorR + green:info->tintColorG + blue:info->tintColorB + alpha:info->tintColorA]; // adjust text rect according to overflow - NSMutableDictionary* tokenAttributesDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: - foregroundColor,NSForegroundColorAttributeName, - font, NSFontAttributeName, - paragraphStyle, NSParagraphStyleAttributeName, nil]; + NSMutableDictionary* tokenAttributesDict = [NSMutableDictionary + dictionaryWithObjectsAndKeys:foregroundColor, NSForegroundColorAttributeName, font, NSFontAttributeName, + paragraphStyle, NSParagraphStyleAttributeName, nil]; - NSAttributedString *stringWithAttributes =[[[NSAttributedString alloc] initWithString:str - attributes:tokenAttributesDict] autorelease]; + NSAttributedString* stringWithAttributes = + [[[NSAttributedString alloc] initWithString:str attributes:tokenAttributesDict] autorelease]; int shrinkFontSize = size; CGSize realDimensions; - if (overflow == 2) { - realDimensions = _calculateShrinkedSizeForString(&stringWithAttributes, font, dimensions, enableWrap, shrinkFontSize); - } else { + if (overflow == 2) + { + realDimensions = + _calculateShrinkedSizeForString(&stringWithAttributes, font, dimensions, enableWrap, shrinkFontSize); + } + else + { realDimensions = _calculateStringSize(stringWithAttributes, font, &dimensions, enableWrap, overflow); } - CC_BREAK_IF(realDimensions.width <= 0 || realDimensions.height <= 0); - if (dimensions.width <= 0) { + if (dimensions.width <= 0) + { dimensions.width = realDimensions.width; } - if (dimensions.height <= 0) { + if (dimensions.height <= 0) + { dimensions.height = realDimensions.height; } // compute start point CGFloat yPadding = _calculateTextDrawStartHeight(align, realDimensions, dimensions); CGFloat xPadding = FontUtils::_calculateTextDrawStartWidth(align, realDimensions, dimensions); - + NSInteger POTWide = dimensions.width; NSInteger POTHigh = dimensions.height; - - CGRect textRect = CGRectMake(xPadding, yPadding, - realDimensions.width, realDimensions.height); + CGRect textRect = CGRectMake(xPadding, yPadding, realDimensions.width, realDimensions.height); NSUInteger textureSize = POTWide * POTHigh * 4; - unsigned char* data = (unsigned char*)malloc(sizeof(unsigned char) * textureSize); + unsigned char* data = (unsigned char*)malloc(sizeof(unsigned char) * textureSize); memset(data, 0, textureSize); // draw text - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate(data, - POTWide, - POTHigh, - 8, - POTWide * 4, - colorSpace, - kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(data, POTWide, POTHigh, 8, POTWide * 4, colorSpace, + kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); if (!context) { CGColorSpaceRelease(colorSpace); @@ -486,16 +522,12 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, } // text color - CGContextSetRGBFillColor(context, - info->tintColorR, - info->tintColorG, - info->tintColorB, - info->tintColorA); + CGContextSetRGBFillColor(context, info->tintColorR, info->tintColorG, info->tintColorB, info->tintColorA); // move Y rendering to the top of the image CGContextTranslateCTM(context, 0.0f, POTHigh); - - //NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential + + // NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential CGContextScaleCTM(context, 1.0f, -1.0f); // store the current context UIGraphicsPushContext(context); @@ -506,34 +538,30 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, CGContextBeginTransparencyLayerWithRect(context, textRect, NULL); - - if ( info->hasStroke ) + if (info->hasStroke) { CGContextSetTextDrawingMode(context, kCGTextStroke); - UIColor *strokeColor = [UIColor colorWithRed:info->strokeColorR - green:info->strokeColorG - blue:info->strokeColorB - alpha:info->strokeColorA]; - - - NSMutableDictionary* tokenAttributesDict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys: - foregroundColor,NSForegroundColorAttributeName, - font, NSFontAttributeName, - paragraphStyle, NSParagraphStyleAttributeName, nil]; - [tokenAttributesDict2 setObject:[NSNumber numberWithFloat: info->strokeSize / shrinkFontSize * 100] + UIColor* strokeColor = [UIColor colorWithRed:info->strokeColorR + green:info->strokeColorG + blue:info->strokeColorB + alpha:info->strokeColorA]; + + NSMutableDictionary* tokenAttributesDict2 = [NSMutableDictionary + dictionaryWithObjectsAndKeys:foregroundColor, NSForegroundColorAttributeName, font, NSFontAttributeName, + paragraphStyle, NSParagraphStyleAttributeName, nil]; + [tokenAttributesDict2 setObject:[NSNumber numberWithFloat:info->strokeSize / shrinkFontSize * 100] forKey:NSStrokeWidthAttributeName]; - [tokenAttributesDict2 setObject:strokeColor forKey:NSStrokeColorAttributeName]; - - NSAttributedString *strokeString =[[[NSAttributedString alloc] initWithString:str - attributes:tokenAttributesDict2] autorelease]; - - if(overflow == 2){ + [tokenAttributesDict2 setObject:strokeColor forKey:NSStrokeColorAttributeName]; + + NSAttributedString* strokeString = + [[[NSAttributedString alloc] initWithString:str attributes:tokenAttributesDict2] autorelease]; + + if (overflow == 2) + { _calculateShrinkedSizeForString(&strokeString, font, dimensions, enableWrap, shrinkFontSize); } - [strokeString drawInRect:textRect]; - } CGContextSetTextDrawingMode(context, kCGTextFill); @@ -548,51 +576,57 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, // release the context CGContextRelease(context); - + // output params info->data = data; info->isPremultipliedAlpha = true; info->width = static_cast(POTWide); info->height = static_cast(POTHigh); - bRet = true; + bRet = true; } while (0); return bRet; } - -Data Device::getTextureDataForText(const char * text, const FontDefinition& textDefinition, TextAlign align, int &width, int &height, bool& hasPremultipliedAlpha) +Data Device::getTextureDataForText(const char* text, + const FontDefinition& textDefinition, + TextAlign align, + int& width, + int& height, + bool& hasPremultipliedAlpha) { Data ret; - do { - tImageInfo info = {0}; - info.width = textDefinition._dimensions.width; - info.height = textDefinition._dimensions.height; - info.hasShadow = textDefinition._shadow._shadowEnabled; - info.shadowOffset.width = textDefinition._shadow._shadowOffset.width; - info.shadowOffset.height = textDefinition._shadow._shadowOffset.height; - info.shadowBlur = textDefinition._shadow._shadowBlur; - info.shadowOpacity = textDefinition._shadow._shadowOpacity; - info.hasStroke = textDefinition._stroke._strokeEnabled; - info.strokeColorR = textDefinition._stroke._strokeColor.r / 255.0f; - info.strokeColorG = textDefinition._stroke._strokeColor.g / 255.0f; - info.strokeColorB = textDefinition._stroke._strokeColor.b / 255.0f; - info.strokeColorA = textDefinition._stroke._strokeAlpha / 255.0f; - info.strokeSize = textDefinition._stroke._strokeSize; - info.tintColorR = textDefinition._fontFillColor.r / 255.0f; - info.tintColorG = textDefinition._fontFillColor.g / 255.0f; - info.tintColorB = textDefinition._fontFillColor.b / 255.0f; - info.tintColorA = textDefinition._fontAlpha / 255.0f; - - if (! _initWithString(text, align, textDefinition._fontName.c_str(), textDefinition._fontSize, &info, textDefinition._enableWrap, textDefinition._overflow)) + do + { + tImageInfo info = {0}; + info.width = textDefinition._dimensions.width; + info.height = textDefinition._dimensions.height; + info.hasShadow = textDefinition._shadow._shadowEnabled; + info.shadowOffset.width = textDefinition._shadow._shadowOffset.width; + info.shadowOffset.height = textDefinition._shadow._shadowOffset.height; + info.shadowBlur = textDefinition._shadow._shadowBlur; + info.shadowOpacity = textDefinition._shadow._shadowOpacity; + info.hasStroke = textDefinition._stroke._strokeEnabled; + info.strokeColorR = textDefinition._stroke._strokeColor.r / 255.0f; + info.strokeColorG = textDefinition._stroke._strokeColor.g / 255.0f; + info.strokeColorB = textDefinition._stroke._strokeColor.b / 255.0f; + info.strokeColorA = textDefinition._stroke._strokeAlpha / 255.0f; + info.strokeSize = textDefinition._stroke._strokeSize; + info.tintColorR = textDefinition._fontFillColor.r / 255.0f; + info.tintColorG = textDefinition._fontFillColor.g / 255.0f; + info.tintColorB = textDefinition._fontFillColor.b / 255.0f; + info.tintColorA = textDefinition._fontAlpha / 255.0f; + + if (!_initWithString(text, align, textDefinition._fontName.c_str(), textDefinition._fontSize, &info, + textDefinition._enableWrap, textDefinition._overflow)) { break; } height = info.height; - width = info.width; - ret.fastSet(info.data,width * height * 4); + width = info.width; + ret.fastSet(info.data, width * height * 4); hasPremultipliedAlpha = true; } while (0); @@ -605,22 +639,23 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, } /*! - @brief Only works on iOS devices that support vibration (such as iPhone). Should only be used for important alerts. Use risks rejection in iTunes Store. + @brief Only works on iOS devices that support vibration (such as iPhone). Should only be used for important alerts. Use + risks rejection in iTunes Store. @param duration ignored for iOS */ void Device::vibrate(float duration) { // See http://stackoverflow.com/questions/4724980/making-the-iphone-vibrate // should vibrate no matter it is silient or not - if([[UIDevice currentDevice].model isEqualToString:@"iPhone"]) + if ([[UIDevice currentDevice].model isEqualToString:@"iPhone"]) { - AudioServicesPlaySystemSound (1352); //works ALWAYS as of this post + AudioServicesPlaySystemSound(1352); // works ALWAYS as of this post } else { // Not an iPhone, so doesn't have vibrate // play the less annoying tick noise or one of your own - AudioServicesPlayAlertSound (kSystemSoundID_Vibrate); + AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); } } diff --git a/cocos/platform/ios/CCDirectorCaller-ios.mm b/cocos/platform/ios/CCDirectorCaller-ios.mm index 6b34dd90f105..53c4e249737b 100644 --- a/cocos/platform/ios/CCDirectorCaller-ios.mm +++ b/cocos/platform/ios/CCDirectorCaller-ios.mm @@ -35,50 +35,55 @@ of this software and associated documentation files (the "Software"), to deal static id s_sharedDirectorCaller; -@interface NSObject(CADisplayLink) -+(id) displayLinkWithTarget: (id)arg1 selector:(SEL)arg2; --(void) addToRunLoop: (id)arg1 forMode: (id)arg2; --(void) setFrameInterval: (NSInteger)interval; --(void) invalidate; +@interface NSObject (CADisplayLink) ++ (id)displayLinkWithTarget:(id)arg1 selector:(SEL)arg2; +- (void)addToRunLoop:(id)arg1 forMode:(id)arg2; +- (void)setFrameInterval:(NSInteger)interval; +- (void)invalidate; @end @implementation CCDirectorCaller @synthesize interval; -+(id) sharedDirectorCaller ++ (id)sharedDirectorCaller { if (s_sharedDirectorCaller == nil) { s_sharedDirectorCaller = [[CCDirectorCaller alloc] init]; } - + return s_sharedDirectorCaller; } -+(void) destroy ++ (void)destroy { [s_sharedDirectorCaller stopMainLoop]; [s_sharedDirectorCaller release]; s_sharedDirectorCaller = nil; } - - (instancetype)init { if (self = [super init]) { - isAppActive = [UIApplication sharedApplication].applicationState == UIApplicationStateActive; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self selector:@selector(appDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil]; - [nc addObserver:self selector:@selector(appDidBecomeInactive) name:UIApplicationWillResignActiveNotification object:nil]; - + isAppActive = [UIApplication sharedApplication].applicationState == UIApplicationStateActive; + NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(appDidBecomeActive) + name:UIApplicationDidBecomeActiveNotification + object:nil]; + [nc addObserver:self + selector:@selector(appDidBecomeInactive) + name:UIApplicationWillResignActiveNotification + object:nil]; + self.interval = 1; } return self; } --(void) dealloc +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [displayLink release]; @@ -100,52 +105,53 @@ - (void)appDidBecomeInactive isAppActive = NO; } --(void) startMainLoop +- (void)startMainLoop { // Director::setAnimationInterval() is called, we should invalidate it first [self stopMainLoop]; - + displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(doCaller:)]; - [displayLink setFrameInterval: self.interval]; + [displayLink setFrameInterval:self.interval]; [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; } --(void) stopMainLoop +- (void)stopMainLoop { [displayLink invalidate]; displayLink = nil; } --(void) setAnimationInterval:(double)intervalNew +- (void)setAnimationInterval:(double)intervalNew { // Director::setAnimationInterval() is called, we should invalidate it first [self stopMainLoop]; - + self.interval = 60.0 * intervalNew; - + displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(doCaller:)]; - [displayLink setFrameInterval: self.interval]; + [displayLink setFrameInterval:self.interval]; [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; } - --(void) doCaller: (id) sender + +- (void)doCaller:(id)sender { - if (isAppActive) { + if (isAppActive) + { cocos2d::Director* director = cocos2d::Director::getInstance(); #if defined(CC_USE_GLES) EAGLContext* cocos2dxContext = [(CCEAGLView*)director->getOpenGLView()->getEAGLView() context]; if (cocos2dxContext != [EAGLContext currentContext]) glFlush(); - - [EAGLContext setCurrentContext: cocos2dxContext]; + + [EAGLContext setCurrentContext:cocos2dxContext]; #endif CFTimeInterval dt = ((CADisplayLink*)displayLink).timestamp - lastDisplayTime; - lastDisplayTime = ((CADisplayLink*)displayLink).timestamp; + lastDisplayTime = ((CADisplayLink*)displayLink).timestamp; director->mainLoop(dt); } } --(void)initLastDisplayTime +- (void)initLastDisplayTime { struct mach_timebase_info timeBaseInfo; mach_timebase_info(&timeBaseInfo); diff --git a/cocos/platform/ios/CCEAGLView-ios.mm b/cocos/platform/ios/CCEAGLView-ios.mm index 6cd9b6c270ec..ca1bccdadd3f 100644 --- a/cocos/platform/ios/CCEAGLView-ios.mm +++ b/cocos/platform/ios/CCEAGLView-ios.mm @@ -70,21 +70,21 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE #import "platform/ios/CCInputView-ios.h" #if defined(CC_USE_METAL) -#import -#import "renderer/backend/metal/DeviceMTL.h" -#import "renderer/backend/metal/UtilsMTL.h" +# import +# import "renderer/backend/metal/DeviceMTL.h" +# import "renderer/backend/metal/UtilsMTL.h" #else -#import "platform/ios/CCGLViewImpl-ios.h" -#import "platform/ios/CCES2Renderer-ios.h" -#import "platform/ios/OpenGL_Internal-ios.h" +# import "platform/ios/CCGLViewImpl-ios.h" +# import "platform/ios/CCES2Renderer-ios.h" +# import "platform/ios/OpenGL_Internal-ios.h" #endif -//CLASS IMPLEMENTATIONS: +// CLASS IMPLEMENTATIONS: -#define IOS_MAX_TOUCHES_COUNT 10 +#define IOS_MAX_TOUCHES_COUNT 10 @interface CCEAGLView () -@property (nonatomic) CCInputView* textInputView; +@property(nonatomic) CCInputView* textInputView; @property(nonatomic, readwrite, assign) BOOL isKeyboardShown; @property(nonatomic, copy) NSNotification* keyboardShowNotification; @property(nonatomic, assign) CGRect originalRect; @@ -92,17 +92,17 @@ @interface CCEAGLView () @implementation CCEAGLView -@synthesize surfaceSize=size_; -@synthesize pixelFormat=pixelformat_, depthFormat=depthFormat_; +@synthesize surfaceSize = size_; +@synthesize pixelFormat = pixelformat_, depthFormat = depthFormat_; #if !defined(CC_USE_METAL) -@synthesize context=context_; +@synthesize context = context_; #endif -@synthesize multiSampling=multiSampling_; +@synthesize multiSampling = multiSampling_; @synthesize keyboardShowNotification = keyboardShowNotification_; @synthesize isKeyboardShown; @synthesize originalRect = originalRect_; -+ (Class) layerClass ++ (Class)layerClass { #if defined(CC_USE_METAL) return [CAMetalLayer class]; @@ -111,153 +111,191 @@ + (Class) layerClass #endif } -+ (id) viewWithFrame:(CGRect)frame ++ (id)viewWithFrame:(CGRect)frame { return [[[self alloc] initWithFrame:frame] autorelease]; } -+ (id) viewWithFrame:(CGRect)frame pixelFormat:(NSString*)format ++ (id)viewWithFrame:(CGRect)frame pixelFormat:(NSString*)format { - return [[[self alloc]initWithFrame:frame pixelFormat:format] autorelease]; + return [[[self alloc] initWithFrame:frame pixelFormat:format] autorelease]; } -+ (id) viewWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GLuint)depth ++ (id)viewWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GLuint)depth { - return [[[self alloc] initWithFrame:frame pixelFormat:format depthFormat:depth preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0] autorelease]; + return [[[self alloc] initWithFrame:frame + pixelFormat:format + depthFormat:depth + preserveBackbuffer:NO + sharegroup:nil + multiSampling:NO + numberOfSamples:0] autorelease]; } -+ (id) viewWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GLuint)depth preserveBackbuffer:(BOOL)retained sharegroup:(EAGLSharegroup*)sharegroup multiSampling:(BOOL)multisampling numberOfSamples:(unsigned int)samples ++ (id)viewWithFrame:(CGRect)frame + pixelFormat:(NSString*)format + depthFormat:(GLuint)depth + preserveBackbuffer:(BOOL)retained + sharegroup:(EAGLSharegroup*)sharegroup + multiSampling:(BOOL)multisampling + numberOfSamples:(unsigned int)samples { - return [[[self alloc]initWithFrame:frame pixelFormat:format depthFormat:depth preserveBackbuffer:retained sharegroup:sharegroup multiSampling:multisampling numberOfSamples:samples] autorelease]; + return [[[self alloc] initWithFrame:frame + pixelFormat:format + depthFormat:depth + preserveBackbuffer:retained + sharegroup:sharegroup + multiSampling:multisampling + numberOfSamples:samples] autorelease]; } -- (id) initWithFrame:(CGRect)frame +- (id)initWithFrame:(CGRect)frame { - return [self initWithFrame:frame pixelFormat:kEAGLColorFormatRGB565 depthFormat:0 preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; + return [self initWithFrame:frame + pixelFormat:kEAGLColorFormatRGB565 + depthFormat:0 + preserveBackbuffer:NO + sharegroup:nil + multiSampling:NO + numberOfSamples:0]; } -- (id) initWithFrame:(CGRect)frame pixelFormat:(NSString*)format +- (id)initWithFrame:(CGRect)frame pixelFormat:(NSString*)format { - return [self initWithFrame:frame pixelFormat:format depthFormat:0 preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; + return [self initWithFrame:frame + pixelFormat:format + depthFormat:0 + preserveBackbuffer:NO + sharegroup:nil + multiSampling:NO + numberOfSamples:0]; } -- (id) initWithFrame:(CGRect)frame pixelFormat:(NSString*)format depthFormat:(GLuint)depth preserveBackbuffer:(BOOL)retained sharegroup:(EAGLSharegroup*)sharegroup multiSampling:(BOOL)sampling numberOfSamples:(unsigned int)nSamples +- (id)initWithFrame:(CGRect)frame + pixelFormat:(NSString*)format + depthFormat:(GLuint)depth + preserveBackbuffer:(BOOL)retained + sharegroup:(EAGLSharegroup*)sharegroup + multiSampling:(BOOL)sampling + numberOfSamples:(unsigned int)nSamples { - if((self = [super initWithFrame:frame])) + if ((self = [super initWithFrame:frame])) { self.textInputView = [[CCInputView alloc] initWithFrame:frame]; - originalRect_ = self.frame; + originalRect_ = self.frame; self.keyboardShowNotification = nil; if ([self respondsToSelector:@selector(setContentScaleFactor:)]) { self.contentScaleFactor = [[UIScreen mainScreen] scale]; } - + #if defined(CC_USE_METAL) id device = MTLCreateSystemDefaultDevice(); if (!device) { - CCLOG("Doesn't support metal."); - return nil; + CCLOG("Doesn't support metal."); + return nil; } - CAMetalLayer* metalLayer = (CAMetalLayer*)[self layer]; - metalLayer.device = device; - metalLayer.pixelFormat = MTLPixelFormatBGRA8Unorm; + CAMetalLayer* metalLayer = (CAMetalLayer*)[self layer]; + metalLayer.device = device; + metalLayer.pixelFormat = MTLPixelFormatBGRA8Unorm; metalLayer.framebufferOnly = YES; cocos2d::backend::DeviceMTL::setCAMetalLayer(metalLayer); #else - pixelformat_ = format; - depthFormat_ = depth; - multiSampling_ = sampling; - requestedSamples_ = nSamples; + pixelformat_ = format; + depthFormat_ = depth; + multiSampling_ = sampling; + requestedSamples_ = nSamples; preserveBackbuffer_ = retained; - if( ! [self setupSurfaceWithSharegroup:sharegroup] ) { + if (![self setupSurfaceWithSharegroup:sharegroup]) + { [self release]; return nil; } #endif } - + return self; } --(id) initWithCoder:(NSCoder *)aDecoder +- (id)initWithCoder:(NSCoder*)aDecoder { - if ( (self = [super initWithCoder:aDecoder]) ) + if ((self = [super initWithCoder:aDecoder])) { self.textInputView = [[CCInputView alloc] initWithCoder:aDecoder]; #if defined(CC_USE_METAL) size_ = [self bounds].size; #else CAEAGLLayer* eaglLayer = (CAEAGLLayer*)[self layer]; - - pixelformat_ = kEAGLColorFormatRGB565; - depthFormat_ = 0; // GL_DEPTH_COMPONENT24_OES; - multiSampling_= NO; + + pixelformat_ = kEAGLColorFormatRGB565; + depthFormat_ = 0; // GL_DEPTH_COMPONENT24_OES; + multiSampling_ = NO; requestedSamples_ = 0; - size_ = [eaglLayer bounds].size; - - if( ! [self setupSurfaceWithSharegroup:nil] ) { + size_ = [eaglLayer bounds].size; + + if (![self setupSurfaceWithSharegroup:nil]) + { [self release]; return nil; } #endif } - + return self; } --(int) getWidth +- (int)getWidth { CGSize bound = [self bounds].size; return (int)bound.width * self.contentScaleFactor; } --(int) getHeight +- (int)getHeight { CGSize bound = [self bounds].size; return (int)bound.height * self.contentScaleFactor; } #if !defined(CC_USE_METAL) --(BOOL) setupSurfaceWithSharegroup:(EAGLSharegroup*)sharegroup +- (BOOL)setupSurfaceWithSharegroup:(EAGLSharegroup*)sharegroup { - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - + CAEAGLLayer* eaglLayer = (CAEAGLLayer*)self.layer; + eaglLayer.opaque = YES; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:preserveBackbuffer_], kEAGLDrawablePropertyRetainedBacking, - pixelformat_, kEAGLDrawablePropertyColorFormat, nil]; - - + eaglLayer.drawableProperties = + [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:preserveBackbuffer_], + kEAGLDrawablePropertyRetainedBacking, pixelformat_, + kEAGLDrawablePropertyColorFormat, nil]; + renderer_ = [[CCES2Renderer alloc] initWithDepthFormat:depthFormat_ - withPixelFormat:[self convertPixelFormat:pixelformat_] - withSharegroup:sharegroup - withMultiSampling:multiSampling_ - withNumberOfSamples:requestedSamples_]; - + withPixelFormat:[self convertPixelFormat:pixelformat_] + withSharegroup:sharegroup + withMultiSampling:multiSampling_ + withNumberOfSamples:requestedSamples_]; + NSAssert(renderer_, @"OpenGL ES 2.O is required."); if (!renderer_) return NO; - + context_ = [renderer_ context]; - - #if GL_EXT_discard_framebuffer == 1 - discardFramebufferSupported_ = YES; - #else - discardFramebufferSupported_ = NO; - #endif - + +# if GL_EXT_discard_framebuffer == 1 + discardFramebufferSupported_ = YES; +# else + discardFramebufferSupported_ = NO; +# endif + CHECK_GL_ERROR(); - + return YES; } #endif -- (void) dealloc +- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; // remove keyboard notification + [[NSNotificationCenter defaultCenter] removeObserver:self]; // remove keyboard notification #if !defined(CC_USE_METAL) [renderer_ release]; #endif @@ -265,29 +303,29 @@ - (void) dealloc [super dealloc]; } -- (void) layoutSubviews +- (void)layoutSubviews { if (!cocos2d::Director::getInstance()->isValid()) return; - + #if defined(CC_USE_METAL) size_ = [self bounds].size; size_.width *= self.contentScaleFactor; size_.height *= self.contentScaleFactor; - cocos2d::backend::UtilsMTL::resizeDefaultAttachmentTexture(size_.width, size_.height); + cocos2d::backend::UtilsMTL::resizeDefaultAttachmentTexture(size_.width, size_.height); #else [renderer_ resizeFromLayer:(CAEAGLLayer*)self.layer]; size_ = [renderer_ backingSize]; // Issue #914 #924 -// Director *director = [Director sharedDirector]; -// [director reshapeProjection:size_]; + // Director *director = [Director sharedDirector]; + // [director reshapeProjection:size_]; cocos2d::Size size; - size.width = size_.width; + size.width = size_.width; size.height = size_.height; - //cocos2d::Director::getInstance()->reshapeProjection(size); + // cocos2d::Director::getInstance()->reshapeProjection(size); #endif - + // Avoid flicker. Issue #350 if ([NSThread isMainThread]) { @@ -296,29 +334,28 @@ - (void) layoutSubviews } #if defined(CC_USE_METAL) -- (void) swapBuffers -{ -} +- (void)swapBuffers +{} #else -- (void) swapBuffers +- (void)swapBuffers { // IMPORTANT: - // - preconditions - // -> context_ MUST be the OpenGL context - // -> renderbuffer_ must be the RENDER BUFFER + // - preconditions + // -> context_ MUST be the OpenGL context + // -> renderbuffer_ must be the RENDER BUFFER + +# ifdef __IPHONE_4_0 -#ifdef __IPHONE_4_0 - if (multiSampling_) { /* Resolve from msaaFramebuffer to resolveFramebuffer */ - //glDisable(GL_SCISSOR_TEST); + // glDisable(GL_SCISSOR_TEST); glBindFramebuffer(GL_READ_FRAMEBUFFER_APPLE, [renderer_ msaaFrameBuffer]); glBindFramebuffer(GL_DRAW_FRAMEBUFFER_APPLE, [renderer_ defaultFrameBuffer]); glResolveMultisampleFramebufferAPPLE(); } - - if(discardFramebufferSupported_) + + if (discardFramebufferSupported_) { if (multiSampling_) { @@ -332,97 +369,98 @@ - (void) swapBuffers GLenum attachments[] = {GL_COLOR_ATTACHMENT0}; glDiscardFramebufferEXT(GL_READ_FRAMEBUFFER_APPLE, 1, attachments); } - + glBindRenderbuffer(GL_RENDERBUFFER, [renderer_ colorRenderBuffer]); - } - + // not MSAA - else if (depthFormat_ ) { - GLenum attachments[] = { GL_DEPTH_ATTACHMENT}; + else if (depthFormat_) + { + GLenum attachments[] = {GL_DEPTH_ATTACHMENT}; glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, attachments); } } - -#endif // __IPHONE_4_0 - - if(![context_ presentRenderbuffer:GL_RENDERBUFFER]) - { -// CCLOG(@"cocos2d: Failed to swap renderbuffer in %s\n", __FUNCTION__); - } -#if COCOS2D_DEBUG +# endif // __IPHONE_4_0 + + if (![context_ presentRenderbuffer:GL_RENDERBUFFER]) + { + // CCLOG(@"cocos2d: Failed to swap renderbuffer in %s\n", __FUNCTION__); + } + +# if COCOS2D_DEBUG CHECK_GL_ERROR(); -#endif - +# endif + // We can safely re-bind the framebuffer here, since this will be the // 1st instruction of the new main loop - if( multiSampling_ ) + if (multiSampling_) glBindFramebuffer(GL_FRAMEBUFFER, [renderer_ msaaFrameBuffer]); } -- (unsigned int) convertPixelFormat:(NSString*) pixelFormat +- (unsigned int)convertPixelFormat:(NSString*)pixelFormat { // define the pixel format GLenum pFormat; - - - if([pixelFormat isEqualToString:@"EAGLColorFormat565"]) + + if ([pixelFormat isEqualToString:@"EAGLColorFormat565"]) pFormat = GL_RGB565; else pFormat = GL_RGBA8_OES; - + return pFormat; } #endif #pragma mark CCEAGLView - Point conversion -- (CGPoint) convertPointFromViewToSurface:(CGPoint)point +- (CGPoint)convertPointFromViewToSurface:(CGPoint)point { CGRect bounds = [self bounds]; - + CGPoint ret; ret.x = (point.x - bounds.origin.x) / bounds.size.width * size_.width; - ret.y = (point.y - bounds.origin.y) / bounds.size.height * size_.height; - + ret.y = (point.y - bounds.origin.y) / bounds.size.height * size_.height; + return ret; } -- (CGRect) convertRectFromViewToSurface:(CGRect)rect +- (CGRect)convertRectFromViewToSurface:(CGRect)rect { CGRect bounds = [self bounds]; - + CGRect ret; - ret.origin.x = (rect.origin.x - bounds.origin.x) / bounds.size.width * size_.width; - ret.origin.y = (rect.origin.y - bounds.origin.y) / bounds.size.height * size_.height; - ret.size.width = rect.size.width / bounds.size.width * size_.width; + ret.origin.x = (rect.origin.x - bounds.origin.x) / bounds.size.width * size_.width; + ret.origin.y = (rect.origin.y - bounds.origin.y) / bounds.size.height * size_.height; + ret.size.width = rect.size.width / bounds.size.width * size_.width; ret.size.height = rect.size.height / bounds.size.height * size_.height; - + return ret; } // Pass the touches to the superview #pragma mark CCEAGLView - Touch Delegate -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { if (self.isKeyboardShown) [self closeKeyboardOpenedByEditBox]; - + UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; - float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - + float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + int i = 0; - for (UITouch *touch in touches) { - if (i >= IOS_MAX_TOUCHES_COUNT) { + for (UITouch* touch in touches) + { + if (i >= IOS_MAX_TOUCHES_COUNT) + { CCLOG("warning: touches more than 10, should adjust IOS_MAX_TOUCHES_COUNT"); break; } ids[i] = touch; - xs[i] = [touch locationInView: [touch view]].x * self.contentScaleFactor; - ys[i] = [touch locationInView: [touch view]].y * self.contentScaleFactor; + xs[i] = [touch locationInView:[touch view]].x * self.contentScaleFactor; + ys[i] = [touch locationInView:[touch view]].y * self.contentScaleFactor; ++i; } @@ -430,27 +468,30 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event glview->handleTouchesBegin(i, (intptr_t*)ids, xs, ys); } -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; - float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float fs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float ms[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - + float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float fs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float ms[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + int i = 0; - for (UITouch *touch in touches) { - if (i >= IOS_MAX_TOUCHES_COUNT) { + for (UITouch* touch in touches) + { + if (i >= IOS_MAX_TOUCHES_COUNT) + { CCLOG("warning: touches more than 10, should adjust IOS_MAX_TOUCHES_COUNT"); break; } ids[i] = touch; - xs[i] = [touch locationInView: [touch view]].x * self.contentScaleFactor; - ys[i] = [touch locationInView: [touch view]].y * self.contentScaleFactor; + xs[i] = [touch locationInView:[touch view]].x * self.contentScaleFactor; + ys[i] = [touch locationInView:[touch view]].y * self.contentScaleFactor; #if defined(__IPHONE_9_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0) // running on iOS 9.0 or higher version - if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0f) { + if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0f) + { fs[i] = touch.force; ms[i] = touch.maximumPossibleForce; } @@ -462,45 +503,49 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event glview->handleTouchesMove(i, (intptr_t*)ids, xs, ys, fs, ms); } -- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; - float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - + float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + int i = 0; - for (UITouch *touch in touches) { - if (i >= IOS_MAX_TOUCHES_COUNT) { + for (UITouch* touch in touches) + { + if (i >= IOS_MAX_TOUCHES_COUNT) + { CCLOG("warning: touches more than 10, should adjust IOS_MAX_TOUCHES_COUNT"); break; } ids[i] = touch; - xs[i] = [touch locationInView: [touch view]].x * self.contentScaleFactor; - ys[i] = [touch locationInView: [touch view]].y * self.contentScaleFactor; + xs[i] = [touch locationInView:[touch view]].x * self.contentScaleFactor; + ys[i] = [touch locationInView:[touch view]].y * self.contentScaleFactor; ++i; } auto glview = cocos2d::Director::getInstance()->getOpenGLView(); glview->handleTouchesEnd(i, (intptr_t*)ids, xs, ys); } - -- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event + +- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; - float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; - + float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; + int i = 0; - for (UITouch *touch in touches) { - if (i >= IOS_MAX_TOUCHES_COUNT) { + for (UITouch* touch in touches) + { + if (i >= IOS_MAX_TOUCHES_COUNT) + { CCLOG("warning: touches more than 10, should adjust IOS_MAX_TOUCHES_COUNT"); break; } - + ids[i] = touch; - xs[i] = [touch locationInView: [touch view]].x * self.contentScaleFactor; - ys[i] = [touch locationInView: [touch view]].y * self.contentScaleFactor; + xs[i] = [touch locationInView:[touch view]].x * self.contentScaleFactor; + ys[i] = [touch locationInView:[touch view]].y * self.contentScaleFactor; ++i; } @@ -508,83 +553,90 @@ - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event glview->handleTouchesCancel(i, (intptr_t*)ids, xs, ys); } -- (void) showKeyboard +- (void)showKeyboard { [self addSubview:self.textInputView]; [self.textInputView becomeFirstResponder]; } -- (void) hideKeyboard +- (void)hideKeyboard { [self.textInputView resignFirstResponder]; [self.textInputView removeFromSuperview]; } --(void) doAnimationWhenKeyboardMoveWithDuration:(float) duration distance:(float) dis +- (void)doAnimationWhenKeyboardMoveWithDuration:(float)duration distance:(float)dis { [UIView beginAnimations:nil context:nullptr]; - [UIView setAnimationDelegate:self]; - [UIView setAnimationDuration:duration]; - [UIView setAnimationBeginsFromCurrentState:YES]; - - //NSLog(@"[animation] dis = %f, scale = %f \n", dis, cocos2d::GLView::getInstance()->getScaleY()); - - if (dis < 0.0f) dis = 0.0f; - - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - dis *= glview->getScaleY(); - - dis /= self.contentScaleFactor; - - #if defined(CC_TARGET_OS_TVOS) - self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, originalRect_.size.width, originalRect_.size.height); - #else - switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation])) - { - case UIInterfaceOrientationPortrait: - self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, originalRect_.size.width, originalRect_.size.height); - break; - - case UIInterfaceOrientationPortraitUpsideDown: - self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y + dis, originalRect_.size.width, originalRect_.size.height); - break; - - case UIInterfaceOrientationLandscapeLeft: - self.frame = CGRectMake(originalRect_.origin.x - dis, originalRect_.origin.y , originalRect_.size.width, originalRect_.size.height); - break; - - case UIInterfaceOrientationLandscapeRight: - self.frame = CGRectMake(originalRect_.origin.x + dis, originalRect_.origin.y , originalRect_.size.width, originalRect_.size.height); - break; - - default: - break; - } - #endif - - [UIView commitAnimations]; + [UIView setAnimationDelegate:self]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationBeginsFromCurrentState:YES]; + + // NSLog(@"[animation] dis = %f, scale = %f \n", dis, cocos2d::GLView::getInstance()->getScaleY()); + + if (dis < 0.0f) + dis = 0.0f; + + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + dis *= glview->getScaleY(); + + dis /= self.contentScaleFactor; + +#if defined(CC_TARGET_OS_TVOS) + self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, originalRect_.size.width, + originalRect_.size.height); +#else + switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation])) + { + case UIInterfaceOrientationPortrait: + self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y - dis, originalRect_.size.width, + originalRect_.size.height); + break; + + case UIInterfaceOrientationPortraitUpsideDown: + self.frame = CGRectMake(originalRect_.origin.x, originalRect_.origin.y + dis, originalRect_.size.width, + originalRect_.size.height); + break; + + case UIInterfaceOrientationLandscapeLeft: + self.frame = CGRectMake(originalRect_.origin.x - dis, originalRect_.origin.y, originalRect_.size.width, + originalRect_.size.height); + break; + + case UIInterfaceOrientationLandscapeRight: + self.frame = CGRectMake(originalRect_.origin.x + dis, originalRect_.origin.y, originalRect_.size.width, + originalRect_.size.height); + break; + + default: + break; + } +#endif + + [UIView commitAnimations]; } --(void) doAnimationWhenAnotherEditBeClicked +- (void)doAnimationWhenAnotherEditBeClicked { if (self.keyboardShowNotification != nil) { - [[NSNotificationCenter defaultCenter]postNotification:self.keyboardShowNotification]; + [[NSNotificationCenter defaultCenter] postNotification:self.keyboardShowNotification]; } } #pragma UIKeyboard notification #if !defined(CC_TARGET_OS_TVOS) -namespace { - UIInterfaceOrientation getFixedOrientation(UIInterfaceOrientation statusBarOrientation) +namespace +{ +UIInterfaceOrientation getFixedOrientation(UIInterfaceOrientation statusBarOrientation) +{ + if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { - if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) - { - statusBarOrientation = UIInterfaceOrientationPortrait; - } - return statusBarOrientation; + statusBarOrientation = UIInterfaceOrientationPortrait; } + return statusBarOrientation; +} } #endif @@ -593,87 +645,89 @@ - (void)didMoveToWindow #if !defined(CC_TARGET_OS_TVOS) [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onUIKeyboardNotification:) - name:UIKeyboardWillShowNotification object:nil]; + name:UIKeyboardWillShowNotification + object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onUIKeyboardNotification:) - name:UIKeyboardDidShowNotification object:nil]; + name:UIKeyboardDidShowNotification + object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onUIKeyboardNotification:) - name:UIKeyboardWillHideNotification object:nil]; + name:UIKeyboardWillHideNotification + object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onUIKeyboardNotification:) - name:UIKeyboardDidHideNotification object:nil]; + name:UIKeyboardDidHideNotification + object:nil]; #endif } -- (void)onUIKeyboardNotification:(NSNotification *)notif +- (void)onUIKeyboardNotification:(NSNotification*)notif { - NSString * type = notif.name; - + NSString* type = notif.name; + NSDictionary* info = [notif userInfo]; - CGRect begin = [self convertRect: - [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] - fromView:self]; - CGRect end = [self convertRect: - [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] - fromView:self]; + CGRect begin = [self convertRect:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] fromView:self]; + CGRect end = [self convertRect:[[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] fromView:self]; double aniDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - + CGSize viewSize = self.frame.size; CGFloat tmp; switch (getFixedOrientation([[UIApplication sharedApplication] statusBarOrientation])) { - case UIInterfaceOrientationPortrait: - begin.origin.y = viewSize.height - begin.origin.y - begin.size.height; - end.origin.y = viewSize.height - end.origin.y - end.size.height; - break; - - case UIInterfaceOrientationPortraitUpsideDown: - begin.origin.x = viewSize.width - (begin.origin.x + begin.size.width); - end.origin.x = viewSize.width - (end.origin.x + end.size.width); - break; - - case UIInterfaceOrientationLandscapeLeft: - std::swap(begin.size.width, begin.size.height); - std::swap(end.size.width, end.size.height); - std::swap(viewSize.width, viewSize.height); - - tmp = begin.origin.x; - begin.origin.x = begin.origin.y; - begin.origin.y = viewSize.height - tmp - begin.size.height; - tmp = end.origin.x; - end.origin.x = end.origin.y; - end.origin.y = viewSize.height - tmp - end.size.height; - break; - - case UIInterfaceOrientationLandscapeRight: - std::swap(begin.size.width, begin.size.height); - std::swap(end.size.width, end.size.height); - std::swap(viewSize.width, viewSize.height); - - tmp = begin.origin.x; - begin.origin.x = begin.origin.y; - begin.origin.y = tmp; - tmp = end.origin.x; - end.origin.x = end.origin.y; - end.origin.y = tmp; - break; - - default: - break; + case UIInterfaceOrientationPortrait: + begin.origin.y = viewSize.height - begin.origin.y - begin.size.height; + end.origin.y = viewSize.height - end.origin.y - end.size.height; + break; + + case UIInterfaceOrientationPortraitUpsideDown: + begin.origin.x = viewSize.width - (begin.origin.x + begin.size.width); + end.origin.x = viewSize.width - (end.origin.x + end.size.width); + break; + + case UIInterfaceOrientationLandscapeLeft: + std::swap(begin.size.width, begin.size.height); + std::swap(end.size.width, end.size.height); + std::swap(viewSize.width, viewSize.height); + + tmp = begin.origin.x; + begin.origin.x = begin.origin.y; + begin.origin.y = viewSize.height - tmp - begin.size.height; + tmp = end.origin.x; + end.origin.x = end.origin.y; + end.origin.y = viewSize.height - tmp - end.size.height; + break; + + case UIInterfaceOrientationLandscapeRight: + std::swap(begin.size.width, begin.size.height); + std::swap(end.size.width, end.size.height); + std::swap(viewSize.width, viewSize.height); + + tmp = begin.origin.x; + begin.origin.x = begin.origin.y; + begin.origin.y = tmp; + tmp = end.origin.x; + end.origin.x = end.origin.y; + end.origin.y = tmp; + break; + + default: + break; } - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); float scaleX = glview->getScaleX(); float scaleY = glview->getScaleY(); - + // Convert to pixel coordinate - begin = CGRectApplyAffineTransform(begin, CGAffineTransformScale(CGAffineTransformIdentity, self.contentScaleFactor, self.contentScaleFactor)); - end = CGRectApplyAffineTransform(end, CGAffineTransformScale(CGAffineTransformIdentity, self.contentScaleFactor, self.contentScaleFactor)); - + begin = CGRectApplyAffineTransform( + begin, CGAffineTransformScale(CGAffineTransformIdentity, self.contentScaleFactor, self.contentScaleFactor)); + end = CGRectApplyAffineTransform( + end, CGAffineTransformScale(CGAffineTransformIdentity, self.contentScaleFactor, self.contentScaleFactor)); + float offestY = glview->getViewPortRect().origin.y; if (offestY < 0.0f) { @@ -681,23 +735,18 @@ - (void)onUIKeyboardNotification:(NSNotification *)notif begin.size.height -= offestY; end.size.height -= offestY; } - + // Convert to design coordinate - begin = CGRectApplyAffineTransform(begin, CGAffineTransformScale(CGAffineTransformIdentity, 1.0f/scaleX, 1.0f/scaleY)); - end = CGRectApplyAffineTransform(end, CGAffineTransformScale(CGAffineTransformIdentity, 1.0f/scaleX, 1.0f/scaleY)); + begin = CGRectApplyAffineTransform(begin, + CGAffineTransformScale(CGAffineTransformIdentity, 1.0f / scaleX, 1.0f / scaleY)); + end = CGRectApplyAffineTransform(end, + CGAffineTransformScale(CGAffineTransformIdentity, 1.0f / scaleX, 1.0f / scaleY)); - cocos2d::IMEKeyboardNotificationInfo notiInfo; - notiInfo.begin = cocos2d::Rect(begin.origin.x, - begin.origin.y, - begin.size.width, - begin.size.height); - notiInfo.end = cocos2d::Rect(end.origin.x, - end.origin.y, - end.size.width, - end.size.height); + notiInfo.begin = cocos2d::Rect(begin.origin.x, begin.origin.y, begin.size.width, begin.size.height); + notiInfo.end = cocos2d::Rect(end.origin.x, end.origin.y, end.size.width, end.size.height); notiInfo.duration = (float)aniDuration; - + cocos2d::IMEDispatcher* dispatcher = cocos2d::IMEDispatcher::sharedDispatcher(); if (UIKeyboardWillShowNotification == type) { @@ -720,14 +769,14 @@ - (void)onUIKeyboardNotification:(NSNotification *)notif } // Close the keyboard opened by EditBox --(void) closeKeyboardOpenedByEditBox +- (void)closeKeyboardOpenedByEditBox { - NSArray *subviews = self.subviews; - - for(UIView* view in subviews) + NSArray* subviews = self.subviews; + + for (UIView* view in subviews) { - if([view isKindOfClass:NSClassFromString(@"UITextView")] || - [view isKindOfClass:NSClassFromString(@"UITextField")]) + if ([view isKindOfClass:NSClassFromString(@"UITextView")] || + [view isKindOfClass:NSClassFromString(@"UITextField")]) { if ([view isFirstResponder]) { diff --git a/cocos/platform/ios/CCGLViewImpl-ios.mm b/cocos/platform/ios/CCGLViewImpl-ios.mm index 91e1dc06dee8..594680a9154b 100644 --- a/cocos/platform/ios/CCGLViewImpl-ios.mm +++ b/cocos/platform/ios/CCGLViewImpl-ios.mm @@ -33,14 +33,15 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_BEGIN -void* GLViewImpl::_pixelFormat = kEAGLColorFormatRGB565; -int GLViewImpl::_depthFormat = GL_DEPTH_COMPONENT16; +void* GLViewImpl::_pixelFormat = kEAGLColorFormatRGB565; +int GLViewImpl::_depthFormat = GL_DEPTH_COMPONENT16; int GLViewImpl::_multisamplingCount = 0; -GLViewImpl* GLViewImpl::createWithEAGLView(void *eaglview) +GLViewImpl* GLViewImpl::createWithEAGLView(void* eaglview) { auto ret = new GLViewImpl; - if(ret->initWithEAGLView(eaglview)) { + if (ret->initWithEAGLView(eaglview)) + { ret->autorelease(); return ret; } @@ -51,7 +52,8 @@ of this software and associated documentation files (the "Software"), to deal GLViewImpl* GLViewImpl::create(std::string_view viewName) { auto ret = new GLViewImpl; - if(ret->initWithFullScreen(viewName)) { + if (ret->initWithFullScreen(viewName)) + { ret->autorelease(); return ret; } @@ -62,7 +64,8 @@ of this software and associated documentation files (the "Software"), to deal GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, const Rect& rect, float frameZoomFactor) { auto ret = new GLViewImpl; - if(ret->initWithRect(viewName, rect, frameZoomFactor)) { + if (ret->initWithRect(viewName, rect, frameZoomFactor)) + { ret->autorelease(); return ret; } @@ -73,7 +76,8 @@ of this software and associated documentation files (the "Software"), to deal GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); - if(ret->initWithFullScreen(viewName)) { + if (ret->initWithFullScreen(viewName)) + { ret->autorelease(); return ret; } @@ -83,49 +87,53 @@ of this software and associated documentation files (the "Software"), to deal void GLViewImpl::convertAttrs() { - if(_glContextAttrs.redBits==8 && _glContextAttrs.greenBits==8 && _glContextAttrs.blueBits==8 && _glContextAttrs.alphaBits==8) + if (_glContextAttrs.redBits == 8 && _glContextAttrs.greenBits == 8 && _glContextAttrs.blueBits == 8 && + _glContextAttrs.alphaBits == 8) { _pixelFormat = kEAGLColorFormatRGBA8; - } else if (_glContextAttrs.redBits==5 && _glContextAttrs.greenBits==6 && _glContextAttrs.blueBits==5 && _glContextAttrs.alphaBits==0) + } + else if (_glContextAttrs.redBits == 5 && _glContextAttrs.greenBits == 6 && _glContextAttrs.blueBits == 5 && + _glContextAttrs.alphaBits == 0) { _pixelFormat = kEAGLColorFormatRGB565; - } else + } + else { CCASSERT(0, "Unsupported render buffer pixel format. Using default"); } - if(_glContextAttrs.depthBits==24 && _glContextAttrs.stencilBits==8) + if (_glContextAttrs.depthBits == 24 && _glContextAttrs.stencilBits == 8) { _depthFormat = GL_DEPTH24_STENCIL8_OES; - } else if (_glContextAttrs.depthBits==0 && _glContextAttrs.stencilBits==0) + } + else if (_glContextAttrs.depthBits == 0 && _glContextAttrs.stencilBits == 0) { _depthFormat = 0; - } else + } + else { CCASSERT(0, "Unsupported format for depth and stencil buffers. Using default"); } - + _multisamplingCount = _glContextAttrs.multisamplingCount; } -GLViewImpl::GLViewImpl() -{ -} +GLViewImpl::GLViewImpl() {} GLViewImpl::~GLViewImpl() { - //CCEAGLView *glview = (CCEAGLView*) _eaglview; + // CCEAGLView *glview = (CCEAGLView*) _eaglview; //[glview release]; } -bool GLViewImpl::initWithEAGLView(void *eaglview) +bool GLViewImpl::initWithEAGLView(void* eaglview) { - _eaglview = eaglview; - CCEAGLView *glview = (CCEAGLView*) _eaglview; + _eaglview = eaglview; + CCEAGLView* glview = (CCEAGLView*)_eaglview; _screenSize.width = _designResolutionSize.width = [glview getWidth]; _screenSize.height = _designResolutionSize.height = [glview getHeight]; -// _scaleX = _scaleY = [glview contentScaleFactor]; + // _scaleX = _scaleY = [glview contentScaleFactor]; return true; } @@ -134,13 +142,13 @@ of this software and associated documentation files (the "Software"), to deal { CGRect r = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); convertAttrs(); - CCEAGLView *eaglview = [CCEAGLView viewWithFrame: r - pixelFormat: (NSString*)_pixelFormat - depthFormat: _depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: NO - numberOfSamples: 0]; + CCEAGLView* eaglview = [CCEAGLView viewWithFrame:r + pixelFormat:(NSString*)_pixelFormat + depthFormat:_depthFormat + preserveBackbuffer:NO + sharegroup:nil + multiSampling:NO + numberOfSamples:0]; // Not available on tvOS #if !defined(CC_TARGET_OS_TVOS) @@ -149,7 +157,7 @@ of this software and associated documentation files (the "Software"), to deal _screenSize.width = _designResolutionSize.width = [eaglview getWidth]; _screenSize.height = _designResolutionSize.height = [eaglview getHeight]; -// _scaleX = _scaleY = [eaglview contentScaleFactor]; + // _scaleX = _scaleY = [eaglview contentScaleFactor]; _eaglview = eaglview; @@ -160,9 +168,9 @@ of this software and associated documentation files (the "Software"), to deal { CGRect rect = [[UIScreen mainScreen] bounds]; Rect r; - r.origin.x = rect.origin.x; - r.origin.y = rect.origin.y; - r.size.width = rect.size.width; + r.origin.x = rect.origin.x; + r.origin.y = rect.origin.y; + r.size.width = rect.size.width; r.size.height = rect.size.height; return initWithRect(viewName, r, 1); @@ -175,10 +183,10 @@ of this software and associated documentation files (the "Software"), to deal bool GLViewImpl::setContentScaleFactor(float contentScaleFactor) { - CC_ASSERT(_resolutionPolicy == ResolutionPolicy::UNKNOWN); // cannot enable retina mode + CC_ASSERT(_resolutionPolicy == ResolutionPolicy::UNKNOWN); // cannot enable retina mode _scaleX = _scaleY = contentScaleFactor; - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; [eaglview setNeedsLayout]; return true; @@ -186,11 +194,11 @@ of this software and associated documentation files (the "Software"), to deal float GLViewImpl::getContentScaleFactor() const { - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; float scaleFactor = [eaglview contentScaleFactor]; -// CCASSERT(scaleFactor == _scaleX == _scaleY, "Logic error in GLView::getContentScaleFactor"); + // CCASSERT(scaleFactor == _scaleX == _scaleY, "Logic error in GLView::getContentScaleFactor"); return scaleFactor; } @@ -200,23 +208,22 @@ of this software and associated documentation files (the "Software"), to deal [CCDirectorCaller destroy]; // destroy EAGLView - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; [eaglview removeFromSuperview]; //[eaglview release]; release(); } - void GLViewImpl::swapBuffers() { - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; [eaglview swapBuffers]; } void GLViewImpl::setIMEKeyboardState(bool open) { - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; if (open) { @@ -230,16 +237,16 @@ of this software and associated documentation files (the "Software"), to deal Rect GLViewImpl::getSafeAreaRect() const { - CCEAGLView *eaglview = (CCEAGLView*) _eaglview; + CCEAGLView* eaglview = (CCEAGLView*)_eaglview; #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 float version = [[UIDevice currentDevice].systemVersion floatValue]; if (version >= 11.0f) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wpartial-availability" +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wpartial-availability" UIEdgeInsets safeAreaInsets = eaglview.safeAreaInsets; -#pragma clang diagnostic pop +# pragma clang diagnostic pop // Multiply contentScaleFactor since safeAreaInsets return points. safeAreaInsets.left *= eaglview.contentScaleFactor; @@ -249,23 +256,23 @@ of this software and associated documentation files (the "Software"), to deal // Get leftBottom and rightTop point in UI coordinates Vec2 leftBottom = Vec2(safeAreaInsets.left, _screenSize.height - safeAreaInsets.bottom); - Vec2 rightTop = Vec2(_screenSize.width - safeAreaInsets.right, safeAreaInsets.top); + Vec2 rightTop = Vec2(_screenSize.width - safeAreaInsets.right, safeAreaInsets.top); // Convert a point from UI coordinates to which in design resolution coordinate. leftBottom.x = (leftBottom.x - _viewPortRect.origin.x) / _scaleX, leftBottom.y = (leftBottom.y - _viewPortRect.origin.y) / _scaleY; - rightTop.x = (rightTop.x - _viewPortRect.origin.x) / _scaleX, - rightTop.y = (rightTop.y - _viewPortRect.origin.y) / _scaleY; + rightTop.x = (rightTop.x - _viewPortRect.origin.x) / _scaleX, + rightTop.y = (rightTop.y - _viewPortRect.origin.y) / _scaleY; // Adjust points to make them inside design resolution leftBottom.x = MAX(leftBottom.x, 0); leftBottom.y = MIN(leftBottom.y, _designResolutionSize.height); - rightTop.x = MIN(rightTop.x, _designResolutionSize.width); - rightTop.y = MAX(rightTop.y, 0); + rightTop.x = MIN(rightTop.x, _designResolutionSize.width); + rightTop.y = MAX(rightTop.y, 0); // Convert to GL coordinates leftBottom = Director::getInstance()->convertToGL(leftBottom); - rightTop = Director::getInstance()->convertToGL(rightTop); + rightTop = Director::getInstance()->convertToGL(rightTop); return Rect(leftBottom.x, leftBottom.y, rightTop.x - leftBottom.x, rightTop.y - leftBottom.y); } diff --git a/cocos/platform/ios/CCImage-ios.mm b/cocos/platform/ios/CCImage-ios.mm index 9c323ccb366a..372ed56fa131 100644 --- a/cocos/platform/ios/CCImage-ios.mm +++ b/cocos/platform/ios/CCImage-ios.mm @@ -37,13 +37,14 @@ of this software and associated documentation files (the "Software"), to deal bool cocos2d::Image::saveToFile(std::string_view filename, bool isToRGB) { - //only support for backend::PixelFormat::RGB8 or backend::PixelFormat::RGBA8 uncompressed data + // only support for backend::PixelFormat::RGB8 or backend::PixelFormat::RGBA8 uncompressed data if (isCompressed() || (_pixelFormat != backend::PixelFormat::RGB8 && _pixelFormat != backend::PixelFormat::RGBA8)) { - CCLOG("cocos2d: Image: saveToFile is only support for backend::PixelFormat::RGB8 or backend::PixelFormat::RGBA8 uncompressed data for now"); + CCLOG("cocos2d: Image: saveToFile is only support for backend::PixelFormat::RGB8 or " + "backend::PixelFormat::RGBA8 uncompressed data for now"); return false; } - bool saveToPNG = false; + bool saveToPNG = false; bool needToCopyPixels = false; std::string basename(filename); @@ -52,64 +53,65 @@ of this software and associated documentation files (the "Software"), to deal { saveToPNG = true; } - - int bitsPerComponent = 8; - int bitsPerPixel = hasAlpha() ? 32 : 24; - if ((! saveToPNG) || isToRGB) + + int bitsPerComponent = 8; + int bitsPerPixel = hasAlpha() ? 32 : 24; + if ((!saveToPNG) || isToRGB) { bitsPerPixel = 24; - } - - int bytesPerRow = (bitsPerPixel/8) * _width; + } + + int bytesPerRow = (bitsPerPixel / 8) * _width; int myDataLength = bytesPerRow * _height; - - unsigned char *pixels = _data; - + + unsigned char* pixels = _data; + // The data has alpha channel, and want to save it with an RGB png file, // or want to save as jpg, remove the alpha channel. if (hasAlpha() && bitsPerPixel == 24) { pixels = new unsigned char[myDataLength]; - + for (int i = 0; i < _height; ++i) { for (int j = 0; j < _width; ++j) { - pixels[(i * _width + j) * 3] = _data[(i * _width + j) * 4]; + pixels[(i * _width + j) * 3] = _data[(i * _width + j) * 4]; pixels[(i * _width + j) * 3 + 1] = _data[(i * _width + j) * 4 + 1]; pixels[(i * _width + j) * 3 + 2] = _data[(i * _width + j) * 4 + 2]; } } - + needToCopyPixels = true; } - + // make data provider with data. CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; - if (saveToPNG && hasAlpha() && (! isToRGB)) + if (saveToPNG && hasAlpha() && (!isToRGB)) { bitmapInfo |= kCGImageAlphaLast; } - CGDataProviderRef provider = CGDataProviderCreateWithData(nullptr, pixels, myDataLength, nullptr); - CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); - CGImageRef iref = CGImageCreate(_width, _height, - bitsPerComponent, bitsPerPixel, bytesPerRow, - colorSpaceRef, bitmapInfo, provider, - nullptr, false, - kCGRenderingIntentDefault); - - UIImage* image = [[UIImage alloc] initWithCGImage:iref]; - - CGImageRelease(iref); + CGDataProviderRef provider = CGDataProviderCreateWithData(nullptr, pixels, myDataLength, nullptr); + CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); + CGImageRef iref = CGImageCreate(_width, _height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, + bitmapInfo, provider, nullptr, false, kCGRenderingIntentDefault); + + UIImage* image = [[UIImage alloc] initWithCGImage:iref]; + + CGImageRelease(iref); CGColorSpaceRelease(colorSpaceRef); CGDataProviderRelease(provider); // NOTE: Prevent memory leak. Requires ARC enabled. - @autoreleasepool { - NSData *data; - if (saveToPNG) { + @autoreleasepool + { + NSData* data; + if (saveToPNG) + { data = UIImagePNGRepresentation(image); - } else { + } + else + { data = UIImageJPEGRepresentation(image, 1.0f); } @@ -121,9 +123,9 @@ of this software and associated documentation files (the "Software"), to deal if (needToCopyPixels) { - delete [] pixels; + delete[] pixels; } - + return true; } diff --git a/cocos/platform/ios/CCInputView-ios.mm b/cocos/platform/ios/CCInputView-ios.mm index 8b131d54f5f9..aea326830e42 100644 --- a/cocos/platform/ios/CCInputView-ios.mm +++ b/cocos/platform/ios/CCInputView-ios.mm @@ -41,27 +41,31 @@ @implementation CCInputView @synthesize tokenizer; @synthesize autocorrectionType; -- (instancetype) initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame] ) { - self.myMarkedText = nil; +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) + { + self.myMarkedText = nil; self.autocorrectionType = UITextAutocorrectionTypeNo; } - + return self; } -- (void) dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; // remove keyboard notification +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; // remove keyboard notification [self.myMarkedText release]; [self removeFromSuperview]; [super dealloc]; } -- (BOOL) canBecomeFirstResponder { +- (BOOL)canBecomeFirstResponder +{ return YES; } -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { [self resignFirstResponder]; [self removeFromSuperview]; @@ -69,159 +73,190 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event #pragma TextInput protocol -- (id)inputDelegate { +- (id)inputDelegate +{ return nil; } -- (void)setInputDelegate:(id)inputDelegate { - -} +- (void)setInputDelegate:(id)inputDelegate +{} -- (void)setSelectedTextRange:(UITextRange *)aSelectedTextRange { +- (void)setSelectedTextRange:(UITextRange*)aSelectedTextRange +{ CCLOG("UITextRange:setSelectedTextRange"); } -- (UITextRange *)selectedTextRange { +- (UITextRange*)selectedTextRange +{ return [[[UITextRange alloc] init] autorelease]; } -- (void)deleteBackward { - if (nil != self.myMarkedText) { +- (void)deleteBackward +{ + if (nil != self.myMarkedText) + { [self.myMarkedText release]; self.myMarkedText = nil; } cocos2d::IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward(); } -- (void)insertText:(nonnull NSString *)text { - if (nil != self.myMarkedText) { +- (void)insertText:(nonnull NSString*)text +{ + if (nil != self.myMarkedText) + { [self.myMarkedText release]; self.myMarkedText = nil; } - const char * pszText = [text cStringUsingEncoding:NSUTF8StringEncoding]; + const char* pszText = [text cStringUsingEncoding:NSUTF8StringEncoding]; cocos2d::IMEDispatcher::sharedDispatcher()->dispatchInsertText(pszText, strlen(pszText)); } -- (NSWritingDirection)baseWritingDirectionForPosition:(nonnull UITextPosition *)position inDirection:(UITextStorageDirection)direction { +- (NSWritingDirection)baseWritingDirectionForPosition:(nonnull UITextPosition*)position + inDirection:(UITextStorageDirection)direction +{ CCLOG("baseWritingDirectionForPosition"); return NSWritingDirectionLeftToRight; } -- (CGRect)caretRectForPosition:(nonnull UITextPosition *)position { +- (CGRect)caretRectForPosition:(nonnull UITextPosition*)position +{ CCLOG("caretRectForPosition"); return CGRectZero; } -- (nullable UITextRange *)characterRangeAtPoint:(CGPoint)point { +- (nullable UITextRange*)characterRangeAtPoint:(CGPoint)point +{ CCLOG("characterRangeAtPoint"); return nil; } -- (nullable UITextRange *)characterRangeByExtendingPosition:(nonnull UITextPosition *)position inDirection:(UITextLayoutDirection)direction { +- (nullable UITextRange*)characterRangeByExtendingPosition:(nonnull UITextPosition*)position + inDirection:(UITextLayoutDirection)direction +{ CCLOG("characterRangeByExtendingPosition"); return nil; } -- (nullable UITextPosition *)closestPositionToPoint:(CGPoint)point { +- (nullable UITextPosition*)closestPositionToPoint:(CGPoint)point +{ CCLOG("closestPositionToPoint"); return nil; } -- (nullable UITextPosition *)closestPositionToPoint:(CGPoint)point withinRange:(nonnull UITextRange *)range { +- (nullable UITextPosition*)closestPositionToPoint:(CGPoint)point withinRange:(nonnull UITextRange*)range +{ CCLOG("closestPositionToPoint"); return nil; } -- (NSComparisonResult)comparePosition:(nonnull UITextPosition *)position toPosition:(nonnull UITextPosition *)other { +- (NSComparisonResult)comparePosition:(nonnull UITextPosition*)position toPosition:(nonnull UITextPosition*)other +{ CCLOG("comparePosition"); return (NSComparisonResult)0; } -- (CGRect)firstRectForRange:(nonnull UITextRange *)range { +- (CGRect)firstRectForRange:(nonnull UITextRange*)range +{ CCLOG("firstRectForRange"); return CGRectNull; } -- (NSInteger)offsetFromPosition:(nonnull UITextPosition *)from toPosition:(nonnull UITextPosition *)toPosition { +- (NSInteger)offsetFromPosition:(nonnull UITextPosition*)from toPosition:(nonnull UITextPosition*)toPosition +{ CCLOG("offsetFromPosition"); return 0; } -- (nullable UITextPosition *)positionFromPosition:(nonnull UITextPosition *)position inDirection:(UITextLayoutDirection)direction offset:(NSInteger)offset { +- (nullable UITextPosition*)positionFromPosition:(nonnull UITextPosition*)position + inDirection:(UITextLayoutDirection)direction + offset:(NSInteger)offset +{ CCLOG("positionFromPosition"); return nil; } -- (nullable UITextPosition *)positionFromPosition:(nonnull UITextPosition *)position offset:(NSInteger)offset { +- (nullable UITextPosition*)positionFromPosition:(nonnull UITextPosition*)position offset:(NSInteger)offset +{ CCLOG("positionFromPosition"); return nil; } -- (nullable UITextPosition *)positionWithinRange:(nonnull UITextRange *)range farthestInDirection:(UITextLayoutDirection)direction { +- (nullable UITextPosition*)positionWithinRange:(nonnull UITextRange*)range + farthestInDirection:(UITextLayoutDirection)direction +{ CCLOG("positionWithinRange"); return nil; } -- (void)replaceRange:(nonnull UITextRange *)range withText:(nonnull NSString *)text { - -} +- (void)replaceRange:(nonnull UITextRange*)range withText:(nonnull NSString*)text +{} -- (nonnull NSArray *)selectionRectsForRange:(nonnull UITextRange *)range { +- (nonnull NSArray*)selectionRectsForRange:(nonnull UITextRange*)range +{ CCLOG("selectionRectsForRange"); return nil; } -- (void)setBaseWritingDirection:(NSWritingDirection)writingDirection forRange:(nonnull UITextRange *)range { - -} +- (void)setBaseWritingDirection:(NSWritingDirection)writingDirection forRange:(nonnull UITextRange*)range +{} -- (void)setMarkedText:(nullable NSString *)markedText selectedRange:(NSRange)selectedRange { +- (void)setMarkedText:(nullable NSString*)markedText selectedRange:(NSRange)selectedRange +{ CCLOG("setMarkedText"); - if (markedText == self.myMarkedText) { + if (markedText == self.myMarkedText) + { return; } - if (nil != self.myMarkedText) { + if (nil != self.myMarkedText) + { [self.myMarkedText release]; } self.myMarkedText = markedText; [self.myMarkedText retain]; } -- (UITextRange *)markedTextRange +- (UITextRange*)markedTextRange { CCLOG("markedTextRange"); - if (nil != self.myMarkedText) { + if (nil != self.myMarkedText) + { return [[[UITextRange alloc] init] autorelease]; } - return nil; // Nil if no marked text. + return nil; // Nil if no marked text. } -- (nullable NSString *)textInRange:(nonnull UITextRange *)range { +- (nullable NSString*)textInRange:(nonnull UITextRange*)range +{ CCLOG("textInRange"); - if (nil != self.myMarkedText) { + if (nil != self.myMarkedText) + { return self.myMarkedText; } return nil; } -- (nullable UITextRange *)textRangeFromPosition:(nonnull UITextPosition *)fromPosition toPosition:(nonnull UITextPosition *)toPosition { +- (nullable UITextRange*)textRangeFromPosition:(nonnull UITextPosition*)fromPosition + toPosition:(nonnull UITextPosition*)toPosition +{ CCLOG("textRangeFromPosition"); return nil; } -- (void)unmarkText { +- (void)unmarkText +{ CCLOG("unmarkText"); if (nil == self.myMarkedText) { return; } - const char * pszText = [self.myMarkedText cStringUsingEncoding:NSUTF8StringEncoding]; + const char* pszText = [self.myMarkedText cStringUsingEncoding:NSUTF8StringEncoding]; cocos2d::IMEDispatcher::sharedDispatcher()->dispatchInsertText(pszText, strlen(pszText)); [self.myMarkedText release]; self.myMarkedText = nil; } -- (void)encodeWithCoder:(nonnull NSCoder *)coder { -} +- (void)encodeWithCoder:(nonnull NSCoder*)coder +{} @end diff --git a/cocos/platform/mac/CCApplication-mac.mm b/cocos/platform/mac/CCApplication-mac.mm index dddafef71daf..4dcacde3f761 100644 --- a/cocos/platform/mac/CCApplication-mac.mm +++ b/cocos/platform/mac/CCApplication-mac.mm @@ -40,18 +40,17 @@ static int32_t getCurrentMillSecond() { int32_t lLastTime = 0; struct timeval stCurrentTime; - - gettimeofday(&stCurrentTime,NULL); - lLastTime = stCurrentTime.tv_sec*1000+stCurrentTime.tv_usec*0.001; // milliseconds + + gettimeofday(&stCurrentTime, NULL); + lLastTime = stCurrentTime.tv_sec * 1000 + stCurrentTime.tv_usec * 0.001; // milliseconds return lLastTime; } Application* Application::sm_pSharedApplication = nullptr; -Application::Application() -: _animationInterval(1.0f/60.0f*1000.0f) +Application::Application() : _animationInterval(1.0f / 60.0f * 1000.0f) { - CCASSERT(! sm_pSharedApplication, "sm_pSharedApplication already exist"); + CCASSERT(!sm_pSharedApplication, "sm_pSharedApplication already exist"); sm_pSharedApplication = this; } @@ -64,53 +63,53 @@ static int32_t getCurrentMillSecond() int Application::run() { initGLContextAttrs(); - if(!applicationDidFinishLaunching()) + if (!applicationDidFinishLaunching()) { return 1; } - + int32_t lastTime = 0L; - int32_t curTime = 0L; - + int32_t curTime = 0L; + auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - + auto glview = director->getOpenGLView(); + // Retain glview to avoid glview being released in the while loop glview->retain(); while (!glview->windowShouldClose()) { lastTime = getCurrentMillSecond(); - + director->mainLoop(); glview->pollEvents(); curTime = getCurrentMillSecond(); if (curTime - lastTime < _animationInterval) { - usleep(static_cast((_animationInterval - curTime + lastTime)*1000)); + usleep(static_cast((_animationInterval - curTime + lastTime) * 1000)); } } /* Only work on Desktop - * Director::mainLoop is really one frame logic - * when we want to close the window, we should call Director::end(); - * then call Director::mainLoop to do release of internal resources - */ + * Director::mainLoop is really one frame logic + * when we want to close the window, we should call Director::end(); + * then call Director::mainLoop to do release of internal resources + */ if (glview->isOpenGLReady()) { director->end(); director->mainLoop(); } - + glview->release(); - + return 0; } void Application::setAnimationInterval(float interval) { - _animationInterval = interval*1000.0f; + _animationInterval = interval * 1000.0f; } Application::Platform Application::getTargetPlatform() @@ -118,9 +117,11 @@ static int32_t getCurrentMillSecond() return Platform::OS_MAC; } -std::string Application::getVersion() { +std::string Application::getVersion() +{ NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; - if (version) { + if (version) + { return [version UTF8String]; } return ""; @@ -136,39 +137,39 @@ static int32_t getCurrentMillSecond() return sm_pSharedApplication; } -const char * Application::getCurrentLanguageCode() +const char* Application::getCurrentLanguageCode() { - static char code[3]={0}; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; - NSString *currentLanguage = [languages objectAtIndex:0]; - + static char code[3] = {0}; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSArray* languages = [defaults objectForKey:@"AppleLanguages"]; + NSString* currentLanguage = [languages objectAtIndex:0]; + // get the current language code.(such as English is "en", Chinese is "zh" and so on) - NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; - NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; + NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; + NSString* languageCode = [temp objectForKey:NSLocaleLanguageCode]; [languageCode getCString:code maxLength:3 encoding:NSASCIIStringEncoding]; - code[2]='\0'; + code[2] = '\0'; return code; } LanguageType Application::getCurrentLanguage() { // get the current language and country config - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; - NSString *currentLanguage = [languages objectAtIndex:0]; - + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSArray* languages = [defaults objectForKey:@"AppleLanguages"]; + NSString* currentLanguage = [languages objectAtIndex:0]; + // get the current language code.(such as English is "en", Chinese is "zh" and so on) - NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; - NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; - + NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; + NSString* languageCode = [temp objectForKey:NSLocaleLanguageCode]; + return utils::getLanguageTypeByISO2([languageCode UTF8String]); } -bool Application::openURL(const std::string &url) +bool Application::openURL(const std::string& url) { NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; - NSURL* nsUrl = [NSURL URLWithString:msg]; + NSURL* nsUrl = [NSURL URLWithString:msg]; return [[NSWorkspace sharedWorkspace] openURL:nsUrl]; } diff --git a/cocos/platform/mac/CCCommon-mac.mm b/cocos/platform/mac/CCCommon-mac.mm index 3ce527eb5231..5e3be91e60d3 100644 --- a/cocos/platform/mac/CCCommon-mac.mm +++ b/cocos/platform/mac/CCCommon-mac.mm @@ -33,25 +33,25 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_BEGIN -void LuaLog(const char * format) +void LuaLog(const char* format) { puts(format); } // ios no MessageBox, use log instead -void ccMessageBox(const char * msg, const char * title) +void ccMessageBox(const char* msg, const char* title) { - NSString * tmpTitle = (title) ? [NSString stringWithUTF8String : title] : nil; - NSString * tmpMsg = (msg) ? [NSString stringWithUTF8String : msg] : nil; + NSString* tmpTitle = (title) ? [NSString stringWithUTF8String:title] : nil; + NSString* tmpMsg = (msg) ? [NSString stringWithUTF8String:msg] : nil; - NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + NSAlert* alert = [[[NSAlert alloc] init] autorelease]; [alert addButtonWithTitle:@"OK"]; [alert setMessageText:tmpMsg]; [alert setInformativeText:tmpTitle]; [alert setAlertStyle:NSAlertStyleWarning]; auto glview = Director::getInstance()->getOpenGLView(); - id window = glview->getCocoaWindow(); + id window = glview->getCocoaWindow(); [alert beginSheetModalForWindow:window completionHandler:nil]; } diff --git a/cocos/platform/mac/CCDevice-mac.mm b/cocos/platform/mac/CCDevice-mac.mm index 5a8b4e09c916..cf1b1ae014dd 100644 --- a/cocos/platform/mac/CCDevice-mac.mm +++ b/cocos/platform/mac/CCDevice-mac.mm @@ -36,41 +36,37 @@ of this software and associated documentation files (the "Software"), to deal { { [attributedString beginEditing]; - - [attributedString enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attributedString.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { - - NSFont* font = value; - font = [[NSFontManager sharedFontManager] convertFont:font toSize:fontSize]; - - [attributedString removeAttribute:NSFontAttributeName range:range]; - [attributedString addAttribute:NSFontAttributeName value:font range:range]; - }]; - + + [attributedString enumerateAttribute:NSFontAttributeName + inRange:NSMakeRange(0, attributedString.length) + options:0 + usingBlock:^(id value, NSRange range, BOOL* stop) { + NSFont* font = value; + font = [[NSFontManager sharedFontManager] convertFont:font toSize:fontSize]; + + [attributedString removeAttribute:NSFontAttributeName range:range]; + [attributedString addAttribute:NSFontAttributeName value:font range:range]; + }]; + [attributedString endEditing]; } - + return [[attributedString copy] autorelease]; } int Device::getDPI() { - NSScreen *screen = [NSScreen mainScreen]; - NSDictionary *description = [screen deviceDescription]; - NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue]; + NSScreen* screen = [NSScreen mainScreen]; + NSDictionary* description = [screen deviceDescription]; + NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue]; CGSize displayPhysicalSize = CGDisplayScreenSize([[description objectForKey:@"NSScreenNumber"] unsignedIntValue]); - - return ((displayPixelSize.width / displayPhysicalSize.width) * 25.4f); -} - -void Device::setAccelerometerEnabled(bool isEnabled) -{ + return ((displayPixelSize.width / displayPhysicalSize.width) * 25.4f); } -void Device::setAccelerometerInterval(float interval) -{ +void Device::setAccelerometerEnabled(bool isEnabled) {} -} +void Device::setAccelerometerInterval(float interval) {} typedef struct { @@ -81,305 +77,359 @@ of this software and associated documentation files (the "Software"), to deal unsigned char* data; } tImageInfo; -static NSSize _calculateStringSize(NSAttributedString *str, id font, CGSize *constrainSize, bool enableWrap, int overflow) +static NSSize _calculateStringSize(NSAttributedString* str, + id font, + CGSize* constrainSize, + bool enableWrap, + int overflow) { NSSize textRect = NSZeroSize; - textRect.width = constrainSize->width > 0 ? constrainSize->width - : CGFLOAT_MAX; - textRect.height = constrainSize->height > 0 ? constrainSize->height - : CGFLOAT_MAX; - - if (overflow == 1) { - if (!enableWrap) { - textRect.width = CGFLOAT_MAX; + textRect.width = constrainSize->width > 0 ? constrainSize->width : CGFLOAT_MAX; + textRect.height = constrainSize->height > 0 ? constrainSize->height : CGFLOAT_MAX; + + if (overflow == 1) + { + if (!enableWrap) + { + textRect.width = CGFLOAT_MAX; textRect.height = CGFLOAT_MAX; - } else { + } + else + { textRect.height = CGFLOAT_MAX; } } - + NSSize dim; #ifdef __MAC_10_11 - #if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 - dim = [str boundingRectWithSize:textRect options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin) context:nil].size; - #else - dim = [str boundingRectWithSize:textRect options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin)].size; - #endif +# if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 + dim = [str boundingRectWithSize:textRect + options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin)context:nil] + .size; +# else + dim = [str boundingRectWithSize:textRect options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin)] + .size; +# endif #else - dim = [str boundingRectWithSize:textRect options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin)].size; + dim = [str boundingRectWithSize:textRect options:(NSStringDrawingOptions)(NSStringDrawingUsesLineFragmentOrigin)] + .size; #endif - - - dim.width = ceilf(dim.width); + + dim.width = ceilf(dim.width); dim.height = ceilf(dim.height); return dim; } -static NSSize _calculateRealSizeForString(NSAttributedString **str, id font, NSSize constrainSize, bool enableWrap) +static NSSize _calculateRealSizeForString(NSAttributedString** str, id font, NSSize constrainSize, bool enableWrap) { CGRect actualSize = CGRectMake(0, 0, constrainSize.width + 1, constrainSize.height + 1); - int fontSize = [font pointSize]; - fontSize = fontSize + 1; + int fontSize = [font pointSize]; + fontSize = fontSize + 1; - if (!enableWrap) { - while (actualSize.size.width > constrainSize.width || - actualSize.size.height > constrainSize.height) { + if (!enableWrap) + { + while (actualSize.size.width > constrainSize.width || actualSize.size.height > constrainSize.height) + { fontSize = fontSize - 1; - if (fontSize < 0) { + if (fontSize < 0) + { actualSize = CGRectMake(0, 0, 0, 0); break; } - - NSMutableAttributedString *mutableString = [[*str mutableCopy] autorelease]; - *str = __attributedStringWithFontSize(mutableString, fontSize); + + NSMutableAttributedString* mutableString = [[*str mutableCopy] autorelease]; + *str = __attributedStringWithFontSize(mutableString, fontSize); #ifdef __MAC_10_11 - #if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin context:nil].size; - #else - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin].size; - #endif +# if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin + context:nil] + .size; +# else + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin] + .size; +# endif #else - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin].size; + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin] + .size; #endif - if(fitSize.width == 0 || fitSize.height == 0) continue; + if (fitSize.width == 0 || fitSize.height == 0) + continue; actualSize.size = fitSize; - if (constrainSize.width <= 0) { + if (constrainSize.width <= 0) + { constrainSize.width = fitSize.width; } - if (constrainSize.height <= 0){ + if (constrainSize.height <= 0) + { constrainSize.height = fitSize.height; } - if(fontSize <= 0){ + if (fontSize <= 0) + { break; } } - } - else { - while (actualSize.size.height > constrainSize.height - ||actualSize.size.width > constrainSize.width) { + else + { + while (actualSize.size.height > constrainSize.height || actualSize.size.width > constrainSize.width) + { fontSize = fontSize - 1; - if (fontSize < 0) { + if (fontSize < 0) + { actualSize = CGRectMake(0, 0, 0, 0); break; } - - NSMutableAttributedString *mutableString = [[*str mutableCopy] autorelease]; - *str = __attributedStringWithFontSize(mutableString, fontSize); + + NSMutableAttributedString* mutableString = [[*str mutableCopy] autorelease]; + *str = __attributedStringWithFontSize(mutableString, fontSize); #ifdef __MAC_10_11 - #if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( constrainSize.width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin context:nil].size; - #else - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( constrainSize.width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin].size; - #endif +# if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11 + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(constrainSize.width, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin + context:nil] + .size; +# else + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(constrainSize.width, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin] + .size; +# endif #else - CGSize fitSize = [*str boundingRectWithSize:CGSizeMake( constrainSize.width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin].size; + CGSize fitSize = [*str boundingRectWithSize:CGSizeMake(constrainSize.width, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin] + .size; #endif - - if(fitSize.width == 0 || fitSize.height == 0) continue; + + if (fitSize.width == 0 || fitSize.height == 0) + continue; actualSize.size = fitSize; - - if (constrainSize.width <= 0) { + + if (constrainSize.width <= 0) + { constrainSize.width = fitSize.width; } - if (constrainSize.height <= 0){ + if (constrainSize.height <= 0) + { constrainSize.height = fitSize.height; } - if(fontSize <= 0){ + if (fontSize <= 0) + { break; } } - } return CGSizeMake(actualSize.size.width, actualSize.size.height); } static NSFont* _createSystemFont(const char* fontName, int size) { - NSString * fntName = [NSString stringWithUTF8String:fontName]; - fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; - + NSString* fntName = [NSString stringWithUTF8String:fontName]; + fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; + // font - NSFont *font = [NSFont fontWithName:fntName size:size]; - - if (font == nil) { + NSFont* font = [NSFont fontWithName:fntName size:size]; + + if (font == nil) + { font = [NSFont systemFontOfSize:size]; } return font; } - static CGFloat _calculateTextDrawStartHeight(cocos2d::Device::TextAlign align, CGSize realDimensions, CGSize dimensions) { float startH = 0; // vertical alignment unsigned int vAlignment = ((int)align >> 4) & 0x0F; - switch (vAlignment) { - //bottom - case 1:startH = dimensions.height - realDimensions.height;break; - //top - case 2:startH = 0;break; - //center - case 3: startH = (dimensions.height - realDimensions.height) / 2;break; - default: - break; + switch (vAlignment) + { + // bottom + case 1: + startH = dimensions.height - realDimensions.height; + break; + // top + case 2: + startH = 0; + break; + // center + case 3: + startH = (dimensions.height - realDimensions.height) / 2; + break; + default: + break; } return startH; } -static bool _initWithString(const char * text, Device::TextAlign align, const char * fontName, int size, tImageInfo* info, const Color3B* fontColor, int fontAlpha, bool enableWrap, int overflow, const FontStroke &stroke) +static bool _initWithString(const char* text, + Device::TextAlign align, + const char* fontName, + int size, + tImageInfo* info, + const Color3B* fontColor, + int fontAlpha, + bool enableWrap, + int overflow, + const FontStroke& stroke) { bool ret = false; - + CCASSERT(text, "Invalid text"); CCASSERT(info, "Invalid info"); - - do { - NSString * string = [NSString stringWithUTF8String:text]; + + do + { + NSString* string = [NSString stringWithUTF8String:text]; CC_BREAK_IF(!string); - + id font = _createSystemFont(fontName, size); CC_BREAK_IF(!font); - + // color NSColor* foregroundColor; - if (fontColor) { - foregroundColor = [NSColor colorWithDeviceRed:fontColor->r/255.0 - green:fontColor->g/255.0 - blue:fontColor->b/255.0 - alpha:fontAlpha/255.0]; - } else { + if (fontColor) + { + foregroundColor = [NSColor colorWithDeviceRed:fontColor->r / 255.0 + green:fontColor->g / 255.0 + blue:fontColor->b / 255.0 + alpha:fontAlpha / 255.0]; + } + else + { foregroundColor = [NSColor whiteColor]; } - + // alignment - NSTextAlignment textAlign = FontUtils::_calculateTextAlignment(align); - NSMutableParagraphStyle *paragraphStyle = FontUtils::_calculateParagraphStyle(enableWrap, overflow); + NSTextAlignment textAlign = FontUtils::_calculateTextAlignment(align); + NSMutableParagraphStyle* paragraphStyle = FontUtils::_calculateParagraphStyle(enableWrap, overflow); [paragraphStyle setAlignment:textAlign]; - + // attribute - NSDictionary* tokenAttributesDict = [NSDictionary dictionaryWithObjectsAndKeys: - foregroundColor,NSForegroundColorAttributeName, - font, NSFontAttributeName, - paragraphStyle, NSParagraphStyleAttributeName, nil]; - NSAttributedString *stringWithAttributes =[[[NSAttributedString alloc] initWithString:string - attributes:tokenAttributesDict] autorelease]; - + NSDictionary* tokenAttributesDict = [NSDictionary + dictionaryWithObjectsAndKeys:foregroundColor, NSForegroundColorAttributeName, font, NSFontAttributeName, + paragraphStyle, NSParagraphStyleAttributeName, nil]; + NSAttributedString* stringWithAttributes = + [[[NSAttributedString alloc] initWithString:string attributes:tokenAttributesDict] autorelease]; + CGSize dimensions = CGSizeMake(info->width, info->height); NSSize realDimensions; - + if (overflow == 2) realDimensions = _calculateRealSizeForString(&stringWithAttributes, font, dimensions, enableWrap); else - realDimensions = _calculateStringSize(stringWithAttributes, font, &dimensions, enableWrap, overflow); + realDimensions = _calculateStringSize(stringWithAttributes, font, &dimensions, enableWrap, overflow); // Mac crashes if the width or height is 0 CC_BREAK_IF(realDimensions.width <= 0 || realDimensions.height <= 0); - - if(dimensions.width <= 0.f) + + if (dimensions.width <= 0.f) dimensions.width = realDimensions.width; if (dimensions.height <= 0.f) - dimensions.height = realDimensions.height; - - //Alignment + dimensions.height = realDimensions.height; + + // Alignment CGFloat xPadding = FontUtils::_calculateTextDrawStartWidth(align, realDimensions, dimensions); CGFloat yPadding = _calculateTextDrawStartHeight(align, realDimensions, dimensions); NSInteger POTWide = dimensions.width; NSInteger POTHigh = dimensions.height; - NSRect textRect = NSMakeRect(xPadding, POTHigh - dimensions.height + yPadding, - realDimensions.width, realDimensions.height); - - NSBitmapImageRep* offscreenRep = [[[NSBitmapImageRep alloc] - initWithBitmapDataPlanes:NULL - pixelsWide:POTWide - pixelsHigh:POTHigh - bitsPerSample:8 - samplesPerPixel:4 - hasAlpha:YES - isPlanar:NO - colorSpaceName:NSDeviceRGBColorSpace - bitmapFormat: 0 - bytesPerRow:4 * POTWide - bitsPerPixel:32] autorelease]; + NSRect textRect = + NSMakeRect(xPadding, POTHigh - dimensions.height + yPadding, realDimensions.width, realDimensions.height); + + NSBitmapImageRep* offscreenRep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL + pixelsWide:POTWide + pixelsHigh:POTHigh + bitsPerSample:8 + samplesPerPixel:4 + hasAlpha:YES + isPlanar:NO + colorSpaceName:NSDeviceRGBColorSpace + bitmapFormat:0 + bytesPerRow:4 * POTWide + bitsPerPixel:32] autorelease]; NSGraphicsContext* g = [NSGraphicsContext graphicsContextWithBitmapImageRep:offscreenRep]; [NSGraphicsContext saveGraphicsState]; [NSGraphicsContext setCurrentContext:g]; - - if (stroke._strokeSize > 0) { - NSColor *strokeColor = [NSColor colorWithDeviceRed:stroke._strokeColor.r/255.0 - green:stroke._strokeColor.g/255.0 - blue:stroke._strokeColor.b/255.0 - alpha:stroke._strokeAlpha/255.0]; - NSNumber *strokeSize = [NSNumber numberWithFloat:stroke._strokeSize / size * 100.0]; - NSDictionary *tokenAttributesDict2 = [NSDictionary dictionaryWithObjectsAndKeys: - foregroundColor,NSForegroundColorAttributeName, - font, NSFontAttributeName, - paragraphStyle, NSParagraphStyleAttributeName, - strokeSize, NSStrokeWidthAttributeName, - strokeColor, NSStrokeColorAttributeName, - nil]; - NSAttributedString *strokeString = [[[NSAttributedString alloc] initWithString:string - attributes:tokenAttributesDict2] autorelease]; + + if (stroke._strokeSize > 0) + { + NSColor* strokeColor = [NSColor colorWithDeviceRed:stroke._strokeColor.r / 255.0 + green:stroke._strokeColor.g / 255.0 + blue:stroke._strokeColor.b / 255.0 + alpha:stroke._strokeAlpha / 255.0]; + NSNumber* strokeSize = [NSNumber numberWithFloat:stroke._strokeSize / size * 100.0]; + NSDictionary* tokenAttributesDict2 = [NSDictionary + dictionaryWithObjectsAndKeys:foregroundColor, NSForegroundColorAttributeName, font, NSFontAttributeName, + paragraphStyle, NSParagraphStyleAttributeName, strokeSize, + NSStrokeWidthAttributeName, strokeColor, NSStrokeColorAttributeName, nil]; + NSAttributedString* strokeString = + [[[NSAttributedString alloc] initWithString:string attributes:tokenAttributesDict2] autorelease]; [strokeString drawInRect:textRect]; } - + [stringWithAttributes drawInRect:textRect]; [NSGraphicsContext restoreGraphicsState]; - auto data = (unsigned char*) [offscreenRep bitmapData]; //Use the same buffer to improve the performance. + auto data = (unsigned char*)[offscreenRep bitmapData]; // Use the same buffer to improve the performance. NSUInteger textureSize = POTWide * POTHigh * 4; - auto dataNew = (unsigned char*)malloc(sizeof(unsigned char) * textureSize); - if (dataNew) { + auto dataNew = (unsigned char*)malloc(sizeof(unsigned char) * textureSize); + if (dataNew) + { memcpy(dataNew, data, textureSize); // output params - info->width = static_cast(POTWide); - info->height = static_cast(POTHigh); - info->data = dataNew; - info->hasAlpha = true; + info->width = static_cast(POTWide); + info->height = static_cast(POTHigh); + info->data = dataNew; + info->hasAlpha = true; info->isPremultipliedAlpha = true; - ret = true; + ret = true; } } while (0); return ret; } -Data Device::getTextureDataForText(const char * text, const FontDefinition& textDefinition, TextAlign align, int &width, int &height, bool& hasPremultipliedAlpha) +Data Device::getTextureDataForText(const char* text, + const FontDefinition& textDefinition, + TextAlign align, + int& width, + int& height, + bool& hasPremultipliedAlpha) { Data ret; - do { + do + { tImageInfo info = {0}; - info.width = textDefinition._dimensions.width; - info.height = textDefinition._dimensions.height; + info.width = textDefinition._dimensions.width; + info.height = textDefinition._dimensions.height; - if (! _initWithString(text, align, textDefinition._fontName.c_str(), textDefinition._fontSize, &info, &textDefinition._fontFillColor, textDefinition._fontAlpha, textDefinition._enableWrap, textDefinition._overflow, textDefinition._stroke)) + if (!_initWithString(text, align, textDefinition._fontName.c_str(), textDefinition._fontSize, &info, + &textDefinition._fontFillColor, textDefinition._fontAlpha, textDefinition._enableWrap, + textDefinition._overflow, textDefinition._stroke)) { break; } height = (short)info.height; - width = (short)info.width; - ret.fastSet(info.data,width * height * 4); + width = (short)info.width; + ret.fastSet(info.data, width * height * 4); hasPremultipliedAlpha = true; } while (0); - + return ret; } -void Device::setKeepScreenOn(bool value) -{ -} +void Device::setKeepScreenOn(bool value) {} -void Device::vibrate(float duration) -{ -} +void Device::vibrate(float duration) {} NS_CC_END diff --git a/cocos/platform/mac/CCGLViewImpl-mac.mm b/cocos/platform/mac/CCGLViewImpl-mac.mm index 6e76c249413a..574d3eba9582 100644 --- a/cocos/platform/mac/CCGLViewImpl-mac.mm +++ b/cocos/platform/mac/CCGLViewImpl-mac.mm @@ -40,7 +40,7 @@ of this software and associated documentation files (the "Software"), to deal #include "base/ccUTF8.h" #include "2d/CCCamera.h" #if CC_ICON_SET_SUPPORT -#include "platform/CCImage.h" +# include "platform/CCImage.h" #endif /* CC_ICON_SET_SUPPORT */ #include "renderer/backend/metal/DeviceMTL.h" #include "renderer/CCRenderer.h" @@ -100,16 +100,13 @@ static void onGLFWWindowPosCallback(GLFWwindow* windows, int x, int y) // _view->onGLFWframebufferSize(window, w, h); // } - static void onGLFWWindowSizeCallback(GLFWwindow *window, int width, int height) + static void onGLFWWindowSizeCallback(GLFWwindow* window, int width, int height) { if (_view) _view->onGLFWWindowSizeCallback(window, width, height); } - static void setGLViewImpl(GLViewImpl* view) - { - _view = view; - } + static void setGLViewImpl(GLViewImpl* view) { _view = view; } static void onGLFWWindowIconifyCallback(GLFWwindow* window, int iconified) { @@ -132,8 +129,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) }; GLViewImpl* GLFWEventHandler::_view = nullptr; -const std::string GLViewImpl::EVENT_WINDOW_RESIZED = "glview_window_resized"; -const std::string GLViewImpl::EVENT_WINDOW_FOCUSED = "glview_window_focused"; +const std::string GLViewImpl::EVENT_WINDOW_RESIZED = "glview_window_resized"; +const std::string GLViewImpl::EVENT_WINDOW_FOCUSED = "glview_window_focused"; const std::string GLViewImpl::EVENT_WINDOW_UNFOCUSED = "glview_window_unfocused"; //////////////////////////////////////////////////// @@ -148,149 +145,147 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) static keyCodeItem g_keyCodeStructArray[] = { /* The unknown key */ - { GLFW_KEY_UNKNOWN , EventKeyboard::KeyCode::KEY_NONE }, + {GLFW_KEY_UNKNOWN, EventKeyboard::KeyCode::KEY_NONE}, /* Printable keys */ - { GLFW_KEY_SPACE , EventKeyboard::KeyCode::KEY_SPACE }, - { GLFW_KEY_APOSTROPHE , EventKeyboard::KeyCode::KEY_APOSTROPHE }, - { GLFW_KEY_COMMA , EventKeyboard::KeyCode::KEY_COMMA }, - { GLFW_KEY_MINUS , EventKeyboard::KeyCode::KEY_MINUS }, - { GLFW_KEY_PERIOD , EventKeyboard::KeyCode::KEY_PERIOD }, - { GLFW_KEY_SLASH , EventKeyboard::KeyCode::KEY_SLASH }, - { GLFW_KEY_0 , EventKeyboard::KeyCode::KEY_0 }, - { GLFW_KEY_1 , EventKeyboard::KeyCode::KEY_1 }, - { GLFW_KEY_2 , EventKeyboard::KeyCode::KEY_2 }, - { GLFW_KEY_3 , EventKeyboard::KeyCode::KEY_3 }, - { GLFW_KEY_4 , EventKeyboard::KeyCode::KEY_4 }, - { GLFW_KEY_5 , EventKeyboard::KeyCode::KEY_5 }, - { GLFW_KEY_6 , EventKeyboard::KeyCode::KEY_6 }, - { GLFW_KEY_7 , EventKeyboard::KeyCode::KEY_7 }, - { GLFW_KEY_8 , EventKeyboard::KeyCode::KEY_8 }, - { GLFW_KEY_9 , EventKeyboard::KeyCode::KEY_9 }, - { GLFW_KEY_SEMICOLON , EventKeyboard::KeyCode::KEY_SEMICOLON }, - { GLFW_KEY_EQUAL , EventKeyboard::KeyCode::KEY_EQUAL }, - { GLFW_KEY_A , EventKeyboard::KeyCode::KEY_A }, - { GLFW_KEY_B , EventKeyboard::KeyCode::KEY_B }, - { GLFW_KEY_C , EventKeyboard::KeyCode::KEY_C }, - { GLFW_KEY_D , EventKeyboard::KeyCode::KEY_D }, - { GLFW_KEY_E , EventKeyboard::KeyCode::KEY_E }, - { GLFW_KEY_F , EventKeyboard::KeyCode::KEY_F }, - { GLFW_KEY_G , EventKeyboard::KeyCode::KEY_G }, - { GLFW_KEY_H , EventKeyboard::KeyCode::KEY_H }, - { GLFW_KEY_I , EventKeyboard::KeyCode::KEY_I }, - { GLFW_KEY_J , EventKeyboard::KeyCode::KEY_J }, - { GLFW_KEY_K , EventKeyboard::KeyCode::KEY_K }, - { GLFW_KEY_L , EventKeyboard::KeyCode::KEY_L }, - { GLFW_KEY_M , EventKeyboard::KeyCode::KEY_M }, - { GLFW_KEY_N , EventKeyboard::KeyCode::KEY_N }, - { GLFW_KEY_O , EventKeyboard::KeyCode::KEY_O }, - { GLFW_KEY_P , EventKeyboard::KeyCode::KEY_P }, - { GLFW_KEY_Q , EventKeyboard::KeyCode::KEY_Q }, - { GLFW_KEY_R , EventKeyboard::KeyCode::KEY_R }, - { GLFW_KEY_S , EventKeyboard::KeyCode::KEY_S }, - { GLFW_KEY_T , EventKeyboard::KeyCode::KEY_T }, - { GLFW_KEY_U , EventKeyboard::KeyCode::KEY_U }, - { GLFW_KEY_V , EventKeyboard::KeyCode::KEY_V }, - { GLFW_KEY_W , EventKeyboard::KeyCode::KEY_W }, - { GLFW_KEY_X , EventKeyboard::KeyCode::KEY_X }, - { GLFW_KEY_Y , EventKeyboard::KeyCode::KEY_Y }, - { GLFW_KEY_Z , EventKeyboard::KeyCode::KEY_Z }, - { GLFW_KEY_LEFT_BRACKET , EventKeyboard::KeyCode::KEY_LEFT_BRACKET }, - { GLFW_KEY_BACKSLASH , EventKeyboard::KeyCode::KEY_BACK_SLASH }, - { GLFW_KEY_RIGHT_BRACKET , EventKeyboard::KeyCode::KEY_RIGHT_BRACKET }, - { GLFW_KEY_GRAVE_ACCENT , EventKeyboard::KeyCode::KEY_GRAVE }, - { GLFW_KEY_WORLD_1 , EventKeyboard::KeyCode::KEY_GRAVE }, - { GLFW_KEY_WORLD_2 , EventKeyboard::KeyCode::KEY_NONE }, + {GLFW_KEY_SPACE, EventKeyboard::KeyCode::KEY_SPACE}, + {GLFW_KEY_APOSTROPHE, EventKeyboard::KeyCode::KEY_APOSTROPHE}, + {GLFW_KEY_COMMA, EventKeyboard::KeyCode::KEY_COMMA}, + {GLFW_KEY_MINUS, EventKeyboard::KeyCode::KEY_MINUS}, + {GLFW_KEY_PERIOD, EventKeyboard::KeyCode::KEY_PERIOD}, + {GLFW_KEY_SLASH, EventKeyboard::KeyCode::KEY_SLASH}, + {GLFW_KEY_0, EventKeyboard::KeyCode::KEY_0}, + {GLFW_KEY_1, EventKeyboard::KeyCode::KEY_1}, + {GLFW_KEY_2, EventKeyboard::KeyCode::KEY_2}, + {GLFW_KEY_3, EventKeyboard::KeyCode::KEY_3}, + {GLFW_KEY_4, EventKeyboard::KeyCode::KEY_4}, + {GLFW_KEY_5, EventKeyboard::KeyCode::KEY_5}, + {GLFW_KEY_6, EventKeyboard::KeyCode::KEY_6}, + {GLFW_KEY_7, EventKeyboard::KeyCode::KEY_7}, + {GLFW_KEY_8, EventKeyboard::KeyCode::KEY_8}, + {GLFW_KEY_9, EventKeyboard::KeyCode::KEY_9}, + {GLFW_KEY_SEMICOLON, EventKeyboard::KeyCode::KEY_SEMICOLON}, + {GLFW_KEY_EQUAL, EventKeyboard::KeyCode::KEY_EQUAL}, + {GLFW_KEY_A, EventKeyboard::KeyCode::KEY_A}, + {GLFW_KEY_B, EventKeyboard::KeyCode::KEY_B}, + {GLFW_KEY_C, EventKeyboard::KeyCode::KEY_C}, + {GLFW_KEY_D, EventKeyboard::KeyCode::KEY_D}, + {GLFW_KEY_E, EventKeyboard::KeyCode::KEY_E}, + {GLFW_KEY_F, EventKeyboard::KeyCode::KEY_F}, + {GLFW_KEY_G, EventKeyboard::KeyCode::KEY_G}, + {GLFW_KEY_H, EventKeyboard::KeyCode::KEY_H}, + {GLFW_KEY_I, EventKeyboard::KeyCode::KEY_I}, + {GLFW_KEY_J, EventKeyboard::KeyCode::KEY_J}, + {GLFW_KEY_K, EventKeyboard::KeyCode::KEY_K}, + {GLFW_KEY_L, EventKeyboard::KeyCode::KEY_L}, + {GLFW_KEY_M, EventKeyboard::KeyCode::KEY_M}, + {GLFW_KEY_N, EventKeyboard::KeyCode::KEY_N}, + {GLFW_KEY_O, EventKeyboard::KeyCode::KEY_O}, + {GLFW_KEY_P, EventKeyboard::KeyCode::KEY_P}, + {GLFW_KEY_Q, EventKeyboard::KeyCode::KEY_Q}, + {GLFW_KEY_R, EventKeyboard::KeyCode::KEY_R}, + {GLFW_KEY_S, EventKeyboard::KeyCode::KEY_S}, + {GLFW_KEY_T, EventKeyboard::KeyCode::KEY_T}, + {GLFW_KEY_U, EventKeyboard::KeyCode::KEY_U}, + {GLFW_KEY_V, EventKeyboard::KeyCode::KEY_V}, + {GLFW_KEY_W, EventKeyboard::KeyCode::KEY_W}, + {GLFW_KEY_X, EventKeyboard::KeyCode::KEY_X}, + {GLFW_KEY_Y, EventKeyboard::KeyCode::KEY_Y}, + {GLFW_KEY_Z, EventKeyboard::KeyCode::KEY_Z}, + {GLFW_KEY_LEFT_BRACKET, EventKeyboard::KeyCode::KEY_LEFT_BRACKET}, + {GLFW_KEY_BACKSLASH, EventKeyboard::KeyCode::KEY_BACK_SLASH}, + {GLFW_KEY_RIGHT_BRACKET, EventKeyboard::KeyCode::KEY_RIGHT_BRACKET}, + {GLFW_KEY_GRAVE_ACCENT, EventKeyboard::KeyCode::KEY_GRAVE}, + {GLFW_KEY_WORLD_1, EventKeyboard::KeyCode::KEY_GRAVE}, + {GLFW_KEY_WORLD_2, EventKeyboard::KeyCode::KEY_NONE}, /* Function keys */ - { GLFW_KEY_ESCAPE , EventKeyboard::KeyCode::KEY_ESCAPE }, - { GLFW_KEY_ENTER , EventKeyboard::KeyCode::KEY_ENTER }, - { GLFW_KEY_TAB , EventKeyboard::KeyCode::KEY_TAB }, - { GLFW_KEY_BACKSPACE , EventKeyboard::KeyCode::KEY_BACKSPACE }, - { GLFW_KEY_INSERT , EventKeyboard::KeyCode::KEY_INSERT }, - { GLFW_KEY_DELETE , EventKeyboard::KeyCode::KEY_DELETE }, - { GLFW_KEY_RIGHT , EventKeyboard::KeyCode::KEY_RIGHT_ARROW }, - { GLFW_KEY_LEFT , EventKeyboard::KeyCode::KEY_LEFT_ARROW }, - { GLFW_KEY_DOWN , EventKeyboard::KeyCode::KEY_DOWN_ARROW }, - { GLFW_KEY_UP , EventKeyboard::KeyCode::KEY_UP_ARROW }, - { GLFW_KEY_PAGE_UP , EventKeyboard::KeyCode::KEY_PG_UP }, - { GLFW_KEY_PAGE_DOWN , EventKeyboard::KeyCode::KEY_PG_DOWN }, - { GLFW_KEY_HOME , EventKeyboard::KeyCode::KEY_HOME }, - { GLFW_KEY_END , EventKeyboard::KeyCode::KEY_END }, - { GLFW_KEY_CAPS_LOCK , EventKeyboard::KeyCode::KEY_CAPS_LOCK }, - { GLFW_KEY_SCROLL_LOCK , EventKeyboard::KeyCode::KEY_SCROLL_LOCK }, - { GLFW_KEY_NUM_LOCK , EventKeyboard::KeyCode::KEY_NUM_LOCK }, - { GLFW_KEY_PRINT_SCREEN , EventKeyboard::KeyCode::KEY_PRINT }, - { GLFW_KEY_PAUSE , EventKeyboard::KeyCode::KEY_PAUSE }, - { GLFW_KEY_F1 , EventKeyboard::KeyCode::KEY_F1 }, - { GLFW_KEY_F2 , EventKeyboard::KeyCode::KEY_F2 }, - { GLFW_KEY_F3 , EventKeyboard::KeyCode::KEY_F3 }, - { GLFW_KEY_F4 , EventKeyboard::KeyCode::KEY_F4 }, - { GLFW_KEY_F5 , EventKeyboard::KeyCode::KEY_F5 }, - { GLFW_KEY_F6 , EventKeyboard::KeyCode::KEY_F6 }, - { GLFW_KEY_F7 , EventKeyboard::KeyCode::KEY_F7 }, - { GLFW_KEY_F8 , EventKeyboard::KeyCode::KEY_F8 }, - { GLFW_KEY_F9 , EventKeyboard::KeyCode::KEY_F9 }, - { GLFW_KEY_F10 , EventKeyboard::KeyCode::KEY_F10 }, - { GLFW_KEY_F11 , EventKeyboard::KeyCode::KEY_F11 }, - { GLFW_KEY_F12 , EventKeyboard::KeyCode::KEY_F12 }, - { GLFW_KEY_F13 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F14 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F15 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F16 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F17 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F18 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F19 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F20 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F21 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F22 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F23 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F24 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_F25 , EventKeyboard::KeyCode::KEY_NONE }, - { GLFW_KEY_KP_0 , EventKeyboard::KeyCode::KEY_0 }, - { GLFW_KEY_KP_1 , EventKeyboard::KeyCode::KEY_1 }, - { GLFW_KEY_KP_2 , EventKeyboard::KeyCode::KEY_2 }, - { GLFW_KEY_KP_3 , EventKeyboard::KeyCode::KEY_3 }, - { GLFW_KEY_KP_4 , EventKeyboard::KeyCode::KEY_4 }, - { GLFW_KEY_KP_5 , EventKeyboard::KeyCode::KEY_5 }, - { GLFW_KEY_KP_6 , EventKeyboard::KeyCode::KEY_6 }, - { GLFW_KEY_KP_7 , EventKeyboard::KeyCode::KEY_7 }, - { GLFW_KEY_KP_8 , EventKeyboard::KeyCode::KEY_8 }, - { GLFW_KEY_KP_9 , EventKeyboard::KeyCode::KEY_9 }, - { GLFW_KEY_KP_DECIMAL , EventKeyboard::KeyCode::KEY_PERIOD }, - { GLFW_KEY_KP_DIVIDE , EventKeyboard::KeyCode::KEY_KP_DIVIDE }, - { GLFW_KEY_KP_MULTIPLY , EventKeyboard::KeyCode::KEY_KP_MULTIPLY }, - { GLFW_KEY_KP_SUBTRACT , EventKeyboard::KeyCode::KEY_KP_MINUS }, - { GLFW_KEY_KP_ADD , EventKeyboard::KeyCode::KEY_KP_PLUS }, - { GLFW_KEY_KP_ENTER , EventKeyboard::KeyCode::KEY_KP_ENTER }, - { GLFW_KEY_KP_EQUAL , EventKeyboard::KeyCode::KEY_EQUAL }, - { GLFW_KEY_LEFT_SHIFT , EventKeyboard::KeyCode::KEY_LEFT_SHIFT }, - { GLFW_KEY_LEFT_CONTROL , EventKeyboard::KeyCode::KEY_LEFT_CTRL }, - { GLFW_KEY_LEFT_ALT , EventKeyboard::KeyCode::KEY_LEFT_ALT }, - { GLFW_KEY_LEFT_SUPER , EventKeyboard::KeyCode::KEY_HYPER }, - { GLFW_KEY_RIGHT_SHIFT , EventKeyboard::KeyCode::KEY_RIGHT_SHIFT }, - { GLFW_KEY_RIGHT_CONTROL , EventKeyboard::KeyCode::KEY_RIGHT_CTRL }, - { GLFW_KEY_RIGHT_ALT , EventKeyboard::KeyCode::KEY_RIGHT_ALT }, - { GLFW_KEY_RIGHT_SUPER , EventKeyboard::KeyCode::KEY_HYPER }, - { GLFW_KEY_MENU , EventKeyboard::KeyCode::KEY_MENU }, - { GLFW_KEY_LAST , EventKeyboard::KeyCode::KEY_NONE } -}; + {GLFW_KEY_ESCAPE, EventKeyboard::KeyCode::KEY_ESCAPE}, + {GLFW_KEY_ENTER, EventKeyboard::KeyCode::KEY_ENTER}, + {GLFW_KEY_TAB, EventKeyboard::KeyCode::KEY_TAB}, + {GLFW_KEY_BACKSPACE, EventKeyboard::KeyCode::KEY_BACKSPACE}, + {GLFW_KEY_INSERT, EventKeyboard::KeyCode::KEY_INSERT}, + {GLFW_KEY_DELETE, EventKeyboard::KeyCode::KEY_DELETE}, + {GLFW_KEY_RIGHT, EventKeyboard::KeyCode::KEY_RIGHT_ARROW}, + {GLFW_KEY_LEFT, EventKeyboard::KeyCode::KEY_LEFT_ARROW}, + {GLFW_KEY_DOWN, EventKeyboard::KeyCode::KEY_DOWN_ARROW}, + {GLFW_KEY_UP, EventKeyboard::KeyCode::KEY_UP_ARROW}, + {GLFW_KEY_PAGE_UP, EventKeyboard::KeyCode::KEY_PG_UP}, + {GLFW_KEY_PAGE_DOWN, EventKeyboard::KeyCode::KEY_PG_DOWN}, + {GLFW_KEY_HOME, EventKeyboard::KeyCode::KEY_HOME}, + {GLFW_KEY_END, EventKeyboard::KeyCode::KEY_END}, + {GLFW_KEY_CAPS_LOCK, EventKeyboard::KeyCode::KEY_CAPS_LOCK}, + {GLFW_KEY_SCROLL_LOCK, EventKeyboard::KeyCode::KEY_SCROLL_LOCK}, + {GLFW_KEY_NUM_LOCK, EventKeyboard::KeyCode::KEY_NUM_LOCK}, + {GLFW_KEY_PRINT_SCREEN, EventKeyboard::KeyCode::KEY_PRINT}, + {GLFW_KEY_PAUSE, EventKeyboard::KeyCode::KEY_PAUSE}, + {GLFW_KEY_F1, EventKeyboard::KeyCode::KEY_F1}, + {GLFW_KEY_F2, EventKeyboard::KeyCode::KEY_F2}, + {GLFW_KEY_F3, EventKeyboard::KeyCode::KEY_F3}, + {GLFW_KEY_F4, EventKeyboard::KeyCode::KEY_F4}, + {GLFW_KEY_F5, EventKeyboard::KeyCode::KEY_F5}, + {GLFW_KEY_F6, EventKeyboard::KeyCode::KEY_F6}, + {GLFW_KEY_F7, EventKeyboard::KeyCode::KEY_F7}, + {GLFW_KEY_F8, EventKeyboard::KeyCode::KEY_F8}, + {GLFW_KEY_F9, EventKeyboard::KeyCode::KEY_F9}, + {GLFW_KEY_F10, EventKeyboard::KeyCode::KEY_F10}, + {GLFW_KEY_F11, EventKeyboard::KeyCode::KEY_F11}, + {GLFW_KEY_F12, EventKeyboard::KeyCode::KEY_F12}, + {GLFW_KEY_F13, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F14, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F15, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F16, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F17, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F18, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F19, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F20, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F21, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F22, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F23, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F24, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_F25, EventKeyboard::KeyCode::KEY_NONE}, + {GLFW_KEY_KP_0, EventKeyboard::KeyCode::KEY_0}, + {GLFW_KEY_KP_1, EventKeyboard::KeyCode::KEY_1}, + {GLFW_KEY_KP_2, EventKeyboard::KeyCode::KEY_2}, + {GLFW_KEY_KP_3, EventKeyboard::KeyCode::KEY_3}, + {GLFW_KEY_KP_4, EventKeyboard::KeyCode::KEY_4}, + {GLFW_KEY_KP_5, EventKeyboard::KeyCode::KEY_5}, + {GLFW_KEY_KP_6, EventKeyboard::KeyCode::KEY_6}, + {GLFW_KEY_KP_7, EventKeyboard::KeyCode::KEY_7}, + {GLFW_KEY_KP_8, EventKeyboard::KeyCode::KEY_8}, + {GLFW_KEY_KP_9, EventKeyboard::KeyCode::KEY_9}, + {GLFW_KEY_KP_DECIMAL, EventKeyboard::KeyCode::KEY_PERIOD}, + {GLFW_KEY_KP_DIVIDE, EventKeyboard::KeyCode::KEY_KP_DIVIDE}, + {GLFW_KEY_KP_MULTIPLY, EventKeyboard::KeyCode::KEY_KP_MULTIPLY}, + {GLFW_KEY_KP_SUBTRACT, EventKeyboard::KeyCode::KEY_KP_MINUS}, + {GLFW_KEY_KP_ADD, EventKeyboard::KeyCode::KEY_KP_PLUS}, + {GLFW_KEY_KP_ENTER, EventKeyboard::KeyCode::KEY_KP_ENTER}, + {GLFW_KEY_KP_EQUAL, EventKeyboard::KeyCode::KEY_EQUAL}, + {GLFW_KEY_LEFT_SHIFT, EventKeyboard::KeyCode::KEY_LEFT_SHIFT}, + {GLFW_KEY_LEFT_CONTROL, EventKeyboard::KeyCode::KEY_LEFT_CTRL}, + {GLFW_KEY_LEFT_ALT, EventKeyboard::KeyCode::KEY_LEFT_ALT}, + {GLFW_KEY_LEFT_SUPER, EventKeyboard::KeyCode::KEY_HYPER}, + {GLFW_KEY_RIGHT_SHIFT, EventKeyboard::KeyCode::KEY_RIGHT_SHIFT}, + {GLFW_KEY_RIGHT_CONTROL, EventKeyboard::KeyCode::KEY_RIGHT_CTRL}, + {GLFW_KEY_RIGHT_ALT, EventKeyboard::KeyCode::KEY_RIGHT_ALT}, + {GLFW_KEY_RIGHT_SUPER, EventKeyboard::KeyCode::KEY_HYPER}, + {GLFW_KEY_MENU, EventKeyboard::KeyCode::KEY_MENU}, + {GLFW_KEY_LAST, EventKeyboard::KeyCode::KEY_NONE}}; ////////////////////////////////////////////////////////////////////////// // implement GLViewImpl ////////////////////////////////////////////////////////////////////////// - GLViewImpl::GLViewImpl(bool initglfw) -: _captured(false) -, _isInRetinaMonitor(false) -, _isRetinaEnabled(false) -, _retinaFactor(1) -, _frameZoomFactor(1.0f) -, _mainWindow(nullptr) -, _monitor(nullptr) -, _mouseX(0.0f) -, _mouseY(0.0f) + : _captured(false) + , _isInRetinaMonitor(false) + , _isRetinaEnabled(false) + , _retinaFactor(1) + , _frameZoomFactor(1.0f) + , _mainWindow(nullptr) + , _monitor(nullptr) + , _mouseX(0.0f) + , _mouseY(0.0f) { _viewName = "cocos2dx"; g_keyCodeMap.clear(); @@ -322,7 +317,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) GLViewImpl* GLViewImpl::create(std::string_view viewName, bool resizable) { auto ret = new GLViewImpl; - if(ret->initWithRect(viewName, Rect(0, 0, 960, 640), 1.0f, resizable)) { + if (ret->initWithRect(viewName, Rect(0, 0, 960, 640), 1.0f, resizable)) + { ret->autorelease(); return ret; } @@ -333,7 +329,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) GLViewImpl* GLViewImpl::createWithRect(std::string_view viewName, Rect rect, float frameZoomFactor, bool resizable) { auto ret = new GLViewImpl; - if(ret->initWithRect(viewName, rect, frameZoomFactor, resizable)) { + if (ret->initWithRect(viewName, rect, frameZoomFactor, resizable)) + { ret->autorelease(); return ret; } @@ -344,7 +341,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName) { auto ret = new GLViewImpl(); - if(ret->initWithFullScreen(viewName)) { + if (ret->initWithFullScreen(viewName)) + { ret->autorelease(); return ret; } @@ -352,10 +350,13 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return nullptr; } -GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName, const GLFWvidmode &videoMode, GLFWmonitor *monitor) +GLViewImpl* GLViewImpl::createWithFullScreen(std::string_view viewName, + const GLFWvidmode& videoMode, + GLFWmonitor* monitor) { auto ret = new GLViewImpl(); - if(ret->initWithFullscreen(viewName, videoMode, monitor)) { + if (ret->initWithFullscreen(viewName, videoMode, monitor)) + { ret->autorelease(); return ret; } @@ -369,22 +370,22 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) _frameZoomFactor = frameZoomFactor; - glfwWindowHint(GLFW_RESIZABLE,resizable?GL_TRUE:GL_FALSE); - glfwWindowHint(GLFW_RED_BITS,_glContextAttrs.redBits); - glfwWindowHint(GLFW_GREEN_BITS,_glContextAttrs.greenBits); - glfwWindowHint(GLFW_BLUE_BITS,_glContextAttrs.blueBits); - glfwWindowHint(GLFW_ALPHA_BITS,_glContextAttrs.alphaBits); - glfwWindowHint(GLFW_DEPTH_BITS,_glContextAttrs.depthBits); - glfwWindowHint(GLFW_STENCIL_BITS,_glContextAttrs.stencilBits); - + glfwWindowHint(GLFW_RESIZABLE, resizable ? GL_TRUE : GL_FALSE); + glfwWindowHint(GLFW_RED_BITS, _glContextAttrs.redBits); + glfwWindowHint(GLFW_GREEN_BITS, _glContextAttrs.greenBits); + glfwWindowHint(GLFW_BLUE_BITS, _glContextAttrs.blueBits); + glfwWindowHint(GLFW_ALPHA_BITS, _glContextAttrs.alphaBits); + glfwWindowHint(GLFW_DEPTH_BITS, _glContextAttrs.depthBits); + glfwWindowHint(GLFW_STENCIL_BITS, _glContextAttrs.stencilBits); + glfwWindowHint(GLFW_SAMPLES, _glContextAttrs.multisamplingCount); - + #if defined(CC_USE_METAL) // Don't create gl context. glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); #endif - int neededWidth = rect.size.width * _frameZoomFactor; + int neededWidth = rect.size.width * _frameZoomFactor; int neededHeight = rect.size.height * _frameZoomFactor; _mainWindow = glfwCreateWindow(neededWidth, neededHeight, _viewName.c_str(), _monitor, nullptr); @@ -401,13 +402,12 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) ccMessageBox(message.c_str(), "Error launch application"); return false; } - + int fbWidth, fbHeight; glfwGetFramebufferSize(_mainWindow, &fbWidth, &fbHeight); - - + CGSize size; - size.width = static_cast(fbWidth); + size.width = static_cast(fbWidth); size.height = static_cast(fbHeight); #if defined(CC_USE_METAL) @@ -420,7 +420,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) } NSView* contentView = [getCocoaWindow() contentView]; - [contentView setWantsLayer: YES]; + [contentView setWantsLayer:YES]; CAMetalLayer* layer = [CAMetalLayer layer]; [layer setDevice:device]; [layer setPixelFormat:MTLPixelFormatBGRA8Unorm]; @@ -431,15 +431,15 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) #endif /* - * Note that the created window and context may differ from what you requested, - * as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To retrieve the actual - * attributes of the created window and context, use queries like @ref - * glfwGetWindowAttrib and @ref glfwGetWindowSize. - * - * see declaration glfwCreateWindow - */ + * Note that the created window and context may differ from what you requested, + * as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To retrieve the actual + * attributes of the created window and context, use queries like @ref + * glfwGetWindowAttrib and @ref glfwGetWindowSize. + * + * see declaration glfwCreateWindow + */ int realW = 0, realH = 0; glfwGetWindowSize(_mainWindow, &realW, &realH); if (realW != neededWidth) @@ -472,7 +472,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) bool GLViewImpl::initWithFullScreen(std::string_view viewName) { - //Create fullscreen window on primary monitor at its current video mode. + // Create fullscreen window on primary monitor at its current video mode. _monitor = glfwGetPrimaryMonitor(); if (nullptr == _monitor) return false; @@ -481,19 +481,21 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return initWithRect(viewName, Rect(0, 0, (float)videoMode->width, (float)videoMode->height), 1.0f, false); } -bool GLViewImpl::initWithFullscreen(const std::string &viewname, const GLFWvidmode &videoMode, GLFWmonitor *monitor) +bool GLViewImpl::initWithFullscreen(const std::string& viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor) { - //Create fullscreen on specified monitor at the specified video mode. + // Create fullscreen on specified monitor at the specified video mode. _monitor = monitor; if (nullptr == _monitor) return false; - - //These are soft constraints. If the video mode is retrieved at runtime, the resulting window and context should match these exactly. If invalid attribs are passed (eg. from an outdated cache), window creation will NOT fail but the actual window/context may differ. + + // These are soft constraints. If the video mode is retrieved at runtime, the resulting window and context should + // match these exactly. If invalid attribs are passed (eg. from an outdated cache), window creation will NOT fail + // but the actual window/context may differ. glfwWindowHint(GLFW_REFRESH_RATE, videoMode.refreshRate); glfwWindowHint(GLFW_RED_BITS, videoMode.redBits); glfwWindowHint(GLFW_BLUE_BITS, videoMode.blueBits); glfwWindowHint(GLFW_GREEN_BITS, videoMode.greenBits); - + return initWithRect(viewname, Rect(0, 0, (float)videoMode.width, (float)videoMode.height), 1.0f, false); } @@ -504,9 +506,9 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::end() { - if(_mainWindow) + if (_mainWindow) { - glfwSetWindowShouldClose(_mainWindow,1); + glfwSetWindowShouldClose(_mainWindow, 1); _mainWindow = nullptr; } // Release self. Otherwise, GLViewImpl could not be freed. @@ -516,14 +518,14 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::swapBuffers() { #if defined(CC_USE_GL) - if(_mainWindow) + if (_mainWindow) glfwSwapBuffers(_mainWindow); #endif } bool GLViewImpl::windowShouldClose() { - if(_mainWindow) + if (_mainWindow) return glfwWindowShouldClose(_mainWindow) ? true : false; else return true; @@ -536,49 +538,54 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::enableRetina(bool enabled) { - _isRetinaEnabled = enabled; - if (_isRetinaEnabled) - { - _retinaFactor = 1; - } - else - { - _retinaFactor = 2; - } - updateFrameSize(); + _isRetinaEnabled = enabled; + if (_isRetinaEnabled) + { + _retinaFactor = 1; + } + else + { + _retinaFactor = 2; + } + updateFrameSize(); } - -void GLViewImpl::setIMEKeyboardState(bool /*bOpen*/) -{ - -} +void GLViewImpl::setIMEKeyboardState(bool /*bOpen*/) {} #if CC_ICON_SET_SUPPORT -void GLViewImpl::setIcon(std::string_view filename) const { +void GLViewImpl::setIcon(std::string_view filename) const +{ std::vector vec = {filename}; this->setIcon(vec); } -void GLViewImpl::setIcon(const std::vector& filelist) const { - if (filelist.empty()) return; +void GLViewImpl::setIcon(const std::vector& filelist) const +{ + if (filelist.empty()) + return; std::vector icons; - for (auto const& filename: filelist) { + for (auto const& filename : filelist) + { Image* icon = new Image(); - if (icon->initWithImageFile(filename)) { + if (icon->initWithImageFile(filename)) + { icons.push_back(icon); - } else { + } + else + { CC_SAFE_DELETE(icon); } } - if (icons.empty()) return; // No valid images + if (icons.empty()) + return; // No valid images size_t iconsCount = icons.size(); - auto images = new GLFWimage[iconsCount]; - for (size_t i = 0; i < iconsCount; i++) { - auto& image = images[i]; - auto& icon = icons[i]; - image.width = icon->getWidth(); + auto images = new GLFWimage[iconsCount]; + for (size_t i = 0; i < iconsCount; i++) + { + auto& image = images[i]; + auto& icon = icons[i]; + image.width = icon->getWidth(); image.height = icon->getHeight(); image.pixels = icon->getData(); }; @@ -587,23 +594,25 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) glfwSetWindowIcon(window, iconsCount, images); CC_SAFE_DELETE_ARRAY(images); - for (auto& icon: icons) { + for (auto& icon : icons) + { CC_SAFE_DELETE(icon); } } -void GLViewImpl::setDefaultIcon() const { +void GLViewImpl::setDefaultIcon() const +{ GLFWwindow* window = this->getWindow(); glfwSetWindowIcon(window, 0, nullptr); } #endif /* CC_ICON_SET_SUPPORT */ -void GLViewImpl::setCursorVisible( bool isVisible ) +void GLViewImpl::setCursorVisible(bool isVisible) { - if( _mainWindow == NULL ) + if (_mainWindow == NULL) return; - - if( isVisible ) + + if (isVisible) glfwSetInputMode(_mainWindow, GLFW_CURSOR, GLFW_CURSOR_NORMAL); else glfwSetInputMode(_mainWindow, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); @@ -627,7 +636,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return _frameZoomFactor; } -bool GLViewImpl::isFullscreen() const { +bool GLViewImpl::isFullscreen() const +{ return (_monitor != nullptr); } @@ -636,9 +646,11 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) setFullscreen(-1, -1, -1); } -void GLViewImpl::setFullscreen(int w, int h, int refreshRate) { +void GLViewImpl::setFullscreen(int w, int h, int refreshRate) +{ auto monitor = glfwGetPrimaryMonitor(); - if (nullptr == monitor || monitor == _monitor) { + if (nullptr == monitor || monitor == _monitor) + { return; } this->setFullscreen(monitor, w, h, refreshRate); @@ -649,20 +661,24 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) setFullscreen(monitorIndex, -1, -1, -1); } -void GLViewImpl::setFullscreen(int monitorIndex, int w, int h, int refreshRate) { - int count = 0; +void GLViewImpl::setFullscreen(int monitorIndex, int w, int h, int refreshRate) +{ + int count = 0; GLFWmonitor** monitors = glfwGetMonitors(&count); - if (monitorIndex < 0 || monitorIndex >= count) { + if (monitorIndex < 0 || monitorIndex >= count) + { return; } GLFWmonitor* monitor = monitors[monitorIndex]; - if (nullptr == monitor || _monitor == monitor) { + if (nullptr == monitor || _monitor == monitor) + { return; } this->setFullscreen(monitor, w, h, refreshRate); } -void GLViewImpl::setFullscreen(GLFWmonitor *monitor, int w, int h, int refreshRate) { +void GLViewImpl::setFullscreen(GLFWmonitor* monitor, int w, int h, int refreshRate) +{ _monitor = monitor; const GLFWvidmode* videoMode = glfwGetVideoMode(_monitor); @@ -678,10 +694,14 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) updateWindowSize(); } -void GLViewImpl::setWindowed(int width, int height) { - if (!this->isFullscreen()) { +void GLViewImpl::setWindowed(int width, int height) +{ + if (!this->isFullscreen()) + { this->setFrameSize((float)width, (float)height); - } else { + } + else + { const GLFWvidmode* videoMode = glfwGetVideoMode(_monitor); int xpos = 0, ypos = 0; glfwGetMonitorPos(_monitor, &xpos, &ypos); @@ -702,31 +722,36 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) { int w = 0, h = 0; glfwGetFramebufferSize(_mainWindow, &w, &h); - int frameWidth = w / _frameZoomFactor; + int frameWidth = w / _frameZoomFactor; int frameHeight = h / _frameZoomFactor; setFrameSize(frameWidth, frameHeight); updateDesignResolutionSize(); Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(GLViewImpl::EVENT_WINDOW_RESIZED, nullptr); } -int GLViewImpl::getMonitorCount() const { +int GLViewImpl::getMonitorCount() const +{ int count = 0; glfwGetMonitors(&count); return count; } -Size GLViewImpl::getMonitorSize() const { +Size GLViewImpl::getMonitorSize() const +{ GLFWmonitor* monitor = _monitor; - if (nullptr == monitor) { + if (nullptr == monitor) + { GLFWwindow* window = this->getWindow(); - monitor = glfwGetWindowMonitor(window); + monitor = glfwGetWindowMonitor(window); } - if (nullptr == monitor) { + if (nullptr == monitor) + { monitor = glfwGetPrimaryMonitor(); } - if (nullptr != monitor) { + if (nullptr != monitor) + { const GLFWvidmode* videoMode = glfwGetVideoMode(monitor); - Size size = Size((float)videoMode->width, (float)videoMode->height); + Size size = Size((float)videoMode->width, (float)videoMode->height); return size; } return Size::ZERO; @@ -752,7 +777,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) { _retinaFactor = 2; } - glfwSetWindowSize(_mainWindow, _screenSize.width/2 * _retinaFactor * _frameZoomFactor, _screenSize.height/2 * _retinaFactor * _frameZoomFactor); + glfwSetWindowSize(_mainWindow, _screenSize.width / 2 * _retinaFactor * _frameZoomFactor, + _screenSize.height / 2 * _retinaFactor * _frameZoomFactor); _isInRetinaMonitor = true; } @@ -762,7 +788,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) { _retinaFactor = 1; } - glfwSetWindowSize(_mainWindow, (int)(_screenSize.width * _retinaFactor * _frameZoomFactor), (int)(_screenSize.height *_retinaFactor * _frameZoomFactor)); + glfwSetWindowSize(_mainWindow, (int)(_screenSize.width * _retinaFactor * _frameZoomFactor), + (int)(_screenSize.height * _retinaFactor * _frameZoomFactor)); _isInRetinaMonitor = false; } @@ -775,22 +802,26 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) updateFrameSize(); } -void GLViewImpl::setViewPortInPoints(float x , float y , float w , float h) +void GLViewImpl::setViewPortInPoints(float x, float y, float w, float h) { Viewport vp; - vp.x = (int)(x * _scaleX * _retinaFactor * _frameZoomFactor + _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor); - vp.y = (int)(y * _scaleY * _retinaFactor * _frameZoomFactor + _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor); + vp.x = (int)(x * _scaleX * _retinaFactor * _frameZoomFactor + + _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor); + vp.y = (int)(y * _scaleY * _retinaFactor * _frameZoomFactor + + _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor); vp.w = (unsigned int)(w * _scaleX * _retinaFactor * _frameZoomFactor); vp.h = (unsigned int)(h * _scaleY * _retinaFactor * _frameZoomFactor); Camera::setDefaultViewport(vp); } -void GLViewImpl::setScissorInPoints(float x , float y , float w , float h) +void GLViewImpl::setScissorInPoints(float x, float y, float w, float h) { - auto x1 = (int)(x * _scaleX * _retinaFactor * _frameZoomFactor + _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor); - auto y1 = (int)(y * _scaleY * _retinaFactor * _frameZoomFactor + _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor); - auto width1 = (unsigned int)(w * _scaleX * _retinaFactor * _frameZoomFactor); - auto height1 = (unsigned int)(h * _scaleY * _retinaFactor * _frameZoomFactor); + auto x1 = (int)(x * _scaleX * _retinaFactor * _frameZoomFactor + + _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor); + auto y1 = (int)(y * _scaleY * _retinaFactor * _frameZoomFactor + + _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor); + auto width1 = (unsigned int)(w * _scaleX * _retinaFactor * _frameZoomFactor); + auto height1 = (unsigned int)(h * _scaleY * _retinaFactor * _frameZoomFactor); auto renderer = Director::getInstance()->getRenderer(); renderer->setScissorRect(x1, y1, width1, height1); } @@ -798,12 +829,14 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) Rect GLViewImpl::getScissorRect() const { auto renderer = Director::getInstance()->getRenderer(); - auto& rect = renderer->getScissorRect(); + auto& rect = renderer->getScissorRect(); - float x = (rect.x - _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor) / (_scaleX * _retinaFactor * _frameZoomFactor); - float y = (rect.y - _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor) / (_scaleY * _retinaFactor * _frameZoomFactor); + float x = (rect.x - _viewPortRect.origin.x * _retinaFactor * _frameZoomFactor) / + (_scaleX * _retinaFactor * _frameZoomFactor); + float y = (rect.y - _viewPortRect.origin.y * _retinaFactor * _frameZoomFactor) / + (_scaleY * _retinaFactor * _frameZoomFactor); float w = rect.width / (_scaleX * _retinaFactor * _frameZoomFactor); - float h = rect.height / (_scaleY * _retinaFactor * _frameZoomFactor); + float h = rect.height / (_scaleY * _retinaFactor * _frameZoomFactor); return Rect(x, y, w, h); } @@ -822,40 +855,41 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::onGLFWMouseCallBack(GLFWwindow* /*window*/, int button, int action, int /*modify*/) { - if(GLFW_MOUSE_BUTTON_LEFT == button) + if (GLFW_MOUSE_BUTTON_LEFT == button) { - if(GLFW_PRESS == action) + if (GLFW_PRESS == action) { _captured = true; - if (this->getViewPortRect().equals(Rect::ZERO) || this->getViewPortRect().containsPoint(Vec2(_mouseX,_mouseY))) + if (this->getViewPortRect().equals(Rect::ZERO) || + this->getViewPortRect().containsPoint(Vec2(_mouseX, _mouseY))) { intptr_t id = 0; this->handleTouchesBegin(1, &id, &_mouseX, &_mouseY); } } - else if(GLFW_RELEASE == action) + else if (GLFW_RELEASE == action) { if (_captured) { - _captured = false; + _captured = false; intptr_t id = 0; this->handleTouchesEnd(1, &id, &_mouseX, &_mouseY); } } } - - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here + + // Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here float cursorX = (_mouseX - _viewPortRect.origin.x) / _scaleX; float cursorY = (_viewPortRect.origin.y + _viewPortRect.size.height - _mouseY) / _scaleY; - if(GLFW_PRESS == action) + if (GLFW_PRESS == action) { EventMouse event(EventMouse::MouseEventType::MOUSE_DOWN); event.setCursorPosition(cursorX, cursorY); event.setMouseButton(static_cast(button)); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); } - else if(GLFW_RELEASE == action) + else if (GLFW_RELEASE == action) { EventMouse event(EventMouse::MouseEventType::MOUSE_UP); event.setCursorPosition(cursorX, cursorY); @@ -886,8 +920,8 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) intptr_t id = 0; this->handleTouchesMove(1, &id, &_mouseX, &_mouseY); } - - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here + + // Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here float cursorX = (_mouseX - _viewPortRect.origin.x) / _scaleX; float cursorY = (_viewPortRect.origin.y + _viewPortRect.size.height - _mouseY) / _scaleY; @@ -912,7 +946,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::onGLFWMouseScrollCallback(GLFWwindow* /*window*/, double x, double y) { EventMouse event(EventMouse::MouseEventType::MOUSE_SCROLL); - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here + // Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here float cursorX = (_mouseX - _viewPortRect.origin.x) / _scaleX; float cursorY = (_viewPortRect.origin.y + _viewPortRect.size.height - _mouseY) / _scaleY; event.setScrollData((float)x, -(float)y); @@ -952,26 +986,26 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) void GLViewImpl::onGLFWCharCallback(GLFWwindow* /*window*/, unsigned int character) { - char16_t wcharString[2] = { (char16_t) character, 0 }; + char16_t wcharString[2] = {(char16_t)character, 0}; std::string utf8String; - StringUtils::UTF16ToUTF8( wcharString, utf8String ); + StringUtils::UTF16ToUTF8(wcharString, utf8String); static std::set controlUnicode = { - "\xEF\x9C\x80", // up - "\xEF\x9C\x81", // down - "\xEF\x9C\x82", // left - "\xEF\x9C\x83", // right - "\xEF\x9C\xA8", // delete - "\xEF\x9C\xA9", // home - "\xEF\x9C\xAB", // end - "\xEF\x9C\xAC", // pageup - "\xEF\x9C\xAD", // pagedown - "\xEF\x9C\xB9" // clear + "\xEF\x9C\x80", // up + "\xEF\x9C\x81", // down + "\xEF\x9C\x82", // left + "\xEF\x9C\x83", // right + "\xEF\x9C\xA8", // delete + "\xEF\x9C\xA9", // home + "\xEF\x9C\xAB", // end + "\xEF\x9C\xAC", // pageup + "\xEF\x9C\xAD", // pagedown + "\xEF\x9C\xB9" // clear }; // Check for send control key if (controlUnicode.find(utf8String) == controlUnicode.end()) { - IMEDispatcher::sharedDispatcher()->dispatchInsertText( utf8String.c_str(), utf8String.size() ); + IMEDispatcher::sharedDispatcher()->dispatchInsertText(utf8String.c_str(), utf8String.size()); } } @@ -984,18 +1018,18 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) { if (width && height && _resolutionPolicy != ResolutionPolicy::UNKNOWN) { - Size baseDesignSize = _designResolutionSize; + Size baseDesignSize = _designResolutionSize; ResolutionPolicy baseResolutionPolicy = _resolutionPolicy; - int frameWidth = width / _frameZoomFactor; + int frameWidth = width / _frameZoomFactor; int frameHeight = height / _frameZoomFactor; setFrameSize(frameWidth, frameHeight); setDesignResolutionSize(baseDesignSize.width, baseDesignSize.height, baseResolutionPolicy); Director::getInstance()->setViewport(); Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(GLViewImpl::EVENT_WINDOW_RESIZED, nullptr); - + #if defined(CC_USE_METAL) - //update metal attachment texture size. + // update metal attachment texture size. int fbWidth, fbHeight; glfwGetFramebufferSize(_mainWindow, &fbWidth, &fbHeight); backend::UtilsMTL::resizeDefaultAttachmentTexture(fbWidth, fbHeight); @@ -1027,4 +1061,4 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) } } -NS_CC_END // end of namespace cocos2d; +NS_CC_END // end of namespace cocos2d; diff --git a/cocos/platform/win32/CCFileUtils-win32.cpp b/cocos/platform/win32/CCFileUtils-win32.cpp index 809a91885212..06ff99cb0641 100644 --- a/cocos/platform/win32/CCFileUtils-win32.cpp +++ b/cocos/platform/win32/CCFileUtils-win32.cpp @@ -52,7 +52,7 @@ static std::string s_exePath; static std::string convertPathFormatToUnixStyle(std::string_view path) { std::string ret{path}; - int len = ret.length(); + int len = ret.length(); for (int i = 0; i < len; ++i) { if (ret[i] == '\\') @@ -129,7 +129,7 @@ bool FileUtilsWin32::init() DECLARE_GUARD; _checkWorkingPath(); - _defaultResRootPath = ntcvt::from_chars(s_workingPath); + _defaultResRootPath = ntcvt::from_chars(s_workingPath); _defaultResRootPathUtf16 = s_workingPath; bool bRet = FileUtils::init(); diff --git a/cocos/platform/win32/CCFileUtils-win32.h b/cocos/platform/win32/CCFileUtils-win32.h index 9cfdb703f0e0..48973fd365e2 100644 --- a/cocos/platform/win32/CCFileUtils-win32.h +++ b/cocos/platform/win32/CCFileUtils-win32.h @@ -63,9 +63,7 @@ class CC_DLL FileUtilsWin32 : public FileUtils * @param name The new name of the file. * @return True if the file have been renamed successfully, false if not. */ - virtual bool renameFile(std::string_view path, - std::string_view oldname, - std::string_view name) const override; + virtual bool renameFile(std::string_view path, std::string_view oldname, std::string_view name) const override; /** * Renames a file under the given directory. diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index 46564478a522..a81f654cd320 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -741,7 +741,7 @@ void Texture2D::initProgram() // setup vertex layout auto vertexLayout = _programState->getVertexLayout(); - auto attributes = _programState->getProgram()->getActiveAttributes(); + auto attributes = _programState->getProgram()->getActiveAttributes(); auto iter = attributes.find("a_position"); if (iter != attributes.end()) vertexLayout->setAttribute("a_position", iter->second.location, backend::VertexFormat::FLOAT2, 0, false); diff --git a/cocos/renderer/CCTextureCache.cpp b/cocos/renderer/CCTextureCache.cpp index 36b3296ace4a..f99bcfc4de20 100644 --- a/cocos/renderer/CCTextureCache.cpp +++ b/cocos/renderer/CCTextureCache.cpp @@ -588,12 +588,12 @@ void TextureCache::removeTexture(Texture2D* texture) void TextureCache::removeTextureForKey(std::string_view textureKeyName) { - auto it = _textures.find(textureKeyName); + auto it = _textures.find(textureKeyName); if (it == _textures.end()) { auto key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); - it = _textures.find(key); + it = _textures.find(key); } if (it != _textures.end()) @@ -605,12 +605,12 @@ void TextureCache::removeTextureForKey(std::string_view textureKeyName) Texture2D* TextureCache::getTextureForKey(std::string_view textureKeyName) const { - auto it = _textures.find(textureKeyName); + auto it = _textures.find(textureKeyName); if (it == _textures.end()) { auto key = FileUtils::getInstance()->fullPathForFilename(textureKeyName); - it = _textures.find(key); + it = _textures.find(key); } if (it != _textures.end()) @@ -677,12 +677,12 @@ std::string TextureCache::getCachedTextureInfo() const void TextureCache::renameTextureWithKey(std::string_view srcName, std::string_view dstName) { - auto it = _textures.find(srcName); + auto it = _textures.find(srcName); if (it == _textures.end()) { auto key = FileUtils::getInstance()->fullPathForFilename(srcName); - it = _textures.find(key); + it = _textures.find(key); } if (it != _textures.end()) @@ -864,9 +864,7 @@ void VolatileTextureMgr::reloadAllTextures() _isReloading = false; } -void VolatileTextureMgr::reloadTexture(Texture2D* texture, - std::string_view filename, - backend::PixelFormat pixelFormat) +void VolatileTextureMgr::reloadTexture(Texture2D* texture, std::string_view filename, backend::PixelFormat pixelFormat) { if (!texture) return; diff --git a/cocos/renderer/backend/Program.h b/cocos/renderer/backend/Program.h index 95b655820e46..4ac6ccc01fc4 100644 --- a/cocos/renderer/backend/Program.h +++ b/cocos/renderer/backend/Program.h @@ -138,8 +138,7 @@ class CC_DLL Program : public Ref * Get all uniformInfos. * @return The uniformInfos. */ - virtual const hlookup::string_map& getAllActiveUniformInfo( - ShaderStage stage) const = 0; + virtual const hlookup::string_map& getAllActiveUniformInfo(ShaderStage stage) const = 0; /** * Set engin built-in program type. diff --git a/cocos/renderer/backend/ProgramState.h b/cocos/renderer/backend/ProgramState.h index d1c8cb272dd5..8c31ca96858a 100644 --- a/cocos/renderer/backend/ProgramState.h +++ b/cocos/renderer/backend/ProgramState.h @@ -278,9 +278,7 @@ class CC_DLL ProgramState : public Ref * @return True if the auto binding is handled and the associated parameter is * bound, false otherwise. */ - virtual bool resolveAutoBinding(ProgramState*, - std::string_view uniformName, - std::string_view autoBinding) = 0; + virtual bool resolveAutoBinding(ProgramState*, std::string_view uniformName, std::string_view autoBinding) = 0; }; /** * Sets a uniform auto-binding. diff --git a/cocos/renderer/backend/VertexLayout.cpp b/cocos/renderer/backend/VertexLayout.cpp index ad8f48ab8954..fbd4be4d3e8d 100644 --- a/cocos/renderer/backend/VertexLayout.cpp +++ b/cocos/renderer/backend/VertexLayout.cpp @@ -41,7 +41,7 @@ void VertexLayout::setAttribute(std::string_view name, hlookup::set_item( _attributes, name, Attribute{name, index, format, offset, - needToBeNormallized}); // _attributes[name] = {name, index, format, offset, needToBeNormallized}; + needToBeNormallized}); // _attributes[name] = {name, index, format, offset, needToBeNormallized}; } void VertexLayout::setLayout(std::size_t stride) diff --git a/cocos/renderer/backend/metal/BufferMTL.mm b/cocos/renderer/backend/metal/BufferMTL.mm index 9abe3d62a4a4..fb336acfd5fc 100644 --- a/cocos/renderer/backend/metal/BufferMTL.mm +++ b/cocos/renderer/backend/metal/BufferMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "BufferMTL.h" #include "../Macros.h" #include "BufferManager.h" @@ -29,15 +29,15 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN BufferMTL::BufferMTL(id mtlDevice, std::size_t size, BufferType type, BufferUsage usage) -: Buffer(size, type, usage) + : Buffer(size, type, usage) { if (BufferUsage::DYNAMIC == usage) { - NSMutableArray *mutableDynamicDataBuffers = [NSMutableArray arrayWithCapacity:MAX_INFLIGHT_BUFFER]; + NSMutableArray* mutableDynamicDataBuffers = [NSMutableArray arrayWithCapacity:MAX_INFLIGHT_BUFFER]; for (int i = 0; i < MAX_INFLIGHT_BUFFER; ++i) { // Create a new buffer with enough capacity to store one instance of the dynamic buffer data - id dynamicDataBuffer = [mtlDevice newBufferWithLength:size options:MTLResourceStorageModeShared]; + id dynamicDataBuffer = [mtlDevice newBufferWithLength:size options:MTLResourceStorageModeShared]; [mutableDynamicDataBuffers addObject:dynamicDataBuffer]; } _dynamicDataBuffers = [mutableDynamicDataBuffers copy]; @@ -97,8 +97,8 @@ of this software and associated documentation files (the "Software"), to deal if (BufferUsage::DYNAMIC == _usage && !_indexUpdated) { _currentFrameIndex = (_currentFrameIndex + 1) % MAX_INFLIGHT_BUFFER; - _mtlBuffer = _dynamicDataBuffers[_currentFrameIndex]; - _indexUpdated = true; + _mtlBuffer = _dynamicDataBuffers[_currentFrameIndex]; + _indexUpdated = true; } } diff --git a/cocos/renderer/backend/metal/BufferManager.mm b/cocos/renderer/backend/metal/BufferManager.mm index 22776b4799de..0fae9871b2a2 100644 --- a/cocos/renderer/backend/metal/BufferManager.mm +++ b/cocos/renderer/backend/metal/BufferManager.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "BufferManager.h" #include "BufferMTL.h" diff --git a/cocos/renderer/backend/metal/CommandBufferMTL.mm b/cocos/renderer/backend/metal/CommandBufferMTL.mm index 0490fa56248d..3d881af178b7 100644 --- a/cocos/renderer/backend/metal/CommandBufferMTL.mm +++ b/cocos/renderer/backend/metal/CommandBufferMTL.mm @@ -22,7 +22,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "CommandBufferMTL.h" #include "BufferMTL.h" #include "DeviceMTL.h" @@ -39,130 +39,131 @@ of this software and associated documentation files (the "Software"), to deal namespace { -#define byte(n) ((n) * 8) +#define byte(n) ((n)*8) #define bit(n) (n) - static uint8_t getBitsPerElementMTL(MTLPixelFormat pixleFormat) +static uint8_t getBitsPerElementMTL(MTLPixelFormat pixleFormat) +{ + switch (pixleFormat) { - switch (pixleFormat) - { - case MTLPixelFormatDepth32Float_Stencil8: - return byte(8); - case MTLPixelFormatBGRA8Unorm: - case MTLPixelFormatRGBA8Unorm: - case MTLPixelFormatDepth32Float: - return byte(4); - #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - case MTLPixelFormatDepth24Unorm_Stencil8: - return byte(4); - #else - case MTLPixelFormatABGR4Unorm: - case MTLPixelFormatBGR5A1Unorm: - case MTLPixelFormatB5G6R5Unorm: - case MTLPixelFormatA1BGR5Unorm: - return byte(2); - #endif - case MTLPixelFormatA8Unorm: - case MTLPixelFormatR8Unorm: - return byte(1); - default: - assert(false); - break; - } - return 0; + case MTLPixelFormatDepth32Float_Stencil8: + return byte(8); + case MTLPixelFormatBGRA8Unorm: + case MTLPixelFormatRGBA8Unorm: + case MTLPixelFormatDepth32Float: + return byte(4); +#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + case MTLPixelFormatDepth24Unorm_Stencil8: + return byte(4); +#else + case MTLPixelFormatABGR4Unorm: + case MTLPixelFormatBGR5A1Unorm: + case MTLPixelFormatB5G6R5Unorm: + case MTLPixelFormatA1BGR5Unorm: + return byte(2); +#endif + case MTLPixelFormatA8Unorm: + case MTLPixelFormatR8Unorm: + return byte(1); + default: + assert(false); + break; } + return 0; +} - static MTLWinding toMTLWinding(Winding winding) - { - if (Winding::CLOCK_WISE == winding) - return MTLWindingClockwise; - else - return MTLWindingCounterClockwise; - } +static MTLWinding toMTLWinding(Winding winding) +{ + if (Winding::CLOCK_WISE == winding) + return MTLWindingClockwise; + else + return MTLWindingCounterClockwise; +} - static MTLPrimitiveType toMTLPrimitive(PrimitiveType primitiveType) - { - MTLPrimitiveType ret = MTLPrimitiveTypeTriangle; - switch (primitiveType) - { - case PrimitiveType::POINT: - ret = MTLPrimitiveTypePoint; - break; - case PrimitiveType::LINE: - ret = MTLPrimitiveTypeLine; - break; - case PrimitiveType::LINE_STRIP: - ret = MTLPrimitiveTypeLineStrip; - break; - case PrimitiveType::TRIANGLE: - ret = MTLPrimitiveTypeTriangle; - break; - case PrimitiveType::TRIANGLE_STRIP: - ret = MTLPrimitiveTypeTriangleStrip; - break; - default: - break; - } - return ret; - } - - static MTLIndexType toMTLIndexType(IndexFormat indexFormat) - { - if (IndexFormat::U_SHORT == indexFormat) - return MTLIndexTypeUInt16; - else - return MTLIndexTypeUInt32; - } - - static MTLCullMode toMTLCullMode(CullMode mode) - { - switch (mode) { - case CullMode::NONE: - return MTLCullModeNone; - case CullMode::FRONT: - return MTLCullModeFront; - case CullMode::BACK: - return MTLCullModeBack; - } - } - - static MTLRenderPassDescriptor* toMTLRenderPassDescriptor(const RenderTarget* rt, const RenderPassDescriptor& desc) - { - MTLRenderPassDescriptor* mtlDescritpor = [MTLRenderPassDescriptor renderPassDescriptor]; - - auto rtMTL = static_cast(rt); - rtMTL->applyRenderPassAttachments(desc, mtlDescritpor); - return mtlDescritpor; - } - - static id getMTLTexture(TextureBackend* texture, int index) +static MTLPrimitiveType toMTLPrimitive(PrimitiveType primitiveType) +{ + MTLPrimitiveType ret = MTLPrimitiveTypeTriangle; + switch (primitiveType) { - return reinterpret_cast>(texture->getHandler(index)); + case PrimitiveType::POINT: + ret = MTLPrimitiveTypePoint; + break; + case PrimitiveType::LINE: + ret = MTLPrimitiveTypeLine; + break; + case PrimitiveType::LINE_STRIP: + ret = MTLPrimitiveTypeLineStrip; + break; + case PrimitiveType::TRIANGLE: + ret = MTLPrimitiveTypeTriangle; + break; + case PrimitiveType::TRIANGLE_STRIP: + ret = MTLPrimitiveTypeTriangleStrip; + break; + default: + break; } - - static id getMTLSamplerState(TextureBackend* texture) + return ret; +} + +static MTLIndexType toMTLIndexType(IndexFormat indexFormat) +{ + if (IndexFormat::U_SHORT == indexFormat) + return MTLIndexTypeUInt16; + else + return MTLIndexTypeUInt32; +} + +static MTLCullMode toMTLCullMode(CullMode mode) +{ + switch (mode) { - switch (texture->getTextureType()) - { - case TextureType::TEXTURE_2D: - return static_cast(texture)->getMTLSamplerState(); - case TextureType::TEXTURE_CUBE: - return static_cast(texture)->getMTLSamplerState(); - default: - assert(false); - return nil; - } + case CullMode::NONE: + return MTLCullModeNone; + case CullMode::FRONT: + return MTLCullModeFront; + case CullMode::BACK: + return MTLCullModeBack; } +} - inline int clamp(int value, int min, int max) { - return std::min(max, std::max(min, value)); +static MTLRenderPassDescriptor* toMTLRenderPassDescriptor(const RenderTarget* rt, const RenderPassDescriptor& desc) +{ + MTLRenderPassDescriptor* mtlDescritpor = [MTLRenderPassDescriptor renderPassDescriptor]; + + auto rtMTL = static_cast(rt); + rtMTL->applyRenderPassAttachments(desc, mtlDescritpor); + return mtlDescritpor; +} + +static id getMTLTexture(TextureBackend* texture, int index) +{ + return reinterpret_cast>(texture->getHandler(index)); +} + +static id getMTLSamplerState(TextureBackend* texture) +{ + switch (texture->getTextureType()) + { + case TextureType::TEXTURE_2D: + return static_cast(texture)->getMTLSamplerState(); + case TextureType::TEXTURE_CUBE: + return static_cast(texture)->getMTLSamplerState(); + default: + assert(false); + return nil; } } -CommandBufferMTL::CommandBufferMTL(DeviceMTL* deviceMTL) -: _mtlCommandQueue(deviceMTL->getMTLCommandQueue()) -, _frameBoundarySemaphore(dispatch_semaphore_create(MAX_INFLIGHT_BUFFER)) +inline int clamp(int value, int min, int max) { + return std::min(max, std::max(min, value)); } +} + +CommandBufferMTL::CommandBufferMTL(DeviceMTL* deviceMTL) + : _mtlCommandQueue(deviceMTL->getMTLCommandQueue()) + , _frameBoundarySemaphore(dispatch_semaphore_create(MAX_INFLIGHT_BUFFER)) +{} CommandBufferMTL::~CommandBufferMTL() { @@ -171,7 +172,7 @@ inline int clamp(int value, int min, int max) { id oneOffBuffer = [_mtlCommandQueue commandBuffer]; [oneOffBuffer commit]; [oneOffBuffer waitUntilCompleted]; - + dispatch_semaphore_signal(_frameBoundarySemaphore); } @@ -199,38 +200,37 @@ inline int clamp(int value, int min, int max) { return true; } -void CommandBufferMTL::updateRenderCommandEncoder(const RenderTarget* renderTarget, const RenderPassDescriptor& renderPassDesc) +void CommandBufferMTL::updateRenderCommandEncoder(const RenderTarget* renderTarget, + const RenderPassDescriptor& renderPassDesc) { - if(_mtlRenderEncoder != nil && - _currentRenderPassDesc == renderPassDesc && - _currentRenderTarget == renderTarget && - _currentRenderTargetFlags == renderTarget->getTargetFlags()) + if (_mtlRenderEncoder != nil && _currentRenderPassDesc == renderPassDesc && _currentRenderTarget == renderTarget && + _currentRenderTargetFlags == renderTarget->getTargetFlags()) { return _mtlRenderEncoder; } - - _currentRenderTarget = renderTarget; - _currentRenderPassDesc = renderPassDesc; + + _currentRenderTarget = renderTarget; + _currentRenderPassDesc = renderPassDesc; _currentRenderTargetFlags = renderTarget->getTargetFlags(); - - if(_mtlRenderEncoder != nil) + + if (_mtlRenderEncoder != nil) { [_mtlRenderEncoder endEncoding]; [_mtlRenderEncoder release]; _mtlRenderEncoder = nil; } - auto mtlDescriptor = toMTLRenderPassDescriptor(renderTarget, renderPassDesc); - _renderTargetWidth = (unsigned int)mtlDescriptor.colorAttachments[0].texture.width; + auto mtlDescriptor = toMTLRenderPassDescriptor(renderTarget, renderPassDesc); + _renderTargetWidth = (unsigned int)mtlDescriptor.colorAttachments[0].texture.width; _renderTargetHeight = (unsigned int)mtlDescriptor.colorAttachments[0].texture.height; - _mtlRenderEncoder = [_mtlCommandBuffer renderCommandEncoderWithDescriptor:mtlDescriptor]; + _mtlRenderEncoder = [_mtlCommandBuffer renderCommandEncoderWithDescriptor:mtlDescriptor]; [_mtlRenderEncoder retain]; } void CommandBufferMTL::beginRenderPass(const RenderTarget* renderTarget, const RenderPassDescriptor& renderPassDesc) { updateRenderCommandEncoder(renderTarget, renderPassDesc); -// [_mtlRenderEncoder setFrontFacingWinding:MTLWindingCounterClockwise]; + // [_mtlRenderEncoder setFrontFacingWinding:MTLWindingCounterClockwise]; } void CommandBufferMTL::updateDepthStencilState(const DepthStencilDescriptor& descriptor) @@ -249,10 +249,10 @@ inline int clamp(int value, int min, int max) { MTLViewport viewport; viewport.originX = x; viewport.originY = (int)(_renderTargetHeight - y - h); - viewport.width = w; - viewport.height = h; - viewport.znear = 0; - viewport.zfar = 1; + viewport.width = w; + viewport.height = h; + viewport.znear = 0; + viewport.zfar = 1; [_mtlRenderEncoder setViewport:viewport]; } @@ -269,9 +269,7 @@ inline int clamp(int value, int min, int max) { void CommandBufferMTL::setVertexBuffer(Buffer* buffer) { // Vertex buffer is bound in index 0. - [_mtlRenderEncoder setVertexBuffer:static_cast(buffer)->getMTLBuffer() - offset:0 - atIndex:0]; + [_mtlRenderEncoder setVertexBuffer:static_cast(buffer)->getMTLBuffer() offset:0 atIndex:0]; } void CommandBufferMTL::setProgramState(ProgramState* programState) @@ -286,20 +284,21 @@ inline int clamp(int value, int min, int max) { assert(buffer != nullptr); if (!buffer) return; - + _mtlIndexBuffer = static_cast(buffer)->getMTLBuffer(); [_mtlIndexBuffer retain]; } -void CommandBufferMTL::drawArrays(PrimitiveType primitiveType, std::size_t start, std::size_t count) +void CommandBufferMTL::drawArrays(PrimitiveType primitiveType, std::size_t start, std::size_t count) { prepareDrawing(); - [_mtlRenderEncoder drawPrimitives:toMTLPrimitive(primitiveType) - vertexStart:start - vertexCount:count]; + [_mtlRenderEncoder drawPrimitives:toMTLPrimitive(primitiveType) vertexStart:start vertexCount:count]; } -void CommandBufferMTL::drawElements(PrimitiveType primitiveType, IndexFormat indexType, std::size_t count, std::size_t offset) +void CommandBufferMTL::drawElements(PrimitiveType primitiveType, + IndexFormat indexType, + std::size_t count, + std::size_t offset) { prepareDrawing(); [_mtlRenderEncoder drawIndexedPrimitives:toMTLPrimitive(primitiveType) @@ -307,7 +306,6 @@ inline int clamp(int value, int min, int max) { indexType:toMTLIndexType(indexType) indexBuffer:_mtlIndexBuffer indexBufferOffset:offset]; - } void CommandBufferMTL::endRenderPass() @@ -318,7 +316,7 @@ inline int clamp(int value, int min, int max) { void CommandBufferMTL::readPixels(RenderTarget* rt, std::function callback) { auto rtMTL = static_cast(rt); - + // we only read form color attachment 0 // if it's nullptr, will regard as screen to perform capture auto texture = rtMTL->_color[0].texture; @@ -331,14 +329,14 @@ inline int clamp(int value, int min, int max) { [_mtlRenderEncoder endEncoding]; [_mtlRenderEncoder release]; _mtlRenderEncoder = nil; - + auto currentDrawable = DeviceMTL::getCurrentDrawable(); [_mtlCommandBuffer presentDrawable:currentDrawable]; _drawableTexture = currentDrawable.texture; [_mtlCommandBuffer addCompletedHandler:^(id commandBuffer) { - // GPU work is complete - // Signal the semaphore to start the CPU work - dispatch_semaphore_signal(_frameBoundarySemaphore); + // GPU work is complete + // Signal the semaphore to start the CPU work + dispatch_semaphore_signal(_frameBoundarySemaphore); }]; flush(); @@ -349,12 +347,13 @@ inline int clamp(int value, int min, int max) { void CommandBufferMTL::flush() { - if(_mtlCommandBuffer) { + if (_mtlCommandBuffer) + { assert(_mtlCommandBuffer.status != MTLCommandBufferStatusCommitted); [_mtlCommandBuffer commit]; - + flushCaptureCommands(); - + [_mtlCommandBuffer release]; _mtlCommandBuffer = nil; } @@ -362,24 +361,30 @@ inline int clamp(int value, int min, int max) { void CommandBufferMTL::flushCaptureCommands() { - if(!_captureCallbacks.empty()) { + if (!_captureCallbacks.empty()) + { // !!!important, if have capture request, must wait pending commandBuffer finish at this frame, // because readPixels require sync operation to get screen pixels properly without data race issue, // otherwise, will lead dead-lock // !!!Notes, MTL is mutli-threading, all GPU handler is dispatch at GPU threads [_mtlCommandBuffer waitUntilCompleted]; - + PixelBufferDescriptor screenPixelData; - for(auto& cb : _captureCallbacks) { - if(cb.first == nil) { // screen capture - if(!screenPixelData) { - CommandBufferMTL::readPixels(_drawableTexture, 0, 0, [_drawableTexture width], [_drawableTexture height], screenPixelData); + for (auto& cb : _captureCallbacks) + { + if (cb.first == nil) + { // screen capture + if (!screenPixelData) + { + CommandBufferMTL::readPixels(_drawableTexture, 0, 0, [_drawableTexture width], + [_drawableTexture height], screenPixelData); // screen framebuffer copied, restore screen framebuffer only to true backend::Device::getInstance()->setFrameBufferOnly(true); } cb.second(screenPixelData); } - else { + else + { PixelBufferDescriptor pixelData; auto texture = cb.first; assert(texture != nullptr); @@ -399,7 +404,7 @@ inline int clamp(int value, int min, int max) { [_mtlIndexBuffer release]; _mtlIndexBuffer = nullptr; } - + CC_SAFE_RELEASE_NULL(_programState); } @@ -407,7 +412,7 @@ inline int clamp(int value, int min, int max) { { setUniformBuffer(); setTextures(); - + auto mtlDepthStencilState = _depthStencilStateMTL->getMTLDepthStencilState(); if (mtlDepthStencilState) { @@ -428,36 +433,33 @@ inline int clamp(int value, int min, int max) { void CommandBufferMTL::doSetTextures(bool isVertex) const { - const auto& bindTextureInfos = (isVertex) ? _programState->getVertexTextureInfos() : _programState->getFragmentTextureInfos(); + const auto& bindTextureInfos = + (isVertex) ? _programState->getVertexTextureInfos() : _programState->getFragmentTextureInfos(); - for(const auto& iter : bindTextureInfos) + for (const auto& iter : bindTextureInfos) { /* About mutli textures support - * a. TODO: sampler2DArray, not implemented in Metal Renderer currently - * b. texture slot, one BackendTexture, multi GPU texture handlers, used by etc1, restrict: textures must have same size - * c. Bind multi BackendTexture to 1 Shader Program, see the ShaderTest - * d. iter.second.slots not used for Metal Renderer - */ - auto location = iter.first; + * a. TODO: sampler2DArray, not implemented in Metal Renderer currently + * b. texture slot, one BackendTexture, multi GPU texture handlers, used by etc1, restrict: textures must have + * same size c. Bind multi BackendTexture to 1 Shader Program, see the ShaderTest d. iter.second.slots not used + * for Metal Renderer + */ + auto location = iter.first; auto& textures = iter.second.textures; - auto& indexs = iter.second.indexs; - + auto& indexs = iter.second.indexs; + auto texture = textures[0]; - auto index = indexs[0]; + auto index = indexs[0]; if (isVertex) { - [_mtlRenderEncoder setVertexTexture:getMTLTexture(texture, index) - atIndex:location]; - [_mtlRenderEncoder setVertexSamplerState:getMTLSamplerState(texture) - atIndex:location]; + [_mtlRenderEncoder setVertexTexture:getMTLTexture(texture, index) atIndex:location]; + [_mtlRenderEncoder setVertexSamplerState:getMTLSamplerState(texture) atIndex:location]; } else { - [_mtlRenderEncoder setFragmentTexture:getMTLTexture(texture, index) - atIndex:location]; - [_mtlRenderEncoder setFragmentSamplerState:getMTLSamplerState(texture) - atIndex:location]; + [_mtlRenderEncoder setFragmentTexture:getMTLTexture(texture, index) atIndex:location]; + [_mtlRenderEncoder setFragmentSamplerState:getMTLSamplerState(texture) atIndex:location]; } } } @@ -466,108 +468,122 @@ inline int clamp(int value, int min, int max) { { if (_programState) { - auto& callbackUniforms = _programState->getCallbackUniforms(); - for(auto& cb : callbackUniforms) - cb.second(_programState, cb.first); + auto& callbackUniforms = _programState->getCallbackUniforms(); + for (auto& cb : callbackUniforms) + cb.second(_programState, cb.first); // Uniform buffer is bound to index 1. std::size_t bufferSize = 0; - char* vertexBuffer = nullptr; + char* vertexBuffer = nullptr; _programState->getVertexUniformBuffer(&vertexBuffer, bufferSize); - if(vertexBuffer) + if (vertexBuffer) { - [_mtlRenderEncoder setVertexBytes:vertexBuffer - length:bufferSize - atIndex:1]; + [_mtlRenderEncoder setVertexBytes:vertexBuffer length:bufferSize atIndex:1]; } - + char* fragmentBuffer = nullptr; _programState->getFragmentUniformBuffer(&fragmentBuffer, bufferSize); - if(fragmentBuffer) + if (fragmentBuffer) { - [_mtlRenderEncoder setFragmentBytes:fragmentBuffer - length:bufferSize - atIndex:1]; + [_mtlRenderEncoder setFragmentBytes:fragmentBuffer length:bufferSize atIndex:1]; } } } -void CommandBufferMTL::setLineWidth(float lineWidth) -{ -} +void CommandBufferMTL::setLineWidth(float lineWidth) {} void CommandBufferMTL::setScissorRect(bool isEnabled, float x, float y, float width, float height) { MTLScissorRect scissorRect; - if(isEnabled) + if (isEnabled) { - y = _renderTargetHeight - height - y; - int minX = clamp((int)x, 0, (int)_renderTargetWidth); - int minY = clamp((int)y, 0, (int)_renderTargetHeight); - int maxX = clamp((int)(x + width), 0, (int)_renderTargetWidth); - int maxY = clamp((int)(y + height), 0, (int)_renderTargetHeight); - scissorRect.x = minX; - scissorRect.y = minY; - scissorRect.width = maxX - minX; + y = _renderTargetHeight - height - y; + int minX = clamp((int)x, 0, (int)_renderTargetWidth); + int minY = clamp((int)y, 0, (int)_renderTargetHeight); + int maxX = clamp((int)(x + width), 0, (int)_renderTargetWidth); + int maxY = clamp((int)(y + height), 0, (int)_renderTargetHeight); + scissorRect.x = minX; + scissorRect.y = minY; + scissorRect.width = maxX - minX; scissorRect.height = maxY - minY; - if (scissorRect.width == 0 || scissorRect.height == 0) { - scissorRect.width = 0; + if (scissorRect.width == 0 || scissorRect.height == 0) + { + scissorRect.width = 0; scissorRect.height = 0; } } else { - scissorRect.x = 0; - scissorRect.y = 0; - scissorRect.width = _renderTargetWidth; + scissorRect.x = 0; + scissorRect.y = 0; + scissorRect.width = _renderTargetWidth; scissorRect.height = _renderTargetHeight; } [_mtlRenderEncoder setScissorRect:scissorRect]; } -void CommandBufferMTL::readPixels(TextureBackend* texture, std::size_t origX, std::size_t origY, std::size_t rectWidth, std::size_t rectHeight, PixelBufferDescriptor& pbd) +void CommandBufferMTL::readPixels(TextureBackend* texture, + std::size_t origX, + std::size_t origY, + std::size_t rectWidth, + std::size_t rectHeight, + PixelBufferDescriptor& pbd) { - CommandBufferMTL::readPixels(reinterpret_cast>(texture->getHandler()), origX, origY, rectWidth, rectHeight, pbd); + CommandBufferMTL::readPixels(reinterpret_cast>(texture->getHandler()), origX, origY, rectWidth, + rectHeight, pbd); } -void CommandBufferMTL::readPixels(id texture, std::size_t origX, std::size_t origY, std::size_t rectWidth, std::size_t rectHeight, PixelBufferDescriptor& pbd) +void CommandBufferMTL::readPixels(id texture, + std::size_t origX, + std::size_t origY, + std::size_t rectWidth, + std::size_t rectHeight, + PixelBufferDescriptor& pbd) { - NSUInteger texWidth = texture.width; - NSUInteger texHeight = texture.height; - MTLRegion region = MTLRegionMake2D(0, 0, texWidth, texHeight); + NSUInteger texWidth = texture.width; + NSUInteger texHeight = texture.height; + MTLRegion region = MTLRegionMake2D(0, 0, texWidth, texHeight); MTLRegion imageRegion = MTLRegionMake2D(origX, origY, rectWidth, rectHeight); - + MTLTextureDescriptor* textureDescriptor = - [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:[texture pixelFormat] - width:texWidth - height:texHeight - mipmapped:NO]; - id device = static_cast(DeviceMTL::getInstance())->getMTLDevice(); + [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:[texture pixelFormat] + width:texWidth + height:texHeight + mipmapped:NO]; + id device = static_cast(DeviceMTL::getInstance())->getMTLDevice(); id readPixelsTexture = [device newTextureWithDescriptor:textureDescriptor]; - + id commandQueue = static_cast(DeviceMTL::getInstance())->getMTLCommandQueue(); - auto commandBuffer = [commandQueue commandBuffer]; + auto commandBuffer = [commandQueue commandBuffer]; // [commandBuffer enqueue]; - + id blitCommandEncoder = [commandBuffer blitCommandEncoder]; - [blitCommandEncoder copyFromTexture:texture sourceSlice:0 sourceLevel:0 sourceOrigin:region.origin sourceSize:region.size toTexture:readPixelsTexture destinationSlice:0 destinationLevel:0 destinationOrigin:region.origin]; - + [blitCommandEncoder copyFromTexture:texture + sourceSlice:0 + sourceLevel:0 + sourceOrigin:region.origin + sourceSize:region.size + toTexture:readPixelsTexture + destinationSlice:0 + destinationLevel:0 + destinationOrigin:region.origin]; + #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) [blitCommandEncoder synchronizeResource:readPixelsTexture]; #endif [blitCommandEncoder endEncoding]; - + [commandBuffer addCompletedHandler:^(id commandBufferMTL) { - auto bytePerRow = rectWidth * getBitsPerElementMTL(texture.pixelFormat) / 8; - auto texelData = pbd._data.resize(bytePerRow * rectHeight); - if(texelData != nullptr) - { + auto bytePerRow = rectWidth * getBitsPerElementMTL(texture.pixelFormat) / 8; + auto texelData = pbd._data.resize(bytePerRow * rectHeight); + if (texelData != nullptr) + { [readPixelsTexture getBytes:texelData bytesPerRow:bytePerRow fromRegion:imageRegion mipmapLevel:0]; UtilsMTL::swizzleImage(texelData, rectWidth, rectHeight, readPixelsTexture.pixelFormat); - pbd._width = rectWidth; + pbd._width = rectWidth; pbd._height = rectHeight; - } - [readPixelsTexture release]; + } + [readPixelsTexture release]; }]; [commandBuffer commit]; [commandBuffer waitUntilCompleted]; diff --git a/cocos/renderer/backend/metal/DepthStencilStateMTL.mm b/cocos/renderer/backend/metal/DepthStencilStateMTL.mm index 9c84efcb7968..4b1e0955a969 100644 --- a/cocos/renderer/backend/metal/DepthStencilStateMTL.mm +++ b/cocos/renderer/backend/metal/DepthStencilStateMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "DepthStencilStateMTL.h" #include "../RenderTarget.h" #include "xxhash.h" @@ -30,108 +30,110 @@ of this software and associated documentation files (the "Software"), to deal namespace { - MTLCompareFunction toMTLCompareFunction(CompareFunction compareFunction) - { - MTLCompareFunction ret = MTLCompareFunctionNever; - switch (compareFunction) { - case CompareFunction::NEVER: - ret = MTLCompareFunctionNever; - break; - case CompareFunction::LESS: - ret = MTLCompareFunctionLess; - break; - case CompareFunction::LESS_EQUAL: - ret = MTLCompareFunctionLessEqual; - break; - case CompareFunction::GREATER: - ret = MTLCompareFunctionGreater; - break; - case CompareFunction::GREATER_EQUAL: - ret = MTLCompareFunctionGreaterEqual; - break; - case CompareFunction::EQUAL: - ret = MTLCompareFunctionEqual; - break; - case CompareFunction::NOT_EQUAL: - ret = MTLCompareFunctionNotEqual; - break; - case CompareFunction::ALWAYS: - ret = MTLCompareFunctionAlways; - break; - default: - assert(false); - break; - } - return ret; - } - - MTLStencilOperation toMTLStencilOperation(StencilOperation operation) +MTLCompareFunction toMTLCompareFunction(CompareFunction compareFunction) +{ + MTLCompareFunction ret = MTLCompareFunctionNever; + switch (compareFunction) { - MTLStencilOperation ret = MTLStencilOperationKeep; - switch (operation) { - case StencilOperation::KEEP: - ret = MTLStencilOperationKeep; - break; - case StencilOperation::ZERO: - ret = MTLStencilOperationZero; - break; - case StencilOperation::REPLACE: - ret = MTLStencilOperationReplace; - break; - case StencilOperation::INVERT: - ret = MTLStencilOperationInvert; - break; - case StencilOperation::INCREMENT_WRAP: - ret = MTLStencilOperationIncrementWrap; - break; - case StencilOperation::DECREMENT_WRAP: - ret = MTLStencilOperationDecrementWrap; - break; - default: - assert(false); - break; - } - return ret; + case CompareFunction::NEVER: + ret = MTLCompareFunctionNever; + break; + case CompareFunction::LESS: + ret = MTLCompareFunctionLess; + break; + case CompareFunction::LESS_EQUAL: + ret = MTLCompareFunctionLessEqual; + break; + case CompareFunction::GREATER: + ret = MTLCompareFunctionGreater; + break; + case CompareFunction::GREATER_EQUAL: + ret = MTLCompareFunctionGreaterEqual; + break; + case CompareFunction::EQUAL: + ret = MTLCompareFunctionEqual; + break; + case CompareFunction::NOT_EQUAL: + ret = MTLCompareFunctionNotEqual; + break; + case CompareFunction::ALWAYS: + ret = MTLCompareFunctionAlways; + break; + default: + assert(false); + break; } - - void setMTLStencilDescriptor(MTLStencilDescriptor* stencilDescriptor, const StencilDescriptor& descriptor) + return ret; +} + +MTLStencilOperation toMTLStencilOperation(StencilOperation operation) +{ + MTLStencilOperation ret = MTLStencilOperationKeep; + switch (operation) { - stencilDescriptor.stencilFailureOperation = toMTLStencilOperation(descriptor.stencilFailureOperation); - stencilDescriptor.depthFailureOperation = toMTLStencilOperation(descriptor.depthFailureOperation); - stencilDescriptor.depthStencilPassOperation = toMTLStencilOperation(descriptor.depthStencilPassOperation); - stencilDescriptor.stencilCompareFunction = toMTLCompareFunction(descriptor.stencilCompareFunction); - stencilDescriptor.readMask = descriptor.readMask; - stencilDescriptor.writeMask = descriptor.writeMask; + case StencilOperation::KEEP: + ret = MTLStencilOperationKeep; + break; + case StencilOperation::ZERO: + ret = MTLStencilOperationZero; + break; + case StencilOperation::REPLACE: + ret = MTLStencilOperationReplace; + break; + case StencilOperation::INVERT: + ret = MTLStencilOperationInvert; + break; + case StencilOperation::INCREMENT_WRAP: + ret = MTLStencilOperationIncrementWrap; + break; + case StencilOperation::DECREMENT_WRAP: + ret = MTLStencilOperationDecrementWrap; + break; + default: + assert(false); + break; } + return ret; } -DepthStencilStateMTL::DepthStencilStateMTL(id mtlDevice) : _mtlDevice(mtlDevice) +void setMTLStencilDescriptor(MTLStencilDescriptor* stencilDescriptor, const StencilDescriptor& descriptor) { + stencilDescriptor.stencilFailureOperation = toMTLStencilOperation(descriptor.stencilFailureOperation); + stencilDescriptor.depthFailureOperation = toMTLStencilOperation(descriptor.depthFailureOperation); + stencilDescriptor.depthStencilPassOperation = toMTLStencilOperation(descriptor.depthStencilPassOperation); + stencilDescriptor.stencilCompareFunction = toMTLCompareFunction(descriptor.stencilCompareFunction); + stencilDescriptor.readMask = descriptor.readMask; + stencilDescriptor.writeMask = descriptor.writeMask; +} } +DepthStencilStateMTL::DepthStencilStateMTL(id mtlDevice) : _mtlDevice(mtlDevice) {} + void DepthStencilStateMTL::update(const DepthStencilDescriptor& dsDesc) { DepthStencilState::update(dsDesc); - - if(!isEnabled()) { + + if (!isEnabled()) + { _mtlDepthStencilState = nil; return; } - + DepthStencilDescriptor hashMe; memset(&hashMe, 0, sizeof(hashMe)); hashMe.depthCompareFunction = dsDesc.depthCompareFunction; - hashMe.backFaceStencil = dsDesc.backFaceStencil; - hashMe.frontFaceStencil = dsDesc.frontFaceStencil; - hashMe.flags = dsDesc.flags; - + hashMe.backFaceStencil = dsDesc.backFaceStencil; + hashMe.frontFaceStencil = dsDesc.frontFaceStencil; + hashMe.flags = dsDesc.flags; + auto key = XXH32((const void*)&hashMe, sizeof(hashMe), 0); - auto it = _mtlStateCache.find(key); - if(it != _mtlStateCache.end()) { + auto it = _mtlStateCache.find(key); + if (it != _mtlStateCache.end()) + { _mtlDepthStencilState = it->second; return; } - + MTLDepthStencilDescriptor* mtlDescriptor = [[MTLDepthStencilDescriptor alloc] init]; if (bitmask::any(dsDesc.flags, DepthStencilFlags::DEPTH_TEST)) @@ -149,7 +151,7 @@ void setMTLStencilDescriptor(MTLStencilDescriptor* stencilDescriptor, const Sten _mtlDepthStencilState = [_mtlDevice newDepthStencilStateWithDescriptor:mtlDescriptor]; [mtlDescriptor release]; - + // emplace to state cache _mtlStateCache.emplace(key, _mtlDepthStencilState); } @@ -157,7 +159,7 @@ void setMTLStencilDescriptor(MTLStencilDescriptor* stencilDescriptor, const Sten DepthStencilStateMTL::~DepthStencilStateMTL() { _mtlDepthStencilState = nullptr; - for(auto& stateItem : _mtlStateCache) + for (auto& stateItem : _mtlStateCache) [stateItem.second release]; _mtlStateCache.clear(); } diff --git a/cocos/renderer/backend/metal/DeviceInfoMTL.mm b/cocos/renderer/backend/metal/DeviceInfoMTL.mm index 87d0e6a65e33..18208a5e8ab7 100644 --- a/cocos/renderer/backend/metal/DeviceInfoMTL.mm +++ b/cocos/renderer/backend/metal/DeviceInfoMTL.mm @@ -22,367 +22,367 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - #include "DeviceInfoMTL.h" #include "base/ccMacros.h" #include "UtilsMTL.h" CC_BACKEND_BEGIN -namespace { - int getMaxVertexAttributes(FeatureSet featureSet) +namespace +{ +int getMaxVertexAttributes(FeatureSet featureSet) +{ + int maxAttributes = 0; + switch (featureSet) { - int maxAttributes = 0; - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - maxAttributes = 31; - break; - default: - break; - } - return maxAttributes; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + maxAttributes = 31; + break; + default: + break; } - - int getMaxTextureEntries(FeatureSet featureSet) + return maxAttributes; +} + +int getMaxTextureEntries(FeatureSet featureSet) +{ + int maxTextureEntries = 0; + switch (featureSet) { - int maxTextureEntries = 0; - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - maxTextureEntries = 31; - break; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - maxTextureEntries = 128; - break; - default: - break; - } - return maxTextureEntries; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + maxTextureEntries = 31; + break; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + maxTextureEntries = 128; + break; + default: + break; } - - int getMaxSamplerEntries(FeatureSet featureSet) + return maxTextureEntries; +} + +int getMaxSamplerEntries(FeatureSet featureSet) +{ + int maxSamplerEntries = 0; + switch (featureSet) { - int maxSamplerEntries = 0; - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - maxSamplerEntries = 16; - break; - default: - break; - } - return maxSamplerEntries; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + maxSamplerEntries = 16; + break; + default: + break; } - - int getMaxTextureWidthHeight(FeatureSet featureSet) + return maxSamplerEntries; +} + +int getMaxTextureWidthHeight(FeatureSet featureSet) +{ + int maxTextureSize = 0; + switch (featureSet) { - int maxTextureSize = 0; - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - maxTextureSize = 4096; - break; - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - maxTextureSize = 8192; - break; - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - maxTextureSize = 16384; - break; - default: - break; - } - return maxTextureSize; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + maxTextureSize = 4096; + break; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + maxTextureSize = 8192; + break; + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + maxTextureSize = 16384; + break; + default: + break; } - - const char* featureSetToString(FeatureSet featureSet) + return maxTextureSize; +} + +const char* featureSetToString(FeatureSet featureSet) +{ + switch (featureSet) { - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - return "iOS_GPUFamily1_v1"; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - return "iOS_GPUFamily2_v1"; - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - return "iOS_GPUFamily1_v2"; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - return "iOS_GPUFamily2_v2"; - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - return "iOS_GPUFamily1_v3"; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - return "iOS_GPUFamily2_v3"; - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - return "iOS_GPUFamily1_v4"; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - return "iOS_GPUFamily2_v4"; - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - return "iOS_GPUFamily1_v5"; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - return "iOS_GPUFamily2_v5"; - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - return "iOS_GPUFamily3_v1"; - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - return "iOS_GPUFamily3_v2"; - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - return "iOS_GPUFamily3_v3"; - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - return "iOS_GPUFamily4_v1"; - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - return "iOS_GPUFamily3_v4"; - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - return "iOS_GPUFamily4_v2"; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - return "macOS_GPUFamily1_v1"; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - return "macOS_GPUFamily1_v2"; - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - return "macOS_ReadWriteTextureTier2"; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - return "macOS_GPUFamily1_v3"; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - return "macOS_GPUFamily1_v4"; - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - return "macOS_GPUFamily2_v1"; - default: - break; - } - return ""; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + return "iOS_GPUFamily1_v1"; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + return "iOS_GPUFamily2_v1"; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + return "iOS_GPUFamily1_v2"; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + return "iOS_GPUFamily2_v2"; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + return "iOS_GPUFamily1_v3"; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + return "iOS_GPUFamily2_v3"; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + return "iOS_GPUFamily1_v4"; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + return "iOS_GPUFamily2_v4"; + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + return "iOS_GPUFamily1_v5"; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + return "iOS_GPUFamily2_v5"; + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + return "iOS_GPUFamily3_v1"; + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + return "iOS_GPUFamily3_v2"; + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + return "iOS_GPUFamily3_v3"; + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + return "iOS_GPUFamily4_v1"; + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + return "iOS_GPUFamily3_v4"; + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + return "iOS_GPUFamily4_v2"; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + return "macOS_GPUFamily1_v1"; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + return "macOS_GPUFamily1_v2"; + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + return "macOS_ReadWriteTextureTier2"; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + return "macOS_GPUFamily1_v3"; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + return "macOS_GPUFamily1_v4"; + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + return "macOS_GPUFamily2_v1"; + default: + break; } - - bool supportPVRTC(FeatureSet featureSet) + return ""; +} + +bool supportPVRTC(FeatureSet featureSet) +{ + switch (featureSet) { - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - return true; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - return false; - default: - break; - } + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + return true; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: return false; + default: + break; } - - bool supportEACETC(FeatureSet featureSet) + return false; +} + +bool supportEACETC(FeatureSet featureSet) +{ + switch (featureSet) { - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - return true; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - return false; - default: - break; - } + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + return true; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: return false; + default: + break; } - - bool supportASTC(FeatureSet featureSet) + return false; +} + +bool supportASTC(FeatureSet featureSet) +{ + switch (featureSet) { - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - return false; - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - return true; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - return false; - default: - break; - } + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + return false; + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: + return true; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: return false; + default: + break; } - - bool supportS3TC(FeatureSet featureSet) + return false; +} + +bool supportS3TC(FeatureSet featureSet) +{ + switch (featureSet) { - switch (featureSet) - { - case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: - case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: - case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: - return false; - case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: - case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: - case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: - case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: - return true; - default: - break; - } + case FeatureSet::FeatureSet_iOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily1_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily2_v5: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v2: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v3: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v1: + case FeatureSet::FeatureSet_iOS_GPUFamily3_v4: + case FeatureSet::FeatureSet_iOS_GPUFamily4_v2: return false; + case FeatureSet::FeatureSet_macOS_GPUFamily1_v1: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v2: + case FeatureSet::FeatureSet_macOS_ReadWriteTextureTier2: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v3: + case FeatureSet::FeatureSet_macOS_GPUFamily1_v4: + case FeatureSet::FeatureSet_macOS_GPUFamily2_v1: + return true; + default: + break; } + return false; +} } bool DeviceInfoMTL::_isDepth24Stencil8PixelFormatSupported = false; DeviceInfoMTL::DeviceInfoMTL(id device) { - _deviceName = [device.name UTF8String]; - + _deviceName = [device.name UTF8String]; + #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) const FeatureSet minRequiredFeatureSet = FeatureSet::FeatureSet_iOS_GPUFamily1_v1; - const FeatureSet maxKnownFeatureSet = FeatureSet::FeatureSet_iOS_GPUFamily4_v2; + const FeatureSet maxKnownFeatureSet = FeatureSet::FeatureSet_iOS_GPUFamily4_v2; #else const FeatureSet minRequiredFeatureSet = FeatureSet::FeatureSet_macOS_GPUFamily1_v1; - const FeatureSet maxKnownFeatureSet = FeatureSet::FeatureSet_macOS_GPUFamily2_v1; + const FeatureSet maxKnownFeatureSet = FeatureSet::FeatureSet_macOS_GPUFamily2_v1; _isDepth24Stencil8PixelFormatSupported = [device isDepth24Stencil8PixelFormatSupported]; #endif - + for (auto featureSet = maxKnownFeatureSet; featureSet >= minRequiredFeatureSet; --featureSet) { if ([device supportsFeatureSet:MTLFeatureSet(featureSet)]) @@ -391,17 +391,17 @@ bool supportS3TC(FeatureSet featureSet) break; } } - + UtilsMTL::initGPUTextureFormats(); } bool DeviceInfoMTL::init() { - _maxAttributes = getMaxVertexAttributes(_featureSet); + _maxAttributes = getMaxVertexAttributes(_featureSet); _maxSamplesAllowed = getMaxSamplerEntries(_featureSet); - _maxTextureUnits = getMaxTextureEntries(_featureSet); - _maxTextureSize = getMaxTextureWidthHeight(_featureSet); - + _maxTextureUnits = getMaxTextureEntries(_featureSet); + _maxTextureSize = getMaxTextureWidthHeight(_featureSet); + return true; } diff --git a/cocos/renderer/backend/metal/DeviceMTL.mm b/cocos/renderer/backend/metal/DeviceMTL.mm index e5f7feafef29..fddde3997e10 100644 --- a/cocos/renderer/backend/metal/DeviceMTL.mm +++ b/cocos/renderer/backend/metal/DeviceMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "DeviceMTL.h" #include "CommandBufferMTL.h" #include "BufferMTL.h" @@ -37,12 +37,12 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN -CAMetalLayer* DeviceMTL::_metalLayer = nil; +CAMetalLayer* DeviceMTL::_metalLayer = nil; id DeviceMTL::_currentDrawable = nil; Device* Device::getInstance() { - if (! Device::_instance) + if (!Device::_instance) Device::_instance = new DeviceMTL(); return Device::_instance; @@ -55,9 +55,9 @@ of this software and associated documentation files (the "Software"), to deal id DeviceMTL::getCurrentDrawable() { - if (! DeviceMTL::_currentDrawable) + if (!DeviceMTL::_currentDrawable) DeviceMTL::_currentDrawable = [DeviceMTL::_metalLayer nextDrawable]; - + return DeviceMTL::_currentDrawable; } @@ -68,10 +68,10 @@ of this software and associated documentation files (the "Software"), to deal DeviceMTL::DeviceMTL() { - _mtlDevice = DeviceMTL::_metalLayer.device; + _mtlDevice = DeviceMTL::_metalLayer.device; _mtlCommandQueue = [_mtlDevice newCommandQueue]; - _deviceInfo = new DeviceInfoMTL(_mtlDevice); - if(!_deviceInfo->init()) + _deviceInfo = new DeviceInfoMTL(_mtlDevice); + if (!_deviceInfo->init()) { delete _deviceInfo; _deviceInfo = nullptr; @@ -97,15 +97,15 @@ of this software and associated documentation files (the "Software"), to deal TextureBackend* DeviceMTL::newTexture(const TextureDescriptor& descriptor) { - switch(descriptor.textureType) + switch (descriptor.textureType) { - case TextureType::TEXTURE_2D: - return new TextureMTL(_mtlDevice, descriptor); - case TextureType::TEXTURE_CUBE: - return new TextureCubeMTL(_mtlDevice, descriptor); - default: - CCASSERT(false, "invalidate texture type"); - return nullptr; + case TextureType::TEXTURE_2D: + return new TextureMTL(_mtlDevice, descriptor); + case TextureType::TEXTURE_CUBE: + return new TextureCubeMTL(_mtlDevice, descriptor); + default: + CCASSERT(false, "invalidate texture type"); + return nullptr; } } @@ -117,14 +117,14 @@ of this software and associated documentation files (the "Software"), to deal } RenderTarget* DeviceMTL::newRenderTarget(TargetBufferFlags rtf, - TextureBackend* colorAttachment, - TextureBackend* depthAttachment, - TextureBackend* stencilAttachhment) + TextureBackend* colorAttachment, + TextureBackend* depthAttachment, + TextureBackend* stencilAttachhment) { auto rtGL = new RenderTargetMTL(false); rtGL->setTargetFlags(rtf); rtGL->bindFrameBuffer(); - RenderTarget::ColorAttachment colors{ {colorAttachment, 0} }; + RenderTarget::ColorAttachment colors{{colorAttachment, 0}}; rtGL->setColorAttachment(colors); rtGL->setDepthAttachment(depthAttachment); rtGL->setStencilAttachment(stencilAttachhment); diff --git a/cocos/renderer/backend/metal/ProgramMTL.h b/cocos/renderer/backend/metal/ProgramMTL.h index aa92f8aa0568..c6c0be6b9595 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.h +++ b/cocos/renderer/backend/metal/ProgramMTL.h @@ -127,8 +127,7 @@ class ProgramMTL : public Program * Get all uniformInfos. * @return The uniformInfos. */ - virtual const hlookup::string_map& getAllActiveUniformInfo( - ShaderStage stage) const override; + virtual const hlookup::string_map& getAllActiveUniformInfo(ShaderStage stage) const override; private: ShaderModuleMTL* _vertexShader = nullptr; diff --git a/cocos/renderer/backend/metal/ProgramMTL.mm b/cocos/renderer/backend/metal/ProgramMTL.mm index 62992aa005eb..2806a6b47c89 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.mm +++ b/cocos/renderer/backend/metal/ProgramMTL.mm @@ -21,18 +21,19 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "ProgramMTL.h" #include "ShaderModuleMTL.h" #include "base/ccMacros.h" CC_BACKEND_BEGIN -namespace { - constexpr std::string_view metalSpecificDefine = "#define METAL\n"sv; +namespace +{ +constexpr std::string_view metalSpecificDefine = "#define METAL\n"sv; } ProgramMTL::ProgramMTL(std::string_view vertexShader, std::string_view fragmentShader) -: Program(vertexShader, fragmentShader) + : Program(vertexShader, fragmentShader) { _vertexShader = static_cast(ShaderCache::newVertexShaderModule(vertexShader)); std::string combinedSource{metalSpecificDefine}; @@ -64,13 +65,13 @@ of this software and associated documentation files (the "Software"), to deal UniformLocation uniformLocation; auto vsLocation = _vertexShader->getUniformLocation(name); auto fsLocation = _fragmentShader->getUniformLocation(name); - if(vsLocation != -1 && fsLocation != -1) + if (vsLocation != -1 && fsLocation != -1) { uniformLocation.shaderStage = ShaderStage::VERTEX_AND_FRAGMENT; uniformLocation.location[0] = vsLocation; uniformLocation.location[1] = fsLocation; } - else if( vsLocation != -1) + else if (vsLocation != -1) { uniformLocation.shaderStage = ShaderStage::VERTEX; uniformLocation.location[0] = vsLocation; @@ -88,13 +89,13 @@ of this software and associated documentation files (the "Software"), to deal UniformLocation uniformLocation; auto vsLocation = _vertexShader->getUniformLocation(uniform); auto fsLocation = _fragmentShader->getUniformLocation(uniform); - if(vsLocation != -1 && fsLocation != -1) + if (vsLocation != -1 && fsLocation != -1) { uniformLocation.shaderStage = ShaderStage::VERTEX_AND_FRAGMENT; uniformLocation.location[0] = vsLocation; uniformLocation.location[1] = fsLocation; } - else if( vsLocation != -1) + else if (vsLocation != -1) { uniformLocation.shaderStage = ShaderStage::VERTEX; uniformLocation.location[0] = vsLocation; @@ -122,58 +123,60 @@ of this software and associated documentation files (the "Software"), to deal return _vertexShader->getAttributeInfo(); } -//const std::vector& ProgramMTL::cloneUniformBuffer(ShaderStage stage) const +// const std::vector& ProgramMTL::cloneUniformBuffer(ShaderStage stage) const //{ -// switch (stage) { -// case ShaderStage::VERTEX: -// return _vertexShader->cloneUniformBuffer(); -// break; -// case ShaderStage::FRAGMENT: -// return _fragmentShader->cloneUniformBuffer(); -// default: -// CCASSERT(false, "Invalid shader stage."); -// break; -// } -//} +// switch (stage) { +// case ShaderStage::VERTEX: +// return _vertexShader->cloneUniformBuffer(); +// break; +// case ShaderStage::FRAGMENT: +// return _fragmentShader->cloneUniformBuffer(); +// default: +// CCASSERT(false, "Invalid shader stage."); +// break; +// } +// } const UniformInfo& ProgramMTL::getActiveUniformInfo(ShaderStage stage, int location) const { - switch (stage) { - case ShaderStage::VERTEX: - return _vertexShader->getActiveUniform(location); - case ShaderStage::FRAGMENT: - return _fragmentShader->getActiveUniform(location); - default: - CCASSERT(false, "Invalid shader stage."); + switch (stage) + { + case ShaderStage::VERTEX: + return _vertexShader->getActiveUniform(location); + case ShaderStage::FRAGMENT: + return _fragmentShader->getActiveUniform(location); + default: + CCASSERT(false, "Invalid shader stage."); break; } } - std::size_t ProgramMTL::getUniformBufferSize(ShaderStage stage) const { - switch (stage) { - case ShaderStage::VERTEX: - return _vertexShader->getUniformBufferSize(); - case ShaderStage::FRAGMENT: - return _fragmentShader->getUniformBufferSize(); - default: - CCASSERT(false, "Invalid shader stage."); - break; + switch (stage) + { + case ShaderStage::VERTEX: + return _vertexShader->getUniformBufferSize(); + case ShaderStage::FRAGMENT: + return _fragmentShader->getUniformBufferSize(); + default: + CCASSERT(false, "Invalid shader stage."); + break; } return 0; } const std::unordered_map& ProgramMTL::getAllActiveUniformInfo(ShaderStage stage) const { - switch (stage) { - case ShaderStage::VERTEX: - return _vertexShader->getAllActiveUniformInfo(); - case ShaderStage::FRAGMENT: - return _fragmentShader->getAllActiveUniformInfo(); - default: - CCASSERT(false, "Invalid shader stage."); - break; + switch (stage) + { + case ShaderStage::VERTEX: + return _vertexShader->getAllActiveUniformInfo(); + case ShaderStage::FRAGMENT: + return _fragmentShader->getAllActiveUniformInfo(); + default: + CCASSERT(false, "Invalid shader stage."); + break; } } diff --git a/cocos/renderer/backend/metal/RenderPipelineMTL.mm b/cocos/renderer/backend/metal/RenderPipelineMTL.mm index 14f3e65bf320..30ed67d0087c 100644 --- a/cocos/renderer/backend/metal/RenderPipelineMTL.mm +++ b/cocos/renderer/backend/metal/RenderPipelineMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "RenderPipelineMTL.h" #include "DeviceMTL.h" #include "RenderTargetMTL.h" @@ -35,133 +35,133 @@ of this software and associated documentation files (the "Software"), to deal namespace { - MTLVertexStepFunction toMTLVertexStepFunction(VertexStepMode vertexStepMode) +MTLVertexStepFunction toMTLVertexStepFunction(VertexStepMode vertexStepMode) +{ + if (VertexStepMode::VERTEX == vertexStepMode) + return MTLVertexStepFunctionPerVertex; + else + return MTLVertexStepFunctionPerInstance; +} + +MTLVertexFormat toMTLVertexFormat(VertexFormat vertexFormat, bool needNormalize) +{ + MTLVertexFormat ret = MTLVertexFormatFloat4; + switch (vertexFormat) { - if (VertexStepMode::VERTEX == vertexStepMode) - return MTLVertexStepFunctionPerVertex; + case VertexFormat::FLOAT4: + ret = MTLVertexFormatFloat4; + break; + case VertexFormat::FLOAT3: + ret = MTLVertexFormatFloat3; + break; + case VertexFormat::FLOAT2: + ret = MTLVertexFormatFloat2; + break; + case VertexFormat::FLOAT: + ret = MTLVertexFormatFloat; + break; + case VertexFormat::INT4: + ret = MTLVertexFormatInt4; + break; + case VertexFormat::INT3: + ret = MTLVertexFormatInt3; + break; + case VertexFormat::INT2: + ret = MTLVertexFormatInt2; + break; + case VertexFormat::INT: + ret = MTLVertexFormatInt; + break; + case VertexFormat::USHORT4: + ret = MTLVertexFormatUShort4; + break; + case VertexFormat::USHORT2: + ret = MTLVertexFormatUShort2; + break; + case VertexFormat::UBYTE4: + if (needNormalize) + ret = MTLVertexFormatUChar4Normalized; else - return MTLVertexStepFunctionPerInstance; - } - - MTLVertexFormat toMTLVertexFormat(VertexFormat vertexFormat, bool needNormalize) - { - MTLVertexFormat ret = MTLVertexFormatFloat4; - switch (vertexFormat) - { - case VertexFormat::FLOAT4: - ret = MTLVertexFormatFloat4; - break; - case VertexFormat::FLOAT3: - ret = MTLVertexFormatFloat3; - break; - case VertexFormat::FLOAT2: - ret = MTLVertexFormatFloat2; - break; - case VertexFormat::FLOAT: - ret = MTLVertexFormatFloat; - break; - case VertexFormat::INT4: - ret = MTLVertexFormatInt4; - break; - case VertexFormat::INT3: - ret = MTLVertexFormatInt3; - break; - case VertexFormat::INT2: - ret = MTLVertexFormatInt2; - break; - case VertexFormat::INT: - ret = MTLVertexFormatInt; - break; - case VertexFormat::USHORT4: - ret = MTLVertexFormatUShort4; - break; - case VertexFormat::USHORT2: - ret = MTLVertexFormatUShort2; - break; - case VertexFormat::UBYTE4: - if (needNormalize) - ret = MTLVertexFormatUChar4Normalized; - else - ret = MTLVertexFormatUChar4; - break; - default: - assert(false); - break; - } - return ret; - } - - MTLColorWriteMask toMTLColorWriteMask(ColorWriteMask mask) - { - switch (mask) { - case ColorWriteMask::NONE: - return MTLColorWriteMaskNone; - case ColorWriteMask::RED: - return MTLColorWriteMaskRed; - case ColorWriteMask::GREEN: - return MTLColorWriteMaskGreen; - case ColorWriteMask::BLUE: - return MTLColorWriteMaskBlue; - case ColorWriteMask::ALPHA: - return MTLColorWriteMaskAlpha; - case ColorWriteMask::ALL: - return MTLColorWriteMaskAll; - } + ret = MTLVertexFormatUChar4; + break; + default: + assert(false); + break; } - - MTLBlendFactor toMTLBlendFactor(BlendFactor factor) + return ret; +} + +MTLColorWriteMask toMTLColorWriteMask(ColorWriteMask mask) +{ + switch (mask) { - switch (factor) { - case BlendFactor::ZERO: - return MTLBlendFactorZero; - case BlendFactor::ONE: - return MTLBlendFactorOne; - case BlendFactor::SRC_COLOR: - return MTLBlendFactorSourceColor; - case BlendFactor::ONE_MINUS_SRC_COLOR: - return MTLBlendFactorOneMinusSourceColor; - case BlendFactor::SRC_ALPHA: - return MTLBlendFactorSourceAlpha; - case BlendFactor::ONE_MINUS_SRC_ALPHA: - return MTLBlendFactorOneMinusSourceAlpha; - case BlendFactor::DST_COLOR: - return MTLBlendFactorDestinationColor; - case BlendFactor::ONE_MINUS_DST_COLOR: - return MTLBlendFactorOneMinusDestinationColor; - case BlendFactor::DST_ALPHA: - return MTLBlendFactorDestinationAlpha; - case BlendFactor::ONE_MINUS_DST_ALPHA: - return MTLBlendFactorOneMinusDestinationAlpha; - case BlendFactor::SRC_ALPHA_SATURATE: - return MTLBlendFactorSourceAlphaSaturated; - case BlendFactor::BLEND_CLOLOR: - return MTLBlendFactorBlendColor; - default: - return MTLBlendFactorZero; - } + case ColorWriteMask::NONE: + return MTLColorWriteMaskNone; + case ColorWriteMask::RED: + return MTLColorWriteMaskRed; + case ColorWriteMask::GREEN: + return MTLColorWriteMaskGreen; + case ColorWriteMask::BLUE: + return MTLColorWriteMaskBlue; + case ColorWriteMask::ALPHA: + return MTLColorWriteMaskAlpha; + case ColorWriteMask::ALL: + return MTLColorWriteMaskAll; } - - MTLBlendOperation toMTLBlendOperation(BlendOperation operation) +} + +MTLBlendFactor toMTLBlendFactor(BlendFactor factor) +{ + switch (factor) { - switch (operation) { - case BlendOperation::ADD: - return MTLBlendOperationAdd; - case BlendOperation::SUBTRACT: - return MTLBlendOperationSubtract; - case BlendOperation::RESERVE_SUBTRACT: - return MTLBlendOperationReverseSubtract; - default: - return MTLBlendOperationAdd; - } + case BlendFactor::ZERO: + return MTLBlendFactorZero; + case BlendFactor::ONE: + return MTLBlendFactorOne; + case BlendFactor::SRC_COLOR: + return MTLBlendFactorSourceColor; + case BlendFactor::ONE_MINUS_SRC_COLOR: + return MTLBlendFactorOneMinusSourceColor; + case BlendFactor::SRC_ALPHA: + return MTLBlendFactorSourceAlpha; + case BlendFactor::ONE_MINUS_SRC_ALPHA: + return MTLBlendFactorOneMinusSourceAlpha; + case BlendFactor::DST_COLOR: + return MTLBlendFactorDestinationColor; + case BlendFactor::ONE_MINUS_DST_COLOR: + return MTLBlendFactorOneMinusDestinationColor; + case BlendFactor::DST_ALPHA: + return MTLBlendFactorDestinationAlpha; + case BlendFactor::ONE_MINUS_DST_ALPHA: + return MTLBlendFactorOneMinusDestinationAlpha; + case BlendFactor::SRC_ALPHA_SATURATE: + return MTLBlendFactorSourceAlphaSaturated; + case BlendFactor::BLEND_CLOLOR: + return MTLBlendFactorBlendColor; + default: + return MTLBlendFactorZero; } } -RenderPipelineMTL::RenderPipelineMTL(id mtlDevice) -: _mtlDevice(mtlDevice) +MTLBlendOperation toMTLBlendOperation(BlendOperation operation) { + switch (operation) + { + case BlendOperation::ADD: + return MTLBlendOperationAdd; + case BlendOperation::SUBTRACT: + return MTLBlendOperationSubtract; + case BlendOperation::RESERVE_SUBTRACT: + return MTLBlendOperationReverseSubtract; + default: + return MTLBlendOperationAdd; + } +} } -void RenderPipelineMTL::update(const RenderTarget* renderTarget, const PipelineDescriptor & pipelineDescirptor) +RenderPipelineMTL::RenderPipelineMTL(id mtlDevice) : _mtlDevice(mtlDevice) {} + +void RenderPipelineMTL::update(const RenderTarget* renderTarget, const PipelineDescriptor& pipelineDescirptor) { struct { @@ -179,135 +179,140 @@ MTLBlendOperation toMTLBlendOperation(BlendOperation operation) unsigned int destinationRGBBlendFactor; unsigned int sourceAlphaBlendFactor; unsigned int destinationAlphaBlendFactor; - }hashMe; - + } hashMe; + memset(&hashMe, 0, sizeof(hashMe)); const auto& blendDescriptor = pipelineDescirptor.blendDescriptor; chooseAttachmentFormat(renderTarget, _colorAttachmentsFormat, _depthAttachmentFormat, _stencilAttachmentFormat); - auto program = static_cast(pipelineDescirptor.programState->getProgram()); - hashMe.vertexShaderHash = program->getVertexShader()->getHashValue(); + auto program = static_cast(pipelineDescirptor.programState->getProgram()); + hashMe.vertexShaderHash = program->getVertexShader()->getHashValue(); hashMe.fragmentShaderHash = program->getFragmentShader()->getHashValue(); memcpy(&hashMe.colorAttachment, &_colorAttachmentsFormat, sizeof(_colorAttachmentsFormat)); - hashMe.depthAttachment = _depthAttachmentFormat; - hashMe.stencilAttachment =_stencilAttachmentFormat; - hashMe.blendEnabled = blendDescriptor.blendEnabled; - hashMe.writeMask = (unsigned int)blendDescriptor.writeMask; - hashMe.rgbBlendOperation = (unsigned int)blendDescriptor.rgbBlendOperation; - hashMe.alphaBlendOperation = (unsigned int)blendDescriptor.alphaBlendOperation; - hashMe.sourceRGBBlendFactor = (unsigned int)blendDescriptor.sourceRGBBlendFactor; - hashMe.destinationRGBBlendFactor = (unsigned int)blendDescriptor.destinationRGBBlendFactor; - hashMe.sourceAlphaBlendFactor = (unsigned int)blendDescriptor.sourceAlphaBlendFactor; + hashMe.depthAttachment = _depthAttachmentFormat; + hashMe.stencilAttachment = _stencilAttachmentFormat; + hashMe.blendEnabled = blendDescriptor.blendEnabled; + hashMe.writeMask = (unsigned int)blendDescriptor.writeMask; + hashMe.rgbBlendOperation = (unsigned int)blendDescriptor.rgbBlendOperation; + hashMe.alphaBlendOperation = (unsigned int)blendDescriptor.alphaBlendOperation; + hashMe.sourceRGBBlendFactor = (unsigned int)blendDescriptor.sourceRGBBlendFactor; + hashMe.destinationRGBBlendFactor = (unsigned int)blendDescriptor.destinationRGBBlendFactor; + hashMe.sourceAlphaBlendFactor = (unsigned int)blendDescriptor.sourceAlphaBlendFactor; hashMe.destinationAlphaBlendFactor = (unsigned int)blendDescriptor.destinationAlphaBlendFactor; - int index = 0; - auto vertexLayout = pipelineDescirptor.programState->getVertexLayout(); - const auto& attributes = vertexLayout->getAttributes(); + int index = 0; + auto vertexLayout = pipelineDescirptor.programState->getVertexLayout(); + const auto& attributes = vertexLayout->getAttributes(); for (const auto& it : attributes) { - auto &attribute = it.second; + auto& attribute = it.second; /* stepFunction:1 stride:15 offest:10 format:5 needNormalized:1 bit31 bit30 ~ bit16 bit15 ~ bit6 bit5 ~ bit1 bit0 */ hashMe.vertexLayoutInfo[index++] = - ((unsigned int)vertexLayout->getVertexStepMode() & 0x1) << 31 | - ((unsigned int)(vertexLayout->getStride() & 0x7FFF)) << 16 | - ((unsigned int)attribute.offset & 0x3FF) << 6 | - ((unsigned int)attribute.format & 0x1F) << 1 | - ((unsigned int)attribute.needToBeNormallized & 0x1); + ((unsigned int)vertexLayout->getVertexStepMode() & 0x1) << 31 | + ((unsigned int)(vertexLayout->getStride() & 0x7FFF)) << 16 | ((unsigned int)attribute.offset & 0x3FF) << 6 | + ((unsigned int)attribute.format & 0x1F) << 1 | ((unsigned int)attribute.needToBeNormallized & 0x1); } - + unsigned int hash = XXH32((const void*)&hashMe, sizeof(hashMe), 0); - auto it = _mtlStateCache.find(hash); - if(it != _mtlStateCache.end()) { + auto it = _mtlStateCache.find(hash); + if (it != _mtlStateCache.end()) + { _mtlRenderPipelineState = it->second; return; } - + _mtlRenderPipelineDescriptor = [[MTLRenderPipelineDescriptor alloc] init]; - + setShaderModules(pipelineDescirptor); setVertexLayout(_mtlRenderPipelineDescriptor, pipelineDescirptor); - + setBlendStateAndFormat(pipelineDescirptor.blendDescriptor); - - NSError *error = nil; - _mtlRenderPipelineState = [_mtlDevice newRenderPipelineStateWithDescriptor:_mtlRenderPipelineDescriptor error:&error]; + + NSError* error = nil; + _mtlRenderPipelineState = [_mtlDevice newRenderPipelineStateWithDescriptor:_mtlRenderPipelineDescriptor + error:&error]; if (error) NSLog(@"Can not create renderpipeline state: %@", error); - + [_mtlRenderPipelineDescriptor release]; - + _mtlStateCache.emplace(hash, _mtlRenderPipelineState); } RenderPipelineMTL::~RenderPipelineMTL() { - for(auto& item : _mtlStateCache) + for (auto& item : _mtlStateCache) [item.second release]; } -void RenderPipelineMTL::setVertexLayout(MTLRenderPipelineDescriptor* mtlDescriptor, const PipelineDescriptor& descriptor) +void RenderPipelineMTL::setVertexLayout(MTLRenderPipelineDescriptor* mtlDescriptor, + const PipelineDescriptor& descriptor) { - int vertexIndex = 0; + int vertexIndex = 0; auto vertexLayout = descriptor.programState->getVertexLayout(); if (!vertexLayout->isValid()) return; - + mtlDescriptor.vertexDescriptor.layouts[vertexIndex].stride = vertexLayout->getStride(); - mtlDescriptor.vertexDescriptor.layouts[vertexIndex].stepFunction = toMTLVertexStepFunction(vertexLayout->getVertexStepMode()); - + mtlDescriptor.vertexDescriptor.layouts[vertexIndex].stepFunction = + toMTLVertexStepFunction(vertexLayout->getVertexStepMode()); + const auto& attributes = vertexLayout->getAttributes(); for (const auto& it : attributes) { auto attribute = it.second; - mtlDescriptor.vertexDescriptor.attributes[attribute.index].format = toMTLVertexFormat(attribute.format, attribute.needToBeNormallized); + mtlDescriptor.vertexDescriptor.attributes[attribute.index].format = + toMTLVertexFormat(attribute.format, attribute.needToBeNormallized); mtlDescriptor.vertexDescriptor.attributes[attribute.index].offset = attribute.offset; // Buffer index will always be 0; mtlDescriptor.vertexDescriptor.attributes[attribute.index].bufferIndex = 0; } - } void RenderPipelineMTL::setBlendState(MTLRenderPipelineColorAttachmentDescriptor* colorAttachmentDescriptor, const BlendDescriptor& blendDescriptor) { colorAttachmentDescriptor.blendingEnabled = blendDescriptor.blendEnabled; - colorAttachmentDescriptor.writeMask = toMTLColorWriteMask(blendDescriptor.writeMask); - - colorAttachmentDescriptor.rgbBlendOperation = toMTLBlendOperation(blendDescriptor.rgbBlendOperation); + colorAttachmentDescriptor.writeMask = toMTLColorWriteMask(blendDescriptor.writeMask); + + colorAttachmentDescriptor.rgbBlendOperation = toMTLBlendOperation(blendDescriptor.rgbBlendOperation); colorAttachmentDescriptor.alphaBlendOperation = toMTLBlendOperation(blendDescriptor.alphaBlendOperation); - - colorAttachmentDescriptor.sourceRGBBlendFactor = toMTLBlendFactor(blendDescriptor.sourceRGBBlendFactor); + + colorAttachmentDescriptor.sourceRGBBlendFactor = toMTLBlendFactor(blendDescriptor.sourceRGBBlendFactor); colorAttachmentDescriptor.destinationRGBBlendFactor = toMTLBlendFactor(blendDescriptor.destinationRGBBlendFactor); - colorAttachmentDescriptor.sourceAlphaBlendFactor = toMTLBlendFactor(blendDescriptor.sourceAlphaBlendFactor); - colorAttachmentDescriptor.destinationAlphaBlendFactor = toMTLBlendFactor(blendDescriptor.destinationAlphaBlendFactor); + colorAttachmentDescriptor.sourceAlphaBlendFactor = toMTLBlendFactor(blendDescriptor.sourceAlphaBlendFactor); + colorAttachmentDescriptor.destinationAlphaBlendFactor = + toMTLBlendFactor(blendDescriptor.destinationAlphaBlendFactor); } void RenderPipelineMTL::setShaderModules(const PipelineDescriptor& descriptor) { auto vertexShaderModule = static_cast(descriptor.programState->getProgram())->getVertexShader(); _mtlRenderPipelineDescriptor.vertexFunction = vertexShaderModule->getMTLFunction(); - + auto fragShaderModule = static_cast(descriptor.programState->getProgram())->getFragmentShader(); _mtlRenderPipelineDescriptor.fragmentFunction = fragShaderModule->getMTLFunction(); } void RenderPipelineMTL::chooseAttachmentFormat(const RenderTarget* renderTarget, - PixelFormat colorAttachmentsFormat[MAX_COLOR_ATTCHMENT], - PixelFormat& depthFormat, - PixelFormat& stencilFormat) + PixelFormat colorAttachmentsFormat[MAX_COLOR_ATTCHMENT], + PixelFormat& depthFormat, + PixelFormat& stencilFormat) { // Choose color attachment format - auto rtMTL = static_cast(renderTarget); + auto rtMTL = static_cast(renderTarget); auto rtflags = rtMTL->getTargetFlags(); - for(auto i = 0; i < MAX_COLOR_ATTCHMENT; ++i) { - colorAttachmentsFormat[i] = bitmask::any(rtflags, getMRTColorFlag(i)) ? rtMTL->getColorAttachmentPixelFormat(i) : PixelFormat::NONE; + for (auto i = 0; i < MAX_COLOR_ATTCHMENT; ++i) + { + colorAttachmentsFormat[i] = + bitmask::any(rtflags, getMRTColorFlag(i)) ? rtMTL->getColorAttachmentPixelFormat(i) : PixelFormat::NONE; } - + if (bitmask::any(rtflags, RenderTargetFlag::DEPTH_AND_STENCIL)) { - depthFormat = rtMTL->getDepthAttachmentPixelFormat(); - stencilFormat =rtMTL->getStencilAttachmentPixelFormat(); + depthFormat = rtMTL->getDepthAttachmentPixelFormat(); + stencilFormat = rtMTL->getStencilAttachmentPixelFormat(); } else { @@ -319,15 +324,17 @@ MTLBlendOperation toMTLBlendOperation(BlendOperation operation) { for (int i = 0; i < MAX_COLOR_ATTCHMENT; ++i) { - if (PixelFormat::NONE == _colorAttachmentsFormat[i]) { + if (PixelFormat::NONE == _colorAttachmentsFormat[i]) + { _mtlRenderPipelineDescriptor.colorAttachments[i].pixelFormat = MTLPixelFormat::MTLPixelFormatInvalid; continue; } - - _mtlRenderPipelineDescriptor.colorAttachments[i].pixelFormat = UtilsMTL::toMTLPixelFormat(_colorAttachmentsFormat[i]); + + _mtlRenderPipelineDescriptor.colorAttachments[i].pixelFormat = + UtilsMTL::toMTLPixelFormat(_colorAttachmentsFormat[i]); setBlendState(_mtlRenderPipelineDescriptor.colorAttachments[i], blendDescriptor); } - _mtlRenderPipelineDescriptor.depthAttachmentPixelFormat = UtilsMTL::toMTLPixelFormat(_depthAttachmentFormat); + _mtlRenderPipelineDescriptor.depthAttachmentPixelFormat = UtilsMTL::toMTLPixelFormat(_depthAttachmentFormat); _mtlRenderPipelineDescriptor.stencilAttachmentPixelFormat = UtilsMTL::toMTLPixelFormat(_stencilAttachmentFormat); } diff --git a/cocos/renderer/backend/metal/RenderTargetMTL.mm b/cocos/renderer/backend/metal/RenderTargetMTL.mm index cd9b46e1618b..d909f2efff5a 100644 --- a/cocos/renderer/backend/metal/RenderTargetMTL.mm +++ b/cocos/renderer/backend/metal/RenderTargetMTL.mm @@ -3,83 +3,77 @@ CC_BACKEND_BEGIN -static MTLLoadAction getLoadAction(const RenderPassDescriptor& params, - TargetBufferFlags buffer) { - const auto clearFlags = (TargetBufferFlags) params.flags.clear; +static MTLLoadAction getLoadAction(const RenderPassDescriptor& params, TargetBufferFlags buffer) +{ + const auto clearFlags = (TargetBufferFlags)params.flags.clear; const auto discardStartFlags = params.flags.discardStart; - if (bitmask::any(clearFlags, buffer)) { + if (bitmask::any(clearFlags, buffer)) + { return MTLLoadActionClear; - } else if (bitmask::any(discardStartFlags, buffer)) { + } + else if (bitmask::any(discardStartFlags, buffer)) + { return MTLLoadActionDontCare; } return MTLLoadActionLoad; } -static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, - TargetBufferFlags buffer) { +static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, TargetBufferFlags buffer) +{ const auto discardEndFlags = params.flags.discardEnd; - if (bitmask::any(discardEndFlags, buffer)) { + if (bitmask::any(discardEndFlags, buffer)) + { return MTLStoreActionDontCare; } return MTLStoreActionStore; } -RenderTargetMTL::RenderTargetMTL(bool defaultRenderTarget) : RenderTarget(defaultRenderTarget) -{ - -} -RenderTargetMTL::~RenderTargetMTL() -{ -} +RenderTargetMTL::RenderTargetMTL(bool defaultRenderTarget) : RenderTarget(defaultRenderTarget) {} +RenderTargetMTL::~RenderTargetMTL() {} -void RenderTargetMTL::bindFrameBuffer() const -{ -} +void RenderTargetMTL::bindFrameBuffer() const {} -void RenderTargetMTL::unbindFrameBuffer() const -{ -} +void RenderTargetMTL::unbindFrameBuffer() const {} void RenderTargetMTL::setColorAttachment(ColorAttachment attachment) { RenderTarget::setColorAttachment(attachment); - - } void RenderTargetMTL::setDepthAttachment(TextureBackend* attachment, int level) { RenderTarget::setDepthAttachment(attachment, level); - - } void RenderTargetMTL::setStencilAttachment(TextureBackend* attachment, int level) { RenderTarget::setStencilAttachment(attachment, level); - } -void RenderTargetMTL::applyRenderPassAttachments(const RenderPassDescriptor& params, MTLRenderPassDescriptor* descriptor) const +void RenderTargetMTL::applyRenderPassAttachments(const RenderPassDescriptor& params, + MTLRenderPassDescriptor* descriptor) const { // const auto discardFlags = params.flags.discardEnd; auto clearFlags = params.flags.clear; - - for (size_t i = 0; i < MAX_COLOR_ATTCHMENT; i++) { + + for (size_t i = 0; i < MAX_COLOR_ATTCHMENT; i++) + { auto attachment = getColorAttachment(i); - if (!attachment) { + if (!attachment) + { continue; } - + const auto MRTColorFlag = getMRTColorFlag(i); - + descriptor.colorAttachments[i].texture = attachment.texture; - descriptor.colorAttachments[i].level = attachment.level; + descriptor.colorAttachments[i].level = attachment.level; // descriptor.colorAttachments[i].slice = attachment.layer; - descriptor.colorAttachments[i].loadAction = getLoadAction(params, MRTColorFlag); - descriptor.colorAttachments[i].storeAction = getStoreAction(params,MRTColorFlag); - if(bitmask::any(clearFlags, MRTColorFlag)) - descriptor.colorAttachments[i].clearColor = MTLClearColorMake( - params.clearColorValue[0], params.clearColorValue[1], params.clearColorValue[2], params.clearColorValue[3]); + descriptor.colorAttachments[i].loadAction = getLoadAction(params, MRTColorFlag); + descriptor.colorAttachments[i].storeAction = getStoreAction(params, MRTColorFlag); + if (bitmask::any(clearFlags, MRTColorFlag)) + descriptor.colorAttachments[i].clearColor = + MTLClearColorMake(params.clearColorValue[0], params.clearColorValue[1], params.clearColorValue[2], + params.clearColorValue[3]); #if 0 if (multisampledColor[i]) { // We're rendering into our temporary MSAA texture and doing an automatic resolve. @@ -99,32 +93,35 @@ static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, } #endif } - + // Sets descriptor depth and stencil params, should match RenderTargetMTL::chooseAttachmentFormat - if(bitmask::any(this->_flags, RenderTargetFlag::DEPTH_AND_STENCIL)) { + if (bitmask::any(this->_flags, RenderTargetFlag::DEPTH_AND_STENCIL)) + { auto depthAttachment = getDepthAttachment(); - if(depthAttachment){ + if (depthAttachment) + { descriptor.depthAttachment.texture = depthAttachment.texture; - descriptor.depthAttachment.level = depthAttachment.level; + descriptor.depthAttachment.level = depthAttachment.level; // descriptor.depthAttachment.slice = depthAttachment.layer; - descriptor.depthAttachment.loadAction = getLoadAction(params, TargetBufferFlags::DEPTH); + descriptor.depthAttachment.loadAction = getLoadAction(params, TargetBufferFlags::DEPTH); descriptor.depthAttachment.storeAction = getStoreAction(params, TargetBufferFlags::DEPTH); - if(bitmask::any(clearFlags, TargetBufferFlags::DEPTH)) + if (bitmask::any(clearFlags, TargetBufferFlags::DEPTH)) descriptor.depthAttachment.clearDepth = params.clearDepthValue; } - + auto stencilAttachment = getStencilAttachment(); - if(stencilAttachment) { + if (stencilAttachment) + { descriptor.stencilAttachment.texture = stencilAttachment.texture; - descriptor.stencilAttachment.level = stencilAttachment.level; + descriptor.stencilAttachment.level = stencilAttachment.level; // descriptor.stencilAttachment.slice = depthAttachment.layer; - descriptor.stencilAttachment.loadAction = getLoadAction(params, TargetBufferFlags::STENCIL); + descriptor.stencilAttachment.loadAction = getLoadAction(params, TargetBufferFlags::STENCIL); descriptor.stencilAttachment.storeAction = getStoreAction(params, TargetBufferFlags::STENCIL); - if(bitmask::any(clearFlags, TargetBufferFlags::STENCIL)) + if (bitmask::any(clearFlags, TargetBufferFlags::STENCIL)) descriptor.stencilAttachment.clearStencil = params.clearStencilValue; } } - + #if 0 if (multisampledDepth) { // We're rendering into our temporary MSAA texture and doing an automatic resolve. @@ -147,15 +144,16 @@ static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, RenderTargetMTL::Attachment RenderTargetMTL::getColorAttachment(int index) const { - if(isDefaultRenderTarget() && index == 0) + if (isDefaultRenderTarget() && index == 0) return {DeviceMTL::getCurrentDrawable().texture, 0}; auto& rb = this->_color[index]; - return RenderTargetMTL::Attachment{static_cast(rb) ? (id)(rb.texture->getHandler()) : nil, rb.level}; + return RenderTargetMTL::Attachment{static_cast(rb) ? (id)(rb.texture->getHandler()) : nil, + rb.level}; } RenderTargetMTL::Attachment RenderTargetMTL::getDepthAttachment() const { - if(isDefaultRenderTarget()) + if (isDefaultRenderTarget()) return {UtilsMTL::getDefaultDepthStencilTexture(), 0}; auto& rb = this->_depth; return RenderTargetMTL::Attachment{!!rb ? (id)(rb.texture->getHandler()) : nil, rb.level}; @@ -163,7 +161,7 @@ static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, RenderTargetMTL::Attachment RenderTargetMTL::getStencilAttachment() const { - if(isDefaultRenderTarget()) + if (isDefaultRenderTarget()) return RenderTargetMTL::Attachment{UtilsMTL::getDefaultDepthStencilTexture(), 0}; auto& rb = this->_stencil; return RenderTargetMTL::Attachment{!!rb ? (id)(rb.texture->getHandler()) : nil, rb.level}; @@ -173,16 +171,17 @@ static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, { // !!!important // the default framebuffer pixel format is: MTLPixelFormatBGRA8Unorm - if(isDefaultRenderTarget() && index == 0) + if (isDefaultRenderTarget() && index == 0) return PixelFormat::BGRA8; auto& rb = this->_color[index]; return rb ? rb.texture->getTextureFormat() : PixelFormat::NONE; } PixelFormat RenderTargetMTL::getDepthAttachmentPixelFormat() const -{ // FIXME: adxe only support D24S8 - if(bitmask::any(_flags, TargetBufferFlags::DEPTH_AND_STENCIL)) { - if(isDefaultRenderTarget() || !_depth) +{ // FIXME: adxe only support D24S8 + if (bitmask::any(_flags, TargetBufferFlags::DEPTH_AND_STENCIL)) + { + if (isDefaultRenderTarget() || !_depth) return PixelFormat::D24S8; return _depth.texture->getTextureFormat(); } @@ -190,9 +189,10 @@ static MTLStoreAction getStoreAction(const RenderPassDescriptor& params, } PixelFormat RenderTargetMTL::getStencilAttachmentPixelFormat() const -{ // FIXME: adxe only support D24S8 - if(bitmask::any(_flags, TargetBufferFlags::DEPTH_AND_STENCIL)) { - if(isDefaultRenderTarget() || !_stencil) +{ // FIXME: adxe only support D24S8 + if (bitmask::any(_flags, TargetBufferFlags::DEPTH_AND_STENCIL)) + { + if (isDefaultRenderTarget() || !_stencil) return PixelFormat::D24S8; return _stencil.texture->getTextureFormat(); } diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.mm b/cocos/renderer/backend/metal/ShaderModuleMTL.mm index 10b80a299413..7106f5917321 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.mm +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "ShaderModuleMTL.h" #include "DeviceMTL.h" @@ -30,20 +30,20 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN ShaderModuleMTL::ShaderModuleMTL(id mtlDevice, ShaderStage stage, std::string_view source) -: ShaderModule(stage) + : ShaderModule(stage) { // Convert GLSL shader to metal shader - //TODO: don't crreate/destroy ctx every time. - glslopt_ctx* ctx = glslopt_initialize(kGlslTargetMetal); + // TODO: don't crreate/destroy ctx every time. + glslopt_ctx* ctx = glslopt_initialize(kGlslTargetMetal); glslopt_shader_type shaderType = stage == ShaderStage::VERTEX ? kGlslOptShaderVertex : kGlslOptShaderFragment; - glslopt_shader* glslShader = glslopt_optimize(ctx, shaderType, source.data(), 0); + glslopt_shader* glslShader = glslopt_optimize(ctx, shaderType, source.data(), 0); if (!glslShader) { NSLog(@"Can not translate GLSL shader to metal shader:"); NSLog(@"%s", source.data()); return; } - + const char* metalShader = glslopt_get_output(glslShader); if (!metalShader) { @@ -52,20 +52,18 @@ of this software and associated documentation files (the "Software"), to deal glslopt_cleanup(ctx); return; } - -// NSLog(@"%s", metalShader); - + + // NSLog(@"%s", metalShader); + parseAttibute(mtlDevice, glslShader); parseUniform(mtlDevice, glslShader); parseTexture(mtlDevice, glslShader); setBuiltinUniformLocation(); setBuiltinAttributeLocation(); - + NSString* shader = [NSString stringWithUTF8String:metalShader]; NSError* error; - id library = [mtlDevice newLibraryWithSource:shader - options:nil - error:&error]; + id library = [mtlDevice newLibraryWithSource:shader options:nil error:&error]; if (!library) { NSLog(@"Can not compile metal shader: %@", error); @@ -74,7 +72,7 @@ of this software and associated documentation files (the "Software"), to deal glslopt_cleanup(ctx); return; } - + if (ShaderStage::VERTEX == stage) _mtlFunction = [library newFunctionWithName:@"xlatMtlMain1"]; else @@ -85,7 +83,7 @@ of this software and associated documentation files (the "Software"), to deal NSLog(@"%s", metalShader); assert(false); } - + glslopt_shader_delete(glslShader); glslopt_cleanup(ctx); [library release]; @@ -99,26 +97,27 @@ of this software and associated documentation files (the "Software"), to deal void ShaderModuleMTL::parseAttibute(id mtlDevice, glslopt_shader* shader) { const int attributeCount = glslopt_shader_get_input_count(shader); - for(int i = 0; i < attributeCount; i++) + for (int i = 0; i < attributeCount; i++) { const char* parName; glslopt_basic_type parType; glslopt_precision parPrec; int parVecSize, parMatSize, parArrSize, location; - glslopt_shader_get_input_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, &location); - + glslopt_shader_get_input_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, + &location); + AttributeBindInfo attributeInfo; attributeInfo.attributeName = parName; - attributeInfo.location = location; - _attributeInfo[parName] = attributeInfo; + attributeInfo.location = location; + _attributeInfo[parName] = attributeInfo; } } void ShaderModuleMTL::parseUniform(id mtlDevice, glslopt_shader* shader) { const int uniformCount = glslopt_shader_get_uniform_count(shader); - _uniformBufferSize = glslopt_shader_get_uniform_total_size(shader); - + _uniformBufferSize = glslopt_shader_get_uniform_total_size(shader); + for (int i = 0; i < uniformCount; ++i) { int nextLocation = -1; @@ -126,31 +125,33 @@ of this software and associated documentation files (the "Software"), to deal glslopt_basic_type parType; glslopt_precision parPrec; int parVecSize, parMatSize, parArrSize, location; - if( i+1 < uniformCount) + if (i + 1 < uniformCount) { - glslopt_shader_get_uniform_desc(shader, i+1, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, &location); + glslopt_shader_get_uniform_desc(shader, i + 1, &parName, &parType, &parPrec, &parVecSize, &parMatSize, + &parArrSize, &location); nextLocation = location; } else { nextLocation = static_cast(_uniformBufferSize); } - - glslopt_shader_get_uniform_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, &location); - + + glslopt_shader_get_uniform_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, + &location); + parArrSize = (parArrSize > 0) ? parArrSize : 1; UniformInfo uniform; - uniform.count = parArrSize; - uniform.location = location; - uniform.isArray = parArrSize; - uniform.size = nextLocation - location; - uniform.bufferOffset = location; - uniform.needConvert = (parVecSize == 3) ? true : false; - uniform.type = static_cast(parType); - uniform.isMatrix = (parMatSize > 1) ? true : false; - _uniformInfos[parName] = uniform; + uniform.count = parArrSize; + uniform.location = location; + uniform.isArray = parArrSize; + uniform.size = nextLocation - location; + uniform.bufferOffset = location; + uniform.needConvert = (parVecSize == 3) ? true : false; + uniform.type = static_cast(parType); + uniform.isMatrix = (parMatSize > 1) ? true : false; + _uniformInfos[parName] = uniform; _activeUniformInfos[location] = uniform; - _maxLocation = _maxLocation < location ? (location + 1) : _maxLocation; + _maxLocation = _maxLocation < location ? (location + 1) : _maxLocation; } } @@ -162,7 +163,7 @@ of this software and associated documentation files (the "Software"), to deal int ShaderModuleMTL::getUniformLocation(std::string_view name) const { auto iter = _uniformInfos.find(name); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { return iter->second.location; } @@ -173,44 +174,44 @@ of this software and associated documentation files (the "Software"), to deal void ShaderModuleMTL::setBuiltinUniformLocation() { std::fill(_uniformLocation, _uniformLocation + UNIFORM_MAX, -1); - ///u_mvpMatrix + /// u_mvpMatrix auto iter = _uniformInfos.find(UNIFORM_NAME_MVP_MATRIX); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::MVP_MATRIX] = iter->second.location; } - - ///u_textColor + + /// u_textColor iter = _uniformInfos.find(UNIFORM_NAME_TEXT_COLOR); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::TEXT_COLOR] = iter->second.location; } - - ///u_effectColor + + /// u_effectColor iter = _uniformInfos.find(UNIFORM_NAME_EFFECT_COLOR); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::EFFECT_COLOR] = iter->second.location; } - - ///u_effectType + + /// u_effectType iter = _uniformInfos.find(UNIFORM_NAME_EFFECT_TYPE); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::EFFECT_TYPE] = iter->second.location; } - - ///u_texture + + /// u_texture iter = _uniformInfos.find(UNIFORM_NAME_TEXTURE); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::TEXTURE] = iter->second.location; } - - ///u_texture1 + + /// u_texture1 iter = _uniformInfos.find(UNIFORM_NAME_TEXTURE1); - if(iter != _uniformInfos.end()) + if (iter != _uniformInfos.end()) { _uniformLocation[Uniform::TEXTURE1] = iter->second.location; } @@ -224,7 +225,7 @@ of this software and associated documentation files (the "Software"), to deal int ShaderModuleMTL::getAttributeLocation(std::string name) { auto iter = _attributeInfo.find(name); - if(iter != _attributeInfo.end()) + if (iter != _attributeInfo.end()) return _attributeInfo[name].location; else return -1; @@ -233,23 +234,23 @@ of this software and associated documentation files (the "Software"), to deal void ShaderModuleMTL::setBuiltinAttributeLocation() { std::fill(_attributeLocation, _attributeLocation + ATTRIBUTE_MAX, -1); - ///a_position + /// a_position auto iter = _attributeInfo.find(ATTRIBUTE_NAME_POSITION); - if(iter != _attributeInfo.end()) + if (iter != _attributeInfo.end()) { _attributeLocation[Attribute::POSITION] = iter->second.location; } - - ///a_color + + /// a_color iter = _attributeInfo.find(ATTRIBUTE_NAME_COLOR); - if(iter != _attributeInfo.end()) + if (iter != _attributeInfo.end()) { _attributeLocation[Attribute::COLOR] = iter->second.location; } - - ///a_texCoord + + /// a_texCoord iter = _attributeInfo.find(ATTRIBUTE_NAME_TEXCOORD); - if(iter != _attributeInfo.end()) + if (iter != _attributeInfo.end()) { _attributeLocation[Attribute::TEXCOORD] = iter->second.location; } @@ -264,12 +265,13 @@ of this software and associated documentation files (the "Software"), to deal glslopt_basic_type parType; glslopt_precision parPrec; int parVecSize, parMatSize, parArrSize, location; - glslopt_shader_get_texture_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, &location); - + glslopt_shader_get_texture_desc(shader, i, &parName, &parType, &parPrec, &parVecSize, &parMatSize, &parArrSize, + &location); + UniformInfo uniform; - uniform.count = parArrSize; - uniform.location = location; - uniform.isArray = parArrSize > 0; + uniform.count = parArrSize; + uniform.location = location; + uniform.isArray = parArrSize > 0; _uniformInfos[parName] = uniform; } } diff --git a/cocos/renderer/backend/metal/TextureMTL.mm b/cocos/renderer/backend/metal/TextureMTL.mm index ff1929f104cd..332aa6f1e08a 100644 --- a/cocos/renderer/backend/metal/TextureMTL.mm +++ b/cocos/renderer/backend/metal/TextureMTL.mm @@ -21,7 +21,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "TextureMTL.h" #include "UtilsMTL.h" #include "base/ccMacros.h" @@ -31,78 +31,86 @@ of this software and associated documentation files (the "Software"), to deal namespace { - MTLSamplerAddressMode toMTLSamplerAddressMode(SamplerAddressMode mode) +MTLSamplerAddressMode toMTLSamplerAddressMode(SamplerAddressMode mode) +{ + MTLSamplerAddressMode ret = MTLSamplerAddressModeRepeat; + switch (mode) { - MTLSamplerAddressMode ret = MTLSamplerAddressModeRepeat; - switch (mode) { - case SamplerAddressMode::REPEAT: - ret = MTLSamplerAddressModeRepeat; - break; - case SamplerAddressMode::MIRROR_REPEAT: - ret = MTLSamplerAddressModeMirrorRepeat; - break; - case SamplerAddressMode::CLAMP_TO_EDGE: - ret = MTLSamplerAddressModeClampToEdge; - break; - default: - CCASSERT(false, "Not supported sampler address mode!"); - break; - } - return ret; + case SamplerAddressMode::REPEAT: + ret = MTLSamplerAddressModeRepeat; + break; + case SamplerAddressMode::MIRROR_REPEAT: + ret = MTLSamplerAddressModeMirrorRepeat; + break; + case SamplerAddressMode::CLAMP_TO_EDGE: + ret = MTLSamplerAddressModeClampToEdge; + break; + default: + CCASSERT(false, "Not supported sampler address mode!"); + break; } - - MTLSamplerMinMagFilter toMTLSamplerMinMagFilter(SamplerFilter mode) + return ret; +} + +MTLSamplerMinMagFilter toMTLSamplerMinMagFilter(SamplerFilter mode) +{ + switch (mode) { - switch (mode) { - case SamplerFilter::NEAREST: - case SamplerFilter::NEAREST_MIPMAP_LINEAR: - case SamplerFilter::NEAREST_MIPMAP_NEAREST: - return MTLSamplerMinMagFilterNearest; - case SamplerFilter::LINEAR: - case SamplerFilter::LINEAR_MIPMAP_LINEAR: - case SamplerFilter::LINEAR_MIPMAP_NEAREST: - return MTLSamplerMinMagFilterLinear; - case SamplerFilter::DONT_CARE: - return MTLSamplerMinMagFilterNearest; - } + case SamplerFilter::NEAREST: + case SamplerFilter::NEAREST_MIPMAP_LINEAR: + case SamplerFilter::NEAREST_MIPMAP_NEAREST: + return MTLSamplerMinMagFilterNearest; + case SamplerFilter::LINEAR: + case SamplerFilter::LINEAR_MIPMAP_LINEAR: + case SamplerFilter::LINEAR_MIPMAP_NEAREST: + return MTLSamplerMinMagFilterLinear; + case SamplerFilter::DONT_CARE: + return MTLSamplerMinMagFilterNearest; } - - bool isColorRenderable(PixelFormat textureFormat) +} + +bool isColorRenderable(PixelFormat textureFormat) +{ + switch (textureFormat) { - switch (textureFormat) - { - case PixelFormat::RGBA8: - case PixelFormat::RGBA4: - case PixelFormat::RGB565: - case PixelFormat::RGB5A1: - return true; - default: - return false; - } + case PixelFormat::RGBA8: + case PixelFormat::RGBA4: + case PixelFormat::RGB565: + case PixelFormat::RGB5A1: + return true; + default: + return false; } } +} /// CLASS TextureInfoMTL id TextureInfoMTL::ensure(int index, int target) { - if(index < CC_META_TEXTURES) { + if (index < CC_META_TEXTURES) + { id& mtlTexture = _mtlTextures[index]; - if(mtlTexture) return mtlTexture; + if (mtlTexture) + return mtlTexture; mtlTexture = createTexture(_mtlDevice, _descriptor, target); - if(_maxIdx < index) _maxIdx = index; + if (_maxIdx < index) + _maxIdx = index; return mtlTexture; } return nil; } -void TextureInfoMTL::destroy() { - if(_maxIdx == -1) return; +void TextureInfoMTL::destroy() +{ + if (_maxIdx == -1) + return; id texture; int i = 0; - while((texture = _mtlTextures[i++])) + while ((texture = _mtlTextures[i++])) [texture release]; - if(_mtlSamplerState) { + if (_mtlSamplerState) + { [_mtlSamplerState release]; _mtlSamplerState = nil; } @@ -112,120 +120,143 @@ bool isColorRenderable(PixelFormat textureFormat) id TextureInfoMTL::createTexture(id mtlDevice, const TextureDescriptor& descriptor, int target) { MTLPixelFormat pixelFormat = UtilsMTL::toMTLPixelFormat(descriptor.textureFormat); - if(pixelFormat == MTLPixelFormatInvalid) + if (pixelFormat == MTLPixelFormatInvalid) return nil; - + MTLTextureDescriptor* textureDescriptor = nil; - switch(target) { + switch (target) + { case MTL_TEXTURE_2D: textureDescriptor = [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:pixelFormat - width:descriptor.width - height:descriptor.height - mipmapped:YES]; + width:descriptor.width + height:descriptor.height + mipmapped:YES]; break; case MTL_TEXTURE_CUBE: - textureDescriptor = [MTLTextureDescriptor textureCubeDescriptorWithPixelFormat:pixelFormat size:descriptor.width mipmapped:YES]; + textureDescriptor = [MTLTextureDescriptor textureCubeDescriptorWithPixelFormat:pixelFormat + size:descriptor.width + mipmapped:YES]; break; - default: return nil; + default: + return nil; } - + if (TextureUsage::RENDER_TARGET == descriptor.textureUsage) { - //DepthStencil, and Multisample textures must be allocated with the MTLResourceStorageModePrivate resource option - if(PixelFormat::D24S8 == descriptor.textureFormat && target == MTL_TEXTURE_2D) + // DepthStencil, and Multisample textures must be allocated with the MTLResourceStorageModePrivate resource + // option + if (PixelFormat::D24S8 == descriptor.textureFormat && target == MTL_TEXTURE_2D) textureDescriptor.resourceOptions = MTLResourceStorageModePrivate; textureDescriptor.usage = MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead; } - + return [mtlDevice newTextureWithDescriptor:textureDescriptor]; } -void TextureInfoMTL::recreateSampler(const SamplerDescriptor &descriptor) +void TextureInfoMTL::recreateSampler(const SamplerDescriptor& descriptor) { - MTLSamplerDescriptor *mtlDescriptor = [MTLSamplerDescriptor new]; - mtlDescriptor.sAddressMode = descriptor.sAddressMode == SamplerAddressMode::DONT_CARE ? _sAddressMode : toMTLSamplerAddressMode(descriptor.sAddressMode); - mtlDescriptor.tAddressMode = descriptor.tAddressMode == SamplerAddressMode::DONT_CARE ? _tAddressMode : toMTLSamplerAddressMode(descriptor.tAddressMode); - - mtlDescriptor.minFilter = descriptor.minFilter == SamplerFilter::DONT_CARE ? _minFilter : toMTLSamplerMinMagFilter(descriptor.minFilter); - mtlDescriptor.magFilter = descriptor.magFilter == SamplerFilter::DONT_CARE ? _magFilter : toMTLSamplerMinMagFilter(descriptor.magFilter); - - if(_mtlSamplerState) + MTLSamplerDescriptor* mtlDescriptor = [MTLSamplerDescriptor new]; + mtlDescriptor.sAddressMode = descriptor.sAddressMode == SamplerAddressMode::DONT_CARE + ? _sAddressMode + : toMTLSamplerAddressMode(descriptor.sAddressMode); + mtlDescriptor.tAddressMode = descriptor.tAddressMode == SamplerAddressMode::DONT_CARE + ? _tAddressMode + : toMTLSamplerAddressMode(descriptor.tAddressMode); + + mtlDescriptor.minFilter = + descriptor.minFilter == SamplerFilter::DONT_CARE ? _minFilter : toMTLSamplerMinMagFilter(descriptor.minFilter); + mtlDescriptor.magFilter = + descriptor.magFilter == SamplerFilter::DONT_CARE ? _magFilter : toMTLSamplerMinMagFilter(descriptor.magFilter); + + if (_mtlSamplerState) { [_mtlSamplerState release]; _mtlSamplerState = nil; } - + _sAddressMode = mtlDescriptor.sAddressMode; _tAddressMode = mtlDescriptor.tAddressMode; - _minFilter = mtlDescriptor.minFilter; - _magFilter = mtlDescriptor.magFilter; - _mipFilter = mtlDescriptor.mipFilter; - + _minFilter = mtlDescriptor.minFilter; + _magFilter = mtlDescriptor.magFilter; + _mipFilter = mtlDescriptor.mipFilter; + _mtlSamplerState = [_mtlDevice newSamplerStateWithDescriptor:mtlDescriptor]; - + [mtlDescriptor release]; } /// CLASS TextureMTL -TextureMTL::TextureMTL(id mtlDevice, const TextureDescriptor& descriptor) -: _textureInfo(mtlDevice) +TextureMTL::TextureMTL(id mtlDevice, const TextureDescriptor& descriptor) : _textureInfo(mtlDevice) { updateTextureDescriptor(descriptor); } -TextureMTL::~TextureMTL() -{ -} +TextureMTL::~TextureMTL() {} -void TextureMTL::updateSamplerDescriptor(const SamplerDescriptor &sampler) +void TextureMTL::updateSamplerDescriptor(const SamplerDescriptor& sampler) { _textureInfo.recreateSampler(sampler); } -void TextureMTL::updateTextureDescriptor(const cocos2d::backend::TextureDescriptor &descriptor, int index) +void TextureMTL::updateTextureDescriptor(const cocos2d::backend::TextureDescriptor& descriptor, int index) { TextureBackend::updateTextureDescriptor(descriptor, index); _textureInfo._descriptor = descriptor; _textureInfo.ensure(index, MTL_TEXTURE_2D); updateSamplerDescriptor(descriptor.samplerDescriptor); - + _textureInfo._bytesPerRow = PixelFormatUtils::computeRowPitch(descriptor.textureFormat, descriptor.width); } -void TextureMTL::updateData(uint8_t* data, std::size_t width , std::size_t height, std::size_t level, int index) +void TextureMTL::updateData(uint8_t* data, std::size_t width, std::size_t height, std::size_t level, int index) { updateSubData(0, 0, width, height, level, data, index); } -void TextureMTL::updateSubData(std::size_t xoffset, std::size_t yoffset, std::size_t width, std::size_t height, std::size_t level, uint8_t* data, int index) +void TextureMTL::updateSubData(std::size_t xoffset, + std::size_t yoffset, + std::size_t width, + std::size_t height, + std::size_t level, + uint8_t* data, + int index) { auto mtlTexture = _textureInfo.ensure(index, MTL_TEXTURE_2D); - if(!mtlTexture) return; - - MTLRegion region = - { + if (!mtlTexture) + return; + + MTLRegion region = { {xoffset, yoffset, 0}, // MTLOrigin {width, height, 1} // MTLSize }; - + auto bytesPerRow = PixelFormatUtils::computeRowPitch(_textureFormat, width); - - [mtlTexture replaceRegion:region - mipmapLevel:level - withBytes:data - bytesPerRow:bytesPerRow]; - - if(!_hasMipmaps && level > 0) + + [mtlTexture replaceRegion:region mipmapLevel:level withBytes:data bytesPerRow:bytesPerRow]; + + if (!_hasMipmaps && level > 0) _hasMipmaps = true; } -void TextureMTL::updateCompressedData(uint8_t *data, std::size_t width, std::size_t height, std::size_t dataLen, std::size_t level, int index) +void TextureMTL::updateCompressedData(uint8_t* data, + std::size_t width, + std::size_t height, + std::size_t dataLen, + std::size_t level, + int index) { updateCompressedSubData(0, 0, width, height, dataLen, level, data, index); } -void TextureMTL::updateCompressedSubData(std::size_t xoffset, std::size_t yoffset, std::size_t width, std::size_t height, std::size_t dataLen, std::size_t level, uint8_t *data, int index) +void TextureMTL::updateCompressedSubData(std::size_t xoffset, + std::size_t yoffset, + std::size_t width, + std::size_t height, + std::size_t dataLen, + std::size_t level, + uint8_t* data, + int index) { updateSubData(xoffset, yoffset, width, height, level, data, index); } @@ -234,8 +265,8 @@ bool isColorRenderable(PixelFormat textureFormat) { if (TextureUsage::RENDER_TARGET == _textureUsage || isColorRenderable(_textureFormat) == false) return; - - if(!_hasMipmaps) + + if (!_hasMipmaps) { _hasMipmaps = true; UtilsMTL::generateMipmaps(reinterpret_cast>(this->getHandler())); @@ -243,54 +274,52 @@ bool isColorRenderable(PixelFormat textureFormat) } /// CLASS TextureCubeMTL -TextureCubeMTL::TextureCubeMTL(id mtlDevice, const TextureDescriptor& descriptor) -: _textureInfo(mtlDevice) +TextureCubeMTL::TextureCubeMTL(id mtlDevice, const TextureDescriptor& descriptor) : _textureInfo(mtlDevice) { updateTextureDescriptor(descriptor); } -TextureCubeMTL::~TextureCubeMTL() -{ -} +TextureCubeMTL::~TextureCubeMTL() {} -void TextureCubeMTL::updateTextureDescriptor(const cocos2d::backend::TextureDescriptor &descriptor, int index) +void TextureCubeMTL::updateTextureDescriptor(const cocos2d::backend::TextureDescriptor& descriptor, int index) { TextureBackend::updateTextureDescriptor(descriptor, index); _textureInfo._descriptor = descriptor; _textureInfo.ensure(index, MTL_TEXTURE_CUBE); updateSamplerDescriptor(descriptor.samplerDescriptor); - + _textureInfo._bytesPerRow = PixelFormatUtils::computeRowPitch(descriptor.textureFormat, descriptor.width); - _bytesPerImage = _textureInfo._bytesPerRow * descriptor.width; - _region = MTLRegionMake2D(0, 0, descriptor.width, descriptor.height); + _bytesPerImage = _textureInfo._bytesPerRow * descriptor.width; + _region = MTLRegionMake2D(0, 0, descriptor.width, descriptor.height); } -void TextureCubeMTL::updateSamplerDescriptor(const SamplerDescriptor &sampler) +void TextureCubeMTL::updateSamplerDescriptor(const SamplerDescriptor& sampler) { _textureInfo.recreateSampler(sampler); } -void TextureCubeMTL::updateFaceData(TextureCubeFace side, void *data, int index) +void TextureCubeMTL::updateFaceData(TextureCubeFace side, void* data, int index) { NSUInteger slice = static_cast(side); - auto mtlTexture = _textureInfo.ensure(index, MTL_TEXTURE_CUBE); - if(!mtlTexture) return; + auto mtlTexture = _textureInfo.ensure(index, MTL_TEXTURE_CUBE); + if (!mtlTexture) + return; [mtlTexture replaceRegion:_region - mipmapLevel:0 - slice:slice - withBytes:data - bytesPerRow:_textureInfo._bytesPerRow - bytesPerImage:_bytesPerImage]; + mipmapLevel:0 + slice:slice + withBytes:data + bytesPerRow:_textureInfo._bytesPerRow + bytesPerImage:_bytesPerImage]; } void TextureCubeMTL::generateMipmaps() { if (TextureUsage::RENDER_TARGET == _textureUsage || isColorRenderable(_textureFormat) == false) return; - - if(!_hasMipmaps) + + if (!_hasMipmaps) { _hasMipmaps = true; UtilsMTL::generateMipmaps(reinterpret_cast>(this->getHandler())); diff --git a/cocos/renderer/backend/metal/UtilsMTL.mm b/cocos/renderer/backend/metal/UtilsMTL.mm index f37389d967f6..7b5ac87a265a 100644 --- a/cocos/renderer/backend/metal/UtilsMTL.mm +++ b/cocos/renderer/backend/metal/UtilsMTL.mm @@ -22,7 +22,7 @@ of this software and associated documentation files (the "Software"), to deal OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - + #include "UtilsMTL.h" #include "DeviceMTL.h" #include "DeviceInfoMTL.h" @@ -32,20 +32,21 @@ of this software and associated documentation files (the "Software"), to deal CC_BACKEND_BEGIN -id UtilsMTL::_defaultColorAttachmentTexture = nil; +id UtilsMTL::_defaultColorAttachmentTexture = nil; id UtilsMTL::_defaultDepthStencilAttachmentTexture = nil; -namespace { - MTLPixelFormat getSupportedDepthStencilFormat() - { - MTLPixelFormat pixelFormat = MTLPixelFormatDepth32Float_Stencil8; +namespace +{ +MTLPixelFormat getSupportedDepthStencilFormat() +{ + MTLPixelFormat pixelFormat = MTLPixelFormatDepth32Float_Stencil8; #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - bool isDepth24Stencil8PixelFormatSupported = DeviceInfoMTL::supportD24S8(); - if(isDepth24Stencil8PixelFormatSupported) - pixelFormat = MTLPixelFormatDepth24Unorm_Stencil8; + bool isDepth24Stencil8PixelFormatSupported = DeviceInfoMTL::supportD24S8(); + if (isDepth24Stencil8PixelFormatSupported) + pixelFormat = MTLPixelFormatDepth24Unorm_Stencil8; #endif - return pixelFormat; - } + return pixelFormat; +} } struct GPUTextureFormatInfo @@ -54,76 +55,77 @@ MTLPixelFormat getSupportedDepthStencilFormat() MTLPixelFormat fmtSrgb; }; -static GPUTextureFormatInfo s_textureFormats[] = -{ +static GPUTextureFormatInfo s_textureFormats[] = { /* pvrtc v1 */ - { MTLPixelFormat(162/*PVRTC_RGB_4BPP*/), MTLPixelFormat(163/*PVRTC_RGB_4BPP_sRGB*/) }, // PTC14 - { MTLPixelFormat(166/*PVRTC_RGBA_4BPP*/), MTLPixelFormat(167/*PVRTC_RGBA_4BPP_sRGB*/) }, // PTC14A - { MTLPixelFormat(160/*PVRTC_RGB_2BPP*/), MTLPixelFormat(161/*PVRTC_RGB_2BPP_sRGB*/) }, // PTC12 - { MTLPixelFormat(164/*PVRTC_RGBA_2BPP*/), MTLPixelFormat(165/*PVRTC_RGBA_2BPP_sRGB*/) }, // PTC12A - + {MTLPixelFormat(162 /*PVRTC_RGB_4BPP*/), MTLPixelFormat(163 /*PVRTC_RGB_4BPP_sRGB*/)}, // PTC14 + {MTLPixelFormat(166 /*PVRTC_RGBA_4BPP*/), MTLPixelFormat(167 /*PVRTC_RGBA_4BPP_sRGB*/)}, // PTC14A + {MTLPixelFormat(160 /*PVRTC_RGB_2BPP*/), MTLPixelFormat(161 /*PVRTC_RGB_2BPP_sRGB*/)}, // PTC12 + {MTLPixelFormat(164 /*PVRTC_RGBA_2BPP*/), MTLPixelFormat(165 /*PVRTC_RGBA_2BPP_sRGB*/)}, // PTC12A + /* etc */ - { MTLPixelFormat(180/*ETC2_RGB8*/), MTLPixelFormat(181/*ETC2_RGB8_sRGB*/) }, // ETC1 - { MTLPixelFormat(180/*ETC2_RGB8*/), MTLPixelFormat(181/*ETC2_RGB8_sRGB*/) }, // ETC2 - { MTLPixelFormat(178/*EAC_RGBA8*/), MTLPixelFormat(179/*EAC_RGBA8_sRGB*/) }, // ETC2A - + {MTLPixelFormat(180 /*ETC2_RGB8*/), MTLPixelFormat(181 /*ETC2_RGB8_sRGB*/)}, // ETC1 + {MTLPixelFormat(180 /*ETC2_RGB8*/), MTLPixelFormat(181 /*ETC2_RGB8_sRGB*/)}, // ETC2 + {MTLPixelFormat(178 /*EAC_RGBA8*/), MTLPixelFormat(179 /*EAC_RGBA8_sRGB*/)}, // ETC2A + /* s3tc */ - { MTLPixelFormat(130/*BC1_RGBA*/), MTLPixelFormat(131/*BC1_RGBA_sRGB*/) }, // S3TC_DXT1/BC1 - { MTLPixelFormat(132/*BC2_RGBA*/), MTLPixelFormat(133/*BC2_RGBA_sRGB*/) }, // S3TC_DXT3/BC2 - { MTLPixelFormat(134/*BC3_RGBA*/), MTLPixelFormat(135/*BC3_RGBA_sRGB*/) }, // S3TC_DXT5/BC3 - + {MTLPixelFormat(130 /*BC1_RGBA*/), MTLPixelFormat(131 /*BC1_RGBA_sRGB*/)}, // S3TC_DXT1/BC1 + {MTLPixelFormat(132 /*BC2_RGBA*/), MTLPixelFormat(133 /*BC2_RGBA_sRGB*/)}, // S3TC_DXT3/BC2 + {MTLPixelFormat(134 /*BC3_RGBA*/), MTLPixelFormat(135 /*BC3_RGBA_sRGB*/)}, // S3TC_DXT5/BC3 + /* atc */ - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATC_RGB - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATC_EXPLICIT_ALPHA - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ATC_INTERPOLATED_ALPHA - - /* astc */ + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ATC_RGB + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ATC_EXPLICIT_ALPHA + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ATC_INTERPOLATED_ALPHA + +/* astc */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) - { MTLPixelFormatASTC_4x4_LDR, MTLPixelFormatASTC_4x4_sRGB }, // ASTC4x4 - { MTLPixelFormatASTC_5x5_LDR, MTLPixelFormatASTC_5x5_sRGB }, // ASTC5x5 - { MTLPixelFormatASTC_6x6_LDR, MTLPixelFormatASTC_6x6_sRGB }, // ASTC6x6 - { MTLPixelFormatASTC_8x5_LDR, MTLPixelFormatASTC_8x5_sRGB }, // ASTC8x5 - { MTLPixelFormatASTC_8x6_LDR, MTLPixelFormatASTC_8x6_sRGB }, // ASTC8x6 - { MTLPixelFormatASTC_8x8_LDR, MTLPixelFormatASTC_8x8_sRGB }, // ASTC8x8 - { MTLPixelFormatASTC_10x5_LDR, MTLPixelFormatASTC_10x5_sRGB }, // ASTC10x5 + {MTLPixelFormatASTC_4x4_LDR, MTLPixelFormatASTC_4x4_sRGB}, // ASTC4x4 + {MTLPixelFormatASTC_5x5_LDR, MTLPixelFormatASTC_5x5_sRGB}, // ASTC5x5 + {MTLPixelFormatASTC_6x6_LDR, MTLPixelFormatASTC_6x6_sRGB}, // ASTC6x6 + {MTLPixelFormatASTC_8x5_LDR, MTLPixelFormatASTC_8x5_sRGB}, // ASTC8x5 + {MTLPixelFormatASTC_8x6_LDR, MTLPixelFormatASTC_8x6_sRGB}, // ASTC8x6 + {MTLPixelFormatASTC_8x8_LDR, MTLPixelFormatASTC_8x8_sRGB}, // ASTC8x8 + {MTLPixelFormatASTC_10x5_LDR, MTLPixelFormatASTC_10x5_sRGB}, // ASTC10x5 #else - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC4x4 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC5x5 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC6x6 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC8x5 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC8x6 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC8x8 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ASTC10x5 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC4x4 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC5x5 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC6x6 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC8x5 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC8x6 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC8x8 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // ASTC10x5 #endif - + /* normal */ - { MTLPixelFormatRGBA8Unorm, MTLPixelFormatRGBA8Unorm_sRGB }, // RGBA8 - { MTLPixelFormatBGRA8Unorm, MTLPixelFormatBGRA8Unorm_sRGB }, // BGRA8 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // RGB8 - { MTLPixelFormat(40/*B5G6R5Unorm*/), MTLPixelFormatInvalid }, // R5G6B5 - { MTLPixelFormat(42/*ABGR4Unorm*/), MTLPixelFormatInvalid }, // RGBA4 - { MTLPixelFormat(41/*A1BGR5Unorm*/), MTLPixelFormatInvalid }, // RGB5A1 - { MTLPixelFormatA8Unorm, MTLPixelFormatInvalid }, // A8 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // L8 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // LA8 - + {MTLPixelFormatRGBA8Unorm, MTLPixelFormatRGBA8Unorm_sRGB}, // RGBA8 + {MTLPixelFormatBGRA8Unorm, MTLPixelFormatBGRA8Unorm_sRGB}, // BGRA8 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // RGB8 + {MTLPixelFormat(40 /*B5G6R5Unorm*/), MTLPixelFormatInvalid}, // R5G6B5 + {MTLPixelFormat(42 /*ABGR4Unorm*/), MTLPixelFormatInvalid}, // RGBA4 + {MTLPixelFormat(41 /*A1BGR5Unorm*/), MTLPixelFormatInvalid}, // RGB5A1 + {MTLPixelFormatA8Unorm, MTLPixelFormatInvalid}, // A8 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // L8 + {MTLPixelFormatInvalid, MTLPixelFormatInvalid}, // LA8 + /* depth stencil */ - { MTLPixelFormat(255/*Depth24Unorm_Stencil8*/), MTLPixelFormatInvalid }, // D24S8 + {MTLPixelFormat(255 /*Depth24Unorm_Stencil8*/), MTLPixelFormatInvalid}, // D24S8 }; -static_assert(CC_ARRAYSIZE(s_textureFormats) == (int)PixelFormat::COUNT, "The OpenGL GPU texture format info table incomplete!"); +static_assert(CC_ARRAYSIZE(s_textureFormats) == (int)PixelFormat::COUNT, + "The OpenGL GPU texture format info table incomplete!"); void UtilsMTL::initGPUTextureFormats() { - //on mac, D24S8 means MTLPixelFormatDepth24Unorm_Stencil8, while on ios it means MTLPixelFormatDepth32Float_Stencil8 + // on mac, D24S8 means MTLPixelFormatDepth24Unorm_Stencil8, while on ios it means + // MTLPixelFormatDepth32Float_Stencil8 auto& info = s_textureFormats[(int)PixelFormat::D24S8]; - info.fmt = getSupportedDepthStencilFormat(); + info.fmt = getSupportedDepthStencilFormat(); } id UtilsMTL::getDefaultDepthStencilTexture() { - if (! _defaultDepthStencilAttachmentTexture) + if (!_defaultDepthStencilAttachmentTexture) _defaultDepthStencilAttachmentTexture = UtilsMTL::createDepthStencilAttachmentTexture(); - + return _defaultDepthStencilAttachmentTexture; } @@ -134,7 +136,8 @@ MTLPixelFormat getSupportedDepthStencilFormat() MTLPixelFormat UtilsMTL::toMTLPixelFormat(PixelFormat textureFormat) { - if (UTILS_LIKELY(textureFormat < PixelFormat::COUNT)) { + if (UTILS_LIKELY(textureFormat < PixelFormat::COUNT)) + { return s_textureFormats[(int)textureFormat].fmt; } return MTLPixelFormatInvalid; @@ -149,48 +152,49 @@ MTLPixelFormat getSupportedDepthStencilFormat() id UtilsMTL::createDepthStencilAttachmentTexture() { - auto CAMetalLayer = DeviceMTL::getCAMetalLayer(); + auto CAMetalLayer = DeviceMTL::getCAMetalLayer(); MTLTextureDescriptor* textureDescriptor = [[MTLTextureDescriptor alloc] init]; - textureDescriptor.width = CAMetalLayer.drawableSize.width; - textureDescriptor.height = CAMetalLayer.drawableSize.height; - textureDescriptor.pixelFormat = s_textureFormats[(int)PixelFormat::D24S8].fmt; - textureDescriptor.resourceOptions = MTLResourceStorageModePrivate; - textureDescriptor.usage = MTLTextureUsageRenderTarget; - auto ret = [CAMetalLayer.device newTextureWithDescriptor:textureDescriptor]; + textureDescriptor.width = CAMetalLayer.drawableSize.width; + textureDescriptor.height = CAMetalLayer.drawableSize.height; + textureDescriptor.pixelFormat = s_textureFormats[(int)PixelFormat::D24S8].fmt; + textureDescriptor.resourceOptions = MTLResourceStorageModePrivate; + textureDescriptor.usage = MTLTextureUsageRenderTarget; + auto ret = [CAMetalLayer.device newTextureWithDescriptor:textureDescriptor]; [textureDescriptor release]; - + return ret; } void UtilsMTL::generateMipmaps(id texture) { - auto commandQueue = static_cast(DeviceMTL::getInstance())->getMTLCommandQueue(); - auto commandBuffer = [commandQueue commandBuffer]; + auto commandQueue = static_cast(DeviceMTL::getInstance())->getMTLCommandQueue(); + auto commandBuffer = [commandQueue commandBuffer]; id commandEncoder = [commandBuffer blitCommandEncoder]; [commandEncoder generateMipmapsForTexture:texture]; [commandEncoder endEncoding]; [commandBuffer commit]; } -void UtilsMTL::swizzleImage(unsigned char *image, std::size_t width, std::size_t height, MTLPixelFormat format) +void UtilsMTL::swizzleImage(unsigned char* image, std::size_t width, std::size_t height, MTLPixelFormat format) { - if(!image) + if (!image) return; - + auto len = width * height; - switch (format) { - //convert to RGBA - case MTLPixelFormatBGRA8Unorm: - for(int i=0; i& getAllActiveUniformInfo( - ShaderStage stage) const override; + virtual const hlookup::string_map& getAllActiveUniformInfo(ShaderStage stage) const override; private: void compileProgram(); diff --git a/cocos/ui/UIButton.h b/cocos/ui/UIButton.h index 5405d437190a..ad881f2d392a 100644 --- a/cocos/ui/UIButton.h +++ b/cocos/ui/UIButton.h @@ -83,7 +83,7 @@ class CC_GUI_DLL Button : public Widget static Button* create(std::string_view normalImage, std::string_view selectedImage = "", std::string_view disableImage = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Load textures for button. @@ -96,7 +96,7 @@ class CC_GUI_DLL Button : public Widget void loadTextures(std::string_view normal, std::string_view selected, std::string_view disabled = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Load normal state texture for button. @@ -317,7 +317,7 @@ class CC_GUI_DLL Button : public Widget virtual bool init(std::string_view normalImage, std::string_view selectedImage = "", std::string_view disableImage = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); virtual Vec2 getNormalTextureSize() const; diff --git a/cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm b/cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm index bd2cf3d9d2f5..36411c3fd349 100644 --- a/cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm +++ b/cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2013-2016 zilongshanren Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,92 +30,94 @@ of this software and associated documentation files (the "Software"), to deal #include "ui/UIEditBox/Mac/CCUIPasswordTextField.h" #include "ui/UIEditBox/Mac/CCUIMultilineTextField.h" -#define getEditBoxImplMac() ((cocos2d::ui::EditBoxImplMac *)_editBox) - +#define getEditBoxImplMac() ((cocos2d::ui::EditBoxImplMac*)_editBox) @implementation UIEditBoxImplMac -- (instancetype)initWithFrame:(NSRect)frameRect editBox:(void *)editBox +- (instancetype)initWithFrame:(NSRect)frameRect editBox:(void*)editBox { self = [super init]; - - if (self) { - - _editState = NO; + + if (self) + { + + _editState = NO; self.frameRect = frameRect; - - self.editBox = editBox; - self.dataInputMode = cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS; + + self.editBox = editBox; + self.dataInputMode = cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS; self.keyboardReturnType = cocos2d::ui::EditBox::KeyboardReturnType::DEFAULT; - + [self createMultiLineTextField]; } - + return self; } - (void)createSingleLineTextField { - CCUISingleLineTextField *textField = [[[CCUISingleLineTextField alloc] initWithFrame:self.frameRect] autorelease]; - + CCUISingleLineTextField* textField = [[[CCUISingleLineTextField alloc] initWithFrame:self.frameRect] autorelease]; + self.textInput = textField; } - (void)createMultiLineTextField { - CCUIMultilineTextField *textView = [[[CCUIMultilineTextField alloc] initWithFrame:self.frameRect] autorelease]; + CCUIMultilineTextField* textView = [[[CCUIMultilineTextField alloc] initWithFrame:self.frameRect] autorelease]; [textView setVerticallyResizable:NO]; self.textInput = textView; } - (void)createPasswordTextField { - CCUIPasswordTextField *textField = [[[CCUIPasswordTextField alloc] initWithFrame:self.frameRect] autorelease]; - + CCUIPasswordTextField* textField = [[[CCUIPasswordTextField alloc] initWithFrame:self.frameRect] autorelease]; + self.textInput = textField; } -- (void)setTextInput:(NSView *)textInput +- (void)setTextInput:(NSView*)textInput { - if (_textInput == textInput) { + if (_textInput == textInput) + { return; } // Migrate properties - textInput.ccui_textColor = _textInput.ccui_textColor ?: [NSColor whiteColor]; - textInput.ccui_text = _textInput.ccui_text ?: @""; + textInput.ccui_textColor = _textInput.ccui_textColor ?: [NSColor whiteColor]; + textInput.ccui_text = _textInput.ccui_text ?: @""; textInput.ccui_placeholder = _textInput.ccui_placeholder ?: @""; - textInput.ccui_font = _textInput.ccui_font ?: [NSFont systemFontOfSize:self.frameRect.size.height*3/2]; - textInput.ccui_maxLength = getEditBoxImplMac()->getMaxLength(); - textInput.ccui_alignment = _textInput.ccui_alignment; - + textInput.ccui_font = _textInput.ccui_font ?: [NSFont systemFontOfSize:self.frameRect.size.height * 3 / 2]; + textInput.ccui_maxLength = getEditBoxImplMac()->getMaxLength(); + textInput.ccui_alignment = _textInput.ccui_alignment; + [_textInput removeFromSuperview]; [_textInput release]; - + _textInput = [textInput retain]; - + [_textInput performSelector:@selector(setTextColor:) withObject:_textInput.ccui_textColor]; [_textInput performSelector:@selector(setBackgroundColor:) withObject:[NSColor clearColor]]; - - if (![_textInput isKindOfClass:[NSTextView class]]) { + + if (![_textInput isKindOfClass:[NSTextView class]]) + { [_textInput performSelector:@selector(setBordered:) withObject:nil]; } - _textInput.hidden = NO; + _textInput.hidden = NO; _textInput.wantsLayer = YES; - + [_textInput ccui_setDelegate:self]; - + [self setInputFlag:self.dataInputMode]; [self setReturnType:self.keyboardReturnType]; } - (void)updateFrame:(CGRect)rect { - NSRect frame = self.textInput.frame; - frame.origin.x = rect.origin.x; - frame.origin.y = rect.origin.y; + NSRect frame = self.textInput.frame; + frame.origin.x = rect.origin.x; + frame.origin.y = rect.origin.y; frame.size.height = rect.size.height; - frame.size.width = rect.size.width; + frame.size.width = rect.size.width; self.textInput.frame = frame; } @@ -123,11 +125,11 @@ - (void)updateFrame:(CGRect)rect - (void)dealloc { self.textInput = nil; - + [super dealloc]; } -- (NSWindow *)window +- (NSWindow*)window { auto glview = cocos2d::Director::getInstance()->getOpenGLView(); return glview->getCocoaWindow(); @@ -137,41 +139,44 @@ - (void)openKeyboard { [self.window.contentView addSubview:self.textInput]; - if (![self.textInput isKindOfClass:[NSTextView class]]) { + if (![self.textInput isKindOfClass:[NSTextView class]]) + { [self.textInput becomeFirstResponder]; - }else { + } + else + { [self.window makeFirstResponder:self.textInput]; } - + auto editbox = getEditBoxImplMac()->getEditBox(); - auto oldPos = editbox->getPosition(); - editbox->setPosition(oldPos + cocos2d::Vec2(10,20)); + auto oldPos = editbox->getPosition(); + editbox->setPosition(oldPos + cocos2d::Vec2(10, 20)); editbox->setPosition(oldPos); } - (void)closeKeyboard { - if (![self.textInput isKindOfClass:[NSTextView class]]) { + if (![self.textInput isKindOfClass:[NSTextView class]]) + { [self.textInput resignFirstResponder]; } [self.textInput removeFromSuperview]; } - -- (const char*) getText +- (const char*)getText { return [self.textInput.ccui_text UTF8String]; } -- (void)controlTextDidBeginEditing:(NSNotification *)notification +- (void)controlTextDidBeginEditing:(NSNotification*)notification { _editState = YES; - + getEditBoxImplMac()->editBoxEditingDidBegin(); } -- (void)controlTextDidEndEditing:(NSNotification *)notification +- (void)controlTextDidEndEditing:(NSNotification*)notification { _editState = NO; @@ -186,27 +191,32 @@ - (void)setMaxLength:(int)length /** * Called each time when the text field's text has changed. */ -- (void)controlTextDidChange:(NSNotification *)notification +- (void)controlTextDidChange:(NSNotification*)notification { getEditBoxImplMac()->editBoxEditingChanged([self getText]); } -- (NSString *)getDefaultFontName +- (NSString*)getDefaultFontName { return self.textInput.ccui_font.fontName ?: @""; } - (void)setInputMode:(cocos2d::ui::EditBox::InputMode)inputMode { - //multiline input - if (inputMode == cocos2d::ui::EditBox::InputMode::ANY) { - if (![self.textInput isKindOfClass:[NSTextView class]]) { + // multiline input + if (inputMode == cocos2d::ui::EditBox::InputMode::ANY) + { + if (![self.textInput isKindOfClass:[NSTextView class]]) + { [self createMultiLineTextField]; } } - else { - if (self.dataInputMode != cocos2d::ui::EditBox::InputFlag::PASSWORD) { - if (![self.textInput isKindOfClass:[NSTextField class]]) { + else + { + if (self.dataInputMode != cocos2d::ui::EditBox::InputFlag::PASSWORD) + { + if (![self.textInput isKindOfClass:[NSTextField class]]) + { [self createSingleLineTextField]; } } @@ -215,42 +225,45 @@ - (void)setInputMode:(cocos2d::ui::EditBox::InputMode)inputMode - (void)setInputFlag:(cocos2d::ui::EditBox::InputFlag)inputFlag { - if (self.dataInputMode == inputFlag) { + if (self.dataInputMode == inputFlag) + { return; } - - if (self.dataInputMode == cocos2d::ui::EditBox::InputFlag::PASSWORD - && inputFlag != cocos2d::ui::EditBox::InputFlag::PASSWORD) { + + if (self.dataInputMode == cocos2d::ui::EditBox::InputFlag::PASSWORD && + inputFlag != cocos2d::ui::EditBox::InputFlag::PASSWORD) + { [self createSingleLineTextField]; } - - if (self.dataInputMode != cocos2d::ui::EditBox::InputFlag::PASSWORD - && inputFlag == cocos2d::ui::EditBox::InputFlag::PASSWORD) { + + if (self.dataInputMode != cocos2d::ui::EditBox::InputFlag::PASSWORD && + inputFlag == cocos2d::ui::EditBox::InputFlag::PASSWORD) + { [self createPasswordTextField]; } switch (inputFlag) { - case cocos2d::ui::EditBox::InputFlag::PASSWORD: - self.dataInputMode = inputFlag; - break; - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD: - CCLOG("INITIAL_CAPS_WORD not implemented"); - break; - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE: - CCLOG("INITIAL_CAPS_SENTENCE not implemented"); - break; - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS: - CCLOG("INITIAL_CAPS_ALL_CHARACTERS not implemented"); - break; - case cocos2d::ui::EditBox::InputFlag::SENSITIVE: - CCLOG("SENSITIVE not implemented"); - break; - case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS: - CCLOG("LOWERCASE_ALL_CHARACTERS not implemented"); - break; - default: - break; + case cocos2d::ui::EditBox::InputFlag::PASSWORD: + self.dataInputMode = inputFlag; + break; + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD: + CCLOG("INITIAL_CAPS_WORD not implemented"); + break; + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE: + CCLOG("INITIAL_CAPS_SENTENCE not implemented"); + break; + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS: + CCLOG("INITIAL_CAPS_ALL_CHARACTERS not implemented"); + break; + case cocos2d::ui::EditBox::InputFlag::SENSITIVE: + CCLOG("SENSITIVE not implemented"); + break; + case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS: + CCLOG("LOWERCASE_ALL_CHARACTERS not implemented"); + break; + default: + break; } } @@ -262,12 +275,14 @@ - (void)setReturnType:(cocos2d::ui::EditBox::KeyboardReturnType)returnType - (void)setTextHorizontalAlignment:(cocos2d::TextHAlignment)alignment { // swizzle center & right, for some reason they're backwards on !TARGET_OS_IPHONE - if (alignment == cocos2d::TextHAlignment::CENTER) alignment = cocos2d::TextHAlignment::RIGHT; - else if (alignment == cocos2d::TextHAlignment::RIGHT) alignment = cocos2d::TextHAlignment::CENTER; + if (alignment == cocos2d::TextHAlignment::CENTER) + alignment = cocos2d::TextHAlignment::RIGHT; + else if (alignment == cocos2d::TextHAlignment::RIGHT) + alignment = cocos2d::TextHAlignment::CENTER; self.textInput.ccui_alignment = static_cast(alignment); } -- (void)setPlaceHolder:(const char *)text +- (void)setPlaceHolder:(const char*)text { self.textInput.ccui_placeholder = [NSString stringWithUTF8String:text]; } @@ -282,14 +297,15 @@ - (void)setTextColor:(NSColor*)color self.textInput.ccui_textColor = color; } -- (void)setFont:(NSFont *)font +- (void)setFont:(NSFont*)font { - if (font != nil) { + if (font != nil) + { self.textInput.ccui_font = font; } } -- (void)setPlaceholderFontColor:(NSColor *)color +- (void)setPlaceholderFontColor:(NSColor*)color { self.textInput.ccui_placeholderColor = color; } @@ -299,70 +315,76 @@ - (void)setPlaceholderFont:(NSFont*)font self.textInput.ccui_placeholderFont = font; } -- (void)setText:(NSString *)text +- (void)setText:(NSString*)text { self.textInput.ccui_text = text; } -- (BOOL)textShouldBeginEditing:(NSText *)textObject // YES means do it +- (BOOL)textShouldBeginEditing:(NSText*)textObject // YES means do it { _editState = YES; - + getEditBoxImplMac()->editBoxEditingDidBegin(); return YES; } -- (void)textDidEndEditing:(NSNotification *)notification +- (void)textDidEndEditing:(NSNotification*)notification { _editState = NO; getEditBoxImplMac()->editBoxEditingDidEnd([self getText], [self getEndAction:notification]); } -- (cocos2d::ui::EditBoxDelegate::EditBoxEndAction)getEndAction:(NSNotification *)notification +- (cocos2d::ui::EditBoxDelegate::EditBoxEndAction)getEndAction:(NSNotification*)notification { - auto type = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::UNKNOWN; + auto type = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::UNKNOWN; NSUInteger reasonForEnding = [[[notification userInfo] objectForKey:@"NSTextMovement"] unsignedIntValue]; - if (reasonForEnding == NSTabTextMovement) { + if (reasonForEnding == NSTabTextMovement) + { type = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::TAB_TO_NEXT; - } else if (reasonForEnding == NSBacktabTextMovement) { + } + else if (reasonForEnding == NSBacktabTextMovement) + { type = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::TAB_TO_PREVIOUS; - } else if (reasonForEnding == NSReturnTextMovement) { + } + else if (reasonForEnding == NSReturnTextMovement) + { type = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::RETURN; } return type; } -- (void)textDidChange:(NSNotification *)notification +- (void)textDidChange:(NSNotification*)notification { NSTextView* textView = notification.object; - + const char* inputText = [textView.string UTF8String]; - + getEditBoxImplMac()->editBoxEditingChanged(inputText); } -- (BOOL)textView:(NSTextView *)textView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString +- (BOOL)textView:(NSTextView*)textView + shouldChangeTextInRange:(NSRange)affectedCharRange + replacementString:(NSString*)replacementString { int maxLength = getEditBoxImplMac()->getMaxLength(); if (maxLength < 0) { return YES; } - - if (affectedCharRange.length + affectedCharRange.location > textView.string.length) { + + if (affectedCharRange.length + affectedCharRange.location > textView.string.length) + { return NO; } - - NSUInteger oldLength = textView.string.length; + + NSUInteger oldLength = textView.string.length; NSUInteger replacementLength = replacementString.length; - NSUInteger rangeLength = affectedCharRange.length; - + NSUInteger rangeLength = affectedCharRange.length; + NSUInteger newLength = oldLength - rangeLength + replacementLength; - + return newLength <= maxLength; } - - @end diff --git a/cocos/ui/UIEditBox/UIEditBox.h b/cocos/ui/UIEditBox/UIEditBox.h index 2ecb082d6205..990e4ab84358 100644 --- a/cocos/ui/UIEditBox/UIEditBox.h +++ b/cocos/ui/UIEditBox/UIEditBox.h @@ -224,7 +224,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate std::string_view normalImage, std::string_view pressedImage = "", std::string_view disabledImage = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Constructor. @@ -284,7 +284,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate std::string_view normalImage, std::string_view pressedImage = "", std::string_view disabledImage = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Load textures for edit box. @@ -297,7 +297,7 @@ class CC_GUI_DLL EditBox : public Widget, public IMEDelegate void loadTextures(std::string_view normal, std::string_view pressed, std::string_view disabled = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Load normal state texture for edit box. diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-ios.mm b/cocos/ui/UIEditBox/UIEditBoxImpl-ios.mm index 9ac548fd8398..862e73f88b23 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-ios.mm +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-ios.mm @@ -3,19 +3,19 @@ Copyright (c) 2012 James Chen Copyright (c) 2013-2015 zilongshanren Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,43 +28,38 @@ of this software and associated documentation files (the "Software"), to deal #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#define kLabelZOrder 9999 +# define kLabelZOrder 9999 -#include "ui/UIEditBox/UIEditBox.h" -#include "base/CCDirector.h" -#include "2d/CCLabel.h" -#import "platform/ios/CCEAGLView-ios.h" +# include "ui/UIEditBox/UIEditBox.h" +# include "base/CCDirector.h" +# include "2d/CCLabel.h" +# import "platform/ios/CCEAGLView-ios.h" -#import -#import +# import +# import -#import "ui/UIEditBox/iOS/CCUIEditBoxIOS.h" - -#define getEditBoxImplIOS() ((cocos2d::ui::EditBoxImplIOS *)_editBox) +# import "ui/UIEditBox/iOS/CCUIEditBoxIOS.h" +# define getEditBoxImplIOS() ((cocos2d::ui::EditBoxImplIOS*)_editBox) NS_CC_BEGIN -namespace ui { +namespace ui +{ EditBoxImpl* __createSystemEditBox(EditBox* pEditBox) { return new EditBoxImplIOS(pEditBox); } -EditBoxImplIOS::EditBoxImplIOS(EditBox* pEditText) -: EditBoxImplCommon(pEditText) -, _systemControl(nullptr) -{ - -} +EditBoxImplIOS::EditBoxImplIOS(EditBox* pEditText) : EditBoxImplCommon(pEditText), _systemControl(nullptr) {} EditBoxImplIOS::~EditBoxImplIOS() { [_systemControl release]; _systemControl = nil; } - + void EditBoxImplIOS::createNativeControl(const Rect& frame) { auto glview = cocos2d::Director::getInstance()->getOpenGLView(); @@ -75,13 +70,10 @@ of this software and associated documentation files (the "Software"), to deal rect.size.width /= factor; rect.size.height /= factor; - - _systemControl = [[UIEditBoxImplIOS_objc alloc] initWithFrame:CGRectMake(rect.origin.x, - rect.origin.y, - rect.size.width, - rect.size.height) - editBox:this]; + _systemControl = [[UIEditBoxImplIOS_objc alloc] + initWithFrame:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) + editBox:this]; } bool EditBoxImplIOS::isEditing() @@ -91,32 +83,34 @@ of this software and associated documentation files (the "Software"), to deal void EditBoxImplIOS::doAnimationWhenKeyboardMove(float duration, float distance) { - if ([_systemControl isEditState] || distance < 0.0f) { + if ([_systemControl isEditState] || distance < 0.0f) + { [_systemControl doAnimationWhenKeyboardMoveWithDuration:duration distance:distance]; } } - + void EditBoxImplIOS::setNativeFont(const char* pFontName, int fontSize) { UIFont* textFont = constructFont(pFontName, fontSize); - if (textFont != nil) { + if (textFont != nil) + { [_systemControl setFont:textFont]; } } - + void EditBoxImplIOS::setNativeFontColor(const Color4B& color) { _systemControl.textColor = [UIColor colorWithRed:color.r / 255.0f - green:color.g / 255.0f - blue:color.b / 255.0f - alpha:color.a / 255.f]; - + green:color.g / 255.0f + blue:color.b / 255.0f + alpha:color.a / 255.f]; } void EditBoxImplIOS::setNativePlaceholderFont(const char* pFontName, int fontSize) { UIFont* textFont = constructFont(pFontName, fontSize); - if (textFont != nil) { + if (textFont != nil) + { [_systemControl setPlaceholderFont:textFont]; } } @@ -124,9 +118,9 @@ of this software and associated documentation files (the "Software"), to deal void EditBoxImplIOS::setNativePlaceholderFontColor(const Color4B& color) { [_systemControl setPlaceholderTextColor:[UIColor colorWithRed:color.r / 255.0f - green:color.g / 255.0f - blue:color.b / 255.0f - alpha:color.a / 255.f]]; + green:color.g / 255.0f + blue:color.b / 255.0f + alpha:color.a / 255.f]]; } void EditBoxImplIOS::setNativeInputMode(EditBox::InputMode inputMode) @@ -134,7 +128,7 @@ of this software and associated documentation files (the "Software"), to deal [_systemControl setInputMode:inputMode]; auto oldPos = _editBox->getPosition(); - _editBox->setPosition(oldPos + Vec2(10,10)); + _editBox->setPosition(oldPos + Vec2(10, 10)); _editBox->setPosition(oldPos); } @@ -142,7 +136,7 @@ of this software and associated documentation files (the "Software"), to deal { [_systemControl setInputFlag:inputFlag]; } - + NSString* removeSiriString(NSString* str) { NSString* siriString = @"\xef\xbf\xbc"; @@ -154,7 +148,6 @@ of this software and associated documentation files (the "Software"), to deal return [removeSiriString(_systemControl.text) UTF8String]; } - void EditBoxImplIOS::setNativeReturnType(EditBox::KeyboardReturnType returnType) { [_systemControl setReturnType:returnType]; @@ -167,8 +160,9 @@ of this software and associated documentation files (the "Software"), to deal void EditBoxImplIOS::setNativeText(const char* pText) { - NSString* nsText =[NSString stringWithUTF8String:pText]; - if ([nsText compare:_systemControl.text] != NSOrderedSame) { + NSString* nsText = [NSString stringWithUTF8String:pText]; + if ([nsText compare:_systemControl.text] != NSOrderedSame) + { _systemControl.text = nsText; } } @@ -185,16 +179,13 @@ of this software and associated documentation files (the "Software"), to deal void EditBoxImplIOS::updateNativeFrame(const Rect& rect) { - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *) glview->getEAGLView(); + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)glview->getEAGLView(); float factor = eaglview.contentScaleFactor; - - [_systemControl updateFrame:CGRectMake(rect.origin.x / factor, - rect.origin.y / factor, - rect.size.width / factor, - rect.size.height / factor)]; + [_systemControl updateFrame:CGRectMake(rect.origin.x / factor, rect.origin.y / factor, rect.size.width / factor, + rect.size.height / factor)]; } const char* EditBoxImplIOS::getNativeDefaultFontName() @@ -213,33 +204,34 @@ of this software and associated documentation files (the "Software"), to deal { [_systemControl closeKeyboard]; } - -UIFont* EditBoxImplIOS::constructFont(const char *fontName, int fontSize) + +UIFont* EditBoxImplIOS::constructFont(const char* fontName, int fontSize) { CCASSERT(fontName != nullptr, "fontName can't be nullptr"); - CCEAGLView *eaglview = static_cast(cocos2d::Director::getInstance()->getOpenGLView()->getEAGLView()); - float retinaFactor = eaglview.contentScaleFactor; - NSString * fntName = [NSString stringWithUTF8String:fontName]; - + CCEAGLView* eaglview = static_cast(cocos2d::Director::getInstance()->getOpenGLView()->getEAGLView()); + float retinaFactor = eaglview.contentScaleFactor; + NSString* fntName = [NSString stringWithUTF8String:fontName]; + fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; - - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); float scaleFactor = glview->getScaleX(); - + if (fontSize == -1) { - fontSize = _systemControl.frameRect.size.height*2/3; + fontSize = _systemControl.frameRect.size.height * 2 / 3; } else { fontSize = fontSize * scaleFactor / retinaFactor; } - - UIFont *textFont = nil; + + UIFont* textFont = nil; if (strlen(fontName) > 0) { textFont = [UIFont fontWithName:fntName size:fontSize]; - if (textFont == nil) { + if (textFont == nil) + { textFont = [UIFont systemFontOfSize:fontSize]; } } @@ -254,5 +246,3 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_END #endif /* #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) */ - - diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm b/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm index 50099ae059a2..800f9c916bf7 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2012 Jozef Pridavok Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,24 +27,23 @@ of this software and associated documentation files (the "Software"), to deal #include "platform/CCPlatformConfig.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) -#include "ui/UIEditBox/UIEditBoxImpl-mac.h" -#include "base/CCDirector.h" -#include "base/ccUTF8.h" -#include "ui/UIEditBox/UIEditBox.h" -#include "ui/UIEditBox/Mac/CCUIEditBoxMac.h" +# include "ui/UIEditBox/UIEditBoxImpl-mac.h" +# include "base/CCDirector.h" +# include "base/ccUTF8.h" +# include "ui/UIEditBox/UIEditBox.h" +# include "ui/UIEditBox/Mac/CCUIEditBoxMac.h" NS_CC_BEGIN -namespace ui { +namespace ui +{ EditBoxImpl* __createSystemEditBox(EditBox* pEditBox) { return new EditBoxImplMac(pEditBox); } -EditBoxImplMac::EditBoxImplMac(EditBox* pEditText) -: EditBoxImplCommon(pEditText) -, _sysEdit(nullptr) +EditBoxImplMac::EditBoxImplMac(EditBox* pEditText) : EditBoxImplCommon(pEditText), _sysEdit(nullptr) { //! TODO: Retina on Mac //! _inRetinaMode = [[CCEAGLView sharedEGLView] contentScaleFactor] == 2.0f ? true : false; @@ -56,42 +55,40 @@ of this software and associated documentation files (the "Software"), to deal [_sysEdit release]; } -void EditBoxImplMac::createNativeControl(const cocos2d::Rect &frame) +void EditBoxImplMac::createNativeControl(const cocos2d::Rect& frame) { auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - Size size = frame.size; - NSRect rect = NSMakeRect(0, 0, - size.width * glview->getScaleX(), - size.height * glview->getScaleY()); - + Size size = frame.size; + NSRect rect = NSMakeRect(0, 0, size.width * glview->getScaleX(), size.height * glview->getScaleY()); + float factor = cocos2d::Director::getInstance()->getContentScaleFactor(); - + rect.size.width /= factor; rect.size.height /= factor; - + _sysEdit = [[UIEditBoxImplMac alloc] initWithFrame:rect editBox:this]; this->setNativeVisible(false); } - -NSFont* EditBoxImplMac::constructFont(const char *fontName, int fontSize) + +NSFont* EditBoxImplMac::constructFont(const char* fontName, int fontSize) { - NSString * fntName = [NSString stringWithUTF8String:fontName]; - fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; + NSString* fntName = [NSString stringWithUTF8String:fontName]; + fntName = [[fntName lastPathComponent] stringByDeletingPathExtension]; float retinaFactor = _inRetinaMode ? 2.0f : 1.0f; - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - float scaleFactor = glview->getScaleX(); - + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + float scaleFactor = glview->getScaleX(); + if (fontSize == -1) { NSRect frameRect = [_sysEdit.textInput frame]; - fontSize = frameRect.size.height*2/3; + fontSize = frameRect.size.height * 2 / 3; } else { fontSize = fontSize * scaleFactor / retinaFactor; } - - NSFont *textFont = nil; + + NSFont* textFont = nil; if (strlen(fontName) == 0) { textFont = [NSFont systemFontOfSize:fontSize]; @@ -99,47 +96,49 @@ of this software and associated documentation files (the "Software"), to deal else { textFont = [NSFont fontWithName:fntName size:fontSize]; - if (textFont == nil) { + if (textFont == nil) + { textFont = [NSFont systemFontOfSize:fontSize]; } } - + return textFont; } -void EditBoxImplMac::setNativeFont(const char *pFontName, int fontSize) +void EditBoxImplMac::setNativeFont(const char* pFontName, int fontSize) { NSFont* textFont = constructFont(pFontName, fontSize); [_sysEdit setFont:textFont]; } -void EditBoxImplMac::setNativePlaceholderFont(const char *pFontName, int fontSize) +void EditBoxImplMac::setNativePlaceholderFont(const char* pFontName, int fontSize) { - NSFont *textFont = constructFont(pFontName, fontSize); - - if (!textFont) { + NSFont* textFont = constructFont(pFontName, fontSize); + + if (!textFont) + { CCLOGWARN("Font not found: %s", pFontName); return; } [_sysEdit setPlaceholderFont:textFont]; } -void EditBoxImplMac::setNativeFontColor(const cocos2d::Color4B &color) +void EditBoxImplMac::setNativeFontColor(const cocos2d::Color4B& color) { - NSColor *newColor = [NSColor colorWithCalibratedRed:color.r / 255.0f + NSColor* newColor = [NSColor colorWithCalibratedRed:color.r / 255.0f green:color.g / 255.0f blue:color.b / 255.0f alpha:color.a / 255.f]; [_sysEdit setTextColor:newColor]; } - -void EditBoxImplMac::setNativePlaceholderFontColor(const cocos2d::Color4B &color) + +void EditBoxImplMac::setNativePlaceholderFontColor(const cocos2d::Color4B& color) { - NSColor *newColor = [NSColor colorWithCalibratedRed:color.r/255.f - green:color.g / 255.f - blue:color.b / 255.f - alpha:color.a / 255.f]; + NSColor* newColor = [NSColor colorWithCalibratedRed:color.r / 255.f + green:color.g / 255.f + blue:color.b / 255.f + alpha:color.a / 255.f]; [_sysEdit setPlaceholderFontColor:newColor]; } @@ -147,7 +146,7 @@ of this software and associated documentation files (the "Software"), to deal { [_sysEdit setInputMode:inputMode]; auto oldPosition = _editBox->getPosition(); - _editBox->setPosition(_editBox->getPosition() + Vec2(10,10)); + _editBox->setPosition(_editBox->getPosition() + Vec2(10, 10)); _editBox->setPosition(oldPosition); } @@ -156,7 +155,6 @@ of this software and associated documentation files (the "Software"), to deal [_sysEdit setMaxLength:maxLength]; } - void EditBoxImplMac::setNativeInputFlag(EditBox::InputFlag inputFlag) { [_sysEdit setInputFlag:inputFlag]; @@ -177,12 +175,12 @@ of this software and associated documentation files (the "Software"), to deal return [_sysEdit isEditState] ? true : false; } -void EditBoxImplMac::setNativeText(const char *pText) +void EditBoxImplMac::setNativeText(const char* pText) { - NSString *text = [NSString stringWithUTF8String:pText]; + NSString* text = [NSString stringWithUTF8String:pText]; [_sysEdit setText:text]; } - + void EditBoxImplMac::setNativePlaceHolder(const char* pText) { [_sysEdit setPlaceHolder:pText]; @@ -193,24 +191,21 @@ of this software and associated documentation files (the "Software"), to deal [_sysEdit setVisible:visible]; } -void EditBoxImplMac::updateNativeFrame(const cocos2d::Rect &rect) +void EditBoxImplMac::updateNativeFrame(const cocos2d::Rect& rect) { GLView* eglView = Director::getInstance()->getOpenGLView(); - auto frameSize = eglView->getFrameSize(); + auto frameSize = eglView->getFrameSize(); // Coordinate System on OSX has its origin at the lower left corner. -// https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/CoordinateSystem.html + // https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/CoordinateSystem.html auto screenPosY = frameSize.height - rect.origin.y - rect.size.height; - [_sysEdit updateFrame:CGRectMake(rect.origin.x, - screenPosY, - rect.size.width, rect.size.height)]; + [_sysEdit updateFrame:CGRectMake(rect.origin.x, screenPosY, rect.size.width, rect.size.height)]; } - + const char* EditBoxImplMac::getNativeDefaultFontName() { return [[_sysEdit getDefaultFontName] UTF8String]; } - void EditBoxImplMac::nativeOpenKeyboard() { [_sysEdit setVisible:YES]; @@ -226,6 +221,4 @@ of this software and associated documentation files (the "Software"), to deal NS_CC_END -#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - - +#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) diff --git a/cocos/ui/UIEditBox/iOS/CCUIEditBoxIOS.mm b/cocos/ui/UIEditBox/iOS/CCUIEditBoxIOS.mm index eb33fd0a2bdd..134e0a540f7f 100644 --- a/cocos/ui/UIEditBox/iOS/CCUIEditBoxIOS.mm +++ b/cocos/ui/UIEditBox/iOS/CCUIEditBoxIOS.mm @@ -4,19 +4,19 @@ Copyright (c) 2013-2015 zilongshanren Copyright (c) 2015 Mazyad Alabduljaleel Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,8 +33,7 @@ of this software and associated documentation files (the "Software"), to deal #import "platform/ios/CCEAGLView-ios.h" #include "base/CCDirector.h" -#define getEditBoxImplIOS() ((cocos2d::ui::EditBoxImplIOS *)_editBox) - +#define getEditBoxImplIOS() ((cocos2d::ui::EditBoxImplIOS*)_editBox) @implementation UIEditBoxImplIOS_objc @@ -43,27 +42,28 @@ @implementation UIEditBoxImplIOS_objc + (void)initialize { [super initialize]; - + LoadUITextViewCCUITextInputCategory(); LoadUITextFieldCCUITextInputCategory(); } #pragma mark - Init & Dealloc -- (instancetype)initWithFrame:(CGRect)frameRect editBox:(void *)editBox +- (instancetype)initWithFrame:(CGRect)frameRect editBox:(void*)editBox { self = [super init]; - if (self) { - - _editState = NO; - self.frameRect = frameRect; - self.editBox = editBox; - self.dataInputMode = cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS; + if (self) + { + + _editState = NO; + self.frameRect = frameRect; + self.editBox = editBox; + self.dataInputMode = cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS; self.keyboardReturnType = cocos2d::ui::EditBox::KeyboardReturnType::DEFAULT; - + [self createMultiLineTextField]; } - + return self; } @@ -71,38 +71,39 @@ - (void)dealloc { // custom setter cleanup self.textInput = nil; - + [super dealloc]; } #pragma mark - Properties -- (void)setTextInput:(UIView *)textInput +- (void)setTextInput:(UIView*)textInput { - if (_textInput == textInput) { + if (_textInput == textInput) + { return; } - + // common init textInput.backgroundColor = [UIColor clearColor]; - textInput.hidden = true; - textInput.returnKeyType = UIReturnKeyDefault; + textInput.hidden = true; + textInput.returnKeyType = UIReturnKeyDefault; [textInput ccui_setDelegate:self]; - + // Migrate properties - textInput.ccui_textColor = _textInput.ccui_textColor ?: [UIColor whiteColor]; - textInput.ccui_text = _textInput.ccui_text ?: @""; + textInput.ccui_textColor = _textInput.ccui_textColor ?: [UIColor whiteColor]; + textInput.ccui_text = _textInput.ccui_text ?: @""; textInput.ccui_placeholder = _textInput.ccui_placeholder ?: @""; - textInput.ccui_font = _textInput.ccui_font ?: [UIFont systemFontOfSize:self.frameRect.size.height*2/3]; - textInput.ccui_placeholderFont = _textInput.ccui_placeholderFont ?: textInput.ccui_font; + textInput.ccui_font = _textInput.ccui_font ?: [UIFont systemFontOfSize:self.frameRect.size.height * 2 / 3]; + textInput.ccui_placeholderFont = _textInput.ccui_placeholderFont ?: textInput.ccui_font; textInput.ccui_placeholderTextColor = _textInput.ccui_placeholderTextColor ?: [UIColor lightGrayColor]; - + [_textInput resignFirstResponder]; [_textInput removeFromSuperview]; [_textInput release]; - + _textInput = [textInput retain]; - + [self setInputFlag:self.dataInputMode]; [self setReturnType:self.keyboardReturnType]; } @@ -111,24 +112,24 @@ - (void)setTextInput:(UIView *)textInput - (void)createSingleLineTextField { - CCUISingleLineTextField *textField = [[[CCUISingleLineTextField alloc] initWithFrame:self.frameRect] autorelease]; + CCUISingleLineTextField* textField = [[[CCUISingleLineTextField alloc] initWithFrame:self.frameRect] autorelease]; textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - textField.borderStyle = UITextBorderStyleNone; - + textField.borderStyle = UITextBorderStyleNone; + [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged]; - + self.textInput = textField; } - (void)createMultiLineTextField { - CCUIMultilineTextField *textView = [[[CCUIMultilineTextField alloc] initWithFrame:self.frameRect] autorelease]; - self.textInput = textView; + CCUIMultilineTextField* textView = [[[CCUIMultilineTextField alloc] initWithFrame:self.frameRect] autorelease]; + self.textInput = textView; } #pragma mark - Public methods -- (void)setFont:(UIFont *)font +- (void)setFont:(UIFont*)font { self.textInput.ccui_font = font; } @@ -138,53 +139,57 @@ - (void)setTextColor:(UIColor*)color self.textInput.ccui_textColor = color; } -- (void)setPlaceholderFont:(UIFont *)font +- (void)setPlaceholderFont:(UIFont*)font { self.textInput.ccui_placeholderFont = font; } -- (void)setPlaceholderTextColor:(UIColor *)color +- (void)setPlaceholderTextColor:(UIColor*)color { self.textInput.ccui_placeholderTextColor = color; } - (void)setInputMode:(cocos2d::ui::EditBox::InputMode)inputMode { - //multiline input - if (inputMode == cocos2d::ui::EditBox::InputMode::ANY) { - if (![self.textInput isKindOfClass:[UITextView class]]) { + // multiline input + if (inputMode == cocos2d::ui::EditBox::InputMode::ANY) + { + if (![self.textInput isKindOfClass:[UITextView class]]) + { [self createMultiLineTextField]; } } - else { - if (![self.textInput isKindOfClass:[UITextField class]]) { + else + { + if (![self.textInput isKindOfClass:[UITextField class]]) + { [self createSingleLineTextField]; } } - + switch (inputMode) { - case cocos2d::ui::EditBox::InputMode::EMAIL_ADDRESS: - self.keyboardType = UIKeyboardTypeEmailAddress; - break; - case cocos2d::ui::EditBox::InputMode::NUMERIC: - self.keyboardType = UIKeyboardTypeDecimalPad; - break; - case cocos2d::ui::EditBox::InputMode::PHONE_NUMBER: - self.keyboardType = UIKeyboardTypePhonePad; - break; - case cocos2d::ui::EditBox::InputMode::URL: - self.keyboardType = UIKeyboardTypeURL; - break; - case cocos2d::ui::EditBox::InputMode::DECIMAL: - self.keyboardType = UIKeyboardTypeDecimalPad; - break; - case cocos2d::ui::EditBox::InputMode::SINGLE_LINE: - self.keyboardType = UIKeyboardTypeDefault; - break; - default: - self.keyboardType = UIKeyboardTypeDefault; - break; + case cocos2d::ui::EditBox::InputMode::EMAIL_ADDRESS: + self.keyboardType = UIKeyboardTypeEmailAddress; + break; + case cocos2d::ui::EditBox::InputMode::NUMERIC: + self.keyboardType = UIKeyboardTypeDecimalPad; + break; + case cocos2d::ui::EditBox::InputMode::PHONE_NUMBER: + self.keyboardType = UIKeyboardTypePhonePad; + break; + case cocos2d::ui::EditBox::InputMode::URL: + self.keyboardType = UIKeyboardTypeURL; + break; + case cocos2d::ui::EditBox::InputMode::DECIMAL: + self.keyboardType = UIKeyboardTypeDecimalPad; + break; + case cocos2d::ui::EditBox::InputMode::SINGLE_LINE: + self.keyboardType = UIKeyboardTypeDefault; + break; + default: + self.keyboardType = UIKeyboardTypeDefault; + break; } } @@ -198,67 +203,68 @@ - (void)setInputFlag:(cocos2d::ui::EditBox::InputFlag)flag self.dataInputMode = flag; switch (flag) { - case cocos2d::ui::EditBox::InputFlag::PASSWORD: - //textView can't be used for input password - self.textInput.ccui_secureTextEntry = YES; - break; - - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD: - self.textInput.autocapitalizationType = UITextAutocapitalizationTypeWords; - break; - - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE: - self.textInput.autocapitalizationType = UITextAutocapitalizationTypeSentences; - break; - - case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS: - self.textInput.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; - break; - - case cocos2d::ui::EditBox::InputFlag::SENSITIVE: - self.textInput.autocorrectionType = UITextAutocorrectionTypeNo; - break; - - case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS: - self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone; - break; - - default: - break; + case cocos2d::ui::EditBox::InputFlag::PASSWORD: + // textView can't be used for input password + self.textInput.ccui_secureTextEntry = YES; + break; + + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD: + self.textInput.autocapitalizationType = UITextAutocapitalizationTypeWords; + break; + + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE: + self.textInput.autocapitalizationType = UITextAutocapitalizationTypeSentences; + break; + + case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS: + self.textInput.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters; + break; + + case cocos2d::ui::EditBox::InputFlag::SENSITIVE: + self.textInput.autocorrectionType = UITextAutocorrectionTypeNo; + break; + + case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS: + self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone; + break; + + default: + break; } } - (void)setReturnType:(cocos2d::ui::EditBox::KeyboardReturnType)returnType { self.keyboardReturnType = returnType; - switch (returnType) { - case cocos2d::ui::EditBox::KeyboardReturnType::DEFAULT: - self.textInput.returnKeyType = UIReturnKeyDefault; - break; - - case cocos2d::ui::EditBox::KeyboardReturnType::DONE: - self.textInput.returnKeyType = UIReturnKeyDone; - break; - - case cocos2d::ui::EditBox::KeyboardReturnType::SEND: - self.textInput.returnKeyType = UIReturnKeySend; - break; - - case cocos2d::ui::EditBox::KeyboardReturnType::SEARCH: - self.textInput.returnKeyType = UIReturnKeySearch; - break; - - case cocos2d::ui::EditBox::KeyboardReturnType::GO: - self.textInput.returnKeyType = UIReturnKeyGo; - break; - - case cocos2d::ui::EditBox::KeyboardReturnType::NEXT: - self.textInput.returnKeyType = UIReturnKeyNext; - break; - - default: - self.textInput.returnKeyType = UIReturnKeyDefault; - break; + switch (returnType) + { + case cocos2d::ui::EditBox::KeyboardReturnType::DEFAULT: + self.textInput.returnKeyType = UIReturnKeyDefault; + break; + + case cocos2d::ui::EditBox::KeyboardReturnType::DONE: + self.textInput.returnKeyType = UIReturnKeyDone; + break; + + case cocos2d::ui::EditBox::KeyboardReturnType::SEND: + self.textInput.returnKeyType = UIReturnKeySend; + break; + + case cocos2d::ui::EditBox::KeyboardReturnType::SEARCH: + self.textInput.returnKeyType = UIReturnKeySearch; + break; + + case cocos2d::ui::EditBox::KeyboardReturnType::GO: + self.textInput.returnKeyType = UIReturnKeyGo; + break; + + case cocos2d::ui::EditBox::KeyboardReturnType::NEXT: + self.textInput.returnKeyType = UIReturnKeyNext; + break; + + default: + self.textInput.returnKeyType = UIReturnKeyDefault; + break; } } @@ -267,12 +273,12 @@ - (void)setTextHorizontalAlignment:(cocos2d::TextHAlignment)alignment self.textInput.ccui_alignment = static_cast(alignment); } -- (void)setText:(NSString *)text +- (void)setText:(NSString*)text { self.textInput.ccui_text = text; } -- (NSString *)text +- (NSString*)text { return self.textInput.ccui_text ?: @""; } @@ -282,7 +288,7 @@ - (void)setVisible:(BOOL)visible self.textInput.hidden = !visible; } -- (NSString *)getDefaultFontName +- (NSString*)getDefaultFontName { return self.textInput.ccui_font.fontName ?: @""; } @@ -290,28 +296,32 @@ - (NSString *)getDefaultFontName - (cocos2d::ui::EditBoxDelegate::EditBoxEndAction)getEndAction { cocos2d::ui::EditBoxDelegate::EditBoxEndAction action = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::UNKNOWN; - if (self.returnPressed) { - if (self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::NEXT) { + if (self.returnPressed) + { + if (self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::NEXT) + { action = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::TAB_TO_NEXT; - } else if (self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::GO || - self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::SEND || - self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::SEARCH) { + } + else if (self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::GO || + self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::SEND || + self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::SEARCH) + { action = cocos2d::ui::EditBoxDelegate::EditBoxEndAction::RETURN; } } return action; } -- (void)setPlaceHolder:(NSString *)text +- (void)setPlaceHolder:(NSString*)text { self.textInput.ccui_placeholder = text; } - (void)doAnimationWhenKeyboardMoveWithDuration:(float)duration distance:(float)distance { - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *)view->getEAGLView(); - + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)view->getEAGLView(); + [eaglview doAnimationWhenKeyboardMoveWithDuration:duration distance:distance]; } @@ -319,16 +329,16 @@ - (void)updateFrame:(CGRect)rect { CGRect frame = self.textInput.frame; frame.origin = rect.origin; - frame.size = rect.size; - + frame.size = rect.size; + self.textInput.frame = frame; } - (void)openKeyboard { - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *)view->getEAGLView(); - + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)view->getEAGLView(); + [eaglview addSubview:self.textInput]; [self.textInput becomeFirstResponder]; } @@ -339,9 +349,10 @@ - (void)closeKeyboard [self.textInput removeFromSuperview]; } -- (BOOL)textFieldShouldReturn:(UITextField *)sender +- (BOOL)textFieldShouldReturn:(UITextField*)sender { - if (sender == self.textInput) { + if (sender == self.textInput) + { self.returnPressed = YES; [sender resignFirstResponder]; } @@ -350,32 +361,33 @@ - (BOOL)textFieldShouldReturn:(UITextField *)sender - (void)animationSelector { - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *)view->getEAGLView(); - + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)view->getEAGLView(); + [eaglview doAnimationWhenAnotherEditBeClicked]; } #pragma mark - UITextView delegate methods -- (BOOL)textViewShouldBeginEditing:(UITextView *)textView +- (BOOL)textViewShouldBeginEditing:(UITextView*)textView { CCLOG("textFieldShouldBeginEditing..."); - _editState = YES; + _editState = YES; _returnPressed = NO; - - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *) view->getEAGLView(); - - if ([eaglview isKeyboardShown]) { + + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)view->getEAGLView(); + + if ([eaglview isKeyboardShown]) + { [self performSelector:@selector(animationSelector) withObject:nil afterDelay:0.0f]; } - + getEditBoxImplIOS()->editBoxEditingDidBegin(); return YES; } -- (BOOL)textViewShouldEndEditing:(UITextView *)textView +- (BOOL)textViewShouldEndEditing:(UITextView*)textView { CCLOG("textFieldShouldEndEditing..."); _editState = NO; @@ -383,94 +395,99 @@ - (BOOL)textViewShouldEndEditing:(UITextView *)textView const char* inputText = [textView.text UTF8String]; getEditBoxImplIOS()->editBoxEditingDidEnd(inputText, [self getEndAction]); - + return YES; } -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text +- (BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text { - if ( self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::DONE && - [text isEqualToString: @"\n"] ) + if (self.keyboardReturnType == cocos2d::ui::EditBox::KeyboardReturnType::DONE && [text isEqualToString:@"\n"]) { [self closeKeyboard]; } - + int maxLength = getEditBoxImplIOS()->getMaxLength(); if (maxLength < 0) { return YES; } - - // Prevent crashing undo bug http://stackoverflow.com/questions/433337/set-the-maximum-character-length-of-a-uitextfield - if (range.length + range.location > textView.text.length) { + + // Prevent crashing undo bug + // http://stackoverflow.com/questions/433337/set-the-maximum-character-length-of-a-uitextfield + if (range.length + range.location > textView.text.length) + { return NO; } - - NSUInteger oldLength = textView.text.length; + + NSUInteger oldLength = textView.text.length; NSUInteger replacementLength = text.length; - NSUInteger rangeLength = range.length; - + NSUInteger rangeLength = range.length; + NSUInteger newLength = oldLength - rangeLength + replacementLength; - + return newLength <= maxLength; } -- (void)textViewDidChange:(UITextView *)textView +- (void)textViewDidChange:(UITextView*)textView { int maxLength = getEditBoxImplIOS()->getMaxLength(); - if (textView.markedTextRange == nil) { - if (textView.text.length > maxLength) { + if (textView.markedTextRange == nil) + { + if (textView.text.length > maxLength) + { textView.text = [textView.text substringToIndex:maxLength]; } - + const char* inputText = [textView.text UTF8String]; getEditBoxImplIOS()->editBoxEditingChanged(inputText); } } - #pragma mark - UITextField delegate methods /** * Called each time when the text field's text has changed. */ -- (void)textChanged:(UITextField *)textField +- (void)textChanged:(UITextField*)textField { int maxLength = getEditBoxImplIOS()->getMaxLength(); - if (textField.markedTextRange == nil) { - if (textField.text.length > maxLength) { + if (textField.markedTextRange == nil) + { + if (textField.text.length > maxLength) + { textField.text = [textField.text substringToIndex:maxLength]; } - + const char* inputText = [textField.text UTF8String]; getEditBoxImplIOS()->editBoxEditingChanged(inputText); } } -- (BOOL)textFieldShouldBeginEditing:(UITextField *)sender // return NO to disallow editing. +- (BOOL)textFieldShouldBeginEditing:(UITextField*)sender // return NO to disallow editing. { CCLOG("textFieldShouldBeginEditing..."); - _editState = YES; + _editState = YES; _returnPressed = NO; - - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - CCEAGLView *eaglview = (CCEAGLView *)view->getEAGLView(); - - if ([eaglview isKeyboardShown]) { + + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + CCEAGLView* eaglview = (CCEAGLView*)view->getEAGLView(); + + if ([eaglview isKeyboardShown]) + { [self performSelector:@selector(animationSelector) withObject:nil afterDelay:0.0f]; } - + getEditBoxImplIOS()->editBoxEditingDidBegin(); return YES; } -- (BOOL)textFieldShouldEndEditing:(UITextField *)sender +- (BOOL)textFieldShouldEndEditing:(UITextField*)sender { CCLOG("textFieldShouldEndEditing..."); - _editState = NO; + _editState = NO; const char* inputText = [sender.text UTF8String]; getEditBoxImplIOS()->editBoxEditingDidEnd(inputText, [self getEndAction]); - + return YES; } @@ -481,24 +498,29 @@ - (BOOL)textFieldShouldEndEditing:(UITextField *)sender * @param string The replacement string. * @return YES if the specified text range should be replaced; otherwise, NO to keep the old text. */ -- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string +- (BOOL)textField:(UITextField*)textField + shouldChangeCharactersInRange:(NSRange)range + replacementString:(NSString*)string { int maxLength = getEditBoxImplIOS()->getMaxLength(); - if (maxLength < 0) { + if (maxLength < 0) + { return YES; } - - // Prevent crashing undo bug http://stackoverflow.com/questions/433337/set-the-maximum-character-length-of-a-uitextfield - if (range.length + range.location > textField.text.length) { + + // Prevent crashing undo bug + // http://stackoverflow.com/questions/433337/set-the-maximum-character-length-of-a-uitextfield + if (range.length + range.location > textField.text.length) + { return NO; } - - NSUInteger oldLength = textField.text.length; + + NSUInteger oldLength = textField.text.length; NSUInteger replacementLength = string.length; - NSUInteger rangeLength = range.length; - + NSUInteger rangeLength = range.length; + NSUInteger newLength = oldLength - rangeLength + replacementLength; - + return newLength <= maxLength; } diff --git a/cocos/ui/UIEditBox/iOS/CCUIMultilineTextField.mm b/cocos/ui/UIEditBox/iOS/CCUIMultilineTextField.mm index 0f84f752dc9c..d574b8269b4f 100644 --- a/cocos/ui/UIEditBox/iOS/CCUIMultilineTextField.mm +++ b/cocos/ui/UIEditBox/iOS/CCUIMultilineTextField.mm @@ -3,19 +3,19 @@ Copyright (c) 2012 James Chen Copyright (c) 2015 Mazyad Alabduljaleel Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,6 @@ of this software and associated documentation files (the "Software"), to deal */ CGFloat const UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION = 0.25; - @implementation CCUIMultilineTextField #pragma mark - Init & Dealloc @@ -42,8 +41,9 @@ @implementation CCUIMultilineTextField - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; - if (self) { - + if (self) + { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification @@ -55,51 +55,50 @@ - (instancetype)initWithFrame:(CGRect)frame - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - + [_placeHolderLabel release]; - + [super dealloc]; } #pragma mark - Properties -- (NSString *)placeholder +- (NSString*)placeholder { return self.placeHolderLabel.text; } -- (void)setPlaceholder:(NSString *)placeholder +- (void)setPlaceholder:(NSString*)placeholder { self.placeHolderLabel.text = placeholder; [self.placeHolderLabel sizeToFit]; } -- (void)setText:(NSString *)text +- (void)setText:(NSString*)text { [super setText:text]; [self textChanged:nil]; } -- (UILabel *)placeHolderLabel +- (UILabel*)placeHolderLabel { - if (_placeHolderLabel == nil) { - auto glview = cocos2d::Director::getInstance()->getOpenGLView(); + if (_placeHolderLabel == nil) + { + auto glview = cocos2d::Director::getInstance()->getOpenGLView(); float padding = CC_EDIT_BOX_PADDING * glview->getScaleX() / glview->getContentScaleFactor(); - _placeHolderLabel = [[UILabel alloc] initWithFrame:CGRectMake(padding, - padding, - self.bounds.size.width - padding * 2, - 0)]; - _placeHolderLabel.lineBreakMode = NSLineBreakByWordWrapping; - _placeHolderLabel.numberOfLines = 0; - _placeHolderLabel.font = self.font; + _placeHolderLabel = + [[UILabel alloc] initWithFrame:CGRectMake(padding, padding, self.bounds.size.width - padding * 2, 0)]; + _placeHolderLabel.lineBreakMode = NSLineBreakByWordWrapping; + _placeHolderLabel.numberOfLines = 0; + _placeHolderLabel.font = self.font; _placeHolderLabel.backgroundColor = [UIColor clearColor]; - _placeHolderLabel.textColor = [UIColor lightGrayColor]; - _placeHolderLabel.alpha = 0; - + _placeHolderLabel.textColor = [UIColor lightGrayColor]; + _placeHolderLabel.alpha = 0; + [self addSubview:_placeHolderLabel]; } - + return _placeHolderLabel; } @@ -108,7 +107,7 @@ - (UILabel *)placeHolderLabel - (CGRect)textRectForBounds:(CGRect)bounds { auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - + float padding = CC_EDIT_BOX_PADDING * glview->getScaleX() / glview->getContentScaleFactor(); return CGRectInset(bounds, padding, padding); } @@ -121,34 +120,37 @@ - (CGRect)editingRectForBounds:(CGRect)bounds - (void)layoutSubviews { [super layoutSubviews]; - - if (self.placeholder.length > 0) { + + if (self.placeholder.length > 0) + { [self sendSubviewToBack:self.placeHolderLabel]; } } - (void)drawRect:(CGRect)rect { - if (self.text.length == 0 && self.placeholder.length > 0) { + if (self.text.length == 0 && self.placeholder.length > 0) + { self.placeHolderLabel.alpha = 1; } - + [super drawRect:rect]; } #pragma mark - NSNotification Observers -- (void)textChanged:(NSNotification *)notification +- (void)textChanged:(NSNotification*)notification { - if (self.placeholder.length == 0) { + if (self.placeholder.length == 0) + { return; } - - [UIView animateWithDuration:UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION animations:^{ - - CGFloat alpha = (self.text.length == 0 ? 1 : 0); - self.placeHolderLabel.alpha = alpha; - }]; + + [UIView animateWithDuration:UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION + animations:^{ + CGFloat alpha = (self.text.length == 0 ? 1 : 0); + self.placeHolderLabel.alpha = alpha; + }]; } @end diff --git a/cocos/ui/UIEditBox/iOS/CCUISingleLineTextField.mm b/cocos/ui/UIEditBox/iOS/CCUISingleLineTextField.mm index 2c4b28e624cb..6a4e1b3f3c4c 100644 --- a/cocos/ui/UIEditBox/iOS/CCUISingleLineTextField.mm +++ b/cocos/ui/UIEditBox/iOS/CCUISingleLineTextField.mm @@ -3,19 +3,19 @@ Copyright (c) 2012 James Chen Copyright (c) 2015 Mazyad Alabduljaleel Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,6 @@ of this software and associated documentation files (the "Software"), to deal * http://stackoverflow.com/questions/18244790/changing-uitextfield-placeholder-font */ - @implementation CCUISingleLineTextField #pragma mark - Init & Dealloc @@ -49,29 +48,28 @@ - (void)dealloc #pragma mark - Properties -- (UIColor *)placeholderTextColor +- (UIColor*)placeholderTextColor { return _placeholderTextColor; } -- (UIFont *)placeholderFont +- (UIFont*)placeholderFont { return _placeholderFont; } #pragma mark - Public methods -- (void)drawPlaceholderInRect:(CGRect)rect { - NSDictionary *attributes = @{ - NSForegroundColorAttributeName:_placeholderTextColor, - NSFontAttributeName:_placeholderFont - }; - +- (void)drawPlaceholderInRect:(CGRect)rect +{ + NSDictionary* attributes = + @{NSForegroundColorAttributeName : _placeholderTextColor, NSFontAttributeName : _placeholderFont}; + // center vertically CGSize textSize = [self.placeholder sizeWithAttributes:attributes]; - CGFloat hdif = rect.size.height - textSize.height; - hdif = MAX(0, hdif); - rect.origin.y += ceil(hdif/2.0); + CGFloat hdif = rect.size.height - textSize.height; + hdif = MAX(0, hdif); + rect.origin.y += ceil(hdif / 2.0); [[self placeholder] drawInRect:rect withAttributes:attributes]; } @@ -79,7 +77,7 @@ - (void)drawPlaceholderInRect:(CGRect)rect { - (CGRect)textRectForBounds:(CGRect)bounds { auto glview = cocos2d::Director::getInstance()->getOpenGLView(); - + float padding = CC_EDIT_BOX_PADDING * glview->getScaleX() / glview->getContentScaleFactor(); return CGRectInset(bounds, padding, padding); } diff --git a/cocos/ui/UIEditBox/iOS/UITextField+CCUITextInput.mm b/cocos/ui/UIEditBox/iOS/UITextField+CCUITextInput.mm index 07fdd0a955c7..77f51f2a3c9d 100644 --- a/cocos/ui/UIEditBox/iOS/UITextField+CCUITextInput.mm +++ b/cocos/ui/UIEditBox/iOS/UITextField+CCUITextInput.mm @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2015 Mazyad Alabduljaleel Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,86 +27,90 @@ of this software and associated documentation files (the "Software"), to deal @implementation UITextField (CCUITextInput) -- (NSString *)ccui_text +- (NSString*)ccui_text { return self.text; } -- (void)ccui_setText:(NSString *)ccui_text +- (void)ccui_setText:(NSString*)ccui_text { self.text = ccui_text; } -- (NSString *)ccui_placeholder +- (NSString*)ccui_placeholder { return self.placeholder; } -- (void)ccui_setPlaceholder:(NSString *)ccui_placeholder +- (void)ccui_setPlaceholder:(NSString*)ccui_placeholder { self.placeholder = ccui_placeholder; } -- (UIColor *)ccui_textColor +- (UIColor*)ccui_textColor { return self.textColor; } -- (void)ccui_setTextColor:(UIColor *)ccui_textColor +- (void)ccui_setTextColor:(UIColor*)ccui_textColor { self.textColor = ccui_textColor; } -- (UIFont *)ccui_font +- (UIFont*)ccui_font { return self.font; } -- (void)ccui_setFont:(UIFont *)ccui_font +- (void)ccui_setFont:(UIFont*)ccui_font { self.font = ccui_font; } - (NSTextAlignment)ccui_alignment { - return self.textAlignment; + return self.textAlignment; } - (void)ccui_setTextHorizontalAlignment:(NSTextAlignment)ccui_alignment { - self.textAlignment = ccui_alignment; + self.textAlignment = ccui_alignment; } -- (UIColor *)ccui_placeholderTextColor +- (UIColor*)ccui_placeholderTextColor { SEL selector = NSSelectorFromString(@"placeholderTextColor"); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { return [self performSelector:selector]; } return nil; } -- (void)ccui_setPlaceholderTextColor:(UIColor *)ccui_placeholderTextColor +- (void)ccui_setPlaceholderTextColor:(UIColor*)ccui_placeholderTextColor { SEL selector = NSSelectorFromString(@"setPlaceholderTextColor:"); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { [self performSelector:selector withObject:ccui_placeholderTextColor]; } } -- (UIFont *)ccui_placeholderFont +- (UIFont*)ccui_placeholderFont { SEL selector = NSSelectorFromString(@"placeholderFont"); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { return [self performSelector:selector]; } return nil; } -- (void)ccui_setPlaceholderFont:(UIFont *)ccui_placeholderFont +- (void)ccui_setPlaceholderFont:(UIFont*)ccui_placeholderFont { SEL selector = NSSelectorFromString(@"setPlaceholderFont:"); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { [self performSelector:selector withObject:ccui_placeholderFont]; } } @@ -121,14 +125,14 @@ - (void)ccui_setSecureTextEntry:(BOOL)ccui_secureTextEntry self.secureTextEntry = ccui_secureTextEntry; } -- (void)ccui_setDelegate:(id)delegate +- (void)ccui_setDelegate:(id)delegate { self.delegate = delegate; } @end - -void LoadUITextFieldCCUITextInputCategory() { +void LoadUITextFieldCCUITextInputCategory() +{ // noop } diff --git a/cocos/ui/UIEditBox/iOS/UITextView+CCUITextInput.mm b/cocos/ui/UIEditBox/iOS/UITextView+CCUITextInput.mm index 04fc84d87f4e..94ce69956aed 100644 --- a/cocos/ui/UIEditBox/iOS/UITextView+CCUITextInput.mm +++ b/cocos/ui/UIEditBox/iOS/UITextView+CCUITextInput.mm @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2015 Mazyad Alabduljaleel Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,52 +25,53 @@ of this software and associated documentation files (the "Software"), to deal #import "ui/UIEditBox/iOS/UITextView+CCUITextInput.h" - @implementation UITextView (CCUITextInput) -- (NSString *)ccui_text +- (NSString*)ccui_text { return self.text; } -- (void)ccui_setText:(NSString *)ccui_text +- (void)ccui_setText:(NSString*)ccui_text { self.text = ccui_text; } -- (NSString *)ccui_placeholder +- (NSString*)ccui_placeholder { SEL selector = @selector(placeholder); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { return [self performSelector:selector]; } return nil; } -- (void)ccui_setPlaceholder:(NSString *)ccui_placeholder +- (void)ccui_setPlaceholder:(NSString*)ccui_placeholder { SEL selector = @selector(setPlaceholder:); - if ([self respondsToSelector:selector]) { + if ([self respondsToSelector:selector]) + { [self performSelector:selector withObject:ccui_placeholder]; } } -- (UIColor *)ccui_textColor +- (UIColor*)ccui_textColor { return self.textColor; } -- (void)ccui_setTextColor:(UIColor *)ccui_textColor +- (void)ccui_setTextColor:(UIColor*)ccui_textColor { self.textColor = ccui_textColor; } -- (UIFont *)ccui_font +- (UIFont*)ccui_font { return self.font; } -- (void)ccui_setFont:(UIFont *)ccui_font +- (void)ccui_setFont:(UIFont*)ccui_font { self.font = ccui_font; } @@ -85,37 +86,41 @@ - (void)ccui_setTextHorizontalAlignment:(NSTextAlignment)ccui_alignment self.textAlignment = ccui_alignment; } -- (UIColor *)ccui_placeholderTextColor +- (UIColor*)ccui_placeholderTextColor { SEL selector = NSSelectorFromString(@"placeHolderLabel"); - if ([self respondsToSelector:selector]) { - return ((UILabel *)[self performSelector:selector]).textColor; + if ([self respondsToSelector:selector]) + { + return ((UILabel*)[self performSelector:selector]).textColor; } return nil; } -- (void)ccui_setPlaceholderTextColor:(UIColor *)ccui_placeholderTextColor +- (void)ccui_setPlaceholderTextColor:(UIColor*)ccui_placeholderTextColor { SEL selector = NSSelectorFromString(@"placeHolderLabel"); - if ([self respondsToSelector:selector]) { - ((UILabel *)[self performSelector:selector]).textColor = ccui_placeholderTextColor; + if ([self respondsToSelector:selector]) + { + ((UILabel*)[self performSelector:selector]).textColor = ccui_placeholderTextColor; } } -- (UIFont *)ccui_placeholderFont +- (UIFont*)ccui_placeholderFont { SEL selector = NSSelectorFromString(@"placeHolderLabel"); - if ([self respondsToSelector:selector]) { - return ((UILabel *)[self performSelector:selector]).font; + if ([self respondsToSelector:selector]) + { + return ((UILabel*)[self performSelector:selector]).font; } return nil; } -- (void)ccui_setPlaceholderFont:(UIFont *)ccui_placeholderFont +- (void)ccui_setPlaceholderFont:(UIFont*)ccui_placeholderFont { SEL selector = NSSelectorFromString(@"placeHolderLabel"); - if ([self respondsToSelector:selector]) { - ((UILabel *)[self performSelector:selector]).font = ccui_placeholderFont; + if ([self respondsToSelector:selector]) + { + ((UILabel*)[self performSelector:selector]).font = ccui_placeholderFont; } } @@ -129,14 +134,11 @@ - (void)ccui_setSecureTextEntry:(BOOL)ccui_secureTextEntry self.secureTextEntry = ccui_secureTextEntry; } -- (void)ccui_setDelegate:(id)delegate +- (void)ccui_setDelegate:(id)delegate { self.delegate = delegate; } @end - -void LoadUITextViewCCUITextInputCategory() { - -} +void LoadUITextViewCCUITextInputCategory() {} diff --git a/cocos/ui/UILayoutManager.cpp b/cocos/ui/UILayoutManager.cpp index 20c3cabce3d0..7213065df7da 100644 --- a/cocos/ui/UILayoutManager.cpp +++ b/cocos/ui/UILayoutManager.cpp @@ -236,7 +236,7 @@ Widget* RelativeLayoutManager::getRelativeWidget(Widget* widget) { Widget* relativeWidget = nullptr; RelativeLayoutParameter* layoutParameter = dynamic_cast(widget->getLayoutParameter()); - auto relativeName = layoutParameter->getRelativeToWidgetName(); + auto relativeName = layoutParameter->getRelativeToWidgetName(); if (!relativeName.empty()) { diff --git a/cocos/ui/UIPageViewIndicator.h b/cocos/ui/UIPageViewIndicator.h index 97649861e1b8..21c0360b04a1 100644 --- a/cocos/ui/UIPageViewIndicator.h +++ b/cocos/ui/UIPageViewIndicator.h @@ -74,8 +74,7 @@ class PageViewIndicator : public ProtectedNode * @param fileName File name of texture. * @param resType @see TextureResType . */ - void setIndexNodesTexture(std::string_view texName, - Widget::TextureResType texType = Widget::TextureResType::LOCAL); + void setIndexNodesTexture(std::string_view texName, Widget::TextureResType texType = Widget::TextureResType::LOCAL); protected: bool init() override; diff --git a/cocos/ui/UIRichText.cpp b/cocos/ui/UIRichText.cpp index b2650303e4fd..1188abaa007b 100644 --- a/cocos/ui/UIRichText.cpp +++ b/cocos/ui/UIRichText.cpp @@ -915,8 +915,8 @@ void MyXMLVisitor::setTagDescription(std::string_view tag, MyXMLVisitor::_tagTables, tag, TagBehavior{ isFontElement, - std::move( - handleVisitEnter)}); // MyXMLVisitor::_tagTables[tag] = {isFontElement, std::move(handleVisitEnter)}; + std::move( + handleVisitEnter)}); // MyXMLVisitor::_tagTables[tag] = {isFontElement, std::move(handleVisitEnter)}; } void MyXMLVisitor::removeTagDescription(std::string_view tag) @@ -2080,7 +2080,7 @@ float RichText::stripTrailingWhitespace(const Vector& row) { if (auto label = dynamic_cast(row.back())) { - const auto width = label->getContentSize().width; + const auto width = label->getContentSize().width; std::string trimmedString{label->getString()}; rtrim(trimmedString); if (label->getString() != trimmedString) diff --git a/cocos/ui/UIRichText.h b/cocos/ui/UIRichText.h index 932ddd29cce6..7428a38bc1c3 100644 --- a/cocos/ui/UIRichText.h +++ b/cocos/ui/UIRichText.h @@ -186,7 +186,7 @@ class CC_GUI_DLL RichElementText : public RichElement std::string_view fontName, float fontSize, uint32_t flags = 0, - std::string_view url = "", + std::string_view url = "", const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1, const Color3B& shadowColor = Color3B::BLACK, @@ -245,7 +245,7 @@ class CC_GUI_DLL RichElementImage : public RichElement const Color3B& color, uint8_t opacity, std::string_view filePath, - std::string_view url = "", + std::string_view url = "", Widget::TextureResType texType = Widget::TextureResType::LOCAL); /** @@ -263,7 +263,7 @@ class CC_GUI_DLL RichElementImage : public RichElement const Color3B& color, uint8_t opacity, std::string_view filePath, - std::string_view url = "", + std::string_view url = "", Widget::TextureResType texType = Widget::TextureResType::LOCAL); void setWidth(int width); @@ -517,24 +517,24 @@ class CC_GUI_DLL RichText : public Widget HorizontalAlignment a); /*!< sets the horizontal alignment mode: LEFT, CENTER, or RIGHT */ HorizontalAlignment getHorizontalAlignment() const; /*!< returns the current horizontal alignment mode */ void setFontColor( - std::string_view color); /*!< Set the font color. @param color the #RRGGBB hexadecimal notation. */ - std::string getFontColor(); /*!< return the current font color */ - Color3B getFontColor3B(); /*!< return the current font color */ - void setFontSize(float size); /*!< Set the font size. @param size the font size. */ - float getFontSize(); /*!< return the current font size */ - void setFontFace(std::string_view face); /*!< Set the font face. @param face the font face. */ - std::string getFontFace(); /*!< return the current font face */ + std::string_view color); /*!< Set the font color. @param color the #RRGGBB hexadecimal notation. */ + std::string getFontColor(); /*!< return the current font color */ + Color3B getFontColor3B(); /*!< return the current font color */ + void setFontSize(float size); /*!< Set the font size. @param size the font size. */ + float getFontSize(); /*!< return the current font size */ + void setFontFace(std::string_view face); /*!< Set the font face. @param face the font face. */ + std::string getFontFace(); /*!< return the current font face */ void setAnchorFontColor(std::string_view color); /*!< Set the font color of a-tag. @param face the font color. */ - std::string getAnchorFontColor(); /*!< return the current font color of a-tag */ - cocos2d::Color3B getAnchorFontColor3B(); /*!< return the current font color of a-tag */ - void setAnchorTextBold(bool enable); /*!< enable bold text of a-tag */ - bool isAnchorTextBoldEnabled(); /*!< valid style is bold text of a-tag? */ - void setAnchorTextItalic(bool enable); /*!< enable italic text of a-tag */ - bool isAnchorTextItalicEnabled(); /*!< valid style is italic text of a-tag? */ - void setAnchorTextDel(bool enable); /*!< enable the strikethrough of a-tag */ - bool isAnchorTextDelEnabled(); /*!< valid strikethrough of a-tag? */ - void setAnchorTextUnderline(bool enable); /*!< enable the underline of a-tag */ - bool isAnchorTextUnderlineEnabled(); /*!< valid underline of a-tag? */ + std::string getAnchorFontColor(); /*!< return the current font color of a-tag */ + cocos2d::Color3B getAnchorFontColor3B(); /*!< return the current font color of a-tag */ + void setAnchorTextBold(bool enable); /*!< enable bold text of a-tag */ + bool isAnchorTextBoldEnabled(); /*!< valid style is bold text of a-tag? */ + void setAnchorTextItalic(bool enable); /*!< enable italic text of a-tag */ + bool isAnchorTextItalicEnabled(); /*!< valid style is italic text of a-tag? */ + void setAnchorTextDel(bool enable); /*!< enable the strikethrough of a-tag */ + bool isAnchorTextDelEnabled(); /*!< valid strikethrough of a-tag? */ + void setAnchorTextUnderline(bool enable); /*!< enable the underline of a-tag */ + bool isAnchorTextUnderlineEnabled(); /*!< valid underline of a-tag? */ /** @brief enable the outline of a-tag */ void setAnchorTextOutline(bool enable, const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1); bool isAnchorTextOutlineEnabled(); /*!< valid outline of a-tag? */ @@ -555,7 +555,7 @@ class CC_GUI_DLL RichText : public Widget void setDefaults(const ValueMap& defaults); /*!< set the default values */ ValueMap getDefaults() const; /*!< returns the default values */ - cocos2d::Color3B color3BWithString(std::string_view color); /*!< convert a color string into a Color3B. */ + cocos2d::Color3B color3BWithString(std::string_view color); /*!< convert a color string into a Color3B. */ std::string stringWithColor3B(const cocos2d::Color3B& color3b); /*!< convert a Color3B into a color string. */ std::string stringWithColor4B(const cocos2d::Color4B& color4b); /*!< convert a Color4B into a color string. */ @@ -599,7 +599,7 @@ class CC_GUI_DLL RichText : public Widget const Color3B& color, uint8_t opacity, uint32_t flags, - std::string_view url = "", + std::string_view url = "", const Color3B& outlineColor = Color3B::WHITE, int outlineSize = -1, const Color3B& shadowColor = Color3B::BLACK, diff --git a/cocos/ui/UISlider.cpp b/cocos/ui/UISlider.cpp index f1c9919ef28f..2baeabcf2726 100644 --- a/cocos/ui/UISlider.cpp +++ b/cocos/ui/UISlider.cpp @@ -103,9 +103,7 @@ Slider* Slider::create() return nullptr; } -Slider* Slider::create(std::string_view barTextureName, - std::string_view normalBallTextureName, - TextureResType resType) +Slider* Slider::create(std::string_view barTextureName, std::string_view normalBallTextureName, TextureResType resType) { Slider* widget = new Slider(); if (widget->init()) diff --git a/cocos/ui/UISlider.h b/cocos/ui/UISlider.h index d774b4079503..63a3e62bad56 100644 --- a/cocos/ui/UISlider.h +++ b/cocos/ui/UISlider.h @@ -165,7 +165,7 @@ class CC_GUI_DLL Slider : public Widget void loadSlidBallTextures(std::string_view normal, std::string_view pressed = "", std::string_view disabled = "", - TextureResType texType = TextureResType::LOCAL); + TextureResType texType = TextureResType::LOCAL); /** * Load normal state texture for slider ball. diff --git a/cocos/ui/UIVideoPlayer-ios.mm b/cocos/ui/UIVideoPlayer-ios.mm index 24f925c2a7b8..c1494ed51161 100644 --- a/cocos/ui/UIVideoPlayer-ios.mm +++ b/cocos/ui/UIVideoPlayer-ios.mm @@ -31,11 +31,11 @@ of this software and associated documentation files (the "Software"), to deal using namespace cocos2d::ui; //------------------------------------------------------------------------------------- -#include "platform/ios/CCEAGLView-ios.h" -#import -#import -#include "base/CCDirector.h" -#include "platform/CCFileUtils.h" +# include "platform/ios/CCEAGLView-ios.h" +# import +# import +# include "base/CCDirector.h" +# include "platform/CCFileUtils.h" @interface UIVideoViewWrapperIos : NSObject @@ -47,31 +47,29 @@ typedef NS_ENUM(NSInteger, PlayerbackState) { PlayerbackStateCompleted }; -@property (assign, nonatomic) AVPlayerViewController * playerController; - -- (void) setFrame:(int) left :(int) top :(int) width :(int) height; -- (void) setURL:(int) videoSource :(std::string&) videoUrl; -- (void) play; -- (void) pause; -- (void) resume; -- (void) stop; -- (void) seekTo:(float) sec; -- (void) setVisible:(BOOL) visible; -- (void) setKeepRatioEnabled:(BOOL) enabled; -- (void) setFullScreenEnabled:(BOOL) enabled; -- (BOOL) isFullScreenEnabled; -- (void) showPlaybackControls:(BOOL) value; -- (void) setRepeatEnabled:(BOOL)enabled; -- (void) setUserInteractionEnabled:(BOOL)userInteractionEnabled; - - --(id) init:(void*) videoPlayer; --(void) videoFinished:(NSNotification*) notification; +@property(assign, nonatomic) AVPlayerViewController* playerController; + +- (void)setFrame:(int)left:(int)top:(int)width:(int)height; +- (void)setURL:(int)videoSource:(std::string&)videoUrl; +- (void)play; +- (void)pause; +- (void)resume; +- (void)stop; +- (void)seekTo:(float)sec; +- (void)setVisible:(BOOL)visible; +- (void)setKeepRatioEnabled:(BOOL)enabled; +- (void)setFullScreenEnabled:(BOOL)enabled; +- (BOOL)isFullScreenEnabled; +- (void)showPlaybackControls:(BOOL)value; +- (void)setRepeatEnabled:(BOOL)enabled; +- (void)setUserInteractionEnabled:(BOOL)userInteractionEnabled; + +- (id)init:(void*)videoPlayer; +- (void)videoFinished:(NSNotification*)notification; @end -@implementation UIVideoViewWrapperIos -{ +@implementation UIVideoViewWrapperIos { int _left; int _top; int _width; @@ -84,24 +82,25 @@ @implementation UIVideoViewWrapperIos VideoPlayer* _videoPlayer; } --(id)init:(void*)videoPlayer +- (id)init:(void*)videoPlayer { - if (self = [super init]) { + if (self = [super init]) + { self.playerController = [AVPlayerViewController new]; [self setRepeatEnabled:FALSE]; [self showPlaybackControls:TRUE]; [self setUserInteractionEnabled:TRUE]; [self setKeepRatioEnabled:FALSE]; - + _videoPlayer = (VideoPlayer*)videoPlayer; - _state = PlayerbackStateUnknown; + _state = PlayerbackStateUnknown; } return self; } --(void) dealloc +- (void)dealloc { _videoPlayer = nullptr; [self clean]; @@ -109,44 +108,44 @@ -(void) dealloc [super dealloc]; } --(void) clean +- (void)clean { [self stop]; [self removePlayerEventListener]; [self.playerController.view removeFromSuperview]; } --(void) setFrame:(int)left :(int)top :(int)width :(int)height +- (void)setFrame:(int)left:(int)top:(int)width:(int)height { - _left = left; - _width = width; - _top = top; + _left = left; + _width = width; + _top = top; _height = height; [self.playerController.view setFrame:CGRectMake(left, top, width, height)]; } --(void) setFullScreenEnabled:(BOOL) enabled +- (void)setFullScreenEnabled:(BOOL)enabled { // AVPlayerViewController doesn't provide API to enable fullscreen. But you can toggle // fullsreen by the playback controllers. } --(BOOL) isFullScreenEnabled +- (BOOL)isFullScreenEnabled { return false; } - --(void) showPlaybackControls:(BOOL)value +- (void)showPlaybackControls:(BOOL)value { - _showPlaybackControls = value; + _showPlaybackControls = value; self.playerController.showsPlaybackControls = value; } --(void) setRepeatEnabled:(BOOL)enabled +- (void)setRepeatEnabled:(BOOL)enabled { _repeatEnabled = enabled; - if (self.playerController.player) { + if (self.playerController.player) + { if (_repeatEnabled) self.playerController.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; else @@ -154,57 +153,61 @@ -(void) setRepeatEnabled:(BOOL)enabled } } --(void) setUserInteractionEnabled:(BOOL)userInteractionEnabled +- (void)setUserInteractionEnabled:(BOOL)userInteractionEnabled { - _userInteractionEnabled = userInteractionEnabled; + _userInteractionEnabled = userInteractionEnabled; self.playerController.view.userInteractionEnabled = _userInteractionEnabled; } --(void) setURL:(int)videoSource :(std::string &)videoUrl +- (void)setURL:(int)videoSource:(std::string&)videoUrl { [self clean]; if (videoSource == 1) - self.playerController.player = [[[AVPlayer alloc] initWithURL:[NSURL URLWithString:@(videoUrl.c_str())]] autorelease]; + self.playerController.player = + [[[AVPlayer alloc] initWithURL:[NSURL URLWithString:@(videoUrl.c_str())]] autorelease]; else - self.playerController.player = [[[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:@(videoUrl.c_str())]] autorelease]; + self.playerController.player = + [[[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:@(videoUrl.c_str())]] autorelease]; [self setRepeatEnabled:_repeatEnabled]; [self setKeepRatioEnabled:_keepRatioEnabled]; [self setUserInteractionEnabled:_userInteractionEnabled]; [self showPlaybackControls:_showPlaybackControls]; - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - auto eaglview = (CCEAGLView *) view->getEAGLView(); + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + auto eaglview = (CCEAGLView*)view->getEAGLView(); [eaglview addSubview:self.playerController.view]; [self registerPlayerEventListener]; } --(void) videoFinished:(NSNotification *)notification +- (void)videoFinished:(NSNotification*)notification { - if(_videoPlayer != nullptr) { + if (_videoPlayer != nullptr) + { _videoPlayer->onPlayEvent((int)VideoPlayer::EventType::COMPLETED); _state = PlayerbackStateCompleted; - if (_repeatEnabled) { + if (_repeatEnabled) + { [self seekTo:0]; [self play]; } } } --(void) seekTo:(float)sec +- (void)seekTo:(float)sec { if (self.playerController.player) [self.playerController.player seekToTime:CMTimeMake(sec, 1)]; } --(void) setVisible:(BOOL)visible +- (void)setVisible:(BOOL)visible { [self.playerController.view setHidden:!visible]; } --(void) setKeepRatioEnabled:(BOOL)enabled +- (void)setKeepRatioEnabled:(BOOL)enabled { _keepRatioEnabled = enabled; if (_keepRatioEnabled) @@ -213,38 +216,41 @@ -(void) setKeepRatioEnabled:(BOOL)enabled self.playerController.videoGravity = AVLayerVideoGravityResizeAspectFill; } --(void) play +- (void)play { - if (self.playerController.player && _state != PlayerbackStatePlaying) { + if (self.playerController.player && _state != PlayerbackStatePlaying) + { [self.playerController.player play]; _state = PlayerbackStatePlaying; _videoPlayer->onPlayEvent((int)VideoPlayer::EventType::PLAYING); } } --(void) pause +- (void)pause { - if (self.playerController.player && _state == PlayerbackStatePlaying) { + if (self.playerController.player && _state == PlayerbackStatePlaying) + { [self.playerController.player pause]; _state = PlayerbackStatePaused; _videoPlayer->onPlayEvent((int)VideoPlayer::EventType::PAUSED); } } --(void) resume +- (void)resume { if (self.playerController.player && _state == PlayerbackStatePaused) [self play]; } --(void) stop +- (void)stop { // AVPlayer doesn't have stop, so just pause it, and seek time to 0. - if (self.playerController.player && _state != PlayerbackStopped) { + if (self.playerController.player && _state != PlayerbackStopped) + { [self seekTo:0]; [self.playerController.player pause]; _state = PlayerbackStopped; - + // stop() will be invoked in dealloc, which is invoked by _videoPlayer's destructor, // so do't send the message when _videoPlayer is being deleted. if (_videoPlayer) @@ -252,21 +258,21 @@ -(void) stop } } --(void) registerPlayerEventListener +- (void)registerPlayerEventListener { if (self.playerController.player) [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) - name:AVPlayerItemDidPlayToEndTimeNotification - object:self.playerController.player.currentItem]; + name:AVPlayerItemDidPlayToEndTimeNotification + object:self.playerController.player.currentItem]; } --(void) removePlayerEventListener +- (void)removePlayerEventListener { if (self.playerController.player) [[NSNotificationCenter defaultCenter] removeObserver:self - name:AVPlayerItemDidPlayToEndTimeNotification - object:self.playerController.player.currentItem]; + name:AVPlayerItemDidPlayToEndTimeNotification + object:self.playerController.player.currentItem]; } @end @@ -276,15 +282,15 @@ -(void) removePlayerEventListener { _videoView = [[UIVideoViewWrapperIos alloc] init:this]; -#if CC_VIDEOPLAYER_DEBUG_DRAW +# if CC_VIDEOPLAYER_DEBUG_DRAW _debugDrawNode = DrawNode::create(); addChild(_debugDrawNode); -#endif +# endif } VideoPlayer::~VideoPlayer() { - if(_videoView) + if (_videoView) { [((UIVideoViewWrapperIos*)_videoView) dealloc]; } @@ -292,16 +298,16 @@ -(void) removePlayerEventListener void VideoPlayer::setFileName(std::string_view fileName) { - _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); + _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); _videoSource = VideoPlayer::Source::FILENAME; - [((UIVideoViewWrapperIos*)_videoView) setURL:(int)_videoSource :_videoURL]; + [((UIVideoViewWrapperIos*)_videoView) setURL:(int) _videoSource:_videoURL]; } void VideoPlayer::setURL(std::string_view videoUrl) { - _videoURL = videoUrl; + _videoURL = videoUrl; _videoSource = VideoPlayer::Source::URL; - [((UIVideoViewWrapperIos*)_videoView) setURL:(int)_videoSource :_videoURL]; + [((UIVideoViewWrapperIos*)_videoView) setURL:(int) _videoSource:_videoURL]; } void VideoPlayer::setLooping(bool looping) @@ -320,56 +326,52 @@ -(void) removePlayerEventListener { _styleType = style; - switch (style) { - case StyleType::DEFAULT: - [((UIVideoViewWrapperIos*)_videoView) showPlaybackControls:TRUE]; - break; + switch (style) + { + case StyleType::DEFAULT: + [((UIVideoViewWrapperIos*)_videoView) showPlaybackControls:TRUE]; + break; - case StyleType::NONE: - [((UIVideoViewWrapperIos*)_videoView) showPlaybackControls:FALSE]; - break; + case StyleType::NONE: + [((UIVideoViewWrapperIos*)_videoView) showPlaybackControls:FALSE]; + break; } } -void VideoPlayer::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags) +void VideoPlayer::draw(Renderer* renderer, const Mat4& transform, uint32_t flags) { - cocos2d::ui::Widget::draw(renderer,transform,flags); + cocos2d::ui::Widget::draw(renderer, transform, flags); if (flags & FLAGS_TRANSFORM_DIRTY) { auto directorInstance = Director::getInstance(); - auto glView = directorInstance->getOpenGLView(); - auto frameSize = glView->getFrameSize(); - auto scaleFactor = [static_cast(glView->getEAGLView()) contentScaleFactor]; + auto glView = directorInstance->getOpenGLView(); + auto frameSize = glView->getFrameSize(); + auto scaleFactor = [static_cast(glView->getEAGLView()) contentScaleFactor]; auto winSize = directorInstance->getWinSize(); auto leftBottom = convertToWorldSpace(Vec2::ZERO); - auto rightTop = convertToWorldSpace(Vec2(_contentSize.width,_contentSize.height)); + auto rightTop = convertToWorldSpace(Vec2(_contentSize.width, _contentSize.height)); - auto uiLeft = (frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX()) / scaleFactor; - auto uiTop = (frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY()) / scaleFactor; + auto uiLeft = (frameSize.width / 2 + (leftBottom.x - winSize.width / 2) * glView->getScaleX()) / scaleFactor; + auto uiTop = (frameSize.height / 2 - (rightTop.y - winSize.height / 2) * glView->getScaleY()) / scaleFactor; - [((UIVideoViewWrapperIos*)_videoView) setFrame :uiLeft :uiTop - :(rightTop.x - leftBottom.x) * glView->getScaleX() / scaleFactor - :( (rightTop.y - leftBottom.y) * glView->getScaleY()/scaleFactor)]; + [((UIVideoViewWrapperIos*)_videoView) setFrame: + uiLeft:uiTop:(rightTop.x - leftBottom.x) * glView->getScaleX() / + scaleFactor:((rightTop.y - leftBottom.y) * glView->getScaleY() / + scaleFactor)]; } -#if CC_VIDEOPLAYER_DEBUG_DRAW +# if CC_VIDEOPLAYER_DEBUG_DRAW _debugDrawNode->clear(); - auto size = getContentSize(); - Point vertices[4]= - { - Point::ZERO, - Point(size.width, 0), - Point(size.width, size.height), - Point(0, size.height) - }; + auto size = getContentSize(); + Point vertices[4] = {Point::ZERO, Point(size.width, 0), Point(size.width, size.height), Point(0, size.height)}; _debugDrawNode->drawPoly(vertices, 4, true, Color4F(1.0, 1.0, 1.0, 1.0)); -#endif +# endif } -bool VideoPlayer::isFullScreenEnabled()const +bool VideoPlayer::isFullScreenEnabled() const { return [((UIVideoViewWrapperIos*)_videoView) isFullScreenEnabled]; } @@ -390,7 +392,7 @@ -(void) removePlayerEventListener void VideoPlayer::play() { - if (! _videoURL.empty()) + if (!_videoURL.empty()) { [((UIVideoViewWrapperIos*)_videoView) play]; } @@ -398,7 +400,7 @@ -(void) removePlayerEventListener void VideoPlayer::pause() { - if (! _videoURL.empty()) + if (!_videoURL.empty()) { [((UIVideoViewWrapperIos*)_videoView) pause]; } @@ -406,7 +408,7 @@ -(void) removePlayerEventListener void VideoPlayer::resume() { - if (! _videoURL.empty()) + if (!_videoURL.empty()) { [((UIVideoViewWrapperIos*)_videoView) resume]; } @@ -414,7 +416,7 @@ -(void) removePlayerEventListener void VideoPlayer::stop() { - if (! _videoURL.empty()) + if (!_videoURL.empty()) { [((UIVideoViewWrapperIos*)_videoView) stop]; } @@ -422,7 +424,7 @@ -(void) removePlayerEventListener void VideoPlayer::seekTo(float sec) { - if (! _videoURL.empty()) + if (!_videoURL.empty()) { [((UIVideoViewWrapperIos*)_videoView) seekTo:sec]; } @@ -451,7 +453,7 @@ -(void) removePlayerEventListener { [((UIVideoViewWrapperIos*)_videoView) setVisible:NO]; } - else if(isRunning()) + else if (isRunning()) { [((UIVideoViewWrapperIos*)_videoView) setVisible:YES]; } @@ -462,14 +464,14 @@ -(void) removePlayerEventListener Widget::onEnter(); if (isVisible()) { - [((UIVideoViewWrapperIos*)_videoView) setVisible: YES]; + [((UIVideoViewWrapperIos*)_videoView) setVisible:YES]; } } void VideoPlayer::onExit() { Widget::onExit(); - [((UIVideoViewWrapperIos*)_videoView) setVisible: NO]; + [((UIVideoViewWrapperIos*)_videoView) setVisible:NO]; } void VideoPlayer::addEventListener(const VideoPlayer::ccVideoPlayerCallback& callback) @@ -479,9 +481,12 @@ -(void) removePlayerEventListener void VideoPlayer::onPlayEvent(int event) { - if (event == (int)VideoPlayer::EventType::PLAYING) { + if (event == (int)VideoPlayer::EventType::PLAYING) + { _isPlaying = true; - } else { + } + else + { _isPlaying = false; } @@ -496,23 +501,23 @@ -(void) removePlayerEventListener return VideoPlayer::create(); } -void VideoPlayer::copySpecialProperties(Widget *widget) +void VideoPlayer::copySpecialProperties(Widget* widget) { VideoPlayer* videoPlayer = dynamic_cast(widget); if (videoPlayer) { - _isPlaying = videoPlayer->_isPlaying; - _isLooping = videoPlayer->_isLooping; - _isUserInputEnabled = videoPlayer->_isUserInputEnabled; - _styleType = videoPlayer->_styleType; - _fullScreenEnabled = videoPlayer->_fullScreenEnabled; - _fullScreenDirty = videoPlayer->_fullScreenDirty; - _videoURL = videoPlayer->_videoURL; + _isPlaying = videoPlayer->_isPlaying; + _isLooping = videoPlayer->_isLooping; + _isUserInputEnabled = videoPlayer->_isUserInputEnabled; + _styleType = videoPlayer->_styleType; + _fullScreenEnabled = videoPlayer->_fullScreenEnabled; + _fullScreenDirty = videoPlayer->_fullScreenDirty; + _videoURL = videoPlayer->_videoURL; _keepAspectRatioEnabled = videoPlayer->_keepAspectRatioEnabled; - _videoSource = videoPlayer->_videoSource; - _videoPlayerIndex = videoPlayer->_videoPlayerIndex; - _eventCallback = videoPlayer->_eventCallback; - _videoView = videoPlayer->_videoView; + _videoSource = videoPlayer->_videoSource; + _videoPlayerIndex = videoPlayer->_videoPlayerIndex; + _eventCallback = videoPlayer->_eventCallback; + _videoView = videoPlayer->_videoView; } } diff --git a/cocos/ui/UIWebView/UIWebView.h b/cocos/ui/UIWebView/UIWebView.h index e881dc7cdf41..a685f7af7309 100644 --- a/cocos/ui/UIWebView/UIWebView.h +++ b/cocos/ui/UIWebView/UIWebView.h @@ -232,9 +232,9 @@ class CC_GUI_DLL WebView : public cocos2d::ui::Widget virtual void copySpecialProperties(Widget* model) override; std::function _onShouldStartLoading = nullptr; - ccWebViewCallback _onDidFinishLoading = nullptr; - ccWebViewCallback _onDidFailLoading = nullptr; - ccWebViewCallback _onJSCallback = nullptr; + ccWebViewCallback _onDidFinishLoading = nullptr; + ccWebViewCallback _onDidFailLoading = nullptr; + ccWebViewCallback _onJSCallback = nullptr; CC_CONSTRUCTOR_ACCESS : /** diff --git a/cocos/ui/UIWebView/UIWebView.mm b/cocos/ui/UIWebView/UIWebView.mm index 31a5694674cb..a80e16512cdf 100644 --- a/cocos/ui/UIWebView/UIWebView.mm +++ b/cocos/ui/UIWebView/UIWebView.mm @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2014-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp index 511b86aa5d5d..1fe19d175627 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp @@ -219,8 +219,8 @@ void WebViewImpl::loadData(const Data& data, std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, dataString, MIMEType, encoding, - baseURL); + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, dataString, MIMEType, + encoding, baseURL); } void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) diff --git a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm index e2c448249e3f..6be5cdade848 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm +++ b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2014-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,10 +35,10 @@ of this software and associated documentation files (the "Software"), to deal #include "platform/CCFileUtils.h" @interface UIWebViewWrapper : NSObject -@property (nonatomic) std::function shouldStartLoading; -@property (nonatomic) std::function didFinishLoading; -@property (nonatomic) std::function didFailLoading; -@property (nonatomic) std::function onJsCallback; +@property(nonatomic) std::function shouldStartLoading; +@property(nonatomic) std::function didFinishLoading; +@property(nonatomic) std::function didFailLoading; +@property(nonatomic) std::function onJsCallback; @property(nonatomic, readonly, getter=canGoBack) BOOL canGoBack; @property(nonatomic, readonly, getter=canGoForward) BOOL canGoForward; @@ -57,21 +57,24 @@ - (void)setBackgroundTransparent; - (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)height; -- (void)setJavascriptInterfaceScheme:(const std::string &)scheme; +- (void)setJavascriptInterfaceScheme:(const std::string&)scheme; -- (void)loadData:(const std::string &)data MIMEType:(const std::string &)MIMEType textEncodingName:(const std::string &)encodingName baseURL:(const std::string &)baseURL; +- (void)loadData:(const std::string&)data + MIMEType:(const std::string&)MIMEType + textEncodingName:(const std::string&)encodingName + baseURL:(const std::string&)baseURL; -- (void)loadHTMLString:(const std::string &)string baseURL:(const std::string &)baseURL; +- (void)loadHTMLString:(const std::string&)string baseURL:(const std::string&)baseURL; -- (void)loadUrl:(const std::string &)urlString cleanCachedData:(BOOL) needCleanCachedData; +- (void)loadUrl:(const std::string&)urlString cleanCachedData:(BOOL)needCleanCachedData; -- (void)loadFile:(const std::string &)filePath; +- (void)loadFile:(const std::string&)filePath; - (void)stopLoading; - (void)reload; -- (void)evaluateJS:(const std::string &)js; +- (void)evaluateJS:(const std::string&)js; - (void)goBack; @@ -80,178 +83,236 @@ - (void)goForward; - (void)setScalesPageToFit:(const bool)scalesPageToFit; @end - @interface UIWebViewWrapper () -@property(nonatomic) WKWebView *wkWebView; +@property(nonatomic) WKWebView* wkWebView; -@property(nonatomic, copy) NSString *jsScheme; +@property(nonatomic, copy) NSString* jsScheme; @end @implementation UIWebViewWrapper { - } -+ (instancetype) newWebViewWrapper { ++ (instancetype)newWebViewWrapper +{ return [[self alloc] init]; } -- (instancetype)init { +- (instancetype)init +{ self = [super init]; - if (self) { - self.wkWebView = nil; + if (self) + { + self.wkWebView = nil; self.shouldStartLoading = nullptr; - self.didFinishLoading = nullptr; - self.didFailLoading = nullptr; + self.didFinishLoading = nullptr; + self.didFailLoading = nullptr; } return self; } -- (void)dealloc { - self.wkWebView.UIDelegate = nil; +- (void)dealloc +{ + self.wkWebView.UIDelegate = nil; self.wkWebView.navigationDelegate = nil; [self.wkWebView removeFromSuperview]; [self.wkWebView release]; self.wkWebView = nil; - self.jsScheme = nil; + self.jsScheme = nil; [super dealloc]; } -- (void)setupWebView { - if (!self.wkWebView) { - self.wkWebView = [[WKWebView alloc] init]; - self.wkWebView.UIDelegate = self; +- (void)setupWebView +{ + if (!self.wkWebView) + { + self.wkWebView = [[WKWebView alloc] init]; + self.wkWebView.UIDelegate = self; self.wkWebView.navigationDelegate = self; } - if (!self.wkWebView.superview) { - auto view = cocos2d::Director::getInstance()->getOpenGLView(); - auto eaglview = (CCEAGLView *) view->getEAGLView(); + if (!self.wkWebView.superview) + { + auto view = cocos2d::Director::getInstance()->getOpenGLView(); + auto eaglview = (CCEAGLView*)view->getEAGLView(); [eaglview addSubview:self.wkWebView]; } } -- (void)setVisible:(bool)visible { - if (!self.wkWebView) {[self setupWebView];} +- (void)setVisible:(bool)visible +{ + if (!self.wkWebView) + { + [self setupWebView]; + } self.wkWebView.hidden = !visible; } -- (void)setBounces:(bool)bounces { - self.wkWebView.scrollView.bounces = bounces; +- (void)setBounces:(bool)bounces +{ + self.wkWebView.scrollView.bounces = bounces; } -- (void)setOpacityWebView:(float)opacity { - if (!self.wkWebView) { [self setupWebView]; } +- (void)setOpacityWebView:(float)opacity +{ + if (!self.wkWebView) + { + [self setupWebView]; + } self.wkWebView.alpha = opacity; [self.wkWebView setOpaque:YES]; } --(float) getOpacityWebView{ +- (float)getOpacityWebView +{ return self.wkWebView.alpha; } --(void) setBackgroundTransparent{ - if (!self.wkWebView) {[self setupWebView];} +- (void)setBackgroundTransparent +{ + if (!self.wkWebView) + { + [self setupWebView]; + } [self.wkWebView setOpaque:NO]; [self.wkWebView setBackgroundColor:[UIColor clearColor]]; } -- (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)height { - if (!self.wkWebView) {[self setupWebView];} +- (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)height +{ + if (!self.wkWebView) + { + [self setupWebView]; + } CGRect newFrame = CGRectMake(x, y, width, height); - if (!CGRectEqualToRect(self.wkWebView.frame, newFrame)) { + if (!CGRectEqualToRect(self.wkWebView.frame, newFrame)) + { self.wkWebView.frame = CGRectMake(x, y, width, height); } } -- (void)setJavascriptInterfaceScheme:(const std::string &)scheme { +- (void)setJavascriptInterfaceScheme:(const std::string&)scheme +{ self.jsScheme = @(scheme.c_str()); } -- (void)loadData:(const std::string &)data MIMEType:(const std::string &)MIMEType textEncodingName:(const std::string &)encodingName baseURL:(const std::string &)baseURL { +- (void)loadData:(const std::string&)data + MIMEType:(const std::string&)MIMEType + textEncodingName:(const std::string&)encodingName + baseURL:(const std::string&)baseURL +{ auto path = [[NSBundle mainBundle] resourcePath]; - path = [path stringByAppendingPathComponent:@(baseURL.c_str() )]; - auto url = [NSURL fileURLWithPath:path]; + path = [path stringByAppendingPathComponent:@(baseURL.c_str())]; + auto url = [NSURL fileURLWithPath:path]; [self.wkWebView loadData:[NSData dataWithBytes:data.c_str() length:data.length()] - MIMEType:@(MIMEType.c_str()) - characterEncodingName:@(encodingName.c_str()) - baseURL:url]; + MIMEType:@(MIMEType.c_str()) + characterEncodingName:@(encodingName.c_str()) + baseURL:url]; } -- (void)loadHTMLString:(const std::string &)string baseURL:(const std::string &)baseURL { - if (!self.wkWebView) {[self setupWebView];} +- (void)loadHTMLString:(const std::string&)string baseURL:(const std::string&)baseURL +{ + if (!self.wkWebView) + { + [self setupWebView]; + } auto path = [[NSBundle mainBundle] resourcePath]; - path = [path stringByAppendingPathComponent:@(baseURL.c_str() )]; - auto url = [NSURL fileURLWithPath:path]; + path = [path stringByAppendingPathComponent:@(baseURL.c_str())]; + auto url = [NSURL fileURLWithPath:path]; [self.wkWebView loadHTMLString:@(string.c_str()) baseURL:url]; } -- (void)loadUrl:(const std::string &)urlString cleanCachedData:(BOOL) needCleanCachedData { - if (!self.wkWebView) {[self setupWebView];} - NSURL *url = [NSURL URLWithString:@(urlString.c_str())]; +- (void)loadUrl:(const std::string&)urlString cleanCachedData:(BOOL)needCleanCachedData +{ + if (!self.wkWebView) + { + [self setupWebView]; + } + NSURL* url = [NSURL URLWithString:@(urlString.c_str())]; - NSURLRequest *request = nil; + NSURLRequest* request = nil; if (needCleanCachedData) - request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; + request = [NSURLRequest requestWithURL:url + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:60]; else request = [NSURLRequest requestWithURL:url]; [self.wkWebView loadRequest:request]; } -- (void)loadFile:(const std::string &)filePath { - if (!self.wkWebView) {[self setupWebView];} - NSURL *url = [NSURL fileURLWithPath:@(filePath.c_str())]; - NSURLRequest *request = [NSURLRequest requestWithURL:url]; +- (void)loadFile:(const std::string&)filePath +{ + if (!self.wkWebView) + { + [self setupWebView]; + } + NSURL* url = [NSURL fileURLWithPath:@(filePath.c_str())]; + NSURLRequest* request = [NSURLRequest requestWithURL:url]; [self.wkWebView loadRequest:request]; } -- (void)stopLoading { +- (void)stopLoading +{ [self.wkWebView stopLoading]; } -- (void)reload { +- (void)reload +{ [self.wkWebView reload]; } -- (BOOL)canGoForward { +- (BOOL)canGoForward +{ return self.wkWebView.canGoForward; } -- (BOOL)canGoBack { +- (BOOL)canGoBack +{ return self.wkWebView.canGoBack; } -- (void)goBack { +- (void)goBack +{ [self.wkWebView goBack]; } -- (void)goForward { +- (void)goForward +{ [self.wkWebView goForward]; } -- (void)evaluateJS:(const std::string &)js { - if (!self.wkWebView) {[self setupWebView];} +- (void)evaluateJS:(const std::string&)js +{ + if (!self.wkWebView) + { + [self setupWebView]; + } [self.wkWebView evaluateJavaScript:@(js.c_str()) completionHandler:nil]; } -- (void)setScalesPageToFit:(const bool)scalesPageToFit { -// TODO: there is not corresponding API in WK. -// https://stackoverflow.com/questions/26295277/wkwebview-equivalent-for-uiwebviews-scalespagetofit/43048514 seems has a solution, -// but it doesn't support setting it dynamically. If we want to set this feature dynamically, then it will be too complex. +- (void)setScalesPageToFit:(const bool)scalesPageToFit +{ + // TODO: there is not corresponding API in WK. + // https://stackoverflow.com/questions/26295277/wkwebview-equivalent-for-uiwebviews-scalespagetofit/43048514 seems + // has a solution, but it doesn't support setting it dynamically. If we want to set this feature dynamically, then + // it will be too complex. } - - #pragma mark - WKNavigationDelegate -- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { - NSString *url = [[[navigationAction request] URL] absoluteString]; - if ([[webView.URL scheme] isEqualToString:self.jsScheme]) { +- (void)webView:(WKWebView*)webView + decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction + decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler +{ + NSString* url = [[[navigationAction request] URL] absoluteString]; + if ([[webView.URL scheme] isEqualToString:self.jsScheme]) + { self.onJsCallback([url UTF8String]); decisionHandler(WKNavigationActionPolicyCancel); return; } - if (self.shouldStartLoading && url) { - if (self.shouldStartLoading([url UTF8String]) ) + if (self.shouldStartLoading && url) + { + if (self.shouldStartLoading([url UTF8String])) decisionHandler(WKNavigationActionPolicyAllow); else decisionHandler(WKNavigationActionPolicyCancel); @@ -262,17 +323,22 @@ - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigati decisionHandler(WKNavigationActionPolicyAllow); } -- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { - if (self.didFinishLoading) { - NSString *url = [webView.URL absoluteString]; +- (void)webView:(WKWebView*)webView didFinishNavigation:(WKNavigation*)navigation +{ + if (self.didFinishLoading) + { + NSString* url = [webView.URL absoluteString]; self.didFinishLoading([url UTF8String]); } } -- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error { - if (self.didFailLoading) { - NSString *errorInfo = error.userInfo[NSURLErrorFailingURLStringErrorKey]; - if (errorInfo) { +- (void)webView:(WKWebView*)webView didFailProvisionalNavigation:(WKNavigation*)navigation withError:(NSError*)error +{ + if (self.didFailLoading) + { + NSString* errorInfo = error.userInfo[NSURLErrorFailingURLStringErrorKey]; + if (errorInfo) + { self.didFailLoading([errorInfo UTF8String]); } } @@ -281,168 +347,196 @@ - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation #pragma WKUIDelegate // Implement js alert function. -- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)())completionHandler +- (void)webView:(WKWebView*)webView + runJavaScriptAlertPanelWithMessage:(NSString*)message + initiatedByFrame:(WKFrameInfo*)frame + completionHandler:(void (^)())completionHandler { - UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message + UIAlertController* alertController = [UIAlertController alertControllerWithTitle:message message:nil preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleCancel - handler:^(UIAlertAction *action) { - completionHandler(); + handler:^(UIAlertAction* action) { + completionHandler(); }]]; auto rootViewController = [UIApplication sharedApplication].windows[0].rootViewController; - [rootViewController presentViewController:alertController animated:YES completion:^{}]; + [rootViewController presentViewController:alertController + animated:YES + completion:^{ + }]; } @end +namespace cocos2d +{ +namespace ui +{ +WebViewImpl::WebViewImpl(WebView* webView) : _uiWebViewWrapper([UIWebViewWrapper newWebViewWrapper]), _webView(webView) +{ -namespace cocos2d { -namespace ui{ - -WebViewImpl::WebViewImpl(WebView *webView) - : _uiWebViewWrapper([UIWebViewWrapper newWebViewWrapper]), - _webView(webView) { - _uiWebViewWrapper.shouldStartLoading = [this](std::string url) { - if (this->_webView->_onShouldStartLoading) { + if (this->_webView->_onShouldStartLoading) + { return this->_webView->_onShouldStartLoading(this->_webView, url); } return true; }; _uiWebViewWrapper.didFinishLoading = [this](std::string url) { - if (this->_webView->_onDidFinishLoading) { + if (this->_webView->_onDidFinishLoading) + { this->_webView->_onDidFinishLoading(this->_webView, url); } }; _uiWebViewWrapper.didFailLoading = [this](std::string url) { - if (this->_webView->_onDidFailLoading) { + if (this->_webView->_onDidFailLoading) + { this->_webView->_onDidFailLoading(this->_webView, url); } }; _uiWebViewWrapper.onJsCallback = [this](std::string url) { - if (this->_webView->_onJSCallback) { + if (this->_webView->_onJSCallback) + { this->_webView->_onJSCallback(this->_webView, url); } }; } -WebViewImpl::~WebViewImpl(){ +WebViewImpl::~WebViewImpl() +{ [_uiWebViewWrapper release]; _uiWebViewWrapper = nullptr; } -void WebViewImpl::setJavascriptInterfaceScheme(const std::string &scheme) { +void WebViewImpl::setJavascriptInterfaceScheme(const std::string& scheme) +{ [_uiWebViewWrapper setJavascriptInterfaceScheme:scheme]; } -void WebViewImpl::loadData(const Data &data, - const std::string &MIMEType, - const std::string &encoding, - const std::string &baseURL) { - - std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); +void WebViewImpl::loadData(const Data& data, + const std::string& MIMEType, + const std::string& encoding, + const std::string& baseURL) +{ + + std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); [_uiWebViewWrapper loadData:dataString MIMEType:MIMEType textEncodingName:encoding baseURL:baseURL]; } -void WebViewImpl::loadHTMLString(const std::string &string, const std::string &baseURL) { +void WebViewImpl::loadHTMLString(const std::string& string, const std::string& baseURL) +{ [_uiWebViewWrapper loadHTMLString:string baseURL:baseURL]; } -void WebViewImpl::loadURL(const std::string &url) { +void WebViewImpl::loadURL(const std::string& url) +{ this->loadURL(url, false); } -void WebViewImpl::loadURL(const std::string &url, bool cleanCachedData) { +void WebViewImpl::loadURL(const std::string& url, bool cleanCachedData) +{ [_uiWebViewWrapper loadUrl:url cleanCachedData:cleanCachedData]; } -void WebViewImpl::loadFile(const std::string &fileName) { +void WebViewImpl::loadFile(const std::string& fileName) +{ auto fullPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(fileName); [_uiWebViewWrapper loadFile:fullPath]; } -void WebViewImpl::stopLoading() { +void WebViewImpl::stopLoading() +{ [_uiWebViewWrapper stopLoading]; } -void WebViewImpl::reload() { +void WebViewImpl::reload() +{ [_uiWebViewWrapper reload]; } -bool WebViewImpl::canGoBack() { +bool WebViewImpl::canGoBack() +{ return _uiWebViewWrapper.canGoBack; } -bool WebViewImpl::canGoForward() { +bool WebViewImpl::canGoForward() +{ return _uiWebViewWrapper.canGoForward; } -void WebViewImpl::goBack() { +void WebViewImpl::goBack() +{ [_uiWebViewWrapper goBack]; } -void WebViewImpl::goForward() { +void WebViewImpl::goForward() +{ [_uiWebViewWrapper goForward]; } -void WebViewImpl::evaluateJS(const std::string &js) { +void WebViewImpl::evaluateJS(const std::string& js) +{ [_uiWebViewWrapper evaluateJS:js]; } -void WebViewImpl::setBounces(bool bounces) { +void WebViewImpl::setBounces(bool bounces) +{ [_uiWebViewWrapper setBounces:bounces]; } -void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) { +void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) +{ [_uiWebViewWrapper setScalesPageToFit:scalesPageToFit]; } -void WebViewImpl::draw(cocos2d::Renderer *renderer, cocos2d::Mat4 const &transform, uint32_t flags) { - if (flags & cocos2d::Node::FLAGS_TRANSFORM_DIRTY) { - - auto director = cocos2d::Director::getInstance(); - auto glView = director->getOpenGLView(); +void WebViewImpl::draw(cocos2d::Renderer* renderer, cocos2d::Mat4 const& transform, uint32_t flags) +{ + if (flags & cocos2d::Node::FLAGS_TRANSFORM_DIRTY) + { + + auto director = cocos2d::Director::getInstance(); + auto glView = director->getOpenGLView(); auto frameSize = glView->getFrameSize(); - - auto scaleFactor = [static_cast(glView->getEAGLView()) contentScaleFactor]; + + auto scaleFactor = [static_cast(glView->getEAGLView()) contentScaleFactor]; auto winSize = director->getWinSize(); auto leftBottom = this->_webView->convertToWorldSpace(cocos2d::Vec2::ZERO); - auto rightTop = this->_webView->convertToWorldSpace(cocos2d::Vec2(this->_webView->getContentSize().width, this->_webView->getContentSize().height)); + auto rightTop = this->_webView->convertToWorldSpace( + cocos2d::Vec2(this->_webView->getContentSize().width, this->_webView->getContentSize().height)); - auto x = (frameSize.width / 2 + (leftBottom.x - winSize.width / 2) * glView->getScaleX()) / scaleFactor; - auto y = (frameSize.height / 2 - (rightTop.y - winSize.height / 2) * glView->getScaleY()) / scaleFactor; - auto width = (rightTop.x - leftBottom.x) * glView->getScaleX() / scaleFactor; + auto x = (frameSize.width / 2 + (leftBottom.x - winSize.width / 2) * glView->getScaleX()) / scaleFactor; + auto y = (frameSize.height / 2 - (rightTop.y - winSize.height / 2) * glView->getScaleY()) / scaleFactor; + auto width = (rightTop.x - leftBottom.x) * glView->getScaleX() / scaleFactor; auto height = (rightTop.y - leftBottom.y) * glView->getScaleY() / scaleFactor; - [_uiWebViewWrapper setFrameWithX:x - y:y - width:width - height:height]; + [_uiWebViewWrapper setFrameWithX:x y:y width:width height:height]; } } -void WebViewImpl::setVisible(bool visible){ +void WebViewImpl::setVisible(bool visible) +{ [_uiWebViewWrapper setVisible:visible]; } - -void WebViewImpl::setOpacityWebView(float opacity){ - [_uiWebViewWrapper setOpacityWebView: opacity]; + +void WebViewImpl::setOpacityWebView(float opacity) +{ + [_uiWebViewWrapper setOpacityWebView:opacity]; } - -float WebViewImpl::getOpacityWebView() const{ + +float WebViewImpl::getOpacityWebView() const +{ return [_uiWebViewWrapper getOpacityWebView]; } -void WebViewImpl::setBackgroundTransparent(){ +void WebViewImpl::setBackgroundTransparent() +{ [_uiWebViewWrapper setBackgroundTransparent]; } - -} // namespace ui -} //namespace cocos2d +} // namespace ui +} // namespace cocos2d diff --git a/extensions/DragonBones/CCArmatureDisplay.cpp b/extensions/DragonBones/CCArmatureDisplay.cpp index 1801334daeac..81c12b564e6c 100644 --- a/extensions/DragonBones/CCArmatureDisplay.cpp +++ b/extensions/DragonBones/CCArmatureDisplay.cpp @@ -69,8 +69,7 @@ void CCArmatureDisplay::dispatchDBEvent(std::string_view type, EventObject* valu _dispatcher->dispatchCustomEvent(type, value); } -void CCArmatureDisplay::removeDBEventListener(std::string_view type, - const std::function& callback) +void CCArmatureDisplay::removeDBEventListener(std::string_view type, const std::function& callback) { // TODO _dispatcher->removeCustomEventListeners(type); diff --git a/extensions/DragonBones/CCArmatureDisplay.h b/extensions/DragonBones/CCArmatureDisplay.h index 0c6092f3d961..a055e6add01f 100644 --- a/extensions/DragonBones/CCArmatureDisplay.h +++ b/extensions/DragonBones/CCArmatureDisplay.h @@ -91,8 +91,7 @@ class CCArmatureDisplay : public cocos2d::Node, public virtual IArmatureProxy /** * @inheritDoc */ - virtual void addDBEventListener(std::string_view type, - const std::function& listener) override; + virtual void addDBEventListener(std::string_view type, const std::function& listener) override; /** * @inheritDoc */ diff --git a/extensions/DragonBones/CCFactory.h b/extensions/DragonBones/CCFactory.h index 435f745ae52d..d4fbfdc4eb4d 100644 --- a/extensions/DragonBones/CCFactory.h +++ b/extensions/DragonBones/CCFactory.h @@ -104,7 +104,7 @@ class CCFactory : public BaseFactory public: virtual DragonBonesData* loadDragonBonesData(std::string_view filePath, std::string_view name = "", - float scale = 1.0f); + float scale = 1.0f); /** * - Load and parse a texture atlas data and texture from the local and cache them to the factory. * @param filePath - The file path of texture atlas data. @@ -134,7 +134,7 @@ class CCFactory : public BaseFactory */ virtual TextureAtlasData* loadTextureAtlasData(std::string_view filePath, std::string_view name = "", - float scale = 1.0f); + float scale = 1.0f); /** * - Create a armature from cached DragonBonesData instances and TextureAtlasData instances, then use the {@link * #clock} to update it. The difference is that the armature created by {@link #buildArmature} is not WorldClock diff --git a/extensions/DragonBones/animation/Animation.h b/extensions/DragonBones/animation/Animation.h index 9faa7b2aeb2b..524ade25fbd3 100644 --- a/extensions/DragonBones/animation/Animation.h +++ b/extensions/DragonBones/animation/Animation.h @@ -215,7 +215,7 @@ class Animation final : public BaseObject float fadeInTime = -1.f, int playTimes = -1, int layer = 0, - std::string_view group = "", + std::string_view group = "", AnimationFadeOutMode fadeOutMode = AnimationFadeOutMode::SameLayerAndGroup); /** * - Play a specific animation from the specific time. diff --git a/extensions/DragonBones/factory/BaseFactory.cpp b/extensions/DragonBones/factory/BaseFactory.cpp index 65c068596cc7..afa0b9fa13c4 100644 --- a/extensions/DragonBones/factory/BaseFactory.cpp +++ b/extensions/DragonBones/factory/BaseFactory.cpp @@ -47,7 +47,7 @@ bool BaseFactory::_fillBuildArmaturePackage(BuildArmaturePackage& dataPackage, std::string_view skinName, std::string_view textureAtlasName) const { - auto mapName = dragonBonesName; + auto mapName = dragonBonesName; DragonBonesData* dragonBonesData = nullptr; ArmatureData* armatureData = nullptr; diff --git a/extensions/DragonBones/factory/BaseFactory.h b/extensions/DragonBones/factory/BaseFactory.h index 61766b3fa43e..dcd8d8d3348e 100644 --- a/extensions/DragonBones/factory/BaseFactory.h +++ b/extensions/DragonBones/factory/BaseFactory.h @@ -151,9 +151,7 @@ class BaseFactory * @version DragonBones 4.5 * @language zh_CN */ - virtual DragonBonesData* parseDragonBonesData(const char* rawData, - std::string_view name = "", - float scale = 1.0f); + virtual DragonBonesData* parseDragonBonesData(const char* rawData, std::string_view name = "", float scale = 1.0f); /** * - Parse the raw texture atlas data and the texture atlas object to a TextureAtlasData instance and cache it to * the factory. @@ -187,7 +185,7 @@ class BaseFactory virtual TextureAtlasData* parseTextureAtlasData(const char* rawData, void* textureAtlas, std::string_view name = "", - float scale = 1.0f); + float scale = 1.0f); /** * - Get a specific DragonBonesData instance. * @param name - The DragonBonesData instance cache name. diff --git a/extensions/DragonBones/model/ArmatureData.h b/extensions/DragonBones/model/ArmatureData.h index 83210f44015b..7c39c718bb55 100644 --- a/extensions/DragonBones/model/ArmatureData.h +++ b/extensions/DragonBones/model/ArmatureData.h @@ -260,9 +260,7 @@ class ArmatureData : public BaseObject /** * @private */ - MeshDisplayData* getMesh(std::string_view skinName, - std::string_view slotName, - std::string_view meshName) const; + MeshDisplayData* getMesh(std::string_view skinName, std::string_view slotName, std::string_view meshName) const; /** * - Get a specific animation data. * @param animationName - The animation animationName. diff --git a/extensions/DragonBones/model/DragonBonesData.h b/extensions/DragonBones/model/DragonBonesData.h index 5b20114fd97c..539d34896f6b 100644 --- a/extensions/DragonBones/model/DragonBonesData.h +++ b/extensions/DragonBones/model/DragonBonesData.h @@ -158,10 +158,7 @@ class DragonBonesData : public BaseObject * @version DragonBones 3.0 * @language zh_CN */ - inline ArmatureData* getArmature(std::string_view armatureName) const - { - return mapFind(armatures, armatureName); - } + inline ArmatureData* getArmature(std::string_view armatureName) const { return mapFind(armatures, armatureName); } protected: virtual void _onClear() override; diff --git a/extensions/DragonBones/model/TextureAtlasData.h b/extensions/DragonBones/model/TextureAtlasData.h index ae98fe39a773..08b266d356db 100644 --- a/extensions/DragonBones/model/TextureAtlasData.h +++ b/extensions/DragonBones/model/TextureAtlasData.h @@ -100,10 +100,7 @@ class TextureAtlasData : public BaseObject /** * @private */ - inline TextureData* getTexture(std::string_view textureName) const - { - return mapFind(textures, textureName); - } + inline TextureData* getTexture(std::string_view textureName) const { return mapFind(textures, textureName); } protected: virtual void _onClear() override; diff --git a/extensions/GUI/CCControlExtension/CCControlButton.h b/extensions/GUI/CCControlExtension/CCControlButton.h index c28624cc4e20..9a5f80734fb2 100644 --- a/extensions/GUI/CCControlExtension/CCControlButton.h +++ b/extensions/GUI/CCControlExtension/CCControlButton.h @@ -207,9 +207,7 @@ class CC_EX_DLL ControlButton : public Control cocos2d::ui::Scale9Sprite* backgroundSprite, bool adjustBackGroundSize); virtual bool initWithBackgroundSprite(cocos2d::ui::Scale9Sprite* sprite); - virtual bool initWithTitleAndFontNameAndFontSize(std::string_view title, - std::string_view fontName, - float fontSize); + virtual bool initWithTitleAndFontNameAndFontSize(std::string_view title, std::string_view fontName, float fontSize); protected: bool _isPushed; diff --git a/extensions/ImGuiEXT/imgui/imconfig.h b/extensions/ImGuiEXT/imgui/imconfig.h index d84c59423bbe..768377be307d 100644 --- a/extensions/ImGuiEXT/imgui/imconfig.h +++ b/extensions/ImGuiEXT/imgui/imconfig.h @@ -32,36 +32,36 @@ //#define IMGUI_API __declspec( dllimport ) //---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid -//using soon-to-be obsolete function/names. #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS +// using soon-to-be obsolete function/names. #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS //---- Disable all of Dear ImGui or don't implement standard windows. // It is very strongly recommended to NOT disable the demo windows during development. Please read comments in // imgui_demo.cpp. //#define IMGUI_DISABLE // Disable everything: all headers and source files will be -//empty. #define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: -//ShowDemoWindow()/ShowStyleEditor() will be empty. Not recommended. #define IMGUI_DISABLE_METRICS_WINDOW // Disable -//metrics/debugger window: ShowMetricsWindow() will be empty. +// empty. #define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: +// ShowDemoWindow()/ShowStyleEditor() will be empty. Not recommended. #define IMGUI_DISABLE_METRICS_WINDOW // Disable +// metrics/debugger window: ShowMetricsWindow() will be empty. //---- Don't implement some functions to reduce linkage requirements. //#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't -//use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a) #define -//IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME -//handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW) #define -//IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't -//implement default IME handler (won't require imm32.lib/.a) #define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use -//and link with any Win32 function (clipboard, ime). #define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] -//Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not -//the default). #define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement -//ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf) +// use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a) #define +// IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME +// handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW) #define +// IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't +// implement default IME handler (won't require imm32.lib/.a) #define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use +// and link with any Win32 function (clipboard, ime). #define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] +// Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not +// the default). #define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement +// ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf) //#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement -//ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself. #define -//IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and -//ImFileHandle at all (replace them with dummies) #define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't -//implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if you -//don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function. #define -//IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to -//avoid linking with them. You will need to call ImGui::SetAllocatorFunctions(). #define IMGUI_DISABLE_SSE // Disable -//use of SSE intrinsics even if available +// ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself. #define +// IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite +// and ImFileHandle at all (replace them with dummies) #define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // +// Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if +// you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function. #define +// IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to +// avoid linking with them. You will need to call ImGui::SetAllocatorFunctions(). #define IMGUI_DISABLE_SSE // Disable +// use of SSE intrinsics even if available //---- Include imgui_user.h at the end of imgui.h as a convenience //#define IMGUI_INCLUDE_IMGUI_USER_H @@ -70,7 +70,7 @@ //#define IMGUI_USE_BGRA_PACKED_COLOR //---- Use 32-bit for ImWchar (default is 16-bit) to support unicode planes 1-16. (e.g. point beyond 0xFFFF like -//emoticons, dingbats, symbols, shapes, ancient languages, etc...) #define IMGUI_USE_WCHAR32 +// emoticons, dingbats, symbols, shapes, ancient languages, etc...) #define IMGUI_USE_WCHAR32 //---- Avoid multiple STB libraries implementations, or redefine path/filenames to prioritize another version // By default the embedded implementations are declared static and not available outside of Dear ImGui sources files. @@ -80,13 +80,13 @@ //#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION //---- Use stb_printf's faster implementation of vsnprintf instead of the one from libc (unless -//IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined) +// IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined) // Requires 'stb_sprintf.h' to be available in the include path. Compatibility checks of arguments and formats done by // clang and GCC will be disabled in order to support the extra formats provided by STB sprintf. #define // IMGUI_USE_STB_SPRINTF //---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear -//ImGui) +// ImGui) // Requires FreeType headers to be available in the include path. Requires program to be compiled with // 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided). On Windows you may use // vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'. diff --git a/extensions/ImGuiEXT/imgui/imgui.cpp b/extensions/ImGuiEXT/imgui/imgui.cpp index e8f0481d3958..e9c52c3bf07d 100644 --- a/extensions/ImGuiEXT/imgui/imgui.cpp +++ b/extensions/ImGuiEXT/imgui/imgui.cpp @@ -1115,7 +1115,7 @@ you share your issues (on GitHub or privately). # endif # pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' # pragma clang diagnostic ignored "-Wold-style-cast" // warning: use of old-style cast // yes, they are more - // terse. + // terse. # pragma clang diagnostic ignored \ "-Wfloat-equal" // warning: comparing floating point with == or != is unsafe // storing and comparing // against same constants (typically 0.0f) is ok. @@ -19477,7 +19477,7 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport) } BulletText("Flags: 0x%04X =%s%s%s%s%s%s%s%s%s%s%s%s", viewport->Flags, //(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "", // Omitting because it is - //the standard + // the standard (flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "", (flags & ImGuiViewportFlags_OwnedByApp) ? " OwnedByApp" : "", (flags & ImGuiViewportFlags_NoDecoration) ? " NoDecoration" : "", diff --git a/extensions/ImGuiEXT/imgui/imgui.h b/extensions/ImGuiEXT/imgui/imgui.h index 279b0073191b..91c3a68e895f 100644 --- a/extensions/ImGuiEXT/imgui/imgui.h +++ b/extensions/ImGuiEXT/imgui/imgui.h @@ -2114,9 +2114,9 @@ enum ImGuiTableFlags_ // Obsolete names (will be removed soon) # ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS //, ImGuiTableFlags_ColumnsWidthFixed = ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_ColumnsWidthStretch = -//ImGuiTableFlags_SizingStretchSame // WIP Tables 2020/12 , ImGuiTableFlags_SizingPolicyFixed = -//ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingPolicyStretch = ImGuiTableFlags_SizingStretchSame // WIP -//Tables 2021/01 +// ImGuiTableFlags_SizingStretchSame // WIP Tables 2020/12 , ImGuiTableFlags_SizingPolicyFixed = +// ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingPolicyStretch = ImGuiTableFlags_SizingStretchSame // WIP +// Tables 2021/01 # endif }; diff --git a/extensions/ImGuiEXT/imgui/imgui_demo.cpp b/extensions/ImGuiEXT/imgui/imgui_demo.cpp index 1818e5ff63d6..26d3e0c97a04 100644 --- a/extensions/ImGuiEXT/imgui/imgui_demo.cpp +++ b/extensions/ImGuiEXT/imgui/imgui_demo.cpp @@ -112,7 +112,7 @@ Index of this file: # endif # pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' # pragma clang diagnostic ignored "-Wold-style-cast" // warning: use of old-style cast // yes, they are more - // terse. + // terse. # pragma clang diagnostic ignored \ "-Wdeprecated-declarations" // warning: 'xx' is deprecated: The POSIX name for this.. // for strdup used // in demo code (so user can copy & paste the code) diff --git a/extensions/ImGuiEXT/imgui/imgui_draw.cpp b/extensions/ImGuiEXT/imgui/imgui_draw.cpp index 7732f201057e..b251bc25fa97 100644 --- a/extensions/ImGuiEXT/imgui/imgui_draw.cpp +++ b/extensions/ImGuiEXT/imgui/imgui_draw.cpp @@ -81,7 +81,7 @@ Index of this file: # endif # pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' # pragma clang diagnostic ignored "-Wold-style-cast" // warning: use of old-style cast // yes, they are more - // terse. + // terse. # pragma clang diagnostic ignored "-Wfloat-equal" // warning: comparing floating point with == or != is unsafe // // storing and comparing against same constants ok. # pragma clang diagnostic ignored \ diff --git a/extensions/ImGuiEXT/imgui/imgui_tables.cpp b/extensions/ImGuiEXT/imgui/imgui_tables.cpp index beac7c628789..c29b320b6fad 100644 --- a/extensions/ImGuiEXT/imgui/imgui_tables.cpp +++ b/extensions/ImGuiEXT/imgui/imgui_tables.cpp @@ -260,7 +260,7 @@ Index of this file: # endif # pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' # pragma clang diagnostic ignored "-Wold-style-cast" // warning: use of old-style cast // yes, they are more - // terse. + // terse. # pragma clang diagnostic ignored \ "-Wfloat-equal" // warning: comparing floating point with == or != is unsafe // storing and comparing // against same constants (typically 0.0f) is ok. diff --git a/extensions/ImGuiEXT/imgui/imgui_widgets.cpp b/extensions/ImGuiEXT/imgui/imgui_widgets.cpp index 9b68c0359f58..02be44862595 100644 --- a/extensions/ImGuiEXT/imgui/imgui_widgets.cpp +++ b/extensions/ImGuiEXT/imgui/imgui_widgets.cpp @@ -78,7 +78,7 @@ Index of this file: # endif # pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' # pragma clang diagnostic ignored "-Wold-style-cast" // warning: use of old-style cast // yes, they are more - // terse. + // terse. # pragma clang diagnostic ignored \ "-Wfloat-equal" // warning: comparing floating point with == or != is unsafe // storing and comparing // against same constants (typically 0.0f) is ok. diff --git a/extensions/Particle3D/PU/CCPUAffector.cpp b/extensions/Particle3D/PU/CCPUAffector.cpp index 80323f456289..a41dfc001dee 100644 --- a/extensions/Particle3D/PU/CCPUAffector.cpp +++ b/extensions/Particle3D/PU/CCPUAffector.cpp @@ -190,7 +190,7 @@ void PUAffector::process(PUParticle3D* particle, float delta, bool firstParticle { // Return if the emitter which emits this particle is part of the vector auto emitterName = particle->parentEmitter->getName(); - auto iter = std::find(_excludedEmitters.begin(), _excludedEmitters.end(), emitterName); + auto iter = std::find(_excludedEmitters.begin(), _excludedEmitters.end(), emitterName); if (iter != _excludedEmitters.end()) { return; diff --git a/extensions/Particle3D/PU/CCPUBillboardChain.h b/extensions/Particle3D/PU/CCPUBillboardChain.h index 12825a0f1c62..ce4b77cac54d 100644 --- a/extensions/Particle3D/PU/CCPUBillboardChain.h +++ b/extensions/Particle3D/PU/CCPUBillboardChain.h @@ -79,11 +79,11 @@ class PUBillboardChain */ PUBillboardChain(std::string_view name, std::string_view texFile = "", - size_t maxElements = 20, - size_t numberOfChains = 1, - bool useTextureCoords = true, - bool useColours = true, - bool dynamic = true); + size_t maxElements = 20, + size_t numberOfChains = 1, + bool useTextureCoords = true, + bool useColours = true, + bool dynamic = true); /// destructor virtual ~PUBillboardChain(); diff --git a/extensions/Particle3D/PU/CCPULineEmitter.cpp b/extensions/Particle3D/PU/CCPULineEmitter.cpp index 394307f312ec..674822c247d9 100644 --- a/extensions/Particle3D/PU/CCPULineEmitter.cpp +++ b/extensions/Particle3D/PU/CCPULineEmitter.cpp @@ -92,7 +92,7 @@ unsigned short PULineEmitter::calculateRequestedParticles(float timeElapsed) //{ // notifyStart(); // mParentTechnique->lockAllParticles(); // Needed to set the first generated particle also first in the - //list with particles + // list with particles // } } diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.cpp b/extensions/Particle3D/PU/CCPUMaterialManager.cpp index 7a0818ce7fd9..abd047630d57 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.cpp +++ b/extensions/Particle3D/PU/CCPUMaterialManager.cpp @@ -150,8 +150,8 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) } _findclose(handle); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID /* || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX*/) - std::string::size_type pos = fileFolder.find("assets/"); - std::string_view relativePath = fileFolder; + std::string::size_type pos = fileFolder.find("assets/"); + std::string_view relativePath = fileFolder; if (pos != std::string::npos) { // "assets/" is at the beginning of the path and we don't want it @@ -159,7 +159,7 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) } AAssetDir* dir = AAssetManager_openDir(FileUtilsAndroid::getAssetManager(), relativePath.data()); const char* fileName = nullptr; - std::string_view seg("/",1); + std::string_view seg("/", 1); std::string fullpath; while ((fileName = AAssetDir_getNextFileName(dir)) != nullptr) { diff --git a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp index 2ee1f24f7df8..cb86e668bb04 100644 --- a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp @@ -307,7 +307,7 @@ const PUTriangle::PositionAndNormal MeshInfo::getRandomPositionAndNormal(const s // { // Ogre::SubMesh* submesh = mesh->getSubMesh(i); // Ogre::VertexData* vertex_data = submesh->useSharedVertices ? mesh->sharedVertexData : -//submesh->vertexData; +// submesh->vertexData; // // if((!submesh->useSharedVertices)||(submesh->useSharedVertices && !added_shared)) // { @@ -318,10 +318,11 @@ const PUTriangle::PositionAndNormal MeshInfo::getRandomPositionAndNormal(const s // } // // const Ogre::VertexElement* posElem = -//vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_POSITION); const Ogre::VertexElement* normalElem = -//vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_NORMAL); Ogre::HardwareVertexBufferSharedPtr vbuf = -//vertex_data->vertexBufferBinding->getBuffer(posElem->getSource()); unsigned char* vertex = static_cast(vbuf->lock(Ogre::HardwareBuffer::HBL_READ_ONLY)); float* pReal; +// vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_POSITION); const Ogre::VertexElement* +// normalElem = vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_NORMAL); +// Ogre::HardwareVertexBufferSharedPtr vbuf = vertex_data->vertexBufferBinding->getBuffer(posElem->getSource()); +// unsigned char* vertex = static_cast(vbuf->lock(Ogre::HardwareBuffer::HBL_READ_ONLY)); +// float* pReal; // // for( size_t j = 0; j < vertex_data->vertexCount; ++j, vertex += vbuf->getVertexSize()) // { @@ -359,7 +360,7 @@ const PUTriangle::PositionAndNormal MeshInfo::getRandomPositionAndNormal(const s // for ( size_t k = 0; k < numTrisMultThree; ++k) // { // indices[index_offset++] = static_cast(pShort[k]) + static_cast(offset); +// long>(offset); // } // } // diff --git a/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp b/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp index 6fabe49b9b13..4f5ea0c39366 100644 --- a/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp +++ b/extensions/Particle3D/PU/CCPUParticleSystem3D.cpp @@ -1113,7 +1113,7 @@ void PUParticleSystem3D::initParticleForExpiration(PUParticle3D* particle, float it->particleExpired(this, particle); } ///** Externs are also called to perform expiration activities. If needed, affectors and emitters may be added, but - ///at the moment + /// at the moment // there is no reason for (and we don't want to waste cpu resources). //*/ // if (!mExterns.empty()) diff --git a/extensions/Particle3D/PU/CCPUParticleSystem3DTranslator.cpp b/extensions/Particle3D/PU/CCPUParticleSystem3DTranslator.cpp index 29b6e0869717..819aa25f7d9e 100644 --- a/extensions/Particle3D/PU/CCPUParticleSystem3DTranslator.cpp +++ b/extensions/Particle3D/PU/CCPUParticleSystem3DTranslator.cpp @@ -107,7 +107,7 @@ void PUParticleSystem3DTranslator::translate(PUScriptCompiler* compiler, PUAbstr // else // { // compiler->addError(PUScriptCompiler::CE_NUMBEREXPECTED, prop->file, - //prop->line, + // prop->line, // "PU Compiler: lod_distances expects only numbers as // arguments"); // } @@ -238,7 +238,8 @@ void PUParticleSystem3DTranslator::translate(PUScriptCompiler* compiler, PUAbstr // { // ParticleTechnique* technique = static_cast(alias); // ParticleTechnique* newTechnique = - //ParticleSystemManager::getSingletonPtr()->cloneTechnique(technique); mSystem->addTechnique(newTechnique); + // ParticleSystemManager::getSingletonPtr()->cloneTechnique(technique); + // mSystem->addTechnique(newTechnique); // } // } // } diff --git a/extensions/Particle3D/PU/CCPURender.cpp b/extensions/Particle3D/PU/CCPURender.cpp index cccefce1bdfc..62c250500702 100644 --- a/extensions/Particle3D/PU/CCPURender.cpp +++ b/extensions/Particle3D/PU/CCPURender.cpp @@ -227,25 +227,25 @@ void PUParticle3DQuadRender::render(Renderer* renderer, const Mat4& transform, P //_posuvcolors[vertexindex].position = (position + (- halfwidth - halfheight + halfwidth * offsetX + halfheight //* offsetY)); _posuvcolors[vertexindex].color = particle->color; _posuvcolors[vertexindex].uv.set(val.x + - //texOffset.x, val.y + texOffset.y); + // texOffset.x, val.y + texOffset.y); // val.set(particle->rt_uv.x - texOffset.x, particle->lb_uv.y - texOffset.y); // val.set(val.x * costheta - val.y * sintheta, val.x * sintheta + val.y * costheta); //_posuvcolors[vertexindex + 1].position = (position + (halfwidth - halfheight + halfwidth * offsetX + - //halfheight * offsetY)); _posuvcolors[vertexindex + 1].color = particle->color; _posuvcolors[vertexindex + - //1].uv.set(val.x + texOffset.x, val.y + texOffset.y); + // halfheight * offsetY)); _posuvcolors[vertexindex + 1].color = particle->color; _posuvcolors[vertexindex + + // 1].uv.set(val.x + texOffset.x, val.y + texOffset.y); // // val.set(particle->lb_uv.x - texOffset.x, particle->rt_uv.y - texOffset.y); // val.set(val.x * costheta - val.y * sintheta, val.x * sintheta + val.y * costheta); //_posuvcolors[vertexindex + 2].position = (position + (- halfwidth + halfheight + halfwidth * offsetX + - //halfheight * offsetY)); _posuvcolors[vertexindex + 2].color = particle->color; _posuvcolors[vertexindex + - //2].uv.set(val.x + texOffset.x, val.y + texOffset.y); + // halfheight * offsetY)); _posuvcolors[vertexindex + 2].color = particle->color; _posuvcolors[vertexindex + + // 2].uv.set(val.x + texOffset.x, val.y + texOffset.y); // // val.set(particle->rt_uv.x - texOffset.x, particle->rt_uv.y - texOffset.y); // val.set(val.x * costheta - val.y * sintheta, val.x * sintheta + val.y * costheta); //_posuvcolors[vertexindex + 3].position = (position + (halfwidth + halfheight + halfwidth * offsetX + - //halfheight * offsetY)); _posuvcolors[vertexindex + 3].color = particle->color; _posuvcolors[vertexindex + - //3].uv.set(val.x + texOffset.x, val.y + texOffset.y); + // halfheight * offsetY)); _posuvcolors[vertexindex + 3].color = particle->color; _posuvcolors[vertexindex + + // 3].uv.set(val.x + texOffset.x, val.y + texOffset.y); // // //_indexData[index] = vertexindex; @@ -488,8 +488,7 @@ PUParticle3DQuadRender* PUParticle3DQuadRender::clone() return render; } -PUParticle3DModelRender* PUParticle3DModelRender::create(std::string_view modelFile, - std::string_view texFile /*= ""*/) +PUParticle3DModelRender* PUParticle3DModelRender::create(std::string_view modelFile, std::string_view texFile /*= ""*/) { auto ret = new PUParticle3DModelRender(); ret->_modelFile = modelFile; diff --git a/extensions/Particle3D/PU/CCPURibbonTrail.h b/extensions/Particle3D/PU/CCPURibbonTrail.h index 9b3258796935..e2fa1183e9f0 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrail.h +++ b/extensions/Particle3D/PU/CCPURibbonTrail.h @@ -50,10 +50,10 @@ class PURibbonTrail : public PUBillboardChain */ PURibbonTrail(std::string_view name, std::string_view texFile = "", - size_t maxElements = 20, - size_t numberOfChains = 1, - bool useTextureCoords = true, - bool useColours = true); + size_t maxElements = 20, + size_t numberOfChains = 1, + bool useTextureCoords = true, + bool useColours = true); /// destructor virtual ~PURibbonTrail(); diff --git a/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp b/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp index 9d9d89a2bb4d..207957111507 100644 --- a/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp +++ b/extensions/Particle3D/PU/CCPURibbonTrailRender.cpp @@ -233,7 +233,7 @@ void PURibbonTrailRender::prepare() ss << this; std::string childNodeNodeName = "ParticleUniverse" + ss.str(); //_childNode = - //mParentTechnique->getParentSystem()->getParentSceneNode()->createChildSceneNode(childNodeNodeName); + // mParentTechnique->getParentSystem()->getParentSceneNode()->createChildSceneNode(childNodeNodeName); //_childNode->setInheritOrientation(false); auto parent = _particleSystem->getParent(); if (parent) @@ -270,7 +270,7 @@ void PURibbonTrailRender::prepare() // sceneNodeName = "ParticleUniverse" + ss.str() + StringConverter::toString(i); // RibbonTrailRendererVisualData* visualData = // PU_NEW_T(RibbonTrailRendererVisualData, - //MEMCATEGORY_SCENE_OBJECTS)(_childNode->createChildSceneNode(sceneNodeName), _trail); + // MEMCATEGORY_SCENE_OBJECTS)(_childNode->createChildSceneNode(sceneNodeName), _trail); // visualData->node->setInheritOrientation(false); auto node = Node::create(); _childNode->addChild(node); diff --git a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp index 9b31dc5fc550..026311ffc588 100644 --- a/extensions/Particle3D/PU/CCPUScriptCompiler.cpp +++ b/extensions/Particle3D/PU/CCPUScriptCompiler.cpp @@ -189,7 +189,7 @@ PUScriptCompiler::~PUScriptCompiler() } hlookup::string_map::iterator PUScriptCompiler::compile(const PUConcreteNodeList& nodes, - std::string_view file) + std::string_view file) { if (nodes.empty()) return _compiledScripts.end(); diff --git a/extensions/Particle3D/PU/CCPUScriptTranslator.h b/extensions/Particle3D/PU/CCPUScriptTranslator.h index c57b7664a17c..623bec8d13d8 100644 --- a/extensions/Particle3D/PU/CCPUScriptTranslator.h +++ b/extensions/Particle3D/PU/CCPUScriptTranslator.h @@ -684,9 +684,7 @@ class PUScriptTranslator /** Validate whether a property has values. */ - bool passValidatePropertyNoValues(PUScriptCompiler* compiler, - PUPropertyAbstractNode* prop, - std::string_view token); + bool passValidatePropertyNoValues(PUScriptCompiler* compiler, PUPropertyAbstractNode* prop, std::string_view token); /** Validate whether the number of values is correct. */ diff --git a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp index ffbf9934d343..97f9fc2a2226 100644 --- a/extensions/Particle3D/PU/CCPUVertexEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUVertexEmitter.cpp @@ -184,7 +184,7 @@ NS_CC_BEGIN // void Particle3DVertexEmitter::_loadMesh () //{ // Ogre::MeshPtr mesh = Ogre::MeshManager::getSingleton().load(mMeshName, -//Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); mMesh = mesh.getPointer(); mMeshProcessed = false; +// Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); mMesh = mesh.getPointer(); mMeshProcessed = false; // // if (mMesh->getNumSubMeshes() > 0) // { diff --git a/extensions/assets-manager/CCEventAssetsManagerEx.h b/extensions/assets-manager/CCEventAssetsManagerEx.h index cf205840bf40..11a6ad1220f3 100644 --- a/extensions/assets-manager/CCEventAssetsManagerEx.h +++ b/extensions/assets-manager/CCEventAssetsManagerEx.h @@ -77,12 +77,12 @@ class CC_EX_DLL EventAssetsManagerEx : public cocos2d::EventCustom EventAssetsManagerEx(std::string_view eventName, cocos2d::extension::AssetsManagerEx* manager, const EventCode& code, - float percent = 0, - float percentByFile = 0, + float percent = 0, + float percentByFile = 0, std::string_view assetId = "", std::string_view message = "", - int curle_code = 0, - int curlm_code = 0); + int curle_code = 0, + int curlm_code = 0); private: EventCode _code; diff --git a/extensions/assets-manager/Manifest.cpp b/extensions/assets-manager/Manifest.cpp index 4e64bc8eae66..98af1eb1e191 100644 --- a/extensions/assets-manager/Manifest.cpp +++ b/extensions/assets-manager/Manifest.cpp @@ -59,7 +59,7 @@ static int cmpVersion(std::string_view v1, std::string_view v2) if (filled1 == 0 || filled2 == 0) { - return v1 != v2; // strcmp(v1.data(), v2.data()); + return v1 != v2; // strcmp(v1.data(), v2.data()); } for (i = 0; i < 4; i++) { @@ -161,8 +161,8 @@ bool Manifest::versionEquals(const Manifest* b) const // Check group versions else { - std::vector bGroups = b->getGroups(); - auto& bGroupVer = b->getGroupVerions(); + std::vector bGroups = b->getGroups(); + auto& bGroupVer = b->getGroupVerions(); // Check group size if (bGroups.size() != _groups.size()) return false; @@ -186,8 +186,8 @@ bool Manifest::versionGreater( const Manifest* b, const std::function& handle) const { - std::string_view localVersion = getVersion(); - std::string_view bVersion = b->getVersion(); + std::string_view localVersion = getVersion(); + std::string_view bVersion = b->getVersion(); bool greater; if (handle) { diff --git a/extensions/assets-manager/Manifest.h b/extensions/assets-manager/Manifest.h index 92edcb4dd288..d58260810881 100644 --- a/extensions/assets-manager/Manifest.h +++ b/extensions/assets-manager/Manifest.h @@ -149,9 +149,8 @@ class CC_EX_DLL Manifest : public Ref * @param [handle] Customized comparasion handle function * @return Greater or not */ - bool versionGreater( - const Manifest* b, - const std::function& handle) const; + bool versionGreater(const Manifest* b, + const std::function& handle) const; /** @brief Generate difference between this Manifest and another. * @param b The other manifest diff --git a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h index e511c802b806..7e004a393805 100644 --- a/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h +++ b/extensions/cocostudio/ActionTimeline/CCSkeletonNode.h @@ -98,7 +98,7 @@ class CCS_DLL SkeletonNode : public BoneNode cocos2d::Vec2 _squareVertices[8]; VertexData _vertexData[8]; - hlookup::string_map > + hlookup::string_map> _skinGroupMap; // map< suit name, map< bone name, skin name> > CC_DISALLOW_COPY_AND_ASSIGN(SkeletonNode); diff --git a/extensions/cocostudio/ActionTimeline/CSLoader.cpp b/extensions/cocostudio/ActionTimeline/CSLoader.cpp index 19652fb35411..d414f5b7eaf2 100644 --- a/extensions/cocostudio/ActionTimeline/CSLoader.cpp +++ b/extensions/cocostudio/ActionTimeline/CSLoader.cpp @@ -283,7 +283,7 @@ void CSLoader::init() Node* CSLoader::createNode(std::string_view filename) { auto path = filename; - size_t pos = path.find_last_of('.'); + size_t pos = path.find_last_of('.'); auto suffix = path.substr(pos + 1, path.length()); CSLoader* load = CSLoader::getInstance(); @@ -302,9 +302,9 @@ Node* CSLoader::createNode(std::string_view filename) Node* CSLoader::createNode(std::string_view filename, const ccNodeLoadCallback& callback) { - auto path = filename; - size_t pos = path.find_last_of('.'); - auto suffix = path.substr(pos + 1, path.length()); + auto path = filename; + size_t pos = path.find_last_of('.'); + auto suffix = path.substr(pos + 1, path.length()); CSLoader* load = CSLoader::getInstance(); @@ -342,9 +342,9 @@ Node* CSLoader::createNodeWithVisibleSize(std::string_view filename, const ccNod std::string_view CSLoader::getExtentionName(std::string_view name) { - auto path = name; - size_t pos = path.find_last_of('.'); - auto result = path.substr(pos + 1, path.length()); + auto path = name; + size_t pos = path.find_last_of('.'); + auto result = path.substr(pos + 1, path.length()); return result; } @@ -764,7 +764,7 @@ Node* CSLoader::loadWidget(const rapidjson::Value& json) readerName.append("Reader"); std::string_view guiClassName = getGUIClassName(classname); - widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); + widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); // fix memory leak for v3.3 // widget->retain(); diff --git a/extensions/cocostudio/CCActionNode.cpp b/extensions/cocostudio/CCActionNode.cpp index c1c454802ab8..7b9a5fd6a4d7 100644 --- a/extensions/cocostudio/CCActionNode.cpp +++ b/extensions/cocostudio/CCActionNode.cpp @@ -494,8 +494,8 @@ Spawn* ActionNode::refreshActionProperty() // #11173 Fixed every node of UI animation(json) is starting at frame 0. // if (frame->getFrameIndex() > 0) // { - // DelayTime* cDelayTime = DelayTime::create(frame->getFrameIndex() * - //getUnitTime()); if (cDelayTime != nullptr) + // DelayTime* cDelayTime = DelayTime::create(frame->getFrameIndex() + //* getUnitTime()); if (cDelayTime != nullptr) // cSequenceArray.pushBack(static_cast(cDelayTime)); // } } diff --git a/extensions/cocostudio/CCArmatureAnimation.h b/extensions/cocostudio/CCArmatureAnimation.h index e1dce40f7863..16ac00598010 100644 --- a/extensions/cocostudio/CCArmatureAnimation.h +++ b/extensions/cocostudio/CCArmatureAnimation.h @@ -192,8 +192,7 @@ class CCS_DLL ArmatureAnimation : public ProcessBase CC_DEPRECATED_ATTRIBUTE void setFrameEventCallFunc(cocos2d::Ref* target, SEL_FrameEventCallFunc callFunc); void setMovementEventCallFunc( - std::function - listener); + std::function listener); void setFrameEventCallFunc( std::function listener); diff --git a/extensions/cocostudio/CCArmatureDataManager.cpp b/extensions/cocostudio/CCArmatureDataManager.cpp index de37f70e7cd0..ca323b807ea2 100644 --- a/extensions/cocostudio/CCArmatureDataManager.cpp +++ b/extensions/cocostudio/CCArmatureDataManager.cpp @@ -160,9 +160,7 @@ void ArmatureDataManager::removeAnimationData(std::string_view id) _animationDatas.erase(id); } -void ArmatureDataManager::addTextureData(std::string_view id, - TextureData* textureData, - std::string_view configFilePath) +void ArmatureDataManager::addTextureData(std::string_view id, TextureData* textureData, std::string_view configFilePath) { if (RelativeData* data = getRelativeData(configFilePath)) { @@ -190,9 +188,7 @@ void ArmatureDataManager::addArmatureFileInfo(std::string_view configFilePath) DataReaderHelper::getInstance()->addDataFromFile(configFilePath); } -void ArmatureDataManager::addArmatureFileInfoAsync(std::string_view configFilePath, - Ref* target, - SEL_SCHEDULE selector) +void ArmatureDataManager::addArmatureFileInfoAsync(std::string_view configFilePath, Ref* target, SEL_SCHEDULE selector) { addRelativeData(configFilePath); diff --git a/extensions/cocostudio/CCArmatureDataManager.h b/extensions/cocostudio/CCArmatureDataManager.h index 5862f016524c..6b549e17b1cf 100644 --- a/extensions/cocostudio/CCArmatureDataManager.h +++ b/extensions/cocostudio/CCArmatureDataManager.h @@ -151,9 +151,7 @@ class CCS_DLL ArmatureDataManager : public cocos2d::Ref /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. */ - void addArmatureFileInfo(std::string_view imagePath, - std::string_view plistPath, - std::string_view configFilePath); + void addArmatureFileInfo(std::string_view imagePath, std::string_view plistPath, std::string_view configFilePath); /** * @brief Add ArmatureFileInfo, it is managed by ArmatureDataManager. diff --git a/extensions/cocostudio/CCDataReaderHelper.cpp b/extensions/cocostudio/CCDataReaderHelper.cpp index 0ee6d288cee3..59d2c7d51d29 100644 --- a/extensions/cocostudio/CCDataReaderHelper.cpp +++ b/extensions/cocostudio/CCDataReaderHelper.cpp @@ -280,7 +280,7 @@ void DataReaderHelper::addDataFromFile(std::string_view filePath) //! find the base file path std::string basefilePath; - size_t pos = filePath.find_last_of('/'); + size_t pos = filePath.find_last_of('/'); if (pos != std::string::npos) { @@ -346,7 +346,7 @@ void DataReaderHelper::addDataFromFileAsync(std::string_view imagePath, //! find the base file path std::string basefilePath; - size_t pos = filePath.find_last_of('/'); + size_t pos = filePath.find_last_of('/'); if (pos != std::string::npos) { @@ -499,7 +499,8 @@ void DataReaderHelper::addDataFromCache(std::string_view pFileContent, DataInfo* { pugi::xml_document document; pugi::xml_parse_result ret = document.load_buffer(pFileContent.data(), pFileContent.length()); - if(!ret) return; + if (!ret) + return; auto root = document.document_element(); dataInfo->flashToolVersion = root.attribute(VERSION).as_float(); diff --git a/extensions/cocostudio/CCSGUIReader.cpp b/extensions/cocostudio/CCSGUIReader.cpp index a3586e1e5015..1edeaea0080f 100644 --- a/extensions/cocostudio/CCSGUIReader.cpp +++ b/extensions/cocostudio/CCSGUIReader.cpp @@ -1648,10 +1648,10 @@ void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromJsonDictionary(st GUIReader* guiReader = GUIReader::getInstance(); hlookup::string_map* object_map = guiReader->getParseObjectMap(); - Ref* object = (*object_map)[classType]; + Ref* object = (*object_map)[classType]; hlookup::string_map* selector_map = guiReader->getParseCallBackMap(); - SEL_ParseEvent selector = (*selector_map)[classType]; + SEL_ParseEvent selector = (*selector_map)[classType]; if (object && selector) { diff --git a/extensions/cocostudio/FlatBuffersSerialize.h b/extensions/cocostudio/FlatBuffersSerialize.h index 6a0998839691..1e592e14e9d9 100644 --- a/extensions/cocostudio/FlatBuffersSerialize.h +++ b/extensions/cocostudio/FlatBuffersSerialize.h @@ -111,8 +111,7 @@ class CCS_DLL FlatBuffersSerialize static std::string serializeFlatBuffersWithXMLFile(std::string_view xmlFileName, std::string_view flatbuffersFileName); /* x-studio spec: serialize flat buffers with XML buffer */ - static std::string serializeFlatBuffersWithXMLBuffer(std::string& xmlBuffer, - std::string_view flatbuffersFileName); + static std::string serializeFlatBuffersWithXMLBuffer(std::string& xmlBuffer, std::string_view flatbuffersFileName); static std::string serializeFlatBuffersWithOpaque(void* opaque, std::string_view flatbuffersFileName); // NodeTree diff --git a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp index c78fc1aa1612..9202f0824c3c 100644 --- a/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp +++ b/extensions/cocostudio/WidgetReader/ArmatureNodeReader/ArmatureNodeReader.cpp @@ -145,7 +145,7 @@ void ArmatureNodeReader::setPropsWithFlatBuffers(cocos2d::Node* node, const flat #if defined(CC_BUILD_WITH_DRANGBONES) && CC_BUILD_WITH_DRANGBONES auto filep = filepath.rfind('.'); if (filep != std::string::npos && strcmp(&filepath[filep], ".json") == 0) - { // Currently, adjust by file ext, regard as DragonBones 4.5/5.0 + { // Currently, adjust by file ext, regard as DragonBones 4.5/5.0 // 4.5 texture info is fixed as texture.png, texture.json // 5.o texture info is _tex.json _tex.png auto sharedFactory = dragonBones::CCFactory::getFactory(); diff --git a/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp b/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp index 866d8d76c66a..f015d67a9f24 100644 --- a/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp +++ b/extensions/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp @@ -111,7 +111,7 @@ void ImageViewReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson const rapidjson::Value& imageFileNameDic = DICTOOL->getSubDictionary_json(options, P_FileNameData); int imageFileNameType = DICTOOL->getIntValue_json(imageFileNameDic, P_ResourceType); - std::string_view imageFilePath = DICTOOL->getStringValue_json(imageFileNameDic, P_Path); + std::string_view imageFilePath = DICTOOL->getStringValue_json(imageFileNameDic, P_Path); if (!imageFilePath.empty()) { diff --git a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp index d64403d25245..5af14ee111d0 100644 --- a/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp +++ b/extensions/cocostudio/WidgetReader/NodeReaderProtocol.cpp @@ -56,11 +56,11 @@ namespace wext { bool (*onBeforeLoadObjectAsset)(cocos2d::Node*, cocos2d::ResourceData& assets, - int index /*= 0*/) = &onLoadObjectAssetDummy; + int index /*= 0*/) = &onLoadObjectAssetDummy; bool (*onAfterLoadObjectAsset)(cocos2d::Node*, cocos2d::ResourceData& assets, - int index /*= 0*/) = &onLoadObjectAssetDummy; -void (*onLoadSpriteFramesWithFile)(std::string& file) = nullptr; + int index /*= 0*/) = &onLoadObjectAssetDummy; +void (*onLoadSpriteFramesWithFile)(std::string& file) = nullptr; void (*onNestingNodeLoading)(std::string_view filePath) = nullptr; void (*onNestingNodeLoaded)(cocos2d::Node*, std::string_view filePath) = nullptr; cocos2d::Node* (*aNode)(); diff --git a/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp b/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp index e07405f1abec..61e22265d9c2 100644 --- a/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp @@ -112,7 +112,7 @@ void TextAtlasReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson { case 0: { - std::string tp_c {jsonPath}; + std::string tp_c{jsonPath}; const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelAtlas->setProperty(DICTOOL->getStringValue_json(options, P_StringValue, "12345678"), cmf_tp, diff --git a/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp b/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp index ae74e130cceb..3ee6d357279b 100644 --- a/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp @@ -92,7 +92,7 @@ void TextBMFontReader::setPropsFromJsonDictionary(Widget* widget, const rapidjso { case 0: { - std::string tp_c { jsonPath }; + std::string tp_c{jsonPath}; const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelBMFont->setFntFile(cmf_tp); diff --git a/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp b/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp index efbe1ae426ff..e63761291a20 100644 --- a/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp +++ b/extensions/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp @@ -102,7 +102,7 @@ void TextFieldReader::setPropsFromJsonDictionary(Widget* widget, const rapidjson textField->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize, 20)); std::string fontFilePath{GUIReader::getInstance()->getFilePath()}; - auto fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); + auto fontName = DICTOOL->getStringValue_json(options, P_FontName, ""); fontFilePath.append(fontName); if (FileUtils::getInstance()->isFileExist(fontFilePath)) textField->setFontName(fontFilePath); diff --git a/extensions/cocostudio/WidgetReader/WidgetReader.cpp b/extensions/cocostudio/WidgetReader/WidgetReader.cpp index 46037d585658..14dcd1be8dd2 100644 --- a/extensions/cocostudio/WidgetReader/WidgetReader.cpp +++ b/extensions/cocostudio/WidgetReader/WidgetReader.cpp @@ -306,7 +306,7 @@ std::string WidgetReader::getResourcePath(const rapidjson::Value& dict, std::string_view key, cocos2d::ui::Widget::TextureResType texType) { - std::string_view jsonPath = GUIReader::getInstance()->getFilePath(); + std::string_view jsonPath = GUIReader::getInstance()->getFilePath(); const char* imageFileName = DICTOOL->getStringValue_json(dict, key.data()); std::string imageFileName_tp; if (nullptr != imageFileName) @@ -942,7 +942,7 @@ Node* WidgetReader::createNodeWithFlatBuffers(const flatbuffers::Table* widgetOp std::string WidgetReader::getResourcePath(std::string_view path, cocos2d::ui::Widget::TextureResType texType) { - std::string_view filePath = GUIReader::getInstance()->getFilePath(); + std::string_view filePath = GUIReader::getInstance()->getFilePath(); std::string imageFileName_tp; if (!path.empty()) { diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp index 2bad612b736f..415bae24e8a1 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp @@ -188,22 +188,22 @@ static int lua_cocos2dx_ArmatureAnimation_setFrameEventCallFunc(lua_State* L) ScriptHandlerMgr::getInstance()->addObjectHandler((void*)wrapper, handler, ScriptHandlerMgr::HandlerType::ARMATURE_EVENT); - self->setFrameEventCallFunc([=](cocostudio::Bone* bone, std::string_view frameEventName, int originFrameIndex, - int currentFrameIndex) { - if (0 != handler) - { - std::string strFrameEventName(frameEventName); + self->setFrameEventCallFunc( + [=](cocostudio::Bone* bone, std::string_view frameEventName, int originFrameIndex, int currentFrameIndex) { + if (0 != handler) + { + std::string strFrameEventName(frameEventName); - LuaArmatureFrameEventData frameData(bone, frameEventName, originFrameIndex, currentFrameIndex); + LuaArmatureFrameEventData frameData(bone, frameEventName, originFrameIndex, currentFrameIndex); - LuaArmatureWrapperEventData wrapperData( - LuaArmatureWrapperEventData::LuaArmatureWrapperEventType::FRAME_EVENT, (void*)&frameData); + LuaArmatureWrapperEventData wrapperData( + LuaArmatureWrapperEventData::LuaArmatureWrapperEventType::FRAME_EVENT, (void*)&frameData); - BasicScriptData data((void*)vec.at(0), (void*)&wrapperData); + BasicScriptData data((void*)vec.at(0), (void*)&wrapperData); - LuaEngine::getInstance()->handleEvent(ScriptHandlerMgr::HandlerType::ARMATURE_EVENT, (void*)&data); - } - }); + LuaEngine::getInstance()->handleEvent(ScriptHandlerMgr::HandlerType::ARMATURE_EVENT, (void*)&data); + } + }); return 0; } diff --git a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp index 500db96f54a8..c4d0272b804f 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp @@ -270,27 +270,26 @@ static int lua_downloader_setOnTaskError(lua_State* L) luaL_argcheck(L, lua_isfunction(L, 2), 2, "should be a function"); saveCallback(L, d, "setOnTaskError"); - d->setOnTaskError( - [d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorSt) { - int ret = getCallback(L, d, "setOnTaskError"); // stack callbackfn - if (ret) - { - pushTaskTable(L, task); // stack callbackfn, task - lua_pushnumber(L, errorCode); - lua_pushnumber(L, errorCodeInternal); - lua_pushstring(L, errorSt.c_str()); - if (lua_pcall(L, 4, 0, 0) != 0) - { - lua_pop(L, 1); // remove callback or nil - luaL_error(L, "cc.Downloader.setOnTaskError invoke callback error!"); - return; - } - } - else + d->setOnTaskError([d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorSt) { + int ret = getCallback(L, d, "setOnTaskError"); // stack callbackfn + if (ret) + { + pushTaskTable(L, task); // stack callbackfn, task + lua_pushnumber(L, errorCode); + lua_pushnumber(L, errorCodeInternal); + lua_pushstring(L, errorSt.c_str()); + if (lua_pcall(L, 4, 0, 0) != 0) { lua_pop(L, 1); // remove callback or nil + luaL_error(L, "cc.Downloader.setOnTaskError invoke callback error!"); + return; } - }); + } + else + { + lua_pop(L, 1); // remove callback or nil + } + }); return 0; } diff --git a/extensions/scripting/lua-bindings/manual/platform/ios/CCLuaObjcBridge.mm b/extensions/scripting/lua-bindings/manual/platform/ios/CCLuaObjcBridge.mm index f28f8b47b280..b50ec4d916bf 100644 --- a/extensions/scripting/lua-bindings/manual/platform/ios/CCLuaObjcBridge.mm +++ b/extensions/scripting/lua-bindings/manual/platform/ios/CCLuaObjcBridge.mm @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -22,13 +22,12 @@ of this software and associated documentation files (the "Software"), to deal THE SOFTWARE. ****************************************************************************/ - #include "scripting/lua-bindings/manual/platform/ios/CCLuaObjcBridge.h" #include NS_CC_BEGIN -void LuaObjcBridge::luaopen_luaoc(lua_State *L) +void LuaObjcBridge::luaopen_luaoc(lua_State* L) { s_luaState = L; lua_newtable(L); @@ -38,39 +37,36 @@ of this software and associated documentation files (the "Software"), to deal lua_setglobal(L, "LuaObjcBridge"); } - -static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSString *key){ - NSMutableDictionary *dict2 = [[NSMutableDictionary alloc] init]; +static void luaTableToObjcDictionary(lua_State* L, NSMutableDictionary* dict, NSString* key) +{ + NSMutableDictionary* dict2 = [[NSMutableDictionary alloc] init]; lua_pushnil(L); - while(lua_next(L, -2)) + while (lua_next(L, -2)) { - NSString *key2 = [NSString stringWithCString:lua_tostring(L, -2) encoding:NSUTF8StringEncoding]; - + NSString* key2 = [NSString stringWithCString:lua_tostring(L, -2) encoding:NSUTF8StringEncoding]; + switch (lua_type(L, -1)) { - case LUA_TNUMBER: - [dict2 setObject:[NSNumber numberWithFloat:lua_tonumber(L, -1)] forKey:key2]; - break; - - case LUA_TBOOLEAN: - [dict2 setObject:[NSNumber numberWithBool:lua_toboolean(L, -1)] forKey:key2]; - break; - - case LUA_TSTRING: - [dict2 setObject:[NSString stringWithCString:lua_tostring(L, -1) encoding:NSUTF8StringEncoding] - forKey:key2]; - break; - case LUA_TTABLE: - luaTableToObjcDictionary(L, dict2, key2); - break; + case LUA_TNUMBER: + [dict2 setObject:[NSNumber numberWithFloat:lua_tonumber(L, -1)] forKey:key2]; + break; + + case LUA_TBOOLEAN: + [dict2 setObject:[NSNumber numberWithBool:lua_toboolean(L, -1)] forKey:key2]; + break; + + case LUA_TSTRING: + [dict2 setObject:[NSString stringWithCString:lua_tostring(L, -1) encoding:NSUTF8StringEncoding] + forKey:key2]; + break; + case LUA_TTABLE: + luaTableToObjcDictionary(L, dict2, key2); + break; } - lua_pop(L,1); + lua_pop(L, 1); } - - + [dict setObject:dict2 forKey:key]; - - } /** @@ -78,24 +74,24 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS methodName args */ -int LuaObjcBridge::callObjcStaticMethod(lua_State *L) +int LuaObjcBridge::callObjcStaticMethod(lua_State* L) { if (lua_gettop(L) != 3 || !lua_isstring(L, -3) || !lua_isstring(L, -2)) { - lua_pushboolean(L, 0); - lua_pushinteger(L, kLuaBridgeErrorInvalidParameters); - return 2; + lua_pushboolean(L, 0); + lua_pushinteger(L, kLuaBridgeErrorInvalidParameters); + return 2; } - - const char *className = lua_tostring(L, -3); - const char *methodName = lua_tostring(L, -2); + + const char* className = lua_tostring(L, -3); + const char* methodName = lua_tostring(L, -2); if (!className || !methodName) { lua_pushboolean(L, 0); lua_pushinteger(L, kLuaBridgeErrorInvalidParameters); return 2; } - + Class targetClass = NSClassFromString([NSString stringWithCString:className encoding:NSUTF8StringEncoding]); if (!targetClass) { @@ -103,14 +99,14 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS lua_pushinteger(L, kLuaBridgeErrorClassNotFound); return 2; } - + SEL methodSel; bool hasArguments = lua_istable(L, -1); if (hasArguments) { - NSString *methodName_ = [NSString stringWithCString:methodName encoding:NSUTF8StringEncoding]; - methodName_ = [NSString stringWithFormat:@"%@:", methodName_]; - methodSel = NSSelectorFromString(methodName_); + NSString* methodName_ = [NSString stringWithCString:methodName encoding:NSUTF8StringEncoding]; + methodName_ = [NSString stringWithFormat:@"%@:", methodName_]; + methodSel = NSSelectorFromString(methodName_); } else { @@ -122,58 +118,59 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS lua_pushinteger(L, kLuaBridgeErrorMethodNotFound); return 2; } - - NSMethodSignature *methodSig = [targetClass methodSignatureForSelector:(SEL)methodSel]; + + NSMethodSignature* methodSig = [targetClass methodSignatureForSelector:(SEL)methodSel]; if (methodSig == nil) { lua_pushboolean(L, 0); lua_pushinteger(L, kLuaBridgeErrorMethodSignature); return 2; } - - @try { - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSig]; + + @try + { + NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:methodSig]; [invocation setTarget:targetClass]; [invocation setSelector:methodSel]; NSUInteger returnLength = [methodSig methodReturnLength]; - const char *returnType = [methodSig methodReturnType]; - + const char* returnType = [methodSig methodReturnType]; + if (hasArguments) { - NSMutableDictionary *dict = [NSMutableDictionary dictionary]; + NSMutableDictionary* dict = [NSMutableDictionary dictionary]; lua_pushnil(L); while (lua_next(L, -2)) { - NSString *key = [NSString stringWithCString:lua_tostring(L, -2) encoding:NSUTF8StringEncoding]; - + NSString* key = [NSString stringWithCString:lua_tostring(L, -2) encoding:NSUTF8StringEncoding]; + switch (lua_type(L, -1)) { - case LUA_TNUMBER: - [dict setObject:[NSNumber numberWithFloat:lua_tonumber(L, -1)] forKey:key]; - break; - - case LUA_TBOOLEAN: - [dict setObject:[NSNumber numberWithBool:lua_toboolean(L, -1)] forKey:key]; - break; - - case LUA_TSTRING: - [dict setObject:[NSString stringWithCString:lua_tostring(L, -1) encoding:NSUTF8StringEncoding] - forKey:key]; - break; - - case LUA_TTABLE: - luaTableToObjcDictionary(L, dict, key); - break; - - case LUA_TFUNCTION: - int functionId = retainLuaFunction(L, -1, NULL); - [dict setObject:[NSNumber numberWithInt:functionId] forKey:key]; - break; + case LUA_TNUMBER: + [dict setObject:[NSNumber numberWithFloat:lua_tonumber(L, -1)] forKey:key]; + break; + + case LUA_TBOOLEAN: + [dict setObject:[NSNumber numberWithBool:lua_toboolean(L, -1)] forKey:key]; + break; + + case LUA_TSTRING: + [dict setObject:[NSString stringWithCString:lua_tostring(L, -1) encoding:NSUTF8StringEncoding] + forKey:key]; + break; + + case LUA_TTABLE: + luaTableToObjcDictionary(L, dict, key); + break; + + case LUA_TFUNCTION: + int functionId = retainLuaFunction(L, -1, NULL); + [dict setObject:[NSNumber numberWithInt:functionId] forKey:key]; + break; } - + lua_pop(L, 1); } - + [invocation setArgument:&dict atIndex:2]; [invocation invoke]; } @@ -181,7 +178,7 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS { [invocation invoke]; } - + lua_pushboolean(L, 1); if (returnLength > 0) { @@ -191,19 +188,19 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS [invocation getReturnValue:&ret]; pushValue(L, ret); } - else if (strcmp(returnType, @encode(BOOL)) == 0) // BOOL + else if (strcmp(returnType, @encode(BOOL)) == 0) // BOOL { char ret; [invocation getReturnValue:&ret]; lua_pushboolean(L, ret); } - else if (strcmp(returnType, @encode(int)) == 0) // int + else if (strcmp(returnType, @encode(int)) == 0) // int { int ret; [invocation getReturnValue:&ret]; lua_pushinteger(L, ret); } - else if (strcmp(returnType, @encode(float)) == 0) // float + else if (strcmp(returnType, @encode(float)) == 0) // float { float ret; [invocation getReturnValue:&ret]; @@ -221,16 +218,16 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS } return 2; } - @catch (NSException *exception) + @catch (NSException* exception) { NSLog(@"EXCEPTION THROW: %@", exception); lua_pushboolean(L, 0); lua_pushinteger(L, kLuaBridgeErrorExceptionOccurred); - return 2; + return 2; } } -void LuaObjcBridge::pushValue(lua_State *L, void *val) +void LuaObjcBridge::pushValue(lua_State* L, void* val) { id oval = (id)val; if (oval == nil) @@ -239,8 +236,8 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS } else if ([oval isKindOfClass:[NSNumber class]]) { - NSNumber *number = (NSNumber *)oval; - const char *numberType = [number objCType]; + NSNumber* number = (NSNumber*)oval; + const char* numberType = [number objCType]; if (strcmp(numberType, @encode(BOOL)) == 0) { lua_pushboolean(L, [number boolValue]); @@ -261,15 +258,15 @@ static void luaTableToObjcDictionary(lua_State *L, NSMutableDictionary *dict,NSS else if ([oval isKindOfClass:[NSDictionary class]]) { lua_newtable(L); - + for (id key in oval) { - const char *key_ = [[NSString stringWithFormat:@"%@", key] cStringUsingEncoding:NSUTF8StringEncoding]; + const char* key_ = [[NSString stringWithFormat:@"%@", key] cStringUsingEncoding:NSUTF8StringEncoding]; lua_pushstring(L, key_); pushValue(L, [oval objectForKey:key]); lua_rawset(L, -3); } - + return; } else diff --git a/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp b/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp index 34b5ca82ef8e..88fc10209c42 100644 --- a/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/ui/lua_cocos2dx_webview_manual.cpp @@ -118,13 +118,13 @@ static int lua_cocos2dx_WebView_setOnDidFinishLoading(lua_State* L) } #endif - LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); - std::function callback = - [L, handler](ui::WebView* sender, std::string_view url) { - toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); - tolua_pushcppstring(L, url); - LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); - }; + LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); + std::function callback = [L, handler](ui::WebView* sender, + std::string_view url) { + toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); + tolua_pushcppstring(L, url); + LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); + }; ScriptHandlerMgr::getInstance()->addCustomHandler((void*)self, handler); self->setOnDidFinishLoading(callback); @@ -173,13 +173,13 @@ static int lua_cocos2dx_WebView_setOnDidFailLoading(lua_State* L) } #endif - LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); - std::function callback = - [L, handler](ui::WebView* sender, std::string_view url) { - toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); - tolua_pushcppstring(L, url); - LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); - }; + LUA_FUNCTION handler = (toluafix_ref_function(L, 2, 0)); + std::function callback = [L, handler](ui::WebView* sender, + std::string_view url) { + toluafix_pushusertype_ccobject(L, sender->_ID, &(sender->_luaID), (void*)sender, "ccui.WebView"); + tolua_pushcppstring(L, url); + LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); + }; ScriptHandlerMgr::getInstance()->addCustomHandler((void*)self, handler); self->setOnDidFailLoading(callback); From d397854ead2d87e45782d2cbe0d238f727049127 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 11:05:34 +0800 Subject: [PATCH 09/58] Commit chnages --- .../lua-bindings/manual/CCComponentLua.cpp | 16 ++++++++++------ .../lua-bindings/manual/CCLuaEngine.cpp | 2 +- .../scripting/lua-bindings/manual/CCLuaStack.cpp | 10 +++++----- .../scripting/lua-bindings/manual/CCLuaStack.h | 2 +- .../scripting/lua-bindings/manual/CCLuaValue.cpp | 2 +- .../lua-bindings/manual/LuaBasicConversions.cpp | 6 +++--- .../lua_cocos2dx_audioengine_manual.cpp | 4 ++-- .../manual/cocos2d/lua_cocos2dx_manual.cpp | 6 +++--- .../manual/cocostudio/CustomGUIReader.cpp | 2 +- .../lua_cocos2dx_coco_studio_manual.cpp | 3 +-- .../manual/network/lua_downloader.cpp | 2 +- .../manual/network/lua_xml_http_request.cpp | 3 ++- 12 files changed, 31 insertions(+), 27 deletions(-) diff --git a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp index 5ff34e083bf8..28e9761b0249 100644 --- a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp +++ b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp @@ -41,7 +41,7 @@ const std::string ComponentLua::UPDATE = "update"; namespace { -void adjustScriptFileName(std::string& scriptFileName) +void adjustScriptFileName(std::string_view& scriptFileName, std::string& holder) { assert(scriptFileName.size() > 4); @@ -54,10 +54,13 @@ void adjustScriptFileName(std::string& scriptFileName) // xxx.lua -> xxx.luac or // xxx.luac -> xxx.lua - if (scriptFileName.compare(scriptFileName.size() - luaSuffix.size(), luaSuffix.size(), luaSuffix) == 0) - scriptFileName.replace(scriptFileName.size() - luaSuffix.size(), luaSuffix.size(), luacSuffix); + holder = scriptFileName; + if (holder.compare(holder.size() - luaSuffix.size(), luaSuffix.size(), luaSuffix) == 0) + holder.replace(holder.size() - luaSuffix.size(), luaSuffix.size(), luacSuffix); else - scriptFileName.replace(scriptFileName.size() - luacSuffix.size(), luacSuffix.size(), luaSuffix); + holder.replace(holder.size() - luacSuffix.size(), luacSuffix.size(), luaSuffix); + + scriptFileName = holder; } } // namespace @@ -69,7 +72,8 @@ ComponentLua* ComponentLua::create(std::string_view scriptFileName) initClass(); - adjustScriptFileName(const_cast(scriptFileName)); + std::string holder; + adjustScriptFileName(scriptFileName, holder); auto componentLua = new ComponentLua(scriptFileName); if (componentLua) { @@ -142,7 +146,7 @@ bool ComponentLua::getLuaFunction(std::string_view functionName) lua_rawget(l, LUA_REGISTRYINDEX); // stack: table_of_component lua_pushstring(l, _strIndex.c_str()); // stack: table_of_component strIndex lua_rawget(l, -2); // stack: table_of_component table_of_this - lua_pushstring(l, functionName.c_str()); // stack: table_of_component table_of_this "update" + lua_pushlstring(l, functionName.data(), functionName.length()); // stack: table_of_component table_of_this "update" lua_rawget(l, -2); // stack: table_of_component table_of_this table_of_this["update"] lua_remove(l, -2); // stack: table_of_component table_of_this["update"] lua_remove(l, -2); // stack: table_of_this["update"] diff --git a/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp b/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp index 4c50e1489f56..1e8453995300 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaEngine.cpp @@ -185,7 +185,7 @@ bool LuaEngine::parseConfig(ConfigType type, std::string_view str) } _stack->pushInt((int)type); - _stack->pushString(str.c_str()); + _stack->pushString(str.data(), str.length()); return _stack->executeFunction(2); } diff --git a/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp b/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp index 1160d1ab9a0f..b7696dd712a5 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp @@ -294,9 +294,9 @@ void LuaStack::pushBoolean(bool boolValue) lua_pushboolean(_state, boolValue); } -void LuaStack::pushString(const char* stringValue) +void LuaStack::pushString(std::string_view stringValue) { - lua_pushstring(_state, stringValue); + lua_pushlstring(_state, stringValue.data(), stringValue.length()); } void LuaStack::pushString(const char* stringValue, int length) @@ -331,7 +331,7 @@ void LuaStack::pushLuaValue(const LuaValue& value) } else if (type == LuaValueTypeString) { - return pushString(value.stringValue().c_str()); + return pushString(value.stringValue()); } else if (type == LuaValueTypeDict) { @@ -343,7 +343,7 @@ void LuaStack::pushLuaValue(const LuaValue& value) } else if (type == LuaValueTypeObject) { - pushObject(value.ccobjectValue(), value.getObjectTypename().c_str()); + pushObject(value.ccobjectValue(), value.getObjectTypename().data()); } } @@ -352,7 +352,7 @@ void LuaStack::pushLuaValueDict(const LuaValueDict& dict) lua_newtable(_state); /* L: table */ for (LuaValueDictIterator it = dict.begin(); it != dict.end(); ++it) { - lua_pushstring(_state, it->first.c_str()); /* L: table key */ + lua_pushlstring(_state, it->first.c_str(), it->first.length()); /* L: table key */ pushLuaValue(it->second); /* L: table key value */ lua_rawset(_state, -3); /* table.key = value, L: table */ } diff --git a/extensions/scripting/lua-bindings/manual/CCLuaStack.h b/extensions/scripting/lua-bindings/manual/CCLuaStack.h index cd01e56d8f67..e55313b03fd5 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaStack.h +++ b/extensions/scripting/lua-bindings/manual/CCLuaStack.h @@ -184,7 +184,7 @@ class LuaStack : public Ref * * @param stringValue a pointer point to a zero-terminated string stringValue. */ - virtual void pushString(const char* stringValue); + virtual void pushString(std::string_view stringValue); /** * Pushes the string pointed to by stringValue with size length onto the stack. diff --git a/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp b/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp index 06081839b85c..6e2112c5e1d8 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaValue.cpp @@ -96,7 +96,7 @@ const LuaValue LuaValue::ccobjectValue(Ref* ccobjectValue, const char* objectTyp const LuaValue LuaValue::ccobjectValue(Ref* ccobjectValue, std::string_view objectTypename) { - return LuaValue::ccobjectValue(ccobjectValue, objectTypename.c_str()); + return LuaValue::ccobjectValue(ccobjectValue, objectTypename.data()); } LuaValue::LuaValue(const LuaValue& rhs) diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp index 1103d3f2fe0f..e9b67059b937 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp @@ -2402,7 +2402,7 @@ void ccvalue_to_luaval(lua_State* L, const cocos2d::Value& inValue) lua_pushinteger(L, obj.asInt64()); break; case Value::Type::STRING: - lua_pushstring(L, obj.asStringRef().c_str()); + lua_pushstring(L, obj.asStringRef().data()); break; case Value::Type::VECTOR: ccvaluevector_to_luaval(L, obj.asValueVector()); @@ -2527,7 +2527,7 @@ void ccvaluemapintkey_to_luaval(lua_State* L, const cocos2d::ValueMapIntKey& inV case Value::Type::STRING: { lua_pushstring(L, key.c_str()); - lua_pushstring(L, obj.asStringRef().c_str()); + lua_pushstring(L, obj.asStringRef().data()); lua_rawset(L, -3); } break; @@ -2728,7 +2728,7 @@ void ccvector_std_string_to_luaval(lua_State* L, const std::vector& for (std::string_view value : inValue) { lua_pushnumber(L, (lua_Number)index); - lua_pushstring(L, value.c_str()); + lua_pushlstring(L, value.data(), value.length()); lua_rawset(L, -3); ++index; } diff --git a/extensions/scripting/lua-bindings/manual/audioengine/lua_cocos2dx_audioengine_manual.cpp b/extensions/scripting/lua-bindings/manual/audioengine/lua_cocos2dx_audioengine_manual.cpp index 7274d4866458..a43793b275cf 100644 --- a/extensions/scripting/lua-bindings/manual/audioengine/lua_cocos2dx_audioengine_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/audioengine/lua_cocos2dx_audioengine_manual.cpp @@ -269,11 +269,11 @@ int lua_cocos2dx_audioengine_AudioEngine_setFinishCallback(lua_State* tolua_S) LUA_FUNCTION handler = (toluafix_ref_function(tolua_S, 3, 0)); - cocos2d::AudioEngine::setFinishCallback(arg0, [=](int audioID, std::string filePath) { + cocos2d::AudioEngine::setFinishCallback(arg0, [=](int audioID, std::string_view filePath) { LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); stack->pushInt(audioID); - stack->pushString(filePath.c_str()); + stack->pushString(filePath); stack->executeFunctionByHandler(handler, 2); diff --git a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp index da74a5ef6cb2..1b8eb8f218d7 100644 --- a/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp @@ -6114,7 +6114,7 @@ static int lua_cocos2dx_Console_addCommand(lua_State* tolua_S) auto Ls = stack->getLuaState(); // lua-callback, the third param; tolua_pushnumber(Ls, fd); - tolua_pushstring(Ls, args.c_str()); + tolua_pushstring(Ls, args.data()); stack->executeFunctionByHandler(handler, 2); }}; @@ -6928,7 +6928,7 @@ int lua_cocos2dx_get_PolygonInfo_filename(lua_State* tolua_S) return 0; } #endif - tolua_pushcppstring(tolua_S, cobj->getFilename()); + tolua_pushstring(tolua_S, cobj->getFilename().data()); return 1; #if COCOS2D_DEBUG >= 1 @@ -7434,7 +7434,7 @@ static int tolua_cocos2d_utils_captureScreen(lua_State* tolua_S) auto stack = LuaEngine::getInstance()->getLuaStack(); auto Ls = stack->getLuaState(); tolua_pushboolean(Ls, succeed); - tolua_pushstring(Ls, name.c_str()); + tolua_pushstring(Ls, name.data()); stack->executeFunctionByHandler(handler, 2); toluafix_remove_function_by_refid(tolua_S, handler); }, diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp index 67a6425864ea..3fa250fdb6c7 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp @@ -96,7 +96,7 @@ void CustomGUIReader::setCustomProps(std::string_view classType, customOptions.Accept(writer); auto stack = LuaEngine::getInstance()->getLuaStack(); - stack->pushString(classType.c_str(), static_cast(classType.size())); + stack->pushString(classType); stack->pushObject(widget, "cc.Ref"); stack->pushString(buffer.GetString(), static_cast(buffer.GetSize())); stack->executeFunctionByHandler(_setPropsFunc, 3); diff --git a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp index 2bad612b736f..8423fda8b4c9 100644 --- a/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp +++ b/extensions/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp @@ -115,8 +115,7 @@ static int lua_cocos2dx_ArmatureAnimation_setMovementEventCallFunc(lua_State* L) [=](Armature* armature, MovementEventType movementType, std::string_view movementID) { if (0 != handler) { - std::string strMovementID = movementID; - LuaArmatureMovementEventData movementData(armature, (int)movementType, strMovementID); + LuaArmatureMovementEventData movementData(armature, (int)movementType, movementID); LuaArmatureWrapperEventData wrapperData( LuaArmatureWrapperEventData::LuaArmatureWrapperEventType::MOVEMENT_EVENT, (void*)&movementData); diff --git a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp index 500db96f54a8..33722c52291a 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp @@ -278,7 +278,7 @@ static int lua_downloader_setOnTaskError(lua_State* L) pushTaskTable(L, task); // stack callbackfn, task lua_pushnumber(L, errorCode); lua_pushnumber(L, errorCodeInternal); - lua_pushstring(L, errorSt.c_str()); + lua_pushlstring(L, errorSt.data(), errorSt.length()); if (lua_pcall(L, 4, 0, 0) != 0) { lua_pop(L, 1); // remove callback or nil diff --git a/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp b/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp index a72bc5e4fb7d..dce4f0d92ab5 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_xml_http_request.cpp @@ -621,7 +621,8 @@ static int lua_get_XMLHttpRequest_statusText(lua_State* L) } #endif - lua_pushstring(L, self->getStatusText().c_str()); + auto statusText = self->getStatusText(); + lua_pushlstring(L, statusText.data(), statusText.length()); return 1; From 8584b40f16787de8c7415051e44db68d9cd6ba38 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 11:17:53 +0800 Subject: [PATCH 10/58] string_view for apple --- cocos/platform/apple/CCFileUtils-apple.mm | 6 +-- cocos/platform/ios/CCApplication-ios.mm | 2 +- cocos/platform/mac/CCApplication-mac.mm | 2 +- cocos/platform/mac/CCGLViewImpl-mac.mm | 2 +- cocos/ui/UIWebView/UIWebViewImpl-ios.mm | 54 +++++++++++------------ 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cocos/platform/apple/CCFileUtils-apple.mm b/cocos/platform/apple/CCFileUtils-apple.mm index 1931a51c4074..886b601cf4ca 100644 --- a/cocos/platform/apple/CCFileUtils-apple.mm +++ b/cocos/platform/apple/CCFileUtils-apple.mm @@ -171,9 +171,9 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str return true; } -std::string FileUtilsApple::getPathForDirectory(const std::string& dir, - const std::string& resolutionDiretory, - const std::string& searchPath) const +std::string FileUtilsApple::getPathForDirectory(std::string_view dir, + std::string_view resolutionDiretory, + std::string_view searchPath) const { auto path = searchPath + resolutionDiretory + dir; diff --git a/cocos/platform/ios/CCApplication-ios.mm b/cocos/platform/ios/CCApplication-ios.mm index 68d441a26c42..b280722f26ef 100644 --- a/cocos/platform/ios/CCApplication-ios.mm +++ b/cocos/platform/ios/CCApplication-ios.mm @@ -123,7 +123,7 @@ of this software and associated documentation files (the "Software"), to deal return ""; } -bool Application::openURL(const std::string& url) +bool Application::openURL(std::string_view url) { NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; NSURL* nsUrl = [NSURL URLWithString:msg]; diff --git a/cocos/platform/mac/CCApplication-mac.mm b/cocos/platform/mac/CCApplication-mac.mm index 4dcacde3f761..83499df04421 100644 --- a/cocos/platform/mac/CCApplication-mac.mm +++ b/cocos/platform/mac/CCApplication-mac.mm @@ -166,7 +166,7 @@ static int32_t getCurrentMillSecond() return utils::getLanguageTypeByISO2([languageCode UTF8String]); } -bool Application::openURL(const std::string& url) +bool Application::openURL(std::string_view url) { NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; NSURL* nsUrl = [NSURL URLWithString:msg]; diff --git a/cocos/platform/mac/CCGLViewImpl-mac.mm b/cocos/platform/mac/CCGLViewImpl-mac.mm index 574d3eba9582..dfd66ec28d3b 100644 --- a/cocos/platform/mac/CCGLViewImpl-mac.mm +++ b/cocos/platform/mac/CCGLViewImpl-mac.mm @@ -481,7 +481,7 @@ static void onGLFWWindowFocusCallback(GLFWwindow* window, int focused) return initWithRect(viewName, Rect(0, 0, (float)videoMode->width, (float)videoMode->height), 1.0f, false); } -bool GLViewImpl::initWithFullscreen(const std::string& viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor) +bool GLViewImpl::initWithFullscreen(std::string_view viewname, const GLFWvidmode& videoMode, GLFWmonitor* monitor) { // Create fullscreen on specified monitor at the specified video mode. _monitor = monitor; diff --git a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm index 6be5cdade848..6aa0d355906f 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm +++ b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm @@ -57,24 +57,24 @@ - (void)setBackgroundTransparent; - (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)height; -- (void)setJavascriptInterfaceScheme:(const std::string&)scheme; +- (void)setJavascriptInterfaceScheme:(std::string_view)scheme; -- (void)loadData:(const std::string&)data - MIMEType:(const std::string&)MIMEType - textEncodingName:(const std::string&)encodingName - baseURL:(const std::string&)baseURL; +- (void)loadData:(std::string_view)data + MIMEType:(std::string_view)MIMEType + textEncodingName:(std::string_view)encodingName + baseURL:(std::string_view)baseURL; -- (void)loadHTMLString:(const std::string&)string baseURL:(const std::string&)baseURL; +- (void)loadHTMLString:(std::string_view)string baseURL:(std::string_view)baseURL; -- (void)loadUrl:(const std::string&)urlString cleanCachedData:(BOOL)needCleanCachedData; +- (void)loadUrl:(std::string_view)urlString cleanCachedData:(BOOL)needCleanCachedData; -- (void)loadFile:(const std::string&)filePath; +- (void)loadFile:(std::string_view)filePath; - (void)stopLoading; - (void)reload; -- (void)evaluateJS:(const std::string&)js; +- (void)evaluateJS:(std::string_view)js; - (void)goBack; @@ -189,15 +189,15 @@ - (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)heigh } } -- (void)setJavascriptInterfaceScheme:(const std::string&)scheme +- (void)setJavascriptInterfaceScheme:(std::string_view)scheme { self.jsScheme = @(scheme.c_str()); } -- (void)loadData:(const std::string&)data - MIMEType:(const std::string&)MIMEType - textEncodingName:(const std::string&)encodingName - baseURL:(const std::string&)baseURL +- (void)loadData:(std::string_view)data + MIMEType:(std::string_view)MIMEType + textEncodingName:(std::string_view)encodingName + baseURL:(std::string_view)baseURL { auto path = [[NSBundle mainBundle] resourcePath]; path = [path stringByAppendingPathComponent:@(baseURL.c_str())]; @@ -209,7 +209,7 @@ - (void)loadData:(const std::string&)data baseURL:url]; } -- (void)loadHTMLString:(const std::string&)string baseURL:(const std::string&)baseURL +- (void)loadHTMLString:(std::string_view)string baseURL:(std::string_view)baseURL { if (!self.wkWebView) { @@ -221,7 +221,7 @@ - (void)loadHTMLString:(const std::string&)string baseURL:(const std::string&)ba [self.wkWebView loadHTMLString:@(string.c_str()) baseURL:url]; } -- (void)loadUrl:(const std::string&)urlString cleanCachedData:(BOOL)needCleanCachedData +- (void)loadUrl:(std::string_view)urlString cleanCachedData:(BOOL)needCleanCachedData { if (!self.wkWebView) { @@ -240,7 +240,7 @@ - (void)loadUrl:(const std::string&)urlString cleanCachedData:(BOOL)needCleanCac [self.wkWebView loadRequest:request]; } -- (void)loadFile:(const std::string&)filePath +- (void)loadFile:(std::string_view)filePath { if (!self.wkWebView) { @@ -281,7 +281,7 @@ - (void)goForward [self.wkWebView goForward]; } -- (void)evaluateJS:(const std::string&)js +- (void)evaluateJS:(std::string_view)js { if (!self.wkWebView) { @@ -411,37 +411,37 @@ - (void)webView:(WKWebView*)webView _uiWebViewWrapper = nullptr; } -void WebViewImpl::setJavascriptInterfaceScheme(const std::string& scheme) +void WebViewImpl::setJavascriptInterfaceScheme(std::string_view scheme) { [_uiWebViewWrapper setJavascriptInterfaceScheme:scheme]; } void WebViewImpl::loadData(const Data& data, - const std::string& MIMEType, - const std::string& encoding, - const std::string& baseURL) + std::string_view MIMEType, + std::string_view encoding, + std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); [_uiWebViewWrapper loadData:dataString MIMEType:MIMEType textEncodingName:encoding baseURL:baseURL]; } -void WebViewImpl::loadHTMLString(const std::string& string, const std::string& baseURL) +void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) { [_uiWebViewWrapper loadHTMLString:string baseURL:baseURL]; } -void WebViewImpl::loadURL(const std::string& url) +void WebViewImpl::loadURL(std::string_view url) { this->loadURL(url, false); } -void WebViewImpl::loadURL(const std::string& url, bool cleanCachedData) +void WebViewImpl::loadURL(std::string_view url, bool cleanCachedData) { [_uiWebViewWrapper loadUrl:url cleanCachedData:cleanCachedData]; } -void WebViewImpl::loadFile(const std::string& fileName) +void WebViewImpl::loadFile(std::string_view fileName) { auto fullPath = cocos2d::FileUtils::getInstance()->fullPathForFilename(fileName); [_uiWebViewWrapper loadFile:fullPath]; @@ -477,7 +477,7 @@ - (void)webView:(WKWebView*)webView [_uiWebViewWrapper goForward]; } -void WebViewImpl::evaluateJS(const std::string& js) +void WebViewImpl::evaluateJS(std::string_view js) { [_uiWebViewWrapper evaluateJS:js]; } From 1c3ec2d68c5be43b77bbb74a1125872d335ef666 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 11:48:48 +0800 Subject: [PATCH 11/58] string_view for apple --- cocos/platform/apple/CCFileUtils-apple.mm | 20 ++++++++++--------- cocos/platform/mac/CCApplication-mac.mm | 2 +- cocos/renderer/backend/metal/ProgramMTL.h | 2 +- cocos/renderer/backend/metal/ProgramMTL.mm | 5 ++--- .../renderer/backend/metal/ShaderModuleMTL.h | 2 +- .../renderer/backend/metal/ShaderModuleMTL.mm | 2 +- .../Particle3D/PU/CCPUMaterialManager.cpp | 2 +- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/cocos/platform/apple/CCFileUtils-apple.mm b/cocos/platform/apple/CCFileUtils-apple.mm index 886b601cf4ca..3c4717884ccd 100644 --- a/cocos/platform/apple/CCFileUtils-apple.mm +++ b/cocos/platform/apple/CCFileUtils-apple.mm @@ -137,7 +137,7 @@ of this software and associated documentation files (the "Software"), to deal else { // Search path is an absolute path. - if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:filePath.c_str()]]) + if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:filePath.data()]]) { ret = true; } @@ -165,7 +165,7 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str return false; } - if (nftw(path.c_str(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS)) + if (nftw(path.data(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS)) return false; else return true; @@ -175,7 +175,8 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str std::string_view resolutionDiretory, std::string_view searchPath) const { - auto path = searchPath + resolutionDiretory + dir; + std::string path{searchPath}; + path.append(resolutionDiretory).append(dir); if (!path.empty() && path[path.length() - 1] == '/') { @@ -185,7 +186,7 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str if (path[0] == '/') { BOOL isDir = false; - if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:dir.c_str()] isDirectory:&isDir]) + if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:dir.data()] isDirectory:&isDir]) { return isDir ? path : ""; } @@ -207,9 +208,9 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str { if (directory[0] != '/') { - NSString* fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:filename.c_str()] + NSString* fullpath = [pimpl_->getBundle() pathForResource:[NSString stringWithUTF8String:filename.data()] ofType:nil - inDirectory:[NSString stringWithUTF8String:directory.c_str()]]; + inDirectory:[NSString stringWithUTF8String:directory.data()]]; if (fullpath != nil) { return [fullpath UTF8String]; @@ -217,7 +218,8 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str } else { - std::string fullPath = directory + filename; + std::string fullPath{directory}; + fullPath += filename; // Search path is an absolute path. if ([s_fileManager fileExistsAtPath:[NSString stringWithUTF8String:fullPath.c_str()]]) { @@ -236,14 +238,14 @@ static int unlink_cb(const char* fpath, const struct stat* sb, int typeflag, str NSError* error; - bool result = [s_fileManager createDirectoryAtPath:[NSString stringWithUTF8String:path.c_str()] + bool result = [s_fileManager createDirectoryAtPath:[NSString stringWithUTF8String:path.data()] withIntermediateDirectories:YES attributes:nil error:&error]; if (!result && error != nil) { - CCLOGERROR("Fail to create directory \"%s\": %s", path.c_str(), [error.localizedDescription UTF8String]); + CCLOGERROR("Fail to create directory \"%s\": %s", path.data(), [error.localizedDescription UTF8String]); } return result; diff --git a/cocos/platform/mac/CCApplication-mac.mm b/cocos/platform/mac/CCApplication-mac.mm index 83499df04421..b4fd1dc68414 100644 --- a/cocos/platform/mac/CCApplication-mac.mm +++ b/cocos/platform/mac/CCApplication-mac.mm @@ -168,7 +168,7 @@ static int32_t getCurrentMillSecond() bool Application::openURL(std::string_view url) { - NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; + NSString* msg = [NSString stringWithCString:url.data() encoding:NSUTF8StringEncoding]; NSURL* nsUrl = [NSURL URLWithString:msg]; return [[NSWorkspace sharedWorkspace] openURL:nsUrl]; } diff --git a/cocos/renderer/backend/metal/ProgramMTL.h b/cocos/renderer/backend/metal/ProgramMTL.h index c6c0be6b9595..a8af638c31db 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.h +++ b/cocos/renderer/backend/metal/ProgramMTL.h @@ -94,7 +94,7 @@ class ProgramMTL : public Program * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - const hlookup::string_map getActiveAttributes() const override; + hlookup::string_map getActiveAttributes() const override; /** * Get maximum vertex location. diff --git a/cocos/renderer/backend/metal/ProgramMTL.mm b/cocos/renderer/backend/metal/ProgramMTL.mm index 2806a6b47c89..d252ce63bbad 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.mm +++ b/cocos/renderer/backend/metal/ProgramMTL.mm @@ -118,7 +118,7 @@ of this software and associated documentation files (the "Software"), to deal return _fragmentShader->getMaxLocation(); } -const std::unordered_map ProgramMTL::getActiveAttributes() const +hlookup::string_map ProgramMTL::getActiveAttributes() const { return _vertexShader->getAttributeInfo(); } @@ -166,7 +166,7 @@ of this software and associated documentation files (the "Software"), to deal return 0; } -const std::unordered_map& ProgramMTL::getAllActiveUniformInfo(ShaderStage stage) const +const hlookup::string_map& ProgramMTL::getAllActiveUniformInfo(ShaderStage stage) const { switch (stage) { @@ -176,7 +176,6 @@ of this software and associated documentation files (the "Software"), to deal return _fragmentShader->getAllActiveUniformInfo(); default: CCASSERT(false, "Invalid shader stage."); - break; } } diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.h b/cocos/renderer/backend/metal/ShaderModuleMTL.h index 60fd36ca1726..d8fe9df735da 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.h +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.h @@ -111,7 +111,7 @@ class ShaderModuleMTL : public ShaderModule * @param name Specifies the attribute name. * @return The attribute location. */ - int getAttributeLocation(std::string name); + int getAttributeLocation(std::string_view name); /** * Get uniform buffer size in bytes that holds all the uniforms. diff --git a/cocos/renderer/backend/metal/ShaderModuleMTL.mm b/cocos/renderer/backend/metal/ShaderModuleMTL.mm index 7106f5917321..f52e414a7868 100644 --- a/cocos/renderer/backend/metal/ShaderModuleMTL.mm +++ b/cocos/renderer/backend/metal/ShaderModuleMTL.mm @@ -222,7 +222,7 @@ of this software and associated documentation files (the "Software"), to deal return _attributeLocation[name]; } -int ShaderModuleMTL::getAttributeLocation(std::string name) +int ShaderModuleMTL::getAttributeLocation(std::string_view name) { auto iter = _attributeInfo.find(name); if (iter != _attributeInfo.end()) diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.cpp b/extensions/Particle3D/PU/CCPUMaterialManager.cpp index abd047630d57..323a2055beb1 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.cpp +++ b/extensions/Particle3D/PU/CCPUMaterialManager.cpp @@ -172,7 +172,7 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) AAssetDir_close(dir); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - ftw(fileFolder.c_str(), iterPath, 500); + ftw(fileFolder.data(), iterPath, 500); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX || CC_TARGET_PLATFORM == CC_PLATFORM_TIZEN) DIR* d; // dir handle struct dirent* file; // readdir From 8e8affab5e08002811122d5a9e9f8fd858b6306b Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 15:46:32 +0800 Subject: [PATCH 12/58] string_view for lua bindings --- .../auto/lua_cocos2dx_3d_auto.cpp | 192 +- .../auto/lua_cocos2dx_audioengine_auto.cpp | 32 +- .../lua-bindings/auto/lua_cocos2dx_auto.cpp | 1922 +++++++++-------- .../lua-bindings/auto/lua_cocos2dx_auto.hpp | 4 + .../auto/lua_cocos2dx_backend_auto.cpp | 54 +- .../auto/lua_cocos2dx_controller_auto.cpp | 4 +- .../auto/lua_cocos2dx_csloader_auto.cpp | 36 +- .../auto/lua_cocos2dx_extension_auto.cpp | 136 +- .../auto/lua_cocos2dx_navmesh_auto.cpp | 16 +- .../auto/lua_cocos2dx_physics_auto.cpp | 64 +- .../auto/lua_cocos2dx_studio_auto.cpp | 362 ++-- .../auto/lua_cocos2dx_ui_auto.cpp | 1384 ++++++------ .../auto/lua_cocos2dx_video_auto.cpp | 16 +- .../auto/lua_cocos2dx_webview_auto.cpp | 32 +- .../manual/LuaBasicConversions.cpp | 58 +- .../lua-bindings/manual/LuaBasicConversions.h | 13 +- tools/bindings-generator/generator.py | 52 +- .../targets/lua/conversions.yaml | 14 +- tools/bindings-generator/test/test.ini | 2 +- tools/tolua/cocos2dx.ini | 2 +- tools/tolua/cocos2dx_3d.ini | 2 +- tools/tolua/cocos2dx_audioengine.ini | 2 +- tools/tolua/cocos2dx_backend.ini | 4 +- tools/tolua/cocos2dx_controller.ini | 2 +- tools/tolua/cocos2dx_csloader.ini | 2 +- tools/tolua/cocos2dx_extension.ini | 2 +- tools/tolua/cocos2dx_navmesh.ini | 2 +- tools/tolua/cocos2dx_physics.ini | 2 +- tools/tolua/cocos2dx_physics3d.ini | 2 +- tools/tolua/cocos2dx_spine.ini | 2 +- tools/tolua/cocos2dx_studio.ini | 2 +- tools/tolua/cocos2dx_ui.ini | 4 +- tools/tolua/cocos2dx_video.ini | 2 +- tools/tolua/cocos2dx_webview.ini | 2 +- tools/tolua/genbindings.py | 2 +- 35 files changed, 2359 insertions(+), 2070 deletions(-) diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp index 73e05e7f3cdc..6a9652abdce7 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp @@ -32,12 +32,12 @@ int lua_cocos2dx_3d_Animation3D_initWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Animation3D:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Animation3D:initWithFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Animation3D:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Animation3D:initWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Animation3D_initWithFile'", nullptr); @@ -172,8 +172,8 @@ int lua_cocos2dx_3d_Animation3D_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Animation3D:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Animation3D:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Animation3D_create'", nullptr); @@ -185,10 +185,10 @@ int lua_cocos2dx_3d_Animation3D_create(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Animation3D:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Animation3D:create"); + std::string_view arg0; + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Animation3D:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Animation3D:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Animation3D_create'", nullptr); @@ -1341,18 +1341,18 @@ int lua_cocos2dx_3d_TextureCube_create(lua_State* tolua_S) if (argc == 6) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCube:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TextureCube:create"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.TextureCube:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "cc.TextureCube:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.TextureCube:create"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.TextureCube:create"); + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCube:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TextureCube:create"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.TextureCube:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "cc.TextureCube:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.TextureCube:create"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.TextureCube:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_TextureCube_create'", nullptr); @@ -1641,8 +1641,8 @@ int lua_cocos2dx_3d_BillBoard_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.BillBoard:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.BillBoard:create"); if (!ok) { break; } cocos2d::BillBoard* ret = cocos2d::BillBoard::create(arg0); object_to_luaval(tolua_S, "cc.BillBoard",(cocos2d::BillBoard*)ret); @@ -1654,8 +1654,8 @@ int lua_cocos2dx_3d_BillBoard_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.BillBoard:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.BillBoard:create"); if (!ok) { break; } cocos2d::BillBoard::Mode arg1; ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.BillBoard:create"); @@ -1693,8 +1693,8 @@ int lua_cocos2dx_3d_BillBoard_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.BillBoard:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.BillBoard:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.BillBoard:create"); @@ -1709,8 +1709,8 @@ int lua_cocos2dx_3d_BillBoard_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.BillBoard:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.BillBoard:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.BillBoard:create"); @@ -2071,8 +2071,8 @@ int lua_cocos2dx_3d_Mesh_getName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Mesh_getName'", nullptr); return 0; } - const std::string& ret = cobj->getName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Mesh:getName",argc, 0); @@ -2325,9 +2325,9 @@ int lua_cocos2dx_3d_Mesh_setName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Mesh:setName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Mesh:setName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Mesh_setName'", nullptr); @@ -2938,9 +2938,9 @@ int lua_cocos2dx_3d_Skeleton3D_getBoneByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Skeleton3D:getBoneByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Skeleton3D:getBoneByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Skeleton3D_getBoneByName'", nullptr); @@ -3392,24 +3392,24 @@ int lua_cocos2dx_3d_Skybox_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 6) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; - std::string arg5; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; + std::string_view arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Skybox:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Skybox:init"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.Skybox:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "cc.Skybox:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.Skybox:init"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.Skybox:init"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.Skybox:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Skybox_init'", nullptr); @@ -3497,23 +3497,23 @@ int lua_cocos2dx_3d_Skybox_create(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Skybox:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Skybox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Skybox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Skybox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.Skybox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.Skybox:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "cc.Skybox:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "cc.Skybox:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.Skybox:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.Skybox:create"); if (!ok) { break; } - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.Skybox:create"); + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.Skybox:create"); if (!ok) { break; } cocos2d::Skybox* ret = cocos2d::Skybox::create(arg0, arg1, arg2, arg3, arg4, arg5); object_to_luaval(tolua_S, "cc.Skybox",(cocos2d::Skybox*)ret); @@ -3685,8 +3685,8 @@ int lua_cocos2dx_3d_Sprite3D_setTexture(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:setTexture"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:setTexture"); if (!ok) { break; } cobj->setTexture(arg0); @@ -4321,9 +4321,9 @@ int lua_cocos2dx_3d_Sprite3D_getAttachNode(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:getAttachNode"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:getAttachNode"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Sprite3D_getAttachNode'", nullptr); @@ -4532,9 +4532,9 @@ int lua_cocos2dx_3d_Sprite3D_removeAttachNode(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:removeAttachNode"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:removeAttachNode"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Sprite3D_removeAttachNode'", nullptr); @@ -4679,9 +4679,9 @@ int lua_cocos2dx_3d_Sprite3D_getMeshByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:getMeshByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:getMeshByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Sprite3D_getMeshByName'", nullptr); @@ -4719,8 +4719,8 @@ int lua_cocos2dx_3d_Sprite3D_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:create"); if (!ok) { break; } cocos2d::Sprite3D* ret = cocos2d::Sprite3D::create(arg0); object_to_luaval(tolua_S, "cc.Sprite3D",(cocos2d::Sprite3D*)ret); @@ -4742,11 +4742,11 @@ int lua_cocos2dx_3d_Sprite3D_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3D:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3D:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Sprite3D:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Sprite3D:create"); if (!ok) { break; } cocos2d::Sprite3D* ret = cocos2d::Sprite3D::create(arg0, arg1); object_to_luaval(tolua_S, "cc.Sprite3D",(cocos2d::Sprite3D*)ret); @@ -4832,9 +4832,9 @@ int lua_cocos2dx_3d_Sprite3DCache_removeSprite3DData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3DCache:removeSprite3DData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3DCache:removeSprite3DData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Sprite3DCache_removeSprite3DData'", nullptr); @@ -5092,8 +5092,8 @@ int lua_cocos2dx_3d_Sprite3DMaterial_createWithFilename(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite3DMaterial:createWithFilename"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite3DMaterial:createWithFilename"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Sprite3DMaterial_createWithFilename'", nullptr); @@ -5316,9 +5316,9 @@ int lua_cocos2dx_3d_Terrain_initHeightMap(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Terrain:initHeightMap"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Terrain:initHeightMap"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Terrain_initHeightMap'", nullptr); @@ -5567,9 +5567,9 @@ int lua_cocos2dx_3d_Terrain_resetHeightMap(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Terrain:resetHeightMap"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Terrain:resetHeightMap"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Terrain_resetHeightMap'", nullptr); @@ -6026,8 +6026,8 @@ int lua_cocos2dx_3d_Terrain_getTerrainSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Terrain_getTerrainSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getTerrainSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getTerrainSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Terrain:getTerrainSize",argc, 0); @@ -6221,9 +6221,9 @@ int lua_cocos2dx_3d_Terrain_setLightMap(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Terrain:setLightMap"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Terrain:setLightMap"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Terrain_setLightMap'", nullptr); @@ -6494,9 +6494,9 @@ int lua_cocos2dx_3d_Bundle3D_load(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Bundle3D:load"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Bundle3D:load"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Bundle3D_load'", nullptr); @@ -6544,10 +6544,10 @@ int lua_cocos2dx_3d_Bundle3D_loadSkinData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::SkinData* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Bundle3D:loadSkinData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Bundle3D:loadSkinData"); #pragma warning NO CONVERSION TO NATIVE FOR SkinData* ok = false; @@ -6747,10 +6747,10 @@ int lua_cocos2dx_3d_Bundle3D_loadAnimationData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::Animation3DData* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Bundle3D:loadAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Bundle3D:loadAnimationData"); #pragma warning NO CONVERSION TO NATIVE FOR Animation3DData* ok = false; @@ -6790,8 +6790,8 @@ int lua_cocos2dx_3d_Bundle3D_parseSamplerAddressMode(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Bundle3D:parseSamplerAddressMode"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Bundle3D:parseSamplerAddressMode"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_3d_Bundle3D_parseSamplerAddressMode'", nullptr); @@ -6896,9 +6896,9 @@ int lua_cocos2dx_3d_Bundle3D_parseGLDataType(lua_State* tolua_S) if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Bundle3D:parseGLDataType"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Bundle3D:parseGLDataType"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.Bundle3D:parseGLDataType"); if(!ok) { diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_audioengine_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_audioengine_auto.cpp index c468bc15a430..fbc51b00723d 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_audioengine_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_audioengine_auto.cpp @@ -184,8 +184,8 @@ int lua_cocos2dx_audioengine_AudioEngine_uncache(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:uncache"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:uncache"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_audioengine_AudioEngine_uncache'", nullptr); @@ -607,8 +607,8 @@ int lua_cocos2dx_audioengine_AudioEngine_preload(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:preload"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:preload"); if (!ok) { break; } std::function arg1; do { @@ -627,8 +627,8 @@ int lua_cocos2dx_audioengine_AudioEngine_preload(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:preload"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:preload"); if (!ok) { break; } cocos2d::AudioEngine::preload(arg0); lua_settop(tolua_S, 1); @@ -697,8 +697,8 @@ int lua_cocos2dx_audioengine_AudioEngine_play2d(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_audioengine_AudioEngine_play2d'", nullptr); @@ -710,9 +710,9 @@ int lua_cocos2dx_audioengine_AudioEngine_play2d(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.AudioEngine:play2d"); if(!ok) { @@ -725,10 +725,10 @@ int lua_cocos2dx_audioengine_AudioEngine_play2d(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; bool arg1; double arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.AudioEngine:play2d"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.AudioEngine:play2d"); if(!ok) @@ -742,11 +742,11 @@ int lua_cocos2dx_audioengine_AudioEngine_play2d(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; + std::string_view arg0; bool arg1; double arg2; const cocos2d::AudioProfile* arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:play2d"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.AudioEngine:play2d"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.AudioEngine:play2d"); ok &= luaval_to_object(tolua_S, 5, "cc.AudioProfile",&arg3, "cc.AudioEngine:play2d"); @@ -1035,8 +1035,8 @@ int lua_cocos2dx_audioengine_AudioEngine_getProfile(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AudioEngine:getProfile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AudioEngine:getProfile"); if (!ok) { break; } cocos2d::AudioProfile* ret = cocos2d::AudioEngine::getProfile(arg0); object_to_luaval(tolua_S, "cc.AudioProfile",(cocos2d::AudioProfile*)ret); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp index ea1bbd26b656..8a8ea3665c9c 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp @@ -300,9 +300,9 @@ int lua_cocos2dx_Console_delCommand(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Console:delCommand"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Console:delCommand"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Console_delCommand'", nullptr); @@ -497,9 +497,9 @@ int lua_cocos2dx_Console_setBindAddress(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Console:setBindAddress"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Console:setBindAddress"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Console_setBindAddress'", nullptr); @@ -962,8 +962,8 @@ int lua_cocos2dx_ShaderCache_newVertexShaderModule(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.ShaderCache:newVertexShaderModule"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.ShaderCache:newVertexShaderModule"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ShaderCache_newVertexShaderModule'", nullptr); @@ -998,8 +998,8 @@ int lua_cocos2dx_ShaderCache_newFragmentShaderModule(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.ShaderCache:newFragmentShaderModule"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.ShaderCache:newFragmentShaderModule"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ShaderCache_newFragmentShaderModule'", nullptr); @@ -1648,8 +1648,8 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; @@ -1668,16 +1668,16 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Texture2D:initWithString"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); if (!ok) { break; } bool ret = cobj->initWithString(arg0, arg1, arg2, arg3); @@ -1692,16 +1692,16 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Texture2D:initWithString"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -1720,16 +1720,16 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Texture2D:initWithString"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -1752,16 +1752,16 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Texture2D:initWithString"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -1788,16 +1788,16 @@ int lua_cocos2dx_Texture2D_initWithString(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.Texture2D:initWithString"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Texture2D:initWithString"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Texture2D:initWithString"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Texture2D:initWithString"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -2062,8 +2062,8 @@ int lua_cocos2dx_Texture2D_getContentSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Texture2D_getContentSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getContentSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getContentSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Texture2D:getContentSize",argc, 0); @@ -2463,8 +2463,8 @@ int lua_cocos2dx_Texture2D_getContentSizeInPixels(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Texture2D_getContentSizeInPixels'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getContentSizeInPixels(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getContentSizeInPixels(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Texture2D:getContentSizeInPixels",argc, 0); @@ -4259,9 +4259,9 @@ int lua_cocos2dx_Component_setName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Component:setName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Component:setName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_setName'", nullptr); @@ -4555,8 +4555,8 @@ int lua_cocos2dx_Component_getName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Component_getName'", nullptr); return 0; } - const std::string& ret = cobj->getName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Component:getName",argc, 0); @@ -4759,8 +4759,8 @@ int lua_cocos2dx_Node_addChild(lua_State* tolua_S) ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.Node:addChild"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.Node:addChild"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.Node:addChild"); if (!ok) { break; } cobj->addChild(arg0, arg1, arg2); @@ -4814,8 +4814,8 @@ int lua_cocos2dx_Node_removeComponent(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:removeComponent"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:removeComponent"); if (!ok) { break; } bool ret = cobj->removeComponent(arg0); @@ -5454,9 +5454,9 @@ int lua_cocos2dx_Node_getChildByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:getChildByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:getChildByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_getChildByName'", nullptr); @@ -7147,8 +7147,8 @@ int lua_cocos2dx_Node_getName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_getName'", nullptr); return 0; } - const std::string& ret = cobj->getName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Node:getName",argc, 0); @@ -8525,9 +8525,9 @@ int lua_cocos2dx_Node_removeChildByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:removeChildByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:removeChildByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_removeChildByName'", nullptr); @@ -8539,10 +8539,10 @@ int lua_cocos2dx_Node_removeChildByName(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:removeChildByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:removeChildByName"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.Node:removeChildByName"); if(!ok) @@ -8564,6 +8564,59 @@ int lua_cocos2dx_Node_removeChildByName(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_resetChild(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_resetChild'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { + cocos2d::Node* arg0; + bool arg1; + + ok &= luaval_to_object(tolua_S, 2, "cc.Node",&arg0, "cc.Node:resetChild"); + + ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.Node:resetChild"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_resetChild'", nullptr); + return 0; + } + cobj->resetChild(arg0, arg1); + lua_settop(tolua_S, 1); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Node:resetChild",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_resetChild'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_setScheduler(lua_State* tolua_S) { int argc = 0; @@ -8927,9 +8980,9 @@ int lua_cocos2dx_Node_setName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:setName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:setName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_setName'", nullptr); @@ -9861,9 +9914,9 @@ int lua_cocos2dx_Node_isScheduled(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:isScheduled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:isScheduled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_isScheduled'", nullptr); @@ -10455,9 +10508,9 @@ int lua_cocos2dx_Node_getComponent(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Node:getComponent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Node:getComponent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_getComponent'", nullptr); @@ -10510,8 +10563,8 @@ int lua_cocos2dx_Node_getContentSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Node_getContentSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getContentSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getContentSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Node:getContentSize",argc, 0); @@ -11940,6 +11993,7 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"getPhysicsBody",lua_cocos2dx_Node_getPhysicsBody); tolua_function(tolua_S,"getAnchorPointInPoints",lua_cocos2dx_Node_getAnchorPointInPoints); tolua_function(tolua_S,"removeChildByName",lua_cocos2dx_Node_removeChildByName); + tolua_function(tolua_S,"resetChild",lua_cocos2dx_Node_resetChild); tolua_function(tolua_S,"setScheduler",lua_cocos2dx_Node_setScheduler); tolua_function(tolua_S,"stopAllActions",lua_cocos2dx_Node_stopAllActions); tolua_function(tolua_S,"getSkewX",lua_cocos2dx_Node_getSkewX); @@ -12403,9 +12457,9 @@ int lua_cocos2dx_Scene_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Scene:initWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Scene:initWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Scene_initWithSize'", nullptr); @@ -12489,8 +12543,8 @@ int lua_cocos2dx_Scene_createWithSize(lua_State* tolua_S) if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Scene:createWithSize"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Scene:createWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Scene_createWithSize'", nullptr); @@ -13078,8 +13132,8 @@ int lua_cocos2dx_GLView_getViewName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLView_getViewName'", nullptr); return 0; } - const std::string& ret = cobj->getViewName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getViewName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.GLView:getViewName",argc, 0); @@ -13222,8 +13276,8 @@ int lua_cocos2dx_GLView_getFrameSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLView_getFrameSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getFrameSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getFrameSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.GLView:getFrameSize",argc, 0); @@ -13507,8 +13561,8 @@ int lua_cocos2dx_GLView_getDesignResolutionSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLView_getDesignResolutionSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getDesignResolutionSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getDesignResolutionSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.GLView:getDesignResolutionSize",argc, 0); @@ -13544,8 +13598,8 @@ int lua_cocos2dx_GLView_setIcon(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 1) { - std::vector arg0; - ok &= luaval_to_std_vector_string(tolua_S, 2, &arg0, "cc.GLView:setIcon"); + std::vector arg0; + ok &= luaval_to_std_vector_string_view(tolua_S, 2, &arg0, "cc.GLView:setIcon"); if (!ok) { break; } cobj->setIcon(arg0); @@ -13556,8 +13610,8 @@ int lua_cocos2dx_GLView_setIcon(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLView:setIcon"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLView:setIcon"); if (!ok) { break; } cobj->setIcon(arg0); @@ -14101,9 +14155,9 @@ int lua_cocos2dx_GLView_setViewName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLView:setViewName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLView:setViewName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLView_setViewName'", nullptr); @@ -14203,8 +14257,8 @@ int lua_cocos2dx_GLView_getVisibleSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLView_getVisibleSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getVisibleSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getVisibleSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.GLView:getVisibleSize",argc, 0); @@ -14711,8 +14765,8 @@ int lua_cocos2dx_Director_getWinSizeInPixels(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Director_getWinSizeInPixels'", nullptr); return 0; } - cocos2d::Size ret = cobj->getWinSizeInPixels(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getWinSizeInPixels(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Director:getWinSizeInPixels",argc, 0); @@ -15049,8 +15103,8 @@ int lua_cocos2dx_Director_getWinSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Director_getWinSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getWinSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getWinSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Director:getWinSize",argc, 0); @@ -16163,6 +16217,53 @@ int lua_cocos2dx_Director_isNextDeltaTimeZero(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Director_isChildrenIndexerEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Director* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Director",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Director*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Director_isChildrenIndexerEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Director_isChildrenIndexerEnabled'", nullptr); + return 0; + } + bool ret = cobj->isChildrenIndexerEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Director:isChildrenIndexerEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Director_isChildrenIndexerEnabled'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Director_setClearColor(lua_State* tolua_S) { int argc = 0; @@ -16554,6 +16655,56 @@ int lua_cocos2dx_Director_setNotificationNode(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Director_setChildrenIndexerEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Director* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Director",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Director*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Director_setChildrenIndexerEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.Director:setChildrenIndexerEnabled"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Director_setChildrenIndexerEnabled'", nullptr); + return 0; + } + cobj->setChildrenIndexerEnabled(arg0); + lua_settop(tolua_S, 1); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Director:setChildrenIndexerEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Director_setChildrenIndexerEnabled'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Director_drawScene(lua_State* tolua_S) { int argc = 0; @@ -17122,8 +17273,8 @@ int lua_cocos2dx_Director_getVisibleSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Director_getVisibleSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getVisibleSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getVisibleSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Director:getVisibleSize",argc, 0); @@ -17653,6 +17804,7 @@ int lua_register_cocos2dx_Director(lua_State* tolua_S) tolua_function(tolua_S,"popToSceneStackLevel",lua_cocos2dx_Director_popToSceneStackLevel); tolua_function(tolua_S,"resume",lua_cocos2dx_Director_resume); tolua_function(tolua_S,"isNextDeltaTimeZero",lua_cocos2dx_Director_isNextDeltaTimeZero); + tolua_function(tolua_S,"isChildrenIndexerEnabled",lua_cocos2dx_Director_isChildrenIndexerEnabled); tolua_function(tolua_S,"setClearColor",lua_cocos2dx_Director_setClearColor); tolua_function(tolua_S,"endToLua",lua_cocos2dx_Director_end); tolua_function(tolua_S,"setOpenGLView",lua_cocos2dx_Director_setOpenGLView); @@ -17661,6 +17813,7 @@ int lua_register_cocos2dx_Director(lua_State* tolua_S) tolua_function(tolua_S,"getTotalFrames",lua_cocos2dx_Director_getTotalFrames); tolua_function(tolua_S,"runWithScene",lua_cocos2dx_Director_runWithScene); tolua_function(tolua_S,"setNotificationNode",lua_cocos2dx_Director_setNotificationNode); + tolua_function(tolua_S,"setChildrenIndexerEnabled",lua_cocos2dx_Director_setChildrenIndexerEnabled); tolua_function(tolua_S,"drawScene",lua_cocos2dx_Director_drawScene); tolua_function(tolua_S,"restart",lua_cocos2dx_Director_restart); tolua_function(tolua_S,"popScene",lua_cocos2dx_Director_popScene); @@ -20524,9 +20677,9 @@ int lua_cocos2dx_Image_initWithImageFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Image:initWithImageFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Image:initWithImageFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Image_initWithImageFile'", nullptr); @@ -20809,9 +20962,9 @@ int lua_cocos2dx_Image_saveToFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Image:saveToFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Image:saveToFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Image_saveToFile'", nullptr); @@ -20823,10 +20976,10 @@ int lua_cocos2dx_Image_saveToFile(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Image:saveToFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Image:saveToFile"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.Image:saveToFile"); if(!ok) @@ -21065,8 +21218,8 @@ int lua_cocos2dx_PolygonInfo_getFilename(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_PolygonInfo_getFilename'", nullptr); return 0; } - const std::string& ret = cobj->getFilename(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFilename(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.PolygonInfo:getFilename",argc, 0); @@ -21201,9 +21354,9 @@ int lua_cocos2dx_PolygonInfo_setFilename(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PolygonInfo:setFilename"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PolygonInfo:setFilename"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_PolygonInfo_setFilename'", nullptr); @@ -21603,9 +21756,9 @@ int lua_cocos2dx_AutoPolygon_constructor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AutoPolygon:AutoPolygon"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AutoPolygon:AutoPolygon"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AutoPolygon_constructor'", nullptr); @@ -21876,8 +22029,8 @@ int lua_cocos2dx_SpriteFrame_getOriginalSizeInPixels(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrame_getOriginalSizeInPixels'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getOriginalSizeInPixels(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getOriginalSizeInPixels(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.SpriteFrame:getOriginalSizeInPixels",argc, 0); @@ -21918,9 +22071,9 @@ int lua_cocos2dx_SpriteFrame_setOriginalSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.SpriteFrame:setOriginalSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.SpriteFrame:setOriginalSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrame_setOriginalSize'", nullptr); @@ -22207,8 +22360,8 @@ int lua_cocos2dx_SpriteFrame_initWithTextureFilename(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrame:initWithTextureFilename"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrame:initWithTextureFilename"); if (!ok) { break; } cocos2d::Rect arg1; @@ -22223,8 +22376,8 @@ int lua_cocos2dx_SpriteFrame_initWithTextureFilename(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.SpriteFrame:initWithTextureFilename"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "cc.SpriteFrame:initWithTextureFilename"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "cc.SpriteFrame:initWithTextureFilename"); if (!ok) { break; } bool ret = cobj->initWithTextureFilename(arg0, arg1, arg2, arg3, arg4); @@ -22235,8 +22388,8 @@ int lua_cocos2dx_SpriteFrame_initWithTextureFilename(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrame:initWithTextureFilename"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrame:initWithTextureFilename"); if (!ok) { break; } cocos2d::Rect arg1; @@ -22348,8 +22501,8 @@ int lua_cocos2dx_SpriteFrame_initWithTexture(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.SpriteFrame:initWithTexture"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "cc.SpriteFrame:initWithTexture"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "cc.SpriteFrame:initWithTexture"); if (!ok) { break; } bool ret = cobj->initWithTexture(arg0, arg1, arg2, arg3, arg4); @@ -22417,8 +22570,8 @@ int lua_cocos2dx_SpriteFrame_getOriginalSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrame_getOriginalSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getOriginalSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getOriginalSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.SpriteFrame:getOriginalSize",argc, 0); @@ -22744,9 +22897,9 @@ int lua_cocos2dx_SpriteFrame_setOriginalSizeInPixels(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.SpriteFrame:setOriginalSizeInPixels"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.SpriteFrame:setOriginalSizeInPixels"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrame_setOriginalSizeInPixels'", nullptr); @@ -22925,8 +23078,8 @@ int lua_cocos2dx_SpriteFrame_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrame:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrame:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.SpriteFrame:create"); @@ -22937,8 +23090,8 @@ int lua_cocos2dx_SpriteFrame_create(lua_State* tolua_S) cocos2d::Vec2 arg3; ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.SpriteFrame:create"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "cc.SpriteFrame:create"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "cc.SpriteFrame:create"); if (!ok) { break; } cocos2d::SpriteFrame* ret = cocos2d::SpriteFrame::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "cc.SpriteFrame",(cocos2d::SpriteFrame*)ret); @@ -22950,8 +23103,8 @@ int lua_cocos2dx_SpriteFrame_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrame:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrame:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.SpriteFrame:create"); @@ -23000,8 +23153,8 @@ int lua_cocos2dx_SpriteFrame_createWithTexture(lua_State* tolua_S) cocos2d::Vec2 arg3; ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.SpriteFrame:createWithTexture"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "cc.SpriteFrame:createWithTexture"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "cc.SpriteFrame:createWithTexture"); if (!ok) { break; } cocos2d::SpriteFrame* ret = cocos2d::SpriteFrame::createWithTexture(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "cc.SpriteFrame",(cocos2d::SpriteFrame*)ret); @@ -24186,9 +24339,9 @@ int lua_cocos2dx_Animation_addSpriteFrameWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Animation:addSpriteFrameWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Animation:addSpriteFrameWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Animation_addSpriteFrameWithFile'", nullptr); @@ -31325,12 +31478,12 @@ int lua_cocos2dx_UserDefault_getStringForKey(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.UserDefault:getStringForKey"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.UserDefault:getStringForKey"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.UserDefault:getStringForKey"); if (!ok) { break; } - std::string ret = cobj->getStringForKey(arg0, arg1); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getStringForKey(arg0, arg1); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } }while(0); @@ -31341,8 +31494,8 @@ int lua_cocos2dx_UserDefault_getStringForKey(lua_State* tolua_S) std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.UserDefault:getStringForKey"); arg0 = arg0_tmp.c_str(); if (!ok) { break; } - std::string ret = cobj->getStringForKey(arg0); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getStringForKey(arg0); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } }while(0); @@ -31386,11 +31539,11 @@ int lua_cocos2dx_UserDefault_setStringForKey(lua_State* tolua_S) if (argc == 2) { const char* arg0; - std::string arg1; + std::string_view arg1; std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "cc.UserDefault:setStringForKey"); arg0 = arg0_tmp.c_str(); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.UserDefault:setStringForKey"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.UserDefault:setStringForKey"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_UserDefault_setStringForKey'", nullptr); @@ -31498,8 +31651,8 @@ int lua_cocos2dx_UserDefault_setEncryptEnabled(lua_State* tolua_S) if (argc == 3) { bool arg0; - cxx17::string_view arg1; - cxx17::string_view arg2; + std::string_view arg1; + std::string_view arg2; ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.UserDefault:setEncryptEnabled"); @@ -31843,9 +31996,9 @@ int lua_cocos2dx_FileUtils_fullPathForFilename(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:fullPathForFilename"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:fullPathForFilename"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_fullPathForFilename'", nullptr); @@ -31888,8 +32041,8 @@ int lua_cocos2dx_FileUtils_getStringFromFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getStringFromFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getStringFromFile"); if (!ok) { break; } std::function arg1; @@ -31908,8 +32061,8 @@ int lua_cocos2dx_FileUtils_getStringFromFile(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getStringFromFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getStringFromFile"); if (!ok) { break; } std::string ret = cobj->getStringFromFile(arg0); @@ -32048,8 +32201,8 @@ int lua_cocos2dx_FileUtils_removeFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:removeFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:removeFile"); if (!ok) { break; } std::function arg1; @@ -32068,8 +32221,8 @@ int lua_cocos2dx_FileUtils_removeFile(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:removeFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:removeFile"); if (!ok) { break; } bool ret = cobj->removeFile(arg0); @@ -32116,10 +32269,10 @@ int lua_cocos2dx_FileUtils_listFilesRecursivelyAsync(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; std::function)> arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:listFilesRecursivelyAsync"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:listFilesRecursivelyAsync"); do { // Lambda binding for lua is not supported. @@ -32173,9 +32326,9 @@ int lua_cocos2dx_FileUtils_isAbsolutePath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isAbsolutePath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isAbsolutePath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_isAbsolutePath'", nullptr); @@ -32218,16 +32371,16 @@ int lua_cocos2dx_FileUtils_renameFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.FileUtils:renameFile"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.FileUtils:renameFile"); if (!ok) { break; } std::function arg3; @@ -32246,16 +32399,16 @@ int lua_cocos2dx_FileUtils_renameFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.FileUtils:renameFile"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.FileUtils:renameFile"); if (!ok) { break; } bool ret = cobj->renameFile(arg0, arg1, arg2); @@ -32266,12 +32419,12 @@ int lua_cocos2dx_FileUtils_renameFile(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); if (!ok) { break; } bool ret = cobj->renameFile(arg0, arg1); @@ -32282,12 +32435,12 @@ int lua_cocos2dx_FileUtils_renameFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:renameFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:renameFile"); if (!ok) { break; } std::function arg2; @@ -32389,9 +32542,9 @@ int lua_cocos2dx_FileUtils_loadFilenameLookupDictionaryFromFile(lua_State* tolua argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:loadFilenameLookupDictionaryFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:loadFilenameLookupDictionaryFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_loadFilenameLookupDictionaryFromFile'", nullptr); @@ -32486,9 +32639,9 @@ int lua_cocos2dx_FileUtils_getValueVectorFromFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getValueVectorFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getValueVectorFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getValueVectorFromFile'", nullptr); @@ -32584,11 +32737,11 @@ int lua_cocos2dx_FileUtils_writeToFile(lua_State* tolua_S) if (argc == 2) { cocos2d::ValueMap arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.FileUtils:writeToFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeToFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeToFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_writeToFile'", nullptr); @@ -32683,9 +32836,9 @@ int lua_cocos2dx_FileUtils_getNewFilename(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getNewFilename"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getNewFilename"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getNewFilename'", nullptr); @@ -32733,9 +32886,9 @@ int lua_cocos2dx_FileUtils_listFiles(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:listFiles"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:listFiles"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_listFiles'", nullptr); @@ -32783,9 +32936,9 @@ int lua_cocos2dx_FileUtils_getValueMapFromFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getValueMapFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getValueMapFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getValueMapFromFile'", nullptr); @@ -32828,8 +32981,8 @@ int lua_cocos2dx_FileUtils_getFileSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getFileSize"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getFileSize"); if (!ok) { break; } std::function arg1; @@ -32848,8 +33001,8 @@ int lua_cocos2dx_FileUtils_getFileSize(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getFileSize"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getFileSize"); if (!ok) { break; } long long ret = cobj->getFileSize(arg0); @@ -32944,8 +33097,8 @@ int lua_cocos2dx_FileUtils_removeDirectory(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:removeDirectory"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:removeDirectory"); if (!ok) { break; } std::function arg1; @@ -32964,8 +33117,8 @@ int lua_cocos2dx_FileUtils_removeDirectory(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:removeDirectory"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:removeDirectory"); if (!ok) { break; } bool ret = cobj->removeDirectory(arg0); @@ -33061,8 +33214,8 @@ int lua_cocos2dx_FileUtils_writeStringToFile(lua_State* tolua_S) ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:writeStringToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeStringToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeStringToFile"); if (!ok) { break; } std::function arg2; @@ -33081,12 +33234,12 @@ int lua_cocos2dx_FileUtils_writeStringToFile(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:writeStringToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:writeStringToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeStringToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeStringToFile"); if (!ok) { break; } bool ret = cobj->writeStringToFile(arg0, arg1); @@ -33133,9 +33286,9 @@ int lua_cocos2dx_FileUtils_isFileExistInternal(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isFileExistInternal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isFileExistInternal"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_isFileExistInternal'", nullptr); @@ -33233,9 +33386,9 @@ int lua_cocos2dx_FileUtils_addSearchResolutionsOrder(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:addSearchResolutionsOrder"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:addSearchResolutionsOrder"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_addSearchResolutionsOrder'", nullptr); @@ -33247,10 +33400,10 @@ int lua_cocos2dx_FileUtils_addSearchResolutionsOrder(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:addSearchResolutionsOrder"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:addSearchResolutionsOrder"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.FileUtils:addSearchResolutionsOrder"); if(!ok) @@ -33300,9 +33453,9 @@ int lua_cocos2dx_FileUtils_addSearchPath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:addSearchPath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:addSearchPath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_addSearchPath'", nullptr); @@ -33314,10 +33467,10 @@ int lua_cocos2dx_FileUtils_addSearchPath(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:addSearchPath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:addSearchPath"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.FileUtils:addSearchPath"); if(!ok) @@ -33366,8 +33519,8 @@ int lua_cocos2dx_FileUtils_writeValueVectorToFile(lua_State* tolua_S) ok &= luaval_to_ccvaluevector(tolua_S, 2, &arg0, "cc.FileUtils:writeValueVectorToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeValueVectorToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeValueVectorToFile"); if (!ok) { break; } std::function arg2; @@ -33390,8 +33543,8 @@ int lua_cocos2dx_FileUtils_writeValueVectorToFile(lua_State* tolua_S) ok &= luaval_to_ccvaluevector(tolua_S, 2, &arg0, "cc.FileUtils:writeValueVectorToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeValueVectorToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeValueVectorToFile"); if (!ok) { break; } bool ret = cobj->writeValueVectorToFile(arg0, arg1); @@ -33433,8 +33586,8 @@ int lua_cocos2dx_FileUtils_isFileExist(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isFileExist"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isFileExist"); if (!ok) { break; } std::function arg1; @@ -33453,8 +33606,8 @@ int lua_cocos2dx_FileUtils_isFileExist(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isFileExist"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isFileExist"); if (!ok) { break; } bool ret = cobj->isFileExist(arg0); @@ -33548,12 +33701,12 @@ int lua_cocos2dx_FileUtils_fullPathFromRelativeFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:fullPathFromRelativeFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:fullPathFromRelativeFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:fullPathFromRelativeFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:fullPathFromRelativeFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_fullPathFromRelativeFile'", nullptr); @@ -33601,9 +33754,9 @@ int lua_cocos2dx_FileUtils_isDirectoryExistInternal(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExistInternal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExistInternal"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_isDirectoryExistInternal'", nullptr); @@ -33650,8 +33803,8 @@ int lua_cocos2dx_FileUtils_writeValueMapToFile(lua_State* tolua_S) ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.FileUtils:writeValueMapToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeValueMapToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeValueMapToFile"); if (!ok) { break; } std::function arg2; @@ -33674,8 +33827,8 @@ int lua_cocos2dx_FileUtils_writeValueMapToFile(lua_State* tolua_S) ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.FileUtils:writeValueMapToFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FileUtils:writeValueMapToFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FileUtils:writeValueMapToFile"); if (!ok) { break; } bool ret = cobj->writeValueMapToFile(arg0, arg1); @@ -33722,9 +33875,9 @@ int lua_cocos2dx_FileUtils_getFileExtension(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getFileExtension"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getFileExtension"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getFileExtension'", nullptr); @@ -33772,9 +33925,9 @@ int lua_cocos2dx_FileUtils_setWritablePath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:setWritablePath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:setWritablePath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_setWritablePath'", nullptr); @@ -33867,8 +34020,8 @@ int lua_cocos2dx_FileUtils_isDirectoryExist(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExist"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExist"); if (!ok) { break; } std::function arg1; @@ -33887,8 +34040,8 @@ int lua_cocos2dx_FileUtils_isDirectoryExist(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExist"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isDirectoryExist"); if (!ok) { break; } bool ret = cobj->isDirectoryExist(arg0); @@ -33935,9 +34088,9 @@ int lua_cocos2dx_FileUtils_setDefaultResourceRootPath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:setDefaultResourceRootPath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:setDefaultResourceRootPath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_setDefaultResourceRootPath'", nullptr); @@ -34027,8 +34180,8 @@ int lua_cocos2dx_FileUtils_createDirectory(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:createDirectory"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:createDirectory"); if (!ok) { break; } std::function arg1; @@ -34047,8 +34200,8 @@ int lua_cocos2dx_FileUtils_createDirectory(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:createDirectory"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:createDirectory"); if (!ok) { break; } bool ret = cobj->createDirectory(arg0); @@ -34095,10 +34248,10 @@ int lua_cocos2dx_FileUtils_listFilesAsync(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; std::function)> arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:listFilesAsync"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:listFilesAsync"); do { // Lambda binding for lua is not supported. @@ -34199,10 +34352,10 @@ int lua_cocos2dx_FileUtils_listFilesRecursively(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; std::vector* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:listFilesRecursively"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:listFilesRecursively"); ok &= luaval_to_object>(tolua_S, 3, "std::vector*",&arg1, "cc.FileUtils:listFilesRecursively"); if(!ok) @@ -34224,7 +34377,48 @@ int lua_cocos2dx_FileUtils_listFilesRecursively(lua_State* tolua_S) return 0; } -int lua_cocos2dx_FileUtils_destroyInstance(lua_State* tolua_S) +int lua_cocos2dx_FileUtils_writeBinaryToFile(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.FileUtils",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 3) + { + const void* arg0; + unsigned int arg1; + std::string_view arg2; + #pragma warning NO CONVERSION TO NATIVE FOR void* + ok = false; + ok &= luaval_to_uint32(tolua_S, 3,&arg1, "cc.FileUtils:writeBinaryToFile"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.FileUtils:writeBinaryToFile"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_writeBinaryToFile'", nullptr); + return 0; + } + bool ret = cocos2d::FileUtils::writeBinaryToFile(arg0, arg1, arg2); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:writeBinaryToFile",argc, 3); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_writeBinaryToFile'.",&tolua_err); +#endif + return 0; +} +int lua_cocos2dx_FileUtils_getInstance(lua_State* tolua_S) { int argc = 0; bool ok = true; @@ -34243,22 +34437,22 @@ int lua_cocos2dx_FileUtils_destroyInstance(lua_State* tolua_S) { if(!ok) { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_destroyInstance'", nullptr); + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getInstance'", nullptr); return 0; } - cocos2d::FileUtils::destroyInstance(); - lua_settop(tolua_S, 1); + cocos2d::FileUtils* ret = cocos2d::FileUtils::getInstance(); + object_to_luaval(tolua_S, "cc.FileUtils",(cocos2d::FileUtils*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:destroyInstance",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:getInstance",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_destroyInstance'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_getInstance'.",&tolua_err); #endif return 0; } -int lua_cocos2dx_FileUtils_writeBinaryToFile(lua_State* tolua_S) +int lua_cocos2dx_FileUtils_isAbsolutePathInternal(lua_State* tolua_S) { int argc = 0; bool ok = true; @@ -34273,33 +34467,28 @@ int lua_cocos2dx_FileUtils_writeBinaryToFile(lua_State* tolua_S) argc = lua_gettop(tolua_S) - 1; - if (argc == 3) + if (argc == 1) { - const void* arg0; - unsigned int arg1; - std::string arg2; - #pragma warning NO CONVERSION TO NATIVE FOR void* - ok = false; - ok &= luaval_to_uint32(tolua_S, 3,&arg1, "cc.FileUtils:writeBinaryToFile"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.FileUtils:writeBinaryToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:isAbsolutePathInternal"); if(!ok) { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_writeBinaryToFile'", nullptr); + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_isAbsolutePathInternal'", nullptr); return 0; } - bool ret = cocos2d::FileUtils::writeBinaryToFile(arg0, arg1, arg2); + bool ret = cocos2d::FileUtils::isAbsolutePathInternal(arg0); tolua_pushboolean(tolua_S,(bool)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:writeBinaryToFile",argc, 3); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:isAbsolutePathInternal",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_writeBinaryToFile'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_isAbsolutePathInternal'.",&tolua_err); #endif return 0; } -int lua_cocos2dx_FileUtils_getInstance(lua_State* tolua_S) +int lua_cocos2dx_FileUtils_destroyInstance(lua_State* tolua_S) { int argc = 0; bool ok = true; @@ -34318,18 +34507,18 @@ int lua_cocos2dx_FileUtils_getInstance(lua_State* tolua_S) { if(!ok) { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getInstance'", nullptr); + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_destroyInstance'", nullptr); return 0; } - cocos2d::FileUtils* ret = cocos2d::FileUtils::getInstance(); - object_to_luaval(tolua_S, "cc.FileUtils",(cocos2d::FileUtils*)ret); + cocos2d::FileUtils::destroyInstance(); + lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:getInstance",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.FileUtils:destroyInstance",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_getInstance'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_destroyInstance'.",&tolua_err); #endif return 0; } @@ -34350,8 +34539,8 @@ int lua_cocos2dx_FileUtils_getFileShortName(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FileUtils:getFileShortName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FileUtils:getFileShortName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FileUtils_getFileShortName'", nullptr); @@ -34424,9 +34613,10 @@ int lua_register_cocos2dx_FileUtils(lua_State* tolua_S) tolua_function(tolua_S,"listFilesAsync",lua_cocos2dx_FileUtils_listFilesAsync); tolua_function(tolua_S,"getWritablePath",lua_cocos2dx_FileUtils_getWritablePath); tolua_function(tolua_S,"listFilesRecursively",lua_cocos2dx_FileUtils_listFilesRecursively); - tolua_function(tolua_S,"destroyInstance", lua_cocos2dx_FileUtils_destroyInstance); tolua_function(tolua_S,"writeBinaryToFile", lua_cocos2dx_FileUtils_writeBinaryToFile); tolua_function(tolua_S,"getInstance", lua_cocos2dx_FileUtils_getInstance); + tolua_function(tolua_S,"isAbsolutePathInternal", lua_cocos2dx_FileUtils_isAbsolutePathInternal); + tolua_function(tolua_S,"destroyInstance", lua_cocos2dx_FileUtils_destroyInstance); tolua_function(tolua_S,"getFileShortName", lua_cocos2dx_FileUtils_getFileShortName); tolua_endmodule(tolua_S); auto typeName = typeid(cocos2d::FileUtils).name(); // rtti is literal storage @@ -34487,8 +34677,8 @@ int lua_cocos2dx_EventCustom_getEventName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_EventCustom_getEventName'", nullptr); return 0; } - const std::string& ret = cobj->getEventName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getEventName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventCustom:getEventName",argc, 0); @@ -34516,9 +34706,9 @@ int lua_cocos2dx_EventCustom_constructor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventCustom:EventCustom"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventCustom:EventCustom"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_EventCustom_constructor'", nullptr); @@ -34863,9 +35053,9 @@ int lua_cocos2dx_EventDispatcher_dispatchCustomEvent(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventDispatcher:dispatchCustomEvent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventDispatcher:dispatchCustomEvent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_EventDispatcher_dispatchCustomEvent'", nullptr); @@ -34877,10 +35067,10 @@ int lua_cocos2dx_EventDispatcher_dispatchCustomEvent(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; void* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventDispatcher:dispatchCustomEvent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventDispatcher:dispatchCustomEvent"); #pragma warning NO CONVERSION TO NATIVE FOR void* ok = false; @@ -35118,10 +35308,10 @@ int lua_cocos2dx_EventDispatcher_addCustomEventListener(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; std::function arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventDispatcher:addCustomEventListener"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventDispatcher:addCustomEventListener"); do { // Lambda binding for lua is not supported. @@ -35225,9 +35415,9 @@ int lua_cocos2dx_EventDispatcher_hasEventListener(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::EventListener::ListenerID arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventDispatcher:hasEventListener"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventDispatcher:hasEventListener"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_EventDispatcher_hasEventListener'", nullptr); @@ -35322,9 +35512,9 @@ int lua_cocos2dx_EventDispatcher_removeCustomEventListeners(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventDispatcher:removeCustomEventListeners"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventDispatcher:removeCustomEventListeners"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_EventDispatcher_removeCustomEventListeners'", nullptr); @@ -43373,11 +43563,11 @@ int lua_cocos2dx_GridAction_initWithDuration(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.GridAction:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.GridAction:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.GridAction:initWithDuration"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GridAction_initWithDuration'", nullptr); @@ -43820,13 +44010,13 @@ int lua_cocos2dx_Waves3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Waves3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Waves3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Waves3D:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Waves3D:initWithDuration"); @@ -44012,11 +44202,11 @@ int lua_cocos2dx_Waves3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Waves3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Waves3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Waves3D:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Waves3D:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Waves3D:create"); if(!ok) @@ -44127,10 +44317,10 @@ int lua_cocos2dx_FlipX3D_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; double arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FlipX3D:initWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FlipX3D:initWithSize"); ok &= luaval_to_number(tolua_S, 3,&arg1, "cc.FlipX3D:initWithSize"); if(!ok) @@ -44471,13 +44661,13 @@ int lua_cocos2dx_Lens3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Lens3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Lens3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Lens3D:initWithDuration"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Lens3D:initWithDuration"); @@ -44713,11 +44903,11 @@ int lua_cocos2dx_Lens3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Lens3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Lens3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Lens3D:create"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Lens3D:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Lens3D:create"); if(!ok) @@ -44880,7 +45070,7 @@ int lua_cocos2dx_Ripple3D_initWithDuration(lua_State* tolua_S) if (argc == 6) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; double arg3; unsigned int arg4; @@ -44888,7 +45078,7 @@ int lua_cocos2dx_Ripple3D_initWithDuration(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Ripple3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Ripple3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Ripple3D:initWithDuration"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Ripple3D:initWithDuration"); @@ -45175,13 +45365,13 @@ int lua_cocos2dx_Ripple3D_create(lua_State* tolua_S) if (argc == 6) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; double arg3; unsigned int arg4; double arg5; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Ripple3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Ripple3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Ripple3D:create"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Ripple3D:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Ripple3D:create"); ok &= luaval_to_uint32(tolua_S, 6,&arg4, "cc.Ripple3D:create"); @@ -45297,13 +45487,13 @@ int lua_cocos2dx_Shaky3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Shaky3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Shaky3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Shaky3D:initWithDuration"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Shaky3D:initWithDuration"); @@ -45345,11 +45535,11 @@ int lua_cocos2dx_Shaky3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Shaky3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Shaky3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Shaky3D:create"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Shaky3D:create"); ok &= luaval_to_boolean(tolua_S, 5,&arg3, "cc.Shaky3D:create"); if(!ok) @@ -45507,13 +45697,13 @@ int lua_cocos2dx_Liquid_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Liquid:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Liquid:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Liquid:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Liquid:initWithDuration"); @@ -45699,11 +45889,11 @@ int lua_cocos2dx_Liquid_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Liquid:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Liquid:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Liquid:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Liquid:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Liquid:create"); if(!ok) @@ -45865,7 +46055,7 @@ int lua_cocos2dx_Waves_initWithDuration(lua_State* tolua_S) if (argc == 6) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; bool arg4; @@ -45873,7 +46063,7 @@ int lua_cocos2dx_Waves_initWithDuration(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Waves:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Waves:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Waves:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Waves:initWithDuration"); @@ -46063,13 +46253,13 @@ int lua_cocos2dx_Waves_create(lua_State* tolua_S) if (argc == 6) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; bool arg4; bool arg5; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Waves:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Waves:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Waves:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.Waves:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Waves:create"); ok &= luaval_to_boolean(tolua_S, 6,&arg4, "cc.Waves:create"); @@ -46233,14 +46423,14 @@ int lua_cocos2dx_Twirl_initWithDuration(lua_State* tolua_S) if (argc == 5) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; unsigned int arg3; double arg4; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Twirl:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Twirl:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Twirl:initWithDuration"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Twirl:initWithDuration"); @@ -46525,12 +46715,12 @@ int lua_cocos2dx_Twirl_create(lua_State* tolua_S) if (argc == 5) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; unsigned int arg3; double arg4; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.Twirl:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Twirl:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Twirl:create"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Twirl:create"); ok &= luaval_to_uint32(tolua_S, 5,&arg3, "cc.Twirl:create"); ok &= luaval_to_number(tolua_S, 6,&arg4, "cc.Twirl:create"); @@ -47519,9 +47709,9 @@ int lua_cocos2dx_PageTurn3D_create(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.PageTurn3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.PageTurn3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.PageTurn3D:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_PageTurn3D_create'", nullptr); @@ -47893,13 +48083,13 @@ int lua_cocos2dx_ShakyTiles3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShakyTiles3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShakyTiles3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShakyTiles3D:initWithDuration"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.ShakyTiles3D:initWithDuration"); @@ -47941,11 +48131,11 @@ int lua_cocos2dx_ShakyTiles3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShakyTiles3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShakyTiles3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShakyTiles3D:create"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.ShakyTiles3D:create"); ok &= luaval_to_boolean(tolua_S, 5,&arg3, "cc.ShakyTiles3D:create"); if(!ok) @@ -48053,13 +48243,13 @@ int lua_cocos2dx_ShatteredTiles3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShatteredTiles3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShatteredTiles3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShatteredTiles3D:initWithDuration"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.ShatteredTiles3D:initWithDuration"); @@ -48101,11 +48291,11 @@ int lua_cocos2dx_ShatteredTiles3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; bool arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShatteredTiles3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShatteredTiles3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShatteredTiles3D:create"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.ShatteredTiles3D:create"); ok &= luaval_to_boolean(tolua_S, 5,&arg3, "cc.ShatteredTiles3D:create"); if(!ok) @@ -48213,12 +48403,12 @@ int lua_cocos2dx_ShuffleTiles_initWithDuration(lua_State* tolua_S) if (argc == 3) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShuffleTiles:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShuffleTiles:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShuffleTiles:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.ShuffleTiles:initWithDuration"); if(!ok) @@ -48268,16 +48458,16 @@ int lua_cocos2dx_ShuffleTiles_getDelta(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.ShuffleTiles:getDelta"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.ShuffleTiles:getDelta"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ShuffleTiles_getDelta'", nullptr); return 0; } - cocos2d::Size ret = cobj->getDelta(arg0); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getDelta(arg0); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ShuffleTiles:getDelta",argc, 1); @@ -48308,10 +48498,10 @@ int lua_cocos2dx_ShuffleTiles_create(lua_State* tolua_S) if (argc == 3) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ShuffleTiles:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.ShuffleTiles:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.ShuffleTiles:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.ShuffleTiles:create"); if(!ok) { @@ -48571,10 +48761,10 @@ int lua_cocos2dx_FadeOutTRTiles_testFunc(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; double arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FadeOutTRTiles:testFunc"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FadeOutTRTiles:testFunc"); ok &= luaval_to_number(tolua_S, 3,&arg1, "cc.FadeOutTRTiles:testFunc"); if(!ok) @@ -48614,9 +48804,9 @@ int lua_cocos2dx_FadeOutTRTiles_create(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.FadeOutTRTiles:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.FadeOutTRTiles:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.FadeOutTRTiles:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FadeOutTRTiles_create'", nullptr); @@ -48714,9 +48904,9 @@ int lua_cocos2dx_FadeOutBLTiles_create(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.FadeOutBLTiles:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.FadeOutBLTiles:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.FadeOutBLTiles:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FadeOutBLTiles_create'", nullptr); @@ -48810,9 +49000,9 @@ int lua_cocos2dx_FadeOutUpTiles_create(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.FadeOutUpTiles:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.FadeOutUpTiles:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.FadeOutUpTiles:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FadeOutUpTiles_create'", nullptr); @@ -48906,9 +49096,9 @@ int lua_cocos2dx_FadeOutDownTiles_create(lua_State* tolua_S) if (argc == 2) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.FadeOutDownTiles:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.FadeOutDownTiles:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.FadeOutDownTiles:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FadeOutDownTiles_create'", nullptr); @@ -49113,12 +49303,12 @@ int lua_cocos2dx_TurnOffTiles_initWithDuration(lua_State* tolua_S) if (argc == 3) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.TurnOffTiles:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.TurnOffTiles:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.TurnOffTiles:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.TurnOffTiles:initWithDuration"); if(!ok) @@ -49161,8 +49351,8 @@ int lua_cocos2dx_TurnOffTiles_create(lua_State* tolua_S) double arg0; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.TurnOffTiles:create"); if (!ok) { break; } - cocos2d::Size arg1; - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.TurnOffTiles:create"); + cocos2d::Vec2 arg1; + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.TurnOffTiles:create"); if (!ok) { break; } unsigned int arg2; ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.TurnOffTiles:create"); @@ -49180,8 +49370,8 @@ int lua_cocos2dx_TurnOffTiles_create(lua_State* tolua_S) double arg0; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.TurnOffTiles:create"); if (!ok) { break; } - cocos2d::Size arg1; - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.TurnOffTiles:create"); + cocos2d::Vec2 arg1; + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.TurnOffTiles:create"); if (!ok) { break; } cocos2d::TurnOffTiles* ret = cocos2d::TurnOffTiles::create(arg0, arg1); object_to_luaval(tolua_S, "cc.TurnOffTiles",(cocos2d::TurnOffTiles*)ret); @@ -49337,13 +49527,13 @@ int lua_cocos2dx_WavesTiles3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.WavesTiles3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.WavesTiles3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.WavesTiles3D:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.WavesTiles3D:initWithDuration"); @@ -49529,11 +49719,11 @@ int lua_cocos2dx_WavesTiles3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.WavesTiles3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.WavesTiles3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.WavesTiles3D:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.WavesTiles3D:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.WavesTiles3D:create"); if(!ok) @@ -49695,13 +49885,13 @@ int lua_cocos2dx_JumpTiles3D_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.JumpTiles3D:initWithDuration"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.JumpTiles3D:initWithDuration"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.JumpTiles3D:initWithDuration"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.JumpTiles3D:initWithDuration"); @@ -49887,11 +50077,11 @@ int lua_cocos2dx_JumpTiles3D_create(lua_State* tolua_S) if (argc == 4) { double arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; unsigned int arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.JumpTiles3D:create"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.JumpTiles3D:create"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.JumpTiles3D:create"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "cc.JumpTiles3D:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.JumpTiles3D:create"); if(!ok) @@ -50303,13 +50493,13 @@ int lua_cocos2dx_ActionTween_initWithDuration(lua_State* tolua_S) if (argc == 4) { double arg0; - std::string arg1; + std::string_view arg1; double arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ActionTween:initWithDuration"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.ActionTween:initWithDuration"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.ActionTween:initWithDuration"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.ActionTween:initWithDuration"); @@ -50351,11 +50541,11 @@ int lua_cocos2dx_ActionTween_create(lua_State* tolua_S) if (argc == 4) { double arg0; - std::string arg1; + std::string_view arg1; double arg2; double arg3; ok &= luaval_to_number(tolua_S, 2,&arg0, "cc.ActionTween:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.ActionTween:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.ActionTween:create"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.ActionTween:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.ActionTween:create"); if(!ok) @@ -50471,12 +50661,12 @@ int lua_cocos2dx_AtlasNode_initWithTileFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 4) { - std::string arg0; + std::string_view arg0; int arg1; int arg2; int arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AtlasNode:initWithTileFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AtlasNode:initWithTileFile"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.AtlasNode:initWithTileFile"); @@ -50966,11 +51156,11 @@ int lua_cocos2dx_AtlasNode_create(lua_State* tolua_S) if (argc == 4) { - std::string arg0; + std::string_view arg0; int arg1; int arg2; int arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AtlasNode:create"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AtlasNode:create"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.AtlasNode:create"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.AtlasNode:create"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "cc.AtlasNode:create"); @@ -51814,13 +52004,13 @@ int lua_cocos2dx_DrawNode_drawLine(lua_State* tolua_S) { cocos2d::Vec2 arg0; cocos2d::Vec2 arg1; - cocos2d::Color4F arg2; + cocos2d::Color4B arg2; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawLine"); ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.DrawNode:drawLine"); - ok &=luaval_to_color4f(tolua_S, 4, &arg2, "cc.DrawNode:drawLine"); + ok &=luaval_to_color4b(tolua_S, 4, &arg2, "cc.DrawNode:drawLine"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawLine'", nullptr); @@ -51929,8 +52119,8 @@ int lua_cocos2dx_DrawNode_drawRect(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.DrawNode:drawRect"); if (!ok) { break; } - cocos2d::Color4F arg4; - ok &=luaval_to_color4f(tolua_S, 6, &arg4, "cc.DrawNode:drawRect"); + cocos2d::Color4B arg4; + ok &=luaval_to_color4b(tolua_S, 6, &arg4, "cc.DrawNode:drawRect"); if (!ok) { break; } cobj->drawRect(arg0, arg1, arg2, arg3, arg4); @@ -51949,8 +52139,8 @@ int lua_cocos2dx_DrawNode_drawRect(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.DrawNode:drawRect"); if (!ok) { break; } - cocos2d::Color4F arg2; - ok &=luaval_to_color4f(tolua_S, 4, &arg2, "cc.DrawNode:drawRect"); + cocos2d::Color4B arg2; + ok &=luaval_to_color4b(tolua_S, 4, &arg2, "cc.DrawNode:drawRect"); if (!ok) { break; } cobj->drawRect(arg0, arg1, arg2); @@ -52016,8 +52206,8 @@ int lua_cocos2dx_DrawNode_drawSolidCircle(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 7,&arg5, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } - cocos2d::Color4F arg6; - ok &=luaval_to_color4f(tolua_S, 8, &arg6, "cc.DrawNode:drawSolidCircle"); + cocos2d::Color4B arg6; + ok &=luaval_to_color4b(tolua_S, 8, &arg6, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } cobj->drawSolidCircle(arg0, arg1, arg2, arg3, arg4, arg5, arg6); @@ -52052,16 +52242,16 @@ int lua_cocos2dx_DrawNode_drawSolidCircle(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 7,&arg5, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } - cocos2d::Color4F arg6; - ok &=luaval_to_color4f(tolua_S, 8, &arg6, "cc.DrawNode:drawSolidCircle"); + cocos2d::Color4B arg6; + ok &=luaval_to_color4b(tolua_S, 8, &arg6, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } double arg7; ok &= luaval_to_number(tolua_S, 9,&arg7, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } - cocos2d::Color4F arg8; - ok &=luaval_to_color4f(tolua_S, 10, &arg8, "cc.DrawNode:drawSolidCircle"); + cocos2d::Color4B arg8; + ok &=luaval_to_color4b(tolua_S, 10, &arg8, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } cobj->drawSolidCircle(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); @@ -52088,8 +52278,8 @@ int lua_cocos2dx_DrawNode_drawSolidCircle(lua_State* tolua_S) ok &= luaval_to_uint32(tolua_S, 5,&arg3, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } - cocos2d::Color4F arg4; - ok &=luaval_to_color4f(tolua_S, 6, &arg4, "cc.DrawNode:drawSolidCircle"); + cocos2d::Color4B arg4; + ok &=luaval_to_color4b(tolua_S, 6, &arg4, "cc.DrawNode:drawSolidCircle"); if (!ok) { break; } cobj->drawSolidCircle(arg0, arg1, arg2, arg3, arg4); @@ -52188,13 +52378,13 @@ int lua_cocos2dx_DrawNode_drawDot(lua_State* tolua_S) { cocos2d::Vec2 arg0; double arg1; - cocos2d::Color4F arg2; + cocos2d::Color4B arg2; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawDot"); ok &= luaval_to_number(tolua_S, 3,&arg1, "cc.DrawNode:drawDot"); - ok &=luaval_to_color4f(tolua_S, 4, &arg2, "cc.DrawNode:drawDot"); + ok &=luaval_to_color4b(tolua_S, 4, &arg2, "cc.DrawNode:drawDot"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawDot'", nullptr); @@ -52245,7 +52435,7 @@ int lua_cocos2dx_DrawNode_drawSegment(lua_State* tolua_S) cocos2d::Vec2 arg0; cocos2d::Vec2 arg1; double arg2; - cocos2d::Color4F arg3; + cocos2d::Color4B arg3; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawSegment"); @@ -52253,7 +52443,7 @@ int lua_cocos2dx_DrawNode_drawSegment(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.DrawNode:drawSegment"); - ok &=luaval_to_color4f(tolua_S, 5, &arg3, "cc.DrawNode:drawSegment"); + ok &=luaval_to_color4b(tolua_S, 5, &arg3, "cc.DrawNode:drawSegment"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawSegment'", nullptr); @@ -52363,8 +52553,8 @@ int lua_cocos2dx_DrawNode_drawCircle(lua_State* tolua_S) ok &= luaval_to_boolean(tolua_S, 6,&arg4, "cc.DrawNode:drawCircle"); if (!ok) { break; } - cocos2d::Color4F arg5; - ok &=luaval_to_color4f(tolua_S, 7, &arg5, "cc.DrawNode:drawCircle"); + cocos2d::Color4B arg5; + ok &=luaval_to_color4b(tolua_S, 7, &arg5, "cc.DrawNode:drawCircle"); if (!ok) { break; } cobj->drawCircle(arg0, arg1, arg2, arg3, arg4, arg5); @@ -52403,8 +52593,8 @@ int lua_cocos2dx_DrawNode_drawCircle(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 8,&arg6, "cc.DrawNode:drawCircle"); if (!ok) { break; } - cocos2d::Color4F arg7; - ok &=luaval_to_color4f(tolua_S, 9, &arg7, "cc.DrawNode:drawCircle"); + cocos2d::Color4B arg7; + ok &=luaval_to_color4b(tolua_S, 9, &arg7, "cc.DrawNode:drawCircle"); if (!ok) { break; } cobj->drawCircle(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); @@ -52455,7 +52645,7 @@ int lua_cocos2dx_DrawNode_drawQuadBezier(lua_State* tolua_S) cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; unsigned int arg3; - cocos2d::Color4F arg4; + cocos2d::Color4B arg4; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawQuadBezier"); @@ -52465,7 +52655,7 @@ int lua_cocos2dx_DrawNode_drawQuadBezier(lua_State* tolua_S) ok &= luaval_to_uint32(tolua_S, 5,&arg3, "cc.DrawNode:drawQuadBezier"); - ok &=luaval_to_color4f(tolua_S, 6, &arg4, "cc.DrawNode:drawQuadBezier"); + ok &=luaval_to_color4b(tolua_S, 6, &arg4, "cc.DrawNode:drawQuadBezier"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawQuadBezier'", nullptr); @@ -52516,7 +52706,7 @@ int lua_cocos2dx_DrawNode_drawTriangle(lua_State* tolua_S) cocos2d::Vec2 arg0; cocos2d::Vec2 arg1; cocos2d::Vec2 arg2; - cocos2d::Color4F arg3; + cocos2d::Color4B arg3; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawTriangle"); @@ -52524,7 +52714,7 @@ int lua_cocos2dx_DrawNode_drawTriangle(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.DrawNode:drawTriangle"); - ok &=luaval_to_color4f(tolua_S, 5, &arg3, "cc.DrawNode:drawTriangle"); + ok &=luaval_to_color4b(tolua_S, 5, &arg3, "cc.DrawNode:drawTriangle"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawTriangle'", nullptr); @@ -52671,13 +52861,13 @@ int lua_cocos2dx_DrawNode_drawSolidRect(lua_State* tolua_S) { cocos2d::Vec2 arg0; cocos2d::Vec2 arg1; - cocos2d::Color4F arg2; + cocos2d::Color4B arg2; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawSolidRect"); ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.DrawNode:drawSolidRect"); - ok &=luaval_to_color4f(tolua_S, 4, &arg2, "cc.DrawNode:drawSolidRect"); + ok &=luaval_to_color4b(tolua_S, 4, &arg2, "cc.DrawNode:drawSolidRect"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawSolidRect'", nullptr); @@ -52774,13 +52964,13 @@ int lua_cocos2dx_DrawNode_drawPoint(lua_State* tolua_S) { cocos2d::Vec2 arg0; double arg1; - cocos2d::Color4F arg2; + cocos2d::Color4B arg2; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawPoint"); ok &= luaval_to_number(tolua_S, 3,&arg1, "cc.DrawNode:drawPoint"); - ok &=luaval_to_color4f(tolua_S, 4, &arg2, "cc.DrawNode:drawPoint"); + ok &=luaval_to_color4b(tolua_S, 4, &arg2, "cc.DrawNode:drawPoint"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawPoint'", nullptr); @@ -52880,7 +53070,7 @@ int lua_cocos2dx_DrawNode_drawCubicBezier(lua_State* tolua_S) cocos2d::Vec2 arg2; cocos2d::Vec2 arg3; unsigned int arg4; - cocos2d::Color4F arg5; + cocos2d::Color4B arg5; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.DrawNode:drawCubicBezier"); @@ -52892,7 +53082,7 @@ int lua_cocos2dx_DrawNode_drawCubicBezier(lua_State* tolua_S) ok &= luaval_to_uint32(tolua_S, 6,&arg4, "cc.DrawNode:drawCubicBezier"); - ok &=luaval_to_color4f(tolua_S, 7, &arg5, "cc.DrawNode:drawCubicBezier"); + ok &=luaval_to_color4b(tolua_S, 7, &arg5, "cc.DrawNode:drawCubicBezier"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_DrawNode_drawCubicBezier'", nullptr); @@ -53153,11 +53343,11 @@ int lua_cocos2dx_Label_enableShadow(lua_State* tolua_S) if (argc == 2) { cocos2d::Color4B arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &=luaval_to_color4b(tolua_S, 2, &arg0, "cc.Label:enableShadow"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Label:enableShadow"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Label:enableShadow"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_enableShadow'", nullptr); @@ -53170,12 +53360,12 @@ int lua_cocos2dx_Label_enableShadow(lua_State* tolua_S) if (argc == 3) { cocos2d::Color4B arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; ok &=luaval_to_color4b(tolua_S, 2, &arg0, "cc.Label:enableShadow"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Label:enableShadow"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Label:enableShadow"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Label:enableShadow"); if(!ok) @@ -53330,8 +53520,8 @@ int lua_cocos2dx_Label_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:getString",argc, 0); @@ -53954,8 +54144,8 @@ int lua_cocos2dx_Label_getShadowOffset(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_getShadowOffset'", nullptr); return 0; } - cocos2d::Size ret = cobj->getShadowOffset(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getShadowOffset(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:getShadowOffset",argc, 0); @@ -54093,9 +54283,9 @@ int lua_cocos2dx_Label_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_setString'", nullptr); @@ -54143,9 +54333,9 @@ int lua_cocos2dx_Label_setSystemFontName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setSystemFontName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setSystemFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_setSystemFontName'", nullptr); @@ -54282,8 +54472,8 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } cocos2d::Rect arg1; @@ -54302,8 +54492,8 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) ok = true; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } cocos2d::Rect arg1; @@ -54326,8 +54516,8 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } bool ret = cobj->setBMFontFilePath(arg0); @@ -54338,8 +54528,8 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } double arg1; @@ -54354,12 +54544,12 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:setBMFontFilePath"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:setBMFontFilePath"); if (!ok) { break; } bool ret = cobj->setBMFontFilePath(arg0, arg1); @@ -54370,12 +54560,12 @@ int lua_cocos2dx_Label_setBMFontFilePath(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setBMFontFilePath"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:setBMFontFilePath"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:setBMFontFilePath"); if (!ok) { break; } double arg2; @@ -54425,8 +54615,8 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok &= luaval_to_ttfconfig(tolua_S, 2, &arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } bool ret = cobj->initWithTTF(arg0, arg1); @@ -54441,8 +54631,8 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok &= luaval_to_ttfconfig(tolua_S, 2, &arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } cocos2d::TextHAlignment arg2; @@ -54461,8 +54651,8 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok &= luaval_to_ttfconfig(tolua_S, 2, &arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } cocos2d::TextHAlignment arg2; @@ -54481,12 +54671,12 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } double arg2; @@ -54501,20 +54691,20 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok = true; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:initWithTTF"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); if (!ok) { break; } bool ret = cobj->initWithTTF(arg0, arg1, arg2, arg3); @@ -54525,20 +54715,20 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok = true; do{ if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:initWithTTF"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -54553,20 +54743,20 @@ int lua_cocos2dx_Label_initWithTTF(lua_State* tolua_S) ok = true; do{ if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:initWithTTF"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:initWithTTF"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:initWithTTF"); if (!ok) { break; } - cocos2d::Size arg3; - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); + cocos2d::Vec2 arg3; + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:initWithTTF"); if (!ok) { break; } cocos2d::TextHAlignment arg4; @@ -55286,8 +55476,8 @@ int lua_cocos2dx_Label_setCharMap(lua_State* tolua_S) ok = true; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setCharMap"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setCharMap"); if (!ok) { break; } int arg1; @@ -55310,8 +55500,8 @@ int lua_cocos2dx_Label_setCharMap(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:setCharMap"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:setCharMap"); if (!ok) { break; } bool ret = cobj->setCharMap(arg0); @@ -55363,8 +55553,8 @@ int lua_cocos2dx_Label_getDimensions(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_getDimensions'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getDimensions(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getDimensions(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:getDimensions",argc, 0); @@ -55460,8 +55650,8 @@ int lua_cocos2dx_Label_getSystemFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_getSystemFontName'", nullptr); return 0; } - const std::string& ret = cobj->getSystemFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getSystemFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:getSystemFontName",argc, 0); @@ -56377,8 +56567,8 @@ int lua_cocos2dx_Label_getBMFontFilePath(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_getBMFontFilePath'", nullptr); return 0; } - const std::string& ret = cobj->getBMFontFilePath(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getBMFontFilePath(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:getBMFontFilePath",argc, 0); @@ -56756,11 +56946,11 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::TextHAlignment arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Label:createWithBMFont"); @@ -56784,11 +56974,11 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::Label* ret = cocos2d::Label::createWithBMFont(arg0, arg1); object_to_luaval(tolua_S, "cc.Label",(cocos2d::Label*)ret); @@ -56800,11 +56990,11 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::TextHAlignment arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Label:createWithBMFont"); @@ -56819,11 +57009,11 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::TextHAlignment arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Label:createWithBMFont"); @@ -56841,11 +57031,11 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::TextHAlignment arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Label:createWithBMFont"); @@ -56853,8 +57043,8 @@ int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) int arg3; ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "cc.Label:createWithBMFont"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.Label:createWithBMFont"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.Label:createWithBMFont"); if (!ok) { break; } cocos2d::Label* ret = cocos2d::Label::createWithBMFont(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "cc.Label",(cocos2d::Label*)ret); @@ -56944,8 +57134,8 @@ int lua_cocos2dx_Label_createWithCharMap(lua_State* tolua_S) { if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithCharMap"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithCharMap"); if (!ok) { break; } int arg1; ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.Label:createWithCharMap"); @@ -56966,8 +57156,8 @@ int lua_cocos2dx_Label_createWithCharMap(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithCharMap"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithCharMap"); if (!ok) { break; } cocos2d::Label* ret = cocos2d::Label::createWithCharMap(arg0); object_to_luaval(tolua_S, "cc.Label",(cocos2d::Label*)ret); @@ -57000,11 +57190,11 @@ int lua_cocos2dx_Label_createWithSystemFont(lua_State* tolua_S) if (argc == 3) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; double arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:createWithSystemFont"); if(!ok) { @@ -57017,14 +57207,14 @@ int lua_cocos2dx_Label_createWithSystemFont(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; double arg2; - cocos2d::Size arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); + cocos2d::Vec2 arg3; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:createWithSystemFont"); - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Label_createWithSystemFont'", nullptr); @@ -57036,15 +57226,15 @@ int lua_cocos2dx_Label_createWithSystemFont(lua_State* tolua_S) } if (argc == 5) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; double arg2; - cocos2d::Size arg3; + cocos2d::Vec2 arg3; cocos2d::TextHAlignment arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:createWithSystemFont"); - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); ok &= luaval_to_int32(tolua_S, 6,(int *)&arg4, "cc.Label:createWithSystemFont"); if(!ok) { @@ -57057,16 +57247,16 @@ int lua_cocos2dx_Label_createWithSystemFont(lua_State* tolua_S) } if (argc == 6) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; double arg2; - cocos2d::Size arg3; + cocos2d::Vec2 arg3; cocos2d::TextHAlignment arg4; cocos2d::TextVAlignment arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Label:createWithSystemFont"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.Label:createWithSystemFont"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.Label:createWithSystemFont"); - ok &= luaval_to_size(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.Label:createWithSystemFont"); ok &= luaval_to_int32(tolua_S, 6,(int *)&arg4, "cc.Label:createWithSystemFont"); ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "cc.Label:createWithSystemFont"); if(!ok) @@ -57206,9 +57396,9 @@ int lua_cocos2dx_LabelAtlas_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_LabelAtlas_setString'", nullptr); @@ -57251,12 +57441,12 @@ int lua_cocos2dx_LabelAtlas_initWithString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.LabelAtlas:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.LabelAtlas:initWithString"); if (!ok) { break; } bool ret = cobj->initWithString(arg0, arg1); @@ -57267,12 +57457,12 @@ int lua_cocos2dx_LabelAtlas_initWithString(lua_State* tolua_S) ok = true; do{ if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.LabelAtlas:initWithString"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.LabelAtlas:initWithString"); if (!ok) { break; } int arg2; @@ -57295,8 +57485,8 @@ int lua_cocos2dx_LabelAtlas_initWithString(lua_State* tolua_S) ok = true; do{ if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:initWithString"); if (!ok) { break; } cocos2d::Texture2D* arg1; @@ -57364,8 +57554,8 @@ int lua_cocos2dx_LabelAtlas_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_LabelAtlas_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.LabelAtlas:getString",argc, 0); @@ -57396,11 +57586,11 @@ int lua_cocos2dx_LabelAtlas_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.LabelAtlas:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.LabelAtlas:create"); if (!ok) { break; } cocos2d::LabelAtlas* ret = cocos2d::LabelAtlas::create(arg0, arg1); object_to_luaval(tolua_S, "cc.LabelAtlas",(cocos2d::LabelAtlas*)ret); @@ -57412,11 +57602,11 @@ int lua_cocos2dx_LabelAtlas_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.LabelAtlas:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.LabelAtlas:create"); if (!ok) { break; } int arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.LabelAtlas:create"); @@ -57437,8 +57627,8 @@ int lua_cocos2dx_LabelAtlas_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.LabelAtlas:create"); if (!ok) { break; } cocos2d::Texture2D* arg1; ok &= luaval_to_object(tolua_S, 3, "cc.Texture2D",&arg1, "cc.LabelAtlas:create"); @@ -60672,8 +60862,8 @@ int lua_cocos2dx_MenuItemLabel_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemLabel_getString'", nullptr); return 0; } - std::string ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.MenuItemLabel:getString",argc, 0); @@ -60761,9 +60951,9 @@ int lua_cocos2dx_MenuItemLabel_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemLabel:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemLabel:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemLabel_setString'", nullptr); @@ -61029,16 +61219,16 @@ int lua_cocos2dx_MenuItemAtlasFont_initWithString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 6) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; int arg2; int arg3; int32_t arg4; std::function arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemAtlasFont:initWithString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemAtlasFont:initWithString"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.MenuItemAtlasFont:initWithString"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.MenuItemAtlasFont:initWithString"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.MenuItemAtlasFont:initWithString"); @@ -61161,8 +61351,8 @@ int lua_cocos2dx_MenuItemFont_getFontNameObj(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemFont_getFontNameObj'", nullptr); return 0; } - const std::string& ret = cobj->getFontNameObj(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFontNameObj(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.MenuItemFont:getFontNameObj",argc, 0); @@ -61203,9 +61393,9 @@ int lua_cocos2dx_MenuItemFont_setFontNameObj(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemFont:setFontNameObj"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemFont:setFontNameObj"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemFont_setFontNameObj'", nullptr); @@ -61253,10 +61443,10 @@ int lua_cocos2dx_MenuItemFont_initWithString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; std::function arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemFont:initWithString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemFont:initWithString"); do { // Lambda binding for lua is not supported. @@ -61396,8 +61586,8 @@ int lua_cocos2dx_MenuItemFont_setFontName(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemFont:setFontName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemFont:setFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemFont_setFontName'", nullptr); @@ -61471,8 +61661,8 @@ int lua_cocos2dx_MenuItemFont_getFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_MenuItemFont_getFontName'", nullptr); return 0; } - const std::string& ret = cocos2d::MenuItemFont::getFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cocos2d::MenuItemFont::getFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.MenuItemFont:getFontName",argc, 0); @@ -62375,16 +62565,16 @@ int lua_cocos2dx_MenuItemImage_initWithNormalImage(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 4) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; std::function arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.MenuItemImage:initWithNormalImage"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.MenuItemImage:initWithNormalImage"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.MenuItemImage:initWithNormalImage"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.MenuItemImage:initWithNormalImage"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.MenuItemImage:initWithNormalImage"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.MenuItemImage:initWithNormalImage"); do { // Lambda binding for lua is not supported. @@ -63783,8 +63973,8 @@ int lua_cocos2dx_MotionStreak_initWithFade(lua_State* tolua_S) ok &= luaval_to_color3b(tolua_S, 5, &arg3, "cc.MotionStreak:initWithFade"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.MotionStreak:initWithFade"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.MotionStreak:initWithFade"); if (!ok) { break; } bool ret = cobj->initWithFade(arg0, arg1, arg2, arg3, arg4); @@ -63958,8 +64148,8 @@ int lua_cocos2dx_MotionStreak_create(lua_State* tolua_S) cocos2d::Color3B arg3; ok &= luaval_to_color3b(tolua_S, 5, &arg3, "cc.MotionStreak:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.MotionStreak:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.MotionStreak:create"); if (!ok) { break; } cocos2d::MotionStreak* ret = cocos2d::MotionStreak::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "cc.MotionStreak",(cocos2d::MotionStreak*)ret); @@ -64676,10 +64866,10 @@ int lua_cocos2dx_ParticleBatchNode_initWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleBatchNode:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleBatchNode:initWithFile"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.ParticleBatchNode:initWithFile"); if(!ok) @@ -65018,8 +65208,8 @@ int lua_cocos2dx_ParticleBatchNode_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleBatchNode:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleBatchNode:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParticleBatchNode_create'", nullptr); @@ -65031,9 +65221,9 @@ int lua_cocos2dx_ParticleBatchNode_create(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleBatchNode:create"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleBatchNode:create"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.ParticleBatchNode:create"); if(!ok) { @@ -68076,8 +68266,8 @@ int lua_cocos2dx_ParticleSystem_getResourceFile(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParticleSystem_getResourceFile'", nullptr); return 0; } - const std::string& ret = cobj->getResourceFile(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getResourceFile(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParticleSystem:getResourceFile",argc, 0); @@ -68994,9 +69184,9 @@ int lua_cocos2dx_ParticleSystem_initWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleSystem:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleSystem:initWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParticleSystem_initWithFile'", nullptr); @@ -70198,8 +70388,8 @@ int lua_cocos2dx_ParticleSystem_initWithDictionary(lua_State* tolua_S) ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.ParticleSystem:initWithDictionary"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.ParticleSystem:initWithDictionary"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.ParticleSystem:initWithDictionary"); if (!ok) { break; } bool ret = cobj->initWithDictionary(arg0, arg1); @@ -70582,8 +70772,8 @@ int lua_cocos2dx_ParticleSystem_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleSystem:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleSystem:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParticleSystem_create'", nullptr); @@ -71008,8 +71198,8 @@ int lua_cocos2dx_ParticleSystemQuad_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ParticleSystemQuad:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ParticleSystemQuad:create"); if (!ok) { break; } cocos2d::ParticleSystemQuad* ret = cocos2d::ParticleSystemQuad::create(arg0); object_to_luaval(tolua_S, "cc.ParticleSystemQuad",(cocos2d::ParticleSystemQuad*)ret); @@ -74985,8 +75175,8 @@ int lua_cocos2dx_Sprite_setSpriteFrame(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:setSpriteFrame"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:setSpriteFrame"); if (!ok) { break; } cobj->setSpriteFrame(arg0); @@ -75040,8 +75230,8 @@ int lua_cocos2dx_Sprite_setTexture(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:setTexture"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:setTexture"); if (!ok) { break; } cobj->setTexture(arg0); @@ -75282,10 +75472,10 @@ int lua_cocos2dx_Sprite_setDisplayFrameWithAnimationName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; unsigned int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:setDisplayFrameWithAnimationName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:setDisplayFrameWithAnimationName"); ok &= luaval_to_uint32(tolua_S, 3,&arg1, "cc.Sprite:setDisplayFrameWithAnimationName"); if(!ok) @@ -75576,8 +75766,8 @@ int lua_cocos2dx_Sprite_setTextureRect(lua_State* tolua_S) ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.Sprite:setTextureRect"); if (!ok) { break; } - cocos2d::Size arg2; - ok &= luaval_to_size(tolua_S, 4, &arg2, "cc.Sprite:setTextureRect"); + cocos2d::Vec2 arg2; + ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.Sprite:setTextureRect"); if (!ok) { break; } cobj->setTextureRect(arg0, arg1, arg2); @@ -75636,9 +75826,9 @@ int lua_cocos2dx_Sprite_initWithSpriteFrameName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:initWithSpriteFrameName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:initWithSpriteFrameName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Sprite_initWithSpriteFrameName'", nullptr); @@ -76179,8 +76369,8 @@ int lua_cocos2dx_Sprite_getResourceName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Sprite_getResourceName'", nullptr); return 0; } - const std::string& ret = cobj->getResourceName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getResourceName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Sprite:getResourceName",argc, 0); @@ -76583,8 +76773,8 @@ int lua_cocos2dx_Sprite_initWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:initWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:initWithFile"); if (!ok) { break; } cocos2d::Rect arg1; @@ -76599,8 +76789,8 @@ int lua_cocos2dx_Sprite_initWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:initWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:initWithFile"); if (!ok) { break; } bool ret = cobj->initWithFile(arg0); @@ -76997,8 +77187,8 @@ int lua_cocos2dx_Sprite_createWithSpriteFrameName(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Sprite:createWithSpriteFrameName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Sprite:createWithSpriteFrameName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Sprite_createWithSpriteFrameName'", nullptr); @@ -77568,8 +77758,8 @@ int lua_cocos2dx_RenderTexture_saveToFileAsNonPMA(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } cocos2d::Image::Format arg1; @@ -77580,7 +77770,7 @@ int lua_cocos2dx_RenderTexture_saveToFileAsNonPMA(lua_State* tolua_S) ok &= luaval_to_boolean(tolua_S, 4,&arg2, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } - std::function arg3; + std::function arg3; do { // Lambda binding for lua is not supported. assert(false); @@ -77596,8 +77786,8 @@ int lua_cocos2dx_RenderTexture_saveToFileAsNonPMA(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } bool ret = cobj->saveToFileAsNonPMA(arg0); @@ -77608,8 +77798,8 @@ int lua_cocos2dx_RenderTexture_saveToFileAsNonPMA(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } bool arg1; @@ -77624,15 +77814,15 @@ int lua_cocos2dx_RenderTexture_saveToFileAsNonPMA(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } bool arg1; ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.RenderTexture:saveToFileAsNonPMA"); if (!ok) { break; } - std::function arg2; + std::function arg2; do { // Lambda binding for lua is not supported. assert(false); @@ -77826,8 +78016,8 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } cocos2d::Image::Format arg1; @@ -77842,8 +78032,8 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } cocos2d::Image::Format arg1; @@ -77862,8 +78052,8 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok = true; do{ if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } cocos2d::Image::Format arg1; @@ -77874,7 +78064,7 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok &= luaval_to_boolean(tolua_S, 4,&arg2, "cc.RenderTexture:saveToFile"); if (!ok) { break; } - std::function arg3; + std::function arg3; do { // Lambda binding for lua is not supported. assert(false); @@ -77890,8 +78080,8 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } bool ret = cobj->saveToFile(arg0); @@ -77902,8 +78092,8 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } bool arg1; @@ -77918,15 +78108,15 @@ int lua_cocos2dx_RenderTexture_saveToFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.RenderTexture:saveToFile"); if (!ok) { break; } bool arg1; ok &= luaval_to_boolean(tolua_S, 3,&arg1, "cc.RenderTexture:saveToFile"); if (!ok) { break; } - std::function arg2; + std::function arg2; do { // Lambda binding for lua is not supported. assert(false); @@ -82057,9 +82247,9 @@ int lua_cocos2dx_TransitionFadeTR_actionWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TransitionFadeTR:actionWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TransitionFadeTR:actionWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TransitionFadeTR_actionWithSize'", nullptr); @@ -82493,9 +82683,9 @@ int lua_cocos2dx_TransitionPageTurn_actionWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TransitionPageTurn:actionWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TransitionPageTurn:actionWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TransitionPageTurn_actionWithSize'", nullptr); @@ -85287,18 +85477,18 @@ int lua_cocos2dx_CameraBackgroundBrush_createSkyboxBrush(lua_State* tolua_S) if (argc == 6) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CameraBackgroundBrush:createSkyboxBrush"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.CameraBackgroundBrush:createSkyboxBrush"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.CameraBackgroundBrush:createSkyboxBrush"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "cc.CameraBackgroundBrush:createSkyboxBrush"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.CameraBackgroundBrush:createSkyboxBrush"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.CameraBackgroundBrush:createSkyboxBrush"); + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CameraBackgroundBrush:createSkyboxBrush"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.CameraBackgroundBrush:createSkyboxBrush"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.CameraBackgroundBrush:createSkyboxBrush"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "cc.CameraBackgroundBrush:createSkyboxBrush"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.CameraBackgroundBrush:createSkyboxBrush"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.CameraBackgroundBrush:createSkyboxBrush"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_CameraBackgroundBrush_createSkyboxBrush'", nullptr); @@ -86064,23 +86254,23 @@ int lua_cocos2dx_CameraBackgroundSkyBoxBrush_create(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.CameraBackgroundSkyBoxBrush:create"); + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.CameraBackgroundSkyBoxBrush:create"); if (!ok) { break; } cocos2d::CameraBackgroundSkyBoxBrush* ret = cocos2d::CameraBackgroundSkyBoxBrush::create(arg0, arg1, arg2, arg3, arg4, arg5); object_to_luaval(tolua_S, "cc.CameraBackgroundSkyBoxBrush",(cocos2d::CameraBackgroundSkyBoxBrush*)ret); @@ -86187,9 +86377,9 @@ int lua_cocos2dx_GridBase_setGridSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.GridBase:setGridSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.GridBase:setGridSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GridBase_setGridSize'", nullptr); @@ -86527,8 +86717,8 @@ int lua_cocos2dx_GridBase_getGridSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GridBase_getGridSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getGridSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getGridSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.GridBase:getGridSize",argc, 0); @@ -86949,8 +87139,8 @@ int lua_cocos2dx_GridBase_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); if (!ok) { break; } cocos2d::Rect arg1; @@ -86965,8 +87155,8 @@ int lua_cocos2dx_GridBase_initWithSize(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); if (!ok) { break; } bool ret = cobj->initWithSize(arg0); @@ -86977,8 +87167,8 @@ int lua_cocos2dx_GridBase_initWithSize(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); if (!ok) { break; } cocos2d::Texture2D* arg1; @@ -86997,8 +87187,8 @@ int lua_cocos2dx_GridBase_initWithSize(lua_State* tolua_S) ok = true; do{ if (argc == 4) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.GridBase:initWithSize"); if (!ok) { break; } cocos2d::Texture2D* arg1; @@ -87378,8 +87568,8 @@ int lua_cocos2dx_Grid3D_create(lua_State* tolua_S) { if (argc == 2) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Grid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Grid3D:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.Grid3D:create"); @@ -87394,8 +87584,8 @@ int lua_cocos2dx_Grid3D_create(lua_State* tolua_S) { if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Grid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Grid3D:create"); if (!ok) { break; } cocos2d::Grid3D* ret = cocos2d::Grid3D::create(arg0); object_to_luaval(tolua_S, "cc.Grid3D",(cocos2d::Grid3D*)ret); @@ -87407,8 +87597,8 @@ int lua_cocos2dx_Grid3D_create(lua_State* tolua_S) { if (argc == 3) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Grid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Grid3D:create"); if (!ok) { break; } cocos2d::Texture2D* arg1; ok &= luaval_to_object(tolua_S, 3, "cc.Texture2D",&arg1, "cc.Grid3D:create"); @@ -87426,8 +87616,8 @@ int lua_cocos2dx_Grid3D_create(lua_State* tolua_S) { if (argc == 4) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.Grid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.Grid3D:create"); if (!ok) { break; } cocos2d::Texture2D* arg1; ok &= luaval_to_object(tolua_S, 3, "cc.Texture2D",&arg1, "cc.Grid3D:create"); @@ -87530,8 +87720,8 @@ int lua_cocos2dx_TiledGrid3D_create(lua_State* tolua_S) { if (argc == 2) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.TiledGrid3D:create"); @@ -87546,8 +87736,8 @@ int lua_cocos2dx_TiledGrid3D_create(lua_State* tolua_S) { if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); if (!ok) { break; } cocos2d::TiledGrid3D* ret = cocos2d::TiledGrid3D::create(arg0); object_to_luaval(tolua_S, "cc.TiledGrid3D",(cocos2d::TiledGrid3D*)ret); @@ -87559,8 +87749,8 @@ int lua_cocos2dx_TiledGrid3D_create(lua_State* tolua_S) { if (argc == 3) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); if (!ok) { break; } cocos2d::Texture2D* arg1; ok &= luaval_to_object(tolua_S, 3, "cc.Texture2D",&arg1, "cc.TiledGrid3D:create"); @@ -87578,8 +87768,8 @@ int lua_cocos2dx_TiledGrid3D_create(lua_State* tolua_S) { if (argc == 4) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TiledGrid3D:create"); if (!ok) { break; } cocos2d::Texture2D* arg1; ok &= luaval_to_object(tolua_S, 3, "cc.Texture2D",&arg1, "cc.TiledGrid3D:create"); @@ -89920,9 +90110,9 @@ int lua_cocos2dx_Material_setName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Material:setName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Material:setName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Material_setName'", nullptr); @@ -90161,9 +90351,9 @@ int lua_cocos2dx_Material_setTechnique(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Material:setTechnique"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Material:setTechnique"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Material_setTechnique'", nullptr); @@ -90211,9 +90401,9 @@ int lua_cocos2dx_Material_getTechniqueByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Material:getTechniqueByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Material:getTechniqueByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Material_getTechniqueByName'", nullptr); @@ -90347,8 +90537,8 @@ int lua_cocos2dx_Material_createWithFilename(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Material:createWithFilename"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Material:createWithFilename"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Material_createWithFilename'", nullptr); @@ -90867,9 +91057,9 @@ int lua_cocos2dx_Pass_setName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Pass:setName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Pass:setName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Pass_setName'", nullptr); @@ -90922,8 +91112,8 @@ int lua_cocos2dx_Pass_getName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Pass_getName'", nullptr); return 0; } - const std::string& ret = cobj->getName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Pass:getName",argc, 0); @@ -93610,11 +93800,11 @@ int lua_cocos2dx_Renderer_checkVisibility(lua_State* tolua_S) if (argc == 2) { cocos2d::Mat4 arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_mat4(tolua_S, 2, &arg0, "cc.Renderer:checkVisibility"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "cc.Renderer:checkVisibility"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.Renderer:checkVisibility"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Renderer_checkVisibility'", nullptr); @@ -94761,9 +94951,9 @@ int lua_cocos2dx_TextureCache_reloadTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:reloadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:reloadTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_reloadTexture'", nullptr); @@ -94858,9 +95048,9 @@ int lua_cocos2dx_TextureCache_removeTextureForKey(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:removeTextureForKey"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:removeTextureForKey"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_removeTextureForKey'", nullptr); @@ -95048,8 +95238,8 @@ int lua_cocos2dx_TextureCache_addImage(lua_State* tolua_S) ok &= luaval_to_object(tolua_S, 2, "cc.Image",&arg0, "cc.TextureCache:addImage"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TextureCache:addImage"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TextureCache:addImage"); if (!ok) { break; } cocos2d::Texture2D* ret = cobj->addImage(arg0, arg1); @@ -95060,8 +95250,8 @@ int lua_cocos2dx_TextureCache_addImage(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:addImage"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:addImage"); if (!ok) { break; } cocos2d::Texture2D* ret = cobj->addImage(arg0); @@ -95108,9 +95298,9 @@ int lua_cocos2dx_TextureCache_unbindImageAsync(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:unbindImageAsync"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:unbindImageAsync"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_unbindImageAsync'", nullptr); @@ -95158,9 +95348,9 @@ int lua_cocos2dx_TextureCache_getTextureForKey(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:getTextureForKey"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:getTextureForKey"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_getTextureForKey'", nullptr); @@ -95258,12 +95448,12 @@ int lua_cocos2dx_TextureCache_renameTextureWithKey(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:renameTextureWithKey"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:renameTextureWithKey"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TextureCache:renameTextureWithKey"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TextureCache:renameTextureWithKey"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_renameTextureWithKey'", nullptr); @@ -95444,8 +95634,8 @@ int lua_cocos2dx_TextureCache_setETC1AlphaFileSuffix(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TextureCache:setETC1AlphaFileSuffix"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TextureCache:setETC1AlphaFileSuffix"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TextureCache_setETC1AlphaFileSuffix'", nullptr); @@ -95941,9 +96131,9 @@ int lua_cocos2dx_Application_openURL(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.Application:openURL"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.Application:openURL"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_Application_openURL'", nullptr); @@ -96137,9 +96327,9 @@ int lua_cocos2dx_GLViewImpl_createWithRect(lua_State* tolua_S) if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::Rect arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithRect"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithRect"); ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.GLViewImpl:createWithRect"); if(!ok) { @@ -96152,10 +96342,10 @@ int lua_cocos2dx_GLViewImpl_createWithRect(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocos2d::Rect arg1; double arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithRect"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithRect"); ok &= luaval_to_rect(tolua_S, 3, &arg1, "cc.GLViewImpl:createWithRect"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.GLViewImpl:createWithRect"); if(!ok) @@ -96192,8 +96382,8 @@ int lua_cocos2dx_GLViewImpl_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLViewImpl:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLViewImpl:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLViewImpl_create'", nullptr); @@ -96228,8 +96418,8 @@ int lua_cocos2dx_GLViewImpl_createWithFullScreen(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithFullScreen"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.GLViewImpl:createWithFullScreen"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_GLViewImpl_createWithFullScreen'", nullptr); @@ -96297,9 +96487,9 @@ int lua_cocos2dx_AnimationCache_getAnimation(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AnimationCache:getAnimation"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AnimationCache:getAnimation"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AnimationCache_getAnimation'", nullptr); @@ -96348,11 +96538,11 @@ int lua_cocos2dx_AnimationCache_addAnimation(lua_State* tolua_S) if (argc == 2) { cocos2d::Animation* arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_object(tolua_S, 2, "cc.Animation",&arg0, "cc.AnimationCache:addAnimation"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.AnimationCache:addAnimation"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.AnimationCache:addAnimation"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AnimationCache_addAnimation'", nullptr); @@ -96448,11 +96638,11 @@ int lua_cocos2dx_AnimationCache_addAnimationsWithDictionary(lua_State* tolua_S) if (argc == 2) { cocos2d::ValueMap arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.AnimationCache:addAnimationsWithDictionary"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.AnimationCache:addAnimationsWithDictionary"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.AnimationCache:addAnimationsWithDictionary"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AnimationCache_addAnimationsWithDictionary'", nullptr); @@ -96500,9 +96690,9 @@ int lua_cocos2dx_AnimationCache_removeAnimation(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AnimationCache:removeAnimation"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AnimationCache:removeAnimation"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AnimationCache_removeAnimation'", nullptr); @@ -96550,9 +96740,9 @@ int lua_cocos2dx_AnimationCache_addAnimationsWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AnimationCache:addAnimationsWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AnimationCache:addAnimationsWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_AnimationCache_addAnimationsWithFile'", nullptr); @@ -97556,9 +97746,9 @@ int lua_cocos2dx_SpriteBatchNode_initWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteBatchNode:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteBatchNode:initWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteBatchNode_initWithFile'", nullptr); @@ -97570,10 +97760,10 @@ int lua_cocos2dx_SpriteBatchNode_initWithFile(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; ssize_t arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteBatchNode:initWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteBatchNode:initWithFile"); ok &= luaval_to_ssize_t(tolua_S, 3, &arg1, "cc.SpriteBatchNode:initWithFile"); if(!ok) @@ -97812,8 +98002,8 @@ int lua_cocos2dx_SpriteBatchNode_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteBatchNode:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteBatchNode:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteBatchNode_create'", nullptr); @@ -97825,9 +98015,9 @@ int lua_cocos2dx_SpriteBatchNode_create(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; ssize_t arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteBatchNode:create"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteBatchNode:create"); ok &= luaval_to_ssize_t(tolua_S, 3, &arg1, "cc.SpriteBatchNode:create"); if(!ok) { @@ -98024,9 +98214,9 @@ int lua_cocos2dx_SpriteFrameCache_reloadTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:reloadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:reloadTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_reloadTexture'", nullptr); @@ -98125,11 +98315,11 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFrame(lua_State* tolua_S) if (argc == 2) { cocos2d::SpriteFrame* arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_object(tolua_S, 2, "cc.SpriteFrame",&arg0, "cc.SpriteFrameCache:addSpriteFrame"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFrame"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFrame"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_addSpriteFrame'", nullptr); @@ -98177,9 +98367,9 @@ int lua_cocos2dx_SpriteFrameCache_findFrame(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:findFrame"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:findFrame"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_findFrame'", nullptr); @@ -98222,12 +98412,12 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } cobj->addSpriteFramesWithFile(arg0, arg1); @@ -98238,12 +98428,12 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } unsigned int arg2; @@ -98258,8 +98448,8 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } cobj->addSpriteFramesWithFile(arg0); @@ -98270,8 +98460,8 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } unsigned int arg1; @@ -98286,8 +98476,8 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } cocos2d::Texture2D* arg1; @@ -98302,8 +98492,8 @@ int lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:addSpriteFramesWithFile"); if (!ok) { break; } cocos2d::Texture2D* arg1; @@ -98358,9 +98548,9 @@ int lua_cocos2dx_SpriteFrameCache_getSpriteFrameByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:getSpriteFrameByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:getSpriteFrameByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_getSpriteFrameByName'", nullptr); @@ -98464,9 +98654,9 @@ int lua_cocos2dx_SpriteFrameCache_removeSpriteFramesFromFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFramesFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFramesFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_removeSpriteFramesFromFile'", nullptr); @@ -98705,9 +98895,9 @@ int lua_cocos2dx_SpriteFrameCache_removeSpriteFramesFromFileContent(lua_State* t argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFramesFromFileContent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFramesFromFileContent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_removeSpriteFramesFromFileContent'", nullptr); @@ -98755,9 +98945,9 @@ int lua_cocos2dx_SpriteFrameCache_removeSpriteFrameByName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFrameByName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:removeSpriteFrameByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_removeSpriteFrameByName'", nullptr); @@ -98805,9 +98995,9 @@ int lua_cocos2dx_SpriteFrameCache_eraseFrame(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:eraseFrame"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:eraseFrame"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_eraseFrame'", nullptr); @@ -98855,9 +99045,9 @@ int lua_cocos2dx_SpriteFrameCache_isSpriteFramesWithFileLoaded(lua_State* tolua_ argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.SpriteFrameCache:isSpriteFramesWithFileLoaded"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.SpriteFrameCache:isSpriteFramesWithFileLoaded"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_SpriteFrameCache_isSpriteFramesWithFileLoaded'", nullptr); @@ -99314,9 +99504,9 @@ int lua_cocos2dx_TMXObjectGroup_getProperty(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXObjectGroup:getProperty"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXObjectGroup:getProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXObjectGroup_getProperty'", nullptr); @@ -99411,9 +99601,9 @@ int lua_cocos2dx_TMXObjectGroup_getObject(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXObjectGroup:getObject"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXObjectGroup:getObject"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXObjectGroup_getObject'", nullptr); @@ -99508,9 +99698,9 @@ int lua_cocos2dx_TMXObjectGroup_setGroupName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXObjectGroup:setGroupName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXObjectGroup:setGroupName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXObjectGroup_setGroupName'", nullptr); @@ -99610,8 +99800,8 @@ int lua_cocos2dx_TMXObjectGroup_getGroupName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXObjectGroup_getGroupName'", nullptr); return 0; } - const std::string& ret = cobj->getGroupName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getGroupName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXObjectGroup:getGroupName",argc, 0); @@ -100083,9 +100273,9 @@ int lua_cocos2dx_TMXMapInfo_setCurrentString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:setCurrentString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:setCurrentString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_setCurrentString'", nullptr); @@ -100180,9 +100370,9 @@ int lua_cocos2dx_TMXMapInfo_setTileSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXMapInfo:setTileSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXMapInfo:setTileSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_setTileSize'", nullptr); @@ -100377,9 +100567,9 @@ int lua_cocos2dx_TMXMapInfo_parseXMLFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:parseXMLFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:parseXMLFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_parseXMLFile'", nullptr); @@ -100474,9 +100664,9 @@ int lua_cocos2dx_TMXMapInfo_setTMXFileName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:setTMXFileName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:setTMXFileName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_setTMXFileName'", nullptr); @@ -100524,9 +100714,9 @@ int lua_cocos2dx_TMXMapInfo_parseXMLString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:parseXMLString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:parseXMLString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_parseXMLString'", nullptr); @@ -100718,9 +100908,9 @@ int lua_cocos2dx_TMXMapInfo_initWithTMXFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:initWithTMXFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:initWithTMXFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_initWithTMXFile'", nullptr); @@ -100912,12 +101102,12 @@ int lua_cocos2dx_TMXMapInfo_initWithXML(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:initWithXML"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TMXMapInfo:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TMXMapInfo:initWithXML"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_initWithXML'", nullptr); @@ -101067,8 +101257,8 @@ int lua_cocos2dx_TMXMapInfo_getTileSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_getTileSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getTileSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getTileSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXMapInfo:getTileSize",argc, 0); @@ -101208,8 +101398,8 @@ int lua_cocos2dx_TMXMapInfo_getExternalTilesetFileName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_getExternalTilesetFileName'", nullptr); return 0; } - const std::string& ret = cobj->getExternalTilesetFileName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getExternalTilesetFileName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXMapInfo:getExternalTilesetFileName",argc, 0); @@ -101302,8 +101492,8 @@ int lua_cocos2dx_TMXMapInfo_getTMXFileName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_getTMXFileName'", nullptr); return 0; } - const std::string& ret = cobj->getTMXFileName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTMXFileName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXMapInfo:getTMXFileName",argc, 0); @@ -101544,9 +101734,9 @@ int lua_cocos2dx_TMXMapInfo_setMapSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXMapInfo:setMapSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXMapInfo:setMapSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_setMapSize'", nullptr); @@ -101599,8 +101789,8 @@ int lua_cocos2dx_TMXMapInfo_getCurrentString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_getCurrentString'", nullptr); return 0; } - const std::string& ret = cobj->getCurrentString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getCurrentString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXMapInfo:getCurrentString",argc, 0); @@ -101746,8 +101936,8 @@ int lua_cocos2dx_TMXMapInfo_getMapSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_getMapSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getMapSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getMapSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXMapInfo:getMapSize",argc, 0); @@ -101971,8 +102161,8 @@ int lua_cocos2dx_TMXMapInfo_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_create'", nullptr); @@ -102007,10 +102197,10 @@ int lua_cocos2dx_TMXMapInfo_createWithXML(lua_State* tolua_S) if (argc == 2) { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXMapInfo:createWithXML"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TMXMapInfo:createWithXML"); + std::string_view arg0; + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TMXMapInfo:createWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TMXMapInfo:createWithXML"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXMapInfo_createWithXML'", nullptr); @@ -102154,14 +102344,14 @@ int lua_cocos2dx_TileMapAtlas_initWithTileFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 4) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; int arg2; int arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TileMapAtlas:initWithTileFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TileMapAtlas:initWithTileFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TileMapAtlas:initWithTileFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TileMapAtlas:initWithTileFile"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.TileMapAtlas:initWithTileFile"); @@ -102352,12 +102542,12 @@ int lua_cocos2dx_TileMapAtlas_create(lua_State* tolua_S) if (argc == 4) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; int arg2; int arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TileMapAtlas:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TileMapAtlas:create"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.TileMapAtlas:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.TileMapAtlas:create"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.TileMapAtlas:create"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "cc.TileMapAtlas:create"); if(!ok) @@ -102722,8 +102912,8 @@ int lua_cocos2dx_FastTMXLayer_getLayerSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_getLayerSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getLayerSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getLayerSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXLayer:getLayerSize",argc, 0); @@ -102764,9 +102954,9 @@ int lua_cocos2dx_FastTMXLayer_setMapTileSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FastTMXLayer:setMapTileSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FastTMXLayer:setMapTileSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_setMapTileSize'", nullptr); @@ -102911,9 +103101,9 @@ int lua_cocos2dx_FastTMXLayer_setLayerName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXLayer:setLayerName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXLayer:setLayerName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_setLayerName'", nullptr); @@ -103233,8 +103423,8 @@ int lua_cocos2dx_FastTMXLayer_getMapTileSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_getMapTileSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getMapTileSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getMapTileSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXLayer:getMapTileSize",argc, 0); @@ -103275,9 +103465,9 @@ int lua_cocos2dx_FastTMXLayer_getProperty(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXLayer:getProperty"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXLayer:getProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_getProperty'", nullptr); @@ -103325,9 +103515,9 @@ int lua_cocos2dx_FastTMXLayer_setLayerSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FastTMXLayer:setLayerSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FastTMXLayer:setLayerSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_setLayerSize'", nullptr); @@ -103380,8 +103570,8 @@ int lua_cocos2dx_FastTMXLayer_getLayerName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXLayer_getLayerName'", nullptr); return 0; } - const std::string& ret = cobj->getLayerName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getLayerName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXLayer:getLayerName",argc, 0); @@ -104281,9 +104471,9 @@ int lua_cocos2dx_FastTMXTiledMap_getProperty(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getProperty"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getProperty'", nullptr); @@ -104331,9 +104521,9 @@ int lua_cocos2dx_FastTMXTiledMap_setMapSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FastTMXTiledMap:setMapSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FastTMXTiledMap:setMapSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_setMapSize'", nullptr); @@ -104381,9 +104571,9 @@ int lua_cocos2dx_FastTMXTiledMap_getObjectGroup(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getObjectGroup"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getObjectGroup"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getObjectGroup'", nullptr); @@ -104436,8 +104626,8 @@ int lua_cocos2dx_FastTMXTiledMap_getResourceFile(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getResourceFile'", nullptr); return 0; } - const std::string& ret = cobj->getResourceFile(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getResourceFile(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXTiledMap:getResourceFile",argc, 0); @@ -104572,9 +104762,9 @@ int lua_cocos2dx_FastTMXTiledMap_initWithTMXFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:initWithTMXFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:initWithTMXFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_initWithTMXFile'", nullptr); @@ -104627,8 +104817,8 @@ int lua_cocos2dx_FastTMXTiledMap_getTileSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getTileSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getTileSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getTileSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXTiledMap:getTileSize",argc, 0); @@ -104674,8 +104864,8 @@ int lua_cocos2dx_FastTMXTiledMap_getMapSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getMapSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getMapSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getMapSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.FastTMXTiledMap:getMapSize",argc, 0); @@ -104766,12 +104956,12 @@ int lua_cocos2dx_FastTMXTiledMap_initWithXML(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:initWithXML"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FastTMXTiledMap:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FastTMXTiledMap:initWithXML"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_initWithXML'", nullptr); @@ -104916,9 +105106,9 @@ int lua_cocos2dx_FastTMXTiledMap_setTileSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.FastTMXTiledMap:setTileSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.FastTMXTiledMap:setTileSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_setTileSize'", nullptr); @@ -105016,9 +105206,9 @@ int lua_cocos2dx_FastTMXTiledMap_getLayer(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getLayer"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:getLayer"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_getLayer'", nullptr); @@ -105152,8 +105342,8 @@ int lua_cocos2dx_FastTMXTiledMap_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_create'", nullptr); @@ -105188,10 +105378,10 @@ int lua_cocos2dx_FastTMXTiledMap_createWithXML(lua_State* tolua_S) if (argc == 2) { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:createWithXML"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.FastTMXTiledMap:createWithXML"); + std::string_view arg0; + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.FastTMXTiledMap:createWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.FastTMXTiledMap:createWithXML"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_FastTMXTiledMap_createWithXML'", nullptr); @@ -105836,8 +106026,8 @@ int lua_cocos2dx_MotionStreak3D_initWithFade(lua_State* tolua_S) ok &= luaval_to_color3b(tolua_S, 5, &arg3, "cc.MotionStreak3D:initWithFade"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.MotionStreak3D:initWithFade"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.MotionStreak3D:initWithFade"); if (!ok) { break; } bool ret = cobj->initWithFade(arg0, arg1, arg2, arg3, arg4); @@ -106011,8 +106201,8 @@ int lua_cocos2dx_MotionStreak3D_create(lua_State* tolua_S) cocos2d::Color3B arg3; ok &= luaval_to_color3b(tolua_S, 5, &arg3, "cc.MotionStreak3D:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "cc.MotionStreak3D:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "cc.MotionStreak3D:create"); if (!ok) { break; } cocos2d::MotionStreak3D* ret = cocos2d::MotionStreak3D::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "cc.MotionStreak3D",(cocos2d::MotionStreak3D*)ret); @@ -106213,8 +106403,8 @@ int lua_cocos2dx_ComponentLua_create(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ComponentLua:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ComponentLua:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ComponentLua_create'", nullptr); @@ -106247,9 +106437,9 @@ int lua_cocos2dx_ComponentLua_constructor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.ComponentLua:ComponentLua"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.ComponentLua:ComponentLua"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ComponentLua_constructor'", nullptr); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp index 3e1cc6c6fe41..d7b8e611d950 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp @@ -2328,6 +2328,10 @@ int register_all_cocos2dx(lua_State* tolua_S); + + + + diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_backend_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_backend_auto.cpp index 57a704777bc8..2523bad8605c 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_backend_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_backend_auto.cpp @@ -572,8 +572,8 @@ int lua_cocos2dx_backend_Program_getFragmentShader(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_backend_Program_getFragmentShader'", nullptr); return 0; } - const std::string& ret = cobj->getFragmentShader(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFragmentShader(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccb.Program:getFragmentShader",argc, 0); @@ -671,8 +671,8 @@ int lua_cocos2dx_backend_Program_getUniformLocation(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.Program:getUniformLocation"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.Program:getUniformLocation"); if (!ok) { break; } cocos2d::backend::UniformLocation ret = cobj->getUniformLocation(arg0); @@ -771,7 +771,7 @@ int lua_cocos2dx_backend_Program_getActiveAttributes(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_backend_Program_getActiveAttributes'", nullptr); return 0; } - std::unordered_map ret = cobj->getActiveAttributes(); + tsl::robin_map ret = cobj->getActiveAttributes(); program_activeattrs_to_luaval(tolua_S, ret); return 1; } @@ -820,8 +820,8 @@ int lua_cocos2dx_backend_Program_getAttributeLocation(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.Program:getAttributeLocation"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.Program:getAttributeLocation"); if (!ok) { break; } int ret = cobj->getAttributeLocation(arg0); @@ -873,8 +873,8 @@ int lua_cocos2dx_backend_Program_getVertexShader(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_backend_Program_getVertexShader'", nullptr); return 0; } - const std::string& ret = cobj->getVertexShader(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getVertexShader(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccb.Program:getVertexShader",argc, 0); @@ -1125,13 +1125,13 @@ int lua_cocos2dx_backend_VertexLayout_setAttribute(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 5) { - std::string arg0; + std::string_view arg0; unsigned int arg1; cocos2d::backend::VertexFormat arg2; unsigned int arg3; bool arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.VertexLayout:setAttribute"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.VertexLayout:setAttribute"); ok &= luaval_to_uint32(tolua_S, 3,&arg1, "ccb.VertexLayout:setAttribute"); @@ -1293,8 +1293,8 @@ int lua_cocos2dx_backend_ProgramState_setTexture(lua_State* tolua_S) ok &= luaval_to_uniformLocation(tolua_S, 2, arg0, "ccb.ProgramState:setTexture"); if (!ok) { break; } - unsigned short arg1; - ok &= luaval_to_ushort(tolua_S, 3, &arg1, "ccb.ProgramState:setTexture"); + int arg1; + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccb.ProgramState:setTexture"); if (!ok) { break; } cocos2d::backend::TextureBackend* arg2; @@ -1325,12 +1325,12 @@ int lua_cocos2dx_backend_ProgramState_setTexture(lua_State* tolua_S) ok &= luaval_to_uniformLocation(tolua_S, 2, arg0, "ccb.ProgramState:setTexture"); if (!ok) { break; } - unsigned short arg1; - ok &= luaval_to_ushort(tolua_S, 3, &arg1, "ccb.ProgramState:setTexture"); + int arg1; + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccb.ProgramState:setTexture"); if (!ok) { break; } - unsigned short arg2; - ok &= luaval_to_ushort(tolua_S, 4, &arg2, "ccb.ProgramState:setTexture"); + int arg2; + ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccb.ProgramState:setTexture"); if (!ok) { break; } cocos2d::backend::TextureBackend* arg3; @@ -1489,12 +1489,12 @@ int lua_cocos2dx_backend_ProgramState_setParameterAutoBinding(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.ProgramState:setParameterAutoBinding"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.ProgramState:setParameterAutoBinding"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccb.ProgramState:setParameterAutoBinding"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccb.ProgramState:setParameterAutoBinding"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_backend_ProgramState_setParameterAutoBinding'", nullptr); @@ -1643,8 +1643,8 @@ int lua_cocos2dx_backend_ProgramState_getAttributeLocation(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.ProgramState:getAttributeLocation"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.ProgramState:getAttributeLocation"); if (!ok) { break; } int ret = cobj->getAttributeLocation(arg0); @@ -2992,12 +2992,12 @@ int lua_cocos2dx_backend_Device_newProgram(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccb.Device:newProgram"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccb.Device:newProgram"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccb.Device:newProgram"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccb.Device:newProgram"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_backend_Device_newProgram'", nullptr); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.cpp index de4305f33eae..589c61ad7f61 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.cpp @@ -90,8 +90,8 @@ int lua_cocos2dx_controller_Controller_getDeviceName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_controller_Controller_getDeviceName'", nullptr); return 0; } - const std::string& ret = cobj->getDeviceName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getDeviceName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Controller:getDeviceName",argc, 0); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_csloader_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_csloader_auto.cpp index fd903bb40492..30343b1ce5bf 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_csloader_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_csloader_auto.cpp @@ -31,9 +31,9 @@ int lua_cocos2dx_csloader_CSLoader_createNodeFromJson(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeFromJson"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:createNodeFromJson"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_csloader_CSLoader_createNodeFromJson'", nullptr); @@ -81,9 +81,9 @@ int lua_cocos2dx_csloader_CSLoader_createNodeWithFlatBuffersFile(lua_State* tolu argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithFlatBuffersFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithFlatBuffersFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_csloader_CSLoader_createNodeWithFlatBuffersFile'", nullptr); @@ -131,9 +131,9 @@ int lua_cocos2dx_csloader_CSLoader_loadNodeWithFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_csloader_CSLoader_loadNodeWithFile'", nullptr); @@ -181,14 +181,14 @@ int lua_cocos2dx_csloader_CSLoader_bindCallback(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 4) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; cocos2d::ui::Widget* arg2; cocos2d::Node* arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:bindCallback"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:bindCallback"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.CSLoader:bindCallback"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.CSLoader:bindCallback"); ok &= luaval_to_object(tolua_S, 4, "ccui.Widget",&arg2, "cc.CSLoader:bindCallback"); @@ -337,9 +337,9 @@ int lua_cocos2dx_csloader_CSLoader_loadNodeWithContent(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithContent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithContent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_csloader_CSLoader_loadNodeWithContent'", nullptr); @@ -531,9 +531,9 @@ int lua_cocos2dx_csloader_CSLoader_createNodeWithFlatBuffersForSimulator(lua_Sta argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithFlatBuffersForSimulator"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithFlatBuffersForSimulator"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_csloader_CSLoader_createNodeWithFlatBuffersForSimulator'", nullptr); @@ -605,8 +605,8 @@ int lua_cocos2dx_csloader_CSLoader_createNodeWithVisibleSize(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithVisibleSize"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithVisibleSize"); if (!ok) { break; } std::function arg1; do { @@ -625,8 +625,8 @@ int lua_cocos2dx_csloader_CSLoader_createNodeWithVisibleSize(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithVisibleSize"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.CSLoader:createNodeWithVisibleSize"); if (!ok) { break; } cocos2d::Node* ret = cocos2d::CSLoader::createNodeWithVisibleSize(arg0); object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp index bd142213112e..0daaca8566d9 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp @@ -471,8 +471,8 @@ int lua_cocos2dx_extension_AssetsManager_getVersion(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_AssetsManager_getVersion'", nullptr); return 0; } - std::string ret = cobj->getVersion(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getVersion(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManager:getVersion",argc, 0); @@ -1158,11 +1158,11 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 3) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1181,12 +1181,12 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1207,13 +1207,13 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 5) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; double arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1236,14 +1236,14 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 6) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; double arg4; - std::string arg5; + std::string_view arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1253,7 +1253,7 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 6,&arg4, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_EventAssetsManagerEx_constructor'", nullptr); @@ -1268,15 +1268,15 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 7) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; double arg4; - std::string arg5; - std::string arg6; + std::string_view arg5; + std::string_view arg6; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1286,9 +1286,9 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 6,&arg4, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_EventAssetsManagerEx_constructor'", nullptr); @@ -1303,16 +1303,16 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 8) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; double arg4; - std::string arg5; - std::string arg6; + std::string_view arg5; + std::string_view arg6; int arg7; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1322,9 +1322,9 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 6,&arg4, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_int32(tolua_S, 9,(int *)&arg7, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); if(!ok) @@ -1341,17 +1341,17 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) } if (argc == 9) { - std::string arg0; + std::string_view arg0; cocos2d::extension::AssetsManagerEx* arg1; cocos2d::extension::EventAssetsManagerEx::EventCode arg2; double arg3; double arg4; - std::string arg5; - std::string arg6; + std::string_view arg5; + std::string_view arg6; int arg7; int arg8; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_object(tolua_S, 3, "cc.AssetsManagerEx",&arg1, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1361,9 +1361,9 @@ int lua_cocos2dx_extension_EventAssetsManagerEx_constructor(lua_State* tolua_S) ok &= luaval_to_number(tolua_S, 6,&arg4, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 8,&arg6, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); ok &= luaval_to_int32(tolua_S, 9,(int *)&arg7, "cc.EventAssetsManagerEx:EventAssetsManagerEx"); @@ -1451,8 +1451,8 @@ int lua_cocos2dx_extension_Manifest_getManifestFileUrl(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_Manifest_getManifestFileUrl'", nullptr); return 0; } - const std::string& ret = cobj->getManifestFileUrl(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getManifestFileUrl(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getManifestFileUrl",argc, 0); @@ -1592,8 +1592,8 @@ int lua_cocos2dx_extension_Manifest_getPackageUrl(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_Manifest_getPackageUrl'", nullptr); return 0; } - const std::string& ret = cobj->getPackageUrl(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getPackageUrl(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getPackageUrl",argc, 0); @@ -1639,8 +1639,8 @@ int lua_cocos2dx_extension_Manifest_getVersion(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_Manifest_getVersion'", nullptr); return 0; } - const std::string& ret = cobj->getVersion(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getVersion(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getVersion",argc, 0); @@ -1686,8 +1686,8 @@ int lua_cocos2dx_extension_Manifest_getVersionFileUrl(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_Manifest_getVersionFileUrl'", nullptr); return 0; } - const std::string& ret = cobj->getVersionFileUrl(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getVersionFileUrl(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getVersionFileUrl",argc, 0); @@ -1942,7 +1942,7 @@ int lua_cocos2dx_extension_AssetsManagerEx_setVerifyCallback(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::function arg0; + std::function arg0; do { // Lambda binding for lua is not supported. @@ -2001,8 +2001,8 @@ int lua_cocos2dx_extension_AssetsManagerEx_getStoragePath(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_AssetsManagerEx_getStoragePath'", nullptr); return 0; } - const std::string& ret = cobj->getStoragePath(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getStoragePath(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:getStoragePath",argc, 0); @@ -2090,7 +2090,7 @@ int lua_cocos2dx_extension_AssetsManagerEx_setVersionCompareHandle(lua_State* to argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::function arg0; + std::function arg0; do { // Lambda binding for lua is not supported. @@ -2324,10 +2324,10 @@ int lua_cocos2dx_extension_AssetsManagerEx_create(lua_State* tolua_S) if (argc == 2) { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AssetsManagerEx:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.AssetsManagerEx:create"); + std::string_view arg0; + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AssetsManagerEx:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.AssetsManagerEx:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_AssetsManagerEx_create'", nullptr); @@ -2360,12 +2360,12 @@ int lua_cocos2dx_extension_AssetsManagerEx_constructor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AssetsManagerEx:AssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.AssetsManagerEx:AssetsManagerEx"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.AssetsManagerEx:AssetsManagerEx"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.AssetsManagerEx:AssetsManagerEx"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_AssetsManagerEx_constructor'", nullptr); @@ -3604,9 +3604,9 @@ int lua_cocos2dx_extension_PUParticleSystem3D_initWithFilePath(lua_State* tolua_ argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initWithFilePath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initWithFilePath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_PUParticleSystem3D_initWithFilePath'", nullptr); @@ -3845,12 +3845,12 @@ int lua_cocos2dx_extension_PUParticleSystem3D_initWithFilePathAndMaterialPath(lu argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initWithFilePathAndMaterialPath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initWithFilePathAndMaterialPath"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.PUParticleSystem3D:initWithFilePathAndMaterialPath"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.PUParticleSystem3D:initWithFilePathAndMaterialPath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_PUParticleSystem3D_initWithFilePathAndMaterialPath'", nullptr); @@ -3950,8 +3950,8 @@ int lua_cocos2dx_extension_PUParticleSystem3D_getMaterialName(lua_State* tolua_S tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_PUParticleSystem3D_getMaterialName'", nullptr); return 0; } - const std::string& ret = cobj->getMaterialName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getMaterialName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.PUParticleSystem3D:getMaterialName",argc, 0); @@ -4821,9 +4821,9 @@ int lua_cocos2dx_extension_PUParticleSystem3D_setMaterialName(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:setMaterialName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:setMaterialName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_PUParticleSystem3D_setMaterialName'", nullptr); @@ -5403,9 +5403,9 @@ int lua_cocos2dx_extension_PUParticleSystem3D_initSystem(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initSystem"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:initSystem"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_extension_PUParticleSystem3D_initSystem'", nullptr); @@ -5641,8 +5641,8 @@ int lua_cocos2dx_extension_PUParticleSystem3D_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:create"); if (!ok) { break; } cocos2d::PUParticleSystem3D* ret = cocos2d::PUParticleSystem3D::create(arg0); object_to_luaval(tolua_S, "cc.PUParticleSystem3D",(cocos2d::PUParticleSystem3D*)ret); @@ -5664,11 +5664,11 @@ int lua_cocos2dx_extension_PUParticleSystem3D_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.PUParticleSystem3D:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.PUParticleSystem3D:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.PUParticleSystem3D:create"); if (!ok) { break; } cocos2d::PUParticleSystem3D* ret = cocos2d::PUParticleSystem3D::create(arg0, arg1); object_to_luaval(tolua_S, "cc.PUParticleSystem3D",(cocos2d::PUParticleSystem3D*)ret); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_navmesh_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_navmesh_auto.cpp index 61117700c3dd..abb3bf630ad4 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_navmesh_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_navmesh_auto.cpp @@ -1424,8 +1424,8 @@ int lua_cocos2dx_navmesh_NavMeshAgent_getNavMeshAgentComponentName(lua_State* to tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_navmesh_NavMeshAgent_getNavMeshAgentComponentName'", nullptr); return 0; } - const std::string& ret = cocos2d::NavMeshAgent::getNavMeshAgentComponentName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cocos2d::NavMeshAgent::getNavMeshAgentComponentName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.NavMeshAgent:getNavMeshAgentComponentName",argc, 0); @@ -1958,8 +1958,8 @@ int lua_cocos2dx_navmesh_NavMeshObstacle_getNavMeshObstacleComponentName(lua_Sta tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_navmesh_NavMeshObstacle_getNavMeshObstacleComponentName'", nullptr); return 0; } - const std::string& ret = cocos2d::NavMeshObstacle::getNavMeshObstacleComponentName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cocos2d::NavMeshObstacle::getNavMeshObstacleComponentName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.NavMeshObstacle:getNavMeshObstacleComponentName",argc, 0); @@ -2450,10 +2450,10 @@ int lua_cocos2dx_navmesh_NavMesh_create(lua_State* tolua_S) if (argc == 2) { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.NavMesh:create"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.NavMesh:create"); + std::string_view arg0; + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "cc.NavMesh:create"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "cc.NavMesh:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_navmesh_NavMesh_create'", nullptr); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp index 5d72cd0e8e0f..79c3f641c716 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp @@ -1930,8 +1930,8 @@ int lua_cocos2dx_physics_PhysicsShapeBox_getSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_physics_PhysicsShapeBox_getSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.PhysicsShapeBox:getSize",argc, 0); @@ -1961,8 +1961,8 @@ int lua_cocos2dx_physics_PhysicsShapeBox_create(lua_State* tolua_S) if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_physics_PhysicsShapeBox_create'", nullptr); @@ -1974,9 +1974,9 @@ int lua_cocos2dx_physics_PhysicsShapeBox_create(lua_State* tolua_S) } if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeBox:create"); if(!ok) { @@ -1989,10 +1989,10 @@ int lua_cocos2dx_physics_PhysicsShapeBox_create(lua_State* tolua_S) } if (argc == 3) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; cocos2d::Vec2 arg2; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeBox:create"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.PhysicsShapeBox:create"); if(!ok) @@ -2006,11 +2006,11 @@ int lua_cocos2dx_physics_PhysicsShapeBox_create(lua_State* tolua_S) } if (argc == 4) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; cocos2d::Vec2 arg2; double arg3; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeBox:create"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.PhysicsShapeBox:create"); ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.PhysicsShapeBox:create"); @@ -2326,8 +2326,8 @@ int lua_cocos2dx_physics_PhysicsShapeEdgeBox_create(lua_State* tolua_S) if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_physics_PhysicsShapeEdgeBox_create'", nullptr); @@ -2339,9 +2339,9 @@ int lua_cocos2dx_physics_PhysicsShapeEdgeBox_create(lua_State* tolua_S) } if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeEdgeBox:create"); if(!ok) { @@ -2354,10 +2354,10 @@ int lua_cocos2dx_physics_PhysicsShapeEdgeBox_create(lua_State* tolua_S) } if (argc == 3) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; double arg2; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.PhysicsShapeEdgeBox:create"); if(!ok) @@ -2371,11 +2371,11 @@ int lua_cocos2dx_physics_PhysicsShapeEdgeBox_create(lua_State* tolua_S) } if (argc == 4) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; double arg2; cocos2d::Vec2 arg3; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.PhysicsShapeEdgeBox:create"); ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.PhysicsShapeEdgeBox:create"); @@ -5515,8 +5515,8 @@ int lua_cocos2dx_physics_PhysicsBody_createBox(lua_State* tolua_S) if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_physics_PhysicsBody_createBox'", nullptr); @@ -5528,9 +5528,9 @@ int lua_cocos2dx_physics_PhysicsBody_createBox(lua_State* tolua_S) } if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsBody:createBox"); if(!ok) { @@ -5543,10 +5543,10 @@ int lua_cocos2dx_physics_PhysicsBody_createBox(lua_State* tolua_S) } if (argc == 3) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; cocos2d::Vec2 arg2; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createBox"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsBody:createBox"); ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.PhysicsBody:createBox"); if(!ok) @@ -5718,8 +5718,8 @@ int lua_cocos2dx_physics_PhysicsBody_createEdgeBox(lua_State* tolua_S) if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_physics_PhysicsBody_createEdgeBox'", nullptr); @@ -5731,9 +5731,9 @@ int lua_cocos2dx_physics_PhysicsBody_createEdgeBox(lua_State* tolua_S) } if (argc == 2) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsBody:createEdgeBox"); if(!ok) { @@ -5746,10 +5746,10 @@ int lua_cocos2dx_physics_PhysicsBody_createEdgeBox(lua_State* tolua_S) } if (argc == 3) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; double arg2; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.PhysicsBody:createEdgeBox"); if(!ok) @@ -5763,11 +5763,11 @@ int lua_cocos2dx_physics_PhysicsBody_createEdgeBox(lua_State* tolua_S) } if (argc == 4) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; cocos2d::PhysicsMaterial arg1; double arg2; cocos2d::Vec2 arg3; - ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_physics_material(tolua_S, 3, &arg1, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_number(tolua_S, 4,&arg2, "cc.PhysicsBody:createEdgeBox"); ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.PhysicsBody:createEdgeBox"); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp index 35b2be46df6e..5ddb33717abf 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp @@ -3232,8 +3232,8 @@ int lua_cocos2dx_studio_DisplayData_changeDisplayToTexture(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.DisplayData:changeDisplayToTexture"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.DisplayData:changeDisplayToTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_DisplayData_changeDisplayToTexture'", nullptr); @@ -4039,9 +4039,9 @@ int lua_cocos2dx_studio_ArmatureData_getBoneData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureData:getBoneData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureData:getBoneData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureData_getBoneData'", nullptr); @@ -4569,9 +4569,9 @@ int lua_cocos2dx_studio_MovementData_getMovementBoneData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.MovementData:getMovementBoneData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.MovementData:getMovementBoneData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_MovementData_getMovementBoneData'", nullptr); @@ -4763,9 +4763,9 @@ int lua_cocos2dx_studio_AnimationData_getMovement(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.AnimationData:getMovement"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.AnimationData:getMovement"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_AnimationData_getMovement'", nullptr); @@ -6407,10 +6407,10 @@ int lua_cocos2dx_studio_DisplayManager_changeDisplayWithName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.DisplayManager:changeDisplayWithName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.DisplayManager:changeDisplayWithName"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "ccs.DisplayManager:changeDisplayWithName"); if(!ok) @@ -7577,9 +7577,9 @@ int lua_cocos2dx_studio_Bone_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Bone:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Bone:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Bone_init'", nullptr); @@ -8031,10 +8031,10 @@ int lua_cocos2dx_studio_Bone_changeDisplayWithName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Bone:changeDisplayWithName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Bone:changeDisplayWithName"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "ccs.Bone:changeDisplayWithName"); if(!ok) @@ -8465,8 +8465,8 @@ int lua_cocos2dx_studio_Bone_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Bone:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Bone:create"); if (!ok) { break; } cocostudio::Bone* ret = cocostudio::Bone::create(arg0); object_to_luaval(tolua_S, "ccs.Bone",(cocostudio::Bone*)ret); @@ -8712,9 +8712,9 @@ int lua_cocos2dx_studio_ArmatureAnimation_play(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureAnimation_play'", nullptr); @@ -8726,10 +8726,10 @@ int lua_cocos2dx_studio_ArmatureAnimation_play(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccs.ArmatureAnimation:play"); if(!ok) @@ -8743,11 +8743,11 @@ int lua_cocos2dx_studio_ArmatureAnimation_play(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; int arg1; int arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureAnimation:play"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccs.ArmatureAnimation:play"); @@ -9558,9 +9558,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_removeAnimationData(lua_State* tolua argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeAnimationData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_removeAnimationData'", nullptr); @@ -9608,10 +9608,10 @@ int lua_cocos2dx_studio_ArmatureDataManager_addArmatureData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocostudio::ArmatureData* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureData"); ok &= luaval_to_object(tolua_S, 3, "ccs.ArmatureData",&arg1, "ccs.ArmatureDataManager:addArmatureData"); if(!ok) @@ -9625,15 +9625,15 @@ int lua_cocos2dx_studio_ArmatureDataManager_addArmatureData(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocostudio::ArmatureData* arg1; - std::string arg2; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureData"); ok &= luaval_to_object(tolua_S, 3, "ccs.ArmatureData",&arg1, "ccs.ArmatureDataManager:addArmatureData"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addArmatureData"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addArmatureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addArmatureData'", nullptr); @@ -9676,16 +9676,16 @@ int lua_cocos2dx_studio_ArmatureDataManager_addArmatureFileInfo(lua_State* tolua argc = lua_gettop(tolua_S)-1; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureFileInfo"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureFileInfo"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addArmatureFileInfo"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addArmatureFileInfo"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addArmatureFileInfo"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addArmatureFileInfo"); if (!ok) { break; } cobj->addArmatureFileInfo(arg0, arg1, arg2); @@ -9696,8 +9696,8 @@ int lua_cocos2dx_studio_ArmatureDataManager_addArmatureFileInfo(lua_State* tolua ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureFileInfo"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addArmatureFileInfo"); if (!ok) { break; } cobj->addArmatureFileInfo(arg0); @@ -9744,9 +9744,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_removeArmatureFileInfo(lua_State* to argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeArmatureFileInfo"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeArmatureFileInfo"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_removeArmatureFileInfo'", nullptr); @@ -9799,7 +9799,7 @@ int lua_cocos2dx_studio_ArmatureDataManager_getTextureDatas(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getTextureDatas'", nullptr); return 0; } - const cocos2d::Map& ret = cobj->getTextureDatas(); + const cocos2d::Map& ret = cobj->getTextureDatas(); ccmap_string_key_to_luaval(tolua_S, ret); return 1; } @@ -9841,9 +9841,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_getTextureData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getTextureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getTextureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getTextureData'", nullptr); @@ -9891,9 +9891,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_getArmatureData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getArmatureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getArmatureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getArmatureData'", nullptr); @@ -9941,9 +9941,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_getAnimationData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getAnimationData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getAnimationData'", nullptr); @@ -9991,10 +9991,10 @@ int lua_cocos2dx_studio_ArmatureDataManager_addAnimationData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocostudio::AnimationData* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addAnimationData"); ok &= luaval_to_object(tolua_S, 3, "ccs.AnimationData",&arg1, "ccs.ArmatureDataManager:addAnimationData"); if(!ok) @@ -10008,15 +10008,15 @@ int lua_cocos2dx_studio_ArmatureDataManager_addAnimationData(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocostudio::AnimationData* arg1; - std::string arg2; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addAnimationData"); ok &= luaval_to_object(tolua_S, 3, "ccs.AnimationData",&arg1, "ccs.ArmatureDataManager:addAnimationData"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addAnimationData"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addAnimationData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addAnimationData'", nullptr); @@ -10111,9 +10111,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_removeArmatureData(lua_State* tolua_ argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeArmatureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeArmatureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_removeArmatureData'", nullptr); @@ -10166,7 +10166,7 @@ int lua_cocos2dx_studio_ArmatureDataManager_getArmatureDatas(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getArmatureDatas'", nullptr); return 0; } - const cocos2d::Map& ret = cobj->getArmatureDatas(); + const cocos2d::Map& ret = cobj->getArmatureDatas(); ccmap_string_key_to_luaval(tolua_S, ret); return 1; } @@ -10208,9 +10208,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_addRelativeData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addRelativeData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addRelativeData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addRelativeData'", nullptr); @@ -10258,9 +10258,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_removeTextureData(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeTextureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:removeTextureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_removeTextureData'", nullptr); @@ -10308,9 +10308,9 @@ int lua_cocos2dx_studio_ArmatureDataManager_getRelativeData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getRelativeData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:getRelativeData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getRelativeData'", nullptr); @@ -10358,10 +10358,10 @@ int lua_cocos2dx_studio_ArmatureDataManager_addTextureData(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocostudio::TextureData* arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addTextureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addTextureData"); ok &= luaval_to_object(tolua_S, 3, "ccs.TextureData",&arg1, "ccs.ArmatureDataManager:addTextureData"); if(!ok) @@ -10375,15 +10375,15 @@ int lua_cocos2dx_studio_ArmatureDataManager_addTextureData(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocostudio::TextureData* arg1; - std::string arg2; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addTextureData"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addTextureData"); ok &= luaval_to_object(tolua_S, 3, "ccs.TextureData",&arg1, "ccs.ArmatureDataManager:addTextureData"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addTextureData"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addTextureData"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addTextureData'", nullptr); @@ -10436,7 +10436,7 @@ int lua_cocos2dx_studio_ArmatureDataManager_getAnimationDatas(lua_State* tolua_S tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_getAnimationDatas'", nullptr); return 0; } - const cocos2d::Map& ret = cobj->getAnimationDatas(); + const cocos2d::Map& ret = cobj->getAnimationDatas(); ccmap_string_key_to_luaval(tolua_S, ret); return 1; } @@ -10525,12 +10525,12 @@ int lua_cocos2dx_studio_ArmatureDataManager_addSpriteFrameFromFile(lua_State* to argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addSpriteFrameFromFile'", nullptr); @@ -10542,15 +10542,15 @@ int lua_cocos2dx_studio_ArmatureDataManager_addSpriteFrameFromFile(lua_State* to } if (argc == 3) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccs.ArmatureDataManager:addSpriteFrameFromFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ArmatureDataManager_addSpriteFrameFromFile'", nullptr); @@ -10706,9 +10706,9 @@ int lua_cocos2dx_studio_Armature_getBone(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Armature:getBone"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Armature:getBone"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Armature_getBone'", nullptr); @@ -10757,11 +10757,11 @@ int lua_cocos2dx_studio_Armature_changeBoneParent(lua_State* tolua_S) if (argc == 2) { cocostudio::Bone* arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_object(tolua_S, 2, "ccs.Bone",&arg0, "ccs.Armature:changeBoneParent"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.Armature:changeBoneParent"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.Armature:changeBoneParent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Armature_changeBoneParent'", nullptr); @@ -11198,8 +11198,8 @@ int lua_cocos2dx_studio_Armature_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Armature:init"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Armature:init"); if (!ok) { break; } cocostudio::Bone* arg1; @@ -11214,8 +11214,8 @@ int lua_cocos2dx_studio_Armature_init(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Armature:init"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Armature:init"); if (!ok) { break; } bool ret = cobj->init(arg0); @@ -11460,11 +11460,11 @@ int lua_cocos2dx_studio_Armature_addBone(lua_State* tolua_S) if (argc == 2) { cocostudio::Bone* arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_object(tolua_S, 2, "ccs.Bone",&arg0, "ccs.Armature:addBone"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.Armature:addBone"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.Armature:addBone"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Armature_addBone'", nullptr); @@ -11755,7 +11755,7 @@ int lua_cocos2dx_studio_Armature_getBoneDic(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Armature_getBoneDic'", nullptr); return 0; } - const cocos2d::Map& ret = cobj->getBoneDic(); + const cocos2d::Map& ret = cobj->getBoneDic(); ccmap_string_key_to_luaval(tolua_S, ret); return 1; } @@ -11787,8 +11787,8 @@ int lua_cocos2dx_studio_Armature_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Armature:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Armature:create"); if (!ok) { break; } cocostudio::Armature* ret = cocostudio::Armature::create(arg0); object_to_luaval(tolua_S, "ccs.Armature",(cocostudio::Armature*)ret); @@ -11810,8 +11810,8 @@ int lua_cocos2dx_studio_Armature_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Armature:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Armature:create"); if (!ok) { break; } cocostudio::Bone* arg1; ok &= luaval_to_object(tolua_S, 3, "ccs.Bone",&arg1, "ccs.Armature:create"); @@ -12037,8 +12037,8 @@ int lua_cocos2dx_studio_Skin_getDisplayName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Skin_getDisplayName'", nullptr); return 0; } - const std::string& ret = cobj->getDisplayName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getDisplayName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.Skin:getDisplayName",argc, 0); @@ -12166,8 +12166,8 @@ int lua_cocos2dx_studio_Skin_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Skin:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Skin:create"); if (!ok) { break; } cocostudio::Skin* ret = cocostudio::Skin::create(arg0); object_to_luaval(tolua_S, "ccs.Skin",(cocostudio::Skin*)ret); @@ -12210,8 +12210,8 @@ int lua_cocos2dx_studio_Skin_createWithSpriteFrameName(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.Skin:createWithSpriteFrameName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.Skin:createWithSpriteFrameName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_Skin_createWithSpriteFrameName'", nullptr); @@ -12321,9 +12321,9 @@ int lua_cocos2dx_studio_ComAttribute_getFloat(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getFloat"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getFloat"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_getFloat'", nullptr); @@ -12335,10 +12335,10 @@ int lua_cocos2dx_studio_ComAttribute_getFloat(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; double arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getFloat"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getFloat"); ok &= luaval_to_number(tolua_S, 3,&arg1, "ccs.ComAttribute:getFloat"); if(!ok) @@ -12388,9 +12388,9 @@ int lua_cocos2dx_studio_ComAttribute_getString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_getString'", nullptr); @@ -12402,12 +12402,12 @@ int lua_cocos2dx_studio_ComAttribute_getString(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getString"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ComAttribute:getString"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ComAttribute:getString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_getString'", nullptr); @@ -12455,10 +12455,10 @@ int lua_cocos2dx_studio_ComAttribute_setFloat(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; double arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:setFloat"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:setFloat"); ok &= luaval_to_number(tolua_S, 3,&arg1, "ccs.ComAttribute:setFloat"); if(!ok) @@ -12508,12 +12508,12 @@ int lua_cocos2dx_studio_ComAttribute_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:setString"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ComAttribute:setString"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ComAttribute:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_setString'", nullptr); @@ -12561,9 +12561,9 @@ int lua_cocos2dx_studio_ComAttribute_getBool(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getBool"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getBool"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_getBool'", nullptr); @@ -12575,10 +12575,10 @@ int lua_cocos2dx_studio_ComAttribute_getBool(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getBool"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getBool"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "ccs.ComAttribute:getBool"); if(!ok) @@ -12628,10 +12628,10 @@ int lua_cocos2dx_studio_ComAttribute_setInt(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:setInt"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:setInt"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccs.ComAttribute:setInt"); if(!ok) @@ -12681,9 +12681,9 @@ int lua_cocos2dx_studio_ComAttribute_parse(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:parse"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:parse"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_parse'", nullptr); @@ -12731,9 +12731,9 @@ int lua_cocos2dx_studio_ComAttribute_getInt(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getInt"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getInt"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComAttribute_getInt'", nullptr); @@ -12745,10 +12745,10 @@ int lua_cocos2dx_studio_ComAttribute_getInt(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; int arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:getInt"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:getInt"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccs.ComAttribute:getInt"); if(!ok) @@ -12798,10 +12798,10 @@ int lua_cocos2dx_studio_ComAttribute_setBool(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; bool arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComAttribute:setBool"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComAttribute:setBool"); ok &= luaval_to_boolean(tolua_S, 3,&arg1, "ccs.ComAttribute:setBool"); if(!ok) @@ -14785,9 +14785,9 @@ int lua_cocos2dx_studio_GUIReader_setFilePath(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.GUIReader:setFilePath"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.GUIReader:setFilePath"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_setFilePath'", nullptr); @@ -14890,8 +14890,8 @@ int lua_cocos2dx_studio_GUIReader_getFilePath(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_getFilePath'", nullptr); return 0; } - const std::string& ret = cobj->getFilePath(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFilePath(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.GUIReader:getFilePath",argc, 0); @@ -15180,9 +15180,9 @@ int lua_cocos2dx_studio_SceneReader_createNodeWithSceneFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.SceneReader:createNodeWithSceneFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.SceneReader:createNodeWithSceneFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_SceneReader_createNodeWithSceneFile'", nullptr); @@ -15194,10 +15194,10 @@ int lua_cocos2dx_studio_SceneReader_createNodeWithSceneFile(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocostudio::SceneReader::AttachComponentType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.SceneReader:createNodeWithSceneFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.SceneReader:createNodeWithSceneFile"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccs.SceneReader:createNodeWithSceneFile"); if(!ok) @@ -15472,9 +15472,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson(lua_State* tolu argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromJson"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromJson"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson'", nullptr); @@ -15522,9 +15522,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_createActionWithFlatBuffersFile(lua_ argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionWithFlatBuffersFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionWithFlatBuffersFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionWithFlatBuffersFile'", nullptr); @@ -15572,9 +15572,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFlatBuffersFi argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFlatBuffersFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFlatBuffersFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFlatBuffersFile'", nullptr); @@ -15622,12 +15622,12 @@ int lua_cocos2dx_studio_ActionTimelineCache_createActionFromContent(lua_State* t argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromContent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromContent"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ActionTimelineCache:createActionFromContent"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ActionTimelineCache:createActionFromContent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromContent'", nullptr); @@ -15769,12 +15769,12 @@ int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent(lua_S argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithContent"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithContent"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ActionTimelineCache:loadAnimationActionWithContent"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ActionTimelineCache:loadAnimationActionWithContent"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent'", nullptr); @@ -15822,9 +15822,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile(lua_Stat argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile'", nullptr); @@ -15872,9 +15872,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_removeAction(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:removeAction"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:removeAction"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_removeAction'", nullptr); @@ -15922,9 +15922,9 @@ int lua_cocos2dx_studio_ActionTimelineCache_createActionWithFlatBuffersForSimula argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionWithFlatBuffersForSimulator"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionWithFlatBuffersForSimulator"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionWithFlatBuffersForSimulator'", nullptr); @@ -15995,8 +15995,8 @@ int lua_cocos2dx_studio_ActionTimelineCache_createAction(lua_State* tolua_S) if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createAction"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createAction"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimelineCache_createAction'", nullptr); @@ -19147,9 +19147,9 @@ int lua_cocos2dx_studio_InnerActionFrame_setAnimationName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.InnerActionFrame:setAnimationName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.InnerActionFrame:setAnimationName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_InnerActionFrame_setAnimationName'", nullptr); @@ -22120,9 +22120,9 @@ int lua_cocos2dx_studio_ActionTimeline_getAnimationInfo(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimeline:getAnimationInfo"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimeline:getAnimationInfo"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimeline_getAnimationInfo'", nullptr); @@ -22218,12 +22218,12 @@ int lua_cocos2dx_studio_ActionTimeline_addFrameEndCallFunc(lua_State* tolua_S) if (argc == 3) { int arg0; - std::string arg1; + std::string_view arg1; std::function arg2; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccs.ActionTimeline:addFrameEndCallFunc"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ActionTimeline:addFrameEndCallFunc"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ActionTimeline:addFrameEndCallFunc"); do { // Lambda binding for lua is not supported. @@ -22721,9 +22721,9 @@ int lua_cocos2dx_studio_ActionTimeline_IsAnimationInfoExists(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimeline:IsAnimationInfoExists"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ActionTimeline:IsAnimationInfoExists"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimeline_IsAnimationInfoExists'", nullptr); @@ -23016,11 +23016,11 @@ int lua_cocos2dx_studio_ActionTimeline_removeFrameEndCallFunc(lua_State* tolua_S if (argc == 2) { int arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccs.ActionTimeline:removeFrameEndCallFunc"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccs.ActionTimeline:removeFrameEndCallFunc"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccs.ActionTimeline:removeFrameEndCallFunc"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ActionTimeline_removeFrameEndCallFunc'", nullptr); @@ -23916,8 +23916,8 @@ int lua_cocos2dx_studio_BoneNode_displaySkin(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.BoneNode:displaySkin"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.BoneNode:displaySkin"); if (!ok) { break; } bool arg1; @@ -24605,9 +24605,9 @@ int lua_cocos2dx_studio_SkeletonNode_getBoneNode(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.SkeletonNode:getBoneNode"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.SkeletonNode:getBoneNode"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_SkeletonNode_getBoneNode'", nullptr); @@ -24650,8 +24650,8 @@ int lua_cocos2dx_studio_SkeletonNode_changeSkins(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.SkeletonNode:changeSkins"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.SkeletonNode:changeSkins"); if (!ok) { break; } cobj->changeSkins(arg0); @@ -24662,7 +24662,7 @@ int lua_cocos2dx_studio_SkeletonNode_changeSkins(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::map arg0; + tsl::robin_map arg0; ok &= luaval_to_std_map_string_string(tolua_S, 2, &arg0, "ccs.SkeletonNode:changeSkins"); if (!ok) { break; } @@ -24711,7 +24711,7 @@ int lua_cocos2dx_studio_SkeletonNode_addSkinGroup(lua_State* tolua_S) if (argc == 2) { std::string arg0; - std::map arg1; + tsl::robin_map arg1; ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.SkeletonNode:addSkinGroup"); @@ -24768,7 +24768,7 @@ int lua_cocos2dx_studio_SkeletonNode_getAllSubBonesMap(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_SkeletonNode_getAllSubBonesMap'", nullptr); return 0; } - const cocos2d::Map& ret = cobj->getAllSubBonesMap(); + const cocos2d::Map& ret = cobj->getAllSubBonesMap(); ccmap_string_key_to_luaval(tolua_S, ret); return 1; } @@ -25050,9 +25050,9 @@ int lua_cocos2dx_studio_ComExtensionData_setCustomProperty(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ComExtensionData:setCustomProperty"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccs.ComExtensionData:setCustomProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_ComExtensionData_setCustomProperty'", nullptr); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp index 31cef92257d5..c6176f00c078 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp @@ -559,9 +559,9 @@ int lua_cocos2dx_ui_RelativeLayoutParameter_setRelativeToWidgetName(lua_State* t argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RelativeLayoutParameter:setRelativeToWidgetName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RelativeLayoutParameter:setRelativeToWidgetName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RelativeLayoutParameter_setRelativeToWidgetName'", nullptr); @@ -614,8 +614,8 @@ int lua_cocos2dx_ui_RelativeLayoutParameter_getRelativeName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RelativeLayoutParameter_getRelativeName'", nullptr); return 0; } - const std::string& ret = cobj->getRelativeName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getRelativeName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.RelativeLayoutParameter:getRelativeName",argc, 0); @@ -661,8 +661,8 @@ int lua_cocos2dx_ui_RelativeLayoutParameter_getRelativeToWidgetName(lua_State* t tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RelativeLayoutParameter_getRelativeToWidgetName'", nullptr); return 0; } - const std::string& ret = cobj->getRelativeToWidgetName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getRelativeToWidgetName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.RelativeLayoutParameter:getRelativeToWidgetName",argc, 0); @@ -703,9 +703,9 @@ int lua_cocos2dx_ui_RelativeLayoutParameter_setRelativeName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RelativeLayoutParameter:setRelativeName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RelativeLayoutParameter:setRelativeName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RelativeLayoutParameter_setRelativeName'", nullptr); @@ -1003,8 +1003,8 @@ int lua_cocos2dx_ui_Widget_getCustomSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getCustomSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getCustomSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getCustomSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:getCustomSize",argc, 0); @@ -1142,9 +1142,9 @@ int lua_cocos2dx_ui_Widget_setCallbackName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Widget:setCallbackName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Widget:setCallbackName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_setCallbackName'", nullptr); @@ -1488,8 +1488,8 @@ int lua_cocos2dx_ui_Widget_getLayoutSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getLayoutSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getLayoutSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getLayoutSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:getLayoutSize",argc, 0); @@ -1682,8 +1682,8 @@ int lua_cocos2dx_ui_Widget_getVirtualRendererSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getVirtualRendererSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getVirtualRendererSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getVirtualRendererSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:getVirtualRendererSize",argc, 0); @@ -2208,8 +2208,8 @@ int lua_cocos2dx_ui_Widget_getCallbackName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getCallbackName'", nullptr); return 0; } - const std::string& ret = cobj->getCallbackName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getCallbackName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:getCallbackName",argc, 0); @@ -3274,8 +3274,8 @@ int lua_cocos2dx_ui_Widget_updateSizeAndPosition(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.Widget:updateSizeAndPosition"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.Widget:updateSizeAndPosition"); if (!ok) { break; } cobj->updateSizeAndPosition(arg0); @@ -3482,8 +3482,8 @@ int lua_cocos2dx_ui_Widget_getCallbackType(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_getCallbackType'", nullptr); return 0; } - const std::string& ret = cobj->getCallbackType(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getCallbackType(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:getCallbackType",argc, 0); @@ -3974,9 +3974,9 @@ int lua_cocos2dx_ui_Widget_setCallbackType(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Widget:setCallbackType"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Widget:setCallbackType"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Widget_setCallbackType'", nullptr); @@ -4929,9 +4929,9 @@ int lua_cocos2dx_ui_Layout_setBackGroundImage(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Layout:setBackGroundImage"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Layout:setBackGroundImage"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Layout_setBackGroundImage'", nullptr); @@ -4943,10 +4943,10 @@ int lua_cocos2dx_ui_Layout_setBackGroundImage(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Layout:setBackGroundImage"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Layout:setBackGroundImage"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Layout:setBackGroundImage"); if(!ok) @@ -5633,8 +5633,8 @@ int lua_cocos2dx_ui_Layout_getBackGroundImageTextureSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Layout_getBackGroundImageTextureSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getBackGroundImageTextureSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getBackGroundImageTextureSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Layout:getBackGroundImageTextureSize",argc, 0); @@ -6132,8 +6132,8 @@ int lua_cocos2dx_ui_Button_getNormalTextureSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_getNormalTextureSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getNormalTextureSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getNormalTextureSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Button:getNormalTextureSize",argc, 0); @@ -6179,8 +6179,8 @@ int lua_cocos2dx_ui_Button_getTitleText(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_getTitleText'", nullptr); return 0; } - std::string ret = cobj->getTitleText(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTitleText(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Button:getTitleText",argc, 0); @@ -6991,9 +6991,9 @@ int lua_cocos2dx_ui_Button_loadTextureDisabled(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextureDisabled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_loadTextureDisabled'", nullptr); @@ -7005,10 +7005,10 @@ int lua_cocos2dx_ui_Button_loadTextureDisabled(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextureDisabled"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Button:loadTextureDisabled"); if(!ok) @@ -7058,9 +7058,9 @@ int lua_cocos2dx_ui_Button_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_init'", nullptr); @@ -7072,12 +7072,12 @@ int lua_cocos2dx_ui_Button_init(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_init'", nullptr); @@ -7089,15 +7089,15 @@ int lua_cocos2dx_ui_Button_init(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:init"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_init'", nullptr); @@ -7109,16 +7109,16 @@ int lua_cocos2dx_ui_Button_init(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; cocos2d::ui::Widget::TextureResType arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:init"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:init"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:init"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.Button:init"); if(!ok) @@ -7168,9 +7168,9 @@ int lua_cocos2dx_ui_Button_setTitleText(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:setTitleText"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:setTitleText"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_setTitleText'", nullptr); @@ -7268,9 +7268,9 @@ int lua_cocos2dx_ui_Button_loadTexturePressed(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTexturePressed"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_loadTexturePressed'", nullptr); @@ -7282,10 +7282,10 @@ int lua_cocos2dx_ui_Button_loadTexturePressed(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTexturePressed"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Button:loadTexturePressed"); if(!ok) @@ -7335,9 +7335,9 @@ int lua_cocos2dx_ui_Button_setTitleFontName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:setTitleFontName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:setTitleFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_setTitleFontName'", nullptr); @@ -7538,12 +7538,12 @@ int lua_cocos2dx_ui_Button_loadTextures(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_loadTextures'", nullptr); @@ -7555,15 +7555,15 @@ int lua_cocos2dx_ui_Button_loadTextures(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:loadTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_loadTextures'", nullptr); @@ -7575,16 +7575,16 @@ int lua_cocos2dx_ui_Button_loadTextures(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; cocos2d::ui::Widget::TextureResType arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:loadTextures"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.Button:loadTextures"); if(!ok) @@ -7681,9 +7681,9 @@ int lua_cocos2dx_ui_Button_loadTextureNormal(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextureNormal"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_loadTextureNormal'", nullptr); @@ -7695,10 +7695,10 @@ int lua_cocos2dx_ui_Button_loadTextureNormal(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:loadTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:loadTextureNormal"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Button:loadTextureNormal"); if(!ok) @@ -7991,8 +7991,8 @@ int lua_cocos2dx_ui_Button_getTitleFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Button_getTitleFontName'", nullptr); return 0; } - std::string ret = cobj->getTitleFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTitleFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Button:getTitleFontName",argc, 0); @@ -8170,8 +8170,8 @@ int lua_cocos2dx_ui_Button_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:create"); if (!ok) { break; } cocos2d::ui::Button* ret = cocos2d::ui::Button::create(arg0); object_to_luaval(tolua_S, "ccui.Button",(cocos2d::ui::Button*)ret); @@ -8183,11 +8183,11 @@ int lua_cocos2dx_ui_Button_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:create"); if (!ok) { break; } cocos2d::ui::Button* ret = cocos2d::ui::Button::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.Button",(cocos2d::ui::Button*)ret); @@ -8199,14 +8199,14 @@ int lua_cocos2dx_ui_Button_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:create"); if (!ok) { break; } cocos2d::ui::Button* ret = cocos2d::ui::Button::create(arg0, arg1, arg2); object_to_luaval(tolua_S, "ccui.Button",(cocos2d::ui::Button*)ret); @@ -8218,14 +8218,14 @@ int lua_cocos2dx_ui_Button_create(lua_State* tolua_S) { if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Button:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Button:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Button:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Button:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Button:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Button:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg3; ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.Button:create"); @@ -8508,9 +8508,9 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundSelected(lua_State* argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundSelected"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundSelected"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundSelected'", nullptr); @@ -8522,10 +8522,10 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundSelected(lua_State* } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundSelected"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundSelected"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.AbstractCheckButton:loadTextureBackGroundSelected"); if(!ok) @@ -8575,9 +8575,9 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundDisabled(lua_State* argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundDisabled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundDisabled'", nullptr); @@ -8589,10 +8589,10 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGroundDisabled(lua_State* } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGroundDisabled"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.AbstractCheckButton:loadTextureBackGroundDisabled"); if(!ok) @@ -8880,9 +8880,9 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCross(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCross"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCross"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCross'", nullptr); @@ -8894,10 +8894,10 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCross(lua_State* tolua_S } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCross"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCross"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.AbstractCheckButton:loadTextureFrontCross"); if(!ok) @@ -9041,21 +9041,21 @@ int lua_cocos2dx_ui_AbstractCheckButton_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 5) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_init'", nullptr); @@ -9067,22 +9067,22 @@ int lua_cocos2dx_ui_AbstractCheckButton_init(lua_State* tolua_S) } if (argc == 6) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; cocos2d::ui::Widget::TextureResType arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:init"); ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.AbstractCheckButton:init"); if(!ok) @@ -9179,21 +9179,21 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextures(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 5) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:loadTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextures'", nullptr); @@ -9205,22 +9205,22 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextures(lua_State* tolua_S) } if (argc == 6) { - std::string arg0; - std::string arg1; - std::string arg2; - std::string arg3; - std::string arg4; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; + std::string_view arg4; cocos2d::ui::Widget::TextureResType arg5; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.AbstractCheckButton:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.AbstractCheckButton:loadTextures"); ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.AbstractCheckButton:loadTextures"); if(!ok) @@ -9411,9 +9411,9 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGround(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGround"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGround"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGround'", nullptr); @@ -9425,10 +9425,10 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureBackGround(lua_State* tolua_S } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGround"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureBackGround"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.AbstractCheckButton:loadTextureBackGround"); if(!ok) @@ -9528,9 +9528,9 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCrossDisabled(lua_State* argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCrossDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCrossDisabled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCrossDisabled'", nullptr); @@ -9542,10 +9542,10 @@ int lua_cocos2dx_ui_AbstractCheckButton_loadTextureFrontCrossDisabled(lua_State* } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCrossDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.AbstractCheckButton:loadTextureFrontCrossDisabled"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.AbstractCheckButton:loadTextureFrontCrossDisabled"); if(!ok) @@ -9679,20 +9679,20 @@ int lua_cocos2dx_ui_CheckBox_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.CheckBox:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.CheckBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.CheckBox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.CheckBox:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.CheckBox:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.CheckBox:create"); if (!ok) { break; } cocos2d::ui::CheckBox* ret = cocos2d::ui::CheckBox::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "ccui.CheckBox",(cocos2d::ui::CheckBox*)ret); @@ -9704,20 +9704,20 @@ int lua_cocos2dx_ui_CheckBox_create(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.CheckBox:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.CheckBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.CheckBox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.CheckBox:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.CheckBox:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.CheckBox:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg5; ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.CheckBox:create"); @@ -9742,11 +9742,11 @@ int lua_cocos2dx_ui_CheckBox_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.CheckBox:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.CheckBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.CheckBox:create"); if (!ok) { break; } cocos2d::ui::CheckBox* ret = cocos2d::ui::CheckBox::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.CheckBox",(cocos2d::ui::CheckBox*)ret); @@ -9758,11 +9758,11 @@ int lua_cocos2dx_ui_CheckBox_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.CheckBox:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.CheckBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.CheckBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.CheckBox:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.CheckBox:create"); @@ -9947,20 +9947,20 @@ int lua_cocos2dx_ui_RadioButton_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RadioButton:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.RadioButton:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.RadioButton:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RadioButton:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RadioButton:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RadioButton:create"); if (!ok) { break; } cocos2d::ui::RadioButton* ret = cocos2d::ui::RadioButton::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "ccui.RadioButton",(cocos2d::ui::RadioButton*)ret); @@ -9972,20 +9972,20 @@ int lua_cocos2dx_ui_RadioButton_create(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RadioButton:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.RadioButton:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.RadioButton:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RadioButton:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RadioButton:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RadioButton:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg5; ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.RadioButton:create"); @@ -10010,11 +10010,11 @@ int lua_cocos2dx_ui_RadioButton_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RadioButton:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.RadioButton:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.RadioButton:create"); if (!ok) { break; } cocos2d::ui::RadioButton* ret = cocos2d::ui::RadioButton::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.RadioButton",(cocos2d::ui::RadioButton*)ret); @@ -10026,11 +10026,11 @@ int lua_cocos2dx_ui_RadioButton_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RadioButton:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RadioButton:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.RadioButton:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.RadioButton:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.RadioButton:create"); @@ -10873,9 +10873,9 @@ int lua_cocos2dx_ui_ImageView_loadTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:loadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:loadTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_ImageView_loadTexture'", nullptr); @@ -10887,10 +10887,10 @@ int lua_cocos2dx_ui_ImageView_loadTexture(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:loadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:loadTexture"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.ImageView:loadTexture"); if(!ok) @@ -10990,9 +10990,9 @@ int lua_cocos2dx_ui_ImageView_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_ImageView_init'", nullptr); @@ -11004,10 +11004,10 @@ int lua_cocos2dx_ui_ImageView_init(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:init"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.ImageView:init"); if(!ok) @@ -11338,8 +11338,8 @@ int lua_cocos2dx_ui_ImageView_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:create"); if (!ok) { break; } cocos2d::ui::ImageView* ret = cocos2d::ui::ImageView::create(arg0); object_to_luaval(tolua_S, "ccui.ImageView",(cocos2d::ui::ImageView*)ret); @@ -11351,8 +11351,8 @@ int lua_cocos2dx_ui_ImageView_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.ImageView:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.ImageView:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg1; ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.ImageView:create"); @@ -11538,11 +11538,11 @@ int lua_cocos2dx_ui_Text_enableShadow(lua_State* tolua_S) if (argc == 2) { cocos2d::Color4B arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &=luaval_to_color4b(tolua_S, 2, &arg0, "ccui.Text:enableShadow"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "ccui.Text:enableShadow"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccui.Text:enableShadow"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_enableShadow'", nullptr); @@ -11555,12 +11555,12 @@ int lua_cocos2dx_ui_Text_enableShadow(lua_State* tolua_S) if (argc == 3) { cocos2d::Color4B arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; int arg2; ok &=luaval_to_color4b(tolua_S, 2, &arg0, "ccui.Text:enableShadow"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "ccui.Text:enableShadow"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccui.Text:enableShadow"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.Text:enableShadow"); if(!ok) @@ -11662,8 +11662,8 @@ int lua_cocos2dx_ui_Text_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Text:getString",argc, 0); @@ -11946,9 +11946,9 @@ int lua_cocos2dx_ui_Text_setFontName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Text:setFontName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Text:setFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_setFontName'", nullptr); @@ -12051,8 +12051,8 @@ int lua_cocos2dx_ui_Text_getShadowOffset(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_getShadowOffset'", nullptr); return 0; } - cocos2d::Size ret = cobj->getShadowOffset(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getShadowOffset(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Text:getShadowOffset",argc, 0); @@ -12093,9 +12093,9 @@ int lua_cocos2dx_ui_Text_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Text:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Text:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_setString'", nullptr); @@ -12190,13 +12190,13 @@ int lua_cocos2dx_ui_Text_init(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 3) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; double arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Text:init"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Text:init"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Text:init"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Text:init"); ok &= luaval_to_number(tolua_S, 4,&arg2, "ccui.Text:init"); if(!ok) @@ -12345,8 +12345,8 @@ int lua_cocos2dx_ui_Text_getFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_getFontName'", nullptr); return 0; } - const std::string& ret = cobj->getFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Text:getFontName",argc, 0); @@ -12387,9 +12387,9 @@ int lua_cocos2dx_ui_Text_setTextAreaSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.Text:setTextAreaSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.Text:setTextAreaSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_setTextAreaSize'", nullptr); @@ -12489,8 +12489,8 @@ int lua_cocos2dx_ui_Text_getAutoRenderSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_getAutoRenderSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getAutoRenderSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getAutoRenderSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Text:getAutoRenderSize",argc, 0); @@ -13135,8 +13135,8 @@ int lua_cocos2dx_ui_Text_getTextAreaSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Text_getTextAreaSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getTextAreaSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getTextAreaSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Text:getTextAreaSize",argc, 0); @@ -13217,11 +13217,11 @@ int lua_cocos2dx_ui_Text_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Text:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Text:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Text:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Text:create"); if (!ok) { break; } double arg2; ok &= luaval_to_number(tolua_S, 4,&arg2, "ccui.Text:create"); @@ -13457,8 +13457,8 @@ int lua_cocos2dx_ui_TextAtlas_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextAtlas_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextAtlas:getString",argc, 0); @@ -13499,9 +13499,9 @@ int lua_cocos2dx_ui_TextAtlas_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextAtlas:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextAtlas:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextAtlas_setString'", nullptr); @@ -13596,21 +13596,21 @@ int lua_cocos2dx_ui_TextAtlas_setProperty(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 5) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; int arg2; int arg3; - std::string arg4; + std::string_view arg4; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextAtlas:setProperty"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextAtlas:setProperty"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TextAtlas:setProperty"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TextAtlas:setProperty"); ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.TextAtlas:setProperty"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.TextAtlas:setProperty"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.TextAtlas:setProperty"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.TextAtlas:setProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextAtlas_setProperty'", nullptr); @@ -13695,11 +13695,11 @@ int lua_cocos2dx_ui_TextAtlas_create(lua_State* tolua_S) { if (argc == 5) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextAtlas:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextAtlas:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TextAtlas:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TextAtlas:create"); if (!ok) { break; } int arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.TextAtlas:create"); @@ -13707,8 +13707,8 @@ int lua_cocos2dx_ui_TextAtlas_create(lua_State* tolua_S) int arg3; ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.TextAtlas:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.TextAtlas:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.TextAtlas:create"); if (!ok) { break; } cocos2d::ui::TextAtlas* ret = cocos2d::ui::TextAtlas::create(arg0, arg1, arg2, arg3, arg4); object_to_luaval(tolua_S, "ccui.TextAtlas",(cocos2d::ui::TextAtlas*)ret); @@ -13911,9 +13911,9 @@ int lua_cocos2dx_ui_LoadingBar_loadTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:loadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:loadTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_LoadingBar_loadTexture'", nullptr); @@ -13925,10 +13925,10 @@ int lua_cocos2dx_ui_LoadingBar_loadTexture(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:loadTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:loadTexture"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.LoadingBar:loadTexture"); if(!ok) @@ -14353,8 +14353,8 @@ int lua_cocos2dx_ui_LoadingBar_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); if (!ok) { break; } cocos2d::ui::LoadingBar* ret = cocos2d::ui::LoadingBar::create(arg0); object_to_luaval(tolua_S, "ccui.LoadingBar",(cocos2d::ui::LoadingBar*)ret); @@ -14366,8 +14366,8 @@ int lua_cocos2dx_ui_LoadingBar_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); if (!ok) { break; } double arg1; ok &= luaval_to_number(tolua_S, 3,&arg1, "ccui.LoadingBar:create"); @@ -14392,8 +14392,8 @@ int lua_cocos2dx_ui_LoadingBar_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg1; ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.LoadingBar:create"); @@ -14408,8 +14408,8 @@ int lua_cocos2dx_ui_LoadingBar_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.LoadingBar:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg1; ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.LoadingBar:create"); @@ -15418,9 +15418,9 @@ int lua_cocos2dx_ui_ScrollView_setInnerContainerSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.ScrollView:setInnerContainerSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.ScrollView:setInnerContainerSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_ScrollView_setInnerContainerSize'", nullptr); @@ -17473,8 +17473,8 @@ int lua_cocos2dx_ui_ScrollView_getInnerContainerSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_ScrollView_getInnerContainerSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getInnerContainerSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getInnerContainerSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.ScrollView:getInnerContainerSize",argc, 0); @@ -20115,9 +20115,9 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextureNormal(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureNormal"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTextureNormal'", nullptr); @@ -20129,10 +20129,10 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextureNormal(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureNormal"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Slider:loadSlidBallTextureNormal"); if(!ok) @@ -20182,9 +20182,9 @@ int lua_cocos2dx_ui_Slider_loadProgressBarTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadProgressBarTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadProgressBarTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadProgressBarTexture'", nullptr); @@ -20196,10 +20196,10 @@ int lua_cocos2dx_ui_Slider_loadProgressBarTexture(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadProgressBarTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadProgressBarTexture"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Slider:loadProgressBarTexture"); if(!ok) @@ -20537,9 +20537,9 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextures(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTextures'", nullptr); @@ -20551,12 +20551,12 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextures(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTextures'", nullptr); @@ -20568,15 +20568,15 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextures(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Slider:loadSlidBallTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTextures'", nullptr); @@ -20588,16 +20588,16 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextures(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; cocos2d::ui::Widget::TextureResType arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Slider:loadSlidBallTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.Slider:loadSlidBallTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.Slider:loadSlidBallTextures"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.Slider:loadSlidBallTextures"); if(!ok) @@ -20798,9 +20798,9 @@ int lua_cocos2dx_ui_Slider_loadBarTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadBarTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadBarTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadBarTexture'", nullptr); @@ -20812,10 +20812,10 @@ int lua_cocos2dx_ui_Slider_loadBarTexture(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadBarTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadBarTexture"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Slider:loadBarTexture"); if(!ok) @@ -21100,9 +21100,9 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTexturePressed(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTexturePressed"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTexturePressed'", nullptr); @@ -21114,10 +21114,10 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTexturePressed(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTexturePressed"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Slider:loadSlidBallTexturePressed"); if(!ok) @@ -21455,9 +21455,9 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextureDisabled(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureDisabled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Slider_loadSlidBallTextureDisabled'", nullptr); @@ -21469,10 +21469,10 @@ int lua_cocos2dx_ui_Slider_loadSlidBallTextureDisabled(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:loadSlidBallTextureDisabled"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.Slider:loadSlidBallTextureDisabled"); if(!ok) @@ -21609,11 +21609,11 @@ int lua_cocos2dx_ui_Slider_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Slider:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Slider:create"); if (!ok) { break; } cocos2d::ui::Slider* ret = cocos2d::ui::Slider::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.Slider",(cocos2d::ui::Slider*)ret); @@ -21625,11 +21625,11 @@ int lua_cocos2dx_ui_Slider_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Slider:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Slider:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Slider:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Slider:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.Slider:create"); @@ -21911,8 +21911,8 @@ int lua_cocos2dx_ui_TextField_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextField:getString",argc, 0); @@ -22102,8 +22102,8 @@ int lua_cocos2dx_ui_TextField_getPlaceHolder(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_getPlaceHolder'", nullptr); return 0; } - const std::string& ret = cobj->getPlaceHolder(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getPlaceHolder(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextField:getPlaceHolder",argc, 0); @@ -22191,9 +22191,9 @@ int lua_cocos2dx_ui_TextField_setFontName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextField:setFontName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextField:setFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_setFontName'", nullptr); @@ -22338,9 +22338,9 @@ int lua_cocos2dx_ui_TextField_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextField:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextField:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_setString'", nullptr); @@ -22591,8 +22591,8 @@ int lua_cocos2dx_ui_TextField_getFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_getFontName'", nullptr); return 0; } - const std::string& ret = cobj->getFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextField:getFontName",argc, 0); @@ -22633,9 +22633,9 @@ int lua_cocos2dx_ui_TextField_setTextAreaSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.TextField:setTextAreaSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.TextField:setTextAreaSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_setTextAreaSize'", nullptr); @@ -22782,8 +22782,8 @@ int lua_cocos2dx_ui_TextField_getAutoRenderSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_getAutoRenderSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getAutoRenderSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getAutoRenderSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextField:getAutoRenderSize",argc, 0); @@ -23262,9 +23262,9 @@ int lua_cocos2dx_ui_TextField_setPlaceHolder(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextField:setPlaceHolder"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextField:setPlaceHolder"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_setPlaceHolder'", nullptr); @@ -23911,9 +23911,9 @@ int lua_cocos2dx_ui_TextField_setTouchSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.TextField:setTouchSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.TextField:setTouchSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_setTouchSize'", nullptr); @@ -23966,8 +23966,8 @@ int lua_cocos2dx_ui_TextField_getTouchSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextField_getTouchSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getTouchSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getTouchSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextField:getTouchSize",argc, 0); @@ -23998,11 +23998,11 @@ int lua_cocos2dx_ui_TextField_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextField:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextField:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TextField:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TextField:create"); if (!ok) { break; } int arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.TextField:create"); @@ -24249,8 +24249,8 @@ int lua_cocos2dx_ui_TextBMFont_getString(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextBMFont_getString'", nullptr); return 0; } - const std::string& ret = cobj->getString(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getString(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TextBMFont:getString",argc, 0); @@ -24291,9 +24291,9 @@ int lua_cocos2dx_ui_TextBMFont_setString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextBMFont:setString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextBMFont:setString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextBMFont_setString'", nullptr); @@ -24388,9 +24388,9 @@ int lua_cocos2dx_ui_TextBMFont_setFntFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextBMFont:setFntFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextBMFont:setFntFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TextBMFont_setFntFile'", nullptr); @@ -24475,11 +24475,11 @@ int lua_cocos2dx_ui_TextBMFont_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TextBMFont:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TextBMFont:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TextBMFont:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TextBMFont:create"); if (!ok) { break; } cocos2d::ui::TextBMFont* ret = cocos2d::ui::TextBMFont::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.TextBMFont",(cocos2d::ui::TextBMFont*)ret); @@ -25880,9 +25880,9 @@ int lua_cocos2dx_ui_PageView_setIndicatorIndexNodesTexture(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.PageView:setIndicatorIndexNodesTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.PageView:setIndicatorIndexNodesTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_PageView_setIndicatorIndexNodesTexture'", nullptr); @@ -25894,10 +25894,10 @@ int lua_cocos2dx_ui_PageView_setIndicatorIndexNodesTexture(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.PageView:setIndicatorIndexNodesTexture"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.PageView:setIndicatorIndexNodesTexture"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.PageView:setIndicatorIndexNodesTexture"); if(!ok) @@ -26287,10 +26287,10 @@ int lua_cocos2dx_ui_Helper_getSubStringOfUTF8String(lua_State* tolua_S) if (argc == 3) { - std::string arg0; + std::string_view arg0; unsigned int arg1; unsigned int arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Helper:getSubStringOfUTF8String"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Helper:getSubStringOfUTF8String"); ok &= luaval_to_uint32(tolua_S, 3,&arg1, "ccui.Helper:getSubStringOfUTF8String"); ok &= luaval_to_uint32(tolua_S, 4,&arg2, "ccui.Helper:getSubStringOfUTF8String"); if(!ok) @@ -26438,9 +26438,9 @@ int lua_cocos2dx_ui_Helper_seekWidgetByName(lua_State* tolua_S) if (argc == 2) { cocos2d::ui::Widget* arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_object(tolua_S, 2, "ccui.Widget",&arg0, "ccui.Helper:seekWidgetByName"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Helper:seekWidgetByName"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Helper:seekWidgetByName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Helper_seekWidgetByName'", nullptr); @@ -26514,9 +26514,9 @@ int lua_cocos2dx_ui_Helper_restrictCapInsetRect(lua_State* tolua_S) if (argc == 2) { cocos2d::Rect arg0; - cocos2d::Size arg1; + cocos2d::Vec2 arg1; ok &= luaval_to_rect(tolua_S, 2, &arg0, "ccui.Helper:restrictCapInsetRect"); - ok &= luaval_to_size(tolua_S, 3, &arg1, "ccui.Helper:restrictCapInsetRect"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccui.Helper:restrictCapInsetRect"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Helper_restrictCapInsetRect'", nullptr); @@ -26844,11 +26844,11 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:init"); @@ -26856,15 +26856,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementText_init'", nullptr); @@ -26879,11 +26879,11 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:init"); @@ -26892,15 +26892,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); if(!ok) @@ -26917,11 +26917,11 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; @@ -26931,15 +26931,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); @@ -26958,11 +26958,11 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; @@ -26973,15 +26973,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); @@ -27002,15 +27002,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:init"); @@ -27018,15 +27018,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); @@ -27034,7 +27034,7 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:init"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:init"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementText_init'", nullptr); @@ -27049,15 +27049,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; int arg12; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:init"); @@ -27066,15 +27066,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); @@ -27082,7 +27082,7 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:init"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:init"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:init"); ok &= luaval_to_int32(tolua_S, 14,(int *)&arg12, "ccui.RichElementText:init"); if(!ok) @@ -27099,15 +27099,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; int arg12; cocos2d::Color3B arg13; @@ -27117,15 +27117,15 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:init"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:init"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:init"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:init"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:init"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:init"); @@ -27133,7 +27133,7 @@ int lua_cocos2dx_ui_RichElementText_init(lua_State* tolua_S) ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:init"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:init"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:init"); ok &= luaval_to_int32(tolua_S, 14,(int *)&arg12, "ccui.RichElementText:init"); @@ -27177,14 +27177,14 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); if(!ok) { @@ -27200,15 +27200,15 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); if(!ok) @@ -27225,19 +27225,19 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementText_create'", nullptr); @@ -27252,20 +27252,20 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); if(!ok) { @@ -27281,21 +27281,21 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 11,(int *)&arg9, "ccui.RichElementText:create"); if(!ok) @@ -27312,22 +27312,22 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 11,(int *)&arg9, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:create"); @@ -27345,27 +27345,27 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 11,(int *)&arg9, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:create"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:create"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementText_create'", nullptr); @@ -27380,28 +27380,28 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; int arg12; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 11,(int *)&arg9, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:create"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:create"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 14,(int *)&arg12, "ccui.RichElementText:create"); if(!ok) { @@ -27417,29 +27417,29 @@ int lua_cocos2dx_ui_RichElementText_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; double arg5; unsigned int arg6; - std::string arg7; + std::string_view arg7; cocos2d::Color3B arg8; int arg9; cocos2d::Color3B arg10; - cocos2d::Size arg11; + cocos2d::Vec2 arg11; int arg12; cocos2d::Color3B arg13; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementText:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementText:create"); ok &= luaval_to_number(tolua_S, 7,&arg5, "ccui.RichElementText:create"); ok &= luaval_to_uint32(tolua_S, 8,&arg6, "ccui.RichElementText:create"); - ok &= luaval_to_std_string(tolua_S, 9,&arg7, "ccui.RichElementText:create"); + ok &= luaval_to_std_string_view(tolua_S, 9,&arg7, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 10, &arg8, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 11,(int *)&arg9, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 12, &arg10, "ccui.RichElementText:create"); - ok &= luaval_to_size(tolua_S, 13, &arg11, "ccui.RichElementText:create"); + ok &= luaval_to_vec2(tolua_S, 13, &arg11, "ccui.RichElementText:create"); ok &= luaval_to_int32(tolua_S, 14,(int *)&arg12, "ccui.RichElementText:create"); ok &= luaval_to_color3b(tolua_S, 15, &arg13, "ccui.RichElementText:create"); if(!ok) @@ -27599,7 +27599,7 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; + std::string_view arg3; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:init"); @@ -27607,7 +27607,7 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementImage_init'", nullptr); @@ -27622,8 +27622,8 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:init"); @@ -27631,9 +27631,9 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementImage:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementImage:init"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementImage_init'", nullptr); @@ -27648,8 +27648,8 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; cocos2d::ui::Widget::TextureResType arg5; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:init"); @@ -27658,9 +27658,9 @@ int lua_cocos2dx_ui_RichElementImage_init(lua_State* tolua_S) ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:init"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:init"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementImage:init"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementImage:init"); ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.RichElementImage:init"); if(!ok) @@ -27760,9 +27760,9 @@ int lua_cocos2dx_ui_RichElementImage_setUrl(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichElementImage:setUrl"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichElementImage:setUrl"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementImage_setUrl'", nullptr); @@ -27802,11 +27802,11 @@ int lua_cocos2dx_ui_RichElementImage_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; + std::string_view arg3; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementImage:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementImage_create'", nullptr); @@ -27821,13 +27821,13 @@ int lua_cocos2dx_ui_RichElementImage_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementImage:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementImage:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementImage:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichElementImage_create'", nullptr); @@ -27842,14 +27842,14 @@ int lua_cocos2dx_ui_RichElementImage_create(lua_State* tolua_S) int arg0; cocos2d::Color3B arg1; uint16_t arg2; - std::string arg3; - std::string arg4; + std::string_view arg3; + std::string_view arg4; cocos2d::ui::Widget::TextureResType arg5; ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccui.RichElementImage:create"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichElementImage:create"); ok &= luaval_to_uint16(tolua_S, 4,&arg2, "ccui.RichElementImage:create"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.RichElementImage:create"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.RichElementImage:create"); + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.RichElementImage:create"); ok &= luaval_to_int32(tolua_S, 7,(int *)&arg5, "ccui.RichElementImage:create"); if(!ok) { @@ -28630,13 +28630,13 @@ int lua_cocos2dx_ui_RichText_setAnchorTextShadow(lua_State* tolua_S) { bool arg0; cocos2d::Color3B arg1; - cocos2d::Size arg2; + cocos2d::Vec2 arg2; ok &= luaval_to_boolean(tolua_S, 2,&arg0, "ccui.RichText:setAnchorTextShadow"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichText:setAnchorTextShadow"); - ok &= luaval_to_size(tolua_S, 4, &arg2, "ccui.RichText:setAnchorTextShadow"); + ok &= luaval_to_vec2(tolua_S, 4, &arg2, "ccui.RichText:setAnchorTextShadow"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_setAnchorTextShadow'", nullptr); @@ -28650,14 +28650,14 @@ int lua_cocos2dx_ui_RichText_setAnchorTextShadow(lua_State* tolua_S) { bool arg0; cocos2d::Color3B arg1; - cocos2d::Size arg2; + cocos2d::Vec2 arg2; int arg3; ok &= luaval_to_boolean(tolua_S, 2,&arg0, "ccui.RichText:setAnchorTextShadow"); ok &= luaval_to_color3b(tolua_S, 3, &arg1, "ccui.RichText:setAnchorTextShadow"); - ok &= luaval_to_size(tolua_S, 4, &arg2, "ccui.RichText:setAnchorTextShadow"); + ok &= luaval_to_vec2(tolua_S, 4, &arg2, "ccui.RichText:setAnchorTextShadow"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.RichText:setAnchorTextShadow"); if(!ok) @@ -28754,9 +28754,9 @@ int lua_cocos2dx_ui_RichText_setAnchorFontColor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:setAnchorFontColor"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:setAnchorFontColor"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_setAnchorFontColor'", nullptr); @@ -28804,9 +28804,9 @@ int lua_cocos2dx_ui_RichText_setFontFace(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:setFontFace"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:setFontFace"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_setFontFace'", nullptr); @@ -29165,10 +29165,10 @@ int lua_cocos2dx_ui_RichText_initWithXML(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ValueMap arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:initWithXML"); ok &= luaval_to_ccvaluemap(tolua_S, 3, &arg1, "ccui.RichText:initWithXML"); if(!ok) @@ -29182,11 +29182,11 @@ int lua_cocos2dx_ui_RichText_initWithXML(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocos2d::ValueMap arg1; - std::function arg2; + std::function arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:initWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:initWithXML"); ok &= luaval_to_ccvaluemap(tolua_S, 3, &arg1, "ccui.RichText:initWithXML"); @@ -29383,9 +29383,9 @@ int lua_cocos2dx_ui_RichText_openUrl(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:openUrl"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:openUrl"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_openUrl'", nullptr); @@ -29480,9 +29480,9 @@ int lua_cocos2dx_ui_RichText_setFontColor(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:setFontColor"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:setFontColor"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_setFontColor'", nullptr); @@ -30169,8 +30169,8 @@ int lua_cocos2dx_ui_RichText_getAnchorTextShadowOffset(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_getAnchorTextShadowOffset'", nullptr); return 0; } - cocos2d::Size ret = cobj->getAnchorTextShadowOffset(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getAnchorTextShadowOffset(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.RichText:getAnchorTextShadowOffset",argc, 0); @@ -30546,9 +30546,9 @@ int lua_cocos2dx_ui_RichText_color3BWithString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:color3BWithString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:color3BWithString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RichText_color3BWithString'", nullptr); @@ -30619,9 +30619,9 @@ int lua_cocos2dx_ui_RichText_createWithXML(lua_State* tolua_S) if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ValueMap arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:createWithXML"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:createWithXML"); ok &= luaval_to_ccvaluemap(tolua_S, 3, &arg1, "ccui.RichText:createWithXML"); if(!ok) { @@ -30634,10 +30634,10 @@ int lua_cocos2dx_ui_RichText_createWithXML(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; + std::string_view arg0; cocos2d::ValueMap arg1; - std::function arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.RichText:createWithXML"); + std::function arg2; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.RichText:createWithXML"); ok &= luaval_to_ccvaluemap(tolua_S, 3, &arg1, "ccui.RichText:createWithXML"); do { // Lambda binding for lua is not supported. @@ -30794,9 +30794,9 @@ int lua_cocos2dx_ui_HBox_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.HBox:initWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.HBox:initWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_HBox_initWithSize'", nullptr); @@ -30834,8 +30834,8 @@ int lua_cocos2dx_ui_HBox_create(lua_State* tolua_S) { if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.HBox:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.HBox:create"); if (!ok) { break; } cocos2d::ui::HBox* ret = cocos2d::ui::HBox::create(arg0); object_to_luaval(tolua_S, "ccui.HBox",(cocos2d::ui::HBox*)ret); @@ -30948,9 +30948,9 @@ int lua_cocos2dx_ui_VBox_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.VBox:initWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.VBox:initWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_VBox_initWithSize'", nullptr); @@ -30988,8 +30988,8 @@ int lua_cocos2dx_ui_VBox_create(lua_State* tolua_S) { if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.VBox:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.VBox:create"); if (!ok) { break; } cocos2d::ui::VBox* ret = cocos2d::ui::VBox::create(arg0); object_to_luaval(tolua_S, "ccui.VBox",(cocos2d::ui::VBox*)ret); @@ -31102,9 +31102,9 @@ int lua_cocos2dx_ui_RelativeBox_initWithSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.RelativeBox:initWithSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.RelativeBox:initWithSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_RelativeBox_initWithSize'", nullptr); @@ -31142,8 +31142,8 @@ int lua_cocos2dx_ui_RelativeBox_create(lua_State* tolua_S) { if (argc == 1) { - cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.RelativeBox:create"); + cocos2d::Vec2 arg0; + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.RelativeBox:create"); if (!ok) { break; } cocos2d::ui::RelativeBox* ret = cocos2d::ui::RelativeBox::create(arg0); object_to_luaval(tolua_S, "ccui.RelativeBox",(cocos2d::ui::RelativeBox*)ret); @@ -31267,8 +31267,8 @@ int lua_cocos2dx_ui_Scale9Sprite_updateWithSprite(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 5, &arg3, "ccui.Scale9Sprite:updateWithSprite"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "ccui.Scale9Sprite:updateWithSprite"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "ccui.Scale9Sprite:updateWithSprite"); if (!ok) { break; } cocos2d::Rect arg5; @@ -31540,10 +31540,10 @@ int lua_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::Rect arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:initWithSpriteFrameName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:initWithSpriteFrameName"); ok &= luaval_to_rect(tolua_S, 3, &arg1, "ccui.Scale9Sprite:initWithSpriteFrameName"); if(!ok) @@ -31795,8 +31795,8 @@ int lua_cocos2dx_ui_Scale9Sprite_init(lua_State* tolua_S) ok &= luaval_to_vec2(tolua_S, 5, &arg3, "ccui.Scale9Sprite:init"); if (!ok) { break; } - cocos2d::Size arg4; - ok &= luaval_to_size(tolua_S, 6, &arg4, "ccui.Scale9Sprite:init"); + cocos2d::Vec2 arg4; + ok &= luaval_to_vec2(tolua_S, 6, &arg4, "ccui.Scale9Sprite:init"); if (!ok) { break; } cocos2d::Rect arg5; @@ -31847,9 +31847,9 @@ int lua_cocos2dx_ui_Scale9Sprite_setPreferredSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.Scale9Sprite:setPreferredSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.Scale9Sprite:setPreferredSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Scale9Sprite_setPreferredSize'", nullptr); @@ -32337,8 +32337,8 @@ int lua_cocos2dx_ui_Scale9Sprite_getOriginalSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Scale9Sprite_getOriginalSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getOriginalSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getOriginalSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Scale9Sprite:getOriginalSize",argc, 0); @@ -32378,8 +32378,8 @@ int lua_cocos2dx_ui_Scale9Sprite_initWithFile(lua_State* tolua_S) ok &= luaval_to_rect(tolua_S, 2, &arg0, "ccui.Scale9Sprite:initWithFile"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Scale9Sprite:initWithFile"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Scale9Sprite:initWithFile"); if (!ok) { break; } bool ret = cobj->initWithFile(arg0, arg1); @@ -32390,8 +32390,8 @@ int lua_cocos2dx_ui_Scale9Sprite_initWithFile(lua_State* tolua_S) ok = true; do{ if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:initWithFile"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:initWithFile"); if (!ok) { break; } cocos2d::Rect arg1; @@ -32601,8 +32601,8 @@ int lua_cocos2dx_ui_Scale9Sprite_getPreferredSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_Scale9Sprite_getPreferredSize'", nullptr); return 0; } - cocos2d::Size ret = cobj->getPreferredSize(); - size_to_luaval(tolua_S, ret); + cocos2d::Vec2 ret = cobj->getPreferredSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Scale9Sprite:getPreferredSize",argc, 0); @@ -32780,8 +32780,8 @@ int lua_cocos2dx_ui_Scale9Sprite_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "ccui.Scale9Sprite:create"); @@ -32812,8 +32812,8 @@ int lua_cocos2dx_ui_Scale9Sprite_create(lua_State* tolua_S) cocos2d::Rect arg0; ok &= luaval_to_rect(tolua_S, 2, &arg0, "ccui.Scale9Sprite:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.Scale9Sprite:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.Scale9Sprite:create"); if (!ok) { break; } cocos2d::ui::Scale9Sprite* ret = cocos2d::ui::Scale9Sprite::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.Scale9Sprite",(cocos2d::ui::Scale9Sprite*)ret); @@ -32825,8 +32825,8 @@ int lua_cocos2dx_ui_Scale9Sprite_create(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "ccui.Scale9Sprite:create"); @@ -32841,8 +32841,8 @@ int lua_cocos2dx_ui_Scale9Sprite_create(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:create"); if (!ok) { break; } cocos2d::ui::Scale9Sprite* ret = cocos2d::ui::Scale9Sprite::create(arg0); object_to_luaval(tolua_S, "ccui.Scale9Sprite",(cocos2d::ui::Scale9Sprite*)ret); @@ -32876,8 +32876,8 @@ int lua_cocos2dx_ui_Scale9Sprite_createWithSpriteFrameName(lua_State* tolua_S) { if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:createWithSpriteFrameName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:createWithSpriteFrameName"); if (!ok) { break; } cocos2d::Rect arg1; ok &= luaval_to_rect(tolua_S, 3, &arg1, "ccui.Scale9Sprite:createWithSpriteFrameName"); @@ -32892,8 +32892,8 @@ int lua_cocos2dx_ui_Scale9Sprite_createWithSpriteFrameName(lua_State* tolua_S) { if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.Scale9Sprite:createWithSpriteFrameName"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.Scale9Sprite:createWithSpriteFrameName"); if (!ok) { break; } cocos2d::ui::Scale9Sprite* ret = cocos2d::ui::Scale9Sprite::createWithSpriteFrameName(arg0); object_to_luaval(tolua_S, "ccui.Scale9Sprite",(cocos2d::ui::Scale9Sprite*)ret); @@ -33431,8 +33431,8 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndBackgroundSprite(lua_State* tolua_S) ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndBackgroundSprite"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndBackgroundSprite"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndBackgroundSprite"); if (!ok) { break; } bool ret = cobj->initWithSizeAndBackgroundSprite(arg0, arg1); @@ -33447,8 +33447,8 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndBackgroundSprite(lua_State* tolua_S) ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndBackgroundSprite"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndBackgroundSprite"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndBackgroundSprite"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg2; @@ -34012,9 +34012,9 @@ int lua_cocos2dx_ui_EditBox_loadTextureDisabled(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureDisabled"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_loadTextureDisabled'", nullptr); @@ -34026,10 +34026,10 @@ int lua_cocos2dx_ui_EditBox_loadTextureDisabled(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureDisabled"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureDisabled"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.EditBox:loadTextureDisabled"); if(!ok) @@ -34532,9 +34532,9 @@ int lua_cocos2dx_ui_EditBox_loadTexturePressed(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTexturePressed"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_loadTexturePressed'", nullptr); @@ -34546,10 +34546,10 @@ int lua_cocos2dx_ui_EditBox_loadTexturePressed(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTexturePressed"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTexturePressed"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.EditBox:loadTexturePressed"); if(!ok) @@ -34694,11 +34694,11 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndTexture(lua_State* tolua_S) if (argc == 2) { cocos2d::Size arg0; - std::string arg1; + std::string_view arg1; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_initWithSizeAndTexture'", nullptr); @@ -34711,14 +34711,14 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndTexture(lua_State* tolua_S) if (argc == 3) { cocos2d::Size arg0; - std::string arg1; - std::string arg2; + std::string_view arg1; + std::string_view arg2; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_initWithSizeAndTexture'", nullptr); @@ -34731,17 +34731,17 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndTexture(lua_State* tolua_S) if (argc == 4) { cocos2d::Size arg0; - std::string arg1; - std::string arg2; - std::string arg3; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.EditBox:initWithSizeAndTexture"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_initWithSizeAndTexture'", nullptr); @@ -34754,18 +34754,18 @@ int lua_cocos2dx_ui_EditBox_initWithSizeAndTexture(lua_State* tolua_S) if (argc == 5) { cocos2d::Size arg0; - std::string arg1; - std::string arg2; - std::string arg3; + std::string_view arg1; + std::string_view arg2; + std::string_view arg3; cocos2d::ui::Widget::TextureResType arg4; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:initWithSizeAndTexture"); - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.EditBox:initWithSizeAndTexture"); + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.EditBox:initWithSizeAndTexture"); ok &= luaval_to_int32(tolua_S, 6,(int *)&arg4, "ccui.EditBox:initWithSizeAndTexture"); if(!ok) @@ -35003,12 +35003,12 @@ int lua_cocos2dx_ui_EditBox_loadTextures(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_loadTextures'", nullptr); @@ -35020,15 +35020,15 @@ int lua_cocos2dx_ui_EditBox_loadTextures(lua_State* tolua_S) } if (argc == 3) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:loadTextures"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_loadTextures'", nullptr); @@ -35040,16 +35040,16 @@ int lua_cocos2dx_ui_EditBox_loadTextures(lua_State* tolua_S) } if (argc == 4) { - std::string arg0; - std::string arg1; - std::string arg2; + std::string_view arg0; + std::string_view arg1; + std::string_view arg2; cocos2d::ui::Widget::TextureResType arg3; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:loadTextures"); - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:loadTextures"); + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:loadTextures"); ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.EditBox:loadTextures"); if(!ok) @@ -35249,9 +35249,9 @@ int lua_cocos2dx_ui_EditBox_loadTextureNormal(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureNormal"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_EditBox_loadTextureNormal'", nullptr); @@ -35263,10 +35263,10 @@ int lua_cocos2dx_ui_EditBox_loadTextureNormal(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; + std::string_view arg0; cocos2d::ui::Widget::TextureResType arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureNormal"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.EditBox:loadTextureNormal"); ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "ccui.EditBox:loadTextureNormal"); if(!ok) @@ -35709,8 +35709,8 @@ int lua_cocos2dx_ui_EditBox_create(lua_State* tolua_S) cocos2d::Size arg0; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg2; ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccui.EditBox:create"); @@ -35785,8 +35785,8 @@ int lua_cocos2dx_ui_EditBox_create(lua_State* tolua_S) cocos2d::Size arg0; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:create"); if (!ok) { break; } cocos2d::ui::EditBox* ret = cocos2d::ui::EditBox::create(arg0, arg1); object_to_luaval(tolua_S, "ccui.EditBox",(cocos2d::ui::EditBox*)ret); @@ -35801,11 +35801,11 @@ int lua_cocos2dx_ui_EditBox_create(lua_State* tolua_S) cocos2d::Size arg0; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:create"); if (!ok) { break; } cocos2d::ui::EditBox* ret = cocos2d::ui::EditBox::create(arg0, arg1, arg2); object_to_luaval(tolua_S, "ccui.EditBox",(cocos2d::ui::EditBox*)ret); @@ -35820,14 +35820,14 @@ int lua_cocos2dx_ui_EditBox_create(lua_State* tolua_S) cocos2d::Size arg0; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.EditBox:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.EditBox:create"); if (!ok) { break; } cocos2d::ui::EditBox* ret = cocos2d::ui::EditBox::create(arg0, arg1, arg2, arg3); object_to_luaval(tolua_S, "ccui.EditBox",(cocos2d::ui::EditBox*)ret); @@ -35842,14 +35842,14 @@ int lua_cocos2dx_ui_EditBox_create(lua_State* tolua_S) cocos2d::Size arg0; ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.EditBox:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.EditBox:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.EditBox:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.EditBox:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.EditBox:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg4; ok &= luaval_to_int32(tolua_S, 6,(int *)&arg4, "ccui.EditBox:create"); @@ -36352,8 +36352,8 @@ int lua_cocos2dx_ui_LayoutComponent_getSize(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_LayoutComponent_getSize'", nullptr); return 0; } - const cocos2d::Size& ret = cobj->getSize(); - size_to_luaval(tolua_S, ret); + const cocos2d::Vec2& ret = cobj->getSize(); + vec2_to_luaval(tolua_S, ret); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.LayoutComponent:getSize",argc, 0); @@ -38331,9 +38331,9 @@ int lua_cocos2dx_ui_LayoutComponent_setSize(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::Size arg0; + cocos2d::Vec2 arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccui.LayoutComponent:setSize"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccui.LayoutComponent:setSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_LayoutComponent_setSize'", nullptr); @@ -38611,8 +38611,8 @@ int lua_cocos2dx_ui_TabHeader_getTitleText(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TabHeader_getTitleText'", nullptr); return 0; } - std::string ret = cobj->getTitleText(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTitleText(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TabHeader:getTitleText",argc, 0); @@ -38703,9 +38703,9 @@ int lua_cocos2dx_ui_TabHeader_setTitleFontName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:setTitleFontName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:setTitleFontName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TabHeader_setTitleFontName'", nullptr); @@ -38805,8 +38805,8 @@ int lua_cocos2dx_ui_TabHeader_getTitleFontName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TabHeader_getTitleFontName'", nullptr); return 0; } - std::string ret = cobj->getTitleFontName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTitleFontName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.TabHeader:getTitleFontName",argc, 0); @@ -38941,9 +38941,9 @@ int lua_cocos2dx_ui_TabHeader_setTitleText(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:setTitleText"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:setTitleText"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ui_TabHeader_setTitleText'", nullptr); @@ -39031,14 +39031,14 @@ int lua_cocos2dx_ui_TabHeader_create(lua_State* tolua_S) { if (argc == 3) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TabHeader:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.TabHeader:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.TabHeader:create"); if (!ok) { break; } cocos2d::ui::TabHeader* ret = cocos2d::ui::TabHeader::create(arg0, arg1, arg2); object_to_luaval(tolua_S, "ccui.TabHeader",(cocos2d::ui::TabHeader*)ret); @@ -39050,14 +39050,14 @@ int lua_cocos2dx_ui_TabHeader_create(lua_State* tolua_S) { if (argc == 4) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TabHeader:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.TabHeader:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.TabHeader:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg3; ok &= luaval_to_int32(tolua_S, 5,(int *)&arg3, "ccui.TabHeader:create"); @@ -39082,23 +39082,23 @@ int lua_cocos2dx_ui_TabHeader_create(lua_State* tolua_S) { if (argc == 6) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TabHeader:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.TabHeader:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.TabHeader:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.TabHeader:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "ccui.TabHeader:create"); + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "ccui.TabHeader:create"); if (!ok) { break; } cocos2d::ui::TabHeader* ret = cocos2d::ui::TabHeader::create(arg0, arg1, arg2, arg3, arg4, arg5); object_to_luaval(tolua_S, "ccui.TabHeader",(cocos2d::ui::TabHeader*)ret); @@ -39110,23 +39110,23 @@ int lua_cocos2dx_ui_TabHeader_create(lua_State* tolua_S) { if (argc == 7) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.TabHeader:create"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.TabHeader:create"); + std::string_view arg1; + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg2; - ok &= luaval_to_std_string(tolua_S, 4,&arg2, "ccui.TabHeader:create"); + std::string_view arg2; + ok &= luaval_to_std_string_view(tolua_S, 4,&arg2, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg3; - ok &= luaval_to_std_string(tolua_S, 5,&arg3, "ccui.TabHeader:create"); + std::string_view arg3; + ok &= luaval_to_std_string_view(tolua_S, 5,&arg3, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg4; - ok &= luaval_to_std_string(tolua_S, 6,&arg4, "ccui.TabHeader:create"); + std::string_view arg4; + ok &= luaval_to_std_string_view(tolua_S, 6,&arg4, "ccui.TabHeader:create"); if (!ok) { break; } - std::string arg5; - ok &= luaval_to_std_string(tolua_S, 7,&arg5, "ccui.TabHeader:create"); + std::string_view arg5; + ok &= luaval_to_std_string_view(tolua_S, 7,&arg5, "ccui.TabHeader:create"); if (!ok) { break; } cocos2d::ui::Widget::TextureResType arg6; ok &= luaval_to_int32(tolua_S, 8,(int *)&arg6, "ccui.TabHeader:create"); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_video_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_video_auto.cpp index d01c83a464c7..eecb3ef9a9ec 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_video_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_video_auto.cpp @@ -36,8 +36,8 @@ int lua_cocos2dx_video_VideoPlayer_getFileName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_video_VideoPlayer_getFileName'", nullptr); return 0; } - const std::string& ret = cobj->getFileName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getFileName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.VideoPlayer:getFileName",argc, 0); @@ -83,8 +83,8 @@ int lua_cocos2dx_video_VideoPlayer_getURL(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_video_VideoPlayer_getURL'", nullptr); return 0; } - const std::string& ret = cobj->getURL(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getURL(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccui.VideoPlayer:getURL",argc, 0); @@ -366,9 +366,9 @@ int lua_cocos2dx_video_VideoPlayer_setFileName(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.VideoPlayer:setFileName"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.VideoPlayer:setFileName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_video_VideoPlayer_setFileName'", nullptr); @@ -416,9 +416,9 @@ int lua_cocos2dx_video_VideoPlayer_setURL(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.VideoPlayer:setURL"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.VideoPlayer:setURL"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_video_VideoPlayer_setURL'", nullptr); diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_webview_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_webview_auto.cpp index 887d6cf0ac7c..378f246d8631 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_webview_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_webview_auto.cpp @@ -128,9 +128,9 @@ int lua_cocos2dx_webview_WebView_loadHTMLString(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:loadHTMLString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:loadHTMLString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_webview_WebView_loadHTMLString'", nullptr); @@ -142,12 +142,12 @@ int lua_cocos2dx_webview_WebView_loadHTMLString(lua_State* tolua_S) } if (argc == 2) { - std::string arg0; - std::string arg1; + std::string_view arg0; + std::string_view arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:loadHTMLString"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:loadHTMLString"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccui.WebView:loadHTMLString"); + ok &= luaval_to_std_string_view(tolua_S, 3,&arg1, "ccui.WebView:loadHTMLString"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_webview_WebView_loadHTMLString'", nullptr); @@ -339,9 +339,9 @@ int lua_cocos2dx_webview_WebView_loadFile(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:loadFile"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:loadFile"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_webview_WebView_loadFile'", nullptr); @@ -384,8 +384,8 @@ int lua_cocos2dx_webview_WebView_loadURL(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 2) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:loadURL"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:loadURL"); if (!ok) { break; } bool arg1; @@ -400,8 +400,8 @@ int lua_cocos2dx_webview_WebView_loadURL(lua_State* tolua_S) ok = true; do{ if (argc == 1) { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:loadURL"); + std::string_view arg0; + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:loadURL"); if (!ok) { break; } cobj->loadURL(arg0); @@ -498,9 +498,9 @@ int lua_cocos2dx_webview_WebView_evaluateJS(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:evaluateJS"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:evaluateJS"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_webview_WebView_evaluateJS'", nullptr); @@ -830,9 +830,9 @@ int lua_cocos2dx_webview_WebView_setJavascriptInterfaceScheme(lua_State* tolua_S argc = lua_gettop(tolua_S)-1; if (argc == 1) { - std::string arg0; + std::string_view arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccui.WebView:setJavascriptInterfaceScheme"); + ok &= luaval_to_std_string_view(tolua_S, 2,&arg0, "ccui.WebView:setJavascriptInterfaceScheme"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_webview_WebView_setJavascriptInterfaceScheme'", nullptr); diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp index e9b67059b937..b78a6243eb3b 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp @@ -1564,6 +1564,50 @@ bool luaval_to_std_vector_string(lua_State* L, int lo, std::vector* return ok; } +bool luaval_to_std_vector_string_view(lua_State* L, + int lo, + std::vector* ret, + const char* funcName) +{ + if (nullptr == L || nullptr == ret || lua_gettop(L) < lo) + return false; + + tolua_Error tolua_err; + bool ok = true; + if (!tolua_istable(L, lo, 0, &tolua_err)) + { +#if COCOS2D_DEBUG >= 1 + luaval_to_native_err(L, "#ferror:", &tolua_err, funcName); +#endif + ok = false; + } + + if (ok) + { + size_t len = lua_objlen(L, lo); + std::string_view value = ""; + for (size_t i = 0; i < len; i++) + { + lua_pushnumber(L, i + 1); + lua_gettable(L, lo); + if (lua_isstring(L, -1)) + { + ok = luaval_to_std_string_view(L, -1, &value); + if (ok) + ret->push_back(value); + } + else + { + CCASSERT(false, "string type is needed"); + } + + lua_pop(L, 1); + } + } + + return ok; +} + bool luaval_to_std_vector_int(lua_State* L, int lo, std::vector* ret, const char* funcName) { if (nullptr == L || nullptr == ret || lua_gettop(L) < lo) @@ -2859,8 +2903,7 @@ void std_map_string_string_to_luaval(lua_State* L, const std::map* ret, + int lo, hlookup::string_map* ret, const char* funcName) { if (nullptr == L || nullptr == ret || lua_gettop(L) < lo) @@ -2880,15 +2923,15 @@ bool luaval_to_std_map_string_string(lua_State* L, return ok; lua_pushnil(L); - std::string key; - std::string value; + std::string_view key; + std::string_view value; while (lua_next(L, lo) != 0) { if (lua_isstring(L, -2) && lua_isstring(L, -1)) { - if (luaval_to_std_string(L, -2, &key) && luaval_to_std_string(L, -1, &value)) + if (luaval_to_std_string_view(L, -2, &key) && luaval_to_std_string_view(L, -1, &value)) { - (*ret)[key] = value; + ret->emplace(key, value); // (*ret)[key] = value; } } else @@ -3022,8 +3065,7 @@ void uniformLocation_to_luaval(lua_State* L, const cocos2d::backend::UniformLoca lua_rawset(L, -3); } -void program_activeattrs_to_luaval(lua_State* L, - const std::unordered_map& attrs) +void program_activeattrs_to_luaval(lua_State* L, const hlookup::string_map& attrs) { if (L == nullptr) return; diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h index a754959def03..151fc4315391 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h @@ -594,6 +594,11 @@ CC_LUA_DLL bool luaval_to_std_vector_string(lua_State* L, std::vector* ret, const char* funcName = ""); +CC_LUA_DLL bool luaval_to_std_vector_string_view(lua_State* L, + int lo, + std::vector* ret, + const char* funcName = ""); + /** * Get a pointer points to a std::vector from a Lua array table in the stack. * @@ -870,7 +875,7 @@ extern bool luaval_to_std_vector_vec3(lua_State* L, int lo, std::vector* ret, + hlookup::string_map* ret, const char* funcName); /**@}**/ @@ -1140,7 +1145,7 @@ void ccvector_to_luaval(lua_State* L, const cocos2d::Vector& inValue) * @param v a cocos2d::Map object. */ template -void ccmap_string_key_to_luaval(lua_State* L, const cocos2d::Map& v) +void ccmap_string_key_to_luaval(lua_State* L, const cocos2d::StringMap& v) { lua_newtable(L); @@ -1149,7 +1154,7 @@ void ccmap_string_key_to_luaval(lua_State* L, const cocos2d::Map for (auto iter = v.begin(); iter != v.end(); ++iter) { - std::string key = iter->first; + auto& key = iter->first; T obj = iter->second; if (nullptr != dynamic_cast(obj)) { @@ -1362,7 +1367,7 @@ CC_LUA_DLL void uniformLocation_to_luaval(lua_State* L, const cocos2d::backend:: CC_LUA_DLL void program_activeattrs_to_luaval( lua_State* L, - const std::unordered_map& map); + const hlookup::string_map& map); // end group /// @} diff --git a/tools/bindings-generator/generator.py b/tools/bindings-generator/generator.py index 93b32fa0d9df..22122942de09 100644 --- a/tools/bindings-generator/generator.py +++ b/tools/bindings-generator/generator.py @@ -82,6 +82,8 @@ 'std::unordered_map': 2, 'std::unordered_multimap': 2, 'std::map': 2, + 'tsl::robin_map': 2, + 'hlookup::string_map': 2, 'std::multimap': 2, 'std::vector': 1, 'std::list': 1, @@ -91,6 +93,8 @@ 'std::multiset': 1, 'std::unordered_set': 1, 'std::unordered_multiset': 1, + 'tsl::robin_set': 1, + 'hlookup::string_set': 1, 'std::stack': 1, 'std::queue': 1, 'std::deque': 1, @@ -100,6 +104,8 @@ 'unordered_multimap': 2, 'map': 2, 'multimap': 2, + 'robin_map': 2, + 'string_map': 2, 'vector': 1, 'list': 1, 'forward_list': 1, @@ -108,6 +114,8 @@ 'multiset': 1, 'unordered_set': 1, 'unordered_multiset': 1, + 'robin_set': 1, + 'string_set': 1, 'stack': 1, 'queue': 1, 'deque': 1, @@ -221,8 +229,23 @@ def normalize_type_str(s, depth=1): return 'std::string' + last_section else: return 'std::string' + + # for std::string_view + if sections[0] == 'const std::basic_string_view' or sections[0] == 'const basic_string_view': + last_section = sections[len(sections) - 1] + if last_section == '&' or last_section == '*' or last_section.startswith('::'): + return 'const std::string_view' + last_section + else: + return 'const std::string_view' + + elif sections[0] == 'std::basic_string_view' or sections[0] == 'basic_string_view': + last_section = sections[len(sections) - 1] + if last_section == '&' or last_section == '*' or last_section.startswith('::'): + return 'std::string_view' + last_section + else: + return 'std::string_view' - # for string_view + # for compatible cxx17::string_view if sections[0] == 'const cxx17::basic_string_view' or sections[0] == 'const basic_string_view': last_section = sections[len(sections) - 1] if last_section == '&' or last_section == '*' or last_section.startswith('::'): @@ -455,6 +478,8 @@ def from_type(ntype): and not nt.namespaced_name.startswith('std::function') \ and not nt.namespaced_name.startswith('std::string') \ and not nt.namespaced_name.startswith('std::basic_string') \ + and not nt.namespaced_name.startswith('std::string_view') \ + and not nt.namespaced_name.startswith('std::basic_string_view') \ and not nt.namespaced_name.startswith('cxx17::string_view') \ and not nt.namespaced_name.startswith('cxx17::basic_string_view'): nt.is_object = True @@ -634,6 +659,12 @@ def to_native(self, convert_opts): return "#pragma warning NO CONVERSION TO NATIVE FOR " + self.name + "\n" + convert_opts['level'] * "\t" + "ok = false" def to_string(self, generator): + + if self.name.find("robin_map", ", hlookup::string_hash, hlookup::equal_to>") + self.namespaced_name = self.namespaced_name.replace(">", ", hlookup::string_hash, hlookup::equal_to>") + self.whole_name = self.whole_name.replace(">", ", hlookup::string_hash, hlookup::equal_to>") + conversions = generator.config['conversions'] if conversions.has_key('native_types'): native_types_dict = conversions['native_types'] @@ -679,6 +710,9 @@ def get_whole_name(self, generator): if to_replace: name = to_replace + if name.find("tsl::robin_map= 0: + name = name.replace(">", ", hlookup::string_hash, hlookup::equal_to>") + return name def object_can_convert(self, generator, is_to_native = True): @@ -1628,6 +1662,8 @@ def scriptname_from_native(self, namespace_class_name, namespace_name): if namespace_class_name.find("::") >= 0: if namespace_class_name.find("std::") == 0 or namespace_class_name.find("cxx17::") == 0: return namespace_class_name + if namespace_class_name.find("tsl::") == 0 or namespace_class_name.find("hlookup::") == 0: + return namespace_class_name else: raise Exception("The namespace (%s) conversion wasn't set in 'ns_map' section of the conversions.yaml" % namespace_class_name) else: @@ -1638,6 +1674,8 @@ def is_cocos_class(self, namespace_class_name): for (k, v) in script_ns_dict.items(): if namespace_class_name.find("std::") == 0 or namespace_class_name.find("cxx17::") == 0: return False + if namespace_class_name.find("tsl::") == 0 or namespace_class_name.find("hlookup::") == 0: + return False if namespace_class_name.find(k) >= 0: return True @@ -1659,6 +1697,8 @@ def js_typename_from_natve(self, namespace_class_name): return "Array" if namespace_class_name.find("std::map") == 0 or namespace_class_name.find("std::unordered_map") == 0: return "map_object" + if namespace_class_name.find("tsl::robin_") >= 0 or namespace_class_name.find("hlookup::string_map") == 0: + return "map_object" if namespace_class_name.find("std::function") == 0: return "function" @@ -1674,7 +1714,7 @@ def js_typename_from_natve(self, namespace_class_name): return "mat4_object" if namespace_class_name.find("cocos2d::Vector") == 0: return "Array" - if namespace_class_name.find("cocos2d::Map") == 0: + if namespace_class_name.find("cocos2d::Map") == 0 or namespace_class_name.find("cocos2d::StringMap") == 0: return "map_object" if namespace_class_name.find("cocos2d::Point") == 0: return "point_object" @@ -1703,6 +1743,8 @@ def lua_typename_from_natve(self, namespace_class_name, is_ret = False): return "array_table" if namespace_class_name.find("std::map") == 0 or namespace_class_name.find("std::unordered_map") == 0: return "map_table" + if namespace_class_name.find("tsl::robin_") >= 0 or namespace_class_name.find("hlookup::string_map") == 0: + return "map_table" if namespace_class_name.find("std::function") == 0: return "function" @@ -1718,7 +1760,7 @@ def lua_typename_from_natve(self, namespace_class_name, is_ret = False): return "array_table" if namespace_class_name.find("cocos2d::Mat4") == 0: return "mat4_table" - if namespace_class_name.find("cocos2d::Map") == 0: + if namespace_class_name.find("cocos2d::Map") == 0 or namespace_class_name.find("cocos2d::StringMap") == 0: return "map_table" if namespace_class_name.find("cocos2d::Point") == 0: return "point_table" @@ -1762,7 +1804,7 @@ def js_ret_name_from_native(self, namespace_class_name, is_enum) : if self.is_cocos_class(namespace_class_name): if namespace_class_name.find("cocos2d::Vector") >=0: return "new Array()" - if namespace_class_name.find("cocos2d::Map") >=0: + if namespace_class_name.find("cocos2d::Map") >=0 or namespace_class_name.find("cocos2d::StringMap") >=0: return "map_object" if is_enum: return 0 @@ -1788,6 +1830,8 @@ def js_ret_name_from_native(self, namespace_class_name, is_enum) : if lower_name.find("std::map") >= 0 or lower_name.find("std::unordered_map") >= 0 or lower_name.find("unordered_map") >= 0 or lower_name.find("map") >= 0: return "map_object" + if lower_name.find("robin_") >= 0: + return "map_object" if lower_name == "std::function": return "func" diff --git a/tools/bindings-generator/targets/lua/conversions.yaml b/tools/bindings-generator/targets/lua/conversions.yaml index d60c9d26cbe7..d1db91df1878 100644 --- a/tools/bindings-generator/targets/lua/conversions.yaml +++ b/tools/bindings-generator/targets/lua/conversions.yaml @@ -26,6 +26,8 @@ conversions: "CocosDenshion::": "cc." "cocos2d::tweenfunc::": "cc." "cocos2d::backend::": "ccb." + "tsl::": "tsl." + "hlookup::": "hlookup." to_native: # lua to native @@ -59,13 +61,14 @@ conversions: "AffineTransform": "ok &= luaval_to_affinetransform(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "FontDefinition": "ok &= luaval_to_fontdefinition(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "@Vector<.*>": "ok &= luaval_to_ccvector(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" - "@Map": "ok &= luaval_to_ccmap_string_key(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" - "@map": "ok &= luaval_to_std_map_string_string(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" + "@Map": "ok &= luaval_to_ccmap_string_key(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" + "@robin_map": "ok &= luaval_to_std_map_string_string(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "Value": "ok &= luaval_to_ccvalue(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "ValueMap": "ok &= luaval_to_ccvaluemap(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "ValueMapIntKey": "ok &= luaval_to_ccvaluemapintkey(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "ValueVector": "ok &= luaval_to_ccvaluevector(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" - "@vector": "ok &= luaval_to_std_vector_string(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" + "@vector": "ok &= luaval_to_std_vector_string(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" + "@vector": "ok &= luaval_to_std_vector_string_view(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "@vector": "ok &= luaval_to_std_vector_int(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "kmMat4": "ok &= luaval_to_kmMat4(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" "Mat4": "ok &= luaval_to_mat4(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")" @@ -121,12 +124,13 @@ conversions: "FontDefinition": "fontdefinition_to_luaval(tolua_S, ${in_value})" "@Vector<.*>": "ccvector_to_luaval(tolua_S, ${in_value})" "@Map": "ccmap_string_key_to_luaval(tolua_S, ${in_value})" - "@map": "${out_value} = std_map_string_string_to_luaval(tolua_S, ${in_value})" + "@robin_map": "${out_value} = std_map_string_string_to_luaval(tolua_S, ${in_value})" "Value": "ccvalue_to_luaval(tolua_S, ${in_value})" "ValueMap": "ccvaluemap_to_luaval(tolua_S, ${in_value})" "ValueMapIntKey": "ccvaluemapintkey_to_luaval(tolua_S, ${in_value})" "ValueVector": "ccvaluevector_to_luaval(tolua_S, ${in_value})" - "@vector": "ccvector_std_string_to_luaval(tolua_S, ${in_value})" + "@vector": "ccvector_std_string_to_luaval(tolua_S, ${in_value})" + "@vector": "ccvector_std_string_view_to_luaval(tolua_S, ${in_value})" "@vector": "ccvector_int_to_luaval(tolua_S, ${in_value})" "Mat4": "mat4_to_luaval(tolua_S, ${in_value})" "BlendFunc": "blendfunc_to_luaval(tolua_S, ${in_value})" diff --git a/tools/bindings-generator/test/test.ini b/tools/bindings-generator/test/test.ini index 4cf5c44aa65c..3a923faf7fb6 100644 --- a/tools/bindings-generator/test/test.ini +++ b/tools/bindings-generator/test/test.ini @@ -7,7 +7,7 @@ android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/%(clang_version)s/include -clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -U __SSE__ simple_test_headers = -I%(cxxgeneratordir)s/test/simple_tes diff --git a/tools/tolua/cocos2dx.ini b/tools/tolua/cocos2dx.ini index 94fbc62a8fc6..5923e39bae87 100644 --- a/tools/tolua/cocos2dx.ini +++ b/tools/tolua/cocos2dx.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_3d.ini b/tools/tolua/cocos2dx_3d.ini index f845e328e84e..cddb3d46052a 100644 --- a/tools/tolua/cocos2dx_3d.ini +++ b/tools/tolua/cocos2dx_3d.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_audioengine.ini b/tools/tolua/cocos2dx_audioengine.ini index 88c98a0f3777..461aded23d60 100644 --- a/tools/tolua/cocos2dx_audioengine.ini +++ b/tools/tolua/cocos2dx_audioengine.ini @@ -14,7 +14,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/cocos2dx_backend.ini b/tools/tolua/cocos2dx_backend.ini index 571121547171..68ab0017735c 100644 --- a/tools/tolua/cocos2dx_backend.ini +++ b/tools/tolua/cocos2dx_backend.ini @@ -1,4 +1,4 @@ -[cocos2d-backend] +[cocos2dx_backend] # the prefix to be added to the generated functions. You might or might not use this in your own # templates prefix = cocos2dx_backend @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_controller.ini b/tools/tolua/cocos2dx_controller.ini index d5500b7e45ea..85b2f2c7eff7 100644 --- a/tools/tolua/cocos2dx_controller.ini +++ b/tools/tolua/cocos2dx_controller.ini @@ -14,7 +14,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/base -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_csloader.ini b/tools/tolua/cocos2dx_csloader.ini index 6219300f969a..04f9dfef6985 100644 --- a/tools/tolua/cocos2dx_csloader.ini +++ b/tools/tolua/cocos2dx_csloader.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/cocos2dx_extension.ini b/tools/tolua/cocos2dx_extension.ini index 3ee56cbb665b..d2d4e327c8b0 100644 --- a/tools/tolua/cocos2dx_extension.ini +++ b/tools/tolua/cocos2dx_extension.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/rapidjson -I%(cocosdir)s/thirdparty/box2d/include diff --git a/tools/tolua/cocos2dx_navmesh.ini b/tools/tolua/cocos2dx_navmesh.ini index eb443e8e3934..4fba8ce7836e 100644 --- a/tools/tolua/cocos2dx_navmesh.ini +++ b/tools/tolua/cocos2dx_navmesh.ini @@ -14,7 +14,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ -DCC_USE_NAVMESH +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -DCC_USE_NAVMESH win32_clang_flags = -U __SSE__ diff --git a/tools/tolua/cocos2dx_physics.ini b/tools/tolua/cocos2dx_physics.ini index 8a5ab2e154eb..ffa08072222c 100644 --- a/tools/tolua/cocos2dx_physics.ini +++ b/tools/tolua/cocos2dx_physics.ini @@ -14,7 +14,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/cocos2dx_physics3d.ini b/tools/tolua/cocos2dx_physics3d.ini index cbeee849c2b4..b7f67b215baa 100644 --- a/tools/tolua/cocos2dx_physics3d.ini +++ b/tools/tolua/cocos2dx_physics3d.ini @@ -14,7 +14,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ -DCC_ENABLE_BULLET_INTEGRATION +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -DCC_ENABLE_BULLET_INTEGRATION win32_clang_flags = -U __SSE__ diff --git a/tools/tolua/cocos2dx_spine.ini b/tools/tolua/cocos2dx_spine.ini index 277fa1bb2965..dc90471b63f2 100644 --- a/tools/tolua/cocos2dx_spine.ini +++ b/tools/tolua/cocos2dx_spine.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/spine -I%(cocosdir)s/extensions/spine/runtime/include -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/cocos2dx_studio.ini b/tools/tolua/cocos2dx_studio.ini index bed1726c94af..d1e144b069aa 100644 --- a/tools/tolua/cocos2dx_studio.ini +++ b/tools/tolua/cocos2dx_studio.ini @@ -15,7 +15,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/thirdparty -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty/lua/luajit/include -I%(cocosdir)s/thirdparty/lua/tolua -I%(cocosdir)s/extensions/scripting/lua-bindings/manual diff --git a/tools/tolua/cocos2dx_ui.ini b/tools/tolua/cocos2dx_ui.ini index 129413893245..b8c18794ff76 100644 --- a/tools/tolua/cocos2dx_ui.ini +++ b/tools/tolua/cocos2dx_ui.ini @@ -15,9 +15,9 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_video.ini b/tools/tolua/cocos2dx_video.ini index 23ba4e382fa8..66f61a8ddcfc 100644 --- a/tools/tolua/cocos2dx_video.ini +++ b/tools/tolua/cocos2dx_video.ini @@ -12,7 +12,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/cocos2dx_webview.ini b/tools/tolua/cocos2dx_webview.ini index a14606dfaf08..bfa0b1765b6d 100644 --- a/tools/tolua/cocos2dx_webview.ini +++ b/tools/tolua/cocos2dx_webview.ini @@ -11,7 +11,7 @@ android_headers = android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DANDROID -D__ANDROID_API__=14 -gcc-toolchain %(gcc_toolchain_dir)s --sysroot=%(androidndkdir)s/platforms/android-14/arch-arm -idirafter %(androidndkdir)s/sources/android/support/include -idirafter %(androidndkdir)s/sysroot/usr/include -idirafter %(androidndkdir)s/sysroot/usr/include/arm-linux-androideabi -idirafter %(clangllvmdir)s/lib64/clang/5.0/include -I%(androidndkdir)s/sources/cxx-stl/llvm-libc++/include clang_headers = -clang_flags = -nostdinc -x c++ -std=c++11 -fsigned-char -U__SSE__ +clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty diff --git a/tools/tolua/genbindings.py b/tools/tolua/genbindings.py index db8bc91a5181..328dd41a57c4 100755 --- a/tools/tolua/genbindings.py +++ b/tools/tolua/genbindings.py @@ -206,7 +206,7 @@ def main(): cmd_args = { 'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \ - 'cocos2dx_backend.ini' : ('cocos2d-backend', 'lua_cocos2dx_backend_auto'), \ + 'cocos2dx_backend.ini' : ('cocos2dx_backend', 'lua_cocos2dx_backend_auto'), \ 'cocos2dx_extension.ini' : ('cocos2dx_extension', 'lua_cocos2dx_extension_auto'), \ 'cocos2dx_ui.ini' : ('cocos2dx_ui', 'lua_cocos2dx_ui_auto'), \ 'cocos2dx_studio.ini' : ('cocos2dx_studio', 'lua_cocos2dx_studio_auto'), \ From 367ae2a23cb2d0f5536d1eb72030c5b43ad0f4f7 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 15:58:56 +0800 Subject: [PATCH 13/58] string_view for tests --- tests/cpp-tests/Classes/BaseTest.cpp | 7 +- tests/cpp-tests/Classes/BaseTest.h | 8 +- .../cpp-tests/Classes/BugsTest/Bug-14327.cpp | 4 +- tests/cpp-tests/Classes/BugsTest/Bug-14327.h | 2 +- .../Classes/ConsoleTest/ConsoleTest.cpp | 4 +- .../Classes/FileUtilsTest/FileUtilsTest.cpp | 16 +- tests/cpp-tests/Classes/FontTest/FontTest.cpp | 2 +- tests/cpp-tests/Classes/FontTest/FontTest.h | 4 +- .../MaterialSystemTest/MaterialSystemTest.cpp | 4 +- tests/cpp-tests/Classes/MenuTest/MenuTest.cpp | 2 +- .../DownloaderTest/DownloaderTest.cpp | 8 +- .../HttpClientTest/HttpClientTest.cpp | 2 +- .../NewAudioEngineTest/NewAudioEngineTest.cpp | 22 +- .../NewAudioEngineTest/NewAudioEngineTest.h | 4 +- .../NewRendererTest/NewRendererTest.cpp | 6 +- .../Classes/NewRendererTest/NewRendererTest.h | 2 +- tests/cpp-tests/Classes/NodeTest/NodeTest.cpp | 2 +- .../Classes/ParticleTest/ParticleTest.h | 2 +- .../RenderTextureTest/RenderTextureTest.cpp | 6 +- .../Classes/Scene3DTest/Scene3DTest.cpp | 4 +- .../Classes/SchedulerTest/SchedulerTest.cpp | 2 +- .../Classes/SchedulerTest/SchedulerTest.h | 2 +- .../Classes/ShaderTest/ShaderTest.cpp | 4 +- .../Classes/ShaderTest/ShaderTest2.cpp | 8 +- .../SpriteFrameCacheTest.cpp | 16 +- .../SpriteFrameCacheTest.h | 2 +- .../SpritePolygonTest/SpritePolygonTest.h | 2 +- .../Classes/SpriteTest/SpriteTest.cpp | 4 +- .../TransitionsTest/TransitionsTest.cpp | 8 +- .../Classes/TransitionsTest/TransitionsTest.h | 8 +- .../CocoStudioGUITest/UIEditBoxTest.cpp | 16 +- .../UITest/CocoStudioGUITest/UIEditBoxTest.h | 4 +- .../UIRadioButtonTest/UIRadioButtonTest.cpp | 2 +- .../UIRadioButtonTest/UIRadioButtonTest.h | 2 +- .../UIRichTextTest/UIRichTextTest.cpp | 2 +- .../Classes/VibrateTest/VibrateTest.cpp | 2 +- tests/cpp-tests/Classes/ZipTest/ZipTests.cpp | 2 +- tests/cpp-tests/Resources/audio/GAME_END.WAV | Bin 0 -> 15768 bytes tests/cpp-tests/Resources/audio/Roll.mp3 | Bin 0 -> 11538 bytes tests/cpp-tests/Resources/audio/Roll.wav | Bin 0 -> 20612 bytes .../cpp-tests/Resources/audio/battle_bgm2.mp3 | Bin 0 -> 2216260 bytes tests/cpp-tests/Resources/spine/11105.atlas | 860 ++++++++++++++++++ tests/cpp-tests/Resources/spine/11105.json | 1 + tests/cpp-tests/Resources/spine/11105.png | Bin 0 -> 1487703 bytes tests/cpp-tests/Resources/spine/11105.skel | Bin 0 -> 225850 bytes tests/cpp-tests/Resources/spine/3895.rar | Bin 0 -> 2686766 bytes tests/cpp-tests/Resources/spine/fenrir.atlas | 776 ++++++++++++++++ tests/cpp-tests/Resources/spine/fenrir.json | 1 + tests/cpp-tests/Resources/spine/fenrir.png | Bin 0 -> 877350 bytes tests/cpp-tests/Resources/spine/fenrir.skel | Bin 0 -> 175486 bytes .../cpp-tests/Resources/spine/spinetestkl.rar | Bin 0 -> 1883653 bytes 51 files changed, 1738 insertions(+), 97 deletions(-) create mode 100644 tests/cpp-tests/Resources/audio/GAME_END.WAV create mode 100644 tests/cpp-tests/Resources/audio/Roll.mp3 create mode 100644 tests/cpp-tests/Resources/audio/Roll.wav create mode 100644 tests/cpp-tests/Resources/audio/battle_bgm2.mp3 create mode 100644 tests/cpp-tests/Resources/spine/11105.atlas create mode 100644 tests/cpp-tests/Resources/spine/11105.json create mode 100644 tests/cpp-tests/Resources/spine/11105.png create mode 100644 tests/cpp-tests/Resources/spine/11105.skel create mode 100644 tests/cpp-tests/Resources/spine/3895.rar create mode 100644 tests/cpp-tests/Resources/spine/fenrir.atlas create mode 100644 tests/cpp-tests/Resources/spine/fenrir.json create mode 100644 tests/cpp-tests/Resources/spine/fenrir.png create mode 100644 tests/cpp-tests/Resources/spine/fenrir.skel create mode 100644 tests/cpp-tests/Resources/spine/spinetestkl.rar diff --git a/tests/cpp-tests/Classes/BaseTest.cpp b/tests/cpp-tests/Classes/BaseTest.cpp index 30fbd9671fa3..80ff8dc6e356 100644 --- a/tests/cpp-tests/Classes/BaseTest.cpp +++ b/tests/cpp-tests/Classes/BaseTest.cpp @@ -142,11 +142,12 @@ void TestList::deatchTableView() { CC_SAFE_RELEASE_NULL(_tableView); } -void TestList::addTest(const std::string& testName, std::function callback) +void TestList::addTest(std::string_view testName, std::function callback) { if (!testName.empty()) { - _childTestNames.emplace_back(StringUtils::format("%d", static_cast(_childTestNames.size() + 1)) + ":" + testName); + _childTestNames.emplace_back( + StringUtils::format("%d:%s", static_cast(_childTestNames.size() + 1), testName.data())); _testCallbacks.emplace_back(callback); } } @@ -282,7 +283,7 @@ ssize_t TestList::numberOfCellsInTableView(TableView *table) } //TestSuite -void TestSuite::addTestCase(const std::string& testName, std::function callback) +void TestSuite::addTestCase(std::string_view testName, std::function callback) { if (!testName.empty() && callback) { diff --git a/tests/cpp-tests/Classes/BaseTest.h b/tests/cpp-tests/Classes/BaseTest.h index b7824a917ccd..7f11e24376dc 100644 --- a/tests/cpp-tests/Classes/BaseTest.h +++ b/tests/cpp-tests/Classes/BaseTest.h @@ -91,7 +91,7 @@ class TestCase : public cocos2d::Scene /** * You should NEVER call this method, unless you know what you are doing. */ - void setTestCaseName(const std::string& name) { _testCaseName = name; } + void setTestCaseName(std::string_view name) { _testCaseName = name; } std::string getTestCaseName() const { return _testCaseName; } const cocos2d::Label* getSubtitleLable() const { return _subtitleLabel; } @@ -143,7 +143,7 @@ class TestBase : public cocos2d::Ref void setTestParent(TestBase* parent) { _parentTest = parent; } TestBase* getTestParent() { return _parentTest; } - void setTestName(const std::string& testName) { _testName = testName; } + void setTestName(std::string_view testName) { _testName = testName; } std::string getTestName() const { return _testName; } protected: TestBase(); @@ -163,7 +163,7 @@ class TestController; class TestSuite : public TestBase { public: - void addTestCase(const std::string& testName, std::function callback); + void addTestCase(std::string_view testName, std::function callback); virtual void restartCurrTest(); virtual void enterNextTest(); @@ -190,7 +190,7 @@ class TestList : public TestBase, public cocos2d::extension::TableViewDataSource TestList(); ~TestList(); - void addTest(const std::string& testName, std::function callback); + void addTest(std::string_view testName, std::function callback); virtual void runThisTest() override; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp index a5f56f5751b1..326db787d96b 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp @@ -102,9 +102,9 @@ void Bug14327Layer::editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox log("editBox %p DidEnd !", editBox); } -void Bug14327Layer::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) +void Bug14327Layer::editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) { - log("editBox %p TextChanged, text: %s ", editBox, text.c_str()); + log("editBox %p TextChanged, text: %s ", editBox, text.data()); } void Bug14327Layer::editBoxReturn(ui::EditBox* editBox) diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-14327.h b/tests/cpp-tests/Classes/BugsTest/Bug-14327.h index db1b6e3bfa77..c58d712b6c71 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-14327.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-14327.h @@ -42,7 +42,7 @@ class Bug14327Layer : public BugsTestBase, public cocos2d::ui::EditBoxDelegate virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox) override; virtual void editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction EditBoxEndAction) override; - virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) override; + virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) override; virtual void editBoxReturn(cocos2d::ui::EditBox* editBox) override; protected: diff --git a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp index d7a40b21fc8d..9a17f9dad72f 100644 --- a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp +++ b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp @@ -74,10 +74,10 @@ ConsoleCustomCommand::ConsoleCustomCommand() { _console = Director::getInstance()->getConsole(); static Console::Command commands[] = { - {"hello", "This is just a user generated command", [](int fd, const std::string& args) { + {"hello", "This is just a user generated command", [](int fd, std::string_view args) { const char msg[] = "how are you?\nArguments passed: "; send(fd, msg, sizeof(msg),0); - send(fd, args.c_str(), args.length(),0); + send(fd, args.data(), args.length(),0); send(fd, "\n",1,0); }}, }; diff --git a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp index 831a1e2cdcad..70ff519daf20 100644 --- a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp +++ b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp @@ -576,7 +576,7 @@ class ResizableBufferAdapter : public ResizableBuffer { }; NS_CC_END -static void saveAsBinaryText(const std::string& filename, const std::vector& binary){ +static void saveAsBinaryText(std::string_view filename, const std::vector& binary){ auto fs = FileUtils::getInstance(); std::string text(binary.begin(), binary.end()); fs->writeStringToFile(text, filename); @@ -965,10 +965,10 @@ void TestUnicodePath::onEnter() std::string filename = "测试文件.test"; std::string act; - auto getMsg = [&act](bool b, const std::string& path)-> std::string + auto getMsg = [&act](bool b, std::string_view path)-> std::string { char msg[512]; - snprintf((char *)msg, 512, "%s for %s path: \"%s\"", b ? "success" : "failed", act.c_str(), path.c_str()); + snprintf((char *)msg, 512, "%s for %s path: \"%s\"", b ? "success" : "failed", act.c_str(), path.data()); return std::string(msg); }; @@ -1097,10 +1097,10 @@ void TestIsDirectoryExistAsync::onEnter() int x = s.width/2, y = s.height/3; std::string dir; - auto getMsg = [](bool b, const std::string& dir)-> std::string + auto getMsg = [](bool b, std::string_view dir)-> std::string { char msg[512]; - snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.c_str()); + snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.data()); return std::string(msg); }; @@ -1220,9 +1220,11 @@ void TestWriteStringAsync::onEnter() CCASSERT(success, "Write String to data failed"); writeResult->setString("write success:" + writeDataStr); - FileUtils::getInstance()->getStringFromFile(fullPath, [=](const std::string& value) { + FileUtils::getInstance()->getStringFromFile(fullPath, [=](std::string_view value) { CCASSERT(!value.empty(), "String should be readable"); - readResult->setString("read success: " + value); + + std::string strVal = "read success: "; + readResult->setString(strVal.append(value)); }); }); } diff --git a/tests/cpp-tests/Classes/FontTest/FontTest.cpp b/tests/cpp-tests/Classes/FontTest/FontTest.cpp index 6e131ce06f21..b4166f6c23c2 100644 --- a/tests/cpp-tests/Classes/FontTest/FontTest.cpp +++ b/tests/cpp-tests/Classes/FontTest/FontTest.cpp @@ -80,7 +80,7 @@ FontTests::FontTests() ADD_TEST_CASE(FontReplacementTest); } -void FontTest::showFont(const std::string& fontFile) +void FontTest::showFont(std::string_view fontFile) { auto s = Director::getInstance()->getWinSize(); diff --git a/tests/cpp-tests/Classes/FontTest/FontTest.h b/tests/cpp-tests/Classes/FontTest/FontTest.h index 2659dd5a15ee..2b6ac6b821b8 100644 --- a/tests/cpp-tests/Classes/FontTest/FontTest.h +++ b/tests/cpp-tests/Classes/FontTest/FontTest.h @@ -33,7 +33,7 @@ DEFINE_TEST_SUITE(FontTests); class FontTest : public TestCase { public: - static FontTest* create(const std::string& fontFile) + static FontTest* create(std::string_view fontFile) { auto ret = new FontTest; if (ret->init()) @@ -50,7 +50,7 @@ class FontTest : public TestCase return ret; } - void showFont(const std::string& fontFile); + void showFont(std::string_view fontFile); virtual std::string title() const override; }; diff --git a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp index de0539305eed..ea69cdad72de 100644 --- a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp +++ b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp @@ -184,13 +184,13 @@ void Material_2DEffects::updateCCTimeUniforms(float) */ class EffectAutoBindingResolver : public backend::ProgramState::AutoBindingResolver { - virtual bool resolveAutoBinding(backend::ProgramState* programState,/* Node* node,*/ const std::string& uniform, const std::string& autoBinding) override; + virtual bool resolveAutoBinding(backend::ProgramState* programState,/* Node* node,*/ std::string_view uniform, std::string_view autoBinding) override; void callbackRadius(backend::ProgramState* programState, backend::UniformLocation uniform); void callbackColor(backend::ProgramState* programState, backend::UniformLocation uniform); }; -bool EffectAutoBindingResolver::resolveAutoBinding(backend::ProgramState* programState, /*Node* node,*/ const std::string& uniform, const std::string& autoBinding) +bool EffectAutoBindingResolver::resolveAutoBinding(backend::ProgramState* programState, /*Node* node,*/ std::string_view uniform, std::string_view autoBinding) { if (autoBinding.compare("DYNAMIC_RADIUS")==0) { diff --git a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp index 9c2e36b0ba51..80eef3c8f807 100644 --- a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp +++ b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp @@ -80,7 +80,7 @@ MenuLayerMainMenu::MenuLayerMainMenu() auto item3 = MenuItemLabel::create(labelAtlas, CC_CALLBACK_1(MenuLayerMainMenu::menuCallbackDisabled, this) ); item3->setDisabledColor( Color3B(32,32,64) ); item3->setColor( Color3B(200,200,255) ); - CCLOG("test MenuItem Label getString: %s", item3->getString().c_str()); + CCLOG("test MenuItem Label getString: %s", item3->getString().data()); // Font Item auto item4 = MenuItemFont::create("I toggle enable items", [&](Ref *sender) { _disabledItem->setEnabled(! _disabledItem->isEnabled() ); diff --git a/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp b/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp index 46376391538b..36ad2e2dd571 100644 --- a/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp +++ b/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp @@ -298,14 +298,14 @@ struct DownloaderTest : public TestCase downloader->onTaskError = [this](const cocos2d::network::DownloadTask& task, int errorCode, int errorCodeInternal, - const std::string& errorStr) + std::string_view errorStr) { log("Failed to download : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)" , task.requestURL.c_str() , task.identifier.c_str() , errorCode , errorCodeInternal - , errorStr.c_str()); + , errorStr.data()); auto view = this->getChildByName(task.identifier); auto status = (Label*)view->getChildByTag(TAG_STATUS); status->setString(errorStr.length() ? errorStr : "Download failed."); @@ -350,13 +350,13 @@ struct DownloaderMultiTask : public TestCase log("downloader task success: %s", task.identifier.c_str()); }); - downloader->onTaskError = ([] (const network::DownloadTask& task, int errorCode, int errorCodeInternal, const std::string& errorStr) { + downloader->onTaskError = ([] (const network::DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr) { log("downloader task failed : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)" , task.requestURL.c_str() , task.identifier.c_str() , errorCode , errorCodeInternal - , errorStr.c_str()); + , errorStr.data()); }); } }; diff --git a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp index d77782ff1eb2..73821c55d96f 100644 --- a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp +++ b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp @@ -47,7 +47,7 @@ HttpClientTest::HttpClientTest() auto cafile = FileUtils::getInstance()->fullPathForFilename("cacert.pem"); httpClient->setSSLVerification(cafile); httpClient->enableCookies(nullptr); - CCLOG("The http cookie will store to: %s", httpClient->getCookieFilename().c_str()); + CCLOG("The http cookie will store to: %s", httpClient->getCookieFilename().data()); const int MARGIN = 40; const int SPACE = 35; diff --git a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp index 90e304dece67..d7f90be78604 100644 --- a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp +++ b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp @@ -64,7 +64,7 @@ namespace { { public: - static TextButton *create(const std::string& text, const std::function &onTriggered) + static TextButton *create(std::string_view text, const std::function &onTriggered) { auto ret = new TextButton(); @@ -246,7 +246,7 @@ bool AudioControlTest::init() _isStopped = false; button->setEnabled(false); - AudioEngine::setFinishCallback(_audioID, [&](int id, const std::string& filePath){ + AudioEngine::setFinishCallback(_audioID, [&](int id, std::string_view filePath){ log("_audioID(%d), _isStopped:(%d), played over!!!", _audioID, _isStopped); _playOverLabel->setVisible(true); @@ -527,7 +527,7 @@ bool PlaySimultaneouslyTest::init() if(audioId != AudioEngine::INVALID_AUDIO_ID){ _playingcount += 1; - AudioEngine::setFinishCallback(audioId, [&](int id, const std::string& filePath){ + AudioEngine::setFinishCallback(audioId, [&](int id, std::string_view filePath){ _playingcount -= 1; if(_playingcount <= 0){ ((TextButton*)_playItem)->setEnabled(true); @@ -591,7 +591,7 @@ bool AudioProfileTest::init() sprintf(show,"audio count:%d",_audioCount); _showLabel->setString(show); - AudioEngine::setFinishCallback(id, [&](int id, const std::string& filePath){ + AudioEngine::setFinishCallback(id, [&](int id, std::string_view filePath){ _audioCount -= 1; char show[30]; sprintf(show,"audio count:%d",_audioCount); @@ -1155,22 +1155,22 @@ std::string AudioPlayInFinishedCB::subtitle() const return "After played over, click again, should also hear 3 audios"; } -void AudioPlayInFinishedCB::doPlay(const std::string& filename) +void AudioPlayInFinishedCB::doPlay(std::string_view filename) { int playID = AudioEngine::play2d(filename, false, 1); - AudioEngine::setFinishCallback(playID, [this](int finishID, const std::string& file){ + AudioEngine::setFinishCallback(playID, [this](int finishID, std::string_view file){ _playList.pop_front(); - log("finish music %s",file.c_str()); + log("finish music %s",file.data()); if (!_playList.empty()) { - const std::string& name = _playList.front(); + std::string_view name = _playList.front(); doPlay(name); } }); } -void AudioPlayInFinishedCB::playMusic(const std::string& filename) +void AudioPlayInFinishedCB::playMusic(std::string_view filename) { - _playList.push_back(filename); + _playList.push_back(std::string{filename}); if (_playList.size() == 1) { doPlay(filename); } @@ -1182,7 +1182,7 @@ void AudioUncacheInFinishedCB::onEnter() AudioEngineTestDemo::onEnter(); int id = AudioEngine::play2d("background.mp3"); - AudioEngine::setFinishCallback(id, [](int i, const std::string& str){ + AudioEngine::setFinishCallback(id, [](int i, std::string_view str){ AudioEngine::uncacheAll(); }); } diff --git a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.h b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.h index 9152cd737a57..efb6cab113f3 100644 --- a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.h +++ b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.h @@ -322,8 +322,8 @@ class AudioPlayInFinishedCB : public AudioEngineTestDemo virtual std::string subtitle() const override; private: - void doPlay(const std::string& filename); - void playMusic(const std::string& filename); + void doPlay(std::string_view filename); + void playMusic(std::string_view filename); std::list _playList; }; diff --git a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp index 093f3e876fdd..ab1ea8bf1732 100644 --- a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp +++ b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp @@ -203,12 +203,12 @@ class SpriteInGroupCommand : public Sprite protected: GroupCommand _spriteWrapperCommand; public: - static SpriteInGroupCommand* create(const std::string& filename); + static SpriteInGroupCommand* create(std::string_view filename); virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override; }; -SpriteInGroupCommand* SpriteInGroupCommand::create(const std::string &filename) +SpriteInGroupCommand* SpriteInGroupCommand::create(std::string_view filename) { SpriteInGroupCommand* sprite = new SpriteInGroupCommand(); sprite->initWithFile(filename); @@ -682,7 +682,7 @@ void CaptureScreenTest::onCaptured(Ref*) utils::captureScreen(CC_CALLBACK_2(CaptureScreenTest::afterCaptured, this), _filename); } -void CaptureScreenTest::afterCaptured(bool succeed, const std::string& outputFile) +void CaptureScreenTest::afterCaptured(bool succeed, std::string_view outputFile) { if (succeed) { diff --git a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.h b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.h index 5318e3de7780..8090601429eb 100644 --- a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.h +++ b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.h @@ -174,7 +174,7 @@ class CaptureScreenTest : public MultiSceneTest ~CaptureScreenTest(); void onCaptured(cocos2d::Ref*); - void afterCaptured(bool succeed, const std::string& outputFile); + void afterCaptured(bool succeed, std::string_view outputFile); std::string _filename; }; diff --git a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp index 57435f4dd972..fbd1a3af387f 100644 --- a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp +++ b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp @@ -1280,7 +1280,7 @@ void NodeNameTest::test(float dt) { sprintf(name, "node%d", i); auto node = parent->getChildByName(name); - log("find child: %s", node->getName().c_str()); + log("find child: %s", node->getName().data()); } // enumerateChildren() diff --git a/tests/cpp-tests/Classes/ParticleTest/ParticleTest.h b/tests/cpp-tests/Classes/ParticleTest/ParticleTest.h index 49efbfd52f56..af2fd8b5449a 100644 --- a/tests/cpp-tests/Classes/ParticleTest/ParticleTest.h +++ b/tests/cpp-tests/Classes/ParticleTest/ParticleTest.h @@ -185,7 +185,7 @@ class ParallaxParticle : public ParticleDemo class DemoParticleFromFile : public ParticleDemo { public: - static DemoParticleFromFile* create(const std::string& file) + static DemoParticleFromFile* create(std::string_view file) { auto ret = new DemoParticleFromFile; if (ret->init()) diff --git a/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp b/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp index c323dbf3ab1c..3884598e8610 100644 --- a/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp +++ b/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp @@ -100,7 +100,7 @@ void RenderTextureSave::saveImageWithPremultipliedAlpha(cocos2d::Ref* sender) char png[20]; sprintf(png, "image-pma-%d.png", counter); - auto callback = [&](RenderTexture* rt, const std::string& path) + auto callback = [&](RenderTexture* rt, std::string_view path) { auto sprite = Sprite::create(path); addChild(sprite); @@ -126,7 +126,7 @@ void RenderTextureSave::saveImageWithNonPremultipliedAlpha(cocos2d::Ref *sender) char png[20]; sprintf(png, "image-no-pma-%d.png", counter); - auto callback = [&](RenderTexture* rt, const std::string& path) + auto callback = [&](RenderTexture* rt, std::string_view path) { auto sprite = Sprite::create(path); addChild(sprite); @@ -790,7 +790,7 @@ Issue16113Test::Issue16113Test() text->setPosition(winSize.width / 2,winSize.height/2); text->Node::visit(); target->end(); - auto callback = [&](RenderTexture* rt, const std::string& path){ + auto callback = [&](RenderTexture* rt, std::string_view path){ rt->release(); }; target->retain(); diff --git a/tests/cpp-tests/Classes/Scene3DTest/Scene3DTest.cpp b/tests/cpp-tests/Classes/Scene3DTest/Scene3DTest.cpp index 1a9374549fda..f2e175f9957f 100644 --- a/tests/cpp-tests/Classes/Scene3DTest/Scene3DTest.cpp +++ b/tests/cpp-tests/Classes/Scene3DTest/Scene3DTest.cpp @@ -48,7 +48,7 @@ class SkeletonAnimationCullingFix : public SkeletonAnimation RenderState::StateBlock::invalidate(cocos2d::RenderState::StateBlock::RS_ALL_ONES); } - static SkeletonAnimationCullingFix* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1) + static SkeletonAnimationCullingFix* createWithFile (std::string_view skeletonDataFile, std::string_view atlasFile, float scale = 1) { SkeletonAnimationCullingFix* node = new SkeletonAnimationCullingFix(); spAtlas* atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); @@ -694,7 +694,7 @@ void Scene3DTestScene::createDetailDlg() Director::getInstance()->getTextureCache()->removeTextureForKey(_snapshotFile); _osdScene->removeChildByTag(SNAPSHOT_TAG); _snapshotFile = "CaptureScreenTest.png"; - utils::captureScreen([this](bool succeed, const std::string& outputFile) + utils::captureScreen([this](bool succeed, std::string_view outputFile) { if (!succeed) { diff --git a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp index cd087e2f5eb0..63d045cfe7a8 100644 --- a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp +++ b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp @@ -554,7 +554,7 @@ void SchedulerSchedulesAndRemove::scheduleAndUnschedule(float /*dt*/) // TestNode // //------------------------------------------------------------------ -void TestNode::initWithString(const std::string& str, int priority) +void TestNode::initWithString(std::string_view str, int priority) { _string = str; scheduleUpdateWithPriority(priority); diff --git a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.h b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.h index 4156e2e3b668..1b9d80b93f51 100644 --- a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.h +++ b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.h @@ -226,7 +226,7 @@ class TestNode : public cocos2d::Node ~TestNode(); - void initWithString(const std::string& str, int priority); + void initWithString(std::string_view str, int priority); virtual void update(float dt) override; private: std::string _string; diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp index c3c67d0a463f..48142cdce092 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp @@ -82,7 +82,7 @@ ShaderNode::~ShaderNode() { } -ShaderNode* ShaderNode::shaderNodeWithVertex(const std::string &vert, const std::string& frag) +ShaderNode* ShaderNode::shaderNodeWithVertex(std::string_view vert, std::string_view frag) { auto node = new ShaderNode(); node->initWithVertex(vert, frag); @@ -91,7 +91,7 @@ ShaderNode* ShaderNode::shaderNodeWithVertex(const std::string &vert, const std: return node; } -bool ShaderNode::initWithVertex(const std::string &vert, const std::string &frag) +bool ShaderNode::initWithVertex(std::string_view vert, const std::string& frag) { _vertFileName = vert; _fragFileName = frag; diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp index 6d0d55c45df8..f1bd4cad0e0a 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp @@ -76,7 +76,7 @@ class Effect; class EffectSprite : public Sprite { public: - static EffectSprite *create(const std::string& filename) { + static EffectSprite *create(std::string_view filename) { auto ret = new EffectSprite; if(ret->initWithFile(filename)) { ret->autorelease(); @@ -392,7 +392,7 @@ class EffectNormalMapped : public Effect { public: CREATE_FUNC(EffectNormalMapped); - static EffectNormalMapped* create(const std::string&normalMapFileName) + static EffectNormalMapped* create(std::string_viewnormalMapFileName) { EffectNormalMapped *normalMappedSprite = new EffectNormalMapped(); if (normalMappedSprite->init() && normalMappedSprite->initNormalMap(normalMapFileName)) @@ -410,7 +410,7 @@ class EffectNormalMapped : public Effect float getKBump()const{return _kBump;} protected: bool init(); - bool initNormalMap(const std::string&normalMapFileName); + bool initNormalMap(std::string_viewnormalMapFileName); virtual void setTarget(EffectSprite* sprite) override; EffectSprite* _sprite; Vec3 _lightPos; @@ -424,7 +424,7 @@ bool EffectNormalMapped::init() _kBump = 2; return true; } -bool EffectNormalMapped::initNormalMap(const std::string& normalMapFileName) +bool EffectNormalMapped::initNormalMap(std::string_view normalMapFileName) { auto normalMapTexture = Director::getInstance()->getTextureCache()->addImage(normalMapFileName); SET_TEXTURE(_programState, "u_normalMap", 1, normalMapTexture->getBackendTexture()); diff --git a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp index f4fe6db3328d..6db1eccd60b9 100644 --- a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp +++ b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp @@ -148,7 +148,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader uint32_t getFormat() override { return FORMAT; } - void load(const std::string& filePath, SpriteFrameCache& cache) override + void load(std::string_view filePath, SpriteFrameCache& cache) override { CCASSERT(!filePath.empty(), "atlas filename should not be nullptr"); @@ -199,7 +199,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader addSpriteFramesWithJson(jDoc, texturePath, filePath, cache); } - void load(const std::string& filePath, Texture2D* texture, SpriteFrameCache& cache) override + void load(std::string_view filePath, Texture2D* texture, SpriteFrameCache& cache) override { const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); rapidjson::Document jDoc; @@ -209,7 +209,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader addSpriteFramesWithJson(jDoc, texture, filePath, cache); } - void load(const std::string& filePath, const std::string& textureFileName, SpriteFrameCache& cache) override + void load(std::string_view filePath, std::string_view textureFileName, SpriteFrameCache& cache) override { CCASSERT(!textureFileName.empty(), "texture name should not be null"); const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); @@ -232,7 +232,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader addSpriteFramesWithJson(jDoc, texture, "by#addSpriteFramesWithFileContent()", cache); } - void reload(const std::string& filePath, SpriteFrameCache& cache) override + void reload(std::string_view filePath, SpriteFrameCache& cache) override { const auto fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); rapidjson::Document doc; @@ -285,7 +285,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader } protected: - void addSpriteFramesWithJson(const rapidjson::Document& doc, const std::string& texturePath, const std::string& atlasPath, SpriteFrameCache& cache) + void addSpriteFramesWithJson(const rapidjson::Document& doc, std::string_view texturePath, std::string_view atlasPath, SpriteFrameCache& cache) { std::string pixelFormatName; auto&& metaItr = doc.FindMember("meta"); @@ -338,7 +338,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader } } - void addSpriteFramesWithJson(const rapidjson::Document& doc, Texture2D* texture, const std::string& atlasPath, SpriteFrameCache& cache) + void addSpriteFramesWithJson(const rapidjson::Document& doc, Texture2D* texture, std::string_view atlasPath, SpriteFrameCache& cache) { auto&& framesItr = doc.FindMember("frames"); if (framesItr == doc.MemberEnd()) @@ -409,7 +409,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader CC_SAFE_DELETE(image); } - void reloadSpriteFramesWithDictionary(const rapidjson::Document& doc, Texture2D* texture, const std::string& atlasPath, SpriteFrameCache& cache) + void reloadSpriteFramesWithDictionary(const rapidjson::Document& doc, Texture2D* texture, std::string_view atlasPath, SpriteFrameCache& cache) { auto&& framesItr = doc.FindMember("frames"); if (framesItr == doc.MemberEnd()) @@ -484,7 +484,7 @@ SpriteFrameCacheJsonAtlasTest::~SpriteFrameCacheJsonAtlasTest() cache->deregisterSpriteSheetLoader(GenericJsonArraySpriteSheetLoader::FORMAT); } -void SpriteFrameCacheJsonAtlasTest::loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat) +void SpriteFrameCacheJsonAtlasTest::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file, GenericJsonArraySpriteSheetLoader::FORMAT); SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("sprite_frames_test/grossini.png"); diff --git a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h index 9a2a6ab44e09..dff211ea2d4e 100644 --- a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h +++ b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h @@ -91,7 +91,7 @@ class SpriteFrameCacheJsonAtlasTest : public TestCase ~SpriteFrameCacheJsonAtlasTest() override; private: - void loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat); + void loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat); cocos2d::Label* infoLabel; }; diff --git a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.h b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.h index 3f786ef7c756..5ec457e097a2 100644 --- a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.h +++ b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.h @@ -78,7 +78,7 @@ class SpritePolygonTestSlider : public SpritePolygonTestCase protected: cocos2d::Label *_epsilonLabel; int _tagIndex; - cocos2d::Sprite* makeSprite(const std::string& filename, const cocos2d::Vec2& pos); + cocos2d::Sprite* makeSprite(std::string_view filename, const cocos2d::Vec2& pos); virtual bool init() override; void initSliders(); virtual void initSprites(){}; diff --git a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp index c7e56ad0d0d6..7ac3a1781b10 100644 --- a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp +++ b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp @@ -3429,7 +3429,7 @@ class MySprite1 : public Sprite public: CREATE_FUNC(MySprite1); MySprite1() {} - static MySprite1* createWithSpriteFrameName(const std::string& spriteFrameName) + static MySprite1* createWithSpriteFrameName(std::string_view spriteFrameName) { auto sprite = MySprite1::create(); sprite->setSpriteFrame(spriteFrameName); @@ -3442,7 +3442,7 @@ class MySprite2 : public Sprite public: CREATE_FUNC(MySprite2); MySprite2() {} - static MySprite2* create(const std::string& name) + static MySprite2* create(std::string_view name) { auto sprite = MySprite2::create(); sprite ->setTexture(name); diff --git a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp index 93d0b3c1addb..da0c09a895ba 100644 --- a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp +++ b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp @@ -257,7 +257,7 @@ TransitionsTests::TransitionsTests() } } -TestLayer1* TestLayer1::create(const std::string& transitionName) +TestLayer1* TestLayer1::create(std::string_view transitionName) { auto layer = new TestLayer1(transitionName); if (layer->init()) @@ -273,7 +273,7 @@ TestLayer1* TestLayer1::create(const std::string& transitionName) return layer; } -TestLayer1::TestLayer1(const std::string& transitionName) +TestLayer1::TestLayer1(std::string_view transitionName) { float x,y; @@ -333,7 +333,7 @@ void TestLayer1::onExit() log("Scene 1 onExit"); } -TestLayer2* TestLayer2::create(const std::string& transitionName) +TestLayer2* TestLayer2::create(std::string_view transitionName) { auto layer = new TestLayer2(transitionName); if (layer->init()) @@ -349,7 +349,7 @@ TestLayer2* TestLayer2::create(const std::string& transitionName) return layer; } -TestLayer2::TestLayer2(const std::string& transitionName) +TestLayer2::TestLayer2(std::string_view transitionName) { float x,y; diff --git a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.h b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.h index 7799786cb002..fac4afc4d9b5 100644 --- a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.h +++ b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.h @@ -41,9 +41,9 @@ class TransitionsTest : public TestCase class TestLayer1 : public cocos2d::Layer { public: - static TestLayer1* create(const std::string& transitionName); + static TestLayer1* create(std::string_view transitionName); - TestLayer1(const std::string& transitionName); + TestLayer1(std::string_view transitionName); ~TestLayer1(); void step(float dt); @@ -57,9 +57,9 @@ class TestLayer1 : public cocos2d::Layer class TestLayer2 : public cocos2d::Layer { public: - static TestLayer2* create(const std::string& transitionName); + static TestLayer2* create(std::string_view transitionName); - TestLayer2(const std::string& transitionName); + TestLayer2(std::string_view transitionName); ~TestLayer2(); void step(float dt); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.cpp index 03f53b4acc89..6cbeb88f7917 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.cpp @@ -147,10 +147,10 @@ void UIEditBoxTest::editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox log("editBox %p DidEnd with action %d!", editBox, action); } -void UIEditBoxTest::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) +void UIEditBoxTest::editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) { - log("editBox %p TextChanged, text: %s ", editBox, text.c_str()); - editBox->setText(text.c_str()); + log("editBox %p TextChanged, text: %s ", editBox, text.data()); + editBox->setText(text.data()); } void UIEditBoxTest::editBoxReturn(ui::EditBox* editBox) @@ -274,9 +274,9 @@ void UIEditBoxTestToggleVisibility::editBoxEditingDidBegin(cocos2d::ui::EditBox* log("editBox %p DidBegin !", editBox); } -void UIEditBoxTestToggleVisibility::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text) +void UIEditBoxTestToggleVisibility::editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) { - log("editBox %p TextChanged, text: %s ", editBox, text.c_str()); + log("editBox %p TextChanged, text: %s ", editBox, text.data()); } void UIEditBoxTestToggleVisibility::editBoxReturn(ui::EditBox* editBox) @@ -309,17 +309,17 @@ bool UIEditBoxTestTextHorizontalAlignment::init() { const auto visibleSize = glview->getVisibleSize(); const auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1f); - const auto createEditBox = [this, editBoxSize, visibleOrigin, visibleSize](const std::string& text, + const auto createEditBox = [this, editBoxSize, visibleOrigin, visibleSize](std::string_view text, const TextHAlignment alignment, const int position_y) { ui::EditBox* editbox = ui::EditBox::create(editBoxSize + Size(0,40), ui::Scale9Sprite::create("extensions/green_edit.png")); editbox->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, (float)position_y)); editbox->setFontColor(Color3B::RED); - editbox->setPlaceHolder(text.c_str()); + editbox->setPlaceHolder(text.data()); editbox->setPlaceholderFontColor(Color3B::WHITE); editbox->setPlaceholderFontSize((int)editBoxSize.height/2); editbox->setFontSize((int)editBoxSize.height/2); - editbox->setText(text.c_str()); + editbox->setText(text.data()); editbox->setTextHorizontalAlignment(alignment); editbox->setReturnType(ui::EditBox::KeyboardReturnType::DONE); addChild(editbox); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.h index 48bc16398578..0c1e041edde6 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIEditBoxTest.h @@ -39,7 +39,7 @@ class UIEditBoxTest : public UIScene, public cocos2d::ui::EditBoxDelegate virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox)override; virtual void editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction action)override; - virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text)override; + virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text)override; virtual void editBoxReturn(cocos2d::ui::EditBox* editBox)override; @@ -59,7 +59,7 @@ class UIEditBoxTestToggleVisibility : public UIScene, public cocos2d::ui::EditBo virtual bool init() override; virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox)override; - virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text)override; + virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text)override; virtual void editBoxReturn(cocos2d::ui::EditBox* editBox)override; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp index a30b8c0bf26a..4c87f6fd71b6 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp @@ -292,7 +292,7 @@ void UIRadioButtonTwoGroupsTest::clearRadioButtonGroup(Ref* sender) } } -void UIRadioButtonTwoGroupsTest::addLog(const std::string& log) +void UIRadioButtonTwoGroupsTest::addLog(std::string_view log) { std::string existingLog = _logConsole->getString(); if(!existingLog.empty()) diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.h index bf38825254bf..1cf449497b3f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.h @@ -66,7 +66,7 @@ class UIRadioButtonTwoGroupsTest : public UIScene protected: - void addLog(const std::string& log); + void addLog(std::string_view log); cocos2d::ui::RadioButtonGroup* _radioButtonGroups[2]; cocos2d::ui::Text* _groupEventLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.cpp index e30ad08900a8..a30bba871e6c 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.cpp @@ -1720,7 +1720,7 @@ bool UIRichTextXMLExtend::init() // RichText _richText = RichText::createWithXML("CloseNormal-tag:


CloseSelected-tag:
", defaults, - [](const std::string& url) { + [](std::string_view url) { Application::getInstance()->openURL(url); }); _richText->ignoreContentAdaptWithSize(false); diff --git a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp index cbd871999f06..f77f2458c1fa 100644 --- a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp +++ b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp @@ -41,7 +41,7 @@ namespace { { public: - static TextButton *create(const std::string& text, const std::function &onTriggered) + static TextButton *create(std::string_view text, const std::function &onTriggered) { auto ret = new TextButton(); diff --git a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp index 5388c1d56ee5..31f53bd0eade 100644 --- a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp +++ b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp @@ -41,7 +41,7 @@ std::string ZipTest::title() const { } -static void unzipTest(Label *label, const std::string &originFile, const std::string &tmpName, const std::string &zipFile, const std::string& password = "") +static void unzipTest(Label *label, const std::string &originFile, const std::string &tmpName, const std::string &zipFile, std::string_view password = "") { auto fu = FileUtils::getInstance(); diff --git a/tests/cpp-tests/Resources/audio/GAME_END.WAV b/tests/cpp-tests/Resources/audio/GAME_END.WAV new file mode 100644 index 0000000000000000000000000000000000000000..2cd195115cb4f10868c62c6da07ddaa59c9025f8 GIT binary patch literal 15768 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 e{cQC?7=-`lR4HxZcsfG055n(;4mSUz%l{3t` literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/audio/Roll.mp3 b/tests/cpp-tests/Resources/audio/Roll.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..149b2334b826bd4820074cf8f0259c4f06fba386 GIT binary patch literal 11538 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 A9smFU literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/audio/Roll.wav b/tests/cpp-tests/Resources/audio/Roll.wav new file mode 100644 index 0000000000000000000000000000000000000000..40ad07d31f081dbbae25d08c66e437167173cba4 GIT binary patch literal 20612 zcmbWfXH%Prw*A=?s%Gl{W~!#<-7$!qk;uvtLOBBhL>8E2l0!SR+wFG0o$qjsL{0*U z49Wr_A)!Q0BG_Ppu>rfC+iCVAusfW4YwirYj_q>SfuEQ5v-e(0*x6hb>we}BKS*hL z%<9HlLI39uKm72&{qR5k!07wohyOeOe}Z5A@9;a-!UYEZ=b$D{_y+1LuO58(~wd$`G&x&W&y#}@J+L+yRY}{^ zl}q7J*kl%&Nn#Kg1Ui9^r{kcoj5KB{E18qbP2r^oQiW+^Toyi;SU@hJRxld5zldMu zAJ%NYSobY^=Nul3)8x?GwAOLU=;W|z$T((x57PNjv?d@rp^r_#fJF{(|fDYaE? zA9N0T#uhc}`bVZy>s@EnQqh5=L6pbmvl$EujX=eclSvpNnh=kV#l>J_(qdAhQ=*fj zlcM|;o#e0Nn3R~*n6y}IEIyVPOOB<+XP}u0oD=~rlbBB}WB({VDcwF@S@z7%PTBNR z6Q&V^TGy}bo9G?y8SNVB8tNSERClU7R7kb=xA%7-1;6f8b*j4tx(B<5yGMJ*d$hd< zrK#Vdwhy}}mJHj|Z#`A}(sGfIlaWEBq>>Ww@z|J@sHE_OP)sly6_1JwjD?B`jE0Ij zFH|&AK{3IxA#tJcVVLlQ@RSH_6d{HjpPsp-(wu4?Lk*!NKRu=iol!)~aqhh0rwO`Y;id6%L~(cRqL($m)4uI%jVQuU~Nhm@oJ z8nu4dJTYT%&#bLJz1Ao$V2DU;Y1Xh`kj1ub6*DUy8mIbty8y zUxATD7!(n`ekOvurNM5INfjR z)pu(;#@dFP2Nf5*|Izm!%Kt!!dz!kDl6NbhntNJ%+j={cU47mCy{f(e)$qXBux8w# zH(9M-=kB6xhyOYKG9fobh+)U2$B?6l;keM$;AB){ASM7E5PvEDQry4d{uTSL*h?`1 z(E*?^s0y5+F<~(gu~Bi+@v-Q53_39}B^8S!5Xl+oBIafOlWceK)K%Tl=-Pm{-=UoD zHgy`>wXGA)ql#hqVADX8`k@L6QMs>4DTh+@HuttF+msii{e3ExdSGaHWPD7kG3u=* z&-9_Az{6Xi?Gb-Xy_}F2FN){V(*t;-TU$f!0W0 zpkjk#Lu13@BI2UrV}KQtkd%~`Lcmh-ERu*?#aQRsg~r?o+0aeZQ>CwGuFKhOYn^O1 zD)e%#e7tG&;qb$uhlBs2hC-O3H{|__{^q{czV`mkeni!NHJ}cT59>xv6L#&KVaIf1 zS~|=1QdV%=$!D0xxRRKhC}B7^lo661L`D$<@qxI2w1AXLNtY5YAdAh_Q zax<2QTWQCMchKdr`O)G?emE;MBba(Yj15TrJMlR$5TirTVdw}n5MzKiF%eNWje=tm zgyh2XTg+{)OJvH`mW(zG{NBH#TpW^Jm4TeC_4Y`vZsl8_KyJXP2#gs@2p2 zyow9nra^=jO4WoE^aRosE&XjU&ycBrXgn}HGCDD?*G%eWjmwkIZDlUu0?kK!nszHu zhR%%@MROyW;pw5|U}6x$n;MvW(ZfhTAWvR=Kzu-4KwMxPDn2+qG#;4?{;o(&NJ>e; zVafOm5}%SwZ{+xd4vDc?(>QXb-tJ#iy1MP1mUdICz6E#{WAc%v;if@&<}RMPrhcT( ziJQL@EB{KYpEa&nP8~%a?lN_o@G7+~p(s8xmLJWEq=i#LNx}FaEDCr769W9rWlkD$iMLd?RVb3=KfZ{#uvmxeqxP5 zXE8dbd^6Wvl1275^*iDCEq1{D*8%;GrcW0=JLS&^KYh6iF6 zMMA&E@rh>h&9%B0W1E9sm7~uBy!sAJ`*=kU#o)hcR@{>epPTV;!Y`Ku+pmSQJ6JWo=PDZw} zzXGBHkW0dULxjYJ#YUWOx&(OgQt>znkxR*^f99=Z*-K6LG`piq1I~V{($u5xLbmcq z3vA^JUS*SiC;RURxFs$&bC05@rMK08L->gY)WaiV8rXC*rlsk3v-u0$9qO-y(zL8Z z9-1CYi6%zk!c#+&f)j#ZLqNYG%6_Abyae^_l0ZeF{M$J^HWDF*zDNL#33w`rOU-A# z5iUw+t{9(d)ppS_J8kwI_%st6mD6!o)?r7#m9BNCyQK{>h=o;-9 zYE!qWn)_iMDCNEK^NR<$(V&193c1r-dRlwhdpni>%LmzcBV*$_?WA#bYQu43K6i)v z8?}^>mBvlXKvUv~G5$L(3=@hDjth!KA=e~y0O)$b8W0f(1$SB`@J5A3hsQ+5o?kzh zq~uf_j!dLeg$$YCICs9vBZ+&R#$YU^+5Ylcfl(If9Zr-X~r zUy4peS94cOH}Lj!^mZvhVdSb98Xg^=(Cem*uIVjT<4VpEr;eIO5Tr5_sc2#xE+#c9 zF#;179}*V~yr?KpGa?`yD(ue+3=0fLg`*;ZBSWIXq9bCWVq@at(3pf|WPcDDR1vdW zuvg&z*|Megj@yUKYCT-*qup?)xA(X9H3O@nTi)5!0oC5r_7JM66{@YNP2MJNS9COY zwsy63ck}>rA9Aw|4v&rLv_Nd#cGvjCADJa&5ssBi#Sr7LG09O05$LeEkl3JTpp6Jb zNJB4$Km~uRfZ%|Tz>vUDR9H}WNJLm}_>$bq$~^aP9{Wm`{c zcXOu#c;$$$EltgTEqRN)Rngkq*3!||+0oV2)6=W$>xZ*=WJEJzG|WsbIM3FKKJtrb zLJ|{8Ny4L3RwfMUuSQ7cWYNmM{~QP4b*IrH_Mxw z6iCSx$gdSGik9ZqmbSKz_Rh}k?hD|-A*3hFMu%5B}fcCF*FXulP0HQed+FLZZStd%^;9cu$ZKHOl(|qOk`AeL}*wru%ZyUz<|Jj zfJ@&i0Qm@n4-^U&6ciE?76#0b(b3Sx=%hq!8W7Wjd|C1SiD!P=W-v}@hDX%uzW!ci zcTZ-la`b#ko+f!EI$e_%ox$J414>m-UsrEO zPuus0&Oam+55E^Ye9cWQ{!wv0+PXV?yFptQH!&pX^M?h#`*!jW>je->oM-Xz% zC&Fb+qA-{uVO8@`7nx?Ud^l--5TqN3F5Tz-Vs>O z5TCUwk@bw65>2q6AGZHlu&UdeI)E3>3ja~j+X?XxaQJ|-TKbXm$A7NDq4uy7s^h%iPjDWu`2(wV zWk+9Ezu$a}42^@r28+cryT4HONO&uwkSI!HC(_X5I6`z&!HnBNXe zwQxu3u9XZxp>rfz+w7O{3MU_|Bq2(t-^TrbQW*gGgV?R&wJDqH&6kgyF5sdBJ? zSUm#W>?nj3;b>4eAub7>l9-l;Cz0q>5xtW0NaQY%82m6Lqqy8S&TOh>TbzJrc*XReNpRux} z9JC;g9g`77fq(++eo!h30u_i|A)q*qQ-B-D{YDxIGLcXPVju|HFwqIIN%1L|H0WUh zoS4)+#&6tJkt5$!qj@*-Xkew^t+e-8x=bBNq%!f3Nab6o@|O^(Mb)P2PlQF;NLINpZ>O)FdnxPa711Qq2TxSneJj15ZbzrJeX`XE(I7C($Irt|p!Rb^ zUqe9@pl(sOs@n%T2D^rOhLt0T!Xt>n`WfTG(av<|d=BOXSl$5q7?L}f(?!Z;y}AR3AiND3qd-~+Ii(k`W5O1X4Fjr0gaSr`-s zh!esRA`+vLVv^&ahm){4JekNMWm4+XHyKWjS*XhzEf}m+-BTX-Y;`Snc-m%LY|R#h zNp6(uo3u@uhZ7IS9s+d}5^N61hvb6_sFuODq4uH9;qH;%(f%>@INX<7gU)K0Gd-Is zw((}u-NgB{^~7EDo7l$a(nx8zI8+eK31Xnq11W*z0Ac{)67JFkHS|YPKoUHSiKxV& z#E`_$#PFoZ5g&k6cK3MO$FnI7YrkJd&p_>913M>e=tw=vZv?w9G1O z3X9w^WzZCLs!d36eEh^=Hb@i_TkQvu92Qm<(O)GaN?W78>X965-Zz5 zapC7uRx#W0&tiX#z7km+o*OC(<^{1)j6hl-C4d}20%rUrTmTl{PJnnmFeNY6Fk) zx075rPx2DR7rz(#GU{eTMR-wYZm>9rkKzO}18D)&0E8NphW@|>LPQ^!hDr@e4NeVB z2}_MgjY^G4jY~sg6LD#HIN^z0Qa{ylta_*n6URyk)#?yko3$tb4q7yl+A^F{l~SB0cOdtQ+r` za;G>}>I`8v&7C-pUWwg`K8*Yj-WVneDF~9FL@0hBFb8B@FoV(o1bE{H8;C`v1*HY2 zg{Jz6(_+#Pg_CeF*9Z)vh*Uw|qj=ISbUkx|Gt5_u`m=lUyGuLkI=;3Yw`?oc6!UVo ze70$(X}alxx#>G|^Ms#xymS1V7*QDJn$Dv0==Y2jCeb9_Lb74)$xe(XZZT#pYAfO> z>`O>}unbjzk_3tZ_yL>%V7`>@*O?SR3-@z?}hDh@(H z0*8=Gx=&uEIH)F?mNCj2vqPjpOlP4rACLE!-nY!0nSXV)$3-x>-`JahUKaXQVG=s>&TJTZ$=>k&I) z$047C8c=1Z!oZwBv7eb0Ko3awD-E+FkbuGm;e&CZxG*fdWs8l$#$hoyP#8zTXAp$M zGU5Sgj%=kG(kC)T7;1JuPbugTcja^xww1LuG=EVXD|Y1T@l+r3T)%)eLJvVXZ~y)^8aa4cSJPi86_|q}USd=-F6zv^R1od?V~p z$g|*2s76#-;5oA(fE&OHU<70YQjyt#A_WnH38DBfd;~5E7mbU

d!v9-?gmn;;=x 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 literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/audio/battle_bgm2.mp3 b/tests/cpp-tests/Resources/audio/battle_bgm2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cea00a41d196bae0b2710d78e1c748ff27ebff76 GIT binary patch literal 2216260 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 z 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

G{nk)m?#Fi!L;dZ8_`>JjKn(VX+oT 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 z%0D^MP-8=pprOA(f!)3CPQ$x=dCJQdj?in;;&A$9xLtjyyN6VFGRI_d{K<)H5kAO< z3NII@+YN=R-bL~jV4G2c@4+C5hLKwe55wh+;8jDxM2mYiE3&hIO6G zk{bT)fv;m6L?v^euxO4*iRgI4Sc2Um3NZ8yR^auYXUL5wSK1pOxB6BdHY}SyRv0GK za4T8$y~~ZyuTR1XIo(1@I1wZ#X+S}uKjoJ6j&Ta91^BumO-S}bJ>g`?TJiOy9?GV1 z(l3!YMFx#_Xo+`P#K$vuGy}7#2!pLfVwOzn+r*o?u20ZOH#rWFGOHrT)s|Eu~3f3v2%z|*Aeyhh}fqb z(ahfIGH+&lo>kp!(JZ9M1YjaqibXeo$&p{g%tJ_#Om*p$ypb)CeTr?>?oYM@NBCVb-QywN(@}8N%6TS*$L+;@?Yt621FHlo1XKH@&U_Hcz+CKEV7Yw? zMCQyNlSi?~tuhbi#e3--vU}dR5FH0Zu9MwRGlF}VR^9$!XugsFRZDE7y@lP8lID8M zi9QVtQ~YH?_&tnFcbbgny~5oD#QLct;WOku6JVSeXj2;mdO&T(@+FT= z$f2f+czsEeU9W4x5;@&@SUyOb+p}ODbzqjsj(Dh0Mf^!s`rQrOf856z9(zGL=BO0z zF_LLVI@b#`3RZdFfEfA(HgbRL(r67k z(H<<%9ajROCgxPyh>_av$(&053W`szCd@yd|2!pSakt;+XCClFvQXX~JtVstt&Q=hjr9GTsdI*MK7Ymtau)`x>8lSgc3Q>mqMS*SWe3S$dY@5Jrqqe?=h z4K=RI!j-#t_&7i^SAjy@|D?b~ctJlD)`-k&j5SOh-zvmHL|1Ccm-*!?(hV)s&L66} z*F=e`U7abkg01haw}+O{yV4DOjqPmHe3pl%KTD9^IL>UF=%!^lIV)nr$y-*g`VA-; zga0}q?$Y{&IdzsEuY%qh2HopEj?YwMy&{6oO9TA4SwXlYbr|N{pXfm^qyN!r6JjXtiDiir?lJ|8dZel6ffX5=_mB`};gN_-xb=zs#6^ z`O&eWFGHD{x=t-nz)q>)C@3!u$E%GpMlrWo4r#FP!87Eh@S|~HNViR(hpnTSmBq0c z$*tzI+h($b`P4Kf%U{EM7fa1oVnWvTBB(L^y9Emy5iSJSFqxzt=mMN27HjAJE3ePO zS2LW{a`aP8WnqP4EI}EkgQg==8GsQg#HhglCXi9Z8cA4hTM1;aWAUeoXWl4^$}!F3 zq=ja;+eIuJ$>(OMJ5ZXxUXk!drL6n+Z`AANA{lyAyCgCX)oaP`?CaE%e+S<&)j>wp z5N&LrGx3MO7v<@+&hO))6Mt$ojHTCpqJ$uy{n|%e7AUbXIp6vRpyq$_@uoH_yuGAM0KUr<`%+bAk<%yHz&28h_em0CUyLMK_;f~tw z=Na6aabMhEg#{Kf{BLL@?3M$`S86LroTda@yO6+*C| z7+KsNIa?8olcm`V3epVh)@J)V; z?`FWiI?s?B9IkPAhTK07F~)=s_>FQO<1CWuBsH2qT1$ZP0rM$)J7?CgLiHIIR^4B0 z3cD+{O7)QT2T_gQz%u!XNC4nn)T~ektL%-htw3dTgQG1lrJUp35$YRlM0BX~xx zqL!CyG`u{dwodcY_l=w{_y5t1`g&^!NXR;O#nX|^X$08*jT#|o(8bS-Ah~t-6@QUt zU|CqLHmzu#Uwep$f{UY7!H|&7`U|Uo7+LawlDqH%KX#o^%;M-sf=(K!i=r5LqSS?* z-g?__YE@)WvGES(EcUNQr%^Yt4)ed>p_9$tu;TNDx`v7damw_e3U$%z55;i{i_(dA zD&UMcxiq-Wzc;Xocjjy*xrSKTbZKl@gh3nNRX3Y-%FvPrKdfU7m$(9xWuh9^vdnSAWb&w=_c9luA-lP?aHnet*@&zX^pajI=5D++{V-XLt$~K=UBqQ!Q_}j_mQ`hF zhOD&BfN4b^M_M(V4PEaoF@#Tk?0Ym7BQP8L9$7bQl96g4N*NPwZ2cQOMydTrg6at> zs{1WWhw9ZIlJLOlGBvgag$ip>8g%&ZDvXg-6vn8DjySP%l&=$`lrNihxoU-l%TFoV zHj64IC*VXU3EAVQCF*9YQ!&NH4_Ye>#k~e9WL34)syq+5rQ}1X{(OO-s#~hce^ z{Xtd!dB~lyu*SvY1$tstQ~YEEH9Hjg#VP1Q_goXtXlX3SIEoo8I@!UWzv(`GUry^J z`t9go0@|YXN+f;bgchY=aJ2GL+LuwoT+xVZj|>#GEkvR@P<8OzHjg(uN>aZNdts0E za1u+m3AMBwA@WVyg_k>mH#$#;>b9cx!&7_uSZdGvvy|XT$KDTwL4GcOx%Yvv>FclX z^xt3S3SY3f#Pl~VbsBx?f0}SIu`UU~8nWKat*&H}1fga{zS#^LukwS0KlLvQy&lAG!vZ;*%$>0 zwVJGuxPyS^@pz}D#Bwv~*;(tUXvaDCm#5i{y~)7_a=8acJ^2(S6*ul3YzEqNO} z;NN=3>%Dxf6^dg;hN+N)dY;CjWW||=&d)_#&@BShz8oXDVdGoVZnLR!YdWJ9jmG9trI8_|ySr16(1&k)zkhJAb?L*I&-iYn7OBFPKylO(br=n7L_7Cl=lX0O|Y*OJ@sj7+U_2F0= z7`0(bNv)yG#5#!ag7mo*r?ncQDAXCJ(0@B;7keT5G^|{t_&?{vbnF2DGD{(7b{mNf zy|qU(f@F&SPcFw-dNh{9?X69)d52!ef1fVJ>PCn2HH^JHF~y zaErRf3uXHT#hJhh3Q3y8`wAXgnj%0X$`>3AAoO^yp1R^bqTJ3HpVKUdW;>v~qs(+b0$ z>-CLD4Ns4K{p7~ctTuG_;nUym`!|C~X{j|&{b0STV!q*95w>B6EN6j;hZ%f zB@g#n0#PzV1_#-Bdk^c8S}HJ$I@S}9#%b94Nv1=KFC~Gc|9kI=si4uZ%z4CDpX|CN z=h~hMCkYj!*8B>b22^(Ti0Bx7P8LO$rSWeZ{mVT4`D&>VN5p7z^n+2Zideg6ZV z#s0NlIPCP0d<1+9scr3QlScIcu)!iv5O<*hxtBi(J5%7e{GY$eVh$(FSp6q~x7l^H z?K3M}E~hCfDdBj)29stgo2;hsrV^H)-`$WlV-c9Q-cOCl8e3w1>Bx5_H@9e|Z7y6W zDy`Ya#$k?-e~+TBdYC)N%rp`R0QB(yrNUA(vJ0|}1JSrtrkz8Rv`iWf`Bk&G%@vJG zDcE~B2^HCo1Y*z9cNq)^e>=SmZgTN6P#xYRcA=?lC8{HD-R*cF_1DqkMJ2$;?1-4Y z9ad`xuf1_&y_FwixY3DR7tbT*}Grubf_N)1CHJHOkn}*SJ zacL#P);l*$jj|pfScij>TsN99vZY^33)5SDlE$AN^u-|F!S2y<>Y<(<~Da1W)4*Ep}-iC?!=LA<*qr6th^6QY6DHk`+;WKg(V^f#D8Y_ajiXM)LxCXi;g$;#G7-Fp8w>#N z#Tp-@l!?^Ow+90C{@x-;bNiyI^Fm2v8aNWi^iREthq68XZ91;hAcvdd?uR2g^3)2R z`S0(OqrUJe|1fGX%ldf9L+~+@_x!YO09aFA8by14R#M!~V?1hQ(DuZbk6R+|Wco`x zy^8+q5Kx@5{vp3%2QxDyk+Kd#GwVLre}*THZ4{4e?E!^V_xJI&p6sT{exwAQ9CmAyK6&S z|E2ywIR1}#-Bjn`!lIs`B@F0TP1yLdW+hs*!BvDcfgQ5->HYzL8wj8+!<0zH!)+t# zD3_A=|J#>9I;H{R!9kd<)nV;76}7sCl|TBRX|0AJ8p7yNkj6|@dgreMoVE&o`II`I z+C0zuR*CvnMU1`7K0ICVP7Qa~&Tf7iHWIU*3{46vHgy$IKTNW~kuubixeJNts~H0)*Ife=H>c{$v_L$*g zb@P|vyE)D$$nTT2IuTGl|pc>j?DjKKFA!2pw?K6@m9HZH!16rsGVr1tp(h3`xw z?OeY0^Lss7-jL938FcNs?bY#JNqQ?bh4Lso?bMi*x4VUH>7v@1P+6xOFWal<>s@v^43%Q>W zD(==q)PBqlW^aA$ZOGeO*+zpG<8{oV01-KSxLWxg*i%7|u`Gs>XT^XEU<pMj`gMLf?-_AJ^{>etduPInD^>{o)D1UktY= z7ky2vF#E|Z<5wHCHsu6lm`no2dgFLVSNZtep(G(VS{Q7#dzw0nfKt#^(RFf~Tv5M{Kx zx9pN$Wb5p;WH`JXF1oATMBOp0He$(51@VIfdKa6Xb>rMsjBl;1tbj9sR5Z?d=2$^@ zw$zOf1^f=3t1emc6R|hPf*Z@G88%986cj(ECmtv86b@BO@zc3o_=r&up>ds}jwE0e zmC0l=Rb=KQH#z|k{)Vb7`oi-;K{}fXejdzDOa;&X{#J1~3U1AdXC$h~WwDj}P|%FNyU$uu`qZ93Vw$6ylOr&HBpB^=3gEI~_l zKMRmSSvY$x_yi`5*5JMhemhu|v6#*SUgr}%J2PS|*FdqEBv3f=6G7rf8wXhEcg^|& zG?$w9oCs_v&EL{)-1%{kQiFDyU2=-=Pi0759|VEv{d6w@_SWb=_-?0vWKg;a7ax2iw{}TosBr z{;L zdA^*1re2yUvg6UM6NH$)vf2zr#~r$6rI}Sx5J&CTyindv9oX59?A^`O8{C=s)||Yx z8p8igATK>N95CY5mnOFItNb>?RobcU=}Gvg1PxmPu-ocGxg$b)rFoX)@>4lcfaXn9i#k(smmT_`V*J?w)ql3Kozxa-;blUc z_O#`5w)^^JlSpT>8mWdJI9Dh|RiLS0qqQa%&@d8qxbj-K-KWNH%f^`4TK@?uED?b+zi zHBih=B%>O5i9D7e)cRZOOC2HWB&$`jQ0(G!=19QfRQ^Fwyu*0AzAuK*e@)c5fE+iE zNkmCx4CvX^Y=!Q(95rAmISqI=E^+et+)iJq=>EKZ#X5R%evqohpu^bZ>q=r`kyu1z z{WCw9NWlWDzIzrlr>t4ntH`z+2t~wG;hGntgs3fviQ0bFsS5V~2e~f5-YQrZe6Dz% z$x5zad1Zv_D5G~S$~FLoCz9kabP!HXMcOyDy(W@}mC9a(Ca_0Synp>!ujwN7iTzj~ z6fIty=#zn@O~o|;Sen!)lDFZzwy)i;Amxn=BK%EL-(%stqIDL+s)^z6A^Wq;!d+F` z%;n%(sYU4n!}lr(g?5$tfzpSE(>diyi)c+q^wVfm-n^(xXX-jWc8cW!y6kRY9%N+0 z-q^haT;ek7X^Ys=@cXZedi9qeEd20(8}9F~pIZzPOtNg2bwjx*X}HskUln%WRl@sr zn@8MXWOQ%7F!QNTyO?S$+E1Jz^nVxmPF9WFmPnt$b?(@LuN;o3Er~(#l;#RsBG6Yr z!z)q9T{3j9S&kJI#}Vef?AOv2sg6la1BkL8;Eo$YE8!FxbnA0_tXDEv?2$ z3Vf=!bDpn(jr>?>rLj=wZ~|cwv%p(B5RZ3d1$+F-%9LX85VaUL^N#I=zFN~Z zID3i55EIq^N6ASq|1w;3$Y01Ecw1#2-;dceT%FWg)(!jwysDg-^l}?JL8REQ-AjHJ z8bihTtx*4@z*?Iivth-^>vv|v(zjh9YwYR2S@&t-)9ZgJU-8Im97Ax}NtlR>f2qB` zK3UmG^5)8}As{e_>w<&S^HDT-BHS4?PqjCex+3u1W>Fr8z#7~_zKWdBPbJ3K#3Jk3 zFV1ltyj(~m0rd9=mpUB!SwXBaP2Eawz_?Kaqw2@K{gq4g$$Ryn9*cjFo4^@*0{`ob zyUt^UxmjL0;a$l5&&F!WToD&B=7rp_(5kF?3hwyjz6tcG@Ux^kUCnv_P;wyH?2<&@ zHmQm0d-ZCB&J7x1cviE0NA0ffPb?3h4LvpxqFR?AmDoXH3b8o?|40a}1p)Frq zXC{j-cb?oAYBYEM8(3m$M&60hI^2$4J>uvZ)9F?C!6ov0WYtU^2%H>%J zlCN$9bsI87v#V~<9sOjUoR3;EcaNLI%IGd;AO0-B$p~bSJ}ao;Ev_JunDv-54@=qb z%NSGERgS@TaG3*5S3jKmx7kSuf(IgXQNj=126R%an_M_4vjGhTrvKn1mwRU!{BLT*pt#6 z$>O-b@Ftp0N7ZZPpe&M^u#Q*ffm0(VhR_wXl zH6eSZy`D-uB3F3brPazx=E=IhGLMl;q>plm|HYbEP3?|zaYKy#zq?#tY#17NKAY6% z+PYk^O*GPg=&!z_Lr)xxm$?EvR@AFzTy{p*LQVS#dB*1Mqql-7eeqg^Lt146bDSMh z%zsV?qb`bjxYq%(`_a$u$w}UyXJ&3%iCMuPtfYVf$IGF#{M<`vr*A!_5#tlolWuh2JuZ?C{;8}Kh3u3v zTJ#$Ga`=1WL+kDa{&`l|r*H7qKA#csUn8$i3vG8@qrFW*mBuV9$w_=gPiE2GfocoI(S&Mv>3AD7=1mq_s>Qr$DW*7hRKOR!+#OOZQd zj%RekUN~yUnURqL5reSkRQx2+Qv#V-Lia{P>dTK-_st@PoF2-)kE6{WJy(nP@G-6ZLxHQocwvcdVUp~`#CK^3BoTQ!}wT`p5$@tY{x)Yn41I1#dj-$t6kcwGp0^lk@b(+eywy<#5aY07 zBC9+~%j&oon<%P>H?&n-=B(&HK%{C*?_Z22YeWKvoba*yp?XZNQ5Y7X^MoJyt{N@u*BeiaP7moLpf zDH=z^3ptd1^;5=cCMJe~+HnxMuk!d3$fiLpdX4^Nd%&`sB^9VWZ1Ay~x2`JP!Eo%3 zkeRa~J@*!R-&yBkvc{EGK`!gbY*^$(R#UXI=gzDc=1AQ?(1fOJqxm>#n=N9e)IMr8 z`@_q$9MxH~m8qe%43B_jXe>3YsKfRou0{y}aMYnT_F zyCmpy`xE;1D8dgHzt8_ZDCaqcHLY+`*=GMy(OkgJ7uVSk{qlr;_)GTrgrq*d%qr|kDV_ONSwasdxfWu z?mX|75WSN^yEoT{#jGw4Yj(YV_nPH7>R;Agc}USqjikS@l(xKIyz|JZjMcn6tl#l5 zH$7iOb%o#O04dwDBFwR?`E~@n)U0UKfn2*3qbpAWj3Trc3(DIyQfW;PpZ5?#nXRHU z{EVyWwkaH!BK(q}R=qg}Fk0?M_vo?G`O9ct+5f~`e+!+YjM_2-2bZuUXs0Q)nl z!?n0U;Zs(XD`+BOt_uk9$1Ogw^noW@K8(fEloHv(#C+4^QUWd*9hjX`nx!gr&CKA* z0SY7jRiPkinPj<4Q!?Qn%Hx->VtLY%Dkj*3(MZfCOhJ;8B<}XUGW~Ho-(8zxmJ=_|9NGC<6DFquC?nzFFwdUaonvj3^2sWR*^R97 zlSp**aZ%D0#WC6R+3Zg;$QojKYHhGhjEC3pF=IZOMIspE_Gwv}Z5vUV83aaW-;UMK_h5sF_FdP&c zZS`!ZlIs^3D@^plm{>tZ!qFPDzm>USBcj6VxabO4DTiZ>GR|+Lp-%}kSBOojG5GBo zlHIoQcjJ5$+TU_r^Rn=|ZgsB^joI>4sWjj0yA|NI_ooSBOp~m)^kMyJHGrNF4FMN1 z1tmIgnX8FeOj6J>L6PpG$FG81NmPoDD9$`9yfP#HI2AdS1#zf43~KiJLz>wf{Pe2> zyP`gU$ETGvpI*6g_xS?aGF0ShR!Nra!?hz@(vb z5g)kJQ9(b@oZM}I7u7@|h*_Hq-K5{K(M2X0v(srVmY>zu0s8V6pE732P0wzaWsNP` zsC}T!HZE^0|N3z#>!8n`1xC>N%J=&C9K6RD3PZYB95vj?zoLIY7@sR`(Oe zrb3=xd#_8SwusH`F1EnP3VT;fmvkvZ*sl;R#o@PF>j{f)i6SKSc*|l=jqeOw zo;SgcGRW=AZN0`_kDB~h)D&od+M8X+Yplafd|8%N~H`%%~D*5l;V4L;>a@Zbtf)3{lNvJ=}JQ7;fEI-Rh41Dn3w*r1~j(L8xDHu%s= zHOF8O6AO&K7bzMR-=ZuSXL|67iNxPg-(H2ASLM&S&eO#o_>lP!6zFwK<2uZ!4w241 z!1l4c4cn-2aOBiJi zmo26SXrd|Re$!Y0sW*LmlkZ%H+`cx48mf-koO|Ij_bW~ z!u$T*Xub2)&d?_DrDhr zwyKe1eu(}_Ox*51kS7z$wU0i9rekEedt(|10KAQH7D*VOD~d=UrCT)mto7u?ep6SB zgGXtgI!A@c4Cq8fBHgwoEmyK(SybNd#H|*m&cg5@5X+i7`M?WAnPjjEcn8UAkkFSp$7=lW&Ri2>Q&<)DN|V!Wx=uYeRrX%x$;*reRwO8 zQNZBe|H$5W3&Z!9LZN`UVR?xt@?reI$FMNV)3x_MhT{|cJqnZ+O1Yy_ud)%URnuT zi)(M{C+YD$r&{S4|0?}vPbY(Ao2EP;p%6`1*~ZnqjfLJXKlydn492}>*;}`!xq#jI z2tyf*7JTEYrTm6jXPNiV=&;5@z3Z{&dCT+% zrLXHxu;;;SdmYp=`?j*%@Wh}bO?!)63Dn$l?bl@*o;7N`Vw*0QYtZ#9@B|lE8QJCl ziifJ@c_WGb?Bb9fiPuabPgy4hAeXMJ&7d@k&7EEpV6&fDosv%!cy?$sHs)O@Fdh*L zUjHF=aCgj&#wV~yZg<3WWJ@nJEVm1TMT>EqFbP?;E%{n$MVf!ZaT(>$Vtbzgw!c3K z^PLsW)_VjKC0d99XB6h>3nJE|8u=aUEp^R4FLmupum3<3BtkPERXBE7qbC%cUr=dv zG10Sm2f3P=bxe{z!1X-A$Ig+Cqwd0RAq-lb2v6gfye^8bLCwuYf-N!E4DE7%-V6iO zSXzYQsCU`y$rM-Stz;^u%upt&W{C`ZoSinba2V0ePFvQ49Gjzdi`$0f-Cs{^{_Fpp z#M#eOng3TB7Y7q|vph3`L`kauGwU0`+gPi)y(7asn;Os+W+FCDrtqM1jCOct^4nTW zU*+!#0M>ZO;+V>~NnuuhS-#EX?~~|aGT%6Xj?>7OTKn7H|8}2O zas1rw4=XUMzPYOBFSLx7M5WGfc%R)htboTI-G_PZTE=oR{22bOtxjoKrWd|^cD)OM zE6p+12f`xcb%~d^t2M@pLBLa+i9~-{5@d!3E+6?KJ8 zOShMUR<*p&Lgk%zYBb?T>0yRmrn#l>o}1<}^Di;sslQQwqkq7+TFHK|;Fck_?&!eC z#SAzFNTBZ15}m4#DfQK6c32WwJS)F%wzq%JY*G;J!-FaNjW&hV3h|y7DT)0dh?mwo zlL+|``t{?>)TYR71qK318kbLT7k2OQB_p=;1-8I)2E_5aF(#bD_VJ{%!a9ZW-;kS( zAA&*V{`tGIqscXFuZ+~jcp=I?n5zsd|Aw4*w0bX>uFZFD4Qmn)u}n)3oi_tqm(~o~ z|8C|86(`hFpo#EXzCwgZG$-5=_`j|eSd@|8bH7)2Fd(Qb{l#OaHc7`o|F^3t}Dy5vT{nmY}bW{@(M!+Hc(^Lyt6<_?Vrb zKUrxwb2(73dBb5btK-~I>E7p+OF%IP14!$CiBO~usp37B@ zwc2|YeO|to``nIOA{bN|)Rr+ncB|jc6o46s;niAP5|u;7K2U-ifz7fO&5908mxNj3 zYnNb2v#<|Z%^J`!YbC={6T?cUH598J2a;Ad7(TX+uoQ7yuL|#h7c#vLP3o(vLpjqy z7p2t|IKb1jNsCBcb0(r>Vn=?n)$HY-qA~IP3F>NS$rvtvWdT0oepMuC5D4ubeF4gT&s4?r)_6i+6db=M}D7Mu;er-86Jh~PQUL8zZe)-p&VLTE4r}cjxCcve;C;~ zxsg3T=)6{*xh%We@(*sx+CNjbJ2n4Mvr#4L_bt1<^69d4QD^4J>6bm~>hD!#002KA zggPi96Ooqau+J3FkJ*)L5>zmYCjw?b_>$EW{-TV}TyC|oAx%gRD`Pk_LT6wHjK{ z>he|$hS}^(Y|C2CUVPJpf?-bLaHP_dKA8-ohnsuo={&??)Ufqfq$m(jB8V!R>17*2 zk}3x(l?@!&Mx;R<1yCmpOQ%2!K?z7&S)k?Cpb?+VV-L?N5skEx1 zyyE!<1;166=Z?$d{UwN*a+_!<>JC453Ag2^A5SOssWLtiQ}d}UT6vX+R$0RC_}Lmu z!z}qS3=gcf;dpY1Ek>EAMq?q8p;8U_!R;2avN48zI67l}@UMDfu$hcIu8QnaUVuLk zrr>>|7tvwVf!>I#NEzJU&Nqmww}b)E%SceU?&ml>86qwzW?1 z;LF+c3j1NQ#2f2Ue%+{YUepDN!i*HPNd|i?e#(1v{&H?cZJ%!ej#DKj6D9v3Hyt`O z0G{oFPq{SoXKA>L6%r?{=pf1l6J@SYf!7o|Q`^B<*9i*r(KNJL>eOi`zB^U$b!GF6 z5vZ^vNLyy6cp(TJp(quq#U{96psc;a4Q#}<3(FdrFj=~ErByHAN6$&p?1NIOCJ8YF zxn+CNHuj7&xLs2KqYdknj2o5jRTNUYYds)S-t&`};ysW;ORZpjBWh4TXzk0)0EfQ< zAwN^0Vkf0CoS)gUBFl(EE)FYXEMnqLgFW6Chy&^M#mQ8tx+Cm|inD$a{>J2lCsl9H zaP#jh1{xp?l55EqRzwC1$8IBHn?SqqDbekpj~mDo^PtE&ZU)6R$>KA}7E4AWZnR@# z?rS1(=XzXMq*GvY4ZQ}otcVil%t|e@cJaU5;+4i$g5+ACpI*clt8R3Jmf61gZv9Pf z6SdcVRV_-qy62Q;P%q}#ndR^G@foBVXS_DHdS@n}4Xkjn>hAE+)T=QyHDU(u8{(>R1ldcgzyb#mOc_{`8c%>ufO zOg9D<8z5faIU7Qdll<;_dN6}= zgbOByncOPqcU}Z&sPZ;DPxV_J_{ILMN(PtnQAjp8M}viEK&wO69a8bTWMP-kf-7gm5_Q<<>)kSMd6Cj^}Y~en1Z7m z#mae=(wxz#^0xG# zaKdaS=Qy>gywTS)3>jl@u0o`#0Jyo^15wyUXw2FO1mM<;1ZfJlOk*-_>YKXgs9SGJ9&D;fTGg5@Urw zAM%%@;@5NfP_ekn$1z7`Q=5B_pO6?>f`a*zo_I}rW)4hAoI#&fy)eSryS3J+5M1h( zPn8-E`L3l3BKHt=Z*@yKJ)&CDk@Qlyy1?TZ`VXNtv0sCm^xwTRiZUOWNZFLfrS+OL zBmA~F!KP-ryj#>fbi*Ci>L}3DCQSoz6um522OHIicVGWNb9C8*D@iHXf z>1=N^I1>!>f#)s}=8D6a;24-wx%FgqkJq9pj(%QA-C|f)2YmJLdDW3@BG`J1Tl@K; zkb~;)jU)7!yL;{d{%%F+62mvepU`tX&bGO{=BEv1;!+0>=CD#sZQ%PYn6fB#=JSy$ zy1MVGo2jL|Ay2_5Ajz4~EqiA3P8t`y?)ZI}nQfisbk6pX^$n_;`+4UVF39alUYj4q zop^a}=KKW;6z^9%0RW2pAFfQX=%|`v_M~Jy%0HYTV;;B?v}D3tHAuG>(}OZ5_{&e| z3nabp<1{9X_9t77)V)&4rz(cFj~|q1iHmsR4>O`MXm1&YtOJY zCk0W$f~bifSq<(b>FrHZtE`ya@r)lw4Ui>Mp_S4b9{DVtkV|jW^Rmn`|gqIX`HN~ zgkK$gj;ADpsTO3g$#si_bIE4CLWcQ`hAe&~A0FD|NxK$qpQQXJbqB!ZU^OI#c19ru zHT4BJ?+({Qe&th5H7C-}P+l28MPYV583!>LFoN-Qwa>G_sbyk|rYSOZ1c}4&N&;wl zk*oLGqa9nOkn}8;g#00oihyxe>|j`!rBl-EO6}KH z^wAi(1GW)4rt4)3f5@VUJ~?#OhCIoG?d;~GKEt4T@GfUuvw4x|W;SU4JXUB&QnspWiyhK|o2<&dGyP>)83 zHX}|E!y4RZsIfk%O{}c$4hS8OL%?$}Nixy2Gb6P~09$Htmb4mt`)dCbS-VucD8o&Bggg1W@NL|@S>t$OL>^dUpQM)eNwMjqd z6n#w*4aKHZwri<|&IuKNfl$KH%`Nl*c}-$iK59}CGK$7u3Bh>sEWwa%IQ|3mrcL&2 zDJzk@^$cr)=WdypCWhl9#^{BVdyUc`m@Ou`yYrwB3Qt-{u_!N+_Wyj=uA?yKaSmkO1ch`#IU7Oef|~bhspG1Lb8m%Caa{pv(EQ?&0$Y2qe!tu>sw>bng1d& zW-b}-pEayqt|-%zJdfGXC45>wo~vky>Ohi}7<*Oj=|3S@BY-|j1Eo!2@!A)9puiTQlPp!&I1^--qu zOhpfDWY#01x~Mi3ot~VMW<^CIG*HytzlRTNNKK?y!_}>G~GCSk%MHQg z$)$1%>sDX*%}XkN|Jpv>(7v*IY0)P0J35v&XtL`+p}hNi$z_fm6Ct@Da)I>l4(ubf zQ>mp!Qz&{(b6M=QXCgZWeXfOU8#j+|W6$Iywuw_~>Qy#xWw!wf8;%eJCA$9~nwp()8+X&6!BbsVLPkISr&HyJ@_#Z?)DdFI~vF1^KZb5X8el)KtM5~ zor&M0!>yOJmK|svyln?kX`)vpM7NcqiX@|-Vv~Mm+U~Kml%uoaHj(ppZ)M709(g=> z$*Lns$>W_XWe-i+peK6wz>)ms!V$WeOQ zYx%(FzBC>2XK3Z}zozC7E_i6RUfrp8ztPuFObj*ay?*eWpzrlvS5)CmYTI$ zi07EY;{BR@7^l}hIwkA^{F*&$1qocyYxSu zOyYFpVdJQx2wr0&Eeb=rEmHEECGSOhAE~F4rQ}((Po>h+BVwC!p4NZ ztVR?yXkRvCJz+c`%2zN}l(VQCwa_OHq03qnVODsH%5+pBwhVyCe+ zuBMg!R`E8d0+tN7K0vT#)E(fE6E3ZYgSS2?{q!h&Xj(R`%=}|@A`&JmCeGnVsYsxe zqM7?Q{zCzw9S1@V^YS7F6qT_e%bk*+9wT2z>d16EkUn-x2!WF{i%CT*b+!exAITs` z^C|JIvq0ALkg1Qo^FR${j=8B;83`DBFc|YUKO43(3A|D+8Yan!bHv>M3iZs=BHYcH zD!a$7OX#4rBNJZMc3@Q+wRTJXalusI$-H*UkNHDeZggKK(Uv*~s#jGa`RnWz1J3fd zFCk0FU(1B4=?~=BpxVSX>SpUZjRO{;D4wc|I_D5_U3yzreNB{V_CggLQRRyZ>W`1b zN2@YvQiFoK%w~x-;!JDW`7u4NuDZdQNi2yrDSntE`~4l6R%h5Vq*{uDa&LW*pC!j+ zFu|O<_p8wiGd22`JxGq0o^^WVpXbN+q9>ZWTuB-?J`5);Cd-^SN@wf}S+95gu*vkr z3nc;N0{}XiHwcpZNTC|4*v&uGd4jPL*2)9d^C8$#|L2=sj;MgG5d{u6HDX4U+ zQIra6jJe3sVJg#IQV6gza!NjUV7|4>RhET4GszqzTT^5ae7w^7wnIKo{TKR|^p>qX zGIM9U#Ze%md3%dN0okbM2YY%W|2LX?r~Htg9?|1`@2Pp#9+bb6QEte+iKX=~odjT_kkKYjULO#-5teCz&i%KgL{ zrcnETUaq1Oo)m1PX34GTz%>p-E@Q=x$n*|TzJghOwq}VlSFYD0L=7I{G5^*BKwx!_ ziy)8V!b7xX@zE@6CcILN!suj!%+Xx+gMhs*9hx2wdJIEQ+9mwUUW*q_jg4-TihgY}z(BJOFJ{4jZfC z{AY=?(U+@k=$fge{Wm3b(E>Vvqvxpw(uUyJV?)Q{#7N?f<&xfnLWvScN zx*cR+Ru9@!l9TQFC2vz|zy~ULJbYy7K$)tBgno4q595j=N*S zq_J4BRI^m!%kHz5vq>h_@VR)23tNgS2sFAQajJ3a&CE1hHHZb6pNR-Q4%doxFhP(c zKt|)j!%F~ptM8%6s}qiQGC^wPiNj~owPxb^Nq)x+V2SrFRu(y%3h{%I~|l=5$@N8|%;q90&sN zuMlIK2f`)D=2r8=2X55|*-;U5pM$8wzA8)253Sswi25b&&2k~{1_+mpSnDDPvgx; z?hLASOI-Qd!LOhpakld1ZHXded8xq>sEGhGgTV1(?V#4+tJQj%J;?JM)K$bP9wVC) zlG$4PTPK^vI%h(G212BsK4EPY)9>}Is;7M@{K&okiHV3r?^{;TH%MP_Y&YL94=Mdm zA)yVil?U!c=b56v_?U!pwU9oP(c2IWql zj4q%k@qMKn;txd&B4r#iFm>0onrbO-3-{Cp$2U}3dGru|{QVyqrO@HwUNYoJ`O!9X z!jD-7^#?;5CtO||DWl1>4n?48UkY*nT1Q_TpnMEbD1-ER+dOLGF9TKqu!;?HBF6a+ zDvk1z%1VVXP9F^M@Ht>gl$?3gkcyOqc;!a=bE3Djj;^d!Xqx|roHmH=Rzw8v7Qj=V zfyR-zQc5*#KgxFQSL8V6==ls~>fSOCegoBFa}q6UyT!Hdgv=k%ZZxPbxBah-brx%A zO%(#yq2ESEJ)2v?4_2_~|F#dTa9$2>Vpoa`|KwG&j+h4^aF)S)w#e)S68pL7&T0Tjm~qcAZjS}5KipU_u`(k~Yhrm8a6sSd1Z5s+F=nG6r-%>Ur_NHUQf zMb~4@6O89|vLm`&7G5Laf1=8Z(UV*iyn-gnKB z?=s3wM19XW*Z@-bHM-T`D~Tic(=H042*kS6{ZzkJ1Z?q`qg>GXWoUE_{oh*qn_Fsy zqIc+MF_6R%+9r!++JLOCyp2duy!is-QoS;b1f+&aY0bS2T_p|U#xl}~*Y?(bXd$Tk z+E564WHxqemuU^YBMJG;0C3pol{1E9fVv;p+LyANT!)yeh`J z#%-C6V;%?y)m;mD06W)BfnexM7tGFn&EK^qPCBv->J`@8)R+s5oARL#!RK2Mrv0vLDtz~{J zt9LSE_~|Dqn+;-t%K26!Vm3&2jH>_J`s3hSHop6`-4lywBpbzM`QJT9x&MO8DpQo( z4Ydh)(+%@)W&|9A<2IrotK}ye6u5i;HmO5VG^WS`aCIQ7njAnwgV5?d#?FHf+cBL^ zfy!Wm2xmRyZ9MnlxS5YLSt{-SV%xp(g66j+F%1$jRwpM)V%oTQF}yRT7$nFt)S<`W zNI^vzV#65VM5d)$DP%n~FRi*V4hvkCS7W{*JFLLKZVbO==|MM zj_I3+`{yV|V|)3Bj!XGH+^`1oj0ImVmqzv5`G1=orRPt!mUz8gH>drUG!`;R3LfLv zo-5dumF%^-%sD=;n$E1FQ8hw;xG2`GDT^VErcYLZmac%sN`#4(@p1Ut=Y{YAXb>kf zNL-Zg3hDu#_$*OKRAvyp4!BWUjIIw-*fJ_SdsMwhn@!^y<)%y57s^P!XbV2Zjw`*= z)Pa;lErhy*k16vR5u^5GK(|lhD%tpJVAVF41&b8{){-Gd(t+!2 z006xnfGk8?MsCD9QGlMuBy684T1}0OdDz(IgIwvWUI)WA-O>18ZFKRU^oQUtaktyEFS~?vH8ozkW)MpVxmm+s9jb&>dQ;x5^-$!;3dq*L!+ph2Nqg>)MF& zov(IZZ_O|FI)H+egvHFzUNG`l;hb|B2`Qt+;6`jb5#_<;vM6HE-@l?l`>bLF%2^W! zuI3d((WG#%F+L0Y&8qmX`0SpoC*5L8ct6VrzrCz4tj-HGx5H@DDLtX`#X?G>>fnij zKtqWchTJvMl`GM>XS0?tU}>8_0|jI^NJw>tfQtVdf-)PkOF-tYWsliUyGdp8`YP~*@j_8x zKuonL!#ojhns3QRKyokv7Gp@X8pT(^XUlfVJF-lxhHGWer!Z zhy-|ZNd%yY&v*3@NQrc~`{!pk`&?r<#mmuR=ZF# zw~PM_`B5-gJ!<&vN8*U&n5|R7ic`_HdaroAq~wbyx-BL1{Da(X+$p4z5*{!GCtn8U z$QB8hF2^He4;-w<)Ij!u#TQHEHOk0SFV;4tS*y**<*8`}VvI0;=dVj62iYq;Dmpj$ zOp?oeKwX9i(nVx6iR&h?1!7nmZ7d=4to{qr|(peD~UZLgBx4W)qXNu-mP@KHreX`u7|mBb*$xrt}EuQf3!4Z zZMW%Oj~lkF5p~z-zs?HSRYzLijO_FHs6O5{42g!wJ=OoGUHSf=(YyuBW(7)L0kpwE z8xsJyPB=I2VocgOauym7;sNS!*3>jYYCo+V=~@>UVi-bSA{Vq@ogIe=Nc3$*RqrlOgjHtE`odSgGmRJQ|vd+PCF=a_2X{Dk^mOZb-tQS=zQ&QCF zD<1mG>qna*>^? zF(#YV#UXtW=Ltt*D@DQ(5sj-zM^0lV*lUrq71o-a0}pe386z{LE!0+Kvvic-kVU2P zBSgfaKvJy@+uF&U7gdxiy=}?*XeEc>Y-_hHaZ(cbWV@XR!as%POjt;tywWmou*O!= z>Hy>AR31b{?9J(>EX%Ec-8SB%!5z!>Wxb7&#rp0=ONl<2^^Zx;c3rY^qf8W3{F3Bn zX=m&J0G3eglaN>7WU82JAaa2Ip?Mv@{5H#*FQ~NWjCS*7QP$F*YBqODLt(Y>xZqPb z_^UbDD`^U}hKSwCwI!Eh3H#I6tP&!h#BSBv^-Js7|0+)uH(k`~Ma8WXs@1wq)5-O332+mC zUqS=b!8?Q!Nsz+XHn9uGUXigq1nkUkq)~v+h=wlS~38K$aP2MqC3&Y$x`u)Vleb*l6iWo6cE(Pqf!^ntXo zyCk{@^;Cysipuy|Q-)i;)a2U?D&QDAW93n7Tx%fMK>X)H!m1Q>#u5)}r_3W38)vnN zBBd4zFs~3=9&i&?uX`qOb6j_$*~=8YrKi$+SKVO1)1ndUlW0^Mxh**qN!t5PeTX*12qL<<%T zywiYzRLN$N(4@BE*1zYd7s=Y07Ek;cF<6FBR^XTjD%VpbavXyMtpR$}g3!cnO%;eC zqW+V?RAYwe?6;M3vN_4M5fe@GEkqhBxHOYse45UGg}ooR-NIhN)Y2y-h+bX8LZs_p zr^7a>Mp-n*iRvEL6B+7a$9%0Zj+~6cSZB7(O|^K*L+iQ>`uE69fSXY%s&*sE{Pu^% zQfBlpns+dKcyUP?idPX z<#?>LMuQ8OWeNu9y@F2Rl@2N%g`^Z%0V%yJ!SHKgvPh-7d-I|QabFE4!Lyx8sfyqD z*PO2Qh-C^H+li$yyu|tRxNX=16^ftmiiw zpy@^?1E0H0>Ks!1%tl0%n7pd{Zjz{&r7Rzebs>pfkS+@(aCdP4sxUJZ8ML2J%Ggsf zCt6`N!k6;#xoG>v;1zA9IT3HYO5)vZjrrlF(&Et)#*#s74qegv)Q5!L68bN}_D*Vg z)~+~em~eHNiS>zV z3=V(~1Tl$M1O~WqK9x*E|9tOu>dz~bYt+M=pnfCc2*tly%1T+Ysr{68e2ddQgWnkJ zmfD^BDkgGX?!jmdXpYR)MqxYO@nAmEyJ0X6`kkcb<0^O{8_Pglw#69!rGY$IyJb3wF5qJ< zaGZ*kP3R!&mZe?_U}{UWv8Ov_CbL^V_S#AnF26Go36S&#jUoWot2luo{_B!2iMS^T=0!_*7e00sD-xJ{X^27t1fV+8jmtX zf!6}`X*}>eNIhLz4T&`B>S58e#{`$tbs;s>$l2R19{6qnN$UNM=Am*8yylI6u3b6C z{r-c8yZvv6c9##+9;)XTW_l0xqNgYKOSwOoTBP+?!&4@qyzjm98%)wdNn`{HJapib z3qC1OKqmw+0$n{cU|HH}cOk*c=?Cb-ftKeN@i!b8H49ivL#IMcTo9-Ptf#L3;qH`JT zu+BL)B+9M&W9SSifOaWMM}<1d&1ZZ2{Pu?N zu?IpqeLl>$AJshOb&NB{PX*DrwM|36 zu&X|NdviTAhiG-Bj}R=VUEGs7FI08SG0xGy01&~Hnt)&dmy>RqCfQ^TI!hU&Y(vmI zd5CDyfRLY&=-vA zw^JnaT8Y)FZ?rvI==qU5aHCOs60C2_k^wUfAA{OF5H=`kmntPFO41-z&2lp(XLx! zKK+qWcp0O3@TjEL_dV#^6S_PnM$+-(WdWadr7Q;*u?=`)mZ61%BVvCeDlQHJhmVi# z2~drgG9GL)EeErMTyaStfiGq(mKEbyyN1M*$dxO`Kdl%V(=fN-A_G??cl}SMi3Zd0 zOn=*+WZHGYq-7h)ZvZp`01k?}p+GvTMm0=t!kX!f?E??^l7|BHQfk;qz~j4vew!(M zR;1Cfntjrs9?~X7VrGz+i|cX)?tD;f=ly)Ya_=X3awtuVBE(|tVTf80Qd`SmZF()w zjM;S@5W_8s4HHQg>4wHaZ>_|Z_%Ec7LUIa^%o9XL?UO^o)kI8-!rr3rwxz7O6R#-8_K%1e3ygfk45LNvQMxdj6S$6x z1ya~Sg^jX2(q_cnOP;nf-6%B{83i;S4k;$ePbwb+pgx;I;veLO;=r%um%4$MVE@W3 zdlTSU4#yO@u*MFa1a5xPHx|e+$|M&I&cszIHMrHUK#h6#le?yt+TA!`*IAX72 z>0=Riyo zc3n$bviwWj_-(2D+A6Bd&{wB;daDuWFpz@YGvg;V3KrKT!$qCLug4fXSTqA0Jrj81 z7c+RPvogL$H9-T8KjX^lHXRa7Yz7}4<1$hF0p!A(E96KLE#TGB z1V@N%OrbOD-jZ;+;RrAh7oaC9tL=6|cUT|0+m2{&eDsO5x81uAx&6Rv* zRp)EG4+?_G=>IF2IF0yI!JhY(4544xvf%*}m`DlMnm1i+%nBXIz+P za@v8pzmCRF2gCZcD9f}DH4vbS9uhh<5gI&-sYLLI*~n^qm4rxClhCT;wrZ^V`FMW2 zF7lM(aDz0iZA>`#9_Lr~8=)Sct2>QaHK(b^$%P|?ICUZ>>_FtEEmTV>A6WaJSU;6bd^S6C}*OwiD3m`#QO9sFo zprJEGWrnohC~Z}oM1RiSKjr`&q~AnTp2w)Yqn4) zFZU;Vgvuw7pb1ZM0X>hGTxCS9b{{_<;;JJL5AuG;0D<-+{|C7_Scra2rDPpbx4@|^ z99wDw^hsbb&SCWAFoktx1c`Uqv0BX`aThCT99{Nk1M2wE@r!vHiZJMBx7EkANhMac z+L5>I?&h^5)k6e!HV8Nf2DGe3I8Fk;LdY-n zbCb+WdVS=IYf^d}F7cUPC?v2i6(2N-z^Yh+oaa@GX=S0d6(UBwC0KUhzl4;ihP8kH z?q3L|U4BOG2=jDfhzEu)c+m?Do^gPsTTA=4yS5WJ<&Myt7dd+qEdO{(1rGZR*#J`( z5D=`+{)d0RhyJ z=Evm-7zH(qwM`kmmaJ-29K>;1tuY!~ZI|WZh%9=7)h)BtyYN1XP47UTE_tq^ElKIN zS);Ngm?$5Arh)%$*G5b z2~CsUe+1g#C%V-sp+$2ngo0n{3Hkxql#0xUJFm{!bbm_PI*gqPiM8>`JwNp6eJn zZMqX=)u6)dJPlO#F7oJMo7N__SWJys$D`#T-X%5)3yHhq>L280VIl0)m4FJ($FQm_ zTwpjgS|Jc}r_qDcC715N&NvJX9uM**Qa-uq@xRKwtYMLF90xP05kydLelfqIlnR~t;bxM?LFdsIZSy8{+(kF zlu8QeEOQ9 z7IqX>ECwT^_dBBM# z!-rLVIT~Ulv}sVSU_l`=F?%{e#8?yrJzIgyL?o)c(5277Ck!M=>59I)sJsNOMCZB$ z@7xyuu!r56^@_k>-pPwnk_uNNQo|fus+dSrl|=~(o{j`wjH*x+X4!I29Lf|+5%e19 zU)naM#(AJ6enqR8<_-?qqquW;$J@|1voI9l)C)(nt(hicYnHM9wc3xb&lU-mo`#21 z66!&xeQftV0U&`t9Sn5Y5(gGUv@0-GC>m{~2(@0IXQFjlln2~dyDq*c!90!{ftQnhuorVTqYZ>tD zPy2SOvIWL^ag2S7$y$c>Gt-IlI}s+X%i|3IDmC!Qf%u*Fo7{$ZGCQS}*XUiqbQO6C zTZv(hMU47$kS4B^Gz zsl|@q@g86`)SLq4i!7b4WfnRzZDhd~F<)T!Q>eguJ)@1yu4`4ubt0p-1O%`%ko+l6 z8L)+1XARzl(+wnpc8y&ac6;PnW87YtvKvJ8ni;vlYbGotFVQ%A?gmVShJPhe(I z`4fkdhZvWamz!Nj0jcpbdX*`+?>gkm+UPYXk{{L~s1fK1U;VAE&%o~RqxY>hbk)7n zIQ?OaG`7m;L(_iQzo%orQ%vO2q=RkNo29%oWZ zPt@6i5NXu2UPF|`3SZ?{(UzLMm(%X-Ip{DHOv8#}`nq2=@KXS+I}y!{{{AaY#i3qq z7s0$ONMpF|*tutNc^{p9X0IIjFj0@!+t{cujp6kGGouC%GV5OfjLL#_fm-}FKpp_g zAr3(S4N*S7b|m>z&zJQlhzo(M<|1G7D%N+;3dyuW(1MI8-@ualfTu%^EY zy-Da|#lh=^9CUQorn|O+)j}bQC_oW1Q+t`EkSh&+<0;JWtiE8*IMF{OO7F zv6o?mU)9y1f?BZjZ4~>Lv2AZUa44;)uP!Gt^Yo#CC~rEe-BiXCcIgLAR)b;uxz+rA*Yft}nC?Bc z{xq4a-_gH!XRE31$3tLUVb5007|ys}sV7>q)pDz=)jNK%$|T<@KT*)uCLeR_y5AcB zfKbARnFB4r(bEMVX4KjuzjlcF+Q#(XhcJiCq=l%ur|G)*Wjt1o;eU_@yOEnlSo=aT zfBi<78C;~ay-F1`R@MJX@pxmrbFu{1Ax1-~-7@FdG<6(JicBBO@wd2iRVMP(Rl2R9 zXO{*u%d$(}t95N;Gw)37R-!3W!+SY)nB-dH*WZmh2ClEW7_yV=2OrrSD2y`NL`{TUQwSyNRN<|`KJlxc+m?c^v*J{4@%fDs{eokp~W~J!>AtyG8IP#zb%v~~hOs2&p zvxPBG8Wi}Sc8R#0CKgDsmQ;}3CV?8@D=k-%j5riasfd*WwHmYDe~-uB;YE&ME7i6F zxd0HIUQiVLDqaA&Y*4nKz4Vmp9zK^Il4orL(2-w)Y`NX4OVA+%goDrFB(4rE7T@4q z=UeH9%?>u-oR{Ud8%-%jGf{cd%H$7XS7f*N~7a%tYNpKGgn-3zPhdGh8( z$~W{a==PEHrx;mIc^N@BxsOTs56`<4cBbNI;UYY?*ET?m_4rQXFwGkymsAtW%#eep z3Kv{?n2EE0*jjI_8K(sW^1;re#w7MxD>@ltp(h%LxADKxup*o_JIV3px#fp;=$WFMH3Sn z|2;Y)TdX?Ty%TF-TujYpw#w}O=gCUE2K~KWNrj19WxaxTedYcg&Uv2CjE<0` zM*%q|SG0rK4tD5wB)MEBmmnhCC*sERi`*s19~aJ~i_|m@LeZ0%>~Gpz{(90Fk>!Dd zC2^z0P6Cr+PsJ)6eh8rGG~V;vl9&ow2?WRuMl)hz0vvYK& zb<7>qSIS84928KsyL;u|YJPkhr!$40*X3X{ypUs$_K)%2;)Jm0gDwaax{Rv#C- zxRbU}#&hQCmqL9R;NizM(_Z}=(MDhRdXJM(D4DCT?fM6~g}6~FnI&ML;bZ1y7aEX! zP=aAo`DbG#r2=MXmU=5V2;P@xQwu{$gbNhK+8!U*y)!X!E9fS>KWi;x05EIco5@%} z4pVD{RA8D0gvgX=V@fq4BS$a`uesnu-HQ??mMa%33z*8(U066<$c<(`1Pg{W9JYdq zGy$pSQ;0bMP9P&^+{qTIgw;&LywOzD z3l;8etJb)#EM;gY;f{((y<1tA%=G=sKNr`RkBtqhs^_v8&bOmXo-MGvE>sA5gBOMjttMqLo&|ImE+{X9wGv(jS;%ve z2{M3isRGtu-uTV_gQ@E_kl^{;pzf=3*ZcysQ2CGby5o_v#nmqE7s|NwZtM>g-lY4S zG%j)yl5#>3z06wa5af0iNL>An$7|e@Q9I<8v#k+V-DyjA>&eGx{}Zki(?f3Kw)n9* z4hE04roBHu6VtLI<4kJbj}06~-H8>Q0K&$mkh2*9LMFOWUxvZ~azYVs>?z1gctOcO z?I!3Oqca(m#{P2w2}$SWOmQTkTL?92Jke3G#8jkE8J|+b8iV#cUArjYrg_YD2~{?7 zR;^}N9cP{YHHz&ws6k8-E2USgoc@uh&O8_?ymmGOr0cfcF?Se%7&Ge-H%TR#zPn4zGUDXJF zLjVn$1!Sb^uu67YIh^LmH4l&TkZl=U%~qmRW*Uc%kxCtDr)?uF+a(t!Blbs(H=Kg? zreq?Dok3J(N9n;5>x%DD@~F>E$#4Jw#tlR?44yS?=qW0ApgP8sbheVm^rra+3}BAn zGzt+I;{x;1(98p^%xdLROSf30wczH|oJ~%^`9=knGJX4d)ggCgBHdPWgbEWHHZwMv zj5Ap!%R}QG-oHMYZ>5})MXa}FmLfbk`2)Hw=waKPPU5|7Tb{nK#)c^ySJ)-4oY%0# zL*oU_n6jXSe2={V0LVSq#Ma;$NJgv>Ry74GymO_XW}}9Ut+epQ)ah%*Ji|c;%`mZ9 z+lnEUVIb#ATlFNGX~fTR7Sil!EE*esP;3$Z`>~dZ8{Cp(UFlV=Cj%+ESQ}>P5 z!pVwwq%Lfberw%uUs1~jeWtCBZcp(=PhFxn9uXvmE@ zRMwgq7L;>{To;(23OQ-KC|vqAOhqxAK=i8}^ARbYUl)jmC}ArWTqtIZR=*fX97Tx} zw4!*BPszKYh)&A1Ww9w%u<|ZgPAVFF>04A*dEuyg;Pvpc7!=TWtaE2W6I#M@gp#eA z(Q+tgM7evALo-6I#0Sxm<6`Z(?9GOf#E!s`;!KUe)O&%kDDVek5US8SOgPoD2Kewd z*zFctlvxVLU&umB69o}Qjl!cW$fz$t#~{U;?VCv^LUW+^MhMMfDZ|oBA(g&gT{`x$ zGPrtWN!l2ej5Q|1A7q)>P>Aff+7>Xca%)R#m-08$$c=WRp}qR@e>pciqkjLibZJF3 zG|AyIQp?~*VZuyqTbrZ}qGsB9ND~MzCYvVp#>7m5Pghkn1P>4bA`k^#lq5q!$tEa+ z!YGrNDyRUBJBl|*Z0K8a3EGN;MnHxZTXp4x)mq+i*1LZ~&aG<|IhplnkjqqIc>jgc zfUhNu%A|H5ZZ&KZu)tzn{i(cJlK zYJ(iM$xfwEEd?hpOs-bSf39dW8P}e)mt#@z%uja#(f=R^H0yr?6`DZ8EA@&N4Y;u? z)3C_d9ZXMwP|^Gwtn~7qT&l|w8DdG|$~eBlQbeI*FUy=J?B=Bw8wQ}78wCJH18{O9 ziapMrj0i7obu>bD_F-~)ps`~4T<(snQP?lC7 zUi%|Klh2qHjKAYcvj%7xLUqHvIegQ4REDhQeciZ)j)IBZb11ZS%SC*J|53H}Pb z!2+2PEsQvyV%T^Td{(rx9Tl1~vMY_|4j%U9SM#dm_=^Jk{Yo@N4W}z)=e&;@ieD0Km4O zhKW!xkuHqxF&~7DMa2A*Fo!5*rjJMV*;s6jfEb4&xGMwsAOmM~Yf2F{zf5teSG1uu z#6dP!$C*p*-&Lo`M=dTxLZGB4PbYO)%|C75t2SDX+H#5Uz$SaGs;W#CO~Xj*osHa} zJ#_P$bZO(=wWGA8Mga}^y$q<}Pzod&ka|C>2#S{ogy&b98V;8Xh6qq93`#E5`R#J+ zogKwdnpuN`9GC#(-~*4Vw651y)UheTUsbGN)KpHJ$(7GbpMmD9kl#?V^pe5zgm85< zsU{UuNALkSi3WeTUQ_?er)z_xzV^BF1Cs8xGySy<2syKL#M5*|#bj@v*HGyyGT>cK z&0bW<{xW)si;7wv=$t<3cf2xX14rV0$%=mJoG@CA%sFnw@^*9Jv-{7JPC{u}V#I&F z+_i09U-_BWNgWzY&pePy?Jx$M*v@FJd=Of=WaKC!N+c#Anp$QQ!DcTMy-evo4Gn7l z7buE~6Kbi@w*+?R^klp(bZp%MUsJRb{+mtPl8+1xuN1u>i>{mQLQa)JIbFfGPrup9 zc858yu7gTeGV;@V71T!ad@onU7?*{Mu1wLdwc(fD6&^4x=i%~ZXts*1`F#ukKz#t6 zc_aGD2|yiVWGd5&84iwJ>66jJo|~}TFS2}^3D{>4eZkYHVO8b!AvJtemMvvy#7dd$ zBR{q|Zb#fMoX!oTwSmPix)rK;Ptyy1_2J{w)T-9>NU)a?^!x8voT8mBT%v~Ply2L0 zzF&8~|tRg6`B;1Usch3=P44UtRP8 zB5_(+N3rb^lNu*_A=^yrMPVqlFQ+FzCeILTo<@2*+w8%AZY$SDCUJO}vrJd3Dp^BB zdY#ecO6AbWdBV0m@>fr4&rXRcFZ7nfT0LRb+p=t@?rcu|KO0cbYAo@m4(buIMhD78 zx>(5!tICMBYF7;gaGn0Pz+o7i5*z?;=MxqJEl~y_NG&2XGEpK4Wlgj8G~tP>ZO&D-|jN~`uQ96KeGP4a+7f<&Wb8{UNXOp0J~%2*w(y8dNpy=vAl5I6@k4S}GaNsPsFx~%rl@{Oq2$}pZZ_PzB{>=D zQ6(4R^9L=<+y`QlpDDxp0Zxj~;8XfPi8=M5rw9~DleJ)tX4}xa9&z&NR3X+AafD*VTCv}@0*;zu&S)Eg^?k7xv&-HwvghkW8%SK9(9 zH9eBsyFxzP#Yu{s({EoXQ@#8b;bYZZm3vZQs4m5roYH&9zy9Cxm=PnnrEFknT%Zgv zUJfW;vNja~hEoqoQUccp7B8hCMQixHUhl0J^UxUXU42&)zilZE`zPLY^C#0NeOp8K zx3x1^m%rOvnQYpx_=R3)02H1*tP3-+a*dIJ-g}$ z<$>qWC(A8zmtnc?+Qi;?k|jlhQ!IhF*+)&LIm!$3D(N#Fg9StH?SAQ-%{^x8wOW|X*%KCn=_-?LlZQvaH&cbnX^Ik6Y%bFlWU8po_pH&M zWg-AVFwbLQs6Xds;AtQMB9SO{T8Pv%qd_&^;@0sP{K(dEO9K?EaDlg|gEyLIw0a`Rl8(QlT+x$bBwbkNQy(W~JW0pb&U^nAzcq zu#p(8K7!oEtz#hIIkVVZhfsID1xCf>3na|(?>^Tkf^KJljnn@U_)q$P3#*pQW6Tt< zsP(l0YN(=;y#U?hVtyq=d99O3^Eb|1kB=0NtHqi}!y@U@NM^4w{-^)PlmzEaGkzi+ z>4RN7RSc=XZrbJ_w}w2=%?a)_6^ss8Cb`wen=oV9Fcwd#zEtk;VKl9Vkp+o#l#w+F zN^R78rOc%!ts$gdF3PWY<=ytp{s0jFe zx-%K+oqdJ4M`rhJy{UU!WrV!qqXDsX<<>y1K@T0Lq(+x)9t9X(QE;}eN!y8FXUG{XQTs5f|L6)sDGN4XKj+2$8bt#-T z-b(dyiessDR9}g|lcm8$fKXhv&Rn0Xn zkl~MO-*@xEBU)xg;MJc->e%Zu3WSV}G$2|sxurm=7?dFQppg*T0>?HQ%G|g#VbBaZ zW=Jc-x#%q%c7n>hHs2+UxW6!x?>u>}F5ejc@yzQ>Z$#MxJ3cKvJHJ^hjow3F`K++x zj^Wqqr^-6VCad(oSo_ZpL~ur56*RHb-sbLm0|-HPN15Hd_841#@9;%aLxIl=kb_Iz ztYugu8fI#bfVIgWbD3Mt#jqp0FHm7_mW2kji5#Z5NS>NhdPQSvKGI&5fw1IIXLmlN zm&uH?Jtu5BxI2_=Rmlem(uyJu3pnIM0Ujp>1DArPCvwpV7l?n5TSJsU)KtOK@^y*6 z$ilEi(o?+!S_*rk2g|dpDS(iR#x1;hSU6-wev}vG$&SJl@tGv9uounqrkR1~f|8Za z9mm9y<&mCAx9ZK$&$2%arvtw&BJPgqj)w)2Z)$?Q3;+;=CkZ)LY(TK$zyhEr^RT=~ zRJ9Z^&rlo{>2flsv_b|P7{_>ObVzhedFQd`_uBG-9Vi3QycZv(VeBUIRdtETP{{fm zEsh%#TQ=shV(T;RcFJ+@*#$}YDsFag?C9wHVUM@v)j;hTK(Cg@U9Lp*%WH9qZ%`C~ zEfP>|elA-qScP6{3lRVvwo#ER1|{u9`oyd(w(mMoC&!IW&w3Z@6~N+AbTDjxjAG7w zV3ho)Z-|)rmAR+bEtADUX0zahz&HB8wan!~c+uI}D_7Zx#>@zvgRU$H=2>L&OMZ5GO{$0~mjs_vasyDq>sdMfPay1{W$#Lqd86a@p{*{<(XHQMRELeR%cj4 z{RjI+rzw-!*OK+eFSu`veE~z8Qy=5k{2H8;nWIr77+mEDBX2070a2KRaQuX#JgBVm zOPBYj=bxFxFe5BthOiWS*m0ekSM7wUCTpyfer%@m+Fc>RnW`vY5je>jVjg#`3?8J3 zmtk!dZ!_8J`~E&4Cn#3=Kr1wd)`uOZv+exVFTD!9T1U?sW~c6<**YM-nzN5Ssy16< zq$=u4IeegED3+d$!cNkGr)P}v83&&%kkhY#+1Gne zk@M4M2tNli2*Xi3Ih0a1Q;iRg+9m0Aj^G0~dR1qkC0E%U@)VA~lIQOWN|p>@z% zE;LYMYZBR=oPB%EV%~BWvWfu3DeRM&4pZYn0_)uF}8l@Az6F zMVq^>w}S9mbERix6xm!Sxp9`i1>RI1qftSA%RsgNcWib>2ZT$$xwyVth0W(#JK zxvd)1FXgGhqvFb>$|qV-__l4zw6>h&Yt(Z5<$gM&Ehb=DICI+yg_6#w97|3>#&uRD zJW6A8|HrYWBt1X@;7?Ew&w$2a`j82x2zWDTAL$O`V$~FLca+i&Nz3Fr+8xYoza?e| zgvnouJc;ARN581LS%~7KiE{XmMvmf79Mn}np38pJpsw>~r{LqRmNsHBNWR$TO|SY1 zI(4zReZD!D?SS`OEt)n8T{kq$K>6a&^S5+O)!N*;4QuCpwVeG`RC-~&*;=I6w!QWF z)?{!O1q8sPoujcg9hFe0(Bo;#Dh$@>gFpZ{H@R0;!IxWK$)=P^AR>PlA<9M#eY$e#Y1FeRJqWAceEmD$XD)e%W-rfWpy_6D-$+i`9HRB z54fzW%=`#oNs}i$IrIvfsSR5@*cv5!=DTj&I+IcPS1+~rrUi~{u}XuPL*0Y_xtWoIZNA_Fr$zTr}%$msUWeuu6w(b=7j( z!mQI#c2>EfVG-@@4@FQ;fvCLm50B5TX9n}0UE9*_58v^bQm=LwUI0di53O>N%6+NF z_g?=l0U@^mUMdP81DA}IHXSLTEkF>8VB`? zPqL#llwMPF0KY}en4oK4EVj>5F{_K16t6Um<t6e=z|e@+`lMv{#ENS>h5&t7ADY|aK|-Ggl^S5Diy&&d=qDj zRwSVgRUXDg#>AbLq7C@DFbW5-Kn8F(n30N97aS)`M}hFtN3zsX1&e|~7P8Bswowl% zx#8|CF0yX;l3;*B!;6vrkita#!{8l}OAr4=Io;@B0OWqQwN=gyC}>R==wI*_7-_V; zgd`X@c{CtPkb20;P)kEo(dq31s5=5USrMZq7V_=ZdG#WlPcC^F{~vPV0!oYj)(4AA z-f-hk1I$cSLHSF%%`+%zKIpvat`av?lCE33@;Z;U_=PTfEwmBwSSQ;xky(eObYHjtQ6Fe3MxIY zRl$7xqOlrt1Nr*T-3}MT-qt#rWBdJSUJ{~QqN0ObOmY0@-%pEc!~22$+wR-HRQvia zyM`>yU!F!RB@x-G^t@>F<+Mw#S1u2Ua(aelFx5<_=) z*U*i058d58bc0HFcXyXGk`hA=-I5A|bPEc+${p`NI3L#8&)(}<(Tc~0YbAgj@o5xy zuGwlzBMENuW^2p?g>SXfdwO9I%%$1vF>O&rDzw!Oaxq=9QJ|T8!chEML z@@4)Fv!OqqITv)C-}YuAaFzj(0dk!Cc<$qBecFf%0$m9F1&Vi~j0=z@d561pwra_OsVptozC}}>8tPaF-)E&yQ6AH<262jZ<+EW8Bk z?PZuMNaWJie;_e$8U_8gz~m}qqdq?Fp`~PuKZXWtAKg#K(QTafIaO?j&5=cUzl=JDWdw`u;WcoWaUaafmt2mYo$^e`y;H$GH5sKkii$x`65JP#C1hvF^;1 zBz#37L_Zic`|J{o7uB~AhKTOV%#YpVSQ(K|n#H6QU6w4;R3+!^H>m!fxqD}EUU_Ay zYH__V_=esKdSd~JUT!KS$Y1%iyt7ToJkC`Vlp@q4tZB_xHri}J>&M->G=XWa!c|&| z>^{`6T5Xgf6sZ?X#&Os(p`Fov7GdZdC}tOR+UlMeP}v?3^^6ichsQu~ZGJ8PtUwwv z@lG0X`Ewj3{!gDbIp3dHjbsN-DH{=>Sl-g1V4fNZ(CGrD-!piGCe-{MrpKgg{mMZbXO z34(*~QqW=l-|7>oDZ@#UkrfuUU3kdQSIc{{V$$)(*2>6ZLcof8LT6~rhm zxEJ!>#Z<`nebL#czILG;$lssq14geP8^;f?3oreK?>C!Y)9@TgB65S2^>psBScevw ze*RLv91s;wMC_q=jwPyp2Uayf)BZzLcOt40`SQ~j^Vj0l0{~%+nb|9el5oBfOb8qS zk4KKTsLu-MaY{>hu*RPQIKlZ#HV2Qw-32xY_eC+MS&M_f)HR#olRZ+`6HdB>mjcME`rEc>hYfP9NTc2* z&+6uEVzyFDhW6b2G3Oc`5rCQ&64?2}K>rSd`Eh3(%+<=N%3zSaz*vfCs|q`eFX&bL zVpGrP>KZJz*`{yMFi?F%XS#6oXeT z3AfS(2m>OZ@phG*WBgpgbVgUqR^lI1#&>sGti0wQ!J2eW$tLwKGjb^TY}sw^ZMofb zp>ojH8yf!NeL`1M3CU2u}uwZpLeRg3V(~?hd#iz zCM=V&>ggLLtd!mG440Ycb#0D!d;RLO3FAq$^-q~7T(u%18_tZ2I`&J-f-%&YKJ)Wy zpQ85J1^$}|4^n* zp_Q>r*~<8O@xh(GRkE$1iUcOXK?iqo#L0 zq>J6!aCTV6-v((Cr~cj??6tPpCBDrIUC)vuKZ%dWwo}?TBEUgLMBqI@7%9Kqw@UFz z@(rWrj4uI2hcA-Q1EPRLQ!RuM1s#(p^}@VXcrpixkFvOJ2;yU4`IvGim7Re5^x4|3 z#D49!9^P)GlNA6$5+-6{tkJ7ci%2c20=ZjuQ^E@;8*G;B1x;JRWG|9`kek3pIW*EK z#Ig1EY7onnJhC9hvxgUWB~Pc+oS!_D2Q8=gYhxVn+Nr8%<364VNEa{?9oNafP?vV< ziLeb^WTP>hK4ma8e)NkWxC0t({or14Br)hFw`lt?J32Ejc7L*CkguW93mMpc@0j1| zX6Gj-jYw)wd-+9u@j~~a(5?iCuHUE{**PxAZn)l4^S!RbgjnOJd0``NFe!K30ZV6o z(uY^rbFyV%;#CTnfVt!w-?P?VL%gV4ZAeO>4#LMeHomuP8nv;6Kx&D@r~NKO-kidI=++!U1!Lg8Vu zGju^F(#t5$8}xc>-D)|7bvw8fGKA_CF3MsTDw!BT%^eHqfuI$T?|RWA-gy4hrxo15 zUN-nokT(>MhBkFhlF(B*S{R-(MSOl|gtIPx!iq`iElmG~@a#xtS&xb%8gDtlyg&rf zf#g-D88kBe)2Y;fq`V4_qsD+Hyp~A@{H4{6>4hYQx)@pcgAU#tLXhxXwuX+fRo6AuA820dehV%cF}o6Ko`k^%sL5>v-di^ZXSnf zEn^iU%0)xbMZK%0`yoVeJJNuNkC?dMZ~AAX%#k5rdcU?s@2~4z*3D9x9kOa44!;%;CclE}<}=|g1SKpKoIBOKkpho)QA zqbXV9I~QnnN_)z>Glt(^nMm<~$`GI}v#=>wn=@Z;m zh)|Sw^qmk?kT^+UX~iJ^t(UG$LFso2%I_^ED;<`a3{m1LFF7nyX>ppEa&m4}Le;FC zoFnfBjIc>&43Y4XW(7V4J)xGhH)^afCCAzdRsO8Ft@NFt@g;$JbDz z`H2NjCPDR1oqlCz{knq@q&1ES{L()xn9VDfISmpJi>VBBOT&N_9VdT{{2EKlo|KiD zobaB7Em1Tx?I*j~FHLFuz|s3~+ch>v_PHgwF37B5b#c;?q`(So=!Tt}qq{F|O zD~0gRxGL3WIY)GNt%tV;@NjAvXWi+)7i+b}wN3a8tt%U$5LReiCA8AXAHSY&;NGE+ ztTuVetJ_<=wNG_Rdc|3wz*yV0oYAMGmB)WpRhFaJqa~e8dRXVDbVelS+JJ;ipI{U# zmo+P4Wgl$9hwka7O!ON$h^UQhlh1kcUFbL@^x;1Thq)fbNHe=LQGj=rGt>;on0dw$ zXqFc^qn_OXfxEk-aa)EN#E^U1B+I}?X zLD_@?YU?I&?cA>Zcp_0BGGd%fkp-SL=6~`HSD@r~ZKN!>GiaZ+KqmOT-_xh?D_=d( zU`9i^2gPbNsLS?5&-r4pbW==mt2*M@M$+HvMyzF=&~bKE6>Xq(bgjvp>}tGY^S*30 zm#UUE-ucQVkzZOA)uczTjFx2mg`#Al(`8%Dle+p9DIu+6=mFj(^D*Vy*I|H~V=P*5 z8O|sOpb0|pBxPV$j5;-`KhKTpBudC{nzNUiy2d*ty`{A_fiC2qa$M{Y*@}vS2c%0r zVrbbWf-(_;)R(ogsZql^A}f_6id5*PGi`L({D#vL6`RgDr^(1WKCa`(X%ai9iYTSY zeCMay{tzG?@2(Ad=?gGk{?dgWh_Rzrb~48OdkRP?3n)M&j~PXvgX#*vDjeBk(2P(S zBN$`QUAFTQzeTK>JsLV4Ze;;etT0a{nK$w32gWOaK)K5!~ zf=Bi)Qsp@kZr0b8kyC|8Cc>iXPQU}aflSS=rzlcudrt#x1oPbfPcsJvGm_Z+1kX$G zql7@(0&QMD$x?Xx%sB!P3wLB6b-9b2y0HKh_HB|{kkp((zeT0;&Qj8 zWZ9;m4*r3|xCg%gFi)UtTa^_ox*t*bxKgFfBy}WW-fsFrU3jgi@((|prN}8d&1kP$ zCLSo5O(FlV`B+9K-;ki9`XBT6YJe;#ygGd|&dvAR7M-s031?9{pO>z{Aa}Y`nMa>I)i-Uf4dB4%jpVa1I5JUXP;>@Sz{eh@u$C@ohqKz%LFS3NG&QU z`Uflm5cLr>Wx-z%nglo{;D#n%TD7DI@@c;0hAGnCAXZXQ{Hz*>%BxRoMYZO^A{!s2 zRy1Bjq7~@+Iy@}S+_iqnne{{^jGJa1SVvHBsZzS~p{crviHzn@14Fb)?YnH$NA%ZK zD>zTPyKL)|YU-^+nCOjGnfJW{X(z1DF|IK8=T?8S?iH98qg>I&0dZ5iI>lJg_*SdJ z(EX4junb9+!gvWhN6h{k!O_5=i9VVdf>^SsO={njdcMVciYd0?)34<>-gCl4DCmSa zgNENRh?OX?ms|9i3BFRdRfaTnkhAxWyx3+;y(mpWF%7V&7wWv|Hjh92gB)DDw5F*8 z&(OS!ckbhd%jI+>|Ls`MVRE%j$vxFUpHfeIwr;vY*E&)se`eKI?d7nU_`>2w9}cix7M-F}(dw;4*b! z6Zt14v$i6oV4z6~CyNHk${JZr7{p80e&9c*1QIW;6CTQ{Bqe%$SwU0+jc%Thn}Xx0 zSq7CF1fd=sm%D6t0^fC85_im*!9E4_m)A*WGEu$;$vHVM#C{dazSH*^oO1G_D$}VV<$!Ni+B+XTS=$_#T?^^sRF!Duaawsmpw-xjVQ_6kfHyM zb$2^5V!JAy{xngKlWiXd|8#V%b?akmxg5&3C>mO3sAKvvIHNti;8Rg~Q3pWOM55A? z4qE{eIbg6lsHcT1DBRK-I(NhSmWO4Ko{0ZDf0JL9WG%-+5j8a?mbuTQKsSZ5bkO4e zc!lmc-$CHTk%Yrb0OIJ}b{& zT9zkyc9!<#q+Gm3nTfEm5>y)VT<*t|h4Zf=jiOvJm~j)<6SF5fX=WCZ?mW>Qh3xcBiA&N1*9>-sHOKy>Ww`2x0>PYuGLj> zIwK}m)z$H+F;NDVz{UQWVoI+P%m9tyNx8MmsFD@D@t#_w`dx^m~Z zogsVgwv~?E#vF^z`ln6oXnk{!x6?ZNPgNq-=Vb}U?Dx+Cxf!W^ufP4OD0IxJ4gutD z)03$TXOFRc23L3$b9L$VJHY?mU1d%@MG}D1AcmU}=b~K)qURw!jb~%k=Yz*ypxkmW zT(?F7LKLByjshjgWJko(->c)b2x0sek{zLHHjU8kK(6YGiNG#jlfh*j5Mdl4Uvfw{ z=x;_duG-(%TpT{AjgWK7T-TACRxm1hiqFPhz*#)_U7XOA6B#`{iokVW zYK`5S_viw{5rhbivg8qp+;z&n`b%|NAMSozo;+YWS+Y=omd|4owWvGVOWG1E>r|Lo zmRyDywmVlyDyF!vcYpk%t2KY-Tc$gq&o%BhUnv&4RzL3b+fI@R{Mhv`U2Ys3ngG@< zc81Bp2dnnD!apSmjIH+n2CtTxy_q*^mdc?Ov1OF=|Q>yVV|&4wf8Zo_NQ>kt{I&u?y}bWDzplMRrI)7BA3x%e@K9>34bUFxbS;> zT{z#Q;81^t@E^N3PMq6t$KT91WyH6JtF*6ISOhoZgU5BC3BYrVi){YPTBd!B;C#-E zS(W6df^Ixrc!c8ax8&e1ls3335#X^UDXQ;>C|t72P6qUj$NxNjAf%{#KDt{|@;4goXJozzob|9% zttf81D*htCKGuH+Tld0fEOvMsG3)xIw*K-_@lvRbc%J4xJA`^=qNA|zVW<5UMWu=r zZxe_i;m&xaQnrl`3sg{21qOa^wSNvVXxX98AF<5T+cNq0V6|Js9)HzXAP9mp z!SMMj9|w$BL%v8d%#5kFY159ah>S` zz%Tyh`)v)`D;HVTZ3%Q1H%(iH@{EkIDSwDOKNbPak-++csh_JraJ$#JP=3}tIv%@M zJr&ZQ2IH&kS5xE6(%G)({LHTKMuSxX%tgRasi76JIt#9oMJ_9A2tghwC@iX~NanEM zy_c!O4Vj)9N#Kjsk~smsV>UO)^B;<*Qdf0b@FI5}Z?@Q*MHKSLZv~*ua)rlInjzro z-_zjgaA0^uoz0BcOyq%l^E$|_s;lF~guhmwLP~fUm$Wt|wiz!4DvX|6F@Eh|aI6*N z7`NUT9adxx^*iY56t^9-pSHOR$LRc0A|j^1ZEFmA&cgrRX!l>4SCZY^-VoY6u{1$u z0*p+ZlxDWU7Lm-9mF#y^A~}_*{I&tAVmRG7@F#r<8jiB~>Qo!=Op^Y=G+IPBc08}; z54-2WIE9GDx3aXHXg@6&u_KnV{bupQT zB}gq?@sWhfZA)&7zmnv_ey}hqV6@04%E@kiEGgwNXve+DvFIXj9w&+Z2f3M~!=!&b zBdT{P2^jp2m=*??)^H{`c@(F<9-KrMXgeSv|6S0SKz=D3%wX)U9B2g<8l1y?bJ=8L zW!fpZ2jsEub9U+8f5sp#Z))Q{8dsA?Qb?%2sdma~l=#_Rhx2WFCx6sdO1&5VHQV+% z?avHZaW|AL=rB!cI3s^u)-0<9Igqji8VZ$xa*%X zv0z=Wb;(Q)XN*asYUl1MyYcgk)4)UMezSjKY}6(kJ9bS83FI$I-%{ATK||Y0lVGNi zwOnN;PzWEYWE7a21q)l=}67MPoO%Odcm1X952bvP1Mhca*QJjrJ`|}MdmGt$R!+b9xpU!yXd)cK3|3PjXJ33x_ zIa9>u(Jfvq!5Yp4$D1p=4PH*Km!46@4th@JZS&!%bL*}JR`BMpB}};GK5+Ir_WLAa z79|R;3d)I7cO*B~V*uHq{jTCo*VKRW*Ijcyg=npJH}k6>xY{0X|2KL1<-@@@0%=xq zDEB+I4OztU`anjAix!v#HAAamL{OMs#~8hF<)}q0{~~p7Hlj*Us%+Y@Z*52ROi99$ z*lUPHS(^%P^zXJOQ*(>>#Qh)VzaK(7_Yw8oy2JBwpDH*1z8&oO{QCNO_ucjQD}QTc zG`3hw9ifgYLj|+<9*Bk45;?wMF_!f19KrfD zT1BXr7=6<1e|f$$^^tv(M1vEEv$;jU$09rKhX+y$*p~5IRl;{Kr^kzLWQ|@xkN44L zZttv2SLIXEgb?*2CNmhE0^!;*D^3(M+5=r@!swwO8+8n$k3b!_OZiK$1Oc3Xlv%5M%*hna+ zUfr>@tw3@qX%`qm6j>@j%wqM}zuY>uxb&XnezYe@xw#5OKVfRxk6Zb3tYn5N=H!Ix zDVbEM3q2cjz`?1@&}&Iguj2(zs@9(LBEau5fpA0lHCNvRE&R=Iy1oOeu3Z&<52mI^?3$Sw)q#6MMA;@<(w!y> zYOhl8sNO|Q7bL*r(Dg3g!a0(2SSCyTzu4At$!-S2Gv6X~4}6ImpM;633==G`+tN!R zKhDDLlCRz-s2Ay>u*(3xOF$`+iD_Eru&%DMy!WT_{6oY|ii|oH(%Hji^&9Nx zhYhAT3T{fLksbJkgQ2QkX$0AZwre@7;8}=`&H%!uNh2 zGHm)KQC#UkxnrK<#Gut=`>p(Gtv~6-?)lC+NcT1lb@M{$cf?Nej&y{~dx6G;+>%aW z>dgsSb;JZ!`zDd+cAv9Kc36TKcQJEhAH+&iG4!QOT8=;c2r~b%`@uKfoAHZr5_B`* zv*Ba;AW3i-0P!Psp;Fu~Nb&>ZDvoF-nLg|dgE z_cCv~*5!q!L@Vjf)=jcW+)DfoIq6wKd-U$b1J(~HSyB0>_~}C3v*a9-19F4o84=Byi)iN8+rxK{+uz|$0%^o+F;g9PQ47?{Qlz{M)ZwdmvVCT zhH-?`)33XLi85l_H;Qd2W0_YZkq((@&=p+?8+tteviQ2?l0*4B*a15ZS{jEq7}RiK zvfAHqN&W#|Syw3<_noNC*;ILwYacbrFya}YE%4$cU{VAPP%eS)e z%y}i?=j6)!P4q)1GfJA*nS|_aZ_)4_?)XG+r6)qf`+{`(Kf#)XEkQN8HXl6qiWOtUqzELWedT64Ch2bB#(<(Q@6 zS3OS6ThJd*R=tFRr5`W;7YY8TuDhK@9UfwBQ;Vl+A1ty9EkC|puv@G3asf!g?ab8U zRw6UJXgKA=E$H7>POALzthPPvGaHBpaaRtGno|!xV^}iaL?o?}T}z1T$PTK$Zu0w_ zFbBCG&(nzI2d0z7L*s(Eaq4mSqt^;kKfAY_^$ke{yYS+@Z=!KjQ`9A_P5%042j$9E zGfNy`$r^)BXhleh$AN8!*;1=MPvuP$MHOMuC6(s_6XA?eqHb@cdBWW+CBj#wWjvB!^Pt z#+xQZfcL{KXoVN-h##PXzPV(&nXbzXOZ7Dfyi3!`YH;y4)!M{ZHm+d(EXUUcK`kvQVLevM@#Vm^ z8O`rk8-Qu%oZa~eEGWXe=d#>mlP|Z5P^~@I3VlHDHTn(arP9qyJyrnt-n1z2#3`}E zYTa=r4MdUWRS;X9sEA@=#7vPBeZp_5=R-&YeQ*9wcI7Qw6h9)dFBc7u=v$Z^2kw1J z&mD@p+w$%{{>abvrzN^6(`O{fzoTDY zpZ<3L_u=*Z#;@1wvO!w=iy!<-5ncC|Gyzy#i3Q%-C2EgS?TASz0sskz!dQb)yLjmw zFTiGEG#UG*QJ+~M-OL25@vL`PL>y9Uw;}^`h6t^LS@QuXD%+@n*11~PL`@lNFX*h5 zw}Jw8qw#I?JC}AteK+D|{Y0@kgL!*(kfNC3@XOT7ilq)I=sbe5f~O6OiQ^Z9pa9SM zALN!&qSy5n34&}My;KT(;Dgn$SYP6w4t-5NxI(@lhudKlv$&{2wS8Jee1J(g6btE7(ys5mT+nE1XiTS(s<@y2L-YPQ z&YsV&*W)wW!t>Y9uh}$VXE|hB?*wC`Xygv>QFA6J5-H(+ck{_N(U>%KZR`e8ahxYo zx>2+_B)i@HW_!SE=xUXhNN6jAOloBGhGEFKCgpcy)HI(~ls zYVOcgGpcvt-13_Jm;>Jix1;!U!qdbr6HRb(;jad}Xa(|6#}c(N(@R;^ArAYIAY$fl zf0E>xfB^sE)RLxV=3PB5dj|5ns$vSN(03E8v{T_hOr*`|t*Z)(f{9*?TJ>J4KwT56 zFhmV^40?6KMm(u#jA+D`&Vpbq7B&>r;;d2dCp4hrv?(DZ>C(fbZh=pBXCjtFue(dA zC9!~z(uMJ7=CYEokMW&iSXWmQ>-6uOC@Y4{Lr+9X3r>1SgVT?Z81k$ohI^jDYaR5X zMRCzNjzZmCsjbXa&m=)C{q#Aul7t${b5*u9GIRTRJo96WRc0rURi}E_5$H$4=)jn^ zyLQCtN|ppOjJ*cMp|13*#$`e6Em>)~=TkLV+4%Nn#+bkP_mjSv{N7LU8L3^?<>tmH zb3x3c8fYT9^=pWYmOfX|3k44l4lw zAn2Huz%V3SgHE>+(EyO}1|rJIt-m1kcIG}?k4pJ;7dc9zZh17Sz&BV4V7w{MTibSWdKP9zr?N^t zGcyEQdRArU3S=H9W1mm8Ow--bT0;~SjyXTEj%X8pUX@PVsx*KZ{&*FC2Z zY}g16PMHK5XKyP%*b+Ex_wPCLQb7T42#wz}idMmokl57>_dJUF3XdX&f%^zwiDX70 zrEnf1V0*tbOc!Uj>DO}Im7yN}B_g|8{eEhW^2gz+8f~7nTW(E;CCP!g!SDDX&tT%G z5b~kT9dnB%;AG({>6Zy>rMaqH-L1}DFEzt6K?pGlz561=+0V!cx%{3dukRK?4uat3 z7k1BtBj7CX=Ayov5aS~m2#^ulTQ$!FLPBU%e*4843NDIQ{N(9COncNOxIBafL5%D=(NF*01^JQtfE7}L-t8j%R*Qkh6*iRyyb)TJ{h zq%mER%2=9N7AP`_Z1YD1q5oFfv)l+{^7g{Csoy(m;zOsdb82NJ36Cmfq^(l@~6K;0wBKj_|kdF{pQ8c1vt zU;sdggvSDpwrUkv&E#hd%cA@QWa?p;&+v2R=G`xn=Oc~OyE~1WkU9ydqYqZ8INS@U zSAEC)OoJQKrro?Y$bD27R60$kCppP18;@W2Q>KfJaW(e~Q`SSltYv$r!LR}U0y=%= z&kVP-j__oMD<93~-1pJ><_q?&40UZWMAA@4_ZX?2NWV|AIwrrmmgi0ZhTZDelf$NZ3!BF5RrPYThmKL78KZM1RzI^%>?dvj^-GUF z@%9wB;c&h;4bbw~Ntxb1ZU}cap+KV4AvnuqRKU{GNyg`+BVz#kSM@cLFM21QKINg{ z@E_#1fYGTM8i@tLKhxRC?p#$Y2#$0W|3U7t&S@9U%Sp!8$0c`oB+5<{g-1o_l6tj2 z+8n7WWNAX&r|n#dP%ql^ozg%@t8+FX-+scP0K+`U<*pUk*nAC0{=^tz^=^AChmv0+ zE4FyE$OGs-ABC!R+^=W*q#hyN9VH((w8*)^?_8wruMN`waQE;bj(EkwO99=^&epa> zu5`(MG=!Ypo^mjRR73hzl3>qUp7RK}9|NHqy+ofY?4 z{;9PP7w=56lz;+}W0y>!OvKJ*7I&_Ls|-vCi&=uWG=S9HcThvSL8Z!tAxfAU#0eC6 z{wQ|w)qqiGg(oL!H13R@ld%_?U~0`rs!a=0yP~Ihj#K1W?CGr@cl z9D0NcD~OT(=5`+9%5XYuM?yZ;x@n3bw5XMsL9YX5ja`{Vo12^3FeIcMY}Uxn`HpML zUbOJ5-Yx?w`gM@0Vy4=Vh|jaolLIc7LbwmhOj_9ule8MzmMNbZP`fA6)^bhVOS;FW zDh0GesdSoc1cec8TJI?oBMK;p22Dl1bojO2NMSeSRQ3=gHmPAnZ2v;(yNtJ{ow_e4 zPOT~Qz)~Qw8*6!1vv`j`n>B1?N3l8`CCy#!%lluBB3nDds2O`q3JJD*grO)paGs?2 zU%H&#QW8{GYvmtFlHq)M;L2uUSZyoowx0}(s&`7x9SpSbRSsN*chFPF2P$)lDy55J zk#i4E_IYmOb|v|dXXdJ`i}=;NWXhR`=Y57~JQb+jN-EyE2mok__zEnC6;Ku-CLY9FKYfZ}SJ~@W21_a`XiWqedVi-6N=zLb@rC`#rP*t7EiRp2|9xtP(yjgH zirk^^BR7OeJoR|#e|g@_&+*UNK>oOX-@q-`6&~2$Gh$0}ouLUsj>XG{i%bT4N1^0F z#n2%?`twT{W8H3f(6o+Ff=)5*q`b};l&7}JA|9z@JnquBT9Z%C$IVj-I{4N6Z)X!D zJ1x1$B6~Y=vFu=kNP4ZnIMxUf<_g!mc9aWOGwRY3TSqY)MS7G-eY;YN%6j_+t*nNh zQV*&gIKuBTxXQoivvgntM`OE#f8z=(t;J`W@9<>+`e0ZbuEXe^tp-#z)b9Mwo|c{% zA#W#NhGi?Rk0mKuv68ENB1#0-okyB-%TX?V6@6-P`AmjyD?^@f) z9w^#M+1~dW`S}Zb;AmnR+b5}ta>q6lD=&KtQcqP5CUHaz%xHoKz4o*?^m2O7K1C}1 z9T!q2&i(nObV@aN|1~Fbg|uC=nf+w%EjMk+j2%VBc&x@lx5GhU$-Z+R&H! z#npdzx&D;HKuvuL9C-h4eL>_ug{F#(o*OR*41<*&oI@70Auqe54N+jEN`EBjbi|uS zoI5xAnVG%3bPJ9fp`st!N>G#RJ}_-ImUqAy=s_Jgt7y=grp2WsHH*EX)Xh*y!=#?J z9ZO4v{+{8)LFzU0p)w$)L+2<}w+LtJ6g$MwIGfx{boHJ_O0BNqC3SGp$ds?sjWjqD z%=C}(KKWWQoBmRL(kPKml~vqYK_$2Nw!}LCLv!6#Qk?27rlKk{v^bO2#&}nlm%PiK zAO2iG2sN@<5&ZN`fwqy%lpRoB%ijtxv)|hj^H{X8Z#{?LS>X@t86S1M1)cj1z1xCn z%dBmS*JKH9a^%cvF9XttJun^;cRtkXFfme=i=g5c8;c6m8JZ(1)IYc}r@l8geb>nO zYt;8U7igQu{+yCCm-7Wy6u2c~?yN4r!(-mu6m0AAgvs5K61-W^J^x@+@}sX*O}|&a zpDz)v#-AtR^jg5fcbEv2Nye}VOGmP}7;M7gVseYnE?YruT&x!@ji-C{4C6+}rw$S) zJ+&*4>2;cxJ2+(loAkI4LyMJ7C|Yvr8TG|p9trfYo_UsFG0%YHX_ zoUd>sjV?`iNFmlS5tlf0soZd@wNW1o*txyzB&h=R_5XmpPdsp(@_)7|`Q~`NZ;%^7~H^ynwLB_+qGU%KEiPJL3OL>J_KB>1L@3-hN zz39KeD!-TnJ%w-eNp0?mFxYjSFD$eMl??v1oYS$Mf#KoYV zQkpqE;^phH{D>|>wgkTmWPdY6QXrK!r_Dtmk9Ae{iWaX+`J^GxIB%=4LxfmWQEWEw zt>0R1XYmV<(W*v)UH&;?hz*fc$)3bU;rPabvLgR=#P6!$))Ls#PM-8O=Yea7vej}* z4tI26LgxCnPOmsNfhG32O;LW@Z+W+lO~2{P5jOW^-7^U8`@n7*gYWma9C)@|{*i7V zUEfUZ^iK7C3wpdAUH+;@qcRz@`f+@lx|_k3!4MctIFN>&wVHOSaE-O|wf%t+nXjL- z_k(>FaD=da_eUU=*z3Ei``yg?dZ|F*8MpIpZKLZ=-~vb8tZAY#a+0V3W8nMwn%Tt)O&GfaRk1IM(Z35j`?7X zZ^eT|zjY*S-U-sWn>w17Y9+SI_sXwyX-Hskph+>s=zju9vHr!2Y8z%PCCBr+EU(kC1B?72iLBs z>uV=|l(*lNu4-6g-F}JFA;*DPf-5anxZ2)TV2Q~jgW@RlDEZXoz)9^ zxE?8{%c3|<4;5VD&z8L}@a;WmQq}>~Ca+%uTGxqJ@ZU30ggNJ48d1SqaTt?fDT-qM zsoFRytLYu=7bXp|{O(PZ+7G`67Q-grC2+bI_#rfFZ$4e)CZmg`Auw40!L+>i#0RUxNkEkx=~!KA;~s}8W{vW1q0H6zT&H_695Hym zsM-<9wYqlJVwwfk&@(kCn{NezI7&p6-XZ+hp@p@%I@HnI%+)=t%QSvU$H!D!b!Y%G zhkN^YS^W$S5ju#vGI83_F%Ir`?jtzE%Yk4JaOu>m&@-FIS)-_qBxvJ~Ge;w@Ww=bR zIY;xsBS{bkhP{9SWiZ?bl{nd1It+dfy5LDS&OR%B-=`PyZZfm2cPQ~OAA(-ov=+VUQJW$qGc|NEr{K^^6c zFN#wi7%nO!C~uTT=o&pJU1N9dmvbzRHnK6b2@Ju~(&JAyasVI7epBwvAxO`4-f#UR zxa>9n@%Gj1Z43AGo-lT`r3=QqJ45-2LqAaypNkPAsF$((vhkb?Hc81)Y}nXJNM|NK z>DyET@4c*_H1o^xK@|Lm(@ioIijy@E;~ZI$2H4B!sL2ZGc|bC@xBz1;hQ3GS>8w zknwYU!Z{1LnejkU+{}NcaCWwJr$Z?@=c~g*^M?rwwjL0LpjixJ+0x6^3!CNIYO`yz z>bBJ$j#!3$=UkFOxKI%0>TK3#mfdklCBq3xVjZRQrv#;qy-IUx_$mp2CLCQ%YBfq8 z=2WAYm*gXt5MGZgrQ5FMRTYel+v){KF^l!2-bog~q@YSal7;I32FoqSq}bfre@_>B zW?Z5j%;Ap=v8R$v`cy!Hw;--}pDT?qVV%HANZ8?XczUF+EjEoy5DiU8U!ZA)GL1#D^SIv@nxsG+Re_c0r92#_X>}=sFeSJN^(>;*S#8ZtL z6voAfOUuy3=zfWwbwzSUH#Sf7Rrt2&Uu~SsKyVNSeV?3NZ}x35db5#@Z8ML;+1~Er zR?6<5LURz~aL0IATr<+Mj01j`yLQK`SNW$yA9ZGB!zz;eA4}ih9(VhE9W=IW+eXu< z*{I3Jwrw}IosDhVNn_i#*{BVgcc1U?{SWrq>wISJnK|(60i6_^RXOnZ;)Z69Tiv|y z)N-8-WB%N}%rx&z+mUa-JzaFMUy?LmpLx&|y5(|{-F~o4pxpTPrG5K@qwIN0+Z?;D zA>-~cb7$MuW_!u>PGSxPLmZ9b*BH!@5e60mu7IuUsGEqyDAbnt>60(_-={Qn0@t^3 z6hUXATgmIG@;Y%o4(!rC%Hp_LYvrH0qfU`OEClCc!wI@^^4S*EhZ_egFF(4CBfr{D z-vexpM{3OBltE^eKe|(e?O~ao+#Q%<2~Is)N9#PiN(Os}yAC|=IfM~+zIbz9ccdX@ zYqATiX@D2BZp#o5OYh&vvA>vAwA1qFIcSALEtJ$$sK#P$TPE@xOwz@IH=FxlG z_twO@;HwU%YOA1#Z6_Htn3GL_ZsY8EUTkDpbFG7mX~$FeGRY$0WYRc$uFOu2tITnn zj(ZrQFAP=Us4 z-KtLS5Ye9$g5?mJ7*}Bo5m>NWE~be`J1RU8N>)6|o0;gUR^ zA#x*9FBSd#Y{_hXO@gfTQr&dWSzpyT=d%B|T&Ez;IaRhjrQWRimCOPlZ}r| zN1<9W?rjE?0TuEzxm?i8w_ylgO`*f+VL=jEK{jhe$AJUDr3o0=W(W~H4zen1`yQ=`5}YsUli>=^L*|*yU{Zf)|NYPxLUcDF zGMoR3TqEkxC=dt^@Vc`dmvuI})=%XC7daE8UsDBOPH>AOrWMG&jDfap<8=Diffj66i@Zv(2vuKn$y@->!{3+NGTnD)tcB?z4tl~(DO&sQg?@nmW|q5 zT1(8yGtO8-0Id=~(2N~+O9*WMX z+qmfXL_G1J5Yjy)<3J$V6ub&S>K||B9TVT2`ZK6VKrRc@>SBmZjLRubN@8&|Tk45# zW1IZD@_d&Llr~(xHrK0?gBfCu%G7Z5)M0Wu-x&bO;P;9`)Yl{A-AD#3=iPS--{1nbiUN zY)(IU7_k#HHADAr1hN6|Rr&+Ee)O@(l{&FZ1nyxVCkIrud**pGa<=@kJURW8*|c#) zGH0rFe&)>fr*U3KqsXwY z?p$%|E)gn=?)gn@)%BQhO22GpjgmLheK`B`lf`7`r-y%s1y|mFYz)_qzXMs1P0n(k zb%5BHp14SWp~|w9B()@noLjNGd`ZwQIqrSJQM+?VptydxXkJ^3WcazK)9yTTtq$%5 zbd#Gob9Onka$;3jtfd$VOBJ*lPb=|d4Tm~5Ss`&}oJ-{Cs*^!+_VmWly0GI>>6;9v zZIQNOF>WV_#j?hVR!lxd**S_%0ZTb~hI2u(mr~}$29g{dGq2YwLpF$tHi)Q7!MWy8 zC0fwpxLEqxdQR!MXGD+^m(GnqrKWAx-1pZAbyj~Xz8&KHlT^cUE^{h&;$nEjg9Mi& zQ#9tvEf-s*+mh!Pco8YKe@t7(Us3@rF~-J02`IHM6*LAtq8tAu2Ki1?YMpm2Naw%^ z#{DRE>@~NKvg%4cE92t*0{a>Of%$?SB`srM#1umXK`+p-pk*{B6G31PrE|FDoo0#E zUBpwA0DDQqHIqGc`m>X_JMthN(3ddHhJ0>NR*%a>0VpIrWXPm`O%*IZ7F17VI zTm8@3{D!PZuGIwBpG6)NxPizi)~(H*K7dM#P(97P$g3qkZf=|SsLaKZj$)a|?=)VV zV*fw7+%LoFyb`=Xl?g6k44IAg=6aI- zuMD`;Ib7$ehF3v36#~qbN*N$R=3j7P4=_pfHM<6lYJ0=|TQIh;utOo#^=o$!k!FGv zl$irCZdO_pYrp}~AN&Y#Wz@Jkw;9 z`w*j_#~&?2v|Q+k-xoaa$EeFj76Jk>Tf7`W!oB}qoqWFdmwd`s#6X;$)UmOMIbfAU zhx%4d%BNZxPK4{Yl=%2M3UDY}&^4q0-UVZ4V=SCgG#2tSq#*7m)7@5UL>FgCcCD8C z6qFc^PT~9|#SC2xGZSAVh^jjj>I)JO_SiNMWdKR%xvVRYk@%*8vVFd(X@_RZaOX=k z%+@7Pq*z+$)H}NRGmpjCD|dlr|C_*8F*I@-6TU6-m;QYAUibms8kWI5z3kkIQg87_ zLrV>AB^3d7^ojV3>I+xef8sq@sdz!>8I<1`zQIz*etFSI;?PQN>XQ%r2M4hj3&-2%8d@zv1QGmvt+9g87e9Lm}kODCh}fez29CqTQT(bTPSA0w%^j{ z)&x<)PyfHlvHquG^}aJhM4S*|(I=$Qle9BY7{38SF1*DHv}G31r@qb5f#dm8Kyq>C zD(75ECY6M{HCU;$#q7n#UBPWT$jrsZHj;&L*NtFVr)S0g^JCkfBK6gpRBg1O%D@Bl z^Xu<_7O`2)kPsZfsMwyDxP4_=nj?xwV+n4HCC*pDE9gZNScWX>#KNg0 z*_*CLvUQ~*p4DZ8{J;TYIxVR4p``{>xC#mIJ|$S?fPZW#2B6SJfm-=#K7XYadR$mcCv>ng4=KVeSUuliuZ zr{#hT44-(+hm%;o-}D-K8B7lw0U&QBwUH!x6e+s=QM0%_Inm1PJYYmQn>a1#X@`3@Wu~ zYRn{Il*Auzrvkc{s2+1h3&KQSYs?P0N>9%7M-F2#qoe}y7^kC8hBQejb91~_5e^uW&>jzADXACe61!suaq@_#?FoYeg8R|2NmLX zNW8Xf0;A)LU{HbYggENNN&>CC_JlRu_?|z_aq;+~cKqTUsF1sMFRNQG@;qdCw~)rk zPC%J$=0Muh2ML5@rMJYn@LKvOhgocqyuD*{{bDI(+i+s|$}Fp3TQoVbOFv!olY3ch zC+C0BHiL0TVn3F%(7*v+h=jpL5Bg|oaA13g=pYVyMilV9>rJclR(4vGmH(KW`Z{<9 zUpSSNOPR{ilGZW+G#JGNgTq6ZozTwy2vCde$fh-Ip$(x^{5{kkuUwqYv9fvm2w*SI zSEJuXWdsrn_hrsgPX4G~=wo*gHQkcd$NWwInGP=>?Ok^7;Lpf%3~nZJa(uQ*+EE|)c75uzJrgq+26dfMj{7g98T-HGDx(oQfLeSM~N zs+@g@D-XL;D}l#S8zi^)6@WP4q*{fAXp%Vd(-hy92Zsu`d2mqLt&Fl~$YutJ4}pyQ`rS*_a3JmZSEDrH-g~>dV`giE+iqyBEa}nFpO=mLj>`jl7+2dfa9@PB!v}fw>jl9ro7fd$$fJ&{+yN~ z^w6Nffkg373QyGZ&`?Y1Wxj82zK=l{mdL3#TE()v@RVNhnT4PS9ztvtZuxdW&be%* zfnq}&00TFs*owJ%Y5tY1q8n!n!FLjAz$u#xp2AEKk3PT4dYT6U-mdn<^ zZS@u-%`}}8pgb;!SwtcPO(B&h(iR3K%I|#(FUHc&tvKd2*0Y|%i;~aa zcKr`>qo_mTN~&3G)_3uhh%ROi`j{x+lx#(rCc5eABfHJK6w{`o!y?M(Q_6Zc4>K9C z=YRk@7bvIZEE6%v`u>Z6MQNxpTqy1@jxt^WkQEgn_~?OUbGigzsqG96by2bF&sA|| zz-AU-ZW7yS>R&%YelOos)&yNMrDdX%Bl+%TY#$0QW@^n^%%}?#bf2CdattmTr z*7*a7VeiIr_&;r#e5sHx%wmNkG3I(mBS~~Xx;;P4r)Qq4Ei_HiZnZ`qdaB%6Uo@A4 zc&wW@Ahbz&-9p;*Zh5wW`%~=yOhRjqw^vO5T~tB@u z$sA)DRL(u4$FQyZbsX52Xq}UYzRae`^%yg2@F{1JO-n(K(rvl~BeFDAzrAblHiqql z5o;bb~Q-*{bpy4EmL)oRu@u+`n2r+w(- zcsxABv*?grfWwI?Wng-twjnCjDGnj1OKpUm6F(ZnqKrojBgN+VppFxsT~~H)E?kCn z-6e*;FHRhmF@Cj9ZQ|h2Oe`=KwNqnBE8d7)iVvOpH5oX8$_1y~5k)1@D6Jr$0ON@Y zeV|kEqGqRfGnB0CTIrft0?2hlfjMd^d~T8*jjVWTc*IYZZic%%CVT*wU6mlnL{Jt) z39W6m1%`w;L^8dT3j*wUGURJIfI^Nkbx+^1!+CxD(qaK&DktnOTiF}RqJXN>)Dl@& zoG6c3XIX{$N%L-aQh)cH4T&1!1`#dQ&zr zdYbkG=&hhi4$e>1ouSN}OvGT-cBkZ6_hxrSnGa}Hq*@x6bfOH@vR@%iQP%#reejl% z9yh^E|03C-BCx1&PG7S>JJH7S6Zfs|_8-xpPE#o0W+zK=C9-*szRs#nbs;ZvG336Otsr5%d?tMsz}sH1@UFZQ^s-7n~=hD8mVpryOCg%|_M4W=d~qEX4U2g8cgT0Q|W7|z2&Pu9ZK ze9~0?Kgi9Z4)y-$yEJfDHlh990$(5f8@REGG7Z3ki6r3TLlSFoOoF0eCPGrNW>88D zx@3lMnduaUpdn~PHaWYt5Tu+^420B0&p@=)G<($>16ak)T^!}Ml-iJ$$^JQGbLTjB z?R~8J=_8!_pmUa(zO2*i`TK`-*?oanIE$eXH@f89{gJBqi3D$E5g`W(mJWjyu73_j za^Nm5;Wj!dpzb2T>8J#jq?8o@<@C~|FXxA@esa{#>>K+r&ePP>e=A&Ta}Bssg)NXS)`?!7B}I~0>}T>^e=mK=y{?>%Bi^2B zNJ&6l9I4EF`1GZb)h<2=|2zGfaTsg8%&ZwP^WJ#ro<8T?THJ1u+c8CF;wCV~F-xH6 z+XYN>b`}qS_;P2(kU}YFSaPSXwAh~RT(U>qhHB_dzmFU*02)O9xwnp*zpZbDQ?+O| zy7R&HNfb9p*J0zi^M)S1Ir^!lR#)y(VIJ%$khLQ2q1Mp=382Ixmy%H9PE=3YmSM3J zTq(9BC>=q-)2s$a8+^}?dPKBrj9IWSU3-GGucAfx7YvI|i2yl`FCBobm?0y1Z$8Hg zb(UyJ2MCtw#^jKUwqx21cgv$Z{+indvOv>HUKLa3tQ@}BTFWsu-fX?9on%`rjRusOM^OQ-i ztjYq}XN>EUWLnZ%qhHl(7hIgl1H>~lQ$v$cg5^WeQX*P-HZiR=%aC={>?w!D8Sy&1 zvEYB5=T`5_x&Hgdae2RziW?!Ar|*yG;}^{FdFy@^R^PtCGDo_nk8H^(&00RN30V~-jZn2;QmAdzc<6+^r1qZ6R5v&2BTch=ip zDPxBLE8AP8#A+!VqrK~@DCtPeK24%%q(2-ta>AzH8(}9~;(NbUL2xZUYeUT5`YLm^ zTI@F3!@BD4Z=RWi`7v~eh1c-$fa;JJr`uJ9+ws`IV)SvW>$AJN@4U==yFYEA(SA6| z5t}UcwOSN{9N~=;MhPcMTYuq`OQs>BiYDlL;7>|>d2@ZqHd2CcHU*KjkpdoyXpP#- z#BPp6jq6BzkH6L>aw&e>UcOVX*OS*as5VIJ6T?m!dyz=7RNPku#f}#;obddmxbs}B z3489gWdOw}nG_fZ=Agn@6oNPVC^>Cft89LLg_KfBP-{>nD-N>R;Fkm%g+vtsl(w4P z&wqxxhNNTS)Zfy0mQFdOG)v@UYnk?`(=k-UwkgLea+%QA;_H}@U8N31hG=y0XZOXe z0tSvj2BUU*=6E)MboCKh{Dl{IE`?_OmoKv)Czk{ve$s(h4*L>uMiQgro&E}ucJYKV zEWgB6ysiJMa*J`pWJ*9Hwt+iPRg{Ybx;;khSH=Iv2klyh=@>w}jo+r$Kf2d|2izU) zon6wup8~_(>1j#EpzV`COK{Lga9@|el$<}tsAA}I#Pgwe(>u0OiU9NZisvvOf)5|h zT%1B0Qt|jr4a^vwc_~*#7`H}Kl=IQCt;40Lg#zJ-b>dS$48v`ch=!|%gMKU`u7R+? zA$1eMWLo57{Cw9^GQce!jivaKUnsrY-J-s!n42^7zx zXf2e(L`Qm=aa~Vl_Tyw|IbWBudOrLde1)&j4+s3I2`;fzSL(>zM%v`rg(D%8op{Kw z1EDb&@L^_fu_DJGg90FJ>weX+0IlfhdE_c}zhDdTRuv`wHv4+bip$)ckyBMSR8VMb zb&QOR^#uhRr-ug@wzLfSkAzm5-O2! zsgupf!=tjG37#!F0d_TKJTt{vrcI1Ji*>3?2QkFsDHmq>i8R`)EuWvP0T%M?RI_*p zmzsP=2xywgDzLn%^CyxMT0ZU;jQby&nheeM%Exy%MLy1&Nm7s=HNpy2Ce^EZe0Ev& zf2^BYhxWcRxC~qMJGS(#3@hEs){c<2w2f0&? zb;-L()Bhd3CgO%Vl$QQ`%S9l0o0wqQGvkjX2_k%LE@eTIRr%DR0oiKH02BAB5iSl#Y(U?^7}%)m^;H4Mhfm&4UoL= zENl!%Hg#5sQSAdN*|f>U(rRxr(rUxg!69A=r>dI8@Kh;eW)rwnt6NdQ2T)5^ zc@jVMV>f(EMkdd#FhW+5a8H?^uIKXddt11i4v}W-fj-TxyzTXNUA6i1=nPN9;z-1@ zojUZDCx6Q|z{p1XPs_1wxM$lET<31G7<<9MEHYCyI`o}wD2@JbHnJdz{s|o8h`YNM zEJkwNSPCgCaYP*}@V-vSEq|_TV#v6gwq$8Ys$lQ6-HVl!fk$`$;>pZq@%UwlrFj@( zUQ6J?`@V39FUENJroiN}Fol}t+T}$;yJ1?Jcww#sYF#cx!l$A)btZPQ%Pv!BN{8>0 zH?j&do$bFWHw+tsq`ca3E_)YdO}JJ7G{|truR>-fTmg+}vaC!E0`j zQx#m(4`#Nq4oyKLxw+7?$J9BcrWb$!8Gy5D*X9q^P;^O8pgL4d=@;ev@sjvgUBeVb{E9 zm~H&6H8r$7Jx3IT6~72|U*w1*QKeFhHunizCpTXe`&3QQKso1wGiRG&)M8mlqgJgL z%bF#uVrcZARHGDD#SFFw1J$y49%QzH@SA4EOq{ZvD;Ijj21pU{oe2;S48OX>T$-ip z&$?rqP_e&kv7Z1X(7j^wf76gB4Johfl`7j41v4gYE+3PUj)u#y%$Y~M#vk@L`eR;* z1@H~zF(tj8hN&9h6^ozT`nluL#}QQXHStPlj{L@&v~W;s9o%JEseL@qYr)E7W(0~D z)UtRTF45jxjHqg7ZeO-IGxz*Gu93X7vsFP_T;$@aJ42|=heIkMh`@GnoDK_NG*`-= z<8qSaHQsa;>w>X{v2E)@l%y=pN{CBZp&oQjY}PzVl?_YIzfjD!ot}cHw#MMR{<4&l zD%$VHQ{77KxRayHu-C3_ToAt zDxd_kvKyzJi~w5sS;yMTR~|iA5p>Qd>oPF4E9nHLjn$?xLz!7=nL2>ok^EW`8IPkG zRNN@q0a|o0hCkKdih8GT;U`*L1q5hTi35qT8M{b*Y{{+MaZ)EX<9`69AKc>)5eB%j zZ+cd9Jpc5C2&(;uK0(#JG2^$0%20-zFr*m{#x$;S4JAC7SkcF9P88U+%Nvs=0Rr@w zilw`L&5*3dmKh5;WHJ%2L|y+u)ppXbSqdSnY7%WMc##Vy*O4cCcYvkB)?)5Sz8*Nw zKC!~sgH0-4oVcQl^JCSfdrQ?N>9xlP)Oc&%-N5?Ktmw08+aj~@T1~O2K@R!(_rp@_ zXFddkMre?-N)wDMr4YTeq!7KWkX81``S!10kdi9A85zv+B(=MAi5NH!-y&k&Vm6SO z<*?drWJOKF<}n_J4FBp&M4U;yQ%2oP;QOl#M=izgab1y=v zO;_&7#+~*XQO;7_ML6hNNfkWLc?cqwJX~5)oYxzM? zw>eEy|C6!Kpf(r%SSA8H1xHUz6d9e{W1j1PSHZCZ8cfzW=?(2R_O-6F%ft@tIgjx+ z;Vw*eZ}I-`PiD7B1ZLm#DWSwuDE@HJf1cQf)X<8apY}7LPXJ6iGZR3e=Fy3)UB~bE;c0^1&IDhiE@Fr7nhr`J8Kyc z4RDMvI1>R7F#0l_@3HuNw4CLfoNW;FCJD?WTm%{4P=@||STdNTo1FJ~YqSm<*>#OB ziY!0DVzpY%D5&&BVls^i2X)@;e=R_ax<87ew{0-bg^PJ+#%Fu?VjA< ztsW+1GdR$3t_^x3YFVoNO)|}^8?oE0x zVM`$|XV(Sh|Iy`U;)Z_x0K4EA-zAN|CL7)AV~YGA+;7lk+tXD96|Ds{<82+NMVB(qv!*O6WiIdzT z=7djoAZOAYiJ14nb_we}!4(@OwGE+*jgf`T2f;siH${IC{w{4xPTyC>}oWF8axL;$Hp0CEr zihi~(J%alyLXOCMvAPmv@H%=JyyGwQ7CAyRSF(r!tt2XHj6;!PrEV*RjIA7Wn(_t| z`lWz_oA^ydo^r&JKlQYBY}b?MwCpg%v&3_${k9y}7m-8v5Unhn13=i)5cWE;P>m$3 z#V-~-1p;A?@-p)Bj;ih~ zOyh}mmkA?Dr`o+tzb8C*LiaD$0~U+t_u`jIlz~@qi_n)dNwF{5OG00-T8ll0v7mBz z7`Ty<7qGtF*avfEkr$a9L7SYHFYPCj01V{cW$U3!5g6&SRB46(&Y+js?b=tLWVq2I9 zI+}U-p;wULPL|#>8jk)`^>dsi!R3pacK4v*9#c97KH6YQqnn^8lg(%~qcjh9RbutE z9Akl1s@Q)!lG(VUcXcr0L!H!Fnt9OuSb~>?%8VP0iDUUjkmoNnW3t?j%FV)#?nVI5 zos=M(5@80xo0t(g*0aVqU2j7tF2~P5-OH(AvJx3I^M-Vx=`M6tB8u!*Jr97>dwTN- zf#x;w4o;z2iP=XpU8FcosJDSV!`z~tBuYGJ1_nFk7_0?34D zO6{tNE1IfNQX)=owi0nS9yLFG?O|G?HxOk|MSfwl*p+cfcE7;TK^$d~$w@>MwgX}O z_c?Yh>iD>#G4f1X!8jF8di7YD8k_cc067t)0f`#vk zf;eyrVG<607zQH7rjvK*vdECXjAj~D4y$=3n__;o4I^lKToP#X6yFsmpGg!cSvbRCe8O(Kp7{(f-#K z6(3l)@An_%=A({P)EB$ZOdLbbGC3@;baA9~z{iK{U)S^ufb?HJj*|~ij7y1a3JcW! zmXqucH8&_E9pCKKB)mK^PVe?bwwOJ=N~sP={Y>mPy#7@^eSY>Gls7;a*+KvcIFLY= zL(>QM7!aSGfWa{;6X$lU{6J6GYC}Mze0#Pf9$k7KEyS=JBgXe=P}1&K?9!Ia+93!g zI8Q|>EJ4(Q1mjHBS(9*3**ITqv5NMRSYMsiD-Y9?V5N%sCl`mX=ik6i ziAb*Vd`nH0*Annc&UdsW1aSzpTx|~%um}N}Xk3#MAv#$ev0(gDf@TsnT2n*?O!M+< zsgXeL1K!=5NVe0Qo5K9VIk2Vq-j)zt(iFusLR>?ap@nJKeE&t|o+9=2mxP`BubL9>~CdjJGrah}btv zi;fFxlW(@Xl8vEOx=HSeZ>v%f-Pi^+(O5{~oYQ=KpXU=zN@C08b=|fUK9I2M$2ugF zUz7?oB$3f#3v$LBsJhCxPcGDReNAL7SIdzLD2RX_^k#@Fi5V*j+VHF%l~_W2QlSd! z>7)#e#4qGrM9)+7GSb{A44{fZQ8J{Hyht7*7SFFC6TZ?m++z&C0ywAva(xrHYY=~JW- zmpsuZ zdT$~>5O$8h7si~}G@$C|Cw?07g1O35uO_DgD$!@;Ls)y>fwk0B(lqZiA$P~$zdP*J zcU(x$734P$8_1yRp9X{|v-uEE*_fTgs{5hZ(2dF&{pD;=c9iIgN7KNtJz*S(sSQ)> zmvQ;R7E8V`z_t~A|C0b=Yq!w!lS8#EbjEJGV^)o~O+H7|j|&>rAd;fL6(!0|*`*Wm z=e(@|Kxs?y)zK0*DD%pV3QNW0#&_(pt1z0F-!Pa|J8CklLXnK)TXlH?lw)TZ;l75% zm~8~2m~1gGgf$j4O{ZKwhn7NFqK0e&1}QcFEzKVWZ84X6)J%ZCe{1|I)ADUKHl96bL$;t3l->E{;2+ORz5x-!ib5(_H$bi0}bQS~-?LeTOhyYL)nG@vi@q( z$VL!5>*J_$*1qv|Iy0)@JbK$K3)t|9S=r)y8V$?bfFx&{Zx7L8uOKOBRbYYr5@+k( zP(hp!vsT-Anm|(O*y$)rCYXPKRm26VnO(hMQ`2zB{79Ql17wXqL%p6}0T)v-a+$q| zu|ZEQR?##nc`+QbI@K3DJ7uo7wr#`K`A~=usB_?y>5 zLw48JHzk&^LE-BuxK?ow#MotDnP`d~(pnmOh(-?g$;}#zGB^ zJFgHQokN{WH7P?-k;DbCq#S2RFfo^k`m*ibRgt}4R2#L?LVjZBLN%}WwJZGV5rLJ^ zVSq}ZjO1Zk?3cd8{r6^geQQz-*v9kdwFRT*B>lKS{u;CtbNoOy#g;X{IlqiWxp>if zE~Pj{{@W*J3@NDbq6RM)y_8`ROVdS1p}A+NwO?P)+I`eLQC@(z49}|XxQ~T7e45JC z9*~vT_@Wm7L2fSY_^0{;k(P;LaCj7j1-kB%nb7~P`iAu9C@~^lbe$yz1I`-8^;ULr zm@*jteqB;|%W|a5KFe|Sg|`GXhSn*O8TMW~hUN`B8XTC_aR%F{Wr2!#0j`ipD#rKW z)QFshX`s`fOg=fX^lX|KlRcxUttE35%HBlAZoCpJZ1(E(PPDwbZwA`#@-JB-( z%?^T*w54J+eur&pJQ+}#f&K1jm9&H2+r`71ip~g!!=2p+u;%X|_mfK`l6u5C)rMWy zffYrMkwNHw+h`_knV$o!?21f#POkLNjBV!prF*&+8&AN&2ONby7m$&4Lsu+w$ zpdQL_YT{QC>5~p@c-!-ozjqSabC(@$0#e?B#P~b%J7bYL{uoEq@dpytX;`Lkdp2>5 zoj*?KGIhGvT83lYF11~HuakgzOj~Y@OrlW!Xr8Wo@fhKe(;(!5+hctw{;Aw`zDJc@i@ z{`aEYY}D|Qk`ga#jDk^+H01F2M`fVKoK;%As}N7PS7NgTPeZ8w?AnrwHUBnwnYH>Y zZ*{NJyZ^ebSG_2&_EiLf;Wv1%{8S$c8&Ux&Qp}4<^dXfFFQ)~|6^ips>ow7sW1J>q z2TCWDP!(b@I^oz)K~H2lb7F*Ua%^+QpgtZ8eRTlbEh} zA|ri|N+IZl6zK(7EM?(O$TgBqL6l|}eaf74>A_;dPoPTg6FCB#(ONz2kz)Q&n3=oX zRxXK1FH9G8xMN>Ygi0O}yfHyv@W81_RO3^{Zg#7u5m6@DP0`H6J&Ysyx(TU7EE_g$hN=p*j`1 zC8i>y9L`uJ%)zIRRPq=#;5qtOx-@42<6xo-79+0*!vZ4+AH|xoLyV7F*(Ef^8HTTM zWTwknK~sF1IZeX?&PkFm~yDl*DUAsQ&FI`m%X3D@QQnfZsqy z)-wboLH{p^y-;$opkxrYf4~rZGVRcpjFPFAi}f z@z(G?r@Y&R?j6oPLa+Se`Xm$fl9#j$Ws0298<6_Nx#Tv`XChPsph6xVPR(H207zV{W$0(5dt{GY{(0j(=kH)q^spkeWs$j>lcD<2R` znl2|TkbX_65q98SibQD;ie`#VfVxH*&v}uwXhUB1ABwMZNSzNXw{71{sZ*%0F>Eh~ zpXBEDsOPTNe~=rCJL3C4N0MMh!eFyYebsdl+5fmp=A~!j*&;p%=1e*$x}{t74}E%K zlWTDWv#}GOqo$!w%Izo*v>tc(IOVEhvVrU+6Ie}w-)OiF#Kea-EF~aA*@~eWJ?k@> zMNGa$jUJ@bQj;M|7ByrX9jiOR_Ri^YFm5g6WtPQ^w0WxlG>O=-qj;AI?2Q~XzMBfz zJ``3_spsa!9~$+|MlvwDydDBptb3+ztI$@gu2JEJmWy9PuO_WF$reQPhr(GbqCpN; z|0-f-_j!MMWC&#=Hg!dRrh?hRJ>SS4{6_8|mDeETl$op<6Q1Nl)#!{HavL=5YRbly z5a|`n5w+E9QyEe?Z^bA#Vuc&W7$OT+0Bp8gm1x)jvQq zm}v9GIU{kY5+T(?L5Ms!*qKoGG)V}?_dus<>w{-pbL7)M**#a|)CH-ON&8_5{e{p9 zUd_$Uyb~QLNy8X_6=@6W&tX*|zH|jBDc}7V9SEBpT6Dvf!!cyQ&R`!zkX)mQnzAGte9=n=%fqo&eWhzHMdyldJ+U9`t-$Ahho}(OA-pkisgWMZuXU~CK{^N?CQ4E z>>Iupn70nfR_Z;-GL0D$y+sbZ0IA@xp_tPN5kozel0})R_Ww4gyOFn;V#zs3C{t)% z4;lU5(I)NfK=vcm4mnotB^W{+K8VoME;RaGjJCtM;pZ#u@ z`H6swn3TR`E5LEE#lGEwQCtUdp5#!=U<)@lv0Ml$dA27UxRTvZCX2qV(m->W98Hnc5kq>lDh4-|H{)0JSq-aRvtKJ6KtiH!6 z=dP4m3a=aj%(^xV{b4Z>28*qx5;vC*TP)wqE>ki~qkz#>{Rf39pKtp)w2x`K#oy4& z2IISBbEyH02~63hTk}5aACjJulnJD5ppmj;$sfFQ_!Eb0%hgr!!#7#!g|)G%y?^CO z!>)F5D{-Bf@D*}pA7vc8wRXAPKbM$v^wd|S=%zOwyyA7be_3*UND|nM>NYJ=8|Xtr zZ|p%pnePV%Li8t&fS~1=$>(|O*z-4*`th*=ZjchlVwPgR>_fbBF(jaS>{ZyZGIPB% zv0M4Rstt$TRsHzJQtG=$q_mj+6>6u79ftp}sjev9Lw{Vcj>XUMcAxIdxHoi)o+js> zL(z=!;MbSGZsEpcMLeIb3YPW8L>iiQ3xAHa~xxY6#0j(o{@FJ-# zHA*Pe#*cK-7G(^z-XWl{{#EDL#Vat$L-DevGEzJ~J7%bozKb!%`U};UF;aE8gr>cdEH^|rRX8gbY@!7$9YkA=f_#aDnEmQljhz!9JUI+(5$ zR4!Wqt`2cn|AX8L@-PmVht6;OyVROd!Uj!W83X{@8Zixgr8}Pv@A1M^L?KsR%vJ&J zVw1|a*cVDQX!!6BwXBk%xt5%BNaa5ZGW&-wV{ZL%g@9*!nUCTDf{K~)X*6OX8&(V7 zjC#d#kMtv5vNavr@L8?S@fu`o*A-@NH1HaXW;RYv5qS=Ja_W?%D51F|XyRnBl#l9o zK>F*Q+LJW-crnI8yy4kn@6reux6^7tn@h4H!m^wziOt^67G z!07vtuXSXJQ77{kln-%+zWBAT5`2X4MJCLskg;vdfWpjPMv|Wik~CxUA?6H_8n&91 zVAML#P&Dnwz}8l56xT3R=&bLl-*Yy2xj#1Lr?1T9|?L^=zl! zl`?a^_{QgY0FsN-NIq%_M}lrDT*usxD9S4*JU8bPN#Wz~SY^=ytIasIp>=#Cm}%Q(&v&yJ}XeDyjD z6SKub!GpUMiaSArLveR2UfiL0i?z6WKT3^q z!+-Odmwj?pW@fLMSqlq`(~R47f*ypcjz`OZbpXlA6l7<2I7KX$&S4`gauM!$>?D{5 zj8Jnru1>#pX8X2}XF}6X!s3}Id}6Os0yobp7|G4^i6jp z@Ftk(?O0fACa*Zm;j@9*hRk^l_vm|oOa+$HEd~o|4NB5=Sd*rGG=Jcb<-~3o> zB@8Eh85xW`l#$bM4|0l8ZPFLWZNg$#j1aP|A>QFm5>Ok29y+ed|Ll|oi=B&-g}pFg zJ)X5v2~}7&4y4o}0m!Ny>QyCtONBm{_LZw0b$+kr&wuATBNkA&q2B*Mbj>@xIz%(Y z`HY7Z8hwp{1)U#}U{1VrD1dOR*mlOY&Mam*um1isH5a`)Ax-l*v+0>%23e{X3+gl8XPmqe3W>EtMk2bfeAFNfp-+{I6|142!)8QIsjut@ zRNj>I{&RqW8wim&ZoV}eM9oM|u$(-f0{|_j6=mu)_kozjC@p@P>Bz#$6R=1b>{mvS za#(IPRjOOl1;40GvRikSU*jDJdenS-jFoAv8!0FZO_x@G zjq7wVzFn5|#lz$Pjx^duHS``g_dF1@Q z$19O`dHx%8!0&n992_#C(LAA@J%@MXkV*6T$=Sw&MnC`5>w~&w^hd+CgKt^C+Pj}> z0rWt?Pw~`tKKq5`ILy#bx`_&K`{;GTSb3p*oTI6x=6G?Tqs4QX(%)@tPj!71c1f74 z^Q|DCXXygUU&M|Il9+pKPX&M0&O# z)%~3&{FW=_NhsjgA3!gds@z&ln+OX9jc`7^l`WYx0{IweoT-kEFw9u;-%8RwBjIpE zE82Li0YaIKJ}u*Dr5)j!tkvhmn$VzZYKOIc@Tq+0obOzX-%uVnQP8a}g0hHydzpTaRe|~>TS^Z4#)-;7>8HGYFRRO^Y_tWnXk7+ZY?+;aJ(%A00 zZ^XZEWVXPgQ{S8THF;*+`^0A``|E$X z7L3am`|BaO6nk|UZYZR4>)D=j-zPySmN}s1l4?n)MoUm{v zvl8?AFGEPk*bplqhTiivIEG^H1#;7PsHS>41%bi$Z=Le>Y_ZJ^9;^@!Ufk2;<?%o&ix?LD(ah2yyA3hinm(Sl0pmJ4<0Azslhg}yQ##-$b)6~SGtvQh^c=H|u^cVhoKc~>< zZiA)g#F=vUo&6kJ_pgts&$!UwIpH&mpctO0hO|kQs}q0fP9gdbma^)bu;&_{yANkSS{wVO4%2MS%ZIAyY^<;FIhKmr6UF55e1fEL;>;%lyr+(BPAqb zgp-xrnwucHRL3Oe%(h>ExS}yeURU_=vTBb}ymz0#}s6V~bnsW|DiVHkM zssr{b;*jR*@S8|~=#2m*&}#~l@Cg9SvL1_|l1*`F2*6N_<>L;RwE!Z0x=67}_ z05ZhhvK`9tg4FfBYK7i*lt%w0ce3N07ky$@d@#c`OX7?IqZ5r_vC4l!3$PkKI`Wvz zzw71_Y63)SsMY=T@QsqNT4K%rMLE1!ZG@m9Lh38nX~x#(%$$_LUfXpbWqP5q?(_$D z(4vwT<^j_%ftcri>^zj2t9Vm>TrxGDt-?003qK^bz)O7|y^sJ%zh+fR3|l(S_mhRP zA6hsxV$E!iM>idZI^!@#9pTQ4jklF9LVpY1&aPGabU4Zo=w#mj$pj0Og@~E|dMS!^ zu}`7+#x)y&(}bM3z%!!h;sQ-NYEAb`OI$rbQK}BTfSOJ{83Au`Xl*`KS4c?X9E4i4 z#yu2rmMxzaV*NYp^vgwFd2`R%*R|}Jt25y_F=s;4#ix*e@1<$&86Y1n_x>P2Xujt! zSP_j_d5MW(IL}Qdm!I;xPHSV?MBG-5Wf`@YZu@wcnOOw&195Op^hC%P%YW^A*QnXt zPgyg6VV%Xw{T71B*5b^GW5-TYuf<=uX5G8js!uEoRLXfXk;BBqI49w zSn$S2q+NW})LA(*7^cqNVX=K@fjr+=;5YI6Nd@3a)8Ip%SbieVo1DmJb-S^ShK&J6 zaM9GO$kg4IIeo^qc9v7T{C1G`v!0-qL*|i7^?SuE<30Pio3NCxaNQs4RCFvg15L;? z*4{Z8dG-LKqW0sCTntVcDhxiH_zi*5J=fA{y-)28dxN$_@y@z((?e>coS5?LLOz{M zng?=c%8ne`ZDRUo-iQ2i?N`%80cDz7qBM^3`FSzw@osNSA+)${7(*H3vWyYNcr>nk z5PepYePjY(^)4Nx3U-z`43__`KG==oML!$r7ig(@dpZUG=I1mwxU<1b{kCpHbD5u(sJS#omSzMzbe+dlr@G z?63!CkzeH_gyZOa4B*!MNmEHeS+T8SO(kE$q}J-Mp9!m8F04NzxVM1wf|!ItgUbx`mg1)4 z8abr`utLh(sH363ct<^ok#y^uBH(6ufAYfv6`18ZwLWX%%%Vu$ ze(9nUnG7!_oSvBk(=Me|*lC;?&o}~z${?)2jYDwz+~HP@g2T_vYN9+$w4&t77qMQz zRU)#@vUALeo!S2Thjs;X7`gDF54&6N&Ar9DMF0Tjgabi$5F~`)5ZnVI`9MD@sCGBq zRy~vSa@)u&_w?oI87jG|_KS!%d&J9lTi6RSI27hsKr{J%%dHik`L{v(<;R8*okpbC z$TIgxe>=5_2#7lR?AA(-h_N8_GRl!vby`Ei`1n7|-K6MkP&%nV0vOq={-bH)LK`6Z z*W1E^$bKED?{+u~D4d@R*WgxbcNo8!G%zZh`+RZP z?dm+s6dUykfg2upMupzk_oyhpjLXg99jv;-7 zocbv;`T(~ebG6aq)iz@6ypb)U%4Wc_F+kN$0TA0Wl z11<94e#8wEeI&vdW-3`ZInUrSO-zv)$|+X%iSzR(hb9^QgDe+;$ru;`Wl3Ram6)L_ z297YG%p#l9RyV39$2z?w(!Z0+Wj+@YoWG=*A>iig2SE@Q#XBWl96!nX~Z4<>?c`%wSH}|3~d?UgSWqyk} z$<>z3Z=0>a6eU@WNFWo(M!dtVLST*!s6HenZ%?IIfVIp>H$_aSIFajSZ7JM*9#U-SE0N1iD(WB(gq7 z#GbWdl>CJfx!$LYQ(k2$N=^7ZJq)}k!)M3>hak2 zzRGoB^ul{5TY1+f<+-ZB&Gp3iCL{Lc`qMGwSd*X8Wn=Y1XAE*#ZBD%;S{ck=XWSS; zmad#^D!DvWf?|9Xa9J%xUInkh4oi&;3U~!Qi#X1s?9beFpDgrU2e@bSIqPt9DtjWx z+tXCUY;grKM@6K$$nukCT=h5Uc33K-VN9Du&Uf#Sa8B| z{v5t3fHd)Pa&SGBw6d~2+gyQm8B_rtf?#p6^a`-1RUI%Z(+lZejvnFR9NcZ&nX5_J zdgddjD^O6It4LHc@^UE63Q~@j`K2&80Ei>yZ4s60Pb^+EL77DC)KX2VKSO6?jIAGB zC}}!oAQ!#%`#)4owK-)Rbh)P6FBZyiS3{S&1K{?L_5nyjUuM#LJhWOm_!vhS2b1yX zjeD>$IudH8GiqyEvrtuAHkFNas05>>o&=JMCJDwGNOgp`${@@vX&PO6nws`>)jQW> z9o#*&@!Z+Q&0fX7Za&?dtB)aK9QN)%%?PA6hHhp8`o!D>kcfBX!leVbdY@(-1a53; zRZEyBX~E{giAw4Fb$4|rR=U3h`pc?2K9;=BFz~YJ6z*zouH>QD(ji7HbK9IAafli_ z#zyE=`=cGCnPm(|!qio&h{a@bW2AkPT<$iWmtf3M1|26RlUv4igS%@c{&^>TY+!y( zG2TuQ(*5b}^QY&0i-Z!AlchXZo@QWcX2Q3+jSAf18N1teJ&TD(hK_{h?rB=l#z(W* z>#y(@Se(2qu9+MdZKm@!wp9}Kd1w*`iAPV$bmaED-l^gED6HT7+^0<|w?AhducK2S zI=!y+m4>c({CCm)0=YRDq64+|GNGAszWD+<9ezP$SN^0K23BZFPHSKeSJ&gUTr7-9 ze=sNb>VuuK3se0J zEu->k=cr56AJUst6!2H}HR2w3Pq)w*drx41Z*cqVtS2~8KJ8pcaKvZ(gd`sOk8vdx z$Jb{bP!N`g>xg1@O%REe(sff@qvZ~)=o&OD81g9Ff9UnC*=^v;=+%Iv;IYl5hlUH0 zX;a|q5l{NL-w195V2)o?E9*yW14e%D!ZbvmuPjIWN%L|VUocQ{t6-Kak^j*A(}M<; zF)7p#?!4(umoNc5KJ1Ai>{ynw{m@-H)hV>}rBE+^jC-0W*SyRy>q4nrrZQOm5kDF0 zn3b!zD8DT>uyaSZb7fy(ieBV3OV$!??#^l5$9w_56M`y==%2QUt-VFZPFcmWsEYe1*2kod z$WUTmd4{U@+Dlv&Qb!P*$P8%`LXvB>8wk6KcdTT{syNw>kUv|Uf?Olwly15`^6|;H zl!~QYgjgt$EcQ|+kbW&=!v&iO3o(5Rl@N&9o|1dIK#4RVFN>(s^HtJz{RYo+{ATy6 zyY}>_t45Ti@kAE^Vd?0TNAKnnQ?N`2@a-Rv#8PdTXbDue))N+|*pVBjUu~S~*#?o* zI~O=VEO&}yEULR+CKCLZQOz+Ex&kDXbYN(0Z^|{NYU4+J;2dvwC>tbW!v=qJCBv94{!oV%UBwm9?^>~OBbjnaWnH>d2iy> z7tHC=65;yAtrK(d2j%CF(3eu~kOBRTRRRIncqrW1fzCSWb)%dAm}wNNc4`^{R{Axx z4x9{I+N`yfw&>GrldzHdW-{~`yIZ0rt5#YS+`9UHLP9~8acIJ%kn=`d#BHZxl`{8` zQgXF3v!%|Bq~xc$acW=DyXP*m50>Eo0QG|XJ@gP+b(GPk#QJvRZdG}Sll050E3^1pN~U=-Y~nQ^13EA~#*Uben4K9Z+&Q~w7}Z%KQypF+Zj^^{ zx*4dHTlfOGS-c|>V|{AG?IADm_Y35-{Y3TM5G_`=s&m{1%AnVI*rT-`S(Ba4Dbmc3 zsQAho<=Yd1%x3bB)?6mXB_MtC%>(U}fT!*nET1GAl(#kTc5;L7>JgArsf+O~cp)W| zPcB`(bw1o{GuaWxV8;8hs&NV-iyQo^x+2@GUBS>mjjBgCV>}3+ranw*02n$Py55bX z(ri(INh8f@3J|t-+!7sPjy8bNM`0Gf+3phpofprpk?~Dx3N_UsyXl?yJK+OJ`QcO@ zJu!ZZDbIV`hA(M#r&=@Fct~qVSrJ9VCdRhRy4+^uzawP>9Rq*1K@-oq6dM;jB9fuz z{bb=h-d^`VQZPa1X>2anj-~=%J+bKY5hqPSHfv%{97`)UU!^T_v5A>q6 zr;$lf@zlCu-M);N5EYWeNF8-y2{32jtGf;3xo&=b5VL1CtBI_At5k=-B@K)a?@W7p zovp=(v#6^TGMY~C>x52nm1&&JDn+J?Lj4{dMl1*$AP$R%mdI4U)2u|{z$|dX+IIE?HnCnZ|*OalI3t`<^z1qF8cKmh=S3#)9D7N z^Q2#*M~xnzpsIGCt+>+q6Z+;)R|f;+h(eAA!xqM%Z|$ia!x!GFYMYqr`F26psf+A` z`nD(XNs$R(*-4zF3=)B7x4<$ouBZsf5-mAHfmjk6t37dW{gC^9pwx{mX-=;J!>^y* zPY!U(7-q>}tv7&4XGSlPP6~Uy>jy4X8A<%|J0~xu$b+G4V|LoCPulp=t)p0zmHW=@ zP8t8B<>q0rAQRn!KwEFOv$`DVBTEBkdCeCy)*?_n&O=@xO2@;t=N%ns;#sO)ThO`2 zWp~SnVrC&<&HUPlQ=z`<{eSq48pI~N?5Q6v!X8h;LOXv}*6hSJJ-#9D1;a+3r*Rr& zXkSGh5+|<3`fPvTR2=i!IPc6j^rfK1=boTq{R)?E-sxe(2S3&o1?%4+wo;#;zmZl< z`J}TGS0o_W=B|>+J0~pX>HP1T=jR8&q6RR__jIp*MujdCd}226%}B`i3+}=x0%(O7 znZwJnb_|ER0RBiqVqm&ZZlI};P{o!;xASX|d>q&QEAD8)h$;h|xiZw`ZeFv`Pz&yY zsBGN74!n#-k~~`(hZ20)eQ%Q8*(u*q`iugb`}7vKgWWpQ$Cwl$jc4%{w&K%0|2}5~ z#=Sp-N7a_5J@IGN2H_{zYkiOxr|pxcuxu2#yzq!EOP(dy%46bZ(qx=wyB3%gSniam z?`3LX)_G(3+)R2Tbnm%zvI32{JCnWCDK!| z?Id-W&26O1<9$c9{Tx=FN;VvtZc7*`=KgIa?t}Z}<%PE*c)TnTs-_)3kKrVe_ zV&SYILgcy(OMJ7sko${m+LL7OnYscG+-6l;8Vlf!7b8cEC-tFfaXO)b+$yjxDAWuC zm;^TBVFEp$HNAE4CXd$3+@(ElPrS~>22i}zUkZb51Lr}TBU7|v={*`=v} z&u8veMSm|Ii_WeZ83y$hqX~o0unDq`&A6+(`1`Y64A{q(bU-2&% zaTq2hdGAi_PxC(?WPh~-^N>ps>d@5OjTM4zj8}6D+tN5#!JMIQ5LgU(o_Y5y=58G9 zL-qQ&y|`TUC9O)GA>q#H598oCNjde8#E%1kSR<7)p=lC#kGmh`OBv|RL2&;sQV}xb zcHgsF5@uTSe263Vs;6BBXMj(mnJFT#Z0Bif*%({fj&}P^>x1jGIiXdqXT?MHVR%9L zuJA+8ylp~hsf88gYOi2EDyy7|esBg=Kn;8<){Y-bjeX$|sK2aVcy{p1E%)@*@!4^T z&~D=X6;@=E(wgpWv;Yk&F^7#|kYdkvudPw%c<{Nu$lBoUaF0p(TEv2}QGnYyUM)}S zTSvX8YqZk7IHJ3HS_{NlB3n2LCi>D(?M{IA?8p|=e+gqnH2nt#JZsZmz=@*_ob7?# zT+C^eVex74lj?87%W#YAWD1rIu!yy79t_>DVDpr=BX-^CVZ)h zdx6{>UTlvkBFcq$+l*rc*_^48HCpJtEO@4!*mO~jb(u&>2?XJQA# za{MH42lSYP3|SP+4oVkrKz8T$ww&q?A#$+0&bG$1-N`7Ip?v1|e7qmI$S8EGJKPi# zkOSwaO+WvBeq*qTg_0kD@EZSS0jt#=o;_A1492NxwAyDggd^~CLU*7#Bn~YBBTl>Y2+=qj=f?vX zr_!xJ!v3Hj#8D5~D1c0weQM^U7$b&lBuejb2Rmk;#1z#$k5wu)59L}7H8ZCq7?P6| z-}^Zg z-au^YKjDLVeB


)_;_Zrk#J!LRGT8ykz1PyiVK$Zohk2nUPO4=zXHgz1brZB_Np zcRaZC&DSQHIkqhaHOZCv*CcD54rZ5`))M<49VJIlJW}8PYW{Qb?9lc5&{Q$spp_|i z^ZM-F^YhiecT>`HNp@W-ui5r|N|}FZveo=mU z00s45gtUJ0obv3d>cn*!SNn|0ln=lq3Zykh{;KQFFTqJdXB;YGjpvx~9>J}X`G_88 ztb5VMpoESF6MdWup%ArSzS^Cn9*zWaA~*WXgr*73RJ_~45i*0S}6o}O3RoSK_@IjXxIT}^kea5y~{1**pde%5?HsjH|T*$7NgA}Z{4 zbdMZ);BfBgW}{d;kL{G}$+KW!vEcdkY8tc*WBS5W%k4@7se*7Yot5;r2)UoUh z`-JUN6?MVAUER#KNs{;Gs`HnvdCE?w`_QMxIS1+7$ExY)-=#VKHg7Kb3~EGP(NUp{ z<3r?Z_8q9I=Q!mwU9!BVES+TzP~7GaydALrXC+;+Pp+(f!(C$eg4(`5c?}vjChA)4 z2=Q>~e}sD&QWpG+Bz{Tt1yEL#a7jh~FlEbxf=mul>n|pM^;4*`S*;Hr*ruIrp-tsJ z&YgzF*V`)@fh!m#=aG#{l1G?oukxfVqVzLhUW$9o$)dLB*Wag|W|mF#r0b{WwFf8~ z|E;)&19-mQrvT05W|XJ7!I<2Xr{#%yL(p4gyb8nE)={wU!KYp+i67Fm-0r8Yj^K;A zSBW3^>^RZJwMun`+`%bPnX7HO+iv=+g_~{$70*6~Mk##i2diadX-5N2j8Oc!;vDNd zP}U@YC~k0zi>-lI|0aBvNR?~2_IO^qF*cY8@b;#I3=AzX?>N5?x3 z_vQL91{)L6Hl)T;y^r9)YPU(SB#p7qblu~g$>elSX#jQ4^?{Sg#Vj4u#=Y&Zgme^N z8K3U|*!jdB3Avgds1osxQCNx%4E|HYNeV|Kv%tL?s$A~d*&@E^#WV()6)=G1)P4c_ zj|^qU9FkM@J-naA7Wc&7{lC()tfQJM;a-!CIDc8DdeRI@m=H%_Oc)@R{lHk^@D8JB zs=o~JIQ0yy8w_Xn!KY@&+IRFyWQ>lf8C zJEp%-(!bE?PkuId8u_4w?QbLG$H^_!Rbo8i1K`{y_;!ozxY$?N+BQ>a36x%3E4=;I6s9?SB7NPpor4 zg98hFJ-ZPtU5JO21gjAv(vCinkdhx_KvOCJbWly&SQ?H*jHRDzVEsoWtDt(AdnwBN z0=bW{iYSC438MKBmSFn9KGsqXq=cyDI7f79poo4~kO~V(rGhmp@;XypzBEZgLp9c} z+*R1>ror7`nek%ulToJlYRJN-^b|l-WD^Kx!b$`S#K%P8nQ+*v{}2}1VdPbu9O`76 z%Mj(s()t|S{jB>|Q;RUuHVoEZCdr=e$elgQY{d4;)YKH8Sjrrgnf??^7Oh*8oZHSJ zfsxB1rysV$%x3D8++N!*LCUY7+R98Dch1pfDij0f4^Y*NRlxq=nVP;p+ZWDxmF7@; zZ@+J4@+X|#+!Yw9BK`$$_ZX4IDEZX+=n00kBPV14$;eF&jmxi>(W9utc`(FT?Bv!S zSPsu}Ck+@bTjIoKHOWMNLA-V6s|j z*-z~0GYg%?@zb|;Pu*Zflg1sE<;ncQse$YZ+Idn^lZ+k4^i>;{+;5Jqb4o<7kad+< z)Hu}~{NoL4`nn+~-{F|ZlGu9NIn8(@66+UnM{UIB^mJ?C8B$!M*A_L!9T6jZ!l~t}jpy;mD3GRh z?O~M+zC!pfM!0%Q7f)3b)8@x#vPqWCSsb>RKeCQyx~=UBiBAV1=jT7yJFR-hKa72G z0+w<&$T5`)UAJV^<^`ET=~;%}#xe3mfR?HmWfJ8vHpZIph>HxhjP+^`?>DZXvw*82 zDiO-hZ&!XaG#T*udH#x!3ypDkm!!hw-z@vzyP{Td6?PQ_A6#| zmJ&ED*!SNSE;GG(vOY`a5HJ> zgrr^VqnLD;U2XJcw2F0-_5!vC!WL1 z^xq{Z27GqI)t(FnrjU1Yam5&3lujTa&O-qSlx8YP2g<~%ilpDv*o`&*7K=nB@WV(S zC(Q24hACPh>bYn4NpfN z8V&S9deu&IY<6?2?>5)%!RFrKgeSa|mxiz3JVC#zmXl%{h3kxEX^|U>Oh2kaukDWf z0yzXpf^D=?fPkD+ZGMgo$kI5$LRI7FYNLVWLg>HJpg1%__rPNh?hX*ijR7yZnQHE~ zR_U$AgUb;|>G;{<*cBF!YaJ=4kF9qo&zS@~zS5kYmX*BgKCRT?_yHI)JXxXfGi+m? zH{_edr{|~Pe(UDra5Q2NvZoC#2&m#I&GchZsyb-&m-NP`g1{=7H!PR~& zPZW8(tA=JHR3Z@3^FlBuNFzf$D#n{gbL6|;&k|)Op^u9U#OwTB z-)KRai#eoLRtTq(jtXLf7G#C}s#Q%{BM@D^36@;G|3hSGpbO_$~HWV0gN zey5;|E1ZvxAW`n{bbgK*2hEyCVi>T)M1VD0;TmsE#aBKShl-(dx;mng$tI`vl31tk z4$ZXI@-7jU)9k+yx=WS@l(vY($~}|Cj-Z11gIEryVzK$+w1nI-NJs_(Z1}0ZNe?gE zV0%XZ>&zBglu+qU)tdc`ei+nE!~lqMH`wL!87HP?$}wsTnfsY;s*YC9MEWbo$ufmc z127QAbzQsy`{M%TDN4>?RdT%lt_#pqaZm4JXBblv6P389r=Q1^>Od!urx6Nt&=y~I za&;B^&f|ZIuTU&SWsE(o%I-_^17ArfzhSeT#l#_NZVf(kdC%t^;&`Q3=sffO^$R&6rp(JgdIGi2Dad-(UBnSy6B}}d1r^VoXL@ld0!eVVA5}rzT7< zkJJ8%ov3EI*6?s8sdU8Nugk%(?!8`xr8d*Q4O2R4RA(G3_v`D5Su(4LQWpR+kOE*f z3@*}bvS}>UWG^!Q;}GLpnzaTxPYPw`*9eP!Cr(7-)fg=G@58@OcOI(G|GqsRF{um1 z){a)xwD>x;{LZp&W2;FREyJs$^PU(}$hs_Pm3dM>(0R=B1R$gR!2I z1F$l<7>SmOjgGa`xp%CUhD>j9(4OYG6&V-;X`E@fv-cObMbTC!(IxRl>c?q+Mj>0d zn{VSS9^!^sKC?$v-Hl~oWh*Z@7joHpmZ4nC)JVpQolsG z!Q>bnBZSnKt+$19@3}N0%1zs9YS>>b4YERO9!i5+)+UF`^53i{AuX2hIGLQEwW3Po znRS-^Z8Fv5Ak@qgIySdjGZX*Mm*HYgb(?|fw(v_I9f``%oP_wsPa)X>DvsOlLRGXL zo_~KmI9RqeRR#hmP=>+<0M`MP=tEf=nb^%VgiM~%k840wQe+&$dG^o4L1M%9CLolL za~j`v{>isFpr%B6*?WnZg8_WO#)%O&B!A6gFP@)Ing_#v{(CL3b}dk&gTRzYhopmQjnO^~4l?eu5J_ z>fE<)buTODyu7%k{T+%!F~nyYf<(O|N|4kel`nzwV`*cNdJRM}v14=23m1*KYF+m^ zUf!(yV&~d_ms`*DgzY}{ORPb(yMunFbQ&-(7H~N*_OBCByX}A%px1JojiCDvq$Ya_ zd^rZh=A9K&6&^Fh=5SZ*%5XKeI7z+&4()bzlQpMNKM_`0W%JP*Nm!*`$u8{}8~g=w zlX$35L|Y#LIV<+fCuv7ZGYebQ7m{S6hEwRVGzdLyL>80FeVD@T4 zyffArhh9NlgC)D{ z1*#s0ejn#PIoyB(UL)t6@rhKmR%FhU5xdty(~sGhJjeMU2)O7-%eMTZR+~Pp9JIF6 z+TBXq2)+}jGU#M9+E@jTFW0QVE#KA~U_kT88rzBj|C9RcO>$ zYT2{L^UCCEYuz}Pmv5%e8ZO^b;BS;T8VPW1oew^R_!8-yMTIzBoKL$ez`4koZoVUTXPb^rSs$M$(pY*&ZJd9_q7?#P%QE6o%`bWADc`U~Vn z@K9G@+WH~h=E~3~en)eY7<)}O#PuPQ)x`->%avJ{y}>1QeydYlW3$-NATfFu=+AC4 zyENnTzSdQveOe=Fh8WK26tIn& z4SOX2!)3JpQU4Is+4puLKfRyx5Qt-q184>Yk)HKW`PEw%wX!xd%faS6)FOx5D>?@Q zQ`HQ#0w!oqbTxBiH7aB$XoDNy{(lAc*Rz1LKK00r(cSroGzOa}X8YeP@hiBhXCrK) zPLITMu6VV}tHXNsVe9GzYd^D3`Wjn<|y0fj~`{NU&-YhLn z`kFDH8vob%nasCm-}e`fLf}g2TxqoA(K@JY%9l7uwiN;#l;$|>8n(I>4j4}G)Obe} zxiY`wd;ZtV#DtYG<}BpyqPR`bM~sQsrX0Mveufr#RqBVwZxJF%BY@|F2OEkj-ABU77 z1`!8ZXR9^RqKPb@j_aC%0&>`a3>M@w8K=4L#@2ni^H$~B?`NKvx$mRi=Pu1yE*jj~ z@s>)meoMkRKhlSs6RMSO%nhfoxO(?~t#OoPXEF)V^M0eo!OTb-V9HKMM@(qijl*Jg zj900RZM`iyg69!ER!V+*bp+&w>)Fp!VoC#pQ|LXbVe$BQ8l^Lx!7|Um*5sho^Zahm z4m%C}8g0L&UBC34gqvn2u09VYY0QaxJHZf&cspFrQ_FG(?5r#a zofYY9-1@sN?Z!QX5+TAUgQ~EuxIQUJ=d<*BY>+lxro%%>5Du`3SH(B?DrKooP9=jq zDuMrAHqSrnJQIBKrq#_70=*)fr*&WPvU>ja1Lfnt=Z_Sk&p+t`u`?p8UW+%hzF{@z ze@{@i-#I$+N>XWFyZHj~*39>1hd()0nL;8mu_#n*tPh2f1-meo;V~nGc|ck5^gCZ~ zIt|SIR<5ZwU8;R%1jhbm3Uru*0HgF|r(d#g=vm^&TXm$mTe5xKtideeoW!F)7F3xM zmiX!2b+k5%NDijJtu z23QSSd;jfcpV2mil&IqU?NJf>Z({!f$<6&WB{3+D$#7L?@S|VPP<;lz|Iswgt&CP= zWf+B&#D2@fd%PyYU-^A4b0nADwYhZh{Cw_m2~ZmUT>g0iU@KerL}no-KA}(3N?tZoOjkWdhJ3SOWK2JV+z{DqO>FC ztyk^hv@IJojq4TLJ4T#NJt6Yc&&qP6$oX?jPx+hzH0R2*m;A2lSrvX~8`f=KOi|} zyb2$6)xGH$+j_Y-2JMTsJ zpIVmzHCd=4Y~2!2X%osu+eCT`dgO%Y54$Dl39{Y3xhf>#Z zlVxiqExIH)=A7);j7cZ+#9x}aC54Uek0XA%(sFTMR0W>5LAqkgOV|^l^8S}sVKMFq z$a&a$o7+L-Y;II3#%*Y-?K$0#ITUm$nP|CF?#9WPIqNYQ_ypVzn)#V-nmp7LJK}_&d5_U! z#tYj_q#?n9XpxcR(`rLN)W~YjTI1Y#j`k$aSpL^(WQw}cT7MTrcXAjjWHrqwUBS5381faDQgEo&gQ+b4+(FO4lAkfKl9b!D6h}^J-%Oy4QvGTx%R`_XaRC{6SGyexrNiBY1Z7Ya+2s*M*NoNlqTyk zl1N)jI9QmC53g(vH8}O}(z0?-J6bkT=gIcoj$gcvj=f)N0!fwHWrdBdP|v2N>Zy@P zdZW&=lj!+}?zr~>V^qkLwh&urbAJzK2!KL`-{DM@W3L1g1i?5+f+Og5Nk9M)bIu7r ze?Y(lA!pS#AAjW>LL(7f5a}kXdC*+MUM1kfv+t0Qo~Y>P;7D;l?Q=YFMuMHJ<%_8k zs$6}wCabF2n@1fB65vUwM5Z5zi<}q{6=rz#P8ERm-u{;Ac5G^n*>fm7nO;9o`n4=l zU0reQaywYo`^VEFSz^x0;O%nK{`!%Zk$BvURbYe7ikr>)CNgXyum4h{T0J2UBpKk3 zg*9N`bVSsplyg<_S)BrD%YbbKl+7b^(xPpA$ppO**4&$Wk98W;4WT(4e}UX6-UA(C z*+$*g(jOs+_7WWS$>1=!Fl}>_=j)uNPU%U4cY~N)|8{R?RPNE?&iDO+>gYf9~IakbG#b zSHd+8+y3L{aI*<(&1WF=Z=sMlgBWhB{#+7bux!*$78YLP{no50?%cJ3x4B>{m6o`* z16}36{}#6y(=pXoW6Pk_;MiuywX=(bh;)HxJEO?jbMbGvSV%Aom_ZmrL@)(1?~-6e zrW&=DUX#SI`K-N}`t8f)06o^vobg;|sH!+K>{+#rt@sX#20j`0M3vs6(MJ)?^@{rY zW-HhSJw~WX0>ZPt2@@}fgC?{ z<9Ldiq%@?77-8agj@7!=#1%VQkdbX{^4!j!=lPuj6#97_qF&Z>@n<+6*7pao{)ni^ z3bnT8Eo4bbwECh1aIANc^OU|u?O&Mt#86|Lm9t7c()q{$Sr;P(D>e-)`Q-8)H~Xvy z%-;Jup~!$u)V{bgB@#icHi3+tzE&-6q9wfo5QSkJ4Lr6OB^$uUPObd{xuL`un4w;Q zM~Jth5>(IT)|@2BLidWFdpZo{TpCv!nAbK=-I=DMTQ3{E-H97Nn{OU(7s)n_%Er9$ zRwXyXmQXBrCPq=NVh+xyLGqdL6i2~skD@vNl&+-ci2(@zqLyuGHXfTYYeIj%R@*BH zMOSlD_dghq{!|!|mEFFUc)sLcDo8K8{A2KRGoayJg6P#hYYGx$X)2n(yh*=pG**!l*E|!^DY^Y4M7Vj7C_4 zzBTzy2fci1$pj@SZ<&8H@FB2FfF8>)yoF#?Sn(bVi(YZ>givEwJ(aTi3$7J$nlA~Z z_>lSv&E$`!%^LVg;%F;`EwW|Ol-Lk41G-!3>=!eXqAxEbU~4+z(W!dEIKB~{60J93fqAOL&3G#zjZ|}Ut(>mBO6w8zK2+#kIqibM{tL=gtHn#P~ zjcwb;#^%O$(%81Gjcwa%Y#UA5CTY?(-}d_lckj-f=bZD*oM|WcX;`J*s!zl82KNF_ zBG+^{TZB#UB`NmLJ?$Ui&Mrac$fG`cth-0lZmd!b1ai1wjT4M1SzO7S(Q)JqJsp}> z2~#kx?^(xXn7Gh=3VtRINUr6zKXM#LWh1Z+tk=s7ySnOTB>=pY@QR4JL23x5^syr_oEXP2(*mA94LE=k*g31HJ-;oo}_-)m0HZVq-FXL1OW{!QOY?))H z;96L4s zo|oKEs&Y){MJ^l5A(;Q4J8?y8W z*Veq8LIcbo66pb!zG#d2)FWhiwf&`pgh!i6$tpK_V?S`cyKF@`WLcQkOXd7rRIIhI zik)qfkrFo_>Zt6t1@>9(Z+Qv&JoI0Uq3OcT`8Se@89KAtGpZYnC65fXWz5BR>jfsW( zN|D1-b)K4xQ#;6|IRKfIaVt9t9)&<{IVzYOpoIv`g6mJ}{-!1I`@*!nkl_TMWm1wd zSKx48MN}9EoD$-x&;w2VS7x&Ye!HIUj+&=O=|Ph6NSB=?K`Q6XnV!cdY3~qg`0WG= zHGRXh2{PjF0j5ijT$QO1bWqa4#a$e(VL16Tyt#FI5|CyxoBr9j?@=;!q_@0D>Ygd# zXdtZ5_wDOf&6-HC%5KfFFtaYoyz4wyk(h621Q0?&9{5oABv$vbu$h?JtV63=->X4G zUG`fi5h1kVa4QB67;&~z-F#3*8L8&SSm^mnOv>C`*HkubX61wYe#ORo?RC*);lUqa z5%(`2r&O-~iK%ptD_LH4slfzr-+Q>Y*vt@q#UR5)4u?%Wb0Nryt!oSNhwh}K{8)r< z8jKXrNQ*@{&$-=CvzI5pP+gVO<8Ts4c)}YLAEI`YNj~JvCYn!+mPbGgAiiiJ8VE`* zdE-@TcNtMAnI!b5mDQKF9Hg)5RxPM}11U&kr8*{&{db`Nr;$%naRvl&{)60PB%Gg) zrr^I??ph(%EY_G%*g{?zQpleb+S~-SQ7~v6$|e5 z3yXT#%fGc5pVzy%eeQC4kOPT|csVq^&D}jY{+j8qk_G6eeEtR6RT>Qe1E7Xz$pNrS zI8t~G$bT!PitQb$LsiL}Wm>X7D`YF%YEG8HN0ne@$B+HNbD0mLzETqisUHC!Inb)- z{uFKQ52`*}ox$O8%&D7*UwdEF{Buzo;$>~+%@v5NwkWfILe_~-uN z45rALKcpyBL2(_PpN@r$Jw2PxeyBo8!S}1?vS%v6Cs4bUmrfdP&vl1f8E5j)yt#rL zFP0N@I)hwjE$@;fniz~Qi-P_5?0wIA*wB&=m6|3J;_FXoucQR&T-G%-WAty!|9RBg zCvAcWNsQ_`@t3u?XG|wjm9Jb%&Pi$g3L=gdwk=#$YZ4siRY0UNF&qyPR=GJ%6>D@k zV`wKE`H5UP`SzSZ;LH5vK19Ia71=iL@Y!K)kZ4r{sUs+ z$_Z0@ZY(ev2J+L$Zbr&+4K^a-;KjknnsYlG{o`+K zA8}rC&Zpj(eHSdf>xmm}WBMA|BAH+a;`|l;Y9ITqiL(|&Km1?cCTf#%)8zY$H-^{B z=GujQA+OktRnCY@EW~&N zyK&<2?KxH&YRZk{f#KaD{uB-h-YNYSvByfN!e5REWNYPF?T9rWHW^7?O}dy~j$D_4PmB5{I}iG(?w zpY)PwPQ)6Vq2C4_3Q;vgWik*EU@>~a%gUs+Um=cC=i45YyLUG%d-{k%bFNvhHQt5o zr!oV!TeBMd?fbu%&2nh!y_BizrAk{d;P4z2N^Bmb65U5$8>O4opZ(N-tR{L3kU6)v z_)o(Q#o-bNh(5=aMNX|DdlyCwWq%}=GET+50>^qsu4~dP`tcI8Q zP7*gXXY3s0=o#XCS%yI6FK6LCsmwvQX z=qHBZY{@KcfTJrlqG*hqN-ShLOW;T_Z8++pd|A4T=YJs-@))sOoAId_@h+mmjP$Ga z@=dzNe0XX}6XT^6%MNq7V>E5f^|G}sKO?T`Hm~>g)NQIhU%q&XUUYmBwGu?K$oTA? z3;>t{0RPoCjkJ%^DrS>3*OBL{!mV)A=R1rgs_E`7=YJ>`$Oi6vE6&u=Tih=lT4Q+Y zK!zkO%9#44sn;Xc;v?@Lf9$Y3O5Gd>H~uPH`^p@A{I2e@HGQkW;X1YEI%81Z$N`We zUm(nxABu@dRI@E5lS3)(sH;6UZGf!U36z@TTSDT0nDUn4&q%11<|kL|l>7Zx`XL#D z*Ow_d9UC0fMRS}cnNz7TMoTvu!mv~u@0P2I@d7JJ>_;{yr@b%OWeCen#}t9}q6*wLA9>oYhR3}QPuI`W!qAYBi9*0wLp3?ZOWkg6 z4qpp(wKi6hag&{X#h5K1)wll+;1eGW2=MJZdn+<%?I0dX8tnW&(#I(Cv+}X$PtZmh z7frGl6o8-0ws1bCFoO{zgd#VuY3=hh%3~-?z=*gxjP{Yf%Dx*_rVh)`47-IK zB{P5K15CJUaGw-@d2$OmVNLhk#PZVUcf(?#;^lBE>v>>yqi}s`^nPadw2Dg4=dfBRY8C!b+=76M~g9Ble~w6SJ=+ z#_}D-$sp1PeM#A)w|WhZ3Z;S?10_v8j!MVqAaJ^@jJbq5Ym0!S0Vf>W`D(HYuv0sv z2DuBH=Ux{hW%)PSq+kc?%&(E9lbvg(Z_V+u`6dLf17G}}m>p+=5dZ*c*h3=;OHuil zNnWvOgMR;fJwp{dR>>eE+&UV3sFm*ju3s#mKyLF~k`b@iOV8oXS zLJLFL7f&i5eW|1*u>y0AI92Q7#6~v}uhrQ_R`DU7ZyTOTdwq6NLB~Ze8sC2u@^LNH zGhfOsQLcX5{n1e|UM$(TxaO}Jf0#>ta5)5xoXqd4UUJi8yjF%pM^p;T{B(_ABWaGc zh4Qf)zF8y#N}HLtXD4l0!;oV#J5H8|8sdmZk^8fZVIh+&V#1hU81%gQrSHZHWwcA@7X0IOM9kUW)v~aMy3w=egUtikkG&x8vyLZo&Z2n|4pO2*wZFxU1G&T3P=Lc5jk@mJ(923A*t zyiF7S5^im88h6sX6IHG>^TC<*1Cf$*8ol(C&c9{%y4|ahYuAaFoZ2OuknblOI<396p!MN;*Fju8IoEW9nr?%WH z>L&LiluV@%UoXS3Hm+65UGhoBXb4NuG~MG#!CC>{3joaqugnt1=!tp*+X0w#^H*&XNvt_dX;% z_`kgEK0Z8(%(qgq6(eWn%g^*nt|Xvv zs|EMm2Tsj@a{qr{+rVK;!5#`PIShjk7Zq6v1CIv}9XyV-9~eijJ9enjNvr{%^AP>sU6!h9`AGbh}@h=Crs7t;M-b)fTM4*qRLKg*i#%a8Eel z^bes2uk#o$D>m(BE!Xy}h7-sh-u}1F!{V3N z`+@F$!F6wbcW8`j|Dk_84&Y##^iJ+HZcX(Yu zPK)==RVmf`(v`-^>CXCx6W!4_}GU zi?3iN5V4=V>9u+QM0S^tSz{$*cyy+K8E-K}2K}{}SMI3gI7XzI=%9Qsm&PNEArU$% z77fv{M+ZIn@_O?QDO_=Hfo1kPOBl|cNF`lrrGz{Vqn%f3$bAG!#XrbRB+{1asr~C% ztz&ZStfGu{NcCi#AdmxBUKK==`XV|YwfUF$MbUin6AL9p--+AaU{~qrD1+;I(Mpd# zRXDvf5WuYTS9cdpMaY z5!{7~jG10t@_grizT`XqwqIC#h6&EbnDRj=?=6;Pt`xa-ch+WCiZ7n$NFFH$xrih= zHmvtfgsJ1J?pfC4&T56Y69?%F&izaS2kYHAGH~(f?yZD6;=mzx%rqL#8R zUp{8iG74Vd)dY3^1YcmD+LRm?e@91VX0S?vrGqjRezazQy=f)zZRP<|cT{PfOSJ4F zdPMMN+-mG&f-?KABwbc{e)7Z%OXy*bFmS&{(GY?dN?<$bnMjiVL2e)tURg(75OT0u z#s~xoUmNQ>T1hD%-7SY=T~Wk~)72VTOJt9xptT@b8)4?ypN=n*e95g*+lhjz&PmQ* zScnMs)$i!$Ti;TNaD`*XSVPuZ$xm!h>(>+5$~QCv6B-F=aY0C{~9SU0l$1QW`{BWB=Nku29TOP6XG5wt|c9YgV7t1Yi9-U{_q!hOYv`pk@+CHSWacV6hqj;CP&x z)%3RGDR;{DQ#+CULEx%gE>X0QkGMVQT9WKjGB<8`8bdxow4%|zWlOv9q9%PoYsCi& zXN9Ixbgfp@*Y0FSO-Y+ul+#y3wRMiyvEO-vd=D5iRvbuFcNs{)vV|XZBwbQeI7sH3 zUUR>D!1_Bn=m$n>r7qUSu3Am1EF|Cd$1;Ks+CA`-3w9Rqwc3mBTKWe_?{AKq@AM74 z`nJ{w>`(e#8_plBkVhCKTAJ8KmTrq(M-eLgNeWvqtEX)#V5Qg)>&_6WQ=!E{Y2Q1r zLxCTwfBDv!&6H5sOm>u9%EO?$Dr{#ixFNhvVC)ISe>*iG!6voza#4P z&WIIKeX5cSu6-!xRF^eD4j~L>vK)SsN`eh3t~TfiIhHtEoq!UnJS=ckm=BQzD!0}5 z)iv0o1n#{a4AtAo+%n@~q6wnUUvL*PaZ2F8P<RO3B-P`=XT(18UErISbF@)tD ztQp852df^GjYI>)Q&^A8S!{udSS%UJ2Sd9XJmtYYBLrvvZtM_ulBJ5xcap?I7Gj4%#5k*-nV09I9BL z3uiKV*1DsKmp9sM;bqYA_R5(pyc}rk3#=3_r=+Dl++&pI|Gi*9L;F*{C|UXQ$(ioL z>R%-AJl=X;97jSUL*$uy&nR3!#&Kc5soSWHiSk30c9YF0mD_BZb@7e8sv}WOU+Yy3 z=caB>{{%}ZuM@Ss-8&>q_vGT7`gNCA10pw(a+z(iBL^2n(a3j|SheB%R!)fEqMPBI z^|LTGvEeaCpYvqKGz@gJ5pPmBBsj*zHo<;-{woxmj=0iKyNN)Rhr5oMC)#*wPgv%z z&(&c+o0e4>wd`f^ByR#d3muVlbfKO^b9s(FDfITW_O*UKeK@f#R?Uh z^5V!}rt?GOGl{GY;y}^spoD2=Q_;5TQiOHvR{Bz<$-bB(jCTBw<=WA-KOm5Uu$-%m zAD`K+A$~t(hbE+bm@29ciRyO=;4RCxjUbRC0A#RMV*28)O-*o($E52de@#vii`&M+YG_n$W< z-Mu$FwMQ<qhCYrD`a1VeSE_R<$(N(=s8^5z#3F=;hH$?vkHRu}!^-rvZPui_L0OW?Cnx8XBg9ZV%!a1_gIsMQJQ+|eEy>@@ zdRjrp>e`r)#zO30Etg9G217d5p4!wi#PTMRPg?$*@Ym6!{~GFP>QDg~V+IAhA(u|0&LR;0*WM&WA)ijH6>MO+-*v_c&AaUo;8R4r-z zd;*Ln28lD8m-PhQg=mI#CT7y%H`+9c1JSQ6Qk;Je&RJ8+K6ZR3L`uQsO(j#8>$jh$-dwsY8?x;QE~&?-+?4mAwo;XqsECkW?-d9^K|AO3Alqr|D? zlKDOPk5P{F<0BUkdtFY(*Sy(RAfs*(H?EmWL{1+Jj2sYdGQqPb-LM<&>uny<4c_(O z?GU#zY-ej{z`8<`QRHDN)nFxBKRg2uYb;_rzBu(RvQRaoHD<1OeQgUM$mv7yUN9T0 z3piP~?jlR`YzF|u0OHTFg@|MTTc!9e*AT+g^B9yW9Mw2N0VvdVTceXGx4F5diX9ay zN07u3IPdyJ-wbXFu7^;k+CR+!N}O)p!u3=F+Y@eAY;46w4;q>3)ZITf>;d3HNA3cqAjbu|RmNYM*P z#FfwqPi@YUg4$@j;xVB9K{Px3-6eS z9=YeJIJjsr$r{J(w>!BaXvFjLiNnCCu7J|_;BIkup@`u6>A!kRMjm&=9xGrYNDQ63 z7B3LT3qgq~B}mMNT1<2@cnyD(`O&^*4u^{Vg=_KWh;@7;I2K zhG%1Ad(*cgj=hkIN07s3lm7Z@@UI*mORK+~@+CPl?_aWujNU3|-&4T%=53K^IY2MG zzfATwSkMZ3oF|H7r6GIdyJ>;f|AX#hAq;`XQ7}>pWB4~x4!FpaKvzPL>b|0cCbp~x z<+FeCJo2=4))6o3hD(U3GNpGRraf-LVAIzGCJ4iBQq zLd>TjXbK?7!b42RrN~>p#mX-K{7D5&Tcras+-sQ8&Ei-Qu-soizwWw2bs~DxQmizO z>Gc!{@*gblOoGE+!hiwri&rb6j3iG->ZR?QpgVFJNyD7mOT@dlU&Cs;3I+7ON;1so zhVKkYmn$swQ46G0?yokyl|?t}<^7dmaA%ytz1c&$3Fpy=Hu^QY+ zRzSd4&58uEhhpXjjcwY0bxmsy>ie8E3-}Y;uELZ!;L1`PCX9@BMJWjqMtI71DymC6 zLdzJV$tdM%qRg^a)>8iAv<=mhY0&wY&02e7QSMk27m{+SSTFzs=kN%pNi9CwHv=6C z$_U6{`(xzU^(&?$Djqi$>hu|h-L0H5j66D*i>yU-vH;#EO$7Hwl)w=i3}`rQiImCR zgTRju$oOSXdH>2nJBd9f;pSXeMH1z37(RmharJ+;8DW<(S+QaAPYQLzi5y|sUZ zAbu+R9h=)IA_652`%*e=(x*h&6llrWVRv$A9dRk%sH>Xo-)1lt_rROI41X~%d>NgJ4>E@|eXU`pDS5H{=&c@DmI{LRt znNgfOe9A%%<=FXk>s((DJQ( zcAI2qlL{3r0rHMHog$j4OwO?qosC8C-$<_}C{kCH-zQ>vzl@G@ro`YkaQ_2r#I(v% z)-R29Ym|jYR7_M@s0DpSh{;XTk}QkgZ|v3yJb0G@=nR-y z5HmQ7Q5uEFsJzQ<%v8}6(f)1%mVyJ5S~EV0o?%E0=V4%;a8(d7ECUs-gEt?EoNY6V zikiWEu_Km70c2iqP#bqFYf~MhLV|(UhWbi`1a+U`noB$!gQ9j}e zwOw<9Yxb-a$*l5)K!MB1o`|)*j#!e{3x1=vQtcel%c3p`BOY#9gP~*etomoy2>8{8 zyEsh@Jw28!$dm1JA6}1L{l*FkCYSd?$gk8Yts&zRM1M<=BL%NvB_At;b5>Jwvz4Hq zC!yI3tIT`tz~SkJ)p1OxzuqUl_Zc{?K7xSbGzQhqO81KX8W~@@A0VRS=bxwznH6O& zs|Rq|3jT`i#$V$JrHRwkIcZT8kUQJ|v)ov!x4k}Cp&Jg9=j2WqU=sSJNe}+FFyQ>t z97wIdj4DiqYCL2_fgl1D{^Zh$+Np)Ik!dgu#g6LA_5iP5CU>g#T^+ zkw#!B@=GrCf?+g4_6L3dW0) za@-Em`fKZ%FqbGa_p>v`P84Y1z4wuqUnQjR$LP89A6rBHgIplmSvh1KI)vq1ulzJY z7smL6knZ6qVY;{qln|BSt1MW1Rr|$Dd&S}=`_0MED9J{Pr*7I)1}M3(VgELXkVVT& zDAe6*F3wfvIs~`)U*GP~9G~@+7RF>;jxDv8DGCa0>9-Rh3V_`)Os%OUa{2+IgOxSB zF@jA^HG;#Oz>hXFD?UW6-!Yg~-0RV+X@pT+Kl*JD4{KO%jkMDPT`O-g5BRxFX(s{V ztg}@1%UuLl3T{Jc3VihC|G^x=7K%nu)j_~2ENb-~r>R?$w@=f=v0f- z=H4v>)I&vlVf>u*qTe?2_q);JS)<~1qh^(3w_|=mPRj(X_6fiT&w!c5fqaKzmciQP zxwhxpxL8Ao#e)gvSKnnpcx8yk(6WV$QFwzLt1`TlT|ulRBjyQTPnI#BP3AouU34v2 zYv;#CE#1@P{(;ws1O2t9PUJq7CVdnh3vElb8 zKaRUvN`5)^u2>8?XEUDj>4{gd?*{IdQjK^a=0e8S4Fgt~l&C+|)T`BgQpT)gASKH# z%l7&P5hM2b&A#_tpzadny-(OWd)k9gS(u zGwrF`4UJ*{IbKSRJG$e+;2?3=%s!HC82*|3{@Zy@_Cxf=_Km1-lOz}$kUaLrfIEl z5y~6pSYF%+-RfF8kDR#ZPWpUrI-H8RQw@e*_ADjt$rZ<{A?2WXJuAUMJm;<8;b89CJHf9)zXR{u)|Nbs@l4v%#}>HK3a68`3+nmM&vvxw$>fo@B@QmB=Cc*>cVT9 z(l4$${k{42WWr0@sq$_~p`+unof1w5~jI2FL?*kCf&=aF5=TR{phzAjS1tEE`>Lq zB98OeyOwffUvGSyMXXK#tF1T#7n%gC7kej*Sv;50JII(w*kLc2d)?)Jq;x?8lgW;a zpmFHXK;qH1Pyih!`V>;!m@#Nnr= zRbr;Lsm#8IE+pLx&nlfoAfi=%_EzfH- zL6?Sv>Q)l}EQJw7m*ZJrm%oJ^`hx}Ll~q4)^2N5tr_DzE#1*YEWTmx!qxG=F23wht z7~#8G=8L%2K$hQ6^-0LZ=ckxW5yo2%q0q%jmR2_!RZ^+xst@4HPdMG4^;GRCqNnDt zTLXuPG=Av2EBYQ;vg&7d1S!{c*j1o-8rHM~4$aSZ3w;X+tm@zyR9Y-JOC36$i}(lxQl(EkCCl!q073Q zgT3K46H5Pkzd@7Kc9h02E*H;_?nS;N@jPvwh}s5URH{XhRrp&0Nok-#zfErQ4vo>4X*==B9 zOA1$vSolkkKwMY%Wpr$(dj`lu^4`yB&b*B1Zcr8*u+GQN5IyB4b6=KtvFl5rLxmDIZvCs`fbYd%w9V;?x~3x?l4*4A)c(Cne#%O z_t>q*SLiF7<+{Z!jW6df0n?tk4q?i);|D=Dw=oN~U2BB&?U1uVzRXX{SLAK5F;vr5 z2rZO}Fx5N)lA?ZH_QtL9kBd0!gKz0GRTbb zrVEw~bwJPb)gmreTLXjn_{4rHCb#g2 z>B+h8t*5hSuo!z9A%y8^GoP%q@VU4| z78jrz7eov+>L^TKr}UIqC@0kXhiI^ybvWDE;f;QuvwGLPmU}#5G#$gJXoG#_t&P_Sj!VJp?T8i^V8xF|AraMt{I7^|dclBo;eX{Iw$#oeV-b5`oIL(aF& z+-J^HH!(2UUPW+se2Iv=F7n)M4G8Eb&sqmWn*xfJ$PZ^?mxxf_$G0R4uOF1&o&shg@7oBeSXgK`tN>?f|$1$&7Qck*(1& zyD-$TQWtZ)x|z-{y{3<(aK-r#wWPz_06l2hxt{R6^x^W>kHmj%FLg1zHvU3MJsN zXZe!=tKOP#-fE#0#yg#V?rdc-gXOMOoG(;8@Uv@1i!HRwrQn5Lm$-~Rk!!7+Vq9)l zN689>!jAwR9J)D3CRF~e*PUkDJC-0Pj|{MleOR_b)N2Ektul7E%hHz&#}?h#EED(5PGF=1dA$%3HwgDKfE{G>p+&%85DZ`Wvg41Zu~2vTIR3=uw^a)Ghv zN%!$fWMxw7_ZX z!=tPg>ar9NkER2EcyV&HxPU*sfkO3TYc5x@(T(1u^(9SYGR{WP`Te8pIf$MJTUkD` z@3B%}t`B* z1}@4RRT=1+1iAUziJYU>ExAk$Nw>{XZL`_#(h~Xy0yf+2XZ!7%?y`M?e$&3}VDmAv zv>VssbK#2!qV)lGThiy%>{fSZasZ%y4kQ7u)#Q-S*x!0vgUyasGm~vz4{o>lPsBBV6dkqj@d*c1l+NppbtG$8-UmP&4T#G)$qV zY4EO`a4%9}Hk;zp&)Ber&TZBIoCU_R;Y;_8EmK0<)>RR<4TACc0;i z_y%q^0#1AM-#Iy1Cje9aqeBp*9yI{U14)~ru8|nSkh3art`y#qM2Sucbz$@sU7EoP zn58D-@S}t58Q}ql3l$uihr1MCIvOuuZkndETJ%I7T*~n*fIf3c!qQNs(^`%82|ZUF z%9WEQ*|Z9HmSIjLoAo|h01>(Ykc(F4UJp{(r7|?s%1`784rcUPrb9QkmayHuHw-pc z&6S3|gc=3jcL%=L9BPOnzv)0tF)MBplLhYb?A5ngyIaEmr$!&q#Mo|(TE0)8gAZah zrl&(zK6h98kosx25V_{;EUpUuVN+9{ub+IaMBFT8jEkX>VN5vLoK`5Q>1oO;z8=9z zl>TqQ79Sgk85EEdLm3!jT+XFAa|Z8{Mx>D)%^9QpUG4T)q7 z{MP=TVot8ff`=cL0K(N3OIYY#ILpu+7YRNA7Z*_lQA-y%roBK7V>F9gbz7Yk*TG*E z4;?eI{rc9SxHUbB4@Ss)p{d>w$KvCx%e-J>-jN zpTyILwTsV2su;J5nP{R~II==%Cwkswh_M9{xI6MAQ&#zVn;{$gbY@Nc@g*6x?1Y;2 z^z#^JQaYdHuB!|5I*xEd_j>C3{g%gae*|HDHLAYD{Pd-YT0YXcOMw>QXX>F5)r>zq zCfuG&RLQ5U-vQ0wg-BZ0^vJJ_yo=qtbcjAiGDz5!NV)c0myNOq{UQ45l{Rok%{}- zh4>lk(U-e_4wkUW_}W_E{?w+-H;XQ+O*W!A9`s?O>0c0Eaj!l2UOJ*RruqQ`#{Ou0 zCaxRvvuV+q?=Bs==`R%yU_giZDGhvA=eg%wcQ6weMCN9e31WJ%Xt zk$fFE@{EFKs3IWDxZYqYPP?`I_Dw>!loWAQSgVR3y*xGNWVJOfAMWywn?J*atXbZ# z)@j;WOiYYTkpO|5D~y_0t=_3reQ0+VyFa9pswsR%=^yi?2 zPU|;#eNP`0&~l58nK*H4H+Q!nO}e>P`!uD})XfW{cs(c8IMoy*a{;n01)g>K%U46K zu#o43A|x8u=_|?idR#;kVV5`1)o|RflgMW`&FX*cSjGV&&rdZ&ASV?OY1sP6>t zOS_(lvOsjwke1ZA6=s~#qrFOi>|MIiYB|4;kjA#KtJ1S$k85keA1^D!nLl{g(J>yaFr^001g{QUKM1J<%u z7yqi#9TS4TuSigldCr`~XFRNVl?@Rv47pHVRswS}L#>VUxxYFEoSd!7N_DP{IBto$ z8_ibB?F`Eu4UO7n#kD*(&UfHqq6DfcPY1i-?Q{VUp+0{;jEuPNZ)A+KDgF=+Dhy-Y z8c9}f@w{H|5wo*vu0|R~ai;*MJi0DO?X-Qn>q=#&T^Qd&ZC`Ktb5jyzs%7#k>TkqK zRl--@B8JQ*#QJ;%el2-wDWL{YqqPZe46sZ=wujZ{)Yl;N=b8~w5%t!b7j2%6POsfK zE4x*#$N0~<#C$tJBWFSFbl;vob@L8|jNThrN(y*kiiQ4W#j1OdLp7fj(HVP_iH=JO zgPVcg(5O)wE>J5P9tkw=GEx{`x&wH|5gS#&p!z9v!BB(MwkP*rO7?V&lLME50luQb zx;L&{9~;hQHwI|cGT^z%u}zJdMGc(8kz-j8tu7ji(l#(wFMO$+^7<6uj=JBk@4Skc z#xvrPCXC$f^Ygu;KW6rnX@+YB<-mQ`eJRaP-| zwKf;P>e0%aT+ii|@ti?hfMe>5;rFdpMXPp}`IL70Ym!TrXbqM8;lF>73rjq$QeGv7 z?9eO#ZA;pt7;98Wsz6fCXH2WFQ0ppu$FZWGA2@lp`GOP@EPP=GW|Mdp?ggE*8;h1W zlA7HHtn(L?coyouZ94rN(kw6)TVt1ncY`K6uu>H)r$SNhvq~*-mOjH&_(~e2qm>|v z353fJERg9X@~w8TV)3#1!G_gZdj+f9#Y>R)f$3;Vp5regC+K&_WQ8>G?r)GjwucC*UFj;jZ}Ada%X_6t~?LTvo%q-?62xt>N#2N z>KXO>>_3XXTMilL1IkGH4N!th)n=Db^oTMmgX58voEVP2F;;X&_bESpEA#w(>N>G* z#N8UVIK0fz)$5z$$YB5uUO$_B0E`@*{N&mRkfdK znWIivg!nxnd_;mnNm7n20HRd8wnes3Y6B=zW&YUXdXyfqJc*o0$rW zRi>B(xf#q-GMS?+p}~SKh9^P4<&5;CyZjbSHVsRnLn`p`5u!?M@!(^imX*%g;q{>M zJwD7+d4j*Sr1qa@f#^%ZK|d;1H4B3(v;y>FIy6De9vnK%FpeX74kHbMy*n19PY;20 z=N7l;Z8H#3-gc(T`Ema2TTG3o0F6O_nbxwo?VSXrEA^!IwTtFTm@J*`x#zF&k5ya{ z(^}-oT`C2tqO*9SV#m$nc7^~p7w~M|Eq&3@TiS>xK0oHMh%uH zguSdOtm5*zN zwK73<`9}P$@t!Ro;TGC(CA15}(K4Is5eoyrlQ+%X^+Nb$Hur6!WMphsj$0d*+2^B{ zD92Zf_R(a+u)-PtMe2LB+ICJw=F-r^Py4aVcDd-q6M{rB+F6sdpsN}yx7Fg~_4w2R z_{4r>r!*F^vJ-F1N9{^vM;ub>7TdNN5T~fE8aoyay9YyYEnBSCYF$L1qqiVC9e&Yl zr=zpT={usz*?`Ckz?y(W#}*M2z7 zao?93-!4--(xpYgcf~F(9QwCtt+iLT%6bw)ula1vW%!7(^XFU#haI8f2sM?4*5R#| z(xD8XV|n4vT~+#opCC#gQ|k4Y?T#+dmWDwk zuQN4GypInA8pmPLFLb!M2T@zWdtwn=ObRMPi!eO>5Cb4+J_!z0a7f~~mPSMAzGP4~ zchZ@g&#@8aSGe{|A3VE#Q!LC{z(jVSKsEW5_GsZKY1hc`2y z!tT8+cJ8vpFd_0T`KoP2db1!3hey@jE<=#_9Dz1q7{1OYSzX=E{H-Hir1kYwtQG3l zOv-z46m=(!&e^>DqO2dhrKF1sp*5_uBv3>P9n06i4|c$eZi7n)~%-7#ql(5PLBw0uZa8v5PxZk9)o^l<6C3Y zOc;2qN?h#l?HvA_#hpF7UTsQ^H3UMD3Q&RFw;BzD@yfxTdFqq144_<=yinZpTx&W1 z?T~B2=ypQO98_48M_XA_JKri(5cKQIrg>0;_Q{$Z8hO3p=-ZD`(T%>Z51epY?C-Ev zdWin<73s0AC|r6>i$XR~*}6YxUoet$E*RRi^##J+(#E%es*9=KHKf9R@DzT%F%5eR~h^NhEaU4Zv9-cNKz2u=E&>MnOk@o9yUD zYrdd+*2I=0Q$@EwCFfcRJQd1Mev=!R?=7Fgo#*IeRLB-_yoM>{rSXy7Fl^Ui3&idp z@iwatGWsO6*z(IE%9oCI<1->8=PYIKTso6$5X zO=4C)haD^EV1Oj-9MrO+UMBT4=H120QJfG<47>Vmohf8w!Eb2D+J!=fO^s-6FgX9; zHLU(5- zd%7@TLo+p3p%VeR+RLaI{s-SMBAP@{hwWnSB*2%ym#zWuo9yl*+jt9 z0pSQ9)xDj#KUuQLRmOZOHNW-fCVQ!LzmUA^7kf$L)tE~F6x*JH~01Use} z^*@fTfibRj4Q}i-ZrqJ++qP}nP8-{{Z5xekvyHJy8Z~Z`yWjl{XU_Xz=9v+>d{=#% zig1Gc6bnHgrET_U;^868PuwJEgZ?v#7GFSPrEvMyEnPfZdsd4w)%6++rLYv?1ynahv8-5 z!d*qDio{st^LLamJNf%PG(Gs$@`k`*ap51?cY{xm7pG=1fd`@{T;U4}Ln%|V6B2nA zgh~L6DSSr=J6w|(b>d)X>6<3@El3_X!#9x2KH|A3-IsM-_l*#ZO=QUF3|!Q=H0Npu zT|-~cMzpaSBXr{>f-j@^^$gppG}Gc~O#@oyu=5M1#>!-eM{VP3FIhJ?>F8|xbPtJ+ zwBSw;8A|LJnYhs3k4nlVJDKquAW@yy(PN$#?P~2_r}0`aI!15K@jG{KqdbnU!ly~w z0WkUq>rBr0knKImUqSIT9u?#v@znYCd{PI(t8*BzvCi_6I?QIt=G|4~TdQQBk7l2r zzK_?fl2eiz>eMLR*Gp*O~-C3Z+yQVxuIQv<8Kz{*2|HiNvERH9K}yOCKX=QV^My+0*h`WTnl{FTC_Zu`uRZn z$9oEh*d*U#F^X9f4#%Se4;|(7l+1Uy8V{)sM(cnYA4cN4H5ZWmDHc<1HQ>7^Y-TQU z?fL5cG$_O)wbh^!C(>egZ$Qs0Cpj!2+uNQ3jfotpWM2Jo%M5(o6!P2X?X1k#?)9i# z>`Kb78{JE9QxW(lnJyjtgGOstsNKcL&vTlh?qlIg!P=Mqx6A$QjnZg8t{ez}{h^NL z7$1d^jVNzS!#pkm3kw~Ikoz;8)S@{o4x%~@i+A`S&X=eW8v;h?W_V^>X`qdW{&#wp z!H!7eAyb|~J2{7~jBMe67%Nq17#6FJ4(;G14~0Y)-H}C4e!aGadO8TdL{?WLa;3(! z2A#>rFSa@LN8R298%kc3-=7{#y4^pHoHkyoqiJ)&o3r#1F#1l7GYy7(rJo#@Cy#(i z5r*Ijhyn$3BTtiqTY)<~^$$!2Xq7;4biG`$OMbn;$3wdIbsHORj1%JhA=}@u$bjCp4T=6RMp^@C?3tK-D6qDqfM5XkMo$H)+Fm$|oC zu!XF!XxS#ArPG!L8I57o=#VxDf@oC+o-Qm5?u4|o)K~O8zz8dY@v3mH{~o!*a2PFl za9uUMGl}Ys{!cEKW+GK*ay3|0UVR=;;+>!``7O5zuK(dkd8o=jjWe{1VEub1`>Zq` z{T8G_?BR5L4h64Eb zh-TSsoV;KK92>0kD-T7z$2+d3o_|Sa?eH7IHpm#A_SRNEUtM0sqogI=LTQ&Z?Oz|B zkaJ%@Va7r%tN{k}Ae%(jv6yP44#+LJxtaA{z{`CrQnp)T2MS2 zPm$+!Ew@p~4FQ9M^+le*G?c>Q`Wx5h2Yc(!Po)=P^D~R{_qlu1OUs7|knqu7Y+0vP zpfXj}4@>IdcMkBp=6{pO7J;A~To@D?7+d4_r+7}Bc^zkLJ9C@VDQ7+hu{I5TO^c7a zW}7{LDgj>$(UYJF*Wy;2!mIbX+LgP>7B|(AP|5GAxzm%Nhe^5o8+Ec^i>oBO8qpug zoa}#U^ga1!r&FcDHr(1M9_Y?&bFM*u#cA5mVp(Lih-*X3&75qh7h3JzZks$;s>2}F zb^D=Kb%|J6G5&em$8_4y?^s&L9+M|B(UAprH3g}lYo$}cB5{sILH>9po9|ZpsWG0m zyCDBU~K=_##2l;pq)?R#P#Roi{9r;cZNB}S3$h}a`w@105Qx` zYxY)UdTdmg=_T3;M-=~&BRsNy&Z2XfR#xb9_m^P`XLlYO{m9IHN#L}Pk(k1NkgG?9 zRRsrlY5Tbvo^H(wSnF#f87bTM#Z88kT)GdFI9r6J7GQ?aygKGa-0qnWxP7_XOEWW3 z&j~F?`YHe&6y*IqlA9Zknw1fLNZYkT?r3Uki%VLZ*%7UaI5UrdpUrxp&gJ84oD>$> z5yrkva2-zLMdm|_aCy99^dp07oSy+f35d!_dNI7ZzOXYkXR!2 z@RYv;MMg)P-gQD*w;c#$+WcJ`h0lOxj9>5nZGT?BQ%aWLGJk-1r|65wZfh$F*O|QW zMKQ4^941Y5hDaQ@lfgx8vq&6KSKCBQ%`8WWudH*`Tw{URhMYM4ZQ$dER@Ps5Sdnty zm8FxIu+vWVeu-&RpaB#9cBPkyVjbTueHWKLOrsQu|B;C#b*L&}@!hlW7%>e`r}gx+ZHOfr?cW4(+|P;Mx0K@-)R*(s-jWiG;h z_TYvjXP>5o5h?SFh652pz?Xe~lB-bapg~?xt z0f3&dE;NcDaJ)NnFZK=+&7)in3JQ6}$-i!W_;Tf;76E$e8Or%cVl;FYOWFYUfbpAU zp+7e@BRQ>zJN3;7Z`zySZ>G(F)dD4xXl5PU6Cm?;<_W$F6a!R3)q*hWw@Sb^DdaxF z%s^oGEpCu8V9(;#QKC&bHC;0CPlJ@PZf%!x&jAa2=Qg?pOezziF0IL8j{;~;TO3tU z^JEB}(E&!+^n(=v(5_?pYS*Hedk3{U-Y1gAhNYsxgxmjZjCzH4JR^AF>Qs$vG_%F7esR0xCRc$K9ZG*YLoWcZv`sm9Xx<0;L`i2NJSvTxm> zoj5+c^+2f3*z%F9Lp>o>l;$JkX5sXC^ucrd95J)8HlZ{!PoOciJFkQ$28j}}z-Emo z|K(l4Zk1e0`_AQu_`|>ALheD&uU}Bm%n($_Lx0KwAQ5|)!@Og2Bg~LFG!$@Y8V46& zBfZPGC$`#0`PRm`C!ZEWRC}Cy*IiA;(k>H-N%zUrCRG|>G1VrbNByFM%ps1JpZd9$-%bCD z@?hzA69W{S0p+43{CF!Wb%_G&2grDmy+RER8tv_(>MwtL^bTJXh%T(MFdY$RTu~0N z%%ElH?>iZ1DQV6HWRdr+xEywhJ z;#olJNY;OMH{*O>^>tql05j?GJ5s*g8k2<+P~XIG#4jZYnv+bGMfHmlFw-&hh|nIN zP*qF6*%z?W#bdkKOCVzweK42FaC}=dH3+iR9Fh*7kW)b{O*1Ygyl|Y|!$=fG(C3_m)E?Ope)-K1dFD!r7@`sZ{02x~z411pwrB@DM(d zN^W38%nSaGFsf$H%CZqhCc==g$VXVp)*^5X0Zdn8BCM(8WW{!oZMB7`sjv!AHC#_& z7jiN22*)w)Aj_gU&_JCoHcePGn#HWcg~$1qQ?f{0NzrliYk!}1j#Aq!PFd))#J8z8 zLnhmzhN|_bhuFpk@wH1?m7|;8xoy`lY=GD&ihKGZacCMq1Ij8O0{j8q-OP9lP?+tQ? z$(-U%s>;T#zqia{W`RHghOQ=xws{;JBJ9``_OhM$d@t%;+a&J#tNA`ziPa2Flk?o+ z{~$LWe}t<5h8*i%RMe}PMU`U$uG2Rt17&qseY`VKD_70uPF`& zi3dGsblqEy+aXUiU(r5Tc(S-W=>aoj=16==V~FEXAPQ{|PTi_DDe?D|fqI&#E>I_< zRU!@UT$(P8Xhbt`igj$JOOlR6k_&YV%MM@PFLLuIw!B%9yn~{B%6M_+SlLhBak=ra z^6+W@jgyOfe(f%nf^mddvhuv4D=m7DQ7=m)Kk92I>V~(ru>yYD7NlDWu{Dw?mF+mK znkFOQSVLq5#RSe0?_dtXPE|AjpuX{d#-1Ka&IFw*TaJKXdKU!T7dNk^GWa&dIPwjB zZ$z3ziYE@&KSHjw3~i0FxM2b zPo!G3top~K2I+3?3$vBB-e9|_Vl(&ZsQc1YeKK@P{84lbyK{x5sMnS7ZM1>!_p~e*G-0o1FuynFJO&TXMf7>BG((wluvW`?S#Yw#)6VC3+wvkAs&`C?ucOhUEKUNJj)kWLY z{XgVTkMtFnbH2#lg`RJ@S)3cH?fwTjx+&dC>e*fjZ#PX0Ckh*3u;?6!>px2K4|W_w<$RtzuvJps0^)?0x7wO{S?BDwMhX$WD_E>;jGUbf%|#yw z2LlwOR%250Y%QyzZN^&d7S|D@aU}>nl#MX-CeleCaK6nVNWB+eDbL>$FS|mx`cYUR z%k<6XqDK}wu~nEC3oSXS45Do9H--Ls^K9#DzSJ~Z+tBcHT%A%*`_{v#5qe(TkFq};aI*j_Xssl( zF;-3WS5_nn>qHC88Aw~+5uGuD)FiTub|?2kPP;Jd9OK+*U-^UcznQk_Y%lQAZKK=m zp1z!N35Nir&)848l`X+ghyhR$?d3&r?Ue7e!f_FQ zewV?=BioS_ zuE7j|!{=HYu)vqn-DYiyikzadfkX@wh}=(k(KoeX67{_LmZRI$VliW}Hhio7F*aG; zp;H}TnBnPb8DN$78Y~PAX$iQ9fMKi2B-RcOCiTzgG9?>@4CwbTsAu>UXNCTxe|_ zI`n8`z`jOX^Frk8?G8ba?O2(9cK7XChQim0+u>x2A|N}c+sIz>4QOD)-+%xF$`6b% zYlVyJV!gmV#C9O2ERKRo;oTr?)Ur6zI3-2(0+_D!nChYy`t$1!N8(^h%qSsTJ&P@o*e-V$^&us8Q3s2Q$(k~d{!^Cs@}tc|hV%Dy*m`B4z8 zR`NmH&Cd|YuMfXKl|PEi!yi({R&+u1U&yI()?aQ){xplXYV(g0L%W*{GY{PETT&wT z1jdld2s7tJ0OkT;BB+R!(nP^I!SC11RG*wF2BC6FM2t>iV|(l1)Co?PisXUU7w`!B z>HPci>HV#2HS1AvcRPa?c;Qc(Ztt*sQ5<8|^sEWgvB7XJJLy2_8X2x}^iRzhRMKM7LyT%wtAx=|763D>*KV?v*@|1|J9qI<7A?!};!y>KX295hD>SkW znIRlSV|Pk(gwsH=)pO^Uje>FU_q+o>p)1)l=?IFK98%%@zVj}`ja@S{&QG4_&(j0k zp7cbP&d!c9(5u}0wfk)CrZ+)-zeA1QHGVsXQk)a35lg<-bXGHp8N*%sPdbxS-3X;sI=%hp4dVXeKO3p0=j2DOW{O z=OP+kVt|$xo*OAQ@-*12_SKQ1QCFp4nAf^*kP&Y(0j-e`%m($H`CKf@_gZcD!)rRQiKG5h8OhfrlB%mu$ zzp|bb{|uSU)iQlA*72t|Rg5E(ziz!VaD2^ir_#4|>4HbWUHR0e2Oh$*jWHJSXx?*rC zO@+|678gcW9pp*kND#_g&}5L0Od3%~z)b0YMGjv&a5&RWMMMGQE;5)^+{;oo$|CdD!E0o3O<7fq!@B*n0#NGC9NjqAz! zH_j4@m$c3zz`s?dwViUEdUg>DU{HOA4v+T#^uFCPc&o95h_U%XSTZ;?m^d;)OilWBo4L8d z|M-WLX2ag{P-PG$Md8`E99Z7=!zj&G29%>Zkd^M8aWC*fsgU)g*(u`FYe(N%%26lk zWZJXEaXMVrLa&p*`)>3z_|CJM_Lt`OpY;Y3GrXpY4GNP^d>&38&b}N!9qr>?RrzHb zw`kbktcNvI^k59ltAn!Hli=^E_pnIVb^pJb#f=c?`{NX9!Qkt6a|uc zS(Z8Oa6JL-mY1ezJP5lf+tZ5c`O_8d-e0@+S%kXRsjBRio3)quFprXjhga?-5DvO> z0$Zv6>*bc>MEboVzAdwnpK~O?z__HZX2hf_H8$DdA8Qq$=9e!w;Ac|o33d#@VV$RdM5wD=|6?x_XHco z3^9jQaAh`$`?>B7N7m+ZLz^|~_6TY2`YMl)dA%GigT~(S@nJ4mp=%ourWc%VL zQAzGw*K;d?`EkHHqaZ5ljOJCXdZok=yUnj#@Q@8x>WMyTx4ahR@m1m3>4v8mPXg(N7 zl1Uv*Oq&L}0=YmzX%dPe4{We@2j>n70~F4wv98D-jrS%iuLcu(K5lrOr$X3pA#J~Y zs|do&`F~+Wg;mp>Bk=Qc4n~yy@0I&{Wx%U&jk0J=0s4Di*_LFDbT?@?9AwOIRR%Tc$udSWiesK zA13)GY+c5ho5V)aG7I@SGaKi#LTD~n=~dCU`hbMnOjb-e0&qs-xEUNrx0EI_|zwaJGeXOO*T z#AX1@v~bYWX0_EIH<;d8A*KtZNx29s@6 zF$6c%4PvGQCU_VY$_x?E4lT}y>le#@F0sAV3@l!7Qr?E8UA_6Tx8T%#pb&m&iVnq{@J{7J9ozUeP}V}APRLH@RN5lr zo$-t1y7^{*TZ}WG$=*Y9{uKT~1%TCFN<>5sp2w|cvq+J5rUGwPs!gDjf+;@N6B18- zsBI{)vXPS=>Og{1vLNN45SDkp(#hf;4GWM+`^p&&mF}ip^?6peyrroRkHyQ;H+ggK zcfIt>0x*ju9JnBK?;Se&t(+4+B+^pwTV^S0&48%5C0fvMh&)AJaaAD1WN|C@kYfey zIJ2_(H*BVnKOD!;Y^xFm>guceCY;(MqQYhB32y`C6mXreM;F@lpS=v6Fy9Li*xPq3 z)gXFs4NDu*BVC!$lEg4mzgnARl+FKTex2Iygu9d~W@wv&&qYTOw|P=czv^kGqCKRJ8^)p2$Sm#HzW1PbYq4BmqiQi#J(jayjb5J7$Q^@Ek!_oG z%5ZFivgLaw6Bd^wEZO@jZb9K)Kjxk(ZKC12B!Vmc^D&^V7N5JFmGZp!yeRhcHyRhG zmm@jJ1^#S5$H(naMHz`g%yY|-a{=FY%r~^6lRMqb$C>9{?VHE!C|jF&cJGD~x!MDP zmY>(%JiB$-{DSuU*aus}5EwUN#{Oo4Gh@N%aLgj;3aAuw0pBQP>p&po@OA=S-09Yb zN?=yZZM>1mTL7UP`wjcd+OcxIW4N!SC_nqnvMl+!&6R8+twtBv5zp{(1~FI|aox7` zo;J#Gt>Hh&&Bwx8sn6!*4&AxgRGSGh8DhOiiT(#UAFw;`1Bd&F)=XN0x3derr^a+V z(3JR>%3tr-z==m>1oNm&=Y0NBj+NVeR)MS{_C*}V7KA_4cMiX#8*)+|8deu7Pw8=) zpDJ5?>}Op5K`}vyZp%PevKmv%cSf)EzUWIFnp8H<=I-6({?5{{Y1S=L9Z`)&y6W3Z ztuU`Z2r5;huoEp&tnF_vPquUO%FYvB8D*z;NtF4EGClE4Bu_dEOQ%Q}4PlCKjP5&_ zWpMNHQh*hN$ITY!H-{n#ksE{j3Lh9G;%%J9A4?1ANKs)3D*{LiSB7aZts%P&<(+dyit35gwkwHF+Dr}^D7=T(C_;`^f}>w|JIWA( z-E`o&zKrU&^#d9#1<(Nw$7S>4L}VdLEc{65lEmGMB#9jzh)ZYvL34UQfxx;DWXpx1 z;*HgU&OIhJTuzf{D3`>pQHUlnPy(crR9T2Npj~d5mw=2wy42KS+^?@Jo0h}WJ0AMC zfSY=&Jl<&i;WrQhr#)lv9kd?O)qcnh0S^#%P-qHXiz%C z?D@IMRMZWQT)#Q?`rXyP`stW7fc9p%G($b{5EWF`Guf^S=*iE`|Exn8@iFV}ZTx zj_lzG`qWX!$`T}9KyDWY)SbwFdviI=L<8%@t_*n+As3mqn6LT#PqLnbVKYb1PoLuH zS-Xy_2L>@pB-n@zV&;oG*5Y`az%bMvU4DPSq3Hhwt+%8bV zFO=(rIMBzRCrYw+2eQB0dZQi-b6D+3{wzaB$y*0#7_FxL=;NDyjaaRv_CiCqPzl;M z3xZCoL>|^>(g8PX0A{cY*o6F)E;u+x2TcQ-5Wjr{crHGPAplaT2qZz$w}{7*l`R9V zo}MwV!=BSYJ)w%5Hi*&LqrK@mQR0bLHFU}WHe^r$k&G{G2jf)w;fOu6FtUYH+yusC zT$iAVRL^H;H4H6) zCAgxb2vNEq{C478x3$JnBcF=eiC2z*+;mK$&B5K0`hlT4Xh2_8V(DNqyecu3Tg;sU z*;}Je?wjIIz9nCkww3j3TC6gv+$nBb-16LQGTR(1`ZCI9HdUG8)z42LWbU0xlKilI zD4tnz&$*3?3mIa^+XjJ3(NT$WB7i!X?t{E(nPqUP91 zS)vBUwEq9&!#pDFH^sReU*9`Z8`)@q3Pa5YBjGEsKg3BnwM;C7_cw>C7@G~WH>kMX zE;<6>cD3GKT?eW9e1TK|c|8*@4rc7djfr?Nlt0cR?8z!an}?ln#6$1zf17`$ zMi5jH9s>bQ0G@#4ApNIRheCxtGiD7@8J2VNRP-yTlw`({$sLw zOuY4V(i>0he6(q_zoG#}I1{qD6)@-$hvbfeuG(Y&M0d{1k90e%Dmt|VofOwNkSA?R zqPEu?_~&jv$UMOPMXih1miPfKv538(SSa+NK~ZrCSOA3SX`5!061lcF_Gd;1JkfQ? zss6DQ1uYWJ2lss&-*_9Sfgnzf@sy|}Vn=h5HVA@zB6Rwk=CA?F(KK2lr~AW+Zq>Pk zK43ahKu^bF`E)!4<1R}86&arP^t#YMeI_GC-Aa{?uxLP|pEqBIvos2mF`3$LjH?N^ zq{qoMe(Zx?N59B&Wky@+ynM!E+8z#v8dTnD_f!WaU*Ff=+qph0{xrJ}z(ZiDKqx~& z4~oe_m+C3AOq1P933cd!9esA2D4Iomei)_tUd1HQ5^(q>IBovYR_`yEt?#Kj{kPcD zj7VQCd1C8a0?;N}hq!zLFYbQ@J`t9XhVFXQ0`91I`-hQ1e??YGulGTn4{~*><7%XRed4gIsbV)%s=ic2#F(M9; zhA^&Xf_v%wPoW831=oPt2VXx|x2R}YAr!E^oDip?%f;k!1?}IlI)70(wl=cjn;{*6 zA1iKDNvD4)*`Fbo6+~T`imKbaY&pV02|~oRGK;g~l3c?VeLbIUvMj-AQQq$bSg{SU z55eS55B3!`Kis??-{$^((ZI-a(zhmQl1A&oR)gFa9VEGGv zT4!elt!{s=TDbvl+{mdrs|m8MPtG>8MA?8h`?@YP&f@MrPE`WPRv7;JW1xBuy-6bU04X(E zA}UlF);KG|m%v-ql?rqDDRry|a8dhghDY7sD@`{(Q+Ff_6*CC<678hH!C>7Q``mvR z)ng&1cbQ4rahx&F)cMDgwTA!E4d+;Qy<1V^N@a&91zX?Wny?g>GnO4Wg*k~_I@qkR zkQ>q@acWYc9A{}TaO6p{%(EZp{@n}XoYJINmRSI2^GadLru?WyOIx0KE*(mCq?lR%>hocHh z65khpMx?uf`oFq56c59$td!#C``1{;H(Q{_2$x2HUC|9`2(jX<@|DB;@ytRsV+gTI z#&V@QUh{L5#3c%bu)g#yyyp zfLlEEa5^dg6%YsoJAkK{wBv~v#7bJ-MljA|&IFIlE&eQzhOt~~ihv2NlBZQcT|SAPH*1)jZ~!P;7}Sg^<59=1o{g|B zkvWK61*4g~WRPO3_=G=;-&Q*^)4d2!xHXI34Hrf2r3wRH6RT!%q!tcAE?{KXG(WY~ zT=yV|5Pp?I%gNxqR~?OGKpKIV{LTO5m@M)ZT-IK6(N=?%&>f*=J!sT4C6`1{M)pVj0c%?P{vXrh})iw6#u&w->yyjnwGJ- zm3da>G8?1(GN*!+nz#-8w94UGVXzDhM{{}!B|C?Fr8rwpophaV7LI1T`yJA+zbBBQ z09ZHOB)G4c5ZvmiV`70pF-?f;DU3GM%%E{19)d$?0ml+4E8yCGr*&&f-K=n-4bq>& zBrlQr7AZykDXX1~A3v&HVWCB8M7k#RY9)q(>*%G@rtFflo3nERX*4Qiq-$l{i>O-> zW%!+7K=(Fx&b@;FL2e`%Movqa&kr2NdTuKts9>mlYa)1cbv2nzah~~9<*NYA;~p&( zGG>_;rfIoSeT?|15*Y34L50S9Qy+H?|A1nXafx#WMTXPlGBMDxi3FBlR`-QXkW5N=COdcBV>` z2)+XK-w^mv-mCV4h7txbs|;snC;}Ka%~OUo8D+q692O);r2XD@MYXg1L@R3PKkzU$ zW3TtSRCAhdhR^QnB|T@KsRK7~Us&Wz>ApHc5fStvIm5v|?g<6!^BAj4WB^i{JM(&t z(DM!i`ogzUv7P*r4bK@ox>jPF^in^DI+ zLpawBU08149mk;#g6o@O?4PZH$fq>i?6Tj{zmY?lq<4}-6t$~XD5w&eJN;$7HG^BM zPY1%-3h~~lh`}`KA`S|keQnagw|A-OL2jBZ)jZYE&SSme(;~DMm`Gp((YPhx#fzt`hJeV}=8lranhgLYtpI-=h)4=RgpYAi~d zZ)cF;;|B1cn5d*iu4mj^%$)ABEd1NO<@~9k_{k+JZ&1=?{ ztx!LFdqhNZvG|To*S)Us&yjVhqSHgL{SZ9l{Bo9&l@ktPC7~fa6k1u590AE5GL5i* zcK%HW5dw6hU{#dkZ%JwGsC^~YB21UG>&BqvO`4P!Jf0#9e_VGr;#TJyJBNASrqWnw%$CA_}(f(xRu$R$@O| zL(7N42`ku?KRBdKRmCQgQhbPFY2!$v-L|Va>l~(yFR&s{%E4S!O-09RTafvP7arCc zItxP)sD~*)68%@a7z{b_IaCQ6MO6YF)4L*C5Sty7BRUU{vi;ul5Gzg9c`S=}YAxMR z0b$!K=*!XkHq{p&R+rzTCmi0>+{5sNs<$v7p@PdR?IT}c#gj!Dq;)rJj74|P0j3Zz zO2g05L7Ea63>jUH$Y1%S_icMVO|{UP1R!wXvrK>G7u9?b!EDuNS^YHwdh~Mbz>Vrp zpzNAyc&Es~9BO~?n?t;2azHl2*~}ycJt}Ek)Q@v6?f=wB_!r&VPbBJAPUP{pr1k2s zrtb!Yl-@+hdemd{gQr#C*D_TUp`Pd0w@u%{R*)vc0aymC{tu>GGQ5stLcf8Z`BRqA ze73@yNXk)nvuK)W-zRud2pZ$N`uN4A{aP9klWnK zg1RtmEB8Ayb`E4muzDezqnEM0-8|{(qvojYVbz9UpA92JR2^!ClPm_mDE%z+BXNas z9XI`w!vc3!Pj#j^{t1Z*kAkMRugfoVwGN!0Yd)eeaXp4#W8I7>`NYCnzLxyZnhF4X zaZ|=C$5t<{!n~1$ETn)1LP7W1wi^~+iA1m+QM7O^K0vP-V<@zA0YikPNJUi?L~hg! z$k9)sLv;F$EMu`(bvGXz8RFd1nF3%aR1s!D}C0UzE6 z_GQPDv|V9k!Qw_!@x@ez2pXcNZ*^VbNy`pQm7FLY>8+ah-X#HG?JJDR*$w^x6^Zz8 z1>qoHrsOUXMPm}>-+F+1E&ROy>-ECAH19j(oFYA-Wxd z{rU|kPjRp~w^{l)_x#kf3gRx7rAjq?>GVm(z1DNr{Co^1P0R64($GKv0HXl^M^NP5@|r0Z z4eZeEq2Oq(?C&UrO#%DTBLnu0NUfu-v?ZgLEEqZb(rMmgUD~gv(*kLCzr3m#f8?}( zZv9HODAAlCLQBb z-Chrex&}s|0=d7SQti5Tl&A=5PaD`#l;%b@yth3CcOK%aobMTrw1F6e;I-L2>Ew}G zbiA`cAVs8soMmbvY#RRDNO&`sB!R7r2On)&vh1Nu38dUp<#D@$m1(>5ex0gusO4TO zH+?p7a5(2_l$A@dil?1a-G7klk0p1IS0mt-y@`vOvNii+sKOy6Z*PG#g;j1N6UX8w zP5k%~J}VPSD{ho0IS9YCDRA%RPjP?dQWA>_Em=H@4VxpyO8n+xFIJ)=D;^HRol0GN zDcP{pto>%ugVV!(=Q4&q#;lNw*u1N(@}ZupEvCt!Xpu)O*zdrF(_r)w(z50`--5-N z<-*)jN@e;c=cVfQh_8vGhV;9g`5)*Zu3`7J(XalMTyd6KL$81T_`t(W!(wY>o4KpX z0j5r&?(D&rzFCPJdg#mcBe;E&(aT!dbe~}!7?ws3iXDua0m5_Rk;N(_c(-5QFq=fl zUVQO-#Px3wYR!I7@Te4Fhf}-!pB9=h+h}gfveM=eE zhZj}ZSnh4~ZMtSCh7VE}=We(YF>L!JvSGj14~}E*MCqqV{Mba}C+c$Sg%Yt)y~TLF zoxcCjTH6JtaUg)y>p9Nhigd~VZ9-QR*nCbRceR|+1Pzfn_HogERxobopl!0gZqwSr zRJ(k58n7<(k#!LWN#e*=Wou)k?~qc^{87|0>(`IgV20jRX*1l=&Z`xndi@*qyf!*I zqYTC#xs2u^Fce^8F!w@`r5@={um@t0q4||;Y7k}`U8?$Cm{sb);y#cwV=F?N{`RDD*Ki#Dry2;~~>L>8|zpS zp9ep$vI3X$yrKS&2&S4EHEs;2BM-&`LUzcL1< zx$wDp_q+xHXv9c!Vg<~p5zF2KLG=XjZJCIe^K&$DBI)o=JQ0Vq38Ea5AG)2O9?uuu zf}gZUDSW?se7n2|PHL8sL*e(VuRlLO{@Jd78a0$Cm4CsV?rd?7<$m<{=R;pOj>)M? zuSz4#1I7rxfv3^fU!!jHQPbikz^HH%N+QP0UJTt}6bc-87M*8PY|OKEb2p zt@`nnbGuPDa~He#QSs}|HP`Leo6(ow&h7>ezZNVr;I{h@4()XQ{2P5*uD1Pt>8?=x z3)(Hk(WO@BYD#am#EgjRi9tebJ9mRq+!O5!wcyh-{%~N>)#AG{R8UPi9HttHNu(rh z;B5@J=LAS|zvBfB#4mAULR9m}xa+8E1mf)uBv0zPkFFA#H>JHP7&?--meHg9$@V+Z zmqE%9ev_uqGF##{VBk;ktaBgP{SR_$sIW_F3OTt`H~vu|F*77X4HhL~hpUUhVM>~F zFyu16-Ufo8#0|HunLRMPo*kVMz9B0&ZYfg~x6UPbzFIfl`W^a~*)WOojk1)#T=y-b zldgj{`nl}1Tur5rEh*d2`ymNP>uA2XNsYiK+iv`=?FbYO2FN!P4xYx1*Q4SJixV#& zTpZmg3o~>2M+6{`z%Zz`2CTJo?P^RrruI`YH3|LD(fBxae0rGu@l*WOf*2Ow{Q%)T z0Lkn3dK};D=dp_Am8~+GbblUSdm5p74{>KCkL6ZUm1P}%zP)590jf(MV7}9NYFOVC z;O3A)&nGnDf(#EsAQv-Meo(xin#~xowuKN0qaZc1ge_HVMYW&mXcrwqof>y+kMa2D zbUK$}ku1JL))F{wajPTFf?V~c?0@(GH)Q`wX>Q+IZ{tu&)Zkf8G~}w_82>}XO>LEq z6T#zOogAIGy@}!4U0pzct)5X*jb2B*8*43BjX+yE_h~@x+j?8whqha$(^D^vM;rro zfgoD%cqK9#w2lKeD$3A?*mN@o9}H3Ij<(82;ru=<$-k=4?TZdGMO4-K9$UZe!{IM1 zu-jL^xpwcNeMVTC3~gRE=jXX_qLA%IIu_PjTO1^7xXl&HM;W9T(H-am`YvXe9Ms>G z1ulz?g&Pe5e;cETX6J65r$wof(e#nv^F&2MwBA^wQM2@9u#|@ltyTYzq;p`)v}@b& zoo(B;ZQHhO*JRt)WV<_KvTL$E8I#@g^}OGI*td19Yn{irAMT_25&Hi?g%uVamQ|%n ztPYcb82-dM<|tqcZH~WdyLJg0mvT|ejUcLLZklh@w=BV}TRO!seA2tx<-jp7hkGTr z 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 z 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

nbb9}{Q)jvL_tEAU_F;&Q*-DX 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

`V&uV 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
!Kpe^U5^Oe3AiTU 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�`__DX|clf?)~E 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�gMSTd1LVkp$ILn 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%0AQ{D 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 x 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

y^E8y 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%0DH4^;61Fysf-2ed;L2F8 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

>j}ESEV<;NJ#-8O9&KT& zgE~c8v?^mog(C`8Fb{!J-1)7f8vTAFO6L7lCHt|3Px9_*p=5K|e+$bt8-IdNc5mdYtUI2iLF?iq z&9u4xg2}-*glGFarUs@#$Uj-iYW4$dq7D?t!}C{>Mpi^d9aQb{qIJO|R(mt&2LgJ# z<_|y~|2Jf~Kc;Y3TUC~HQt_uL`OGSFT@B7sxRn)e=}|dTa~^a1iHY^@x ztu<4{%nWs9H^>m-MvuF4{_=sg6hcDqKxIz&DLtv$;Whu=Z3TRi8qIM$WFr!Pr&PFU z!_C{pLIb6-iFHL|qZ81vvEon`qB2Z@zr|ENj)>bo$jzfpz^ku;Gc+Fy?RPa?5S%f& zwbUF3Z)eHt?EdL;%>zxPpCJRsBVQbDexEIw?CCC4{JvE#>FYN{lq{0--{9J?Zg%=S zfBWvW$^5lWCnQ8v@bAQ~zZjWVhjmv27!#$tPBXFwF_vObI!wfS z4wHe{Dd_IE1N55Dn8uHWktp8_O~l3THR{p@-o%y|ffs)jYq_$d?VJ7@*GsPxDv09u zl1n9b|4tI{{BQeA@9Vju%>|0*PM{{0a_0g+M<(3}eV^Tj9Rdc9xK*>6sOXpczd;HB z%&b3&2grw^wwAi#drU%f80=^k9cLVwue+h>{(<`eObXv@kQ#j1(})Ze+sVIC)|CCl zCx>l1a$Y{($QXzf%EvC^TiMt8D!xT?eW)UckU}Ry;~z(UKn%{pWb?N-vM=EO?pE&s z2c@)-kV$f#j*=BvvPEUDJGL)bzHe*a$@A6hMljoa7{JW~1wlffUKE3dk;|4A-yesX z0t3-(=AJ55(N&|pRyi;#RE`owxpvTx>J@~iSaRj7#BDqO_kyE{=gH~Ylj;E`lxG@8Fd`{ z$Bo^gR%BkAXcnWzM@!9){p%jekr?QXIHcb0IZFt!+nD$to$^-N~6FB)=bGd5+$h}IdR1pXy86(QqrhhwJSr^FYGW&Fz z9xsgvzZrCsEdE#S9lSI`7zvM6%kRxEuXpOKq@y3WW()Qp)>3ybO{9>J9 z;rV3Ea0|lWx0Q8&(trL}#6F!Pb z>YyrmLHW4%p;aj)B=}mTAu0X>)~8^>7DS!KY;1zEd0-hMw`wyoAh+C(=G)=djkrS0 z3+r;!Jw92h%sCW$xTUb=UBRsNjh>3;+p!oVWDY*XMIAtT`7Crwi8^PT+U|lY4mchdA zyD?B+TEWRIVV0))x)6M@GFltE&3bW|w_}?mzfx8jf2i;3JG^W(Esm`4D>ZHDR#WeX zLX`8dsj8NhZN$P7NG`7BWil))p>DGg_y^A6%m{eMI(i!%F`rUX-ms80$Z!I0pYCJb zf=h~Ta^4&Cc%={5p=%EIf7uuqe)$RoSNvUDKgscPdko}L#CveB|6Ac>ez5OuUSnv= zvhU%X%s;uetDU7ePoF_}@K%pq*u;}sE8(_NA3*W#D+Ac+H9`gDpSx`B`wKaj&J#i! zq^5vrgzuJicG%4tiwPj>c-o%JR%NLUAyC5eMk%v(@0x*!MGT<#tV0{~pc|e#`rauR zBBZazW~Nsr}&#FyJmwW z8dFbHlsHsIzdBCpaofvvOlxsEJ|=Rp^~yi14!qs!cly|banP$9ZyG%pEk%vO{-B;* zRpyTLn7PeCNg@}o%>r{h{mJv3+2s~7z!0D|QAsN}^i{+C>w!w>&=^J~-W`5bMKc%nX`Ps8C1{!gJITR zKWO1~^-VqDF%n8A7>TyAEs29Fdx;{58e|m3o_oAqY;675)~lNg>XFC1uuqA0>jS=I z^grhBbt=m0fUZ_x|C8wr*1)iM0N<0oeIGERYBJZ1a38C0$ebE|)SPbn24 z*U)y;IS)?ELZ>dqFrLH19c(tZ_04*0?VK~1%8n}BOxN%}s7JF!+W`B#N}|P($s(^^ zmy#l&?r^bE~u{E^O-mAXcMCN?F@0Z)nIEL5gvht{rD*tJ4LwM1cD6?2^Bo z&3~tM1_i4nPjSXM|J0~aV8&7{INyF0gj(-Bh)O@qCs7$V`c+OAWNq)Udzh}B9TrF@ z>)PHfTZ4?e)QC;7w!QceeZI_v!mds2Ek&B@{st z{u&h(GS_UZIOSuN+Tn~8ApJh{0PvYaDEa;EV8f!XnNSeTVOCyO0{LA@Bp)a{I1P8>}me|3NUO>tL{ zCSI)(PR@56=}TOzv0Jx9QE-s{#B@FOG;)Oi3_v?Tcq9s};mV!*u$kqT^^nuW%b%IT z48-OQ?sl*P*xyVPag}K?nMGn@&x|_hLdbAmi^UW(>+SWTTkBilkv15=FJ2ZYMM9Ag z(r~rmTta(9RaeAU_R zz%IK92T&iOP!Utv6C;wM;I~+h?GXUzy06l*#g2UEXs0wdIT5}SubLA`o9A@Z$OK?- zH~kOmFjFI zMqbI6ZBh?%n0W)jG?m_b+*#o$3e&Q$rwk!lQ@G;INr}7QNW_?CyCxx0*s*elh;j>lBK_phj-iGE15uv&Uk? ztS>G1!HwM(6KU>Kef+ajg*aBqYAwvI(9!~_%%${FVnNp<0dR8u#(5CcH2YlTQ{A5v$NL>%Lj8Yijq<0YE?ZQXIi%ftcl4w1HIZ&@_ z9MU|x*iBrA(Clr0?VyHJ&>nh}I^!>czvl%ix|DB32Ba)ziHwGLYRmR$Hy_#%3zl1H zVV?8Wi7U2c?rP5$xDS6b^F3?!KXMe@cgu@SPRlwULQE>$PrsV_4uo{82K?A9(h)0$ zGdoLa!F}sa9aS%ROZt70sbapB?8H?k?;W9`^ERGhGD7DwIS?>lma|+y9z9NB-pizKcbn$72@*H5bA>0eA7*Y5h|0v5jRr(`pONx#wET0L zJ-*#-6Zm=SR=vjpd|e<<=%mhs(?f1*7VlRYqgBu2^q|mzXt;Xt60q;sZ-E?$bD3NM zrRXy@It39VLR<#DR&o_+&CawL!SPF`@dlrxilyk1mvt6sIHNuu)OqAS9uAsQwAuXp z_lNO5NZ=juPSCXG5P@BXJG}dNylikqlmEI>l~8iD4OJSJ{V2@DkCJEe{D^noBe%o? z1%$|_qbgg+9D2-eq5^#EBoUxr9ct`y1QoFz?4FuNXi^qyqv)qmoDvzuS!}O4Cx$mM z&2?~EX&$qBTsy622sNnNA{^4evu-m9UIm9b_DrsczHE%BBaAVtgjoqGL* zYQlycm^`7P7z@g`Dzy{cb+q6;O^|N_LXx`gWmy*S$FKLf4W=iJ9Dk%3cpfYE?;-UT zQWup{lmC4roQf+aSKhlc5qwmj#YseJQi(Gh5+WusQ|i`U52(W#?fmADc;>k$Xi5eVw5)k&GdVUz(C$g4e0j3wL#zvZwpofWEu?rp7Mj%M zTDbb#edK}5STXGs|ApYpbk)!=M3(v~a4ix&6?NU^ZRW|(_f$ehE|kV`vg^COLSFj2 z*2hylhLVZL=ob*56*N*B>Bd;R^*6-2NVk@9J)B9mae*kRaD<3B7qU^?czNt8tg{bqa(C@+ z*+{=$yhkZq$X(3n*i>>%^H!+ zfTTh>HHJVx>JEjr2(cEfWzPZ;ATwqL&hBq0)-vZTRpdeIetz!z%gn|f28W78yRxksVMaE%y{OFQ*j~8;x37Y0uYAFswOU^ZQV&3YE1a$w% zNu-1rN+-c6jCENjA;(>VJLuKikB!(lCMLbw!?;d4=fFVMz}MLc>Z*3R5VWOozne;* zO@ouh8vQC~L1-7NzlTF&k?R2PS{FbA{N6~Aqk;^S$~g(lfPN4;6JI~8CkTJeXk13d zKX{>#=I*?m^|u;Yad|5kKd+vWGz7sg%xos;L^H%Ac4l0u)TPF>ena<7c*J8_nZ0@`r1E38cU8s)^-Eg~ z4ok*mnPvi|=DJc(5Xc-i#L=7}L3$`y9P#u#m8)EKwYWzKC-8ISYjpo0w}?EE4O~k1 zHGgzN$dd#o1p_mM<-l?1Ge2nQl(S3y?5KcQ{e*RSoA-g_7=}BT#8L|Ck9=-*T$rqv zC6HqH=wjYR7D&i*xSsuK#1{tly&S+Ach#bazR2cRzI307G}T zw6w&~-9t(iG zQ6bK1GGK*~NbE>*mzQj44SC#%O#(ZJ?k6V|hfM2&9{UHqrcnY+Vxa<-plogx^`J`? zyyMnwCl9lMsd5R=DhF`iTXtP_`buegkwFXJYGe$$ywPm`Z}xl|m9W3dYGkwOHDlQ- zpYbPGGCD+RToEzV6CRA*?hxTgJ&5ndgO}tjV+ZXr*Hhin!SRFVk55#ip(?G&Ke0}_ z-69AS126%ih}8@NF{O=PMse#WO@FAl5zwdgMx>KqpwnxCC6&0UDfE$Od5BfU!!-T; zU(a6e-WArLk*n6NMwwI)b~GGz2p($UagjibPkBtdGrAqYo$RH7-FrOy#z`O%zOM#f zd52b8!Dzv67O;2t(0}>csCRy~N5s}go()Zitdipgr15$4g@5DabC3t4AV|HkZ|o&H}p}7%BvsLUGsY&cZeGEv7li2C7a(? z?DbAg!MRvKh%PQSHB05-wl5O#3SHj&_MX7cw(A;WoCOu)Y02=#R$$0I8kf>JVX*6; zWs*vsoCh{U@#opK>qNPWy_)~O=LD51Mek`K=mKZO=f2&WB|0MmL+hTTIAPN?g?>WT$1zw3Kk&f9%y7kJe;rVGw^)y{3W{OW4mE?CZG z0^Hz|6M7@?mCHwJQ)0@0?H4*xzG@-lOk=@!d6SP`jM%-xiRy2~%J>Y?NlbJ3dw6!W z5R3Orikb!$%_%Cp=yMW^%#wRIifSD}JsGDj@zS4{kqSR48Wn4uR4!7rj&dj7J$C&Y zQf5@ohiHxe3TS6RQ!e&`m_u(e^K6bD&e9oF^#!%u=hWxIIHrjJ$^(c1 zw$&t*?hw^;6g8W!xXQ2oTie2U3XCtnJPg@hbk9)E_GB}&M_$Zxaep-y`|y~~&ne9X zNB5YuyKO$j$@0JXXPx#5XmbS(}SlKYp%k(%0C<-PZBi;?VUoFdu37B6%n#c zT4WYSj}RHw+NoKXi2s?JBO(&o7Eq1WuQEi|F${o|;u@X+cEk8HgJMp80x6fSw2F+v zXZ%|_n~)+Kj=M~y=u#&2#)Om4HcjxXwk@Ft?T?jI>4-eAW@C|-{E7?n?4Vr(y#3W) zWjJOcIT68B(UuUY7bl&GokF*slyu+i=g$XJl&HHFt0OynB2_8Dw@UK+_!vZ6ac z4?~1VC?a(6VGg4NWU3NAN&6|Gn=IF>mV8*mm3`?5a zN4?8-xH}F(9hC$vu|f~+j=u|s;O1SClW1CIH>mRP&r)}GbWKf#x^;$h#g479rrmKp zW#Cv_X0)pZRnOdo;n*I?WsA%r;FtRJ)b-M`NvMb}EaUK<^{PFHgp|ST@YzLPS4Q#4 zp7_`|4^rEd(4qe~IUK$J?YXX><(+&1xp_}QB$%kvw( zbzO1*RFtIKX6~6(l;vDrOh@(w29Ix64(2~V=P>fih=m-#|InZ_yLuic9M{PSs;>Me zxp_FJLIkNtt(p37JLgg)R)aB=n`j z0)EYI{?G=`-_SN5!stmiX7tP*S#v#rdfvmg79^UOnF? zr(Yh!)sHd=X&1_JgZx2 z$yY?y4}EhSvhkLaUl(6r-d#TZ{k(ge*O@7@{QW(fkmSb%@CS~gAWE4c#NP?h&3tDK zSn3AKvQuUqkXfNKYSMTM-^iGOeJ-b#H*GOX+3>a^{twYLNJb`)Q{NQPbaaeDWC&FQ z!o6zcr`3Rw?19U43a(^tjLQ)k5Dd6aCacnV*alwQwDtQ3mWgJj#;^s-G(+8r9(Uyh z!}TZ={L}4_uhJ0EbWm@Mvdb!ihcDFNFv<}{Bl} z>VX$lJkQ`(+E{zm8$4i zf&>{QycDF!ar9fKCW$(2w~rV*lpC3E+~65)E@B+uCS{}%x)oT%a8+0w^-^)JH8lLA zao*-!?1{j4V(QoTtr|HDQUt!=E+jPi^Xosq=34ys-1qtU@$IBmL=L9HP^3&8J_;`x z3JLGDQ7H!%r4 zeVJd0m}|)}#ho@=3#cg%v(f^|FK%h!C@Dr2M?IhZ891?0|Me+Ho7GX|d?>ns#~>`c zqC|{}!DE>7Fu%H^9va*lp8)BqvQ zl%hRNQ2zy6be&^thxM`}mgElbN^5$}FKa6FQqpe#Jaa(A07ZnY%4jsmfGjV%8`Pjy zKwx*LGX556CPRd~VMxoO^c=y-KsjI!KOAAvtVfPol!u>t!wZKc8LHB~FQkiV&#I1H zsECY(i(%oM?BFqat^P72esZF_)GzhdBawBzZW@$mSa)(!%f8~(G1~pbAP*T!h!8G0 zg|Apg)LQd|@UZ?z^xsHuyBx6cKLxkG#3`fdQ_VuYz*|4_nTSfCP{mq~Ww$sSxKolC zFnF?nARC3shrqjM!&(-@AxweA_X@omc3*Tfj)GU49BW)D%Etr5GH>I&sXWn;??0y< z5y>IOl9@Vt8`54DKk2QWOkt=j&J)WJU$E-Q*TJJCm{)X~A1asJ(9g^6)$|B!{nx|B z4FgZh9M|5;OR39dSuFhwx^6ImJhX&nPY3-T*4ORC#o>Zf`E{EWue@{9OVE6IH|TFYxN3W@6zbTeRMzsv zYnw@M^$9Q}7IsOJ$TCcjah=kH@KyGfpH|B<0xf+YnaQVdZAaLqRyjjor~U1Kjz zPBrbC!{>?BL1k=luWMGQXkB~oq}S`$boUFROjYj8%Y$EY_sS#p-gIEM)bHb!W#Kef z$$@{pyr;&!zPHGfn3qR*n!$K*>woPLVah9L^W$1leY7LQ%` z^0HB4yvX|q;r@}9yj#4*BA?KBjghcdg@cT;Mu>4WKVKlxWXLZRc=y`zuqsMA7?UMU z*2c+vhBoC+TkE!E$!?71bt{M^0e3uW!iXE>ZzNtFL_|KIhh!x*u?DWVcWi4mXvcs3 zH|3U7VnlQ_GlPb1LSaD!wwM+qUiJ!Zd&!fBu$s2<(f|o5Dnw-}Yd))Qkge*+tGt}T ziAw7O#yevvv>J)R0js7x)%^R`MQn#Z;cqU{4c&YInk6=z~OLzx^){W4fn+=-6n^YNN zd7UKOd-H_I%ouNO`~A@I@9H^}{E+EIwjJb8y){ z9vUU>f)56^r&Ckh2#(7Hf7Flh?b-U4kdl%z_1HJ3twjd@GBkQ&5~F|(Ii87gr^?QjPT9$T_?`6+SZ;bvF{FO8_nv0PB>&F zdTM0AO_xXw_5e6nmiGxHAHBCtRA61t>pQ0XW0DiIOkb64FJxlzjl~r&*!sMLT_&&{ zqYteL;ZZqg@}t_4iY951y~DSAY_5ulbOz1pG)=5$0Y{%^Y#$Yf$(x%Z0!EjzNp(8V zhd+Ovy{zF)6qi$ALS&H8NFig^s`hB9J@2l!F`%aHw5ooA`3(-*iK89E-Pwj8KH12r zJZB*dMIM2%F``u*Sh_%z&F*%Mr9>u25~2ZNN804OaQqK2Bca($-sU4)DYv95`!f%q*nhg0ywg+kFm^aYGa#cI!k9%04Q#X0O%^mhWIV+y zt~-~P=8;s{V)HM3Q|Tz1r|HHy_b;cv_ zOL1Vz_lKs2S{xJwivB|BAv;Q^ML~^>$dPvjFh1C&$O{OYMU+b9I+2}8v7s`#JkSUH z2X_J&Lg_atetNRSDefCALCrgQgsTp}bBUS}l0%1e$uNix%iUSuMe@3^TPC}G&VTvx5pVFf50-9Ay1N{xA+8jX^QL|pBI>Cx?eXPn zp$3i4hnf4`vmsa<%d@lt@GbUX2`;kdH*a<-Ya{v!$W0C=h+sBK$=><n{!oNZh@@OY@Ggikeg*t;P}inK zt8O(b?lXdU+1gRYq2!2v@c8?X{o=cxR>!7q+E{h6fZOtbeh}QDj#`GnFpW&Wm*gBdfR(Jv$3;PK?EpI)LtL2mu2xOO$eS($mHItp@(u_l?vg#)33 zb0fpdkAA`%!FL8nJk&xnHTtZZZwAm;bDERzDmdve6Qp(4B%7koX&BnLOJNOEC81o6JB{X z%- zw2n&oJ47|1pY1zaSx2*WI;xM!XI7FiV~6kGeD8kOznSQ9beI3cbLP?!gzg;bkEwmg zw)c*q4V04hd2K%LI{(jpV~6BZ6Lnhz#?wnm))PCoi;h2;AfiYz=j@j<$zi|+No_e+ z7tHs%hgUyq_st6nPfinQ@h1T`o~ixTz(12K%UMSfl`SoQy`D4F8n!)DY5(eIX^y#V ze=q+hxjvkc9z%GYlDucuS&z>@$@y99y6s^PDZtKV;Xd@d^;T0#l4|@&{(2Gnv_c)< zg*t4Z1eu?=2OQfP?MYAtV@BhdMA=wcY1Q(|{@I%Rp2fGOtA`u%QOg)U+`-oI!k?dz zI00ye5d?&%r}Sq@So~B@OR9vZIEc;QG!ih86Eec3?9ft)DL~LCo4p-;z`fk4>((xS z!6dGS8Zm=|_|WE`?Vj4|IAJT8PAYfQF(D+GK1om|_IjT!;fy5})ehKB}x5sLjR*W{eczOEM_O zDq1=U_oFmecIuvJS7|0lpG-a-8xqZ(Z|qwiu-Uq#)|+2`=Su0h_<}wF0AC+L(d|T6 z4KcWX2o7fI{@vACIq<(M4xJ__id8 zsOw(UK}9{{RsFoUe>RZAkGeFUhaT9!%UH@A_${f;x;Z8mI~3S(mSjSjykZk z{z>i=&d7t2UV*WxXA;{~6db{?`wN~aJW3o=V}W7UF$Ka6glyqF_S>b8AnP>JQ}`dq zbhPQ0ULUsyLi&pNy5q~+B8T@u*bY-Lc$fOgwlS_xH~V$^{6%NOyq{%jYH_c9_ibNP z4y)HMD*%EdLOH-Mt_&*&mD(2XHe6+TzcUgYqbgQ;@VJV-U$$dJDn}6hj~_Yos$X(*EDv};8pT`+|C~@ zdV9#I74l)!HC4Bf*p@p$8(S%S)&=$@eM)=1q0YmSPmIchJ_jg3?e;s7tjZKFyrSCl zN2d(BPxJeK`tVgj#u^4OQkHszy{*X^UW@}J=;OeRpXPX_{4Lv$Pg1sE{1>*| z3b*)j7gMSkLP^-g?eSaCEsk{+4~2Q`&g>eI7ga{hd&&%e_xp{0Dz={X3xN+ zzXG3{vh;}PMiuiwaZMh26u6t)G0MoXVi_|#s zdX4h9KHwvtE=c5n*i)i@7fD8}VXIhw1($iH5f=*is0D<#>J{^Knbc<+ZS}XBe0+5^ z)ufOUz#hU^#dlg%Pv*$l`I2w4=HjY&&34Tu{p( z?{cw%k%bCt&ueZUt`S2Li$k-=(d;2BYuHh=cfI(XSFbkm9!pZluzR=U*;SRtXY9M? zKZj;F?#P1SGNqWQX9~Q*3+^N#^0QXKw!RwTg|a1g)(0k7V$6on{kiP;D79qZa6eEq zPimU!>p+-8am-Esy^&~+a<}irl(w^N?em8(n9)mX)hn38;6VPG+TI||ny~_0*PesH zJWaD-e!WZg79UO4TAv8M{&(QrdWlHj6W+v2<-354OzQwZg+iPJ!K{dv)n;ubd4?#f z*z%=PYAqww9*MTLl^yMJq#fl#7VQpPmBX3^qAazZt?j~eYo_dG{cFOu9s%^Y^W02d z0)1Abc{DpgTTK!v9$%cxtoz;W+MO~S6B;J*2Aj73238Cprl0@dqYm5P=3Sdw@b`>Muwbsgi-U(H zeE4&}kmFjbE?daW*WLGB8qOoa!Ir1_Ina&-z^*x908CD?M~z6x(LB+z!h3VR(|!YEX5Tl{Cq~y76kD6W z8>PR>L9AgAtM}i>%W-U=ALS)`0MU)S&U^wpto6;ER8pVtdl;H^jmFzFz0M(HnidBi zm<`!g#yN*NtTlT+CfW8j-n+Rqs};~O`te8e@$~)`i|108Cu(r-Bu^OsnlVlZ#A#Fm z0H~*-SA(-@SnOz=oV~^}jC5v@5_Tp2Q>J|jrajHarB(cVclynkbJl9(FBfl7=RJOq zUBLbgxi+j(7Q-b6Ahr0gxGw-&a z_Ye#OAGac=mnlV5&)fT~xjxj*qK|tvC)s4j3f*66e5lSpj0;EP_7p@Vywn7IQBM!Y z!n3wkuZ;O^JJ6Qe1L^c{R#=mraKuEyAIr!6urFoHh3Pk(i)66VeS)p|PW|i~%M*?* z-y8e+oY>Rf&HtJ7Ud(eK6nVRU&goicSyt`ixq$e8mFld}Qg+z%7J`*o_#swbnfT1p z2p`dB{pjGmDy=$tpw6c=}Y) zye`6|S11&&BF?Jct!$6W8ZXH)9h$D5Dta(_Sf2)`!%(2tN(eDIYBqX2J>PRe>ML{l z-%JzoH@^`Pmj>9CZIs(3WpEJ3$_S!$rR)A!<^e>c$8*{H77qjL@ijJ_qqC87&(PHOSE=tgof@7f*MW2j ziKN$hvu4BNyDtKoGXN&lfphuzENY51TM={ivo4}gbE{N+rB+^v4A%HQDY{2)^3P^m8kHPPrgEpP zsAFDQj=_P2AVB=_Etp@47;E}~JKgumn`b0DQ^C~|kI8GIPD|N|rK*e;P+gR0EQ_6K zR>9LVXx)FS6Lxf1BKW>N2ICNjpijAew`z6uhVAvgu#mmyr`O%Bv||JR>v!^q7gyES z)iL6SL>GK#`4Jx!!#V}pV;dE7p7v0Yw;!840mvuB;{%6uRpD0Q1c>T$F@&0X0i$5| zA^k^K>)`t83zk{w@EXxFQG3Ud*=9%z(15HQCMMyE`8&L#;JR05?QIe5TffsgpZlK$ zWe!in!9q@v&ZU;QmZYMOdIlm4iFh1H3037k{!$20gY|#6B$vqz-Ix$%;uq-~|BUNm z*9i@stdVQoA%Cg$4-ZE`kVKp>j3Q6W!i!c=W<20XXWA2VFL2D8*m{UJg1Ug1DRS9z z$E&<6{#V9Yfi~i&vG}jRD_M;~0PaKAxs_G9?Bkfis)qfOoPpdm&b_P`;v?tp+l8+J z5ZtrJ)SOY787FsrHBB}asfxVqzed|sBKLFTHC7V0kuF?NsH;-$$_fNy7Z?vjK)^{a3+C!C0wu+@G&_=O6(9XPO! z*_Ny-hmNsn<1V`cZFSR9S^7-8I7iwk0rFh}&q5=E$&|G3M@!F0l`8TIi2SdKRZ=Pu z0f;7r4AB2%oACeCQ1tkfR?fbqxSB{BG;Ve3lkD)TnkZl_4&oq<@tB%W=IUliFwXq0 zo$pk0Iu`uP;FrByPv7SP^)vy2B|?#gUm!ubci(l|euxm9=F1YFb-a{cU5cf)K)UJzzCe^7n1-Q5jL#0ijcnX02bzL18{N1#NI&&A2Gv%r z00~2#nT>b=9qf`Y+2hj($)lVeId9^1Mk*%NX?m;8{uv4%0j)sNxur&}8V9_H4!n*C za;IOcBaAH~a`?cvd1pybbEpfV@T0kCs$c*BvG_vJq1rGvRM8m@BDenx6udV(j*uYq z4!^Q-4&Yi?(#o5+-{iDS7xh{rG@*-VaT--v__FpT^LwUyD}xBb!(p_mXPuL_8qA?P zd9gLxw4plSkURxMmCoHrRjEh&3bQoD(K&nR|qWY60 z{{*|lJqlL=|0~z|S?Y6YHBIjukk3rWs*}|$Y`dweK=nkinj#VzEPLpjtxRKFHBdYV z01$v~$Z*Pe!xyh*v3J-++u>^mjlXET<}ku@KlT(scW&P5Ey$mkaQUn=ecKMRZdElF zHb%7GB9C;pN>f|e<+)j+m?}H{Ay!h9-NlDi*%lfg=h73{N(kOKTR)gvz$l3pICK;Q~hCvJHCgl;r}r z{jN?vcdEZV$5-FOF2}mFrC(L5(M704kN$l2f&3q&OYe)b78t4<)XXkr2s$kqf5Vp^ z0MX%o_HN;Y!8h29OP#S~>2X*#^4%DoxA+V;XonVynSgJJ7_hwazlEWjI&uD&mLosa z#vntR?DHL=G)^oavjK19o9WF<(i5X>O!+SqFpb#zLey;!^_ zw>v_xy%}bN7 zhUDEkaWj&9!nvo5}}7ZnR3Gx45jj|4KgfK zX8MCTJ>%AFX2yQzYVJo@lYK?($+3N&1V86rOLhMD*&cbiEuq(rny2a;$0*E=z0y3Uu$o{crf?hso`mH)(s>)O|je z69DENL}slv1SQfL{!nzv1?)sE%TMi%GFmo^}JMh$j4Yk+7gof(%mZb z24rl+w;Ej)(I?)Dx1x%yOF{e(B<$NrM2Iemt4xk$5*Im6SHNYlC}Lu-^Qwa1I(;ob6}6YB!cefk7_X+ zs$oWADd|#X*ty6R#;R^mj&L5>rdcIGe3Z;%N+Ku}LDB)LJDjE^5;$8PPJ>)KAuL^& z9(b3qKQ0#k4%U&B;Rp3K@@xJ(Ff6F`-&(Fu2%gpFn2Le1X~NfXJ;9scZ*`hc(d~;4 zU$*1J;L~KzTIyqzY-s`>=AuyKz{p5MQhFX8vKn8Tjv$namc9b2iXs@-H1gNkS7-E8 z-Ml((pe6TqJmEW8(x{t^Clz-)@#!qrh8$$I<%L?F9snV;;dk;-O|FPc<)HUP@^a*B zp1{z(v{i---^uhS+Jp>bV14IWAdW3M&_MS%@+53%sOd?IIK)47vFLHCijMgf4Gfsm z3t{nc0^#~#-ocGaAz91eNXFi)=wsOEpHibs13^m={+Qnf1SRq6n`%Q%hF8BYNPz41 zH8#_9@f);umnMiA<3$_di?nP0{$>fyo1FgUVH|S4iRd5}={t6Fa)n4=ZR>jjkWB{7W0TU^IUB?Eub_ts8CWphUf-i?N^ z!K~A6gYQ?qoPC$e+88*3of{+#-6|7ln(&roifCT@goV{(2}|iYm&(s5B?^>aceKCc z0}M;yF=DWezN2#@HijlWuo8!gzXl)be6M#IL}Rg%@quGS z*cI%~{N4Ufa&sw%<2w43@Vi`&3x%yKTyoB``fhuPLsBf~|2Dye-}~ySwCZoW1)HaS z^r<+lJikw+GgZlUFYxNwcU&8mDJ}QqZX!Oc)U^J=gBK-Q4F=>u%@{=DN!Mzdb|A}1 zO(P&+_G%Jrxunozp*uFRPM)$oSMVX}TE)u6L}cGss>{RB{|}O)Ey;#YO001uUr3^= z@bIepTMvzMt@l8RmT6hap~*3v#18lD?Dt!p#sw_`jH<3~>WtCk8!OIim)F*0gE60S zVS|cQH6{MD?mfTZLk*!wVhoaiz>MdUNGA!l_E16{*?Z*uIc9<5z4DD&nf|blzsxKg z%4v3{lIDybCyVI2kuOew2~O}m0VyO*ZF#dM+N7JbU=sA$-6JdkM|a~E2p%*!twlR3 zXq?$N@*cW!Oo2GcI@O)Y_Jf8^zk~u;99+sA)EUA!^NrSI#k<_3m(!avm3o+swR*AJ z7&A?=ip^Q!-v!Cq%%`_skH;2AMw8F&B4dQ8UnXNZkL9xPFLN!(AI!3iLt@`rM$!hQ zL1v{+E702RyCtj#!f6XQ^N*O$+zpp#{F#Va%M}_{{240p#P4jYXlj^}SV&f?KbmCw zhZd^jSt~HRAbJfHfb0&9j7TIb=`gv|xtO*~stt-svHI)7(P_2*A zb`BZv4wo0m;dRw)0zdDCL1?{7+B8L-1HyS)!8f@P958EeChRFRHih}g~Q>1Ov<3s`ROF>f(L>sipOn> zgr)mLxHl647ZPO3Y*jpdMs&rKf_#ch=fM^y+s{_z#K^qHRgNy2UoAa1Oo*E|b**ce zzd_Oeu)tqW5knD>rsOvuyw%ydeE6sq#~N^0BSZKA(Xm?JSA^SfOGj=~_H?Vd6p&B| zrvrr|Yv|zg;<&Iz3GZ zsfiqYXJ;b=xy`_GraPk_v5Amc+C((EN!tucC(#M{=V{`q6zP#XodC9m1ie~!^O2mM z;V=zG11qvD@)QPS1)ASvM;USpTzkl0(zRIg6=bx|T$**BS$o#QWXMNk!mW|GA{ENr zFw_Zd8U`y!|akxh5D zyyzvaKuciyL0R8OMn2?*+SQKJ^3F)me@K-h!E@3Vq`@yM9Ub)hDhISgH=V zmH7Md-%mt{e$((&5($`H!S2j~gqMs60hu?={v8T3%yW+(6XUgQjN+-;|D~>~oaKVA z)PF6poKItW*?=m)ZiF64ZYTLPYQsOLSo-ToJb6Zhlt^02`KyKAH+J)U6P8AK~La79`7>Na?FBqtfY022F<>s2*t~uEg zIlnYi!JAbQ=*pvI_SNxJkny}USUsV6WVKY**DPJP2P#y8)H{?Vn0wwx#EgPQdp66q z81ivstMq_KD74s>2tAtboINT01XQ1)AcqI$kFh>1_hIqVRYi~BjNX(kb2JHPG|C~g z&A$?L-1sAip8Byzkc>3GazdYYMaCo^8(l$j@3&vPsz*0h&Zh4u153uHyKh}|G=8C| zU!D_PEnIST3n|e|I!guc0#9&BU+LyfI?!ut%4469U(2EKp@1*vKOFX2>dBXq**9MmC_-{Sv%1_D4#o5XM>@3-Eq2aMdzr=973p1h zVWl|9>G7!ZQzU^83HK-Y`x+3Duj1vW<*y~D(+H=lan;8lhvhO5A)LfFb!y5mft~? zNRH?)frINFLN6<)r5EhIJ%POUuo?-Tk7nSA1+@ z`1=4Lq{hX8u8N7->RU`d866J6TOcv^`>&2+T9aQ0AorAtvwKEnGp$sIj0iSb>pZJx z8!mS)UaVLZd7j*(U3=d5rN|MqFe^?BJ+z|oeb`B?pX;$e>5=y zIZ>Cc&RqnUc@euzhKTOKLv$dnjL$_$nw544G#_b$j9gzJ6YHQ9it-kya-NpD<7nVc z#vDsWBs{u*>hWFzy8ZN(gQ>?i697O1AR|QJmF@vH%H;^8Bq=g!%(z?qE9kI*2j9?& zl64amE*fHBzvG1p_J>o#iy7^M@ZRg{y_3$cJ^v_{9PoLqhUe$g!Qq}9YGk@B!YDGI zcOq+vCtW;Lsczmk!T7yO!b{LYq>rG2(V$7K70~;umtHA=ym&w}{9( zh?kKOENmuaa=56=e}cz}&#(^$3P_f3x@&c^2P#{uCKrA9Qt!6&YtqsgAxh}mX6uV` z$N!}YMQtL#qnge-7-m1gj4a}Gn)Ub9rRf#PpNT~kfvRsDamvRxE98kyqD%T0iE0z- ze0O8DW;Xao3btFui4Hf?EqJHy>B**M0-ti^gN|^?T}_Tro{{I4dYur8TW?h?Ntkm< zm`RwmP|b4H5Pd>9hL9VIjOcX_7?rOxUx|>XgD{3urrJt};z4g~Chno28IW`2BjNer zb=_48qo^=>KMEicaSWT;y#e(TqYc9(T6X2K7zUC;NKL9BI)Ky{bNrY>XeD;PQ~kS| zh_Nn``O8~E(d#0iMz5@j;qB>>_s?EP+FdnIDK@mhkVkD#PUF1^6;2f{!Lg>pNDbB# za_eQ2Wyc}$9xZea_3>Heme=!t0}vsvX|Eem;-egtLtCSq(cZ>&9`AN$usenBRBRRX zHv%d0zG5y>ZTvvfK#7kj9kj~8=a+?>oEX9Qfn2o3r(%QJIX`}`_R^(2(NZ%SEKYXl zfhM_UAYXIKY-W)tx&)0`+Eya3660lh>&QHI4Hkq>MklPqLO-rGtB{`= z-q_GG^;0gZp!`zKMWbcr%p>bP9mVtc+lOk3X@G&kCvG_?4xSDlv+x^c{onFlzksbu zj*6aw4et%cc@H>39e+M5j0U6kiAA>@U5?h07oZ<^+1h+;;ubwPd9j5bq#rlF&>NW0 z97D{!zvqmuot zjHrN1Sj}ufa9pBz^!KC@#CD>}ykS?=X!wP;8~iqoTeT2BJ$!9p&1{1gL2?1!1{_B4slMj9`}K9bG5GcA+EsJbZ$Z;tx{iX8!EP$CzZ$aO@G(lgq7*)lG`T5M1a^TA|_48*+bvbfh0i`s=D`@Cz}_C|N&QPumnG4keiX-c3HWqJ9+m{Nnf zkWSq4C@x{$6n}3B+QX7!P{uNdVBwR{irs1l+Pcb7f5$hO3Qr$GpBj9 znpjSin<4Q-jJF}j38&%3(~F@J6e@KYrbWZy=3V#}nTd*~TQ(h!!QRZfbGyih5z|<@ z2c3?mNu18`($I6Z$_u%J@KO=~t)%X$nvO_nbHXNSG>x>!L$1v0G)kliP!~=5mh?6S z47^ciN3fy8rUQ)JXvGyv<|M#yQ*(3GD>%8EBp^n=QR8js$o`C6$)RgzWMKbjt`sh^ z5hW=t8{ho@yPUa!Zh^L~w`DX%g8i8qDZZ+L`(EM{J3Kl4i7sIDW?Vn@t! zB`0vaZHM+Yw6_){798p_-wSgg<^=#i`vapmO7mEZs8)bUNd+n!1ZGAy>{{23I;~bd z!^m(Bs%L*~cE!W%x$#X?p3u^t9^U;&D?T5vwB$L(TGXoo-wOj%z?GGhRXjoi0Ybj1%ZCB918o9mSdN@TWs^GPr30A!5N; zbF;cWUTs)Xd#RvrLE@G`%~vo@Xsv(Fg4GNpvn0j0S7ZM%Y8G%l6NK#vwRGbDHgls6 z{&x8j4FW#W^-@v6MlUX$Fv*kk^A!=&GM0M8O8N+1=!h%eRkcUwo2~}&P``z;3a8)S zKO5VdtZp1O)A;c5w_7vU;%MaeWw6V&u2zlwty-x&6pSoMlc+$XqZZ&riqzyCI^g6& z6P1Ugxx6WfHzkXe{Ky~kcr@wq>-|SoXFrKA6>$n&GcH0xg841VVMug4 z&Q%3Vp(|%0XtJp4xpFSlAn)2*-5Ro1A<``JX^*rN|BKK}W@n5Em3aOSVP(GaZ_Q%a zf<1`?IZ)>v*{sp&@@2)eptR(p93F^cc>*|x#@3$r_#z-VJwcpr&4$9=WYzK*N6r;p zT=f6P(K$B8*{xA{V%uzN+qN^A7>%7Yb{gB5*k)tfw%Igx@PdZmN zaOVm)3up12UM6l?n0-lG2BAEDaDskI2A@fC-<>pfSYLvqzEbHU%J+`J(EA=(zGNb0h-{t3xgp>)-Q+I%=2~qQmPkvUM3eoHD~+ z%;_3>t54}EualAMzPo^&u&B?V^c znfWA~jxg`4s0ShY*6>(N31RkgSs~}wYa#yK=Uc05CjQ4g%wj0>`=5QYXd1HI!$-Wg4w_&o*ZI7n`RDUB@HJ*B@~#nm*quw|U(yIm zIO{YiprMiwp;x*sXxBw^WO}P(&YOL;y3BG_^RilNRB3*Rca!ty3juOwqJO9Ss#p-~ z->-k3e|&iTT=*|mMH#fFLKI$Wy%R7^6K;+CJOwElVZaG~pd}&I+d?|3m6b2W;Ac_U zYTGcAS?p7`2SYL}`JZ7UQT?nWp`w^2B&CHh z8Rd3JB_GC_>4G;!xZb5T86!rA^4G?+r=vb08O~0Sl!Ed@U@@%&7)`J+%z;OPDvel$ z!6RG%IVCwu5T}@3>DsAPcKoY;s{;X-o33ro)o4UT_`0SnK9lTSW|kG{?ii6Ml1PBt z-Mdr|a>hy1wAO}UAko9R4yW#+(OluxT0_Nvv`#BzHp@~emi!;m!( zi4#!7VC7L!uJxzuNRxy`Lf0f}K6kCQ3hatwhCAIjAXL7UGxU!V4)xqC?(!?NF_rH` zQWMNLB-ErYiA}ta|L@3ZM`G%Y4aWV-)LyYRb?CXPcn}F#>!0N2(Z`a2nh=KOLrC>Bjsv0zP*D9}warjzx!qi4zK?F;E>fxl6SGBpr!k3T z;Z^*JYG#|+>)mDq>FLaCiX;kR$tqic#M2=rK$^oXwQ*@nx|2amNk2sfJ&csF#ALbF z$N2|vbbbx_g2#%Y>nC5!7;DMIdrEa~5X3CRoAgqAd8PB_=fUKAq{$Ev02_&WG%+g@ z_UFYpt~AFiE>A!EB*~D~Iq}w_ONNP1?DY)g-`yL>%;J1G>GvvBknLs&Vrn>qu#YH# z4`6@utb^`kcOWFB(h!rv!~+?O){_be#GAooz4^7Jo(O^s<^NNg*|kTOo6mHm-_uKQEsGM*b|5N!eGC@W>dI`VBxc%TF7X&WHenrA)@)MN%BA{T z^(>vY@zYs*lvwiY8|2_%g~1v`Ha8F)k{MpeAWg_sHsFTxubHz(4(wti>?}-G4i&b7 z+!T^ogv|bP{_u;NORpU6VdW>Fi0Jr-9I9N+YgBbsDysb_${Wj(!Y|u#==7%g9_kqI z@kaYnB&4c7w+;|E)rr3NA1gotr|0a>!P zQ>V73k~V-5#jKSFpBy=)qI#||)_8rreSBD!2!yZ@WUew{wA1HKhH_ZA2pIe8)fnlM ze5Ev6t6x9OeI$jb+bYLW%DT_<%u#2~Cg^PFEo=*7xX)tpfb-cE_3B@=t1%O*o;cZS z6MFmm|4D8iJrYZGfyBq}E}Suz+Ud#!S6}k~!D-SeJG%;6-yFW}wu`qqInEgU<;_JrE^e-Zubk2OxR^;_#yK^C zmxiywJneCA9O-1_)y|;IfmvZx>8qFCi0gC%{~V`f3AL7gGBgT&wT>@kixz<<8@w@ z?{@<({~>nZC=;pKS~bOXCD3eGkK^Ri{%G=B=rKpH?{>JxI~Vmp&kkMVOFef}#<}LF ze69M>@uzpDBtx&bAM8np9ZBHWas~(kwlkM9vtSrPJx$S{c#+{S1xBHI$B1IJ;(uyK zZlSR-!jXb5cR@qTS@dz?9#+`Biw?Tr#FeWDCS?n(Oem32sT3q=EK175V5Mmi2>}$O zQFZ)(lAA-1#MRaK_bKOdQDXyv;NW6OLnOyMRZP!#0r`|;NuGi=1D;=saubkG$}JY>#E1h(v>9B&>C4YAHt#UK7)0v+Lar>&y0R&s%B28Je{h(VuLCI zD7h?y^L|DkNK;tXm4KIGC6=Y6tcaDy9?8!g)JUxpN07xxR&rXQ|EL_I#Ap8cd-V4) zpH=tw#_KyXE0!9KDDvoHbcKHlwJ>Fqcc0u^%9f^7?pmOB$5 zf!n<-xb!?jI(c;!6I}ye!F4WMvw|m!!$&jD86MV3A{iDY!Bo=a*6ZhTwIUQ3|Cp;YE%S`S6xDz z7NEJEZU?0vxe{WR4Woj~7T1)>E%0m|keD^|qKslY&g?tgn2$Jdm66kiD0x9jqTB;1 zph{h}!!D3MnMiZHj>1-met~qro{<6FXUPHu$IOu_zSRfx*W*Ez3;_TNPJ&bt_)tQk zss==X#U@`VJ78`;-EM-Y&n}o8#gFpoT$-EsVi!;Fzcn@`_3JYC;Fb1;i=eB|#@^q9 znE&%5`uQjBuVKfW&%^8Yx0@Z|Apb7)pzm`&<5IAS4lYRQ!4i@{cm3MIa|B9bDp(b% z)=v6_@?_!go|#b7I*eY5ke9TnB*LOb9pE&W1DT%=K#)7W{i7;fR;PG2@<2TFvh}nC#QBKTAsw{jAHAQq%G`XnpUZc!;jN}@ZcG4Q+dsS)CWymzg(DgT>tL;4jpcHuF;GZTn1<()2(I!fTE(*SQq(Bp;CwE`uVcn#i)gB)ncBte?R>f^g;PINVC4a zwf4W-zw#i9HSPD;Q2=&4*8Gp0_nO7-mT-ZNCfL1G_cq9SxI99B(UoQa92;ORVqQiP}ViJ>sEsEp%FI!KX%ha$@2kX+0Z?l&iNPhg6$s}*F#3Mf}Pf@VN+^i$Mli|TD4}JSv^LqBCYaI4KofuF z1USX@Xi@#BAsS-=oK|4|)}#?SJbk-gRIz@Ku(tkpQO#Z-NQdS*oza&70c~{>j(hK< zpBD##hvF4Qw)cXeh_Hizy^)XRc^ETh#FlO4@o#MX*iAQ&FvGKR>-;G9q+~ozsGG_} ztqe@nr}=@h6dr>=rh(+4#4;6uKaHP19`9`3e`oNX-iDgjLMr2~Y^=ll7pBIU0>{Ie zGD$Lc1%hAL(4|o^PRy}*+P0qtB|c#q1qmv)FR~u);m@637O(uFg35y>HLb6tc%pH% zim32_ra;jBVJff`f}E*Y8XR8OZk+%&HCTqgAM-f`*@IJi)bM9V4K2 zcS!dy#R{RzA-L+z=lc4)g-;VhKAuc;o(&;otO-+hbWFyPw7!^`a2J8Q#8Zji_BuWL z%iS!w>z5HD%Q;9)D-!luxS|`292lb+kwz9f=9Yw7u^?Y_B#wZ=_lR2&1*5|--?iFvk;o2{i@ZK1FDq;b}d$F<04PnO#jxb*VUO;d^fT!r!1RtH8fOwF|e& z!rQD1!0(TLUys|FigC;hjQ^HHYyqCip-n~7zes%%6<9_9Sk-jOQw$X#j_}uv8cz=F zcPy=rwfSV8PGpfvmSImB+^G#M`-^}cgHovAtXFay{VWmXrUUOBoCX%}?ODRX47}cK z%6q*=cx5V|&`9U1Wc3x`b-mFo7_5CIr{blrvxP^WhVzXxJPcj3|&6cImOb1rj9^0N~W^=oIAhe!AxE;RjZBd?8 zccDJ1ewc#ww5vH-51G1ezudHMZ7CvFWbK#*om~&a{h|lZk67Rq>Ze3YA;Hz-8IJ>V z8%AE_LnJ5DfPRAU?}^p?4jgl7;lOADVwG2OvSJ?guY#ml%Y8knR0#RV{j+ho{xC5eQjNb%%^Bom|0^s?2ND2e)} z7AN0MAnau7i=rrsBZpc|U|EYNv3*VSSy$?)y1)*5dRT>(ES<^V7&j#xxw$um(hc0% zOX~Cfxd=xxNrSm{hLGHz6<0w67l#d%$w0E`qF`0(o3PooLt4FXo&@ewlIz$s#aR145EIhaQRjS_B1j05!nY@ zwb9~dNUMGHEr;Uhj3lsY2&!BmRuD=u71CJYiwL7d2Pq@^i^UF&!YS>-^dTzANO_uZ_~Fp zZ9m7=e8^@Se)ofUhH!ykI)i_-EL$Rl76IS^X@u0OF6sIJTxwK?4qCg!s5>BO#Hidp z9o^WfZ+F|T)>yfBrN*Sn6=dU!71x%@<$bH>Wreeyb2?^t8R9vGR8Uc6eIgcFzZP8% z6%(rz$cx$kOXRmfX}!W#+DQ0Yua=^=4stX4ft2mkqZYN>@2AL9D=gYbv1?x*S%n73 z6IrdC$o@$#C-DSPZIwj8{GpslNZLWg1e7AK_RlWoSY-!sX!^vVZPWD`#!j0ftul)vm^kt?JqJnPH7bA2r)e z+Od9bej&c9r8RMaDi}NHq*VJpUhvm)`SaWSZiFx(`!2;Jo}`ykScq}WH9sBA!nOi2 zF=4G!(RuBQv9Pbi8O~2Kj_omP=92H$aIt6l-le{**DG2G>wHPVr+cscEN%aZ_B8GJ zw!bcm_HDtFs-!y;OQ^%s_v~Oxv+(p6R4MY)sJbYA`B~^S6T+ zMt@4LKD$&N=oHjVp{`>!Dd`#ocJ-$AmhzUhuK|a_~mRcmiZM9ggq>$FBsmZbJ`AD=<&8(y88gCfu#8e)-s1aI; zOX3*%#V@$mTBf!M51FF9Am38-mSOU|bpiYO z*HKe?(P`zA&j6Y1tOJy6gDmWJ;cxRt={N-oGB#DbmwJI#eKj`Ar>f7Rvwh^azvLzj9Su-1GEw1)$d0 zqg`^oBnHvz@;t0>8N=0XNq29&SM&Aj#D@+>HVA{*z zMOZ6O$^&Jb)31hdg5xC{I&Wuowvsw&*c`sBR4tmTM&D^qL9arHx@Szx6^NSDt>bT| zGC!43r_RPsoX}J6?qp@7X@_ve&TIc+-dgMa`zPKv)&jAlq=02diN436#{_ly1bh^* z>E-g?_ngbz;a~ug8j?fqN_4yFa-1vxo;{aSf{98_MNn_Lwkfm8KQUN6$AO>G?O}JN5%fUNeX~6Mu46=)EVM{<(PBijkXXp zAzUK>G^s!l(*!(pzQ-(=%$tlH`YtX5 zJEc$FX8Ql_a@O%D^pM30DH;JIZEHamt9CiRl9ScdbVB9%TyK*vVGrM%0`O5Fyl=^g zBARHzd;cnRaN}i2K#`l!s+n+etktq3B59R=ptaejL%ri{97D}Vy}7X#96 zo;xgzWcEiWR3xDke{~g8UNkms83CtQ#l~iJ*wes$$5N)qeAsD8$oI9h6^0Kq?4W$Q z-7M6-%q8ou{3kG@(k^q?bSDps)iy%Wog`D#)hHGg{QJ$F?Irg2O9qcFmce6i%S5{9 z|MA-XF^s#Zq480@MJADHHC~6~XJNG2NUGBK-Y97ketMs3^qKu^o-XOfl}{f@e!xWe zfw_WNFyevRB;W$ji)bMx8TwABmmQyi7$ONPTgk2<(My3Xln&*dS`Ceajuy-bfBSa; zsdF<&hDiW9(12=7i&c;F*4*|FjB$`Tx^o9fO+<=d9-9qwbO*OhIG~y{#Yx!8+gK)@ zcn)7E^=&MZEKAD>?7M2>zu2EL)AYws5YB5>_WIj*_kKmx!aP=;l;iMm&ra=uS-0PP zK?H}mpq~Hs7&(>g5UG=!@@)QHVS0?iNtYt3)+th;6N#GZufWGc7vm7307iaDKm|ib zw*zc#H8EqD2GByc;&Jnftuh_%sx%J1>P_oygBfj8Fha9=en2UpHK5Nj921~3V@6<( zTd2dZnk9~Yz?$<3t%UlhMlof|EpdNRcs#-WP1-+gBW~ff+FGnh^%+&Bj-R>dCNL(( zT03%crN*@C-|;~q5k3U8n49hQ;D-$FsqboPh}_;ds?8;_Tq`{e>`3?2 zQtr8xWir)Dvu3DsNfKz@SBg)-Qtx8I&sFbqZ7fz26Z79^G6(MdfH}7J4V?;h<6rlb zg>%pVG&eem2mj%)E%?;Z(INvUoSMTYdjv}zUdB+P`ur+9;}ug(`Y0qfAB~yD#v0G} z^8qLa{|f`)FGSl6k2ugbW2aOS53fxD{kRSA>-SbYJze4yoBf6?H}%RStDPI^o%828 zJBLF@u`%-v7b9rB@jvc;3;kVAupP+qL}f_L(9n^pF29iRm!+YlA|m5)3lZx)g8R{y z%3M+GcJ(ytPJg*pYtmD|JpCA~GQ(wtB9;Zn>!47hx_esHK~bItkw>{cWLt{JM5oQW z%R8BCw>J$2LV?5YV}Cu32L8xVw!32PBEPiV@fy9oBfspwDxcxE(y?(RRMW$F8cm8n zp^U)CbuO%vbu>Py0q=XtUVrJ7Hxo!_y|LPsx%BMz?~o0>Nz^mpA2)}lbO?sU&R2ty z$Ti7P7lN1D)6t8c93iyxR4zbu)l((B&d2{jAcQCk=ds}2xtSdG9lOLMbe;o?FF?{HWlKAa6 zDt~1G0O@qL&6{UYc}RdRl`$3_{slD(K|ihoUrG>9>AAJN1Uah_e4=FF^W+&#?OrPm zDg39yL2BA-x6Q_XJG zZ3SM|#iCm`-~WSC%Lt&4uBbxz5atgl)o)smIwkCUh(i-nr^Hohm(Wq}J9?`7HJ5)! z>qY5sBZX_^i(G=iTCyPataOZQOJC$wL+5oLX{u!Y{PTb*G;tQ(BiUv}(NZqDs*!?J zApM7mBGWe_^m0kuvR@|}XgJYNKCKKZac2ywHF+DTwa!!1<;ZSrgxn~5d}TX{ZGloi zWTY%Q2USW-606@tO-MzCzgF=uVVGpGS(rHYuy_gUIYoQ<+S8SYB5I%pr}=c(#Ls4hfjc3HHo5uF4TN z@Pf+8?OJRkwa)68@%z|ip*Iy*)XQw+@;Yg5g^`C#J6b4B3N!A%tw?XY-0YCdX9e4L zXd!~bq~-9f&FlbaX){vYy%i8ga>l62DBNszf!(yxuIH-mkujGhM2RHJ?tRp_G|%nZ zfzk_{(Hf$eswjeSDoztfEQn|`gESP!3bT`}Jg8Z!uFdVJxek1UhALKVW-ef1^24Y=5YR8c%&+A*@c<@0|+=uGiCtj>@4Uboi{t!^I5)-H2wBren{&{p; zm%St3b*KhA64TS#XF~0`PU0==sN`qm6l)OY3MQ;eED!xhG2g#MpQOIYK7 zE=UtGR@U&yOjpWCq6i&#pB@UelhlLAY{^0$qtJq)FVo1z(S>y zYKjeyL12JMWdoe@gFmXEa1B5*DXloJvnPd9E68X$n-w>bLSDHm<5e$OHgme z*e5ZW@i|%~wrT+iN2&?LPPv)Qcp8j}>xTyd>V$vSQx_X<6e7 zdE-K_Es41W`69*Hj$>}X=GZAQ3^Mliv#G|6I8TWGaof0rcSm|H%ft0~+FRIViTwOK5L}|=! z+U_A*V^xXvd4_h9vJ8{h0SX%ao4#u?t{v}rfz@(FttQ^$E50lVcBgu|knSY6R9D^- z!RLr=w>gDQm`huC={nn}H$O4{+@FL%`Og!=Pd<#+%Phc=^YN;GWaRw zgr`cUDP-yM3Rj0uO1jJIpSwI`u;UO%hzOTz1SqrTmxBRXorrMr(Ht9LBO$XYygwXK zr#PxIorJ|Jz{7c+JbDi{sjL`Vq0Jq%V0AT#)M`snryT8cMJji0+`gopf@uA5^C;+ZL3RmIyYgGuJppS-G2Nt0%wWKP&8!6~kraYMbEn>{= z8%+X^nCkLdqzaDfK8wK;SsoSzP}ha$ASuWeM`Z1Kof8eA{tlmF{iN1rRaoX4oYllksp}uAI@ByL)C^+Aaf>rOaYUt39KA z{C3nEsF&kp)Ml;Y^Y#-t0pXyT3;Fn(9wojVbu8Q)?xfrIB7;fBYAHZNQjexh&IHG_ zgpNQ%BNvh8$<4GtUUfD5GtgL;TL`W7n{QpjaeVwrZX&KU3b`2OFszKka7s5j)21k!RIUt{0~S*(lq{2<3B=4om=NXvP)k9G0lZ>5M@ zIm{Brktad3lx@raX-l65%fuL6`E>|M?#=r27l}hepjY*VHe;1$?PHitQtJqVp1gqh zLL5e?QnppNGjL5Vy?XgB2d-?yqx=Zjp2G!>4kNA@ek(;}5j-X7L$OuW`@{O=L|&RYFXS zqW$2@5g=~0Ist1YgJC?@)D6@R=Th|`+EERygsn0Zo?F$Go7t}7_lMJ+st)|MCK<)c z$THoa=y{N+VW;g@jPQv0*+Qv>7TBc(OfTAF8Age9wMzaEYck@K{VD)}6rin{*X%Tp z3$3crIq33^!ByzC)tDd|>T#_f>EPc!hE0iTBt_3`b4n$M`K}Mxr^Cz@|G0&9}9kbtQ(KbfV~djl+u7Un!sA{z>JSbop^y4@<-E zK6|q{X|KYfWR?l@qfgV_91c!sXdH4!jnq5X4*wmB5e1d=lo&85;Zm+;V;+K!SH;8U z2;k)^Gr~kg;%F&bC}(;9Xfk=da2es0Gm}S?W0^ zM7(!{2m2Hi>PM^xRsjLS3h2gqlkl?~D!6{J(BsjFnVCymU`5zTDY&dzkP95IJJqx> zGbn|b;}Ofm{*u&Us_vdHtb2VeTLtSRl#Zt>P#Rmq6i{YO>eFJZRe8T=5S~&rs~mqo zoRxwpgWY&5CQ_C>^ge@tVUq1P7A0%eOCYA!9POYx#x}LQ$?4z6xHMDy+_HAV(M@Wo zX!rWu&UoMRo4?$tMRaFONav4X_nusphxlXakv7F(ZiDG@7IERv(syMHKBoH}Eso7j z&JydaFNr<1aYE%B3SO%2t?6`sDk}j1(x2v~43coEpdN~vtkHDeunXaPjr|oGT#dxV z1(1+)o%bgK^2de$_90+fS8X(P9?!T_Z2%zu#~E_ym(>dDi4HhuEnnsTCd+YMqnE_< zrUhYs;$@7ab|Gv!-&xk6Cl97C3nA6aUi3G7ZOgfR!Y~x}Roe~zyqi~4t56;7Tob-_ zVl{c}u#7iJ`$`L%yq(Z5JnyNe*8nmQeD$5X7^AAC_E>Js?n={MiXd2TcsD;2P;+-G zdrL83JiP;;c!#U=9P_Tj!;9tyQ#0~x8zc=T8;LViaE26d@H~2LqqaRKjPVO%Ii_z- znkw0ejIK?#&Fz%8bo#~`&F|OE%G+58g?^FMN87B4`)WLSaJfg#Fo|}xM^iLan3>5? z|IX!==fQey^`!W3$oa(|%c-s9LW0w=)!S*1tUiRhq~mDDJoHh;qzY+M8jH9f%06P` z)WoByCsL-13+nB5$*t4?#XtyF1W zcF=G8g%vhzcBz^jt?230Vs`wtJR-eGMXS?xHzjdP3a3=9$FL`rYrW&7#$>ugpSDG{ zmX>!95VtOyBJYEfg*@gkLk$Q#6X|ljBqmdOp!`XQ5GU1jjeGPw25KmtaB)%ZGQdH)sd(w%4!2xR zFPc@I*8b9bP>V<0DcdmMwuVn-EI1}lC^5q>(LAr1#5+H(VnSnA>Zn>j7jDt-EiyS) zxY`$YbNH|cz}pKK7)dU=`=!Tb{nSjp9&#X>%CZb>j5; zjVY8-%$h-KD-Cn-15>&<3h^aciy4=xL8h+;rMeqt>aUpMavtQJ-;UVo7?;quSp&zI z>vRY6&Og{oSBA(f7*wkD93lP`ty{t##6*o{MboT7FX||_2jeF)oy9t_)q+( zHae9=X*2Ttk+|vizf;e(Rb_1GTLQ|sS+}E_N|n~?LYM7PW&7fMc}lk3H^;T*3BIrq zPCMV1A1v7>@v0XB6-%r-Ia!mc)J?WKx?)b|>ur=EDd(b=V4~CV5a=Ic;{u(q03zy8 zDnMFn(~VhD6(-QG^<4&5(}ZEa#EXXG>Seba)*vv?a3M@4H>1_|14#On#`8q!&0O#A z` z>`;W!f+>GzqE8Iz(Dz+Qoi1ychwRUX)Ef*$&~(qBn5_#s|7TeDki@c7i5y&5z@Rhn zeS+emMvOPB{qU#cBk6;Xvl!j)|D45NCr0|)KCc*0KXbw)$>*Lpq5A`%m3OCoP&Nfk zt?8B#V8<1$3DL&+8ZQ$xhp|5S-?k%_6!@1Nk+daq^71dK-_s>M zh(O(^E+WXa4eYu#6Chuu5F9;IoPx9 z!PC*RPLg*jy!lS=lZy+1-_K^dq`u@?Y;;nji<`9qin~0h{Qp8)M#c10Dm!dbqB`TpEWJMV;9#@(#l`F ztwL7dR=`@2BZyhqUo#E~LvGNcmtab9^QahyA5(VP^N?}%JYfe0Y07LEF_e z7qsl7mK>X!*2#Hi2a6rHlzcHiZ(g)<$H>ub|gfjBraIMhF{P6mdZ` z?Ra4$z|8hEbIG`g(yYP`uW0zwL76g$UKO<-M(#;G(g!_T;*S?QqV=V$fUW)FTj#d- z+aM9cWQ|e0f{tnRIP;WY8y8~_ee`Sjj0#ykhauZZOCQ>r>a`7Lo~UeV*}CzzT=XsD zbU~N>+ME76Prj=9%fBf%5kE?%vP#0v^$-x_7Y0FnXQ0%;7;%qj!N5+M&V;%cN>vh=swrx!_r6Sw{|4A1ugfOPS4DEx3_I2t_R zWPFWFip7emE-K4hPlYRLzA~-C=B9JLRjnDV8bx`uh7>uA%=9Ti?0GkS!nV9S^;=W= zJ??{z-Ahcl#`T%X&A`rU=t%m6D3&pCa16%9(aBuFriz)8ranKy znMkq68#jMXekyv%_Uf9;WNWHrvRLbNx+0D`92Ue9rSY6PIlH2`1gpr{lA}} z&4uG6ii^~?>>1W6voIneH>6ZWfVKtVCo{T=%YzzP$xwU3(l<00J37E3S|hKtRznJh z@`$i46DMj+1g=zQRd?-3%4)22cM-LqqL6-TU6A3V=RlbR4;#6j&XtqcR-6ct+uva9 z@?Uy!!gxI1j>rZ7{3jr%~_EHi=;*Y(HeOwT(E`r6Kh ztKPl8Zv(CSm0sIyB{YI$wuf-$L>{x$vDlyRv4&P>aD*~Wo(M73pt=!$wjN56jrn&#^VXGZ&xx4ad&YuAG}X07w_<%Bwm}`va5(^&ZX8y!koc-5w~!TCe}NKk$5>8 zsb=1MZPKTPM2(1^^!{%OUPB*CP+!FHHGc?Ye4~a$AGEbaA(6tXskh2%v^*l8@4?@) zb&Fe639iL@olw+GH|p&BwE1bznpCFl+3H!N)vf2yXf7N2?h z6zT4ZDmQ}kzZd5RIJW$Ky`Pi++4nsuVY^hZrFZw+JNv-=)_wW+kM~z=L^3VzqE`Xd2Ay+ekj(Y+e3204fZ*=uJp;6m?)ZTn@zOI5Y)Sp+m}oI|7GpYDp=@ z19dQjM?<5hY#IPN^@gDN3mtQf2@_$7n5@L3Y&~WGsaqz7f67s zXyj&83`_Y*oh$}eIRYG6V6JG+%1OGtMv%Y5vWv?pi6kHuy6L-G%c~VGm_<=PZ82C% zZ<>HhS|3bYkIHkeR>?1{;F@hyJgaEAT~5RYX;2udBebq4JQI^CRFQq|9fqO=p3?n( z5b^2&OC7s3QCc5DxqM|!d#h6Jd1sF>0!g2!y<&c6!Ea^#`GV3m)=eqHNhVioPm7DS z5+tO;S!WqNMh+X3QkiGCf+5hOS-&J>_avILqGV6d>z^l3ZgH}p&@_X^4m~zm+Z4;I z$nilZM)F^Zb!xVfaS!4{7q2`$ zaoc{WN*-pY|ARcwAtE3m5DTrpmCZ7H^S6Y^IDmQI)2PMkutSwp%GEb#xad+n)gK83 z!KxEa-trC;KMnGOmL3A3>!X;Y#@^hewPmEy$2GI^4{LE3hPw@LV$E=5Bv!FpCvtTi zObIaXaVBQ>9vK?ygWD%uhj$F*8YWAhtT+?Rhn=JTvo%;6+!`xjhM$PY&f-eX3bW= z6lgguXY}{1)K+v2qA9Ewh5j0hU6_Q9*w}iP7+ud@dYESZ1{2s-E{e~$`~^rmcH>^l zSbAt&H`7vtS+Lh}GAFl2%g8aZP~p`PXD#N{45!KnbQe@EfVo44dq7jK8pYO`&ov)E2IaD%10_m4?C4ZrX;oh&xx+f zu?YF6Sgz6Bw#PjiK~u(2$Luhe06;V@?u=b81(H{HxtZ9AG&)BWQ1Kv|8@~<3qZn&E zYxLeZZt7W4-m|Cv;iHcG3zU}r*VXqg^s!4KKg&|`Ml|^CHQ{5RKG zvs$dGR*g!r!b~8Q+Df}t^6gs7rh~9KEwEO5VfCex-7ybG|D={mn}XGbJQg&Yq8SSS zVDCczj+1<55)XzZgTskX@S#MC`-DX0F=iC%D79GOI&IIWje6kCf;E*+%jn33d7KlS z!z%|Wz77F0%4>cMm+P1jmP^0XDL5O_fG2FS*$X!iVYp^{r_S2np61*1GRJe6MNPh# z1?78|w;O9kC)qxEpG=dy=Dy2J*XQa-GkTNBu6>i_&AAnY@d#wS%sk~CKzWvR8~C0G z0O0r>-A~J(PvxRoBNK9&0m5Ko5hM_U?cFMw|C=xyRp&@_jodV?k2I-t6yugDsKwve zKIR(@joecRk7dS~rfRYS)no`0u4ebNeU#&9J^WVr#=FzubTpiRew=1e@w~*TIdx&{ z{awvLZp+HbUlwSYNy~TKg1D0E{sqrr%8mi7x_Pa0!JNP>P9J^nv^-pUrLxulc3mj^ zukic;_XvI#D4nd4#h8PhN+D6C#qJ3G#*6~vv3^7^VE|2yF{@_q*8afv1!`{49x!_# z0M(&3F?QtpNpTwi*2DP-HL%b&-s~eqeE#S!p#_LuQx5UGK#%EVM=7E&_Ovc)PmnZ0 z^VImyn#o@u*MR@ljKtUe9UnH)kIyu;a@irxm^BdZ5|T40LR9S^g5QDxVwa=!(R;*R z(0&igwf66AeNCv*OoS!+5}g@B?p5uS`~JndjW=Ooz;7mZMU&$E3%AeZ`*0jQMHtu~j=s2h`W889S)z>vGZ&-l>;%uQ1XLy6qb-WGS! z=1(h^yGMyKO0?W8>FOd})q#}mh{~v0J2$n)Rj*A07~ETJ^2+Ma^;qbEcFyDT_57?R%T zjGC>FRLC~`OOXY9m`W(Bb%sOLIs-XVOMFIQgNaXEP zEK#SH8Epr}IL^K(;kc1Z(!XEDWN&*&_wBbE7Rq1f$+Lq*pDULd9O?}Qi`~`dcd~q? zf4BMzAy{n=Y@f4=r-4L`iKppMNnhAI#Ls2{K&{}W7VYFQJWjxDr>1$y5O@fa4>XyE zY;+@;Ai7TwaU6E^lP8gCj||~6VttH}d8=aQ5vSm%IF;3-QtNtF1HtUd)BPHd#+0?m z8s{E|-<0qXmQyRvHz<}gNhqhIhe@Z2gqu)UL|i2h`fDZQADAN*QwB z>J0|3Vs78rb>{N=rBT>{BH0e#u0;in^JD3PtR(;)KESjMNpr6Beaj#j1y(qdEVHKZ zB0CENECy0tF_MyW0UXXvthcrVpSf5?e=yYoF!vGXw=#=fNxlEk{EPoFs7f`{61(<@ z+1W`-c(scmj3%qGMYfjGi^$wSLoSX8E3Evwum~loZR;+6fSC^%XE! z-W=z)pxJNZ0)%Sq_D12I`q9?Fbupo%nx+g@>yap#x+-wt4kBdqe#)`6`kSe=TF-kx z3_skcUfTr6+LmA0)IW5Yt1ybaFkG*2h{ci?qXDY=Gn60bA#P+d=J$x=_icen)>9?# zo61hP^8<<2)jsdOI^k&rwSIxl)DO{JgDd?A7R1IDRl#rjH>s&=BhgK)J~{LENrkE_ zyy2Sd* zRq3uLjSKz6Gpl9fDLJX@SXkL(AJ?%;N%i8di{q+-o8pt{W?xuska+2aUu*fBkZU*L z^O+umb;<9yp&gh)E^mi8o0~Fh004ozs;DAW3_%c#XGjXe29VuLW>w5x5{Wn=HNtO{ zUcac4A(-1FuDzGkIP|=XuToajUj$-NlesU%&{GMi3O#R@%^2sbbt zz({aWE7+_#^4pbmap!{(@ozENe~?>EJ*L$|^3X%?3X>Xz-FU569Srr6jdfh8mMaY@ zeYiYg{Tudv?J%$Rmf7l4+T~7INKT{9$2O12l(kpW4w9FdQ{2t{zjT`4<&4I6WW|#L zxcB*0W1?fIrth^qvXqU_M>(MdRTsh=E0{f44xdugq3WUWHQ(*}sAMo-I@aWLaHq#g z1dPR3OW5Dd>@0%Uut=Jtl=62z7C5;2`*<8J2IUNht>@aD#_nq216i;2%RVH2X%GP7;XrWzv(OST;YPB(D<;N8>y=IxGeu~zX{G8hW@z>e zfKB=VXoM{mY^lKX&86dBkOT}D|4C6zQj749AjuIh&-`7^{Hj8XhJvB+roZTtzF(OT zp+1aSR)%+gdA3z?nqGf*OFXK%L-qs9W?_KZTMhT8b zQWo1&owdrwEpRO5a0X#r(6-Pk6W>7tW87~PHrP7ZOD&0G#)nZLDGh}tge0ZJCr=8P zr!yh_WOw3o@wC^iX?_ztLj1>~{~)(O7^e?4pfd}-DQI|fLh{fdWk~76a0)_!qd{i~ z9`gC`>hsH5ld`Rs)tyckUBMm8f9H0UwT2djHxukG3Q~YT1wUMMVsTMcA*|_*ie^0 zBz-Fyi1&udptt8vewaygXZQ-NG*iUe6bP0{9_SB%+a{x1RVX) zyfK>mt;@|9NLs`F_@k}*Kd90C79~x>m*=;CyP^PaNkP%-6%CfF>K_k1inyPxQsW;u%AbQj*EHPKR+TCNOUS{YD>g#Q& z?~&%xJvs012VK&I?*q`GKS`<2D#SD>NZPRJNr2c&Sm>YxrORBcgQnZp!ga$_?bk1Y zZ0*ycX?}CH7JR74f0bcJA-u=4wCTOEEJ2g6etN~iz~**rxx~#QQ{U3aj;W%#1cV{H zqjP2}HV@2Ft-P|wbY`vA3+2rI{mX$Sv5)Lbp>(Dy$e6-MLyv#9t#aB|wmjp!99%km zMIm9##M&*F`=CjI9+OuFpG6|&_1-W2uuC&uS$NH_U#eS5fIT1g>I2tDe5mQ|yXb06 zPDWYu%oJv!1Z7HAd#lT{PF&kmCfYo$zFN;XHsg4@i@fh}%Me1t2`x?NArB~_#mdTj z^eyA!SBWl&nie3X_sthn?q@m97_KVcm=<;Bbj=Z%288?gw_r9FM?Pqr zSeXzH3!=Fo)JH$+45^;uaLxu(Z+joVL@pe1|B?sl5^)+4iz>fsBkmU_*Q0Ghs_%rP zP-?kO4SPuI-&W~>=UouxDv)DMUsPV#iVv#6FHh?FQzaUT7(e`BtxTI9`e@t#~k2H?734I>{_&kB;u2 z-PX7+J{HFi(b@Y8+|XlFScZ_x;&#;UnU)V369x#&vun`F>2Q2WF6sTYkx=4JsyQSs zt1x>uDWX%4Cx`k?t09wb?@B@J=k)JcDn7S5lDkHCl~fh}jbx7bMvh;Sf#dK+><>+C zT;P6bM-X8%Qc)2zP9m=I@;_oKQkWW4pHr!Uv;w@^oQ#;X>HJ6qI|bXZU7*J^Id*O; zpJ5+iwEctJ68>bHo*|uH=uO5st)Uk(rcej@FNc&q7}nMQ zGpGLDgq{--VQ-#RdM+C}H1)S`A@iy!n30^vjdqW2cA4@k%hVL}^zV4>)~iJTK(-HVtk4oILG=G=gf#Y@iessKhNZlDl!A zw<`N)(NLh^gm7P&X;JxO%?@|Ox~6U%LirJ)EaK&{)i_O-jLz2{xc3I)z89p!z2gD2 z`(vuK4l(o}%AML0DR<@YSnRH-DFnBe-@S{;FZ%v&M1!W-4b#CDsjRD*s99p@UeaBp zw+W#s0?r9ZpxWpGWX1LUnDuOoUI!!!j3GoUk7l##cuPsGHp(FUs_(5yrTm2RwmH8QffHW5ym4 z;O(mLM^2ic*UP`3KRt7q6+Lzw9xd&aTTTxh#H>3S!^lFO`&71uwyq0dGz%jT5qd75 zMkmn!B#J%x&&2PJ%M9j9MRdbbYPZjg@t3pQpQ$_15>eRdW2A~w)KZj{Hj90$ zLUa-R|FNKYByw3hEXCE${fdC9+8buWYrxe6g`1I|KR*rnG!iDF!GLI>1XNHQc}~Vh z^FI;DymEs;xG;`VFnx@CqQSSq0dpkeU^Do~()ue%OOm?~u19;@6Km2BDw;@A@Hhjf z3qe6;2yF6vt2?42uFk-%?QY>>t93GT18ixeP?-Ck+CYP(7LjS)8$l4Cc$ia4{gsXl z8>*I*8n>Q-{YJ2Atg9z8F!L}|bgDk6)Xmt=Zc%fgKdGcZUFuDZ90hC?`+OrR*!9$=OI~TQ8RUV{o324(Wx*f921{DmT6RF9I!1V z{7!#j-XJ#CZT4Hy)ymLoy>h-|YhV#dI5}6TsF8FoT_@r_h2wX2)!Cfuq1PL)UKns1 z4n4{s-uMJ&r!z1tqmfpza2p`1D-TO;?*QL^MfK+w$xqKO%Jw`r&WfXRTpwR)n*8Oj z70_N8Y}YFHKBt@g5P7>J06)B#azP6HYFo@b{-*6ty+uYncIB!2e1esKe_PAAdhUYjoeq6v_rvbujwxt|~C=6Q5j3 z0da!@vHySUD%);hX0X~U~(L1NNFfz_AkFR9A$E6wlfmZ%fEf5ebZe0@v& zLF~Qzkv@Mh9j#l#Mj&LQ>T&o*FJe6S-;NcwOc~= zrUO{fB}wQ%3bdvi#CdWL=i!-jG=2IyI{4c@IAG{!7N;T#CsmI3>n@o7pyq>Q2@`cd z=ru373n9PiI~`~Z^$9;#|6354*pq>jhhkynaMX&?%U;<*Wj$f#@u#N&JD~#^7J@~2 zf7Bq70Gp{~PK%_yV;tj+JGA)^ReHnq+tY)gVz16;`EIQgN5>$Jpk0OE0=Xyvr$o3Y zx4li&!q45m%y0mz=5QjN3L_o{8Z{p$qqqfoNwJrf!$%EAP2NJKg;8&8qAD}y7;fg# z$)lew_yzg;4}RL*lTI4o<*lOIpAsUTWMZZM`&Q^1_gENC(+zr?(nC16{H%jzJ-W6$ zXLEnYKXOyrjx^;-ng06G%Q$EdWM_Lw(8R0UV)xauQ2V%UnB&g~I zquz@>jwYW9CIGVcx&ST-ZDYO_R<<7%AK?GM>J8jN&!JA!eaLEIFRzMWm8r`x66s{V z(`f7BKEqa~%z|t;$y`E~WMs99S@poPRM9AOXQ#y22oaA#3%t>^*_&Y%a^uj9aUsRU z%iZg2@zRkG$7?VcA1S$-E;XxKv>S_oh?h-E-+Q2>Bb zU`5x8aq+uA)2cpc@h;zJ{eeJJY@~OW6?H;rxbFm%Af0+NE_WeWrL5m#io1v`w554P$AyO*8b>4WWnzxiP zYtK?=n+==X#~p~FP>GTYABND1y!!)kvJSj6e(fu*k+_hRKOB)W(D|1*}f~A=%V{I?7&?I&ceQ!Gt-qS8S^mjzB=}S*s97X7_ETx9|Jy)pde$nHX<-C9< zdQW!Rro{p{0E0tOW#A8HJs(!DI41gqWsEH$0R-19Y?1h=mXEro?CtxDE{XxNl#j!) zlQb{65N0p^1_kWhBKvNB*9*tLYwq;ZR}rhD#W;7r%1WJl6uIWPqYi_>29#WAI`&Z-;>2b-B^?&*K}|jFzsk4Re;bWTiaB=W zc$(-j%>!JyoHnnTe9!YvH-#$|{*wyh4z-Dttlj?D<@(KEtAjvM!t*oc>_d9C2DY## zyO$YEw@(T!3(rQEv#}LO1z+L^mv35Jen|Cac&Cn%NPQNY=}%&efV(Cm z+D17XGQYJoevfRhtb0+dX!C}7o)}#;d6p`{GM{V??MS#?9fYi(IMV^fFTAC z@zO-%20##H?t6(9JWrL5y>Cwi4R>IEW*wz@uk8Xm6v;aiAkgay>!Y96vpSr8)T@7B z2r$piN%!%k5J>CxyRs)8;28neD->zn;}vmJ^R)Vn2Ugrj+I)pJBvyjISrcBy~sx3&y`!v{Wptkk(9Kv60n6%}sV> z#)$8%^u?URsvQEm%eAv6zA=k6vla{_(wMNF_sKtGtF<<0ILXPq??Ug62VTqm*wUI* z)W#$F`ffzFOdrI-sBD1tg|*`*YUs-Qvl#Ze3g{o?rqbgGbvNkr?CxCZ&CliHEluSt zv^|jC)L-k)aY~uPq-m(MYVwE(wZL}ZU(xk<-I@%O9ejo>wLr=&8b-oCHP7I+`t#6< zCVA%(x{Jpj;I&5UmWbujU*#YBbRj>1JP%PAopfRxVxNcsx+sBwaT4_W%tN^pIp&aa zqyKW8bg)da-dHBhGfK<4Z>D@6bUy#epnCe-bt>)ohr;vkzdPp-85w$i|2md5ozXPh zE^>EYwsM=(ie}mG^>$6;Vo#^wVt_j&g9URMG@v1Z*0x0|M^p9h&3zfG5H6lZOtD(S zgG_?4rvTF?@_^OZ!6`YKOirvn&P(J_?uz!2n7!#*r^}oj`pzATnVugWVjB%(y>V(9Cxt(Td{J4f z>OgS&<;`(U~(jn9G99v_T2#V*-Q11f@c2ckER%VNx0geOM%S3*8Y~ zC`JX%X*G=m`U+K1b-=|*fAncp+?8t^<%@4?EayhH(&V=@iUGE*MFqf`iaP% zy^kGlMd(vV{cY|MrG5dI+SfWn+gX`jQ!q=)k_J~}9?U}hxm`m_S~|iNLU`RK0~_Hs zOVG%iO_TQxG-Ibz^NsX3mSu1b!&g>uRA1RYn#Hdn);B?tf^XswxHGnA)?|EE zNU;sycr=d-ve*yYI_Y$8yEwf);tqPte82iV4)6kXJ>ZXhMYtL)T~zUQ44|a>vF(#- zJEVv#x?)hpY%!ODB=(O9UZM%l`^uKi*Js8-%?@ejYOFT*hN1$EbgvtXzTgt)`{_1r z%-pk(sk((jg*x69UbqugL)F}K&!=bJ+xmyv*!po;*n|&CsbkHN%f9vtwtbw$j!2%k z5ThV?46QY_;#X@9zdQW=(*(R$?6cAH%xpOPi>SQdO*AgDrbYNguhWy3P;n7yvl6+N z)rnI!5LLMT@U8B86}5g6i@I;hk2?*uEDM&1z|u=jd6h--4d^!aDiejjN`<^cSyKrx z>I$rp)pb+=vXEuBk^@0=OsVr+;vie}B54!CGLSCUD_s?4%L3`bjtj-2mS+dFy*Ty>UKg}o1b(fno9Z;R@cb#~`!4d=bxupYMC0R*EPX`F;*Wt-CIC~*n){HQMwMMDXMcQN6JO_*Ud=37 zty(~U>vD>+OA7V*$4`qP1tgu*-}{}?_X)UgoxfI?_jY`SAIxU4OL+!k5M!T>r$Mp- zxt5(_{D$OE7cjKgjIK~eGt#$Tkj&Ub$2}=ii5&OnALN!|Yqm{|=QJZLmVSOwiFfga6kstn#o^MLqp;ge+_z+#sG{YHi}&~YrF(Z&{3o5>>K=h{f3OeT z`^J)GdLO99i05=a!O>i{O zzgk<Yr1>xTnEmGRis$vpYzSCX`Z@!o)*@L!2953_}eR_B5748PjZX zTOxNU{UfmkI2U6e(8UYc(JyFobU&n_-o!VZ*lAC$n$y{(#o^>98`sShWss33#0G{$ zJN2h^`}6P{dpf^$p!Iwa=IpD>8lRyVih$dEU$-+OP<-gbPO%W+SX5z~;-Ub%wCOL3 zm_EDly)Ds*h_%peIw~dW2EGqZYhc0*1{xj2tBxqq^>(Qr_?S<>Sx6If zHOv|7wYffN9s!1xk^}1M>Y}#!^0P_V%-cKRV9_TLLAbKDQPk*YnGMrC4yQOy1qqPA zY>sn^1a%_nft1uGwxuWE`7V7O*sZN%W3MmCi9Puba_g8!KOyUbdYX3yjnc1>9-5E` z3#fbhB0{Rk6{)rvu&8rP?Bci@{;#3?t9ER*Sj&Ved1B(smFMpBI{o>mNjfR)4=(gj zieV+uwqieXqsO%4-1%c_&#{=H_KIEqng2qC<@R5b%2(ZI35Cs#Q+}S-L(!PLm?l&d zcrpPF9^$ktOpYYf3(=SO zf!JYBI;SOkb=qd7pYdhllQ|Q~?Yk_dpWnPHGe_QRhynGT3Nzk{W&@@Nj&RK0)ZL=_ z`0VH{bi{btnE9Q4T8$}o82wdBnACAbS)Vxndy)l5l9R- z94Z=UyK6^9C5lFpfJhVx_Kz3&t0?eRg)sh` z0>+YqE1&$o(DF(4vO@;C6FlTR{|t$6(K+M(IsM1w|$;ahXMP=2mC3>HLG-3gJ<=2{NWo%eShD*52jJlW0TA z*u8yzoUXP}CjlPpy{>7-y~n|2Jj-OD%8H4mMro_bSI-ujOoPl402?LCGBa&h;OQ2| zgK;MpB}XGM z*Dgr`_y49o*De*USNE=oE5yRcY2Li#X3F2xNj#nprE=Kzx97#SCmDwoj9rKt_9JIu z4m`vX;jE;J0M@xKD0_gjbo&TxRj3&bxXWy9545ADx^}K;*D)wo<


Qrslzag>jK%0YdSR450fYMl@Q4nFGTQSj69)b}(jra2tvktutAMfh+1W-iCr^Z67GY%AwGo&n>_=dky1pKd zlfhppDiyuqI`5HyN6YoP8Ki0*cu*BHK8Ls)TSY<+wvBmQX@cY~+50Bo(uyFz1ia&&ZSoyvv3h?RoB6X8KV~;i{1CNAFB`i zFBp|9^7%i|dxu>wTRnCBHS_Zy)|tt?0A#B%38fIa8q)%nQHWL0Ni2JADLf6@E0q^Q z>70jy#cBs}VVV3ej{$CY?^|>VP*~g17l@?sSz&n5y9NaOeMc3+6!Uk_#@D_z+{Z5X zlM#d9JfdB*nfZ*e9XE&ckfdtsL;v+&Myn*=mE-IZd0YR|p3LB2KjY3}KTp%;l1gR@~Sy_nnN|}OrWkI#4ORL znK|L0EIJSL?d_n+<*8uYSouv3&TscnW-={vF&h{Y#k5L;_w-cHt9sqJf^Jl zQ1#X=EUC_Kd-~DurY1pycJ9O5P{rP>5(7;9;CzVziFVWA@pM~0R$m(;Zqh@YNZ@;c z&i)C_SEwXre2L(>(fBD>?0KgCODOOU$b;jy0Ae1s%sF5BTS1XF+(jUy@%#w{c9Xmvs<=MrRx{ zZA34QKZ@H80#Hyv(HI3cp~MG|pBRGwb_OI#-m5f|zYfzfw$vxd6M9Ycej$g$i8(=d z;6Ut-xV^$BJ+^7TvBbW~#0xq%tp*oy4;Y^eYTw@L+G<} zoz@&le%(J8Jxw#*`XbwWBrMZrS6fN>GuZ6@eVv!xvDfmHPH}$G9{D-aQzPmUma|1k zLdxT_zVu~Ec$+N*nhKRw=3$FqiQljii;j-Rr2#l=SV^Om;t%D|nYe`i-=Qe-B;Tc~ zqTVRjR@YJ%$jLETV4I1q>OZV0+g~D`E;}B=uyaDKem(T+A>W(6nvmBznG8CMBJ0Gp z0NqafFF^f*A2Y)NaOWTAao4y4cqE zq-Y(Yd>r7fw4{Zw{RfPSX{N0D8O_dg5*g>UY|29Zh*yd4HdzOl)_rtkI$KhEh2nG! zovyB5ol9r}Cy6&FrvH8j(q{H-M9zW$k#ti<`rst5?GYi&9UpBXLPh!!(054@F2a!*1ssPtIk?ekm5)CnXIG)0-%chY$s7H6~@guc*>2@Ad;P;HQ3cE0(0lg@ZTtY%HAjB}@CC zxW|I%d)Sv)AEx@mm9Z!1SOwzw`06Th*JNiU@3yh zQP2piX@Q4$Zl;On6Bi}tXM||7u_=yiwy7ndhS_XmKTh7o!42Fg3vI`x zE6D_wywk9p>3{`{@Wl@7ow4;aDChg;)5BRT3Ua1GOpq*BW{oUppvH;Rse+RSBLGEN zd7r)a&7=!`ANvNoS-!DgY!XWKJi|0LH2Iij(^M@+z>b$kex7^8L^h#+aZ3c)aL~tx zQ13XFdb`lA6*&q3{Ac{mn?t{fIBH%j4?kji$f#`=-0nS>kkczj?b5YvUFqc{Z~UPS zzXtO6=;$^bZz_Dg08Px)g%y%4`jC&upzH^XQ=4Sb|6_M6CS=wHJJmPVBPE-8ZJK#2 zMf(Y}I|!A0ps4{T_@PP~Rn*v`Bg)hT?!q1w00B!mB2Kr%xb@QwkoMecHdCA)G4)XAh&d^9zqwF0wE3e8^*<1 z+dwr|bi4|=>@!V+Uyzsa$Zt70x4yEu21Fqth;rA^MIJS!N|>*Kp`}@2>`KQ>H=X6a zWPFii_zTy#u7u3xb84Z(*d4uuCg&GugOZz@Y>sVlB%>2?Pm&A@p0Y{qbcdY0{v_vF zY7k8_StZDs78FCWlF2TIjmks`n7m>x7>zNCNvH?Zoh*+Jj3uGt18Uh9tw8{;_r?Z;POfMpp{TJcaHFC<92=;@`{E+z@ z&rcU;48;O9B--t^0070lN-ni4_q)0sq*e8xegiL9={}cDTOSe!-62LV!1~6-;b~7E z{^}+|#q#;_DA8)ha@Gk9CGYQGdn*63QV?F~I4@rbwr)c&o0HgAf*+Fl$NFsyI zh5wCgZY_uj;DskUF}=pYwfOaGmL z6NbGRI(~*J24kbD+ndeh!VV#quWh{bfVB0Z{HdTsBDx0HoF(XBgDhRAyu3jzP?NVQ zo?Cf@hrh)%FssQt@8^E?Z5V-tmq^+3>f54KSAG;GqH)qgIp$s?SC_ zRPL}#Yo$HWhSNrPHs(6zA>WGv*clIQqXR>{-*+UlV|V+-^xMa!_Z{TL=Uyou!!M}3 z>=Z*}9u;1HefrD06Hb~9o6Anx1tqgdFIGVhR0oREv zcYl$WLX)j%^^_fLEMW8(XS_^d8S1Hx4rd5GZ1g7FIMjdr^*W1?=YWNoo{@Ng(gV&z%Ax`Q4v22eXd4ks=+_YK?mV)sICPG}8;3X$rO;DJ_w) zqiM8Ii82V0E`AQa@R!TkGHsPg|Pb1YhjjvK2k89Rb-Jsw{gZ-0ff`V%qdUnj_!gP;7 zGxhuQvJ5efygc3SBABdm5$X{i53*dInwo-1)qHzSHc#*y0l4%C8{?GO>W1Kc=vpbq z=!}IYE2B%c(j4rVaM8?gvkO`+?v?Z-r3Z!Jm*dF~`RCsr$hAJVps$#q;~{GG&$G06 zEX(Xs@)dFMc`ZCrr2&7PGR6Z&O=_mv$?Y`f4+4D>czc(p2`ED^anE=R2xCH;lTY_;D7r0c7puy732}{b^Ad~AS1-2^1 zOvWt<1vl2mMuaQP6}T=^JH}+wBj;aDo5;>G=o(3n)(!HOCbd`%LS2j|vsY3n(&1#L zP9>64-@@tUoVczG_de{Yy@?MU_B2;Lgp8*~$C8AdS{o_IQ-s_PQD#Y6z+&1RHpJ=>wmO zDV!jMoyo};Xl}8A3_dSo-8h^{DT~V5aWl*8ksF$)lAydAtDyjW*TVgyhe=t?uc+k%qB}5wF!CS7v9G?X3 zLY3BL_3b=wnYzTrQlIp`gnv-`^~BF~qQO+`3ql9I=BTIsn4@ZwA$|W&)2X2Dkn@L7>S}z{D@y!A!}U3riA?q z!VsT*o?rExa1q~#=3%0P?4;^n?ca^LGk}@{7lkFAHO3ww*)K42eqy}szYPxh!mKNJ zz0gqV0bN4Br#J-HdS`9?LRxB>pf);6rjlU)XAF8Q<&%|+Jfg{ock#`o`)KHnNg=pL zaPX}G=UgR@)Vm?LzR*;Bzb-5}H)(33BqE)=)Fcz?-)}goGV{J$+unD>SUG+G^W*ml<`gtq_dWJ zjk(?T_N(WVgUkn$kZv`T=Vx=a+$BT2Vn1GHbP~pK;YA6ewF@uD|0{& z6Xh&Lt{bTDsij>BV$yhpm*~W?@XAyteq@WS$d7e`+?xjAWc?o|xH+&D8{nRsbg2DT zA(nTTtWcTs1%|%`nuCVysy1nXb~B}{Y(?NIDvS>&*E?RZy*1ZY$eFna#t%x3PHbm( zA#Kkmzly=Rfg z=cf}faheM*1LYynI{{2736$>a+wfzXXJ1RuE^TT9otsT++58$#xU~=|v^w$1V8bo7 zOreq+EjTI}j}t1d!6q6_V#W9hl?FS`znV-=!_f?{SWR)#RHsJ6ut%ugU(nGzu}Uyz zQD~psfjDz@_hv<{^Xy{nX=|aVy!&GukAIzv8T+At>!+4CFDfX$Dw9QJQImdzP1ad@ zb`ubn1jnv?_99vs<0coTz!T1_A8lTZ1G{HU~|Hu;`) z0|O5Mo3+bjB|EyaGbum^ReUR*hGxh3A=motpuu#1SBMcEj^0919OA;C4{PsM@j`*j`jKGb&Amayn?RG*98+NN?OZgk)Rmx`~%qrObV2*suJs z-TZ`t8ilcLQ^IfD`_YPMz~J;%tuBhHa`ZL-Hw-Pz=0b#$vLE(NXVtf)DhQJiISDN_ zF10f+D|`HZ`U5f*F+f*-4RzLNP=JsybqjW9c$uSk$mhgd*V3<;$n#dGR5~c*s5X^; zaRJjB_lhT>3C*CbHKQ0P0oJ{oP&cMPnkWZp;9 zOhZQ@G;O5DdFtqBcJmg^m5KCUXR{6T4K-obLO0*0eDC>~In>bB7D(ZId^BG%vFhz zoZM;1ffe5$8OI?mRsc-Xz#%Q_cKy(sLVlgYKcGoGoHVTdCMx=3ao!HYL5|J`x)kGhhEf2st3qeG5J0M?oR z`InQKsg654|5%&hy4v+nbqh9o&72%!+MN#YJS3KLv(V~HeEqQ_;{0Zsi;&7A4K|)* zj-DLUT72vA_dhoJ?nas~8O3tNF0vU6oMYQ1?VqQZI9HLBA%H+C>IAB>sx8+VzGOYB z7>(U^ED2AHi)GSm#ACeK?9Fa9b_|>pi!C4OpKGPFv+nTOi=s@u_R9uc|0lUCt4pmf z(eGaZm%37|DOwxe+bi?XP7E%}@9f&RO#s~rdd%!Num+P5{8;w_!FB~PN0qx9O8L(9 zTg2+;NxlK{rGMT~W;mH@)iO1jn;Y=Xk~hL7A0#8oei?8QJgDF@EEI@o`Noy2$$}~6 zsx=>_%M#rB*eRdX{hu77mt-YZ!N(i^eZl<14~esJ(MaF&mfYwlCkD2G$w3-7eOut- zMR^R~IH$&eZ7w$UN`Dd#rigFoVwp)VEiuvDIb>y5G1iZfB#-7Q9iyl)}2X{f})z_kZh2o{6n*a6H`D9EVvvnECFyF*;*E%^~Yf3pQ19#-W z8dSy0nOo^&FT0(ec}vL9h<0ODBeTT^$q>_z1faMONYOXe$ZAN&Diy}mxZvpm#@?W= zd^<@{b`G_Y(y&bR7mmIk!|q@$X&@iUT7z*Gs?uH4@>)7J$QK$5AI!8iE*s0GCmv}9 z$(e&>%~Clpold%!3uIV6^hE0cn7VIJnaxO;AThwSWNN0_N&*Tkvl&=*`e56WXRv5? zyLo0`c=+blno1iM9+sUQ>XMv}wp8>5OBXnR9ruzxz38wuX&3%TnDB#9`p7$3<4p30 zV0r9&`Ug?!)~#aS>2=E`NFcS1by$L zHQ$%pa6`UflW!J*DPyyUCf#bNhCMwcjedfwSdhVt1xx@BE-W-9our_@$)E*+xaHfqS{(Do8MUQEz5TQKdkI$VC`e?Ivp4lh^sA@JiUR=?oQ`p!XQqO74a=U!zylQukG%WmM(8Ilb>3+hX*ZGU~m$Cg%K2{;=I%6{5 zL$>TxzI}$$r;_i2t7fZ1L_-JAix(fd- z6UL=N*Yt@ak6hd|YRB72TbxoS(WuvIfJ1;e?KQ5R@ssf*fo+;9c01HnaSd+HZ_>W_ zAC@j3MVr!o2uj<1`JdTe!Y)Qk8&t3fhrR;rT#@^)H|?AD?rplAZPmloIxJ8W=g(3` zR{b~^#`+h|BG%e}yAijFrEkN27us{(Yui=cLv-Nve_v^`a|_n3N^;pml6KFFp>T^% zfay|`c`2!Ub@5{nzN)m4Dd-Aq*SfiB9Q4KW#XFmV?)F@%qBd2OEc4<_d~U_3HDO_8 zc^VRD#A$1yd4X0_;Zc%*q?Keqd1rNwGOR+lDD`ke@KfNrHD|SAIbP0)(EC3J`XV&! z<}EH7f!wTQK9{Q6?ix%P728VWd+r(%!rnF%dH*1{Ksfc=WHm=GEbt{at-V9MH6@OU zwvJrN_8}+NVl7Ru$p}j=3(=8HTsE_N!TTe()IMI1aOi?>|Z%GWsG$A+#MouOYX`)WBvftrxWlb0!f}Z*-keqq)EL z^D6_7V~LF?4PTJ<_CHLcjUU|+=jsK>@~*I(Sw(~#4VvP;tP0aLz0ME#aTuLA)T^u8 ziP6{rUicqJXZ_dY--U6yyHjD*=x$ILFc=Mk(KQ&|C8=~bqq|#RGy>Ay4I)anfrz5= z^_kCKaNj>%uX8@9-j`cg&+l(i9Vd@9ONHvd`S)uzbXo#exoE@ zSx%0%qK7N)Q^qtUZPwt;dnU8sMhpx;Yz!%2d0#!qMd=VTA%eYgHc`$)GWpr-MnWlT z!YVn-@i@!nwUFiAr65h*VIMQFMq2Eu0a>mXFPWVJ#ad2rR8u1KTewlb@U@VKdO=T) zThh-}R~-iY<6b(F-+J4EuU!7ngCWJ>O%ropIEOp@!i~ z@aglxcR^3KGcaHS(I((3#l;M2n{C$Do3GCDm;2GFaDgL54coKfsvQk;X}jvYOEvk=VM==e|Nf=2XQ?qx=$}2(oc<)DT^FCmS;+kUr zy74cGs%dLu16KG)G3YH>a1tbR<1(A&b&`xE32{b~xg7zj1$0O<9QOO0Xs)=~yisO~ zHc}x0ib-(vUjj@@_b^W80%_&rXPi&*9XcwbA`3f+!2ktqNqP4&65NWP(^sk63f&n- z1}x3bMTHs4OPcM+v%d%Fs926v7VV2q7RuYQoZL&AN5o;yDUU)`^RcpxaYyI#IgR_q?8`4G-V2gA5veaw z;k$7@e_E;CDEci)8-MaF)(?T(UqC*23{vj9{lgYNi9g=aQ8{yV@0aabZOriar*{RO z*b!h5h84H+(?R-7;U}yd4UyFGgmVL5$B1Fl(33NPW=?^K<{g(m7MPh1Q!((vH!+C# zSdBy){)Eg}Z6u>;-8>C-4*|WH@zk$2Et4vyjR`K7{MYC0gn*RIz8dU>ifF;7Igj>^ zY3h7kzSnpEDQeWw1=b=LQ6A$4l5g)*DA7u^>{jxKi#n2}WEGyaRFRG-HbF5uEU}Kw zY>*G+sKX7EY)kQ>OgCVQLZ)^1E_lWMUY+oySdD3eKAl)dItS4yR>;fxf+Qy@?^1VR zO>Wg)CQpYxk&f)xo$_X%677eXgnaIm3j{zhl|WU9k%RX%m|7GOcVXUV*>>TGQ2Cxf zCYW~L*{)#hpu@clABRoG?bJ0J6x*7&w^K3mPx&yn($Om5cUZq0>S=y87&aO&5*xvZ zjoJNa6d7_W$$73>=Jr!da0yUMjQC6DDW2rZ75yjRG50g{?{2ve$VbqBmh)4(^4JYX zr{+we;E(Bc&cs;hQ{pP$01KFoII6M!iaVwxy8ek@vX|)##B8%Ol(2$xb1Y<`GDD@G z%k%qRQ4jpzjJOz82g(Ev7?f{kC(KM(^!3NflE^%E~VwwSqqQ#{4u!#FrTl{+8yV{4*_g#|IXwlz)6d3i{gI zpq<^0IDN(7qxO8w>2$MZC&aq= z@=WaU9`pn5f}${{YbKnnBYG|G;Mq5Sf&Eg`ba0Q2vuxLRbY%|@?{oRvdJ3jlsN9!3 zscQosro!B2=P`s!rYLq}>*+O8W$7E;g!U?=9j|D^7@_NU?PWGA+0dilw$}06c4YQn z+YPg>S2-E@l^EOU0*GFA2yc<^spwzY_>Ti#lY5@0}ol(`MR5iI3^s$wk)BFlhEwLU}Ui8zrr^=}(z-F7V3KS~sznT0y@cDNTy3~5twEqU|Vy0d|(_b4V zOj>m|=e{9bP2rq#K`2>u?*BsTj9R>)vj2H zZ({E*)kaOkcylgYs2ex}@)sT5o)_e}0*0^8J@_cjs6Mu^%{W%cykc@oIM?W2K_t@H z<}Y z9_26>$nE4sNP8cBkB;5wa<$K=7z+maKRI~%;p4?r0j|OL_RKAh&uy4HtDw(L5Ix*- zU)g{-WCFqs9ODTUU!wtLv>NjU)*eCx7U(S*f{m1X=jen(x5@lTd*%E=caU_gdte}j zNFpmSU`Ltyi#|8?W)8mrDk$=^)YNrmXFyyr?)_bM3x{oDs#rYP|df5 zCAr&E(f#m}5po;1AOJ_?madmCD^r3Q1znZ!qA8=`QOTz;G6G8BHU>qSbJnP+QWB&sL>>abU)JxF`dyJ+4DGY`fo{u>&;RGEaU}CZ;@uA7@T20p6)Bv`o*fzfN%?AM~2+R^ydy#XreyM@=l6tjc@Y z`$i=6W4c^eGTfMfJkay5L1y4gE|(7|7U0WHzJ%)&Qqda(*w*eI8x9hjZ83b$*&W~2 zR4L9yRtz+nc1w;v{zg5Cu-MT*(I(hNIC*TcO*kbBIJr}Z95sAz9dImq*zBRqA9=A& zjYU<;Je)$y7IXYo_;T#^q~{1Pal&M#Cf4L^O%_|RT_@ERm@Dy>V8RDI%6TH7bDHfV zQ|a{S8vrnCILY|~!jvkbqPYA{w9sZI`{27Ky|0lfmoBlVKu?{Op3ggW`GD`#YSJes z4j(?;yx>5upkY|@G5jJH5t=`*lQNqB@HnRkAKlIU zdis88Hel~t%PtN!2D1_gnwfH7q}FUyn6KY4J`T+b3BixBwFEiuurc5j6=8`TR6w5P z=U3^PAV=Uwvtl%@efjreQtTd zzFCMteV?qFJ!8Sl8qNydm@yc7pa+=GZFHs-SPKgms{)sUk7 zfA!#ByooeT(B%VjBm$&!aI-VWG5S(2@P)*HYWKL!>{!}Y6=}nRzq4KU!{6p?X z`-&Kvfr|60;T6I2Q%QLFCfg;f#^v7T>Dz+aO2*xQ9zM4EugpS0aOhwp=IOyy%aN4f zt3mUu-Msy)AKZ5K{y}66%~<*Ln1wp}8!o*JWIj$_3=T)!i=4$Q0R`jv5kVVtL5TV( zRhEQ&CN&4=>4O8*W{1=(ul^5QZ-4I|*%OWNTp_^EyHh?KYM2Fe2XChA_Fmyj9I_3^ zwptKV(ZQar2EKu>h^hiR=U(~?y}eRD!ul5#yG1Vt`MF7ua!9HKFPX#EDc2z&ixSwI zYtoXtNrJQHnTkMuHid3ZN{xoHPh#ZH$hx>TIUB?bk(|CLeh`WF!z3fOc8tHFdq&kj znhe6%!A&3%K1bE`v6KUnGp~&0AezEfD>3w=C5bJK`M>`A@%>KEiv?s)cDXXoqM+6h zEijrXxFI6q-_Kx}R6nc;2+Ci;jVO2Nb${0e<$z|(4%PK(d*z2LS@hmlZfpqTXOiZT z?Dy|}K_8)Wx{kqe^L8e1S%C~nArut<{zlS)Tf;&mH<&Bdam_a?SpdawW6jZAkigdE zDH4^xexfHZt4j3E?_n+RbiYHYL>86Uosx-@-rZ#JHEAbKBK#KPnV6DQj<>gwz`#kf z-52e(Iw3zR%U@}Oe8J>K#p7SZ5 zIJ=6tv7(lOC|-BxfG;X*xDkMjmvEG!MyU+~YSN&kDEQP4EjiWUB!6@L4S5pH z+vHiM67;;wutHhi9qo*%)YLFi%hh+DAV#WQsDNb7;>t>znIN}=*$;)9erC|xK3IdrAZ+QR;srAS6n<+j>8nin+VC4J%(f>&a_fL&Yc#C_79&%P6uQDJZ2gG51Plm#J5iWIk0o=KJ5! zwqEobj`-thS`@5Lq~@E&bW6mvklXxR2JeqicmfZNLIIN31Yi6y_>Pm)x4Gjr#dLzb zSo43%6!7f|lU`{a>Zxx?9=vavZN2)``t%X`i3I-K07-ZD35ss*-VlDG^dJ2$9D*Pg zm}>KyI(Nz($956tB^Q2O5uf;U`VLX&g^v1evJNsh>%YLpt^*)@p`tlS^Y`|MWj;du zz)7<%cY+wR0zzD8jdIiX%gA;?R&pLum}MnN*Ybm(bo$z*h?RmzLbO`3J7NC1qp){l zrcwXPkNufP?q}3!el`pKdJ?BY@>jqb->ODRydah^?&UqZ|0{@m^*_nY#2ugLK#LgA zH-(T{DEg+5qCna3T48SFmZxDMz96VDw4>$w?l+4=?SQ+B`akudT+GiE|5nmUwXkWN zDIyEn8R#S&Y>95)BL^q2DVeLjtbOH*^G!lFYt}kvW+NV2Zz@5bm@5dR@^R?@gJbFg%20IK&ZH+>#MQL}u|LiELo*oD09@7w-qUg;R%_*J}211&!$7AeVZ^wQm(*i!9qQ zP79AB_^r11b1io+~if+&7qTa*93hk6-&rPiwgN1Fk| zMCQw{h_Q(JRz*jKu_f{WZMH5@LbGoHAW~spyGtpIJUvyW>oJiS)c|{j=gM9VJzd#e-r#oAc{CZ?K|D22=6X^6RHr6Z<$RMiC7O*-53I_s>iJJ{n|LSY`i5w1 z>zBGqA`Zl7YpM}t?Q68pI{h@dO6aoD1M?Vx+U zm}z3-I3U_AIGl7uLrZ^4`~0jL^Q-H6vQ=Yus_V+f3XcK;OU38TA@4P}2v$!!+od>6 zVMhMAkWM!a=RZZlgv)8h^3%$+Z^I{F2*lMeSAXan_&6_540XtZx0I1TD6a%ZCIkeH-{h_!V7Tuor*#{H&o#+yG4m`lT zWS9LvOdB^C?HSAl^Bn1D5(n5g5d(vNgxiT-gj(cmXgXjDMrQq36ZV4kAnrJPV5|=WH&Ag^uN5uK7S{W8r13{ORS^J@99~{uR*4i*sK(& z@%~mb4>6_S#JrUa91siXobN53E0X0G;0x8CxEP$_XF)O}^0F+kj{Em986Q;eOqbNnE^jFI4rR;hnAV$l z)%?bzp6td9q~;~NU+Wb!n6C4wQ-4hiJVe?y!CCA`@+iyAQ~|xp-n=RM zeiz**!75Q1_j5g3#EN{LLC=>lhrnWtFG%b$9DQx6$BN?fe>(nW!?IMXW}9I8t}&yn zfj~TXXjF97RdQx1&%y9DGIofwn)Qj^QQ5RgCWxwD6@i^cmnRcdA3;^rQklrwog~kf?k(EYJ~7(0 zX`aoUr;%XZP6rZ^9o9KNKR(odqg!Sn6x|io=jNL34ezkj3irTg>RwK2$ z*rod5Kr8_;dYxwtY&6t$lQEBpky}T`5HlGQxqAGZdgXgxDXh6}yux=je^@!Kr8G}4 zz7%y~Awq@_*v}0l^br*zs#)u3CCWa_ zb*|MEamYzXD?yTp{+G;}IrP6IBcm5usJ^|?i8=+KttyXnxNAod6l!xQ@DQK@5}GR> zlMo22=H+fLivL|OR6JO&W=y+7I=A$OvWxZ~O~RxZi@+upnNPMtiBx>&q_5rU*`}s3 z$P!+C03&{fdgFGc^YvaO{0~yAT35?1`shnvuV+@|UfzVAZ#`D?;Qg>s$IeasI-yjG zMx_*uUoN#8j)9tZWeEjKme%B9ntqg*zc8c6rFqgq%-rn3-t1mUF{qTEfN3MNd6l|&lwgzOACoJ8$OgCJ6t zuXoR>E%r(zMY|{~Q>jskT5iSRKV{mUW`OD%I0wS`SLgNYe^e<{B}3F6B#iUcIo|k5 z|3QQ8Fg|->q#(2>mVzlC?3k$2aq7!owe!<6C+Vbg&0}V;@laz!ne9+tVMn~v{o?q& z{!>xI{v74PVkqV>QgsM;N&_$jnCDBE?`7t*U+tF)QyjFKla`C4sKCn$ zER4~&57=@XE(TH0jp-j!v;5U-L&yA)# zN865&LqKERV=jfwUQahInF>xyie5elm)=&=q^pz+AL(xo-P!kyqAQe`K3RCFxfEqq zMncc}tnbX{R{gxQLT7J!bMj|CIqZFMTU}}Z9}!urA2EvSS`li4Y=1Fw^gu5^K)3HH z?x-MYb*0eB`mSpyEZ_go^#o?YxZeF9Mi&)6BVP8d_B0ddKV~`b&p7GrZ>gB7c5Q70 zKX7`auCIj0Z!qR)fIr6;c04qexMsce?q_37c)MAy!L z=exOsKTSNuR@(M90{*s_%V%eRKud*q65@=8cG~tjU|7|amW)3RK8o3~IZ){*U#9=Z zgyxbnZ+3^_+Pof#FfZoT>4x5%_h2R|CqW!c~w}mFr(JXV+FLjMC^-qpTH8IgC?k3{`hJe9~U8^2O;b z!QvCy6A7>`{HxpfNWPjJ>KL8)`WSWV=S=;T$a^!6$J0uQ-si*`3{&}-S;dyQ7U`IS zsk&z8u})5)=}nlku|Ds`GP8yv?){o?N9t$bhbgmXl^qGNl2Ta6`kePt3c zsh|s1!x2Hve?B8JXwSI#n&30;ADq6szXj#G++6L-Vyh+yCH?feL+TFCOG+%Q!_%BDFc&pQ;Pz7zhb zhyo`ne`hMJ3}>4gYA$Xz5r4Xtg+~@x{oC<5TQJ!%&HM$|=QoSGh6I^K#;~sv!0m>s zC!)yOh07ghwl&vH?tS1yEau7Ex8=KN5_n1VU{qQZ13*MT27bu8qrm&0bG>mud*7E_ zX4251E!gdeDV+;@X}r;SCS-!Mi)7qE=+^j+SpBytt|A{ArVuUOiVStDU>AXR0xTe6 z9aO-&vx}-BN@G$ut~+4RDz{sze@9I06-{PlUneCRwy|x+b*4|-9gYf@WSB|z)Mn5A z!QQm!{GGL-Bff~K5`jSiEOb~$R};MlN?gPwyf~kHXnsZ?NuosXkFd!SsN`wI|7{X(1h9!+!WjN|v{1dUSn5=lxrLx?$^aay}< zp2x}Zpqq~G7N^4(7`3`drg(bZT{$Jo9l5*R;SV`~Y zFl!}#+~I}>+3;lcz@u@2U;K!F(4xj*$FSnw7DU4@feS+0pHeKRvIR!b7aBHCL@!E6 z`E>4oP)F(y1i}EZHSMk(03ZDvINU=H&XHsAz6oX=4t*{B|E1u;wBsqX|F4YZm(+`2 z|EdQgSsQd-O&!f_y3mPl?~8z2m?qRGO~FRP%iwjIazBsS8zZk|(xe&G5WI8$K;&6UVB0>jIo zJq`)MWxabyde+!pJDHdD@I3wNB(ETzk2}1#mCraj>9cH8A41eBM0{||zpt*Lsat72v?OQpb%!?d9 z*wo^^<*wd^yC!(;*y%hSuYfbF_Rxs^ait4?V6MKl^E)4syq68Nt%C|9%ZmToNhkdA zZ#Y}fhyv8RUf8(O(07We%`kz@>u3q?jeiPdlahT974B^$6!ma|8+6jqt~RK)W8r;d zXb2L@FJN&kNs;GGUFs48ybx=MO@z$FF_xqd`Z!F|#M$+e<+QiraT>=33vRpk>Mb;yHl{iNz4<$C|6TVj5>R^j}_2vB^PmL4yHe~apLSc zD`a%0E=?1SIKlgX&O;w4aSHbq&gBiPmr!!8d3lLovJm~0L#e)wJB~L*yD4ejX3sK3 zqoW)Zt};{`-3itK^3D`&B**Ylm`PQbrA0%D+HY?Eo0*(!*9US?If_g zW@bDhJ!Q`ipvF)-*l4);q)-L7%I^@bo$j~v&usiDSYVKVtC{B8KZ3>#e=&8NiA zg8+P?pl$643XFIuG%-9KvcDSBDIoSVevsZZ4(yGWqgSoPZzn?Ebv~D^D0jZ2up!Ve zg(u5kg}OE8;lQQTSgs72<)Ex=&31O>UxQ5hkiA6;fcvprllc{M%|N+J4mA?55GPb? z>aj-Lg%jp4D>wXVx<7o=^*=(GXPu0$;i(e0d)fa&i%rRHZkH~|8G3F=5gVUUXQkFF z5xBwfBoK9|v=9&`*SzuIu*F>1rj+s9$E)GBWJA#=;v0=m;SWdKyi$HGU}aqk?2pRz zk@GmI#?PvNocw-{J{|I;yN&75{w@7>xobc@sv9+Lre(6jyZdrZ0k$(?gfll|=4Ez0 zsp)R>*c248%ZhENvnRAR zs8Q4ZSFm!SZ}syEf|7FB>61ggY8qJKAZWbJJoUstutAl@oms=sO1O61p*Vt>Q zRCb;u$GG37$6lB^V+0rGpz~^JdoczK(}8g`joZxzk=@eiVPl!Xmo$hO z$J-#8WQYy-=XVnsQXWTMU5m>5Pl+9L@)pzyCAPu}H-qmA>g^z@*dv#p-#(UOfL_Gq z^Na{!9%I*gt+j|Tax7-H64{OGgUPfB^61zZQedrZrzZL_zIr^v^&w($bVerm*VR61 z&QDRkTAm{C?f{zX@ztW&yB6!SBRLsH>mjRI&_`Dkj*yjP?I7gq1l`+A@=A8O2IktP zL}b#3DN04)$?MzRIW5DWh_9Tv;Y#wO)y$}T1ME9|9Ho_z`RH+5u5pFwlV#@1!lDw3 zER#UW7nKeBfPyhc&FHz56;cEj7@02G^g{)N$Oh^(Wl?_UwK9si0G&& z@bJgs6%Ye9BMq18)c(WNsoYSH)pN7(gWLG^i58&d0Pf(1sX&p2t#2)UZ}*Jo5*r03Xo`W$vN`6ifLE>R7EkM&y)65Hhg zozzYr7w$1|`X17i{51=3@s-%txZJtHc^4X)*p(Gu0Le`Un@wqZukzN3Wih4ZCwwv{ zceQjF^vqm;VePImI8Vi`r*G^pC_NF=2i)9wsR27;va^L>)};SOF~vkYA(QlqW>DvE;l2K zGNrID7Y3bgr)%SZvq59RGeNc)B1Wk^Ey(G$&Vt(NmtHqYcvIeRnTE6=wK07L-Sbu6 zi5;7-iRSsHE>C0*l#ZPL8tZpf-2Ig05`~l-D7&pS7rbZ{uRbm^FImxnaCI$7F|E@T zyl^Sb?~xbMk8zu7lH43JyuA0GY(5Rnz@RC^8DH`v$Z*UC#u^aPTL~bb;OVtIGZaJJ<~^3dIr|)4#hCw)SJi zMj$3m-AL^0?W3J1Exs#|$?7;9S0y8FOG3~*U0mU)$R5{ApCQ%YF#w%VN|>CED8wLkg|=Xqn0Yd9*;FY<|Ixk ztz*_!4W$KF^mb@>gz_zb-m#i~Xrdgy#WeR_u&RW5%)%lSXTnO(M#W)M6OyTaXo0%_ z5G5dJv`7S9$D@$JAPObdVbbiWSX9 z*jU*L(yd4^>Nb2EHv967hhLOrxrn9`9EWQGfB=mgCT1*c{D;x|9X-RhoG?8TUXZNw zn(6-YrN&&%VBTzW%9;DfU=gKy&D(RgU8pfDOcy|x^Kje!i zwCe&mxq(r2kSEB&@QVvEK2LM9(3-&2L{&PDjA(|&303iQQKLq)VT{NaZQ!+m{>2Pf zV^WX}!_<)&|0N3|S*g*^tb*~2k8EoNb~2MbMRmR@UIq~Gw~ne&oK{-c)x6yPzdBcf zX$xfxvZ#Vcd>~`ARlZGY)+(g#UO$U!$MUK=TbJ0-Q|s3}SF>=$z{g;D+i7CV&yw5{ z11On%>Paas1wX>QmQ7f@3fCoJ%W#-Qa4lm%2U>CtlQHA922iN5=51i39MtZ_n)bW= zGo6#LAYn&W@Q&YCOi6pJ= z%a#lp7-w0^Ehx08trFkfPHov~>lDgjVx@>0KGYnaENxZ@%FvLQQ=W`JN+!Ea&s%vy z-U~82+iWc~1(l|A8lh|o0knc94p1`<8vD4yvCfm3`49K#9R7#J@{=%y0j0@ zK9{e?C0Y6TqU}bi0Rv33K6R~ukYv<)v`mi$sh$hiKfsJEct_1F*0vD|Q}L->HcF#} z?Y-}IVZ>C{2w5pGzNp9;0Z=>o$X?T!B@h{JELRMKaKY@5cma%j5^&AMciTyHwDIZL z?eTY2(*_OhpvS;h@froZcxYVf)ok^M0$hR?`tJwB;XEgQ*<7bdHz z+$A}UY!-P&zTaZG7hF0`aNK2|(~kRL-@MYqzcWl`S%bue*5p>q7M_VXB$)Zz`f&GO z)x&?6;c-g@k}}mOJ}1+PjJnEF$EW;FeQ|?bg^t=AigFg8J`AHjHjiT^$EP$hb0ir_ zO7cu3$b_1dk_3$BT3+7kjS+?sq2-AuXpP!1W+b!himK*Nac<+wd8_5<$@YvXp+h3^ zrI~Aw=nk{eOJ;19$kG}SS1NKu_bk686IZ#{v(%n|37CbAF( zPek&p6nEW1Gh=WCIhU{fM$a}>$HPJThIQ*oq;c?NdjD^Jjx$+zUEd!!cWK{Xrx64g zwxZl*<7;fq!FEf0bQlwm5*b>UfxN*4(po?ttM*{)m)>c{hH~4r)p$whCCGk^29zzV5#t;u>a)S zIK&<4U08oN_noH7OySaqDEj^U(x^SEbQspQSG%J|O2|0-Q#TovkTH@{+!B%&V#YaP zV(WNyl-gud=!ko#qUh4I_%t@;I86oH^frGeW8!;iQn-7}fm+ptiv#uSe`Jz#glKCxnm*^<|tIN{$ zxwW1}a4&x`>hWja?^ zGHbXD`-}+YQ2wjG-Vo8L{^aYRDBKLGfdqpJSAlE)ms~`wzP?@&+D+*NAtt zM@M@QeV$V1tW(S$WY-0q2ACo*_?Wg`6kF>VQ}n9sxONfJpsRP{ZmlTC1FEsLPtLV0(G|K; z@%}2`b&91v*~h@qT{{(H1Oo$_7ZK%H=#tI-dR|kV%M^^yl}+v7y~3a-f`@?f%5Of! zs)-Sg!Me3%5<5MquGb?NHTcT5;8kKM*|=*|;|FM1^-&$YQa za$zMz5?Z3G3Rx?bV^oo{J^8z&*P%J1+uzLaQt4g!wEGE!L(z-pkgku!Y$!Mv$rWS7 z`rTYTCIJTfmM}3<_Vm44GzB!USb!U^evj8cj4R@4&`hH0NY&5&y%-XsL5aL3>?gO- zgvW#BSsB|$rw#mxt$Rh6vnc67YtT??MeA#8W?C-OZsFA zz1N#DJ6Y`=Y=uf)3@lIjD^{^manJns;%cwnBvm()+be3Bz7y}m?#}AXZV`NWPSdB$ zMRF?6<$VyJpw5z}oj%1C{X!^1xzo`Z@d9FZah?O$?M=9yP(>d7Wv3~%qx_X9;j+mQ zzIK+2_A@6dd)!cc=feUuIDXq*=)tQ9_e$a@!a<>Dq>C+M2gfiM!_LbvdJp z=L$Lp$-7dG&Z+V3K~*KeL`a`>d=fpc6-=BuY&Q1#1h%jU(*3!*SMpru2kzbGUmm54ko3mlR0 z-m|)H_2xz@@8%V{@Fd>r!c%&vpOiBi%P?Szu(R_4Uio=m@Q}@tndyF9(aYXGa04aB zuAF3#{c%9CCUgOmzG?%FwYqjouQh&ner(~fdjbrd(nWk(cL1~B@PGnmEx~Y0CF@xk z&j+2)y7ILu&+WF`8|$QhijHe~G!K_;$Ht6Ln$%J57hd7SUK@m&>rpKsSu3)>{E4_Z za=JW}I3qyBHjJvMWx(B@qR0g?MHZm~ z16AqrRN=Q#O-?850v!x3wiym$&x5MGWluJuFBIhIY6SQ4duKM3{6CIsiSm%5O{+3? zsFNYhKLGW8nxEpQhe_wksh2c=B@v3NT*MyhNoq7^o(%HblCxmb|LKC@5~GrJC%=uJ(n z-)f|#2NyT`dQtw4G<%W?w8v&`cDCS`z(N+u7euw_(T07q=bM&_kqSc*Wj9s&-`UhUbhV&Vhmj$qwcJic(K}^LP-#7v z&~$)_APMCDTyyg9vd;2J^Ub_#-2!=m#+GqIoLNvF3BN{x!!@p3R(BjO;d_qe>91Db zgfrm$+LAtksZ!R`z_u~Ss9@ic=2!WK$)R=2=Fj4&YOD3Iee7)0VZ<#)7YrM4wY5h~(z0U?^m)A5ua z6$`p`c)v4mglflp`WMnn3K?f;EOk4&kcX%@I7%qXuwUq>9JUN&hi+gDrT$1lVKbOQ z_*aoQrt*Y9TP10LcyI<%t1{z`4bQ<%S zkuO4mjw3whC^tMtw#ij1+g7;UnT+P(p>rVx4C1MHq`6!G2g$qmx7%7}GQ!naS5b8Z^xgZuwxiK*8tdi{!~+86>Lo9QU{Vj?w4wl zC0^K`*3?1E7+pn$gq*%|C6QHWl%HEjHYUie9abHCa7hQC%`pd6FzQ6x7yy^$na|=h zHp?{{(~{^q98T@*=#aRR3}|#- z%C@It()Cx}Zbc;?E5S(#meg;YmT9nc*S0STq~}E6sm*wGY7Lxn;DTafDOvtPcO(@c zm_ctBtBRJCE2Hab@+=8^W7=^Vmz?n$O(NInMe{r8O!YuA5tA3Zu!|T$^_^+ly(Xkt zO!hOQxtEKWE=qf`$b9v*z-G#pT27dVC0ZG4j!=UqI291>ZM(YKZeivvfFf24C7t~i z05Gg{Y}8*h;Ws5_tT*vYI_2Eu`Nd%!(-kWiUU)nxQuaX7FY;TZ_4=bDTT!+-4aK^I zjr(gdUc||qn^xg9Np9}%gehwtqaV5~rf*I*cH{m@ZXxX$rH`Jm!f&&Z^XNXTo@g=XHkJ^WGSV8_vF#}<>)vIxF_Ii8r( zHBsIxsrEf+uq@n2+I0W2!@rR+!ovBQ?@6lR?C6_k{ag-XGcGh4GuBbi?M!%Rg0#3n zjW@Wcbj?pShcW86{1wRCIB^1}LJ=;%#5a?*j%?vl5%>JzmePoB_YR892aVE7FndPF zX74q-jsQ}ku;{KKh&LH-*I4WGK6;H2{MuBY-;$eHk7QO&@VzpJILGD_)#A-3*FrV# zackZ5qPA(VLm6sb?J|7fZndsPT8UQUW-J#O}6(;hxN-d)-4 z|17S-XhYnKBCd3M`re|q@9A@s=H1Z#Kkxfr>iM_4U`=%I|0efW&9Hjtvq>m=*wINL zJC_jIG0n#Mu|ai>45HuUw@Jb~mnxktswSj$;wQ53uKqIUdlUfEg5AL{wsgrW*5(Dh_pBLMM7AvMDKT(Pi5&z~ z6@~fAC~JfgT_2~V`ihDkF~$Nd6XfvoR#06c0heIz(j*brn*K$+pOzR==BBFev|csr zJ2Qp<$-W9+n2sW@>i8n8bU7C0(p>mg?uOiCZ6{}5?w{o5aV8jaSD9ttxA_;psGZQ$ zhnD|wbQXS1uw57)-8H&v!02vJ7z0Lc14eh3(xoWf-7U>X=|*Wur6mMuNtIH;SN+EK zA8fzfJI{&h+~+Zd&`g>Jg54gV;I3YNhp<|K->r}KfX2;;>Q0E;aZ~!-isEW&28#DA zH|O(b*}@NAUy8o|R&KFjY7+=2tPTb!X-B0{Y0a~mUX4>zIN^zjAN9B(VA0~~Kcrg_ z$xhoG>}stfhU%NZWjL`a4J|cs4py`;=DITgdo zy4^A#tg1#Y6OP$lb~|(Jd&MW+*-CnXVxV5VM$`(0tsJF$F+|Mh;SX|dmzRm8ns2Ry zEi8(jnc(f+7&QPs5fQbmc)4QMO%TSyciJl6$*s)3nd^THTqtrEndy%KRp0Rb16~Of z+x`UVy)+9s+U-DdPS+R{XJ!=@*b?gCkcO;gkj7{IM5b4dwD!CisZ#g<9k%^M>18l= zr5Dieso4sRW5q?e9&UO~e|C{JIIAdUB6Q#A-DOfy*z11dL5te`Ae};`ozd@o)9%75 z2~KqOmF+dlt^wfe%Qn1kAiQ-f9gK54(R~d^L<58C+GFloID`Ejh&%sVL`0o{UIs*B zD8o3re{Q9!b!1&`E`qH{62`*}407=H2Trf7UFXe7isK@xk=j_qZQK4rPp|IMjqlgBy@kq@g6 zvHX1xV||pKmWCHba!rEZlwzLV%7jg`5HTe?P{#poAN6#NGfbP|Il5&C%>`DJdhvll z?ODs~Ovu6)$V-cv^uVBn8Mn^KH>sF3NSZM%k$1uLZ*Hy}_5TK083Pe$Tq$9uzxznU9%<9h;Gog99?gl4=xb3R3md~wBG45%6Elm|A#muUnJHICEgj#Rk*VpI?SMHq*d znI>~l;&559E9p|0R)r@Hsqo}#6=7Rg>eEw|jERHF1-PgdA(B-DEW-lWm(?vQPMu~T z$5;Gb1~$yS>!>`Njy9UR*!Y`io<)rT5`Evyh%+Ts_ZHWYC4DlFLf7HwFe|TY=ozO> z%9LK7s!FyR@TqaSBPH44Et3oV6_73?m}0pvCnGu-B~JWFhLI*WgjHm5t9n*~@(gYd zo1xO4s7s(7jwzHh6bdBbYz8B z&yL?3eyNW9GB7jst5$$NmNA&;tF|wnpJB6c&;A_jwpW8H-DpdSO6f?xneY|QWEj!R zeIm-qWa6BEn#ZXSK8l1Wvn4B7vqxaG(+QWbFm6C+0IyiCCMU5Bv8_Xy0~!32l;EjMu&*@Jo;C;(VYnU%)>h z5Hz2lGpL9>$Ue2+6q9ctp-zq1qJ9HAnwB<&x?vcXH&GBfTcD?DfsnHF zd!<`lEHd`~&C+*4yLI{Bisbr|zm-j>-!J6txb?nKEYSKl{Xzd`mLGD9=x+4ys%bgXmH74mtL`sc)Ad+9pl1EmteQ-gCT%x?;CB5drSlFV zy7|P1fn}w*JWYcc9VhlxPe>!9VC=&;KshOD@14cDO~)xw>^%@k38mELM6RciQHN#E zk!m@`=X%hv4NK_U(&8)%=@b&0{6^1|`vaa{RmTtSX>B$Ov+K|IrO0Tk0cjNqA`jv# zxNV+~7VMF{W?@RpW*Qf}%T=rW!Miw#SQ3Mw z!y}Y+F^ZcOuH%1j;70}3H9#D zf|*s-K8w#Ur(~sX`~C`|V;w!T=*prh1AbP=a2IF2!sKv(=d^c`h%7nj@Sq6KWR-Vh zVa8`I5P-Md!alg)b7$n$ujPQ^K#|S5pCzp_!IA$te`tW}qou3V;LDH6m5_-aWVr@O6WYIlIW+v@sQfO@Qz*7qx@ ze1m{X30$2bq%NzwC4MU|B*@Ovq!^&*I?7ZnnBnD`;;)?NGtvAptBJfA@`km#fejT@ z6LPYS!c*wi|w7|A()NX6?mooAMF@QvV~R={+E z4VyHfm>$VgHIKXh58B}4Of}g2*ZN4q#5R{Q4~Hr8SWeoJsH)Zc#j!8;Dg#WJO@g!) zumO;30|IpvA$4U?BHlc&roy2b-?Ck;PZ{|I#5aJ4C*FxpX&&tA&B3Pnjus(NFd3OK4pdQRZO+~9|JffRGE*~q z&v0bXOCI2yW8F(^NQ(an&x~{n6U#yzS;usY7Dc9bqhj6sBL73_e5@Cl#aa(wc-Bf8 zQu2#4aPZrVVfMU6M3lu90g4l3djmYi*WOoXO~`jnE#-6P1Ba9mUTtQVhLE{U-(-G& z?wKL3=l0)Y-%Zx>Qp@N6#s%`Ke2>$}&4c@H2L*0!%&*pLn@g|b&$83FgF6yaM4gsD zzw}B=^tgRtJ^pFM%=fHOAa2v9fqVz!{XfYNJU~}P+dCFQsD4cem_8|4wxdLYt8`c# zi5Y5C-|xL&=?zC^Nu7cFjWRO~D zBuILz&DJmSyy5XdYseMQ#0Sz8o^?PLDN(gs&(9BLgt__L=7g4ad3cw0US##4DFh;U ziPUG?iYy3h!_$k0Q_D!pC^dNbYppp+mCCL1#h`$-$RC;X101O{o=H!aeTf}YylO|q zTH{FJ8RqW9$4zNW}a)+DOFP%AwlAxLiv-3!yM92Uis=(&)b z6*)Je=KzwA0sTy1`SjlI`qeO=A}u&WRKn0j!bKmV}bm34BD zgDF_4<;9^7shmeG`eF0owe0Gp9-Z*dl4{R`(YrI7_Rvk&dEk)9z@~XXcuHcIN~RrX_mn-~w#^z%-I6-U4ero#sD1FsSvsIql35A+Qw9bU-LcCGD;MV|@d zh8|U+cWsD?|s3d*7=e1Bui~`K_FIZT5#) zK99SIl7|utRCSaK%aSYkf;oothMauk|BeRL7_=V-h7FH6I+t zmfl^XTFOA8t*og;PDQ~=PyKzy8I!I_8VarkzMxdY*m9b_r`EfYMn@Cglg;)5)hu%< zqE;e^?VLC?iO$Q}V?OnB8??sj7U*l@Pl3CJst{EPX9@OP)V%v+s!LV(eikSh)i-x#w?SME1+1kEjBYrH zqk3d_AXsJD3c_4Qbzx>NN_Wx#k!y@2ok-gAI90)yT#?MQ#8d4~OLkrS@a@xm-?zI* zpYLcw+i>3g6ENfJ_)Djf?TuQQ1p5kV7=Mh6-|4GeFN7myG;yqJq5&i=ew+wa4unm| z4Y^jr=-1hHd@|||J#*4u1ctu2JLH+<6fykH!sl9k4^eI=l|a~hzR2{MZ)`nN3MQ4K zxwFGqeF;wmp*_&ow83OM`%)`07joL$c{J`X97-#Ao6UG@-F{t&eSgZz)6>ht_(7eR zzYp6bNuaO{=2z%lKM8xROhkmLUMs zId=ZW+$A;2S@wY_MGN?iDSN+hT3)?d^i>)4_+3;#+^W)1oNvY}+OSHC?=`HgQ42Dn zktZ$J$A8M8Pwx@t)a2qMr`lIkwg5aC-kVUGc>b*AMke*^l_^(`n$&(RY>Jd7vjo1r4Ce50&YR=BbS3Y&T z(VJq%RBoS)*Is7~zO@Nlg(bG&P{Q>sdenw%KsZ%zdF?op>ysYQ@K%BuK;JsEfWtqY z=f)dxOVYi$wQt_$c~YenGi8~;o9kA$QcL!Ysc(=2M)B$qhfR)NU2CAHtzHS|Jvw_Ggp+ ziVETqYJudgj}@&QUtEI@W>_9Md~Aw5`&#tbHQf6}`uF`T%RayNultt9X9I0Qz7@w6 z;k<+Z@MOLbUV&93sPLGbE%Taw#s#pT8teC`w<`zaC{2hy5)p&v+Xw%pguSfqb!gv~ zxwIVLtJtZDRid~kgWT-JqR|7&@;^FeOo$d!gWCh`of?b1lv4Ot#UuXfA4UrKa$Lr( zwQprRA5Z?;`DsUx^*`XIR_a`iqFOk2*uH|V4<4s$ck zRNVsNWp^>PhACJv_7KGD20@b!!XGB0&mfBlmVT-MRALA9$tS0w=W}Vxb7$~^(?7lU z0d~H(GXkd@t}ACfZD&4CRiS$t{6P%{)C!HOKPH;`U+(RM%Bx^r`k-h>UX{vpY4L)+ ztpMBHKX#2kzbR_k6l6t`o1Hx8xqq6c?AQDR9L#6aND_=5+-t^lia{=a46zcEeLXs?rw>NYb%%}*&Pd?UPvp|ZHJPUW!E>B<6$aNxe}OFN zhm}>?eCQXm;mlO?Yf@n!G6D(ua`N%nPr@t<1n$Rc9)qs1f;=@Q&@w15#jiE+u*x3R~snb)3=Y{GL+T zxvMS=)tT@rk4$&dSkA4?4eH#KK>lsuZ*Orn{8Nr%1 zpj!_jg^>nnt%PmkM@h@mRm3hbJ9gr5Q3RJd&QCB;wI3e1TKv1svrf>1=3hl|P{k2| zuPZXUYSzL;$pi>_p4o{1-AyCP(-YSJtQ`_9-F_o*!Bt;jq^3x}r$`ky5wKhuOIL%z zJNR2jCP^j!EK$S&BgMxnu?TG@xR`9qZTA<^OfopnrB#P)B8pApIl1t|S2V~*jvhtg zlY5t-XgKS*4v1U5Kt5U$-kbKm2H9~C8h2#}m{`|^6I;-jdY7C4;%q~Hn^Pb$ee{Ps zKcbF#-AgYdpmjvGEF_*^c;WjgS9%%wdg|^Kekk#bEeKF zUC~SCj%7RA)0e5o0DRJzf)36IVgelcWI_h}Ax>}UgVFRmKEvqzH0)wIchkJILW6Sg z6Dv}@`^b_QD`9BvX!j9b)lpf{2SF1D34;B?w?AJhej;XxKChWQ=Z&G{BY~LXQhlEU zC77D8Wu_636nz^;z+pKRDGZMzaa+)83gWqLE`%J^vEJdcu7|jNT|JQ)r3H^_Cg%Z$ z)aK3sGulwDSP-ZLOJ#9060eM^+9+*$VyBO&ES9q52 znD>OmRji#~pTCm9hsw-2??C9>q*fr0)4Qa_-v*@WpzS5&rj|=%A!x7(^z$cfhR-p~wN}jwq6Kxq>!{rvB> z_`0(5+y6$Dzkc}_xy~%-Xs&Mj#alMK`jCTQq(Wo;5op83K30r|oHM;s#w$S%C23Nzh-`^B%h%UjfZe6@~8Nc4l`rc=iwP2kK=9lQesFe6qB z6nvtHkzCT$Js()Fm@#DJbHaBT*Xxj$p&OcK`Xx4HVa z_*M6Hvos4$>UU4iI@$A=2^>8Dpe{BbPSm!IbA4v*ab91H#`Xs5%KW}x~)#bQPZ*fVjPi+e5Xdjy&6g6I354_i4YkxC4Uma8w^WOdR$oaz5qF~ zA@@<194c+b(my2>P(fH~cIjd88h>V;To=5QL`)!(`!TzIA6lqkUv)5k);>}Dt*FtL z<_nRXdGDV`1|%!TeTtk_2AUM}q?B+@1&vQyjcpA@vG`uv$hJ2`PDwA88c+klCuWhA zDp+>5!=zAPc*P7r7~Kl!3>2btwD)H_9fd|v#O!1iauH^VuV8<(e#@F+o%)i!zOn|6 z?(dzGEa6nGIqd&rVfyy4sHD2A1p4LRCt>OMbqY~3=2R|)^HP$KbH-x>2SZ;^2yzYc zbBAC{rRI>>^GJ}p6uo0A6lw?^Jhaa8$G%Gq1bfazDUK!YW-=uF!WA>dEga!AX0B}6 zi<7G=z~Z-K3m@Wi;jXxX7|7@Vf6%VE3|bpCW$jDE-?Xv4pLQ5J5)l!EwVZ8n|efF@)QB$^1Od!n5$B!SaLTFn;I)@cDB@TM$4@b8E%g8w_Qinj)60sGK-lsdhof{+Hh~D}657 zfqG##An2f|tZ*bA{mNo6?8k3+$C4Co{U}PJrawwsw@aZlf3H1-xY8N$J*hQFD8mp5 zUquQBjNC3H2A>{nip%|h$;qv}>P`{>V6{VN3A|IROTjbBg1I`uKZb@ zL*8qyPUSv7_tLJzKC|Zw;`D**aIl#||gL z(l1q!N@hr=VqLwFqxtFddJ$;kPpXkDAQ32;r^zYD6x}SsMo$~BURi&{T=CV~X`^q&9uDqQnSdHMRqxm`8#R@9Za7Se9R ztJwZbJL&D&U_b)$!VkbV>jPJG9UTQ6)__o0Kqed#;#Qws$};zKWk#61RAQ3k_!SU5 zCyD;aSDU~f8t+CbpAZrtlLOCPKK+T8Ya+RuBj8^yYLd-gV=T^Z5@G+2s3JIoX|LR` z6_;0g=h~N2l6T%57-Er~ks+@q^uv&=K{%0^yzNA2we&%9E9B#?h!51k_CJEOHmETc z{4^!7-L`;Z5tHFaIptJiK1YM69DFJ!TRC@j=I~P5%@!qToRh6On!e_GLqoMG z-u-nh$xr4?*BxiV-Xi%eGt1Ulzf?yN5in4(G~*iIkCppoj4R_AiMbzoX}vGS_;!_5 zM3Yv7&g?xe&EVXNQ}K2r-^rhsW}ZlynK9;3=G&PKK(sbNqa%wFLACfbhbqAF&PW{B z&7Tn0=@cY^`<@9>FAIuncgh!X?lN23Y@9KzlKM0Lb;v!`hAEKYzo(bMPH-nuES*Ph z%M6}|HBw`<2dt}1~ zch959I}55d&DS~9PuK>o+jslOHm`|Uf^#-kKAH5-*`uz_WxokC9$7=1WwCn`N;JIE zfq=mw^|Wj`F@6wmU{-^Z(bbb}au6!rDq(CuE)yh3z2b;5lRkUCoz5}Z|JMBXm_vK^ zMnpfQ~F-81}C4xnB%K35_tV0eYkhlOlI-vO*UApr5ctoC37S+1%jewxTVck`CR4p_Kr<@fuLLoB|oJZBYsU zZ&|d*bq7nK=Tjz}r~LDsGtKxbBC%2QGy-W02U|S5GfEGVTSy&$4%a6M4*lWp{{M%S zrbJQ63xms1qxt6Y3PS!wJL)Hg%n2Oe8`H>2jtNOhZy9ho^R228wx|=N<$sCc&!X<8 z0T2@71}cU7=u^$Wvg&PWOKA)o^yM?6XLI($&sW?>#SIsUQst& zdo}1a8w4h)k-MGa-iWN>hF6ywm94&1^TyT4kM1~4{bk0@hHewhzcLp$GZ{#=e-ZF4 zlMldPuIH+}&IJJAAd*F%FXif>#44W6O+bL5qmY2` z5ze8T=e~FXP~B+K^9}!OQNRs4ILs zdAXXWPEy?UlgRWEbf1U(Gb>NWuwYTX`GRAUUKhXdyw24&H-Gv%7XrE!#~UW|&Zt** zBDD{RR1l#?GAa>mERnkZq9{>a;$`+C#@)!2`o`Os!P~LfD2LQ}#NF2!P`?P)HdUOb z1Aw9vo|DH1@6Z)YlzA;oy%e2cJ&B9^#h)BvPvbEI6=WpPDu^$=ZW-Ai@-+~7>td6p zxV}9Jq?w@Bx`D)GYbyL`FxH>dVsXE0h`EodZ2JuUy2$?OJ+s`w+i5GICW}MZk7>QI zamSKBCJ<6Wk__%lTyc$me4h8Ib!DVST0Wx;)3fDVXOXy(X?1N822eH^)wyuv)94I2 zk%K=%y4xjg>IfBUPGI-|ABB}{q4#Gtw6xFK{8Wxwmy8p3*wp?>X=c>${h(L&3kh`x zOBszqXON(b0mv&I1op+wAK|r&BciDhLuH$IG&G0{JxFemJf=*4F6(LN&GSTUSqv0x zxPYlxm4&ByFlP!e7W~BrHL~^g1dqGn4d2Iq5S1x>;>@lhCZ^=Dr{oE!Dc(GL{SOVH zoRmeH-vhFB2HmPB&#Mr9)063q>whh>zs(iZxJH4zP=W2HIkJoJ#q$fxd@hRO3OfG1*=jEceC zE()I{i^e+RWQFQ%AaLNZ4slPVGSoB*Z?_Z`InY&BpzjmU4`PLy(jH9q0L4o~I0@~> zl1=jPnBAPKwMdxgp3q%|`j3cC)AIl7^e0*NvD&uK0uA>1^0^i*Bo6zyZW8mG3i-a_g1^5EOq8Qav}YK{FU#P)@p-pK-A_G zSxQRpdy+p5dW^N%x%_sjVo*nV-89J=%~~RDfBZVgSjs=923*xAtfK`r=V@%J`W2BSb}D z!3+{JiF(zfq=HGJi85X)f!)9F2i=qGR~U5w`rcIa{c_Ad(%TIogacGX4I2{pupZ!qr}sA@Wl}D^bRtG%~~Cd4aFJb7HVc zMht?-fi|(GPG+*#xKrt=x4Jr5| zt*#*Y6(a-$G&#$tw+V>8jajye!ku)&nJYpMO=Bmu^(Co=4bOg1hgn>m96VEg(ccAo zikV*!6~i=PUd&F%e~GXP)Tvhl3UQc_3iZr~vv~ScUN>=jy@E)R&U|rDyX$Y8$5hGE zngaFHLlw_l4&O;vk!4NQRM$5r0v&VAA*&AOQ&M{|JT-BWj=tgo(9DJL97x3}{dnDi zR&jRy?(I_CZM$zuu-C=Gr|NbS8kE!erMp-2Jmo`&$1vG)7lA`LD0;HS?VMt0Xl>g8Z4Q(^!@ke!_<7;zo3G z5uIa>QGtgdLTPy~mKJSC)X`xd14NpD8r@Hn^8Ahbff!ug+4)2RSxn3{sdLd=3;AHQ zr=Hx;hl?&fBaX&0!c)m5SeOt3?a--2py(ta=ZSq47VinCt7%NvmEqC${bCmR74+w$ zwqF%R2r{52Hy|}fcmA|Muq2%rE^N44#BJ?Ca`mZ>VEA&uH|_69+Ds-Gc8TIp8t#G_ z>r3%HaOfc{h#P-Nf=J^6>FS0X3SRT8Zde-VL;22Spifdt#BaEY_)7Yuypq^08pkZDl zK1Pz4B-AnOX0?BKdPS>j{j=|5rs-H+X(P4EX)nWh^CQKimR}-uyrK#=`8g!gZ@)?d zu!#rBwbk*nym5KO1bscZtyUwjOC2KxGJM&LPH`SF2E}AfnqiN;-mT(z#L&JWC`oJ@ z&n#Z992&^_ltS83rVg^mB~lp(K@`KaHAvG6e1KIMkR&8`P%m2~?^?D`u;h$t0HU9% zW+{=(qT`JYK~)6i#6TUlo=#1!m3hfO5IwD-dW^X*Dxq$q?w$6UiQEH}o{Hm6Nf_&) z%E`N98syIDa~8o(R2dnT{fBTZQ+O1gIr4iqOH$9pcMZsH=XkPVA?-B$H`BXz{{)ob z{CB-MpT3&qG5LMM{V&PoCqlp*uTW|A=6dV%9Si0QR%G!kvs9d=jRVJ*D;2;L&Cw z;r^};M1ImWu8<%!?#Rjelia!ZlvRGCGO^2hqZ>&@dwA}_B&Q(XG*+%=#bU_s!jzdT z-F<%*Eg@CL3Vx~-=8;aCjw{tKPqoZlIUgi9ntYIFfFVh=uQC%(xiK?VWc6cR&z+eO z-P+?h452AwPLP#}H3XWFz%MqF05j%SCYe>JlE^jc*+R+tRa$idwfajnmgM6I_>jKT zI*DkQbEefqVX0IaA0wL#Q9giY#@@|$Z|KBZa5(3;YB5B+QrETo^maO2gZm^qgF>%|58fgvJxC4$~=TBF2e$bI3Sjs}W^I(JHluMU$34sl+-` z{Y#^=QHUq+%|e5YV4l>`h=c|Vm?_7BsQC51(S7ku)MuHvTBhi#PL9#taiQ8a;%*U+x$dYu zq<=Z~Ix!@lj_9q=nv<`GC|oMhGc!`CYc`-Lsj8_aIRVo2gv~lVn|IarMyOp;evraS znveM>K z-z8QltysI>7+Z6EHkH%`62jk>)a%J9YcX6}FlrrHvMgZlon%p?SX+j+cdHi! z*14!tB#uvxMQnOws05uUqEzZu>N2>bdYif(JZEPwZ_T7;@8v1S2~^srcy+pnmKmzI zLmV1z^myvxMHu&VzaGy+X@kRY*|e@%5Mx{4B?-&`h$T06yLeW;1A~hdu=#glcXjUw zbcRw$rqCf(*Pz&87yPJblsjM_uT_rjf+VeI213zU z*2=w;9J}hF%wTngX$s9$Kk0@}Y2Ba)TyBhftP+7_X3+i~AxUWJ9z#73lcvqk z4}@k2@l3~3=x^e+Ni#d2MS(}RriplQX&r~2=#IAne#{SY-@spP zDf}{D6Q1gb^h-;v|QGwx;`hPzwsw0LIBPVLVwvDEOU(E7p(T3m-qNZGK%#u+# z>e3$!0xqwwnP`<0t-30#hxg{3p8d3Ql38DJh+{bwwYe_3{zCWjIM~~JpIpCVlpKB% z&0ic2AT&u=5w{SN(jpd`hiQ9w+*Zk^_}lkt!1Pm)g0uL*zb(z$EFR*Ycb(kQMZho0 z(a(?rc>);=A0|v>@>}$l4-#Qm;gt)?-Q{Zm+@A zhI$STds*pSJW8>`*BTqi3;}wvj#}{yai|v-c>!#*0qR6_If7s%%^%4MR^GR#111#BtlI(1C>ChNxHQQt2`7(*EGM?Sq&jvOmQO$JkQy1Uv|o2K2< z>drD)3W;#7lTC0cB!4PU_XPnZXqDI=g4{6q!5IQsgu&3W9y-C8Aa`MfvHB98)@i82 z-2d%0Q-*xq1_!WE4roMr=TK*MWM*1LY7jTmQBE32nB>Haw{nqaohAn2*auk7NCu2P zCHs&I`Hxnak3lin(@xZH?&_Zzemu@#enFW<_AN;bvO*wcFTkem#1l1gJ!00nn*IS| z6cG?nG&XK8{t9=w-p)-X8akDxPrhol0_+)q;f~n;&=kjyi3S;nJ28%HQ?rOf+c|XA zrQSy`IU$1?yLilt-PF?%@vN4rjLJ0rUpb9RxS6uF*MAT#X++41RPD+y`HjXSbng%F zeM$l}X!EWEU(bE4dq|R~QRrG02a<~JuZK4o=mnD6+We zchXdGwiIaFD0eUtf27yefV^B;2pmBZ+lEVJPU^TjUaB=*$DFn1Yo#+a-7P5XeIRMZY^UFkV)R0H!R9~e6})s|enU8= zcBaQ9eq%sI>X~`RS z{~vM@tH2%L_6S?0!6barqn9OK;VXgPlw~&GZ(^UnhaP$?6KYD|bHuk3uo(iI`IJA| z4;r*djT(xGyi-h;_MVW6pUrz!kh|@f?O<5l$Zjsc6Z&+%3ErnL4x14N=Sn9j(|Y!c z`|Fp;&at*^);_&gzYIF3=|{Y4euqQ*_f>P~rxfREr;gPMF_j&|cF*HFHvpj3QnZ7R ziU%34g#Rm*<5ep-)t_R)OI`z_25mKtxO0h8+j!ZEBgshzRl0j{c=WYxUk1sx!BR7j0n z5C^;Djq;}Ra#X9HBv+!zofooA++7Oi`>TtoDWla7co`|a!yb~*5vXpPnz(K>COQ^zu;^t5MAk-`iK`b$|)rH*lO$1CnSefJN)RVw(6to-bpoQTE?F7*HV!`GHp zm+@;58o~DMS+%ma3U!xE%TCW%Ps`k0e}K+MRE=q&k<4P9N6)U}d;O>Vud$QMvndci zt1`?zay}l?az7(qH9>?-nDJL84T!sjY62d&%n8o_Q|HjMmQ=Ur6p8yzCDN^rI}cHA48ID6Fr@mXeUmh`q4{8Fcxwf{uoE6}Y(Qg{ zZF+R)qv0tuMjDxVRK)4JGvH79eY2I$evsxVl9R!~`bAu$@XZ3=F_A4RVlU$nxnG}S z(XIWH;q2Oybh(qQ+OJRubGdr=hAlqEJIz(0VMnloVEW3fd(-@*BJzM|WBpp`V~UG& zBtlKl!6>4bXPu0FcLj4wO zfA|Jjp*t_Bw2Vk9-W#k!Tj})W()g5<*Xvq}PGrx2{HWFBcdVu0F}{=6{5J5n^4|$8 z5%e$!D=BEFNfF{H6pPtm0r;CIuP|dVd8I(>pmjX@iYAI2q!s$>AWQ4o)6Omr=u<_L z)IK#M{ZWOw-%c(z^JL|KCMueA#I^O8 zQ)t3egN?xnbze{a`t`owIa&^wyU;sNHy9fVH+b0wz`2iOE-~op3%{{^SY@ z#$Rl1a*g~o-5fd_qnOc>IYksp&Flv7P&70PpFnm!ekG8)>Fg|%z#YpSQyktR9@iUT z6eR5*9XNQvR?f9p2}n5g-j>b+kEZ*_3+IqYT;>9J6L9>8+`W!s7Vhuw?5@k@;jctpftrHFh9GI&ou^ESzJ}fO zqjehV5*LK__6k3#BrbCJ>C_pQ%cbU{2{1E)3WR)_V{xIa7y*q;v||KN^Bp`JUcM7S z*^|Ra^R7tY5Y7oySG3kyJf?|!klfqU15rKXL-i1OvcZK(<(3XrRXj0KE~xfP3Z`J) zVnMuFpUR+CClRi0D04S-7JKrFA99K-VFrvwd0pApQ5U~9eLIu#3*et%_?Q5fh`;{s zrS9^gbG!a?BXl%%M@6OpgL@0-jFYy~3A-?F5lgDus*^j*E2M6cDAC~tn_Pv+S}_yX zxF15O#2JDOZ{gynNt}w|QTZ#>eRd}5AvVSi8M_#z|i<{?JXvY8(`uoY{rAs zZZi3%fzbKYu&MdDzW66>ju)s&>!pGg5eht=+r{f!i4jigOuG!b$Hs1*bdp@!?UJpq zKSP0tM-}AR>y8PzuG+%taTPWe?tC9JCf?6=;CbfRTHGuaTT~Y&t&i0&Ow;GAr9SeB z!nb0!f;n70V!qdAv#QdDt;_3pF~c0+|Jwj?L~=OW*%CL(*&zpZZK+-h6l>9g!Zj-uz-ef04QH(=cJ9Lf>kycqQR zF3;hC+yV^NOzQdsx9M^80c1gwG@sDEzc!EbD; z1YQZFgY#Q63mzTeIcRRj|My2B*uiI+S@WZkJx{@H)sam0pMw^}GmmXQ)`0#$e7|37 zR8+BWu-gIv+BudKLt=zxV52<@uHpvZATC*S=8Z2d`Ql*;t9h<+Pnb*6$f1&j@FvHC zKvpfHhGD9<3hYPVf)P1_VOfvxfX*i5jI1va=s5vdS6P#bOs0-{EG701DKU^%$j9hv zAuhTI49^J8du{|T>5=a}ohMbBl9{F+db)GTxXZYDfG*Y5eo}x9lll?*>`6)0*xTZN zF#(^KtuSk@1AfuAF=;Wk-rzX``QLXu2BX2~%tVu;b4U9ym3l|99CFfc)N}FXPVNFe zsI{hOy{_5SEjCu>V-+Evsr5Qi(#T0h(0jUeyoxTBWMn)g58k+&m)LzqEkc1rzj%T` zT3-C?agWNl7;=U;ktU1bSypHFnijozQl3URnU1mN88$pd2@Sxe+pBvuOIJ-q)UnET zZw4jdOlZ(o%zPK+7lmDC>GKFDN>Zhu3UfJb?H7m8W6P~jvR^S9T=&u-6yh1RD| z{C$$LGObs+y|l`&KzclPAS(Mhp(}JjS zL4xQEr(noWmY!Oe!KXCd*XI%1N^bn66fRFfNTkf(#qFGJq+=B$?MXDruu}o?z$vPc zQMJ5yMRuj5v;+V^e=%Q#9UMKxQEo;@kOq`o>U){-~p4QKv#zF9Qdy z6g@nK8jtvfXFJ`>1tVk)RJ~0(2Tind_Id=mAN|_VIY}@-q;ycS(|K-_gL-La7+cFL zL&=wP$ucw=dqbE%ALA5|oQbB8l#-Uvu7Cl{)mOE1`V)&>{xYOOmn#;XG?7mh%HUFO zbkJ~<(W}rh|6EouHglTH*X$m~reVU?Ra2DZ0+P6OGgku<5jADv3 z6f~i&Ul`+M70{KtL0TxGtDqhH!mqDjSzqG1k(0;#KtNDLUi<1i?2BvX=2NGBzc;}Lr5UZqVe=|O6ZNKiC*a0=$(JxQr84-v_F zX_sCSJ&$J+T#v7Iycc;Tv+YQuQE0f2pnT(3IgjS;4nixM!XkO{_wg=KaU|it;R)*zvGlCcEMCdlg5~{f8GX0~1M~&K zBk5N0@`p6u^CvnoaLdhDR0lh@akY|nWr+@@r$DM(jv1XWtLBQ@t~f>Elw0l?6-y_WIf1HZIpv9XlSu-rhpf1J zTjDg{!)moQ#CCA8g1vQGz)4iwWIUnJCDBR*5C915l!lcWbPM-Zq^+p@GM=YXNM^4# z15zikxYLy@D|8||Tc`6lEB=1%5Y4ff^JSM0C2M%5E&SSjrm^N_U%zc?=TXSdcG(&) zQAN6qyW+3L@xN9}-jw|f2k>lTD+IPN+SS;Kb3n>e1*V0n9fy}Wd-1$ADRI;7^H5kp zAPAcTL8EiR6cJ$vS{uh6ZTkx@tfVw2^Go3Be*Pz)ZhFhu>nDDGPR&Z@QE=F;SfysR zFWjD%RWB10B(%DzT=dD>>70w!-*57ntAVmo1H?%~TP-7BF*#A03Olx>JwfX9Ti!Ju zD|8B^HE8{6dwLX%{ZvL|KSG+v7p-460+4v*HG!W{`??;1aOV*<0i)gZz5fwgib z=NA`izL~T)ch-eOUNL=+{di*)`TK|8UwV|jZrWC242=Npv@K+ncl3Y?gS!|UA47ttX#~_{H;ueH&uAa zLP9l4O|(1}FGHRQlRrl?;;YY1VAm$&s2o=~_EpUZOOG_o{1d7k)Crx_QV2FJ>!Ylg z$x>CvQLTF}Pg2Nx=+S#=Ebzx)IW1&Cw?utE2&}Dni0_`6?1cmKk@aqsB=UT2CRQpj zp|&x7EugzdmzxDFWGN9e7kCs7;MWI$OG-J{QWh?$8*j1n(%m40h{?*t*}0{!I%`BZ zDw$}kKTmHq)LONm!289uPpY+ggQ$Ar_H`Yd+H{9mpQDR6;#vS0%hQqMHuLYQ`0Y)_ z?ONV48&XT(V-?t5>nruPYPf;kduo++2pvhSslTcr?c*tpe2yORfn|0C%t{F>mu z?ih`Lbl2!^kd}_oFggdLLs~+R?q+l-F<_K*2}nzKBS<45ND3IwJAdzg@cnFO_uid* z?m1Whb`27}IT`V9hCkl(-`9DCzf$}XRR!hdv?I&}D`JEc#Wc?X5(3O^xh}F^`(xq~ zza?Fs@^}{jS9JEc%{)})m*ge zqPUDNnzm zwo}kzluNqkMmo~Wrt^Z`f4y!fY>152-hrD zBH)7P>RvEOKy?|A%d$?2%BV(&nY`n>$^t1)RP|Aa)Iq=Ks;3;7bGf3LcB-kTwwnhZ zyU9O6Kr;29valyr06&`LP=1Tn;UyM_Vc3&*vy!sF()NOkG?scMJ19qGgzRIx_v$_u z8`42lB-tO+p1?dSk`DPI=ReY3GJpa&OolTP4Nu?xh*%Q%qSIESW=`M35A^+P-#>c< zDOEsm?~urx!UD3Ku%r+(TjgjW#kblg-dxX1Tjk#RKy0u2W|Z$hsBJK6bt8p>h;Q9yuDj}*t!kQbwXC?fBIL16QXXX8008^R^z#wn`O~d3pAi_! z?3{QGj_(0_yS@zcYQkS4i#A!z=X_$rEL~c;%QD;Qx2X3%V(soIbyQua1Nc#3;l74(M z9Z$e^tqCHd8TdNWY!@$TUeIQEx=KZ_a@yrY1J)$<20Ch2gVEz8TEA&?P5~C&%3+Ur zsR`2`B^@bx=onvjd&NPJoUg*onUJuwFUHx#ohR^~*}^xx)v^?QtOxhWk0){>x3`ZC zHuo+~&-ufpwSm`*=dJ2sRt$*XA}41c*0xBWGxo>nmKZIailqst|q<#5rm{!v`8+ zNKPQd+wk%Dj4S=M5kP~DE7FaDKLo-VW6GmpqMiTC3|ZSumio=*m2K}bFTn8Va^@BhX&(m-fsU=;^rwOB-I=@x)7-I; zid`|s<^%X;iuU8NK*7-QLEB+;NOrcT?cMi%=YsJ%f6;A_1Tq;P`u*-+jL0PE>CB{{-C`A5X2?iOmsf&7ql+R&^ z&+VARjL@*DJt+k;fq!>2+=0?+Lr}nk-3mu##fZfE-eq%!0^bvITkY1VXp#+Ss=~`ES4zWGNh%Yt1zpk9D&` z4&7Hj!|DovuGpwVruY}oje(4mPdh#;&K{M@Io=%`{gZt%>M>}doL&pHFyTC(tJ(A^ z?Os?VVut=o%^6e?^h-eJy;8>I(bUv!rU`hIX!C0aw@k1G?6H%`O#t*Kd(>S$SbNOq z<=19Tqjm~(V(3-ZBgb+A&jin3$Y~tvrN#hAAnR9>tW#0Mx3PTlp2k8BF)E~jMC49W z(N~t_mCtU{KXIln{y0tS_fDK_Pc>v_c~%sC1?EdHMMCoP=DeU`tCV`nr>>Q7K4uu~ zbEV!bM1{oeOtHsfBqBam2l?#3%Q{+sI~9%xfsO(w(P0sG?+gPm5J2 z5ts9iS*UP^hqz{tLl?3-@;afaKAs?;%QLpQC#op_#K710SzUc?(U;E$EIU(PCQR7J zCVQ@H077i0Vy1ygtB5%*qv-DPfdeMHsNG?90B3Lhf=Q_)=HZl!pD7f4Vw?R%beJk{ zYe#K+h{=b(L*oy3_Er=$E@;9DJ_o)G70PzvtZdPy5!M(8rd}iq8ecMmP7`zMA-7b= zLlw1ghPTN(2f<(F1&{vCadw(o`=({uaOzU_tVWso68dxb6Ol-D;M<)-!p=uVk zjTqB=M_37y=!p0lkY1nD??Ko@F;vNN@sM}ea@h2WOJG`aqC8%=AHMQV{fkwHp8GG2 zIxcseX_{uL3s;s~q})^khtS+qy%T>4?2x}u{HuYpSfFb!bKxcXDw17avQW*9YMO<) zsDeE05JtS2^<3h!8q7BEcOL35Yd9W`r=#O1J2$|nvtNX0Ck}cmmAFl3o&vCSA6>|o zB*E(k{*?&b5b`uW6j#xB(1V23W64aNM7bm%kHoC(ApV7pA5F@+@kHT;O1#H-0}nG3 z2Kt!EvuqAl)iMp-`NZk>8Hwyf!aPU#PRQSx&~CRTGQrnQfR87fK`;1>qU ze={(}wZTlq6SfsWwz?Xv&!)I1!o2er#HnPkT# zPI=HxQba;)@m*jHO%bCMc+iOaH>~aIJo!*Se_v*pU}YG2sC1W0Ll{(@a!{s2K-#0q4<-N)a+2NQMS3aX?^Ug{CE{J+WC01Pq}KUYm2HD zcr^(_5iUfpJGg{D6CWglkFZFK&H|j8UaCoyeXZH)(k^rgT4DOUOq%Yw{ddv9ws!@8 z7U9!){->&QtaE>^Zv}Ja`VGB8-X2TNz+R+cImXT4mHCfmuhrefgP$PEoE}v zzR6wNbEO{RY16lw78kLjPd{1w?bfFYj$bN85fnufKQ4P-SWEJ{F1B(u!Rp?8bZ;;( z@8Qs^lYt5an77}rau9)VU9cF8ChSmL>WOcaoR9~jGARqwW@G&IM zkOJ~MZag=KQXC~XQvn?H!q?CR^)$+gnOL!RJBwq8zi_;8b5Rpr4Zl~Linka1<>X^m zyuCd2+*EV^?VHBOhy;J*<$sO!1F)jnV2S$N?mB(K+zI6mq0jZg;25>=qUAh6DM^AB z;)pzU0)d654<|o)Rn4NtOh3BN+Ws~$ z<|k4f(&8R?eMnqxL+N6$_4z{heDh$UV6=}H_jyXfq6m5+a2LmbXCjkqbn*|j-Gv-yrIi^X9@f@p;MNG!nkdK3>E0La2u16GhC&okY%)Bphh;0A z7VDDxi!Ei)s%q)GR3;+sYNM=eSbT1kQ(R7%;@R)kW-*7ME14Mk*B)4P(Ea0m)06h2 z=%yx6MaoFSVOZWqBrKoXht~X6S~Ph^kLGLNie{@o_nOMs%YEZXA=hV!<~K#<8!mZm z{=Vx1oIK=y zDP#_Z4UtEi?tT0c1Samc!EN7dK8%#c^-5vIONhlk5U1$AHk`6m4f(!GOW$=hLz~LMQ%FDVF<)OrALLN~B zI=>N#J$i+YG^i?2tOH~K%QFKZ@3jRZ02TyVDQR_)c+-{J^*T+%NgZg_voEL^ROE-# z>v0%Y5%?U88k)gR-0}8m>+DNxq%4=uz2txIEY>RF1}7Tz4&DDi{&+Yi%Gph zPp?*JAXDNi;8xN2$;rD7C0EoVZFQ84!nLtl0KVzn6z}T$%Wu~rN0FUJfqB>p+kD@= zt8IuA%P^b@&L(WrA~9B@a3vHN3IvENf;0WO>w~{*jI5s*+S;@1K1FgCkdytWx%RIT zu;)mw&r8*qLF`^5mfH00%oM#fwc3wX?)lk0JZLMVZ+nsOmJEg2m-K`y=HAQG8}`Ri zT_i1Wn@^IS4)JGUBcFulGi{4N;8 z=B>ArDs5HCA3_S_s+oCUh{U`=KYy+c*OE|{8$`Ci#|KHYYMhcOa!W6#ViRcg;j2WF z8(Gig7X0VtQtZL62%aSV6}iP!2X0f8K-1o*poW_imH$g(q>ak|O&Vn6aG^(qvDSYu zcB?B5yM5zpLy0!j zbUI2#p3@e8l1lldGItp;2YvMt{zg#Q_*$1K=h4b#~l zuv0DRS7tvFgEUoSEa^+ib-g+d_eg=8CHb_f!oe9MmNyzMy)QnO^6@?X0Q;TRvsds* zxKv49O5<9O7EQ)pKB|51l!Pq3MSZitUZKPxKw1KnY}ETejCzSh`tQNq)R4h&o!hif zjM75;-?dtrFR9jZL^D3Y;*I&&9^2(mo@bN}t4DRqxylas6O0Eve+CcmhU^twZlC2h zYK8f+(d3H+mI{UL&C|>1F*p6yBR>E7FX%z|=H=DjPq<0lHx0cxc}1UQ zLV3bot=rT}{SC3I8XTW`@l^3A9l&Nglwyeeo}~^3jZ}}aQICj3zeLuOOkkbgy!HnX z;1Rq!`Fh9aRT@Z6*u9068q_zNP_xjMPOCpHp5-d!H{w4YpCdC}qhcp%!^%w`6pvA^ zCtuUX`;HrpGnJERTFc#PUyHk7eBf+aWW8a=ia2GoXd|9}Zbs|wfxuSvFkh%{fElOI zsjA=!fSb%%a5S=Pdq~H+02Oq>@nSSSnl$P|OTw5Z7+NfI@_KtuOoRGT?K3h|KFSy1A3(6?iAV}$d`M(_hA341h)DyD0 zqSdf3W|qWKk`-s>*jghq-t%FNESNI)&YfO_f@}&_8xG*Mwc#9acrMnj{9dImu!JKf zPnCn8Yl%funVMuR*(;7Nv{_s_62>PuD0xP2`S@E@Os62@?v8@gu8OpGfunL(gyOo>2J3CoEFyz2XqVJAXh0j^QYoYHLN& zQ6XMy{I0*=IcSOI$9DnLBo;(I8mCwen*$S#NV!C?@Ii?`Xwm(V=gp8!?>hDxMmJ6_ z{zY)M_Sd2?omjT2IosCtZtHVc4N@ZEYY1ezM|AHgmX*%VOeS&oim4KyF|9rK+Z# zPp(Fom3{kq*oV&jA10P&M%mr*4X@M1oSZ9Hj=t50K3pMkEH~CpH_E#WO*ge>>dG^h zc%>b4Mi7ze?><~ZXXp5Tr4CML9V8`ytulsXG&uMwIP2VTj_YH#jdAy$HCMS4W?uZ(0^53g#LA57k#=se_2?T2qfm zRb86uj%)5?{Dh(nw}yKP4CFOu&^)Dk(X5M+k<3Eslb0TzQUn`R?z6Rk3}iR!!NM-R zvsd+;lx#0qJ{^sE%?y9(NG(CBX<*Z91T%#tEOB}%@{ni`p{btW`I2*_gnP#R;Cg!T zwRS}*-$}9d&YDZLnrBXtClj1WD+6K)<_$w|T@D42@8Frz@6R+7D!Q*PNRt=p81A z)ymq=vt7J&sfIbuOU+)cT;+Ygj7q!HfT^Q0pycMW*1zNMUTS1H`UG*bwEae(A54-O zB2oV?1yAQ?Z8H+rcZ&O?t56GE+=@@u+13MYxGrE6e@~<12rsT#o-|e-LAtIiF6N#T z%=o=!XhS`dG%s4^jwz&HC8H?t!)9b1=N8t&hg^U8Z}G9 ztdKJL!e*rLx-TYEYh!c^{Dh1vw_*8;Mbpyz z_P(14tvG-H+&*QR-3zj8eWA82hRG#f;gY&Dp>3`sXvLK4#1kkjzgw|*gQt~$^{%5K zJx5gDmp@w{9_Pk#Hp8B(vxqQw!-h_Lj?c#>=J(fF7xF>hJ7R5bbTqI;|Ln}%+YP%m zcR|*Cs|a$}74yIR-?h|3Y14UBWA!RXq9H}uwvy~>D!cb4O{gNBHR2Et)ef?eAs!R56;C=D{xb%gmey32)%rF+qlhs5CjNZ3C5w%6n7p>#Uco?nlF^zIr+J z&!a`Jp9Hg#h||rPe^FG#xCgIDQi}lqngeWuWZYhziPVChA_wf3wa zrIfx&AOUTcYgzRl=pfyzx2yy===@+Y7zH&tzner^amEtLdIhM5PHQ;GR%?zEO9@OZy@D`n%Lk=Z=D-tC_eTD;6 zol>n(yk47>nI2T?vb zcA;2;r;3H-VlFB*#vgY{zA+s<<2?I%Iah!tnG%97ocTlsz%)HJ;=#xJPs%^QD=h<#t1=xc#3J^)&V0O)g!( zv)bf^3#d${2`#zM(c|kDUNFLm%TzOE6r5SK`OITUzl3}+jauU{eUqU|qfw@%siLKg z$9yHoDizV2#PhGpO(Y+L8~#r&mx@H$L!eF{K(eZ+DmUm{?es505iWWP`uBu!?JX8n zTKSY1awh|JcHXv<7?lffGFP>dPeOG5rg8+??{2PzI$^L?)Qz#GTA!ZCjVs(pOB-h$ zO6SooM*QFJTx-q`sN(mm6fcTZh=e}3iN3@egaCiyyNRvS;WE+!UKu|eNsu`AP_hhU zq@>efXN(ik&F6!vvQKX`MnxU$%AO_CtS$3MM+_yWPsPLQ3an_AIp_S#3Pv+ps?*xD zgatQx!D0xDXjzlNG~L*3w9Q*%=#Zq(T5nx1%5`=sb&d&Lyqb}F>9c){7PitjC#@HZm8V5M z8n32y5N^!#%R9)Bob8l7;<{0-6Y>($?GZ>pV0=^oy9z6G{j%k_6c^);m+i1T*Kf<9 z=+9qP*~OTQ#OpqB9H4U=kc>Sv(@V0-J$>{`N%TL+vwYNjN!>TOZ4``bNtCik6xn%c ztW)ba*ww9aU!79($S5@1x{^n;b79)t?nb!5LHQ5Z}Qs;1gC_INfgS<}nj8pt*Y zY>VNXYOJ?s*ClK-dAX+wfwlz|$PCn{JttU-HR()0?G!Sc5>Rv?lj(YJF?o*b(bIbO zB&!v$7K&OQs@G$K9Id94F^;*~U{A{#TiYmkPMpoXJQ}D1TvgZEiGF>1cfCgsB z00rM8(Uf6n2SS`!0D7z~a#Ew#SjzIi@DA!7_4vi`4K4YW^V0J;vw{z>D`cnec+Q;M zN{WMGs2}XJQU38py5$goYPnPCjCYs%-EXW>0+F2SA6ajn-MTW7um){HMg5yR`x;BLO&3Zj8#GdJrZ)Ka)^-|jfsYd zaZAn~k)!bn#A*r$#)*LDmFhkvfaG(S6=qsv%1U#FEq2?x)dkYakb{!&CmN7?T%N6$)~&#Z)X!li9++5U&Vi!9U1RJUVE(%chL)u)D!-ghIpLCER&4 z*pW-9^-a&EY+|tNxR=lORc~9~`6lsl2%Z=4J%(|0-UmCo3UMRp!cj@!XX}S9on7!o zW6PpEj>0MH;OwAUI!SfQPH}yQje4M|T@nZBpf$91`aNIKma_hO6xSp>N=UJb`#FyA zTkCY5o26$6Z>%scV|4{ZItw4fWb zHfgJF(RrxmMpxDyzwAb6$1&Kgt}nB62iJ~PI>2!nsB08HGVxJtNiijUn;I1V0M9QH z7f!s`^01gWDbKNKTV4SGFh5EN=#lb@B{s2dNPN81sG*2=Xc6hqbv0sV{J_|M5}#?U z<5@2xhXblj7WZ%D3LM)Vdv9k@Nw-&MQvhbGogMh0oU$zDB>D54q7a|j!0qD6 z^I*}Xg{vFi{i>vbV~LNv+y|O{FA@84LjSR@k8`VKv9^0HU#8h*hvMuoDq9J>_g8-bB9V| zp$u*39YK$;bp*Jf01oT-%W5HDcHn~q-?XX0=svv(CFZz~P9MW@4PxvQm`JHHBU;k^ z6bXMPdT1K#w+yZhXgIABo9tV;XD*WwQMFu9j;5g%{r74vGS<4rh+etGG1HU_P=d&~ zw4SburO~8Ro;g=znJV0&XKh;n(S}^uK%6rYj6eO^f3?Ub7(Xi9y&gW0{%HlPG?W_v zXcf@kw_i#(;{q>|Y#~!*U03b9sc;>~IDC&5CC)(Dk9&zkqza0}ZAw2+j5MYh6bIK{ z!QN%{hi5q7VtZ*;5OnnSGlb%{$_MX3TVSh-ZNZu{U*hs${o&$X>qvSnXBn-dT%RSG z7~@U%iEq!R*$8Jr@$16amMBAZ~Qrch#!B(^D0Sz$~560tT=J6Y7ElMCNk9PK&&Ta zfZJMPvq)#bu9iAz1_J3R8PPHFEpaOE<9I{-@&uB$%#m7NUdOxDKngjGv9`1YalzN0 zaoz;(@NGjFR?O5c zYN?nc+v`$B1>RkR^tJLBi_UEphnDKzc5VxL_ju=6G&j7lAAJU0oM??`qm15bp65&; z&3}j~s*NpQ&L!1$5u((YRN{ZlPzdf={tP}|ft|WfRE{7%HiR7pc}!97u1uKZqUAG@m!RV z!oRiGPle?M&ig#x*9^VlihTiTKT9foGTP7&xRvM@cOk_&b7)fHeQjWK8H>fF5~goq zSg?)a z4;ayXwjj1upi^oSM~E66*RLNKgHkaF8ZfS0zc+kdaIVJ}!-bY>C`TJ&IJ2ba{3Y{G z^bFWe|1GHH>0`c9=<6eHCCV*EAJw$P{nhn3t@a13>$&c0qOpKo{Y?0XLOdO2oxjJY z+frSOTfR*VW>+i$Bwib0k4PysKlwx|P*RM|;vFCL7^dcOpgDw~l3ug}t*)a3e}&TL zg&C`y(Ut9|Nw|j5nQV6X*tU1aqpG(Cekn%9w#ta(FMWdZ()PPdk5s|Um5t3LA8Gn_ z&wqaCC|+&^sK5A+m&R$yuALQGuo1 zM-j=&vmwU-jEbMc1rq04f>$mPXnI$XxxGHBd9ZccP|)+q)VUaJjIwgJ>?*scXi<1M z)wrK#{2>;Qcs@9;t@d?lL2uCt`^b*^v7z2wf)bI#b0g8r&*RFIWJQ84&sC{pCm=2s z4z(HN=QoI0FV4y?#mzUSQ6gN-!_(fm<`*UCLU5yh=+c_DBT!e#qgW3@$E3^V zN$7%$f~gV7XG8eC{IGjQ&OxmY(uPU(x!seBe6E(0?i`9^T3l~#mt0j$y%I<8;NX4u z?Hpb*H8}xoi%R4BV17yl2Vf;n7Li^l*E`eGZF8{CuewDZ!!?fb7ANJKhNH%t-n_5D z*l$l%YWfib^i8=7{#reDU-r*@^~=!|03eLw0!ddzS?Uv} z3lS@%?+_&!2@0}$0U}e;DE$qDaP$ZcSUXa~nKL8QDgCa7i9~LD=`J?1-Fn~QC3n?S zyeNFFH>Z+oFIwTs3J=w>CXn%YKxiYM~Xa~(4bp!#Qq1l zHNp`>{r~ZDMXq2Lj}vP$as^d)ltNR4(}kcaKPWFGo%GJsnkaffg=<)Zuim9&9B;&h zeZ`m2fj8iFS8Rc*2L-0!U@y|%GZRO`4Sn9pREEw}A`E?xCWxRG zdI35Aku>qvVG_SCKrQpo+t=MW(py-^5QLZ&s#)4Mv$Li@VL2NlGQHXY4$7-7Wwp`R zsrJD2ec}^fhiBEz7(bh)Xi0$@s@UZdZ`k%Sp$GagML&v)s0Jql^Mgp1H+ey#1PU?V z$La0Q??1WlB&og|o%+SuziG#Krr5OX*w>OpUyA#>@UV@UW<_ z_KtjGf3wZiwL}_wd9V!$`CXH8Xk}^cK+exu8NaG`{f^ zKFI8Qb2P$oGgnL#QKtdWBOA~87O%}hR>m7cn1Z7r0?JLPgzM|NoGvJA3O6sjyZ#5c z@#KRrUDW9V_(wJ#9t%oHqCX<5?vCrsT*NgI^Y(x@DpO% z)s4KQi>J0P`{=B(EE+(SN@R8@Uo2QE*_TNZe6V4_8bJ@qrh3o1N>$oK=f@tym_N>x zAm8e(dbT_TZmJ~JQ1RDbR?$S==-$KW8v=;b9GkYyf)fIjc2Am?FAS#{&holZ%-5Dg zn!Gx<+AWv*tscIYEgdm?0BxwvaPoxZ`*u70g{QiL?0)D%VG&m9A{3}xO)t}M30rHfxl^*HE5GVR5Qioz?P4&ORp5`e zxC$%;J(*C0^Rlp4o}1&0N17^r-Sl+xeyxSxii5G6D(s0PpPXpU)5cKlit~=}3u|Ve ziZS6L-6B|uv_kZYL7w7*Q)&Mx`=wPe7c=0BsJ_o;R0XStjXNl4hPxS8{>ro3Jztp! z^uDKbC~igG?~I2c*YfAJRp>YNKQ1Bf!yZ4M_x-sHnU!YT=3r-cvb8iVbvpkTmSp=6 za`UOfu?F*n62d>SxTXG8IfGDXWe?e;33txp>CcED@3iySd(RMKcY+rh1yU_{qe-cM zzX1SPQAE#Y93_MjG@Pi4SQ8QnApk6lD71Jqot^ze)j2r$Nq$j*J-yZCO=36s^=X-- z%>P=@{&eCSOb%Hod7aU%ynRom_YL}{b1H|21P^F* zamMO1lDAgi*Va7;TOz8zl7Oh(?8&6Jyeeb_I`ZZ@pTYe)E)w z=}>Sk@h<>clro;QaufA#5?UVA^{)=6Oh4MZvE6g(!z+d&S1}!to_or@qi$Gar36bu zrn?2Cl$u9(*|K`A-L-USZ-ha{m_ilPDS!87<9Uf{0x&}@y^w#kidTL+uV!@pU1IgR zZ|`R6*G@Edm}`(?~bp~AWE0xXYX1BU~PdIW9qH2zrg9Dwr24*J&0 zdV`my;_BAz6zwlOggXkIjXYZQXi|Bi5kiiP)h5}c$qOknten1VO(v#kxnC{hcmF|d zHg$wbceW5E3Qp(R0HPo_uOa=93Ld{@M}1oPLHGLH%tM;2x{{(P9?5KYiRaqc%W!+o z?^APt(kUODJ8DiF^6+H$!05{ZF;`f9*`K~axC#P~u#OEax zm=mXQFy6dx0Tlv8cKN^<;(yrT}7d zIxHA;sJ$t!>xMOUeniahUZ>}2ZY}UatGx(=B(GXzriAyd0qGV10NDti3Afh+>P>DH z#dzSFY|WLBb(+)5fp6iIY@vta7()Y8K_o+0zX$*NaXbealrG!(9v7vE6hAZJ45ay(_8MkCDL0KKzP-gU<=fylNaQ7vdd!U_rGmi!v9+| zEOF;(UX#gL8O+~?&d{Dqq>D7=M?~)SFP&=PTB-0c812-RF0G)+n}Q{+6VcqNzIVAP zE;uVLtLXAZ@0yYlkzl6IsvX7naH~Jccy~1|$}b%!-IWaaj!n?y_FRn_Jq`$@w7SsI zEeo*y_sR#?5!qr=)^0?E%fY9~{=`P5{mGURQ0LS#hxH0mAdkuCWo15&4^4CAo}N7Vsz2g1|**VxXPw62Ptxzj(9m_*H#Gn=`Z6Thdt?{y0d99tVpHejee9gM~FEUenrv@(uBZ(Js1RPsO?UN7@8!1j3#cF zMeIr~&ops>bM#%eerNPyOGDbS);yK3sfcn6P)Zrb*WYQ_#v6VnO{C319G*_T&%ly)$tH6J{tsnunovjpBVM@#VrdUDck2Q)Y!7Ca- z!{6W?##RI_;b!6V5AM`XR#VIk=JNoKZedR zcGej@t=jsUt8wjU~IQ+Ak(#xDQ8tqNlfFo2U5*}jh@VsObFXC>rSWuUVF9dnrUiRgqK zU-c5w(&ST$_%*d|rFEx%v*SE)KI%1G1JF2qQ|;)-5fEe0D(hMK)`r{Nw7j1 z79vrcV#dK@(M(0NSSoo?MPXr&S?cBR`G`7(od_TSQEgc}5Y>UksK}n{I{b-LpNrC* zJ?Bsa6g^k27B{V|S&)W&^QT99o~Yo|tQo4z8yUtiH2epuY#|=a9xX`oYv;kHZmT&-^V)RxYLh%+KKLTWP=}t_Ccs1dV6U>1;1ZSpmq~)reefMhY}Jf-Qy=#iO7)9_CorEPh@(NuE|dl zdi(g{T*Su@Kd{1Ec?gxL#(lG+^UI!<;VY*fE^2JQAtd(^7s*-H?t9}7?dVF8hffyVi7CYN4n%vdeM|~s ztDs9y+<;C-46!u+)jf~)0Otbb(4P^C^5TQ-7{=O^0Q|6ZJYxSaY=ceXbvTon+AN9`Q?*Ck@%=sn6>pPt@dThQzx?S)nM!5ZD-b2`Tlk5b1uy-_|Cc=Q^oBp>8Bov|5?biQc6o*N=+8s z$LJ=ah!bGX47=c#Rz#FIZ1hA;kSu4IKnEzeV+F@VYxqe%?ndD4)bx7oIeB2x$p&5c zoER2+p-Puex_pb3$z4NTh@BC861Oc^aya&UakH9()T$A_71)OAw$g^%(cl4k>ccqc z_k#HIj(hdGf<$zk9B-Ok;EzB{1(HR2(wv;n`QbLYoy6S_?Wmw-O{A#a*lAAt=6j> zlZA?MQ(r3G7!0!st7n;KjbO%pl!oLu^roSyAelulkxW-_6hC3dHzv3U148B+}*X$(cNY_6Jm z6`)_2{2Z&`O=xQNl7oH{y{Rxchyif8O7k2oO8q(e3uR|*Ip;(^5n9relfz{uK54#x zxB9T@SS&JQ)F@}~Zf>S{@9IFD6(^~RehOls)1 zXt|i*B^eB6d@6r_U0cff(vEtpVBgR_z({Z}draTsQGc&>A$oUtrfwa{L(|69Q-LQW6Z4*+rmhLQe zQN6+@D$ETv`8ZO^T^{xGyj!VhCSna?cA7H*^6rWaEthc*a_xe8#VqCTs_B1nbw8Kg z5Y`!dOwGoan;lUgRvsYtsm_OltEc z$h!|R##fhaw=ab}V+`C_%ZXzk1LNM5UynFi-yd7p0?;6ooo#LisLpsh-f;1J#D}C( zGgUg=8x>iM>6CenbL}EjkT8p61!|Sw?9i0xvY}l2Yre%i&l9C!ThgN_2UpZ=5~j)$<@WyOw~uVF5izd)Bo`kbLyFrWwm@6he-`7U;jb1 zPQRrz{O|a6V>olchojtjcmP5B=J%YOe}t0h=u73j`qM3&aKi_%6;c6tbbiXVh;Ofw zjqK)7@tECn5HYWTlf-nDYi>Q>ft{ zh{%nlfip!R4sUkYQSAtey|e!RNV=-9HXCLcw79!_ae});aEIXTTHK+yySqzpcW7~^ zIK|zq1xi1l6i)h|T;w{>lX+*~-JP8YX4AgdoUakhQ6^);6*KToPWd%sL2f zd3Yk&e7a`YFlTG?xyMXG^RloKu6Gx^sSri_wfbiUc^#S(d^3kaqQ&!Z%xC1&NN0j_ zQCsd)fe;xnx1j`~EG}YoBD;2+ol3T|oJ1eFNODCx7rTetN3_-n;(q+P(-)))-!mY^~HzS0%5}` z1YpF81@0!f;^Hdo^r+;~N@~=qmDtpg;(cP3W|m5BL{*fd6dtj?bmMGfXt5&de00;| z+B>2P?Q0t6zCTRf^c!>{WAfep$f^-{q<~Q$pF9>&DHx(+=?pg z`%xi(T^TC1a`VKW2ICl@dl)=Y4ZmSTFyntMp?es0GCChUjdvY}C zb(VG=Jg?72pUE$o%nC+6%)~6_3)RDn4xbkgQaDNA^LSlkqvM1F7R}Y|>jo>O=P~Tw{bPIEOYHEUnIXrNWh_(KIq~iNglzXK?Gz zsOrW%Sy)*cU*odES=|M5+&^@r1eCt=H ziYzpGDn(O+ZzKDC#L>tpB)B-T`3c2KECZ>6cidgrX>=|myheCb+qcYqs2$cQtYXwo zM=Y1KjGV&m9(pWUrq`ZqK#Wb5H}0_Dn87^G7st#(kdxlaOEcpp&O<3;5U<`J%zIID z?OmNN(;H@WI{gZToXppFs}Qx7Wn{(s_?k@*s9a7hR#N9fCCe}#gqaDNGqR#*QSs<- z78g7WP2jAo5!8{5g_)`B;Zp}l)U7Gbsw7=>9$*%Xlf zg#VIRx>27RdubA5>A&CLGpgu--0>HHLN_LuKh#Tw`F7Yx^yOKZvDhXn?BR{fTmh?cDIAN zu}++kB<+vzI?Qg(KU|&2tsrSxC-|AyiO%#Limm>gIc##5G8dryQJ!mI)O%wLarOV4 z)v4`4hjltb+9R3+x|CYHeNprA%`KgyULqfEcZMVJZ|+pz3C5X{3q;!#C>H<{ec6KE zraUt!YD|TpB|Q)a7+b~_L?d1J`nij-3V%Ow>{=aZ|A+Ot7NXMC8l|8ghk4_MY{g;X zyK_iLHcJASjD26ep#R7{W!h^@t*ZW$X4ppxnr2*Lt0D(Aa8t*Bq_+A~WE6=u;=QvA zHmY3pf2_d(Uj9ToE=!)`$zGR5~-2ZJWE%jIa28}%qY9Fr) zS^RLo3$8+qOE{sh+$6#2PD&O~Plpk6uLDyO;tta=E=TQp7T-F2=aYSEWKa)H&Gd!X zK)A|h^JHe_{D)hX{;}M85~3$~0jgbc4^Y^Y{ufhNX)6CO|2MV#((YHHYjptyl~uE$ z2HdI9RO&eVuaMRY+=0k+9r{T%=5N^4NpqFP{*|C|d#xGCBMxJaqw*p6h zlQ*B>oSd*!z>6+RXPjK1=u;E^WD2^q4$#v6Z-uehZlrU}*(Q=u^s)R596(2zeB;xS zoho-80{G;ET+se&=Yz_mS5`!su%K(LRE@|@Dr*z$kdUKd&u_CyOKkm@{h|iT{Ge&p zTYtxg2Okfv&fKoPz?=Wxi+|5nH*LLtXVe9z68nvEvdD5V7%qMX)poV4&Wv0y<< z(uo!zMqe9ndd>!)0=`k9NTeSa7apU}%PdW~h@S5rv7NQla|cOT%nd zgeOs^<)7L&49x1OC329rPf9XTea>=|hm(~;Mk8YwV(mljhi%s7aPZYPkE0~5r>cZKgg|NAQtJWkwPKossNSCMVV+xii4obhpDRaOU7TNZmogPXDzxt zd`U1~-yxZ6x$B3A-JUV&Z?{hRzQ<36`~}u0e{na!x{X`F((k{FQN5}FjDQfR9{F&) z=@SKt4V@THD26r}yJ8pvDrw5!Z9EfYz9~&iqK*s~yutut-1+y1_cuw~7R8ZorSPtN zB+8m`sPXaYHPuutuv%qnjzwOPh208murtz%qKq9>zm!PfHsJZW4hUWMmY`VU(bEgC zln9)s5i=a4Ejtgb2_teDC1f3p$C6=CE^K66+L7h-_$X8&`(ePd62LT7&Pan|Lc7qi zdB0>|TYnBqlGz;ne5`pA9n%^jU)n9xQPwYHXbITmN|Wgo9+#JX6tSY6nsiX0K8$0a zy{YKLDvv!z2>Y2So$N$d%>x};LB|=LgZ`ccYU>OC#XihkCT1d~f}6n7fs?cCJ-ReD zKHMUTrI+jEez7y2b5=o0=0*5dC6n0EWZ& z=k2V_E>TT~63pRj89P;`CNvXvh?!e83*K)tLUfDE>o6yqe5P`HkqkUXNUrPQXwNN~ zlqD{3`s6xqeF3P5F|R7=Evdi#RhLt(@YYi!O3=Fk73#~v0!0ib<}c& zUpg7KS_sb$jVpHUpi{`1lTlR5D$H!6CVkh+e7DEU>};uAAjOE3d=17%PsbgFk@D5S zRyKfjE5e)Lvak6Exs4=5W))RZJ^%X<Nzwt_q4vV8wt~UeqAZss zrXY9r)wJGTYv&TOSevb!D=hvL)dtZyP75xiFh)sBqF@_MTiU%=B*ypZW0ne&kF2N>`+O!R3-S?Fglae zsH!KYFccG-=X{AZ{2>FS!$<~SD!Y4fKC`fEwC;1Uq-MS5g`9?(lsjgso;6Q_;cSaD zDWqD*5Te2h#;kf|P6UaD$Q)F7a%tbd3RS9jy69(GUqdIp!j@`*jC&aM8{3;AkX~ zB*8ge4F)$^#nR0aovjGg*Ut+4$)*r3v%DfNLM(D1{To8rJcwl9_2P!iP`N5JUT5nc zp)15C#pw=F2I>*xJL|nkZ!y3(6Okyi^bGvhb$8~?T!5n^6Zy@-w(h$e;xK*I+c?s? zP@nk0aB;ZKm_k1Y$Z}rnanYxi$5B*=TIch0_hol(>$>Z&-~iW13U~Z24!K1V_~8%R zIL%}ypwMu+6m0@0>MD-NhSS0COf_iF6P$iY4~smuG3%5CcLA2l`0(tk^AT3FoExM_hm)_wuh5>G7ULT%V@ZgjGi8wgo=bL^+WX`Y(Z0*o6pay;$JKXyCn38Hl~T$lB| zxn5nD?Ch&B$wZ_YE_3JDH=_M~#!6aNT@3IFmOF&hkIUdMk|EMY?r?_0BEP;1+C`_p z2h9KguE4=`&3fUSTO;mC(CGG165& zPLs&3R1wBbr8-726iw*c(3jbjEV=Cmel@94-+o=HjI(=oA@f0!q8OSIAt^2#ROx5d zv2=No*W%xKl z19tbZmeq5o)k=DQe`k6B`uF9g=l%U{8ONPo6R(HAW;YP5_O&VSs29@1f5~oVwX2_T zFXjTg5Ji4>Pjr)u>xfZuR)@KNAv+>gj3TK7;NTnMN5~)}{%sa~vo7#xHA8mL!hbFL+*=F? zB%2MdJUW26TOZT=2f02Bggjj>Tn9F{5;W*JLUF#?DrMKfQ9 zMe7y9W6`7{hO?=PfEeq`>hK+fUS{(2i23G;o&pXSC*n7LczK%5U1|LKqrOF}2w5Ev z?EM%Z$YkfF`Ko;xLSaMW)i12UOn++El&qDS%D6j#j>=K5U}Zk*$@NWJoc@yNOtBn@ z`_t53WHy?InOH+rJ@bK=ognE7;vYG_?r7VF>)2tqIXiOE{r(EZC^AtpH2gep7-0Kq zc=Q85;L7gR6aYU6Ks-6*a*rv(sUZDC+{h76*}zCSH5m14&8J))}2MgEV!mDhMiSA89b=YX-IxRq_U|zNU zU--KBNGx9&>a&Jq7{(w(kTiJ-5J(j4eQ-##jE~2ex{QRtg2^13gH=xNGEKr7PDCTm zWQJg8kE<~$E{TzVg^fu_U6jfZaea)n?>#|fCeJn5Y!+|98El#3+Dcsq>N6lGS!NCi zA`UZ4N2#E|iBn4df0jd3)c;@m;9g@8XB}gL_bds5=KoIRSJc)-?$VZ&N3j4osDqj$d-= zL;OT4zp9Q-d&Lliz=ZI=vW1C>eaBjC7Vn}}Q5;CQAamBNzk;-RYsw55Y#R<1o#O7Np(P^8P}?Z`^k*I zsR&#f^PoDCKqL)8nC>Czbj~ESKn6It&`=n&jc_R$$@|kxDaA5*IAxitSPr_h1iLOf zCF#VR8gm-BcF#%hqEw}SCykUvNdQT9TWSh!82C&A^Vqt0kd3#IB^y6d7*iAK7-)i0 zouaB>?v^D5TS#Pt%on4b5U4nWO;yjwK?9_u`ba@9%eTc-!p={vfP#mLoK%WOBoZT) zMM0=w202ZI#7du6OmmNIa#WKovngg(hFfUWZ`p}k|L0~O(PaJF>jYu?3&2VZ1lk>q zo231Ulmss+)x_-MW?W!|L{oKtk)s zi=sq#Bc9I|1#x@z7%8^?qL8~|^6TL&@|OMmG1+baGJ`KEYg{dxz ztxr4E{tt2s7*SNZ>ZCbJ?%p5sXq``u@ag5Cb2*kN--=87$V@+Ft0J1348FvCkn$Ey zm09}hl0!yoWb85x^Kut5G(WJ4h$andF3;^rJZ*<{=kH#GM|4_QMk3>H=i4-l&8#&= z%1(LB1}0UKnoIOeQ}lZ^UJ{GU<5CzmIuYE7bc8u>uVPkefjWx_F_{;-L^f~D@XQng zd|e%DT#4uLQ2l(6_kF|S_4i=4^Pc~%`-JPOY;;R^Z_;}!>=94$oIqoq|0xL-#`)UbY!_%+IoM3F$Py!b&cAq*5BOq zqy=NzCfKTRCb8PW=hyFV>4e?3Cq-w)jlJJ-(=Y^5GW}fRI&hM7uSXkK^>w$ycsrHb zHph|{iz<$1Etxfo@L~1=0Qf2@3ActSB8jR~F}i%@`sfhAg62#bGn!EvenTWhRLM}O z@SGxv`X(Y(a|%gWO@CT;0_h z+Mhdc54D2^7#s+z=dqLJsp*OS5C$g-sWBH3`^!}?{L+sRl70EUkt-l+3HXM>POYG1 zozXVGfPp~BD~!v`!#n&?Y=DXsE|*G#CPdB{RaQznjOGgjpoT%$f^1bGixgCz?&ODA zg4>B6%7Vkc%yS?b3uq@2Hyj^{9PpzyzQoXtPFmyBF$Pt|kh*pLJaJ(^+0e8WGm;H0 z&y=MrPygSLWG!hdQA3^dlf`{1^3>5ML=&)=v53k*;zk$!1$q{-9}}bd@gY)Wv<%`)Yno&@r?5PBn%?moz5{YrcEO%GvYfgpF1@}& zr0j`**r39U&)ca)TBo_xd52@i?@Fm>Y?S@SeEd+ayPMga)FJ0!7 zQ?iIHC5A5s*C*C=B~~Y`PgiOQN={1~-dnKb4QzJ=e}3|&iuL{cAqfCTfUieQ@5WIR z49<{`W3xrM^S06&F(+$5mDDrn4zN&LHPsQVt}jcGs{t>KWixbat?cAyf`8V!et13^ ztG3Bh^SM@j2w9iGf^|a{ZAzlC7&p>(bNbI&PFa3arlMdxwB3n}_tLyl;74t`>~Vr{ zOFOT6K2jLCD#Z!bU5x;Pf}4t##pwfbJ-{_IU}o)LL!~+SaHWvkEe^lioPF)jbQ*;Rxg& z)luuk>wX65{l{{%7_wz*^Q2HANua_dzxBBZuB51h%0T?$GE|3NMeJt)UOST4^?LmA zLtL(ooYtrJ=BS3WXNzt4#B`*)B*|Vm`=q0*JqS;8)g)dj#G`CnumlT1Z95gnWFUi# z+@$rvR{s8ME7}4xHvB46&z4-Stil=jB>epLvbdcwO_#Sv&LZ)%!)hDUaJ$$%|MS~# zlXu6Rp1a2{^rXUXzq8J^CMrzmDczDQ5|42~&L&xsI|Q}9zx1sDgO!TFI8d^GnUN?i z`|H2q9B`N#?Qp+-yfh+&3D|rC^z{IS;2|LZ!t56MbIPdbt%#7)8y4VC@i5JdW?&ic zVQdGjGf}XxqVX8bVCk!;{IKNbP>o`MR~ZG0EmKa{l@U$6b&AUr`lr){sBGSOmeJHiue%PNOzLR#ZE{HKO)p0}x~8+kmFL z&9sg`LS+WE+dry5@1QYjvd|XQ%W9{Eho9h5#U@DgA%7^3P}Kn8xp#+jL-%Va%{c-~ z(##gO>&OpCs^Tr&*Z|H&PMj2NeT-Rp6}^`zCN0a1mNi_!NW^(_T^wF+S!d_ETdzBGKf1BaFDL41~?FPB$9)+B$ZMY_Adx69)q9qI4%5|oi zo?#7Z_WGYf^WPb(zp4spxBtDfeXoJNwTWhnp@j1Q+b|A zwL`ms?qTBOmbycD!x9dZRfDPAGs&8?&#}v+#^q`rmVW1qiL9LJ-lr()W&Zcn8DMd5 zm6yq#0v4uZ9EkhWm16VtXJSR$=Sq(aXQ!%;G|7{bWpi*swIfrDf*^aw6)#{$R-K%! zbCjfO_&0aZ7$8bkZkvLr1&=kI+pc~j5_XWMpK2j380fjkt{-58H{pxAgpz-|LFbHp z#Q`@wM8()<9GtJCdRx!!r8>H%)0AKI(s8kFXs##FKH75x&afB`Oq*D{=RCHJOTx=ND`3Sb$BRGq>X32Az%m0aE++plBbL z_pPpoqB8EMrh>9MT-v&^s`B;UbHCcFjh0s{q^ojc^DOpUnBrFut}6qYEi!at+LNz3 zmHJU?eW_`9j$jbEsWdOB6o_(3T>CzS);9<(Lc#}kgbuMiZ3Thh*G+_LxUJj(3d zdeD>Hcz*gclUynOX3Oo?kUAI9*K}N7QCNT9$xo>EGg#X) zSW>^eg%vo`kM#M%wVD-6V~mk&MWbffeo(W2q!L;oGfSi}2SVhR5j7AOs6Ps&${-c{ zp(&*4&M^ov=}@KNxpZ3Xm>)XpZ7Oian(17ZQE{0kcHG$cO`J&UU#QGiU(RD{Lvo^j zLzNhWv+i(V>SO7!@I2#Y@@Ss04qQxhT$geelfi#P6=R% zvOFo@1YoJ}KSRTLjN>X5)pQQU`}~@o5vUGb+Z@VrqHNO+&;+lpNh8tU+Oms5T9st_V^HhMtSeh1vA(2I!j)0OJl=XjtHM%>$`tIwy^kJ3? z7dy8lX5QcOb@=lUwQjhl${MQ9^ZDT!HFzBgm2U1#FbXiJtjozy{>we*89D}i!7&GB z4mqadLm27&C4$K0BrTm(Ds&8_2{Yu=>6NWYR#7ui5}B#dKyV#K(;Wt#Z66QWT?Pwe z1i2Vy8eqrL2N60!cn)gkp}{~U{55I{^8!JgJBW|><$jgG%b2Uo z=rQNY>kkgtPMt3!DZ(hTXS~mO9=A05I9)v>mre82z-&^NwR5CFm=Hif2mumRX+*_N zY6UNCz4Gb>1bvyhc}GNNB$n(gJY&Q|W19WS0|?w0>}SttCOUJl=8AVTBA7tzlS=ti zLvKt2t*bI$VMou@m-0C*?h9&3Xzi~}GNr&Xc+{6=6@`Uskzm$%{#hrvK(XKcV(ECL zSB0D{@kh4YwPh8B9x=(yR)m{GtCM}iB61!roksajvB=EooKjL$HJd0*1HNgd3!W4j zYi-p`2OJ*K9R~d{XGgYgtMs}n)~($wJiVP`)|{dWXu16bT4Q0~4%TM9GvT2Q5n5FS zB$d6)y#G;0;gh3DXvU6L3}@(w&!Bn`C)I^}te~xg(JfX_u!qeU+JvxkNTFVO) zsa84^{;hN0`5S$LU@L`q$uiMD;vzPmt9VUARQqdCn{3acQt z_dpt-2w(B%Rq*$iB-`9eFKD2OUWp2C+G>D>UOs(n-uVr4ucFxx74Fh9>VZ@b4YY!SSc?r9^)h&H! zMM95f=0C_mGvi{Em;0b;N(oa?cex7_oJvWkBgwyL8%SaSr=ROrPX_BZW6#E}5Bf>= zrC+^TcH5TW-W3{$U*J9ol=kQPuUV`|6<*N)$Ct)HMosdFe&zUrISs zhoy^XO(w0MT`pa%f9rAGp{Yn2OsZ>r{o)i&w0gHl@3?Zx7-&FWqhzi=gQn`pzvjYO z-LZGVv(k9oxU7#8@7lo?5-1W%^IUs|SvGFBf?w6q(bix}c~&1auf>+OifVNFOUtLu z_MrxYYdUNH@{gOO+7sK)*0Uw2x7JF^>yJvTb44489!6#i@A&^tBRF7sNvK@7lyXIp zF7}z2S7*h^z0WJPS{N~kP&C%;c^wR-m>IYXW$l{$l^5j!OL_5s;1AfNNmKOrXu+k~ z_m8Z=^(aQ)6$Ux%baKCh&@W#JytZT=d4{#UCNFSN^xaOvVg?Y1YLQMSmpDg7!uO@=&hCSQtm|ry&fgR3zQ&%fxojo(yYdZuPi?B^u z+Sp;k+ToFbA*!$kO_6f~34qatJERqIfl92uJZXFtocXFm$A9Sk78z#IVPGuL6<5Y! z^$vgW@U;N?m&5b z8P{v)2HWQ!Nzms2``8Z2M;toe zq%Hk2{i5G#_rM^9M@%k0e{PY{r5TXp;nrBqR;f&d$~Oj&#@mQTnw zA(k2gY{q>vn>#DL$iWlF!a7Qfj8+sOq*ml#8gJ(OvP*YaE@kK$<|$Flf@Jjlllkav zbvHCE@%~ZdydZRbP%6{KZSq(mNcF1a-tm@$`M#<|#inAU)Wx1JTQ70FVs6>SW*Dx` zS$aK_jj!r>zGTb)B%J!mV!r7}cM8&+~P9sGj0dmRcCFy+J#j8T)mhxW5}FtrEJ0 z6?wmK;OSSqPAINW9gfq;{$hY71G`PZYdme>&QGfr85Obj`ebWdE2p8?Du$Ye4|O!* zdU?HFj~&xf7(;y=aoKTv8paOrs}d*M38`&<&~>AY%@Q0|+23wfp;)k%och%81riX& zkN{!VbPy{75$|OYFbMpZn&poaE71Ov7o{jK6AxW!@4pNF%rH})U-;G-g2R$*4_~DT zQ#-m4&}cM!X8ZiwaB0w@nFfvmO;#qLSIoa|%epv4$k^Nua#_Ev1+W;IG3A;|=n%B95BE?)jYPJ8Izt^U8P-SKI0+sF?17it596)b+<%-U!B8Srs>uVTBh5*}Ud;$f@` zqq@w;r+*<|01VG4Y*vm?;_v#5duBd_Tu#CbD94;A3?e<}R%*YurXs&%OqWpA>|ZQx z(8CKdJKpm@BtGlx-(nx#n_l#Sy8Hqy*K5MhYVmcbq)d?T)Gob#kTi{f$=r z0lgKjIshkdkD6gcQ3wK9SFP%)B~tZ9WvQzq_12IXE6hAul%zW#OT=uA>D7{pmMwqq z4D0f*y5b|o_j#Sas#lhBQc=lMNt{E{rWr?k3(%xEEhpF*xnK8?IrD2whKQ?*4ihXO zcJWvSY+d9Od9Y|k{kT$#k$Otmu4P-2LIvPFKp3Q=085G)xbua|nYZ(f;v`e9Xg;l#$K@n1JGKRX#MO(Y>YJ8MvWv94eU|Ped z_%Qzg#JWYJGfzZJfQe4-+1!6;?z~QH_E&0sC$b*A_hmU%rYM1gJuQD>HLA>1=~`~O zM8C!2udoIFZBP3;iXqv@#Rh4w{K~JZ&mN|YvaJb%dN^GYzN{cnG`zi(qmm&Iy@wV- zrABWx)#bYTz#v^jS6&HFOd`?~k9(kZm>5_+N{<*tP zfGXVBsOFoHS2##TFX1k1TSXe?`ItYhN5}q!F9R4W%4qi=p>uy5`O98e`HK8jzxVuR z^5XQ;lO}Uk*5-+h6NUfx+br?Qz2vGcoz;Ii3mi;w(PQbk=IL&KsG~}n)92g0k18me z35$t->O_p8spiT~k~yCHO*&L-$a}U#KXH7tizWTgTvWTvtgr2iX*$YrFEzE3g_((^ z)#O{{pvX;=pjD{1d&l(=a_`X^QMJmf5v$;tLau(7%%;&tc-u?Q(|cL(&43OKSbPyk zt)J1TOzis9L0kP<=2e3_po#N?s*paR_yhGnzuIry%@iBJi$pVy@{Aq>yt&8zV;+Eci{{xHp*54a*CdjfQ^4)D zPoILtSlOqTW-R0h=2ElvS<~iDr8d7yaF@}dxEY@Z6^RdqGvzE;bC_hX%m{}GIZO|J z&TIMK;dC8})t$PQFtmNhVP^iva+=tJ|MOjvtY+MS=8Tj^FkwV!GkR3`bz_D1e%X%#&U#8EMUKNVs;#b@U+USm2A0+afqAiE11$nKp{<@qXZ*vkt{t0RXU8Q zgD)+90aIw&dhBWRFz$DBIfPiTw;mFySf4}NWq#-txo1-e`JH$%E7~7y>!Y*^po9LuC>E}2Q%^m~TVzzc;VWn2 zak3VzCA?pvebFEmp{Rk|-N^9x=7QP>nd8#!y+n)_7lm`m?&#WN3MS*Z%BPc~8A-)~ zYRC8h_LdkA%0)}>^3%jQq4AlMn#0<(4u!Sr|ID!8Zj3_hfVaiNS4F* zy=vE^+O~5Dj((=B9im>c>lNY-5Rtyl`7{fbV_?Ab zKbETsJML50()a=0ccGB{V>xVc;eYMJFgfG-To%3W3+_1(&JkhJMqxRYPXhxJc=#oa zU_Ft#*Luh5B$f_7ftxue2}7`K+@LH_&&Fw+I8j=9`LwfsbuwEg$8UmVL8mCo=s#{- z+GLKa(k$99;)?IiHns$uzmt;x@I_U?$9Lsegy|+Cl8jJK^82H`h6LFZJ z%5HtkImGoaW(J~u03HaP>tc*0uLPk&)E2$6`881=jD0zMigEyXmr|=Ribu8 zBb7}lr;8UN0nlMA0OPlRvxCKq_9-m_oZdIN4*iSL_(w+9sNI|f`1rA^) za3n9xWJ!geyV<&GPnJGSoPc!eRP6@1T2;eSE=O-g@rYurD)8q4@<_*QzrATxnR{70 zZo<*ItBrHdkH^K&+zq_!r)#%2Y}INj>lf_~EDn`ry(Zayef-|`4lOecDMui6tuSyEe?iKkm|4_49qOdI)_Ry+sa ztIXG%NB!^Dwi)eLIpLGpr@FGOj@KpH;2qf)Y2NPGGC}2XmTP;gvWW9N_g+)BeF5q2 z^(s1Hw>-P$W^qN*IPuUyX;;mz7V{rt=XQm9AclA&u9YD?fNg^&m$i!a!}*|^3amVVsuFI7GVhY9PM82TdnFFtFkMt1T<&D$%dUfsy@daX05bq|mK zAlDKW(W<7oOk{B%Gd2AWa$3Apz0 zBDVlHIyT$mC~WsKvG$wn)*i$BEew%drCH~PyO7j0xXDM9{6DXzE6>>=?yTAqxu|)O zTOFRyyf+Sg2wxCG{wPYo$k#lz!eMjaNu=&(8RaP-H0o)!9g!*T5;uvoYCKo|)-WZB zeCo6 zw$P2zco&zk`BawKld92pcXsW~fs;-Fnljl&=S&cPXoxY&|eDY&`y zCJFnEE(^0R8?NsJrAq-}=ISDacS;3R3u*jv(WK(jrU664XN{A3!fP>_N`7q1RIq$xw zvWAgRxtV2l9o2}g##>Ck&5<3R*n+qZ1MJ=helH}#6fC6)_%a-ln7{tC*ce;n!hk6< zkLJ^gSW3})?S{Qk5Y$jOT;lN7mr6_z%_*-RPLOsra z3>2wd=K?$Faoi@mfc!u^xnuA+*c;!%>(7JTbbH8C0*D1aYPum>*7iFGKW#p@L0R%Y z$PK`b7HdFL&Moc(nV{_hgNgQuv6?b;61-5)n3&ztGY9v*sA|*h(JpRFq9kOZ0vmMk zu^xK>7WVW^01u5*u&M15#ce+%qM!tb0uv3SwJRx&x)awZxW$r?x`(z9s>mu(mxBZf z1F!2UYZ+~_?uUrdKH&5*heOn``jRVh%1;8W(-3RmJe*{A@WH6=H}jYC7Uc3(Y$Psp zUUNP!Di)tMen}1q2r?FggtOh5Lzi)c40&lxUkznAUDs1^(^5Dpr;5sRz5! zrzqQkwIEfTN<(@P-^VyDTS}5*)^ZBPW_Pc-dFe<0rXQ!vw*kgww*Wv0Y`iPnPsdz& zi$0amr84v2y}Owc5){emh*;_|?E|j%kT+Z^ZqlFRr}$vGHVtN1a5p5e)tvc^$X;-4 z^~jGb(zlF8R--_x(hbzwC9L(F$$MNltRba1H&T<@bKIOoqj-e3F9COfHo9>8J+&%G zF+$VZ0I!knQ}L#kr^dp1gR^bUACZ)@O?ee5SI@HKwFu;2Vp!#OJr8gZjA!LS)TxnB z$XPWeA$036=VMyB+QpFciZU5#G0AE}3+q%fgX8&VZct5}P;(JkJ*SMW5=eD+Jy6l@ zr5q<~xQ1j-Qkq{R@HxUBgOC72rM8EKwbfQ+MuYkfm!Ci7tP0;THhbpo$ShY~QEo%c z@5>Y0E%z2#pBlff%4$c6Gq+|mK288vSVa{@Y6Af()B|Nq9)q%xa5_cKxbYgECP+Mk zgnX6*_He|sNyRtX#tK@^75J*eXbd8j59+AbyXR9kx$oj@xmU^ z$63HtqS1FJ3VC3BYG1RLP6{_bQ`vzTn*$q`m@*|!R+`T%GPi!d2Gioku_%U05bqT~ z4N->x6av}~bxX*o#`ZKoA!p-e=a0-O6~d%bhl`?MVQ}FiUc^OOPV1j7A)(a-4^Ejn z)|@&z{-4e$cV=A<1vBh$6te#DQb!r~tHO0Om+YM;)*yDK`x`4)xAhzB&T|ZQhvqM# zfk-26DALF(G}cz9_emLctF)xDr44w=wb^+v_aUZoD>R5=Xuhgde|#(cktaay#g zS0jQ8KDt%=zKfeaJ3h(|0sz&V<0=J~X2(k*L}XA8a_yKpeNZ%8rT}LZMl-8}bVA_@ zIvh_g^WwDIFJDY zaQssR4|e_g&%W%vTx~i)39B$7)t|;1caLzxJjSAbeJ56T<_uh~P%%ZnNNlhUMmlO= zn>pXoWC<)>seNEwOPS4N!{hEH>KA7sMe`s!G1z0(+>bp>uc*j#H6p#&LcrG4*F=2Q)&9UmWvc|ojS=Kj#~w}I){k2|QL$b#eMT=-*ek6Q4=4|YfV zu%cnjFMBjl5vk_R2eok5@-zn76Ra>DIza_PNC@t25ttfg|5}lSrflXi=Z;m53r|?T zka2#6`j4h2EED1GE?7|gC`v`*X_c0jt}IqbgDL}G@`IGlfHrYMbXH(xnl(G zw_0wEwuwXTmMgpj+UP?&cOL#UTuBcHPfztaWrT1}H5;9Pa}K&1nYp3M@DlOOSF9I! zx_^+H!aRmROP_$necaTgCDgVR_ph)b+CluZC^Xv!x?&|@^NT&pla_un^kF`Bk^Jeu z_CWaAY426BN(MVLDj>kubPgm!h;SB8xNDag|DQNC~-MUQ`nO_c9 zGI<<%NaZUqK_4VwxesxDFR}4Qo)o^Yt~xcn3w?)HPorP>cpW*?rUEP?A0tR=H92FV zt8!zSM}VeeH0z72wm!npCDH(XvJ934abCIiCUHtFa!K{-T?hq}V-L2A!#h7aWwb&x z>*s?|_&sl``pzFp=CP!@(WuIAE8}%vu+-KZ(z2(cO{_*TOg?iEi)Ozu6zHR+|GxyS1WVthTc7AxAFuwk=V=XLl z?^QJR#n~>akKwBIb{hal=oiR2hLwH7D4_lXD%DzHp9ed5()E>3G}TE$Ho=|p3wQ-;6fch0?? zFyo#6q%78QcAJl;b>?QZX~7e zCShd8>RuK5pgNldlU(5=1(C$IW7w6MNZT|#YJeP{1Sjwi$?mhIx%Eab2@+#0Vt zZFfm`vV$oUMiTuQV?FqkK_j$$-K3B5YWsQDO<<(1(V3oh_Z#v~fVian> zl0#xT0j2XcXS}e4l~3t2WiC#dL!>{|Ump|&&P=wOXb(TmVuvu>P!x zrAW3`{u#}Lod9ban&h4{yt0o7YVb!p$C=WhOVsF%wmfWBj_61haQ?nPv@;Vx{g}$P zXk9Y-JnkbUD&7+Vp#M-H>!8GraUXx3womR_zl)$VsyD=pfRO zd1$3G2$1nYj-jDBh5$uAe;z9~{!(8-gc_L31ql*W-&VrVjgkZe@vu_Q@JUea#9DI` z`-yM4YJcvd(G40}guT3z5`C#XFy!V-$^Q|rg@#*K)DN^1xnANlotkNAtsUP0GcQG> znhrwn!4d}o{q~+Dw+bA7p`)LR+9@nPdBk{%ZQVja<97H4&?;S?243;6Luj_N?@rEd z|Mo3-G$EFtCj7>9R@FaF9Io-HMROYA_moZiWUow_;T1$3N8xnJvgpaXVv$EJDtro6G%R>eh0iBbn;a25s@u!e5wMq7u-t`_y=2sE{@ z#OHD;8tAQU-DJ3^yy#1p+0wtT>KDfH1|uOgi1`QS@&~4bdRr|MiQZ5n$ZMTsNop>S ztTFLD^z#zMKY6Rl@YZrgzF0O}u}j6JRxG>3{&;ZPC248v?;~&#^3uf{9&X47)*7K= z_ErZub8B$RR|d&^pSUsy*W;2GFbZ58dotL4%S-(g=fXB+O1`lqhZj@Qq|~~yJ6YI# zbAQj9cKM3Wurd8+Di(GkzLP_(oVen=Ui`_vmA1dX6EWn_)ApmRYAXjhq-euiZ^KCSQ8-PU>p=i@RNIgHw4(y17VxgmlbMPo;jn;f3Np%2lXv;w- z-^8gLy`t;fp7QsV+NjB|m9bw)lXnRIJ$jJsk@>+b zzQ%#>Jd6!MC+lG**I{u$zQqV%_jMuTp%lywDHzyb{naI`V`-4gSOvI2dQx5b+q%Lz zWBtob@I>$1WIffFLM~m{8X}rKQ*6Sz@&ZU>=9d?(mlpduwL-V2$hx{OzNy4J)=4eg z-+9D!!vX{}Y9T13rxWDnYn==dHYJ(}A9I6MwVxDvo7TXV6*2J)X@(EaPLito;)d({ zt*rrWnEc$-B;VOt4=qPZSP4S3i8YL;g2tD?Z>X>jGdm2Vl(-U;fc4~|_vz0q#Ekhm z+GIy?wLY4TPy9jT0zZ9Ui#czbaX(Z(RB<|)d^NN6P`ye$lKUUYc4we$!esN3xm;th zT}yP;m-{y>W8<=?%Q>RRtr3>KHWXlNZ`a|?FjIwXY zQH7q#1Ki6~Lun(3EC(5tufZ2nFS?CgqPo@f3K+~V43Uqc_PdU4qWNOnoV(&g8t%)k zxyFSL2`JD=185F?NJVc!4#odXtXlt{d8t=hQwv4#f>lJyJ&0Jc>6&3+ zQ-=pfhbM<;dK0~GNXhoZ>Y8tme_i?~1G2GC^1nQK#Q)g;)2j)6#@}+Hd}ih7?^c zABpbIMN(0l+t(PR%Uopmsx;>pKX-NPC_ynpnVSXsru&#*umI?WUzM556qBqIW&C&m z9CIh~2H*41H_ZotHAb089oPaWUHOANUTQHeJJzmTMW$$M>|EXFFwBRjfF8Gu)W+64 z7Mh_CI?4_cLUEj#;)Cz@znh-Y)tK6MZJY?aSJE_h?d&rg#~;poQM*4)Oo|cLGS+>*=y7ZW#2(iKp2ZMBM=Z0I?bA9p7+*pwvZ9j_8pe zzFH7wV&YR@tq+DragL+=1Qs8850x^MhAFcMvi18hF5+~h_>6wqjN%#LQ^^bTs71ot znP_oh!vSb|vWmuUgCcD7Rm~~0 zL{&wNjo{G?tLWV9kTE)g`oG=c0{0_WXyMI{-0A+`etYt7W+j@FOvvZwdr{JAirJcb ziY*I^!5?gv8-iogMSBfe!onOln=b$I97)ni-nZTA9$B=y0slNsoVB(enq+vm9_&`r z_niN6G7ocjDst-ycf-&*I+S-QKTc-PG`Ru*jPTC!PI9%OI*kd$51 z`+*|*J44jYL1dsq%2A19+3DPYXTsj*#fVFZ={y^5rs)k_$x%N;w1O)QGsTEQcTd(v zMtLnbG>W7vkWE3`$S|?m65qIbR+a3bGR+3$zFCan@zJSj@SpS;-H^s_o7fF4W@cur z88ZMtIh-5soy!?)ffz7Kg2xh#y5E_BG}CfDq?i5P;fv5& z6yQ(2?uA<{?Oz_v4{9}K^GdjwrPU8ib#noA{bgU&zd3X>r>(Wc_#_Te1OVv(oY7Su z>q)L~xrJ$GAQGwR$82hILGbrCRx^4}DL z@eB-=baZJ+6e+WSS1t5x>{d_bJ0&E^HO#*A*LoR%i3Hs$8n%}>QhVJd64@B(-;I?>Ce;s8PJd)ov>a*>>>Ji%$P>*%NlYv!60ij0{!fme%4mqR64%;Ft1r}GVT?En5V z?5KENNb-zezc>9eN6=OFth{&A0dnWvp#~+d_hK}{s^e-;Xr|$C-L^Tj_~NA_eew@5 zT3%7ad;%-JA4d5nVhl~&`W$UR^)gv=$DWteH1CQ$kx4AG!DJ1CS!lLv<}+kW?fNRN>weFu+Mtatd-PnZ1a+RE07uRFzIfF z*LbHVpN{nkOR5{lXEUI|HY?+w7szjhIC5|#CJgrFtC#*#EFYu*&?}SfTv$A|?Ru?rVQs4NK5b4)?8`m`}tk;|fy^w;!!Z!%_VntE%^I0x?cz36n$0B37!=Wp1vWs#^+XxQ{#hbQIK? z1iVDsM61DP#0lAad5@w>*>gKXJa&|DGCgktHLYY;)L&T9e^Ip}Hd{#22V6}17PB(P zoIXRy;}Cq$Y{mPi`9-l=pW>rlTVt%1d2YubUH(I{1035NlB+o1eOD-ASa1h4w}vYM zUdfW-Sqtm+;%+Tw)gKxoi;7e1l_?q}@G`xz5E^MPkb??qY)%C6HIFFr%*T?H6JE2b zg%;D|m-!^Qa&&Pzs1XX_brX+|ABO^X=|W^o)YvD+F}Znd;AO$SAWNhQV;PS|!RQqy zH0wbhx$BqrS4 z=M2yr#mDQ|`x438S?Ug*NAXNa@nc{|YIvIGl=`HQk~tbY?h?m*#ko{BE_1VNXcvpv z;W+xvNjJD{iC8D(?S0824B_|ziYVtTscufIA{UsDacY$9_M~M7l`mQ~RynYmu*f6q z-na{JROHmmaSru~sV;b)zD#0AVuo)U zQ0+hQf9*$;uz>moPY0`ARb20LRx8>%CsYW|#n@iau~|i#_u*tu&q#DF2f;~O316B} zYS|oru|>6}>!QzYi4pg-@gX-jE6m|t7LlUw_f{7(-+qy1& z-k83$f#u$aJ#JRWSC*TDjibLad&d7pxikS`^a*pH1z$qSb5qG9EsBcr)IF-v`lOAH zR>NmVem?psMrZpfB;(!*_cUfg9lKd~)Z;qjAOvY*Wi}<-e_p(1O2%fZ+S!pu_K!Op zo>=m;@Fwgh`|Xl+v5PkL=LNZr``1>Iru76kss&@9%Wjp;iqs@;m7w(}XI_{&e_A`VUu3ifLg%r_J2N|26xOI2y%f7)`8>yZp26ay zQEQcdz`@Z&ueQnTx~v1?RJUa7-}^GR_Uz9aL-;q5l}dxds_RwIUJm+{xAtsc$;4kl z-F01&>5x3_SLAV++Z$M2W_XXPJgh|MUzSby#ZH(iTVr!~H@bCbXvRZOOCljIBYz4X zlyjvx+a#_lyE#>+9Q!(leBy$RNF~%j*lCdkFrKg9`e>RAI#kiq10p#ixXcFHP`V0A zn3syply-SBOM}1_DH6T{Ve#a?`9yhhWJ35Zy!HD>M%Ob|Z@l;22$<8o$Ur5ujT}k+ zj?Xlfn?MF6iFp8XoXS?Bp$NG4ZJ)f)kW1niPN7w%!f8oHBpgD6JAFRH^dU`<5{M=Qi-5ie5v9L_f+AK$KOUmP3hT%I*&$ zPKKz3=o0+BV&Nc%GchA2tkLnVxNhyULXHleQ12(3BPhQl6Kap z>d$$qatlerD|))Q(jhngF0SaPs4og_bp;gVd~BBMgfKcg*g+_hMfUk~kEV0tTANcB zm;YKqehjoTqUL=jUwp2{*9t6pZYWo(5)re*bE+4Aqq*+7zoId70q<5EX8~$BW2<;O z{>(JxgEe@TrY+9RFm-{naTK4aBWDJVoZ`v4d)$68eES0)uL8$+Yqm3uxPrOJQ5m>70tJjz@Gndi!V>k(M-7wl# z=wRe0biT{ZN;Kgf);M!xx4#}QyWTH$b%fLvEbwlcEJDn@@fl$D7hicum*dW@t$3CF zYBEX`bT;}P*2lY&w_;MAWEXGHu?di-G-T@rL0rYxu`GGdANLYhCGm>qu=~} zFK3edV#Exn5YHa+$)zmzdG8rQA4pssYbSf!{j7+f9(%=ifRlKDZ&bvy{L~S%V^dy2 zTzrkpU3pe~;}QdV&NP1`CDs}SQc&;s&f6Bq?7le^c^Id1wVN7fTzd7`K6we=9kC*sma0)&94Wed}wjkTqX84d`N`g>Oyp$uVgo>r9I!_Q$I{0 zkF;?k{Zjp{Ed86z-!7Q-GC(aliqy<+l9t8hL)-`u-Wu&x%ssAk=@RGQTf8QLlH@Kh zSuq5^fpsZMGH-3*N>0X(GUkG~K+gD1_b*flv!ZczoBy4OTk>`FbL9ZuQM48(;*$y6 zA`+}nMI9L00rv`p-)scpJQi`s7`KfVrrDjao$Z@w{MpwL({S4V`uBf@`7e(c`B-Ix zA4vVgSFcjj#1qFPp&;Q)F(#3SY)IlULTH?dX=q22jT7vH{p6*@goYV20A zmw-n{Y8sGIA#Rac5#eR0mo@6KsLtIf*2SUzuv;aMg(;!b;isxATpG{wsRd6xVlzw; z2IDOk2sV2s>gN~KNOL%;w#3IEope=hPBbv2`FOh= zK>H-Q`J|yI|JTE6Gs(60n_n;Xyjq}o{Vt!eb^^DN-a^iI&Lt@k6kSB@^F|zU` z(Px9ou*|vR3Btt+$xCc$Sopm^XLS+eNv|6s@@!b+@@kT0r+XQ_5U3(8%~`Rk)JO7=&of=OP%Pox=zLPB9c1^aG z%k5GqPUDA|D;Fj^i$;N%=nNIyDx1^2q5Uk8tT>w-SRZAMZADp`KEiN$Pfg6EV@+**rg`Uef zctAs`AiA|dUAKhNsF+?n8(qVktTK2gNDyKBNq2&VG)u+Q{Ie(Bv&G$$91Buln=X?j4s|(^AYO` zN++OEqnYV|=(_9?dYk+WhfGy8R+>k41$0Ya5a{mZM29T|=7 z`lRGA`&Ein?~;e8?+w;0rILr@j(J_o=>HPhcIuZL6S!xZhGJC^IOA)`?Ez?IuHLR2 zm}B{T`l39sQgVWF*1GVB|G($u%a=DTzW(hQI?zh#LoQC0y9fM>j_i4#%G=}9c3#K3 z)L^_q(O01fzi>=AG_efoNzIc8r}P^o=b73saFk2E1>AQj1qC2okIkOb^eLDd)L(O4V% zJ1h>wy=NU^5MvjU$)YI;;Z;{QQ}?h}3yA@5l(+mE-2i#FfWM|7B>PKZV{>B58&Tmf zmFM2@SFQ$;9B68~XYN#i#`SK$|HJua07i{c*>SyHsb>j=CF-=`Y>I~g{Im{rEydPG zbohXOTot)!FQA#Jcr+m81aTX^ZlmnRjp?HVo%ctw>v705yVYN{vR0#oe|_R*$YMloyrK#f{#8Fo0QHg$$b@jB*LpVf-gx$) z{vSc1<(#*lo3;-xMN}iJF`dV^AIbST)p>vXpI)J8QOrB>1AwfT{r14wkoAdY7dmF4W~Zmvph@!C2d&DzLyO;tH7NQ9Cf4E({;DAPGdbKd z#L>?u!0=nbj*1!)Lt*;mMFJrYg-0#xyJoSUoQK%>Jf=JvN>ugVWh>69L0^6o(2wwJ z$^F;N_h)Sg)nE(l=awyuoSJ$Yj*h`Es!+8~9)fRC;{2Ly)S1nCnu{N8TK}!ZoXBjW z%!`;v$7i?j-^SczlTjx+J+E79vWAjVNk`0{{U|-ZHPZ^xPSD7__6p>9%jf{CdyMxZ+ldad77Y|{xL?KaG)ryH6d99}+r_;TC6@}0xh z)GWlxB9gsvd0MoOZ92*=o;!TFkr^bwjNbDbN7^NU)%g5I@bEFt2y4l!z!a%!ugo|O zxWWC)kfb`!_#PW0Ry>GIPXjkR+uffyGGcK}L!WW@+B$$WCIVddS_O@hT&(Fj$i9nh z?8%`C+9VoYH9>(!?0jlYc`;DS`sBk7dQOc3b=s zaba%pMAGZ6+KD93(uxsRW&k>V53R_`LzK4R3-=`7Z*=L3l-{pP-^qiW-Cj5M4(&@% z`b`EcD9SLZ+877y?xxFbE>^Qwdz(%eDp0Hu1=A5B^6F^(JA^lK-yV!+HBeWRT9aco zs+G&BJIy5^^~0f(E#Qg#(77T>Nn7-iVt9)ww^18R&9WTWY+q*Gb+{en^U5^fTXXMb z;WIh%5)f_Thv#1k_KsHQyraMXMO5Pg-`|ugCUOzvXv9vlvDA=m6EqyGnJHP>fBl(2 z^?qM%!c9+npSJv2#?rCw=VEphi-6ILD0oPZAWcvx*csmc)&abf8tcu&+L8W2yGXI( z?UF5|jwp=Y#4)E*!fjY}%_nu47a}`X$HMblvA-WQ-jv5YEFxRGT6#phNqf-izHJY3 z|8Jce03bMFe08N&Et9D%lLm|0zorI!_F)*sgX$Ksn-jsWbIQS#`y6;`ExrB$->E0{ z0=w$!E29SfL;SMfH2Eq_6pKrQFKlZI$!(Y?CHAC0YO=?rxdj(bNKa?WJg0D!95*oh77i4tg(5{deJ2wLZ-R1~_*-gdC&OGpKaQCei>k)+l|aHF(U z9~;k;2JQOu7RY&MDV6(@~9d$Wq?AP)A zfuvss-^du`@}OFIaTIbp)n9ot-5MR=W1?!JK@YPx1!!Dfk|2_)JoTpEdxa)TPs)K~ z+^|Q2?(UY(LWYc;hxR%mE4kupS@FgGX)bBmpl#t1{a30bLdk|;nOs|Qrx;!r z(1xml!ZQ+T^2@{uD*lUuJkMw;3BIDW#=ewrWQ5*BOp5rsD6sV^{k(_mD@~XV&rM|58~>PIJM}=~9mU)bX%2*GpCH66G*ym~>GarFP~f3Kalt@m$u>y!ea^H!=Fi z#Ec$DpHRBXO)z^<>rZIKritk0KczGo)nt{RlZ8`B&fD*aFFCsW=I7TsLVHeLyjaCm zSDOTO7@Gx&X&vEhEsWfdtWMqNZ%^EmvBXxxwIzFn1W-(Y7s}>A#ZmZQ0%g{!1M)0< zE;gSeHypK}plA4$50T7^?~59ELG@ptb_(OiAr&Wy6=lJ$f1Evx8Vxq?XB_^#x>;du zRd9n%t>>S+_?`GN=3Ka`rcBrk{=9>zlD^^udXc5Q!4Xt83z@AO42XI!I)W}Ar+n;8 zMm@qa)AYz!8Sz(9a}AVkzyZniS*vWCFE@K(-Q!{mo~%r){9Y)8m=N?h&iun9st3P* zOCj#`TG%~a#Q_gyePWPRm>8(W?j}4>J@u|0VWqEv>-wC6w&tx+9KEAaA8_Qb{Ua1+ zVXN(NZWft1!Fqif(o50$bc7jlV2b}^E#B9?n{lXGmq`0QKUXDEjHtAjA0`Z>J0Zif zPwG*lHBx=gBZS*TcQE>+Va#^V)Hs?gWS7Q3=GAXyKK%;ejbu16RkY;yLyW7wRLtiA zv7QNaEu71KS_vVk1n%t)|G93Z8Hm)5(PW7Kxm~G93$rvfUde6E_WR|l5MG#XNs}WM zaQkL=BIfbKOznD~e7)ChANJ&6vo^?fC2GrmAw0l>wa8|@09T*DY~4|>TygiAO=8#Y!qe_M+!gt^0G1;Pe7N? z7Jk9J?VqJAmBAy1q+bZ7>lHj7o-BMX%;hs?rs>ajVV-5LUC>XP_2np|=`Epc{<{gY zL)(yRb=xj6j+v0L$za#*|Jr5K;orG4XiaAjo1Z2S z&U#LhqhXiOFE#PNFt?{QGgWtagNfMYbQDcwO<@^p~cKIat4;#=EFon8IF?)wbcVl4J}xKG>Gr=I%J|_>&KI9`TfL`Q1rsvAng+Gi8LvJ3x)w6Mf1GmP zTD=TVE%O_3q54_GVr)2>Ive9GV58LUPVPmbNi$>tV=8>F7Yk!?!vA9ME@QH#?Fy!C9I9$+(Dl_P>#0|1) zUvq1Bt`k_Zr`<>u5Gz=j7t=-?wdTBpm|B4^P7|k3&-61;VS-e=*gqz{yeo}W_Ii!S z_NL0CrM;!X)O@bWksXDSZV^nhuRdJVzY6HjzU336w0SASLxhO+IQyd+l-VczgDrB_ zgh_R#c2PPUz;mf6Z7+r`?MTFgMP2sr_FdV0E;7Dl2HWh;?wxnjOFYqrGvn4B$yddV zM%7%n$%F^49KDpGYHtY-AQvtak%YNhQtY47Z8+B?-#EA7dZWwoVea?2yC_-YO_>LC zO7iP?2a6`#N;d0*d)k0pv>%q2MU6|A=p(C{JCu8Fy6D16FAM}YB+ImHO>C|HbmarO z@(<~YwlQk3!_Drn0Q9QEuLRvgOm|h32ln*ld0y*|ty^A^OI`xP!5m6hYe-MVSj|r= zv|Ywel50;opwXJAqYgnW>(f4&f(`X$K<+2;1A3_G14?o_zXnGbqu5CCA_j?n6}y~R z#Ak%x>^4DgSL5KTu_TRfuA$vAKS?&GyrB@dj}mV3GJV^xq(|%ewV^vbT$v|{<<=k>(ouWftaqD7^ zQ6h9zP#`|h$I_q7V8zcNNTPSaN&1>Rqb&o`+(ugb9_PYL;TmapHU`OLTIN$`ck_;7K}z6~}# zQMr+C<_Am%jO5F?TFv#@K8N@;zbhEpm^8eV)j&N!dxU*SSQvqKJqHJQVtPV@K&NImGx#8YZ-b0`N0@uu(?Yh3FZ8)CsELxRm z3>0R{AH+y_r&QA$z4&q7_rnFxA3^VbRww5>*=sC!q4e?Qyk4vq0MP9Dq%@9DDODL| z6(N_)Vg@m$H6rabZ^Ge|G~>fNB92L!0_Qj~Lpc(8UtVg&jd*aJV)&8=2Fm5XTK~pT z)(wq8Y!H%kiDMPWE2burtRK#C0X^FAYu86jUYOja3P1R2Ybn)y)US))^HoHOx)#JF zl&lwnsGYO%tC-b2_7{*T6V0GRmelPnkM9g8iW`TcP>dL5>T4uAlc5|SoJRymAwp|f z?osn3xyqyiZX;Bcv%N__g*`bm$sVLY+BWg?e3i#j?b*Q%r!^sp8Vm@f;U&K5UxIqUXeMA**LJlsulv6%e&0@nuFE(#PnDdG;ucbIwyNB!c8?$fz%R;W* zV!EYs6SO&Y$vkKmny{-tF#atNA5%SBxTE>21(+VNLe`pfkCpZnM1+3mm5y`jKbn&! zIuJywm(N3=sZL;sCpX1O!(&C>{XR8h`j5en7Nef1!JX(n;bbhJ*CaSZ z7*(UO~lm4aCNSc$w1oE?|(&JR*z zY%ha@P)|S|#-jZyhRvG#ZB^9>373N@a$K|8R^DI0j<4r@U~_n}RmBInXZl&6GB$d! zfWlXv97MJ45%njB9^1026JMacB_ZIqkvM|U<1QtFCS`x=zX)jE?;IM+FB->D8CM{c zBD2D%Y3oQGAfH!|vFMg1?n)D5?>UgL(U#Bm9!#2Ro{Hl^GF(cUzBoaP=@?FCDp8v`*{#6)XVjP$8&H^>^?+&tp|fJ{Zhl<20ip(Tu3wv-Tkv<*tk zoHT0@Quf_-`!`fk(07!DP+ooZ#SCUEQ3k!13L~1)kZtbOPxIHnl##nwCrO9o&LKSU z2zLL6k#$a%Bna1+&zGd-u-!f#!gkit%#1RVY)LjB0qRXD?;J<>g)#ONadQt?u`Fj! z+$+WWIYR0jWSrvU0X3v=B}MWF>ZRBR<{)PxqW-b;?nN>t+LF6kJi~=?>K7y>4;z89Vrs@^9UHZ~mk2c2(J$5G?$jqE3dA^6dM+rBrc-)cn zAS7VB#pa*^;XS@geK8`Eq&5G??ZY!?s+`54OCJ6xptgn;nWx!xz0p=c*Lv=}bKN!c zUv*#+0JDdJq$rs<)H%lYnuV($JOZfr*;DOyM1zc92|+DB5-(^r~<+nh$1!MW5;e7Yh) zvy~T#r8k#Ml^wH3ytZ7fx`gtkuc5&isDde9&4Os08$BEvGvg{IRK?=TQv7m! zZQl~cL{^gzW@l?+?N-aSn#r5UEEhdHl{;_V^7X%VNXeFE*ULQ>6J;UCO;^^57NC8< z*|k>wAUWx3BD1+v$R*I}yl6!0wx^?nFD0Xmj!SM8U*^g?AldZcbI7J{FuPYyjCC$# zEJR_RU_udlh$s(o)j2Gh?b+lqWX7MvEzh~_knWWM%w-igO4sM0lFaAkEPONlBQ4_^XW{ev)-%V#e}yl$Q?$4D zcyn#mVXb|Ak&IP5)QA%tS>~sp>zPk|la+q2Ma%~Pv1+2blPpEwRFw$qTZzs>&N**O znk}3O^TZGE9W^nx(Cl8$a3gZ+s$Gqc(bd_V(nKnDPOoab@C6i*+OGFmd%j*@m(f?b zmI-G?|u%pq+R@l1!ME$uL^jvVykWbf6?> zKLW&jtFNDnns@m^LR?YII8z=cSr41UadLL2I@Erb4dF_DQ$SG_+u8{@Dinv#kZA{Z z_eik3*crStFgH-RkeW=*N;$StZG2r>XG)@SJ^6RJ^_LWVH2@V{q?izs%-IiYw6?L0 zB*q&k-ouE{ERaf0L=4r68h(h*HeskeQIwiJ=k(N$xPaY^B9hm9g7KqFEtzemLU6EC(o@uXJ?b=AyzFd7$VhlJw83T}>2nsb!+8jCvh0t;)V4XB?LLWip=Xl_&l#Ts2UuWuv zx070-Jn@!QTWBHBClzmUx%_CqX05>GCI%{)?c+e>GsJ30g{~cUBHg8-D?kS|e9npN zk|-LFuPwkIik{AuAM~j8Z;FY_-FLok5>G|?$m<#p>b>FMDoXl~5T2CM=F|)p6zJp> zApIRkI|)!^pSRXxP8L$5y4r~8GL37OPW?&6OU(^R!Y}Xqog^sx0xPx7Yr{WRkWh$r zG6^E-tp0kH__oFo``PRAUJEVq0w`WD|H%>Sf3MyD{`&LxAL?`T-=8lpeioGbDDn%` z8CLhDBL-}ByIBnW#sp!6w*uT$pq8-H&WaUmz&D6mQ-I|VS@O*pIm+U+bJWg-|QQUC5^cig~2}K zWWZ6&T7uMf=(pMCq?TkVQvfowAnhm({msnXZY2pzTUTh)%SO%OuA6Cf{S<{$I2sxj zwsg?Zy=k!MH4N1iXQdzeIuE7ya{hJ3<;7*!Ay zql!;MWOh55jJj)u1<=Q+Hrpuupb^LboXUA+g|yhA>uc!_mY9ESOtE-I_E~%nJBEZp zIVciEv?<;N90qj~DwlN8^k=`(edag%^J|+QYd(a6n43p=oVa-2kCd2#nGS1|!iJUd zuA@?Gqm?#7bq*25nr&x@yX?x^&V?Bt=@0T*+pO<^5%V8fK* z8!2P#vIAt!FA`XO3zbCW9mfN#Nzmj)@e|8gOL!y>t>zgyW#C9^!((}QQp0g^8y6(1 zPyRltK2coDoqugL)TXogMO+NDa5i@@O~3CQ z1)sRWD2=;98gedqI_{E9Z>pFdgr|N+i?5|=?MBNqZl8fb%0HXb9QKy5S-t5Op8em5 zbt37Vh%q!5h(g=A@|vI$NvI$WYEJ;Kc`lygyW(IiW@=*91WM4za-uRk%%`z9i4;49 ze`xcr-mAaHi4l>fXF7zV_Cn0Ad6X@wER&D!`atgX@mB2l-;IAYrr0F_w5Y|RQfyW) zbDXjCH$V?Gs5ju=q%c8A}{wd~l)hOWA~9;lB>rDg$i~c`ze=^%8N1Fi4KzI>F{W zWx9Ule=5pxV)?BJTS5>CyhZyAu6JADA;j~`d^5}D7jG({G$n7fi{5Y$R+*RUaeoG3 zd|zftH=uI0bSMIszqR#QAT!o8pu9Ri4=_eu>F@f$c3(I?v`DF_C~)Aduy|YqNR+A$ z{{Gr$$my#^O6yCZnP0ds|NU!}gfAu?E1{u{*)2--9HRwj!M>|mpeZOZ)67JZ&ziAu zhwZy)E$0IF;O67^kExFE*b$vim&M^Pmkp%txO~wQ2gJ-vCZPjvCJ|rGC0QW@m08*iO)@1@}tPF1kCmY z4nZri!}rmmsXw4QzY4m6CL){2hAn2vpt~J6!E&o*2kxaqw_Cmk%k@V52n=-YsD?cm z{>N1kwOVHmXX9P`)!~*r5hla{^@Faww3Dp1!v&QFso}F>>mi?sAkApV?iS_*E{0Y@ z5wnG4UanD&>rRb7Uox8#QL##=HwNiS4e||@MT06V=S(j|2gcvuI1>xC{u!@v zYKtc5*z4PEeHu7C>oSCtu*Tt*;_JyfZ~P#f5Y7rV&>SV_K8BRi&(}GXB>aS(Rr3~w zM;jkcIEBz#;g@Mi%*)`r$ZgKoLKalVgWB_Pzqv3}KR;K%&y3&A^zdWISki~jua;^9 z^1p{rgA_bnI-PjK_3>KnTU)<3#psDpax}sO)tgpz6%_CJq$?vhFR%|=^WA68Uadg$ zP~VBk8>HmM0gBA)g6(Dx8(|D$!yKSES>QadayoZ(F0`KP9mw+`A9AJ4WR{O+eq0y|$lMuaID$k3<(w1sSQbca#tovw`yVjj)J|yUcD2pPmmB z(RbA*2Hhwl2?GDr&gR6ER6tt?hNxHBoht3PbPx^lb2FJGa>#x$pEm z?2=a+xdiA6jeF0OtF6=2K+HZ&g9~3# zEmfPi5^BKw)-|Q2c3C@?xcIL5GBmtLZ};v6(d$-h8iZhAvZGiI_OhmwrPgTf)Q@%8 zwIb@5#pydm|MTfsCjsl2o?@iEtOuGp^q8$?Cq`6?RraTaw&XbZ&DW2j^LcpG#N@o> z0z^XKuN@}+35WKIwv>m>TgB+e-L%LejSP22ek!eC;Tmpdjr&+bY5XxXonQ%D9X~CH zG$emDC}F}G@^(B=;lyUlvcHBxA=f^eZr5nY<)>1R-;RvsLBj zI8Vc6HLFEva9nVeYyEZ~6P4VJVt08&2Kz$&123E_Kl=)MHrC~2{sT_DR>a9OrZ4P= z5qM;<%>!skj>9;{jp(T;p($3Y(R__^G{KI1VhDsZ20Mjr+sWPt1!+Ujc&EdgyF*>J zr2CMcj!yB|XaVn3lPevD_M<+pLQ`&J1Tb}Bu4E%PdQ;BAJ@j53RgszU&YzzSR?sx| z{*2aqH|j2z8C$J_N|%GmJVyl@@{OxkRB59m_lAf^!gW@u%Od<&A-jg{dWo;j(#gZ8 z*g-0TyM12KW*25#ll8&6@Rt!FSu5rLBk3v_+G@IHaCdi?;O_4365QQg3KVyT;85J% zp}3V`#fv`0i??Wz7QXcT@&~fHnLE4ZoSE5b65}z}58A$jq!@+qmb~gXgXe7-@z>jA zEMiL^z(>Y?rwbm|orsf=qt0@(lFOF=%4Uwd-lo=p9S8}C|EaYT(9YVXWaWiR4AU7o zk_NdbrE-a=3j3mrPR36c>3mPKsSLx^btjBuJR^}+qcT>J>R8oq+Ujmnmtn#m7OCZ_ zGzgyH7X2Q@@bCh?X9s`=8_iRP2#qY3i$cOKFvagy*`zCj`%F;QeME0?^!AyHzS=^l zEX!@G#Qc7;_+*No%maSNT3-^thOgoR)Ztj(*?1G%+ZCqi&5_;Wvug2SQ;Nx)8Rz-A?g;2vIC?pTBUBO#yvJSXYuc58mk(Q9Bak!0nHbo2MXMRn0^| zK3@s62WnQkD5Lwj^p@G~it6d=KVDWFK^eR362hl*SYfP?PV`k6o`EX$RNFdo_P=o0 zvtFC&c=HO5h zzw%)g6~R>c4L(-)^I*9A`~^ zm?f(egv{ZyuWX(a`vC%t(&`Sh*L=XrX_Frq={-#T=GRJ26?ovn4poo=tN}4fz9=V| zr;_cOh7!iI;%kJ*xtI>58a`VrtzXUK*sC_UwH3#z#+@IuVLwRmAGToS^A{B?;3YQQ;(sp7w+&9B)CoGt>t2pN<+5VrbVmf1O=C7+l>_>^~)cc)xq+ z*LUp-)%^42Nu|edolpI4;xGX#CMH4d20I_0eIZVcu+1S8TY`kTZ{tBMo`ApDOaVEs ziQEcj>nS}*-pmYu4UIX6wQ}XCP5R8Rt&!Qg$iNyr&dQ7#M%tu#@&z8!Ke`QhW(CVtP{&2SheKjPE z;P80%Qd2GSc;G^jfQ9F~mvvOD%G2kHZEG{vra|Je;;C@EruEoY@F%cZDxW^dj^7<* z0KA#-;+FEBG;Tf5E3*UN^GZl0(tC?)Qw|UPvW+!NGoq#!bNk>>Yx84ER8^o|I2VU| ztv(UH1wU#(n@$I-qHbRQ7Cy7Jw=U8hwOu0Zr!G}lme{GUKaP({02)OsrS*0?_!6-3 zL|ox*#z3{fs!32@PJYqSl65Nk3h^vEN3cGnbeVbW}7slgtf2~G=pbN!$XL1KR z^8e0qkw;FNy4q0fQubLruU)daZiJZ<^p^7(&xZeHXm$$_+0K07Pbnwm*i!d@8MqST zH#>zm_$MOU^ymh!zCOU%eKnlDfKlD^M zwzp4Y7(~GJ)pjPe+RZjV>Yjcp_weSxWW8>no~!QWAV$7=MHgsby0h|%4u)WfFYY{dL^#e+2ayoe#_iZB)KPZ$SKl$N!!he z;gol-SL(ui+q(YQMWiv3_QO9ZEWnAt;pCaOgBJLchO!0r2S1Bvl(vIV#G-!Y7+YY9ta?zXvpPRL&eSypmxgOq58%P=LEkO8oxi0I(~ zC!UQumdV0Ck?|h7YE~|Nh;);;D5*rpsq)d~Bh7$7pCrqBLWi4;eBfl+AgNsk>12>3 zPA3c<@#%bAn+6);WwD#wX1PUzT0|bU656f*WB&%4i@1Ao+kWNG&mSJI zVJe`GRC9=f{za_xKMl^Qu_Qhgz>}~HW>2@t& zx0q`$?B=5*COh$U6TT=RJxV^egJGfSGyviwJeVGWk1EBbtS9hi^0+0k+T0cFsI|*7;=#}Z)z&X))lVF>w4k7#l^P`$QhAabeMjRWITS~*{|nb zqSa%1lrKE1K5ctaP*qitx0H*|a!wET z0#uUfjqVl$C;(gj;m&0KO%JCR&}vX(r1gy=Au~}{6LXJ(E%9WX>0%)<%bbM_Ye18U zqFbnS!qO^wBwdQzDg&lG&x#fgjm5VvQO0twA8H)zBN{J|pKSn67d@b>&#|GePp~>5 z{$sf*#L7HveO+kzkXg^-W0zpAtt<(07?_=*U}7nbWe8e^muHm8;Z$oq!jkjPln)~R zby-RZx6DW=tlScZkNEfLSMdq}ZEqQGQxwcRvXU_s>v)Jw?@egWFL*)p_!QI0WiLp=Y0`N*Ergdf1$99Ei&0crOyk`&U?c%S#tc&mpZ z%RD6S1cs6J8Hfr|Q~YboIm<{8fg@Y;P;*ilVcZoO1nGwcz(h-wQ_c>(sL>eL!+65h~vs=kzV4=)?UGVY&|8!hEEy*DRxwX_g^UeoMId7~I+E_$nC`1F<|!_z6jpm@a1t+545) zLvXk4SW4f#Rd2n_?vUhKOr-((fT)EaaQ5IfVM=6ow&Jx?gBF{R*^-dQ6@ozO4$=Du zIp_?}%t((6niO1j!D3@~>5j9cXaKEP$LMRE)ngd~853j=8d_KEgalmX3jz1s;= zvD6t^3g|xn)y}5AWu}c!+APK@NBv2$dl=OQiMJiKs9mGK|}jP{Rc$i#|U4! zWNAMpjgUv7q?VjNZfx$Ag@PWXpmwwI>f|*jwS*Gs_2Po-N39^B@TM?QXKg2a)@oX8 zup5EUZl%qjwQX>9)|+}4#Y8X$%1kbNTfJ))6;ey+u46*wR3lFX}I$;iWFKaqxbZqlu^4=ET|T`G$7)0|i-xV(XdL}r zV+B}vbqg9Tj~7;YSG@_$9FdwMNDxgppEWgRB9EDmR21ECa_{DwN#VWk|9GUwh7mE$ zUz0;gSy=2_O@SiGLGs54o1jPCl%RvNDR>|>>kPU= zYCa=xe3pLc*XYa`s$BI>rlTrq22J~cE5YTz9(Q4r;G^2-bhr~@p|B-Oz@7qsJDi>| zyuNS04l5kB!3;It_PWxks-sS)LoE)H^4JX)Thgr=86|HrR|aeH?a?P=7i*4lq6Ik$ zGX$NFG~a}>8k@B_S0FMvx^TP#rNuD&2jL6(W->g|G{)Kn1O!=f(`*pZ6L}aMqZ}A~ z`&FsZcjB-YlgWBbWq_d zAwb?V;!*1Kfpid>Pj!r%3OYAgWS`40*}@GM2e)P?Cm!7X*Jq_uPQk($ zPM|>~nNMu81mQlQpGQT{6PeRiM=tB~|#1r1MrbRQKiF z#Ay;m>?cWc7OQ7oR>i>8zPof<=j9!BFQ$ELTsOeAxx77-`1wtX=@hEcJHR97fZz1a z+T@%J?<8m!C#%r!DX?>2Fw~@JH1bnq7VvPhvh;-z`UL0d@`!urt1RJG z#~`XP&M6hzMo>@+M48AlpULvlmNZso=+Mnpj~^xU(HG*G6*noew_VT8yB?laD6<(Q zy1sS^NX|U0RO&m=+vz!e**rS>a+6)VBnI<^1Er)Ekg;r3$|6VR2Xe zgIrJQQI(Ef7M99mvWiL+)W)iPBdy~)$U4JQ3!H~)m!jR;1DE*?ef5Cc@Yr4O-+0^% zVzi;zBJgbx<}kJ69sF!E)-B7U`K{|}J8u^;mj;B#xpVI+OkYR+JNysEGcw^Qs~ZfU zaTpq@@kph`rehGYSCbL>nY@drgLhu6fTAioIjXG8kdvCKj*2`o@A5XJpcRwAun^kaQRAmlG-Kpc5T^3(hsg12bVAwrb1(r?6DL*98z*-K596 zab+`0a;*5j97qgEPDZYQ?i6JbKm3;$E*|~fDCy*k31j9=hgb#5K8K{qQMB`@at+@< zx!g!fr>*8{Ar{YViVEt#vm7pkq!!yg>kK(l-C8w6P+@SbiqVvxsEkkjxZ-a&REA@1 zh1BCP#p5#thR;a27hZOtId_jAYuK4|HC#g4Jj4~)OID+e{9pa4g+5}WMJyNo9I(GQ zJ-av@>na+wo$d^4{-QB7NP92qf^{@CVY3QjKr53VpkAxNTtzO@jyKvi#veQ5ub2rj zy4H@q1biT1Kmu4xcIFH>2zSH56k7ZiJYm1%!JT3TqC{xisY<~}-Y;?8Z@eDn8h z8IBzQ@II$}us3yFhR4gNww|0jJPzqIc8%y)-iwNGee)7V_w(r>u;k9yzfx@zAUQt{ zmeAky;E0E<&7)CSJ17#-qHjYHMX}0ZpP&zF?ZrDniLH%2!`^essgskCc`Rl>7pRsP zNz=;t#(c~2y|^)*h(MiBGQMArLwAO6=_M`tg>?Vq`#y#k(SI5bZdpF96iaJaGt)nM zt{>yI_|zcwTk`i?!2w8{4w}qEHeUmct65!K1m8ptWQM|FV8ncZ$BhG?O5XEtZu%-F!{k z_|KVc=>6yU@R=7nTTPpmoa|_|xS2AVrw(y&X_}3Byx808!_Y#!tr<_>C3p zO~lirjy_mzH0Q11Jr$zP=0#H-^_)J*gIg3*udo+1zD0-KdJHt3Sb$SdC#2vMPQDC_ zg_4}@LL$PB!7`ra2me5)a~nHoCwS0A<6psATJ3!LP!?EV>UR7?vl#bV_dsPr!TE90 zu?ukziiXVA4;*3Chs07dCAP<5GwTkn(Sok7X2I3qG>@%2<^0RsOQCIF7+4t@*h}<1 zbc2<{K84TdbP?fO87GJ~x!XMh@r`Nh-@+;5JQm2gcqGc+?tUKoeEbXMD94~l9qKz6 zej9%O`F>+F!R=s(iJqlj_Rw@H5z#&cjLXKRK$03cSiR|^xWj3vQyd2_Ldym*xjs)g z4rPT%a7L>`lf7xNN29Y5Dz1Go@!VYmdbdI!Kt#X#Q^C3Yox8W%?^`8x)Gud+x|2uA2{Vh^m5J2+i!ugr*ER z1F$T9oQuqa+uJr~(6DK&fK*JrM3R~yXcsJ|L%PT#J6nddU#F=0mv)t^|3N4CWuREUO)3Lg6p!eTA0WSH6w zVb{rzT~{l6TAfAz)cR~kr^v~We1FXhbz|EsdHKOT10ljDEv+`?K7US6{2`P-3&*=y}7x)E4$t z=^4Fk-?x~&p$H7^h^no@N)*>wL;=o4vrYR=)dcc^uRZByNSC{lvx$BN`)W5Mm4HCEc?eK=^5!LS!bL zhz*=QMtergT)vhLa}}*NDN$*ce2tr+a?6L{?Y7#Uc0q=n86ZrjxmIr`grsUXwh=9%U{e{s_{tyPl3G7Ki2Q>z^E`bT~p3<)|&8h-6! zh3&zZ5yHqC3~OHHap7R0!U45%eUa*M?3zib74z^)cAbIP%NGe zb#HMcDy6HS;Rs9^k)m}g9513D#qkSupAB28>J(Y)2)Xl&^+i^cw08dY4G|5KY*(|r zZZ@EifnzxZ_-K&tIMEQkDZ0+@$Dz){W9>yqg3ibk-eforj^BbtyR+x(TX!4F7ceU( z*^p4FnJ)n6bH{;c#O6fY%1w#3lpR0fHDtoHdV0=cD%(-4C)CGjbF`979f~~u>6L`A zm5vixZH4H`nK6X(60va+Yo}u7CJiVmVanssTo@+e58%uoZIc z_|DX*N<4%~GG9g!XuNy^tmY07qgA& zOj(Va*Zy}NWWAP2m5K8gx6L+GFacy3F=+o1@irtj#9=>Q0uTz9gBgjWkljgY0qLtA z^Uj8ss7y3^XTRQ$p#Myv+-mlbTx0L+UPGlTe~EknX`{IvvQV;ICo{t);|1i`ya)W0 zEPwkWq4^RWrfq}GOpUKSEe(949Ly`GF_sZnD5S~d=5?%Wcv)li{Mpyt8gl|bi&2m` zfW@UIowjtd60bICsJ!8I`sTW>El{_b#KCkPAr)PdE5~-MNZdlC5`->qIm2YrF7zgT zBt!tW_aE!znWeieuAMbx-3PPA`OW~Z%#;0+Sj1PsPpNZm&EH9g$^f&Oa;mFxEIpE_ zf92oCx`K%a1Zk6Le(?5YN;I}QGbMgxc%Ptd^jD-k&lA>TnY~Q_U!K4 zCglBWx8B2(d&zyC@Gf;1b8w~CFe;&A{HkAT!D44>C^S^KzD4jgy{`87p_VX>PZN$L z>-}94Xpu|1`~3byrHn?sN5`bVx?-$Zf8sP;vs62=&n*A8e8C3XfluF3Ew#cU^vg5i zud|gnqBMaO35{#dSD1w^?U0g*CpRh{S z&AtqoGOh2+417=y`mdw{)a7G0^sW+M*3`LpeualagZZq#VmEuxFFH zORh0c$5p#2?KzgM`La!bB4u_nu|#tCU**l6%$-iBp0MQP$M?6i_qUm%NI3Uu?lcd| zxwEk<5%{8GDYVsr!t2p6vmV5S`lgJ@V$I1960p7{mVbH@OTrBOBV z2(2F4ZNH=AP3KgqnVOO|4RzKg7nlmt4Egw{#poYPF)%GEH;s+%-ECl z6t?8&0&bLWIgKWtiZfap8tGN73U*8P@u(^T`8U3|4ld{L+UUytDifHOsC2m*dXp%$ zl1ZT=j$ww0ZLa zJ5reEWKqdMD~pQiHx?a2uRIC2W3W29E_y;lmSNT;7O@dw_~Me@VzL)-Jk;e6r7_Go>!_g}nClnV z^}drUXlsdE2NOgRvPMtGAk@lhcpk#i`l1}~trCsN%@HWT0AV#E@SP}dX=H(<4}8t> z9+VC+G<~kk^f9zI8yc)Ra}avm{9o8)<>vZSqv;SCtLcpr2z(_qUIA;CYu@F3eQ@9S z;Wr|^_D`g?kb~uEP{>~}&aO#L+QVPdiO=R&9U8AIl5Ws|thvh{7kS6dASnO?!>BpR zvC|))^wVRN{I=p|B~MF7bxcxj)pO-ovu~8xC~}Aqb?Y-|e4S=i*lV>)V%a{s27g>0 zL2-$ck4L=KlbAiSc=^s`oXp8>x5~bbo^;&ET!DS@VmHL|4IqWcv)}DVCcBkL@X0;} zPJ}d#Dpvhsh%jZ6;c-OwivqlHo+`U)6T?qDu&2*HtIU{_Yk6f%1u^Il z-7)-w+-xes6=(^n(DZZ$_UDS7niE+G%Bc-rY#vmfcf~aY1vzoGgvWMstWDVUo(Uc> z(sqqG*rdkQm5S=Ia{bp*EK?R-;T%W1ocT4+2WBj!=J4y`(l!`aV9@%9MYM?; zP8gHV#gyCcv(me>W`nM_eu{`f164gPGVf8DyDm9;BE0sICk@MbxmUWd)UU>n2+Ot} z3IPiAA|nzn)bR$qoFe5sMp`6<{0`EqZS5+o`3|*g26Y0#w9MPv0#CQDpJXztS;{Qo z&FrrH5Zn9etlH14^%<~4J@o2&ctlTN`n5*@vS=g*ydSr{eL5L>>D?^ci0(BiQEZ7P zCHbX;+^Zkky@PpK=a6A?C~o14yMrqO=X1})`ZP1Vg=5O*+RU$Mfpw%u07~*`B$zy4@=ao!K7AiQ zxHAYozJr^-$v=EaG=qj&aw6{=Rn)2s42R4pJS{p548mxRv>NX!UPHNnJir?)ib6|+ zMl~@yuLG|&gGpbii)ZK5Ev}?J=Zp_oKJekSv-h*wt88P)u9h`5QN{@s(j40;aY;Zq zDAoi2gWM$M#1CyK%cl)5wFnqv;-|+cdQf|+9H~it}_K(21WVUb6 zW>_Er0Nn|Ui3!h-(FSu2Jej8~$YqWqOtCN6yxBloRc~P+&75qy1HU=SJ;f=;T)I?X~4oU8=+1KR(~z@AK)ir^tvXgnIM#fwD42?)Jy? z#0@jKdOHOPO@;Nr`EWYO(rsz;44@hFB%p8$5fh;&snAg)L+qZTDHMt}5mRJ*+ zT<|~X%jWWk1lUg~?Ef`G@}r1s-Hl&arhGpt+~j1NFVOLJVC1n;oseynoL_G}op^m%zgTHO1)>%o3?JgS;2U|TO z#JGfUSAY1u=Apr)=v%0kv(xM82@^TJ2q>@>OhGPgH2S=?(kdN3y_acQ6|)tNTq}&- ziI{+9tNam7v6=-!F;fPsG@bZIs;zRzV;{r&b7oR{q}hiB&A8?_d;v&)l91ZB;m4 zn}3j-#$qTjfEv7PyzNv_1FYiA4Jj1mFsv>hv$fFJ)~29H-%D94QH|nYQN4otx*@#P zdvb2RtBiGGFxzLHQCoX(>@^lJ=ktZv@8XeyAcnbxArrqe)Fq!iw{?Pj>S(*GUckOq zh8Gc$a3z|&C&RsV?a-1VD&&BlJXXx4I_22efxD^;D;Uqz4L5pNoUPK3(&WqQiM1qU zjt$f2P6Y!yqw3m8?zg~p5AJ&osaEjb1y%t)sFwWws?OiEwi?-F^}L+ z?A@A0|7q6b1pUv7Dc6}14iU2KrOrr%SzLv>W*%We*Hv=jcwru$%9Stn={VeKvLb~{ zbsM69{zIy>#C;ntBvtXB8!{PDYxh;}6RIbeYWBlFlEBl(J-yp#3+J;=^IB^^G1A4u zDL>zM-fKEp;(Jb1+UuhvL{H`!@CDrtH9X8}eUY0=VlFn8Pi|zh`e?FN?FSlo7IprX z`MsRn_|Blz=H{|yFw&d&aX}pVD zR&w%~w!zP;&R%I+@|qQ#ABeLb-PQWr4IQfCG3m2 zCM&NSItWB;6isfie*hdSTM)uW?W#w*T7=#yf}x9`1KSqCc|!k%{*=xfa$Byt^hHk% zkqQy)5MDaEwG4>phnO==XX%;YVdG9~ir zcdUW`2f2C7m|hSxoZ80ItDe+GJl33a$pPxszgo(wIzPS751P(M07_U(CTx)|R)q|t z5Hq|d;IIQB^_{(m&-Mp#%s5{`O35`k4jC#j9FU92AXiDSimhOPV+2e5+vn~{xUA3J zBQ`0y4+YA3+Wt1tV~3Q1^Jx_j`untci}zuAq9M`P|Dv%0*yO!J;A>!pJ9h;u@ejY6 z%Kgdb(B$d0?kb95hoPnI0-cYUeM5!Ru}^Q`e?T>y@9%$qzWrx=;{9D?{wvcb(WF8> zQjo7sJG&LYSex`b(l#QinxxK0t^a%8#>rJS&^O8vdb%@@5KccyW0GXE&175AXGHT5 zxoWC)JmFE+F0Zw7)?!9G{To=K@Fmr;B%y;AMo1^NE+Ki@h~YBh3$EC3x|f_n+GR!B zl9?!yk8-A&c5`x$oGJ@>_LXk7B8EP4eSO9cI2qC$MQ)(UL0KZ9LBKDrFB?SpHUiE1 z*F{Ej;~KL12b2X>jTwiX5-vU~k0=%wnk8Zj`7H*gRo3mhHU6tZ{tYk7-y}st5yv1g=HP?BU84-JzwOvx3tbaR~zY7qTo5b7j z47a0|o|=F!6VUr%;#;s{?h#)XSQ@X>G$}H%3$|kUb){QI=OxX%{9-!Km0mlS&CXXQ zgQ#m2O?$dNW*kL<@?a&bDU|MOl-Ov9`=I?tYhqjsx8PJaT4_^{Lg~Z$Z{m671l>g0 z`N@)$rP6GjB=78c3 z$f#lu8SrAKOBbM3+m+GZ6Dav+r}nB)lEKP5esM^&20g`=8QHa;rJa$-dnSjQi}S_r zUK!l3&hFjCBiU?LxDTb?@KR~ca+u(AMkET`_2gL(Ht<8Ln5u=YDzA6jEM|- zSqMZyCwJ*wc42RYF=E-@+Sb~!mBMZ_@9zeL6v^t;uWT>fp8+36x2h7!x88tMIcA1l zOhEDhLi!JKbEyoYhD%wTHogIM{f1B*t3FT?+9XMW#8k7WJ(LBJU+YI-nPKNPOTMBw zCwewy-Nk8jR>rPjR_L{TE-7g3ihcZ~WGKz`+knlz_}h=>2~879GhX>Z#8T_^XZ(WK z%wI9JX%9+wq$!hqFUw`e37J$NS8stdDmzr_0{3QI6KZyNqBMxa#nby!%cu7rX=y&) zWGqS&!lq$@9W&L=5~n6kE=hy4iCGJX$qwJiL7Ll}7#f!}r8AZw)%h**7Xpl025=NMLYj7N z^NVU_rLOf3?*>Kd(4^Khsj=RmYn2a!PWUKu=XdcL>G4nIUqkEyHG#UtN^B}8y!R39 zOsdEef(4pz$Pu5KJvZ^(;}4lm zV~UIdCftMh&`_7kP$I(*jn{3z#$oR0qSkB(%7(}7Xnzo_H{^FXkQ4ZLEW%3xj`!y2 zQ>@Q@IZs^HX2JX;iah%->AN=HDvxnedCp4#8hS@TU}9GVxIN=Rou z!BF9zst(OhXhlC%=DnSc6cwMR#z`QC>y?A4xGP;Jrqksoqsh&P4ND3Sp>e>@B!uOO zDS;pO!)E)ZV3Iv1*$5XX+a?oIt?C4;NvD!o*-e2U%*3NyW^5;KW7fJ}dNH$*-w_1L9`sm*-rrx} z-#rXJ4u5|rbJH)~=Vqctr6Tv2%^;-}k3pD02Q_odU}sEYgA&O4h1$UQ@wW#=P~`>J zh!vgAegwio$mzJMG+%BbDs#WFAv`#3{%VrMTCn*c>$L zfIJ-5WL%0b>j$xvB5CM6*N_DkbZlOM`6*bN)1u0gIM7lJ+r>n;iUjeh@Gp?}PEwTj z?UTiCBCpAhZuI^+W$#zQ8}YB{to??Pyz{10zbGJ zNa^4i&rY|SFkUGgMqe}QNd(1 zhNn+0`dMo4kC(e(?6E8d9RpwX%Ebtrfp>4i31{s(+NP^a+PkS~-nDTbW2fT*VW*UF zKaQ=>&)=`uz;RlaR7c&0IJ~mN9KGkIeJ>y)K;wq z5$rmJo;=52d7*RaA0IuSC%6B7E=eRDKdZxWi;LCBc$h$~Puh0d6DF`{_YU0IU_0vU z8ix{wbKNAH4p}(vSt$91Vn!l=DZsI$LnvSjsiyGI8!|l};IxA?j{8KcqbH&Y5s^*Z zH8j>5(2ljv{x$Z^#W?^U1pnybyzfz~ie-$sg46`4`;6kXHUV33DML_w`p$KV(!xjh z5Fjh3cdB#6lgFNr8~Jn`CT>4gEU+G1GpE1|S##l@^5)Q0_Z0zGM`aeruZZPp8sQ_N z{a2|euT!_|NpOSrXeh)z;ol|3uh!75=!!Se%*p!uIzWzxsfcjHWX;2cV1akD*d4v# zKku2hj0y!Xni&!x9PU%KLZmRcf`ysd%*4?I4HCAaM4XWVdSw-MQ7^?XS^5~VfLJ@( z`?(pPO2F`IlS#wdnJZ6pF<=tbx>UfHuLe=-7}JK4*)KteN0hSGI>~Z@m>LJkj*w5_ zj?e&Zd}OMo5z*jAmYbfbb=~=W@X^@hC5>zOs$Pa~FQ$B&xV_voB)mFLr8F$O!v z@}+jZf-KH2*6RJsK<2WVgy*8zoaH}`1WY>0rpl>0GO-Qt*|K}lI2aRUGEea3Uh-`S z#(q=(AUBJN=x79;v3~HjJe#Qzhczb@Hq%fOPuX;)W4*se@$^uj7c*rms}*Eb=G*DN zi;4abcN91KtAs3Tex;h%y!YwB$%~hXd6UWGoM$->6Gvob?o;jwk_YM+%`~PT8(}UT z9wj|>QTb-bFz`#b0FE7`+N!Z<`k3lr-@7sZ5zQ@^d>#3OnF)LH#0Bu?edPQ5I}6ug zkrsn2v6q!1rlnxGkOHVx4VD8czYE`kjrxq~Q^Yl(t%8gj;{`C3MYU7FON92_XrkIBAd`JQ1ANRdJISW$JAI)PQzDYabmX#CEHX1H^m-I2s)e0zQ#Hg&WTw=q(RfS9PM>4TDgNmV|Nks1T(0GS*tPBs8JlcVvtm?@nFKJ>&33 zp%{xfMaLGaGj7yrELGUD5(;;$F6bziw-4U;V8dDS1(%dvK0Trtzy*DiF(;36o0o(J+o8&%~nlX_R25$Jv~Oe}5(R z8DeS#JZmBE`8W{wA8;XZsi?)o63Ev$D~WK3{6)w2n<2C&tR`U0OXi3$mY9yfLdJ89 zra5*ug{4>ay?s=!hpo}fm=Zl~lXo&xc$Y+%044{|*4o^_~1PMEaLs6+8m z%G?M(W582Qh&frp(@LGFRf!Mos@SMtqUxDz?>rul{!Z?x(2YiyD*XH@2fYb?pfAVq zu)!=+#P)B+&ccacVWt`Y9vwhDeE%oA(Li&g!^_| zBe)5t}X)wwmo1jWjsSCC$d5{&aPzW+1rSL};4k zY*+lumru&A!1MUq!@2$aZuq>R%ex9kH)IB3S87@r19$PG0o$@TU1@7?39L`EQ5Ll| z;~EIj`?63cBXt{}15KNo>8RV8{A+x~idr&Wd8d3-rJ}MGR3#4LP&}76)rfwo(7`V+ zB62(UbqCYyga-yT`iRP6YBP$YS9*yH-0#Zz2?g@tByi$Htxhq|JZfnOapufa9mjP6 z#h`LI+eJ);O^{|G^ekr?kQfl<6I>A~q@RrOBEyHZ8WZk?VbD*mB_{&fsX zC)RXy^x0~0fr=|iGf9PQz47Eo7il@!a@{zY^SG#qt4zqu2r*~Mv{^T&nbzJWN}j5& zbNkV=#pYGcytACCdXjKx6&<WS^-$RG~Y!AIW7u6|yCCT7z*aKUNM(G%8 z+m$6PK&ZaHLK$#jrrZ_LJv^;ABaH4h>XWxxwyxl|U+v69 z*#Agw5ff3=@M~6}jjyj#zpT@VslK$CoEy|QT~Ae4oI~Q3j(kz=|0HW)s8mHTXT&Q1 zaFzhkmiceF)IR{G)J;Xd{Diqps)ZklMuiLRAAAcc|{M;JwR&o7nsq zm!&KDE_wMb=|{)xJHudCKwZ+-MM36c#&=>;*K^_?>T%og=QV@7(|sH*2`d%eCg$wH z)jjVG>Tdw}Hp=+kFBO=b;NTLIGt$8&Mn%XFB`68vKjG{-z@?*?pO91n*zF=nkrsI> z;K+3p&ITGKleE$hHq+5@LqwFZQ}MWnzQy(rl%#bXrZYr5I^_esezh>7pJYgR)1f1s z;t|mL(o%}^tFPJC`E7Gh9ep>k=a`M9KP-@EEEc2Ooj;m!)(C!$G@b56x+^aiev)F(D)irW?NGV>+w9rIVff7gwv40@e*p)!*{lb^!PVK7irPm;`gGo^mqq}RQ#5TIS1V(pvNH<7JsW2EYVswXecZVR|-Klh=QldV_JAd!~g?+x~ z-1oV!b6qFXw~372V(10X7}vy!Vl9^g*Ppf+aTqV@%Tvh;#RJPaS|0?GmXw4h)5Axd zO~!H!%xOUCAU6%(`jQEj&E)6FBV^8jA&ZvU_Vq7WP7e#b8m(CCQr6ls{icVJ{#Tg` z?#>$2TWPmHF0}t4w?KSyq_dEp9C{aya7X_a;3a7Z^+G8$%ZgkPRVBV8skO3hr%T(b zfu25Q4~+p=gzcY480w{x);!q;B%Ft4NLxc3#j9iU85v#(8oYK76oPv@8Ley=O#D6V z={KK3l%WwX3NQm+4!ui19)+TplS4QhS}S?|Aa=y6Yd9Unln*1oDhakD_E9rF~kgc`Qx@dw+B?>*V2`pj9x zx{swx#lwHuh3~S#L$T|j*U$rp?4GLrBy52ha}ji{>L~kC+oYe9T7k7oyO6!S>N{{I zF3{OL&GH@JT)<^@g`kc~<^3g{`JBvYm4{`)nF?F-I7O-hd)SG^tl{4CZxm9LW7LJ| zH`d-YG1EI(NaB3pbIVU-(RcCRBsvPmJKwvX+2njr;GX;L9f}GM89ayS;?v1v0-|RI zjfBI?YA7Ah21c7K|dNSJ}oUr**jwsSp43X%|+9WI2pJw=}Baj^YZr_k%y*&cM{Hi_s&d z;hAp+rjpOgAXRb@|EqGy7%V*ysihJcO(F7m zpmp^$yAW>muKEYEH*@Kh5P$03jBK^kZjDFK<~u}&vO$#pn(kWt>Q>Cm+nEo#5ddZk zG(gCdDE-c%Hc-CDFOgEgzDcxkY+EQ5Du;hpystECsh({fUT8=@9wa&xJ`^LDiL zw=BgSq~F+k<80R$&5I|Y2Lr^@S{WMcN}E^hl|jS+ z7KA*KkCtDHvZoy0xNGtZ<3T^0`j`h^lC1}9_wZFjKAcT~h%vy(H>i~WfC=_n`{V{p zLH5eb548=sT0QSPH!GXGpPs9~Z+K?|uIzNPJ%Wyz;;@^mWQpyyNmMd5^LGcvt{2snb zX=SDt;u+-6z#so1H-d~l)ziy=sewW+{uOExOcN<5p?z?*bOJe7M|o(%!Y6GOAX96| zDjz)#vkT!f#AUZuzbmpz6RNvTRlXa-ad?6aqPw}z-z51q21@a=_zzl@yX#?-(eWpJ?=kaVkS=fUh$%1l~e!#Ww z5C~O_p}HNOHOqMY*DXC)(2~7=$;3nO*cJ=$MsBV&GoPsH9&Z2IW2^C+pGGOozseoIs>(`WIA7p7?-Ez?8pt0!SX6}rn^3vOF9UDsxfb|NVu4xIX6TM#Mg2-O((t7=Qs*9PO`~BOg zZ}=AC2n5yhT`c9!B*+o$_~*9KhX#GsBD~v>rJtmp_=b^p%lmTt9S16g!R&ulC~AA=qS*nnbLw#vxh zs^rq7LV0nln=#}ca+AcEw|a~Dy7qUTQ||F7LqoF~SrHw(t6}z=G=ps#KR2Nzp8d5+_3F9&sN8x1uEOx{*B52(FHcRYjP+o1 z&rc_7sxu8s$Q#|r?-jwZHhT(%W2MG7QyE2+Zo!Vaij4>)(DxcH*@RwYj*ieJ{Kt(B`C)o#{md$Gn56MG4^%o2=1UM{EJPPBs zi8#fRtSt}WftH{{*w7pA-r@x$@ z>~hUv^lI!z=8Z6jC`S3wmwGQiP0v)p8$!TSLe8knK+M>r^d>7q23j{KxMANs7^1;D zp7p-gD>vWrzb)h0U-+!`-Lvx#AtH})I={4yFY`!;LL|)Tm?x=oB~M2`dRtefe_`tbM(wr6WOU z{Wmt82T&tQx(E5xvsCMzgr^re<9$v*?9FMgK)H^ubV6wYSBr$Q@t_OAaIMzqY;K_~ zMyk$6Ucr2rA2c?D_A~I8+f$q0yK`8LE?d+adv=`=I4hUf>#fN09~0}Tj3YE}?AG&P zg&qe|($T2~nwUQSkQ+uSoog+kBB$?yr{dY&Vr(qe{y7ET4D-}o5M_aTP8jUZ4RFng z`Ejv;TrBU-egAmABV@G`+)YrY*B$eV2M1u^d7A@W&%ueEm_Av=7@3%nix1C~=Td&f zEhf)!h6>TBxz{8f`D)eWoxBCf;Yem2J9_#`(j9BGRWY|tI2Ju`u-q}dlkqWK2>$-> zFcwzD(LTYf(P%^27DmT*WzT$Vm8FscPd|1cz)r8+xwFoK=weJr1ed6E1{X4^90*iC zn>w(^E`2%6rz`j2?jEwO9AVvR^?wNh26UPgC z4j2JxXHv&>DkN+5$yj+BLTw~(EoQ2*zlHq!?!W(+G!R0s=>n1JSW#8SFJiY>!q<>jCJN`oE1y@l@8E+b`;qVX!R$vh84Lwn2fmz zEeJ3DslAUNb(!5sa&|}c1*tp$KtFTtpWz9dN}1)Lx8WNp={ANl zP$_YK6fM2`9V*E2@-=HD*PL{kR9biSTz7@TxFpRozNjH36@0`Vu`eY9CEu-HQC_^CUCdu9 z?u3^szZ>OKhF(0spU9P^!1y@V{@+zZ#IvBBMH3=cP>rQbp0gb9}KnJ zU{vMs@>7IvQVC1yuMjTuHuKA2UjtX;Yo{LG1>biu{Ip{8WfL5gAC3GcxcURR$@l9b zTs&Dti4CLCNb5W8Dy#5b@8gE|;$aXJbMR0o$}?Hh>BL4*OIE__Vl!h|eFwiS$qWGC z=|+{f7GO<4Gp7?2p%B2@PKr&QCNZZTV-uEAZGxVzwtF{QK&ma?AyE*;ZJ3|b z9t8~JTKTmg5O^gHWHVM?oES1|(d|ogIiNZ7oN>LF2J<>+-WvI%QOEb9?!c*p#p{Ec z5kkT|3Y9ak9n~88yuTq-?LZ~QASy5?hG1mcJCbrWwW+}i3?*X{4HgwfHb64r!KG%h z#-w*GA?arpQq4#)(F8~Ww&(ywo%im7x}4K5NqnL3wO|08oSb8@??S`S)rZOO4f za_lE%+m_YucvCDU5-^~-+Ybw? z(P3}@K8;9Z24?6>*g>aCOS(z>NLHRv9W&SlB-N1JKo8;N)Px?`7K9w*WYAPR3F3(A z!*9^qizkW;@drSSp#HUjKel@@p{=50u0MSvJs&!OVM)9}buX)={YWIK1->tNfNMRP zos*UugpASF)Zky0t3YB+ndwuYUiGc3^X6m}txQrC<^M%aBP!jAU?m}I)s2Rm0)EDw zrAQCX2w+0-thGpt`;|7LpBihFLLQ$brCKIYy?B*{VuwmlK2pzHi?9AsIeRzSmy zp>-ZlfB&M!$A1brqmIoK9mrDWUQy?XaGap;^ zvU!4vA+=Zw?VVO97wPcvvQySY21X#g;T^ZoX)R`{F?E<^tDJpm&XL};dhnw@ozxfg zbq0uc7ajgj7^Tyb?*^x-mP9-9o{lGMMtkj>c>WYV*dv5}edpt)3{cQF@uk?`XC|+W z0RUhGplLYI#|3+sbJZzlw&@^#Jm+isfw$B(p&$o{E)9|=Ae8^#Ta@f8v|nxRO2?+L zf9=Jkem%bJIjNLgm7Sde%ZM7t_wzGKYT(yOcO%0M<8Vml^+%>m9wUK4Q8`@yyUoq|VV<(YU1m z=um5zdcEe-=Mahg=Fg(Y;^gKX+qpoM?^~+8+plY=H~jHO8gkvrKCRD?PwE&_ukw{* zNQR5f@gneHo@n%?;c=6%G+eN8E0e9>NG%gCk#6v{0=i-h$c>;Xm@a#q#HF?uV2JC6 zi&WE}*V*@hO@D@o{QG($ChbOPqzX+$;B1AEl6qw29de*9?0Xjl?pYjJ8?=qEB$A+^nf}kbfy=Et8Vz5UK*9074=_!6CllkuJZA$_A zAx5HlDRU-n6i;y*5Sva}PGN6r3&bm@$C(--QcB5%jKaD;5Mr>DYtv&0T=I!%=^$F; z7U>F8L^zdQZTq-eclVFIS@!0-Nfq4lUCq^6Bxj=lih#zpxQ1cRLy-CCPW1uPYV^$F{xx%|AJOjDZ) zruyTfb;dhY+0x-rjx#z1Sf9E0)2fk0oEYD*t1t2ZPQl1zOzCLk*H~=|<~ZqN71BCJ zq%I5s?9p|1t@f!BS8YAJ$1t^c2#2E46yl|10HEtivQqug=oeny2PJTtS&6grH?artp!Vyy4~UHjm7fQmYaOa?KgT zdHgb!8zwVK^bffKVk~K0)b&B*&e?6cUl#nr9HAiQb#gV;Q+|FCn;GJSelggSZJ3)x z$#5FEAKGHnVUhaatfi zp(~pASlBHR+%_}l6mG698U6x(En>EvMr^nDZ~>3v1jL~ZZz@|cEo&zL@*DVmzv*W5tv3lrQn zoO)~9gPcvM@JYzIq{b8!$jAbPH<9s*<;q&uQ%>#@ee)Xpya&^$6^Qqv^n?)tW)wN& zX{{yAI>o`_Cd~U$)Uwu=IPs?2#pfwH22_-!-Y8*xD$YS{J-7eRYk2&=$~OIr zXgS@o#z!eZT<@ZCdte<}rVhr(f)Vl}=e zHyos+83Rnl)mIhGZZI?`Zo>*C6Hi|;3nX0?Ga80o?g=_tM*LT*aEIZ#or)Wim6qn^ z7`R7b8c?9U8UX-^2s7^`$g6BJc2!xYWB#ZdWARCw)FX{5k8SI>JvPt1_)E;AEbO^B zUCqPeMLkh~9A@gN$~)~mLD{TZMkQ`tJzNd`_55=82kxZvJ0!mYs~O@dt$X@_2J~6F z*UN2Bt@uno1jAh7n2H)rNCYr$a|H4p=#pf119?m~68laWs#CHY<)aY7%Iayi zv|yp-voVuCUe(rDfk11 zCm(P*($ZP}AvZ)kmT!W}|JC%ffK4mf@k?03Ux;a++${BhtCO;5gLOp52IY}?e!3h~>KP8buwQP~L<9k-{!E84F#1dh|^k}DFkq$4{>0N~v z`e5X=`n><|7iuKO{=z1RF$u~}tNx8Lkr1A(t$TRPye^|ZSYY0`-wZCTC z{}M~u&Mjk<#^=W>Gkf{5Z|O^4;*YH(;geUtJNC+ckAMEO5%!q--yS_)!tk|kQ|UkW zW{Ra-v=Fw<_geD7R@7)bzh_v|G0~5Z|8*z+{tnBe=M9{s$8+cIw$=8E(duumW|ex< zk#9=R>!=+rrE>7A(jRZ5_wXSUXM1a1W4R&nTdDfgfgIuOiles4Mpn>GZn{UJ>euYcc^K1rCY2I1-oDpv0xH0<~TxwwOx8d=(Ghva1go7=dZP*lk%zL z&Ug!jak*q7xiP}P=YC%;THeM-05IjzF?=O}X2EDuA9Yge29onS#L4v~0HnC9yJ$EO$DCE>+J_$|+!L<$UaaK* z+4=)&FpmJ5yK13MG=SjY^aYOnxk+sUrD>Jf_uVR_wu24dDFIxVBKVfEde%{-k#Tz0 zO2P?1>7i4e=t&0}VWk>E`)1c%7#DPjA1&G`QE}D>v@j~N!Gmi7v{K`k(5b}%*vB=S z3TcF$9h@h!WoSjRtV%#3jf_dL@r4=4d?5c}bxITQyBI_3wjZWA(CXS_pN$m6(o2~K ziyHqKJLg=}tCSO+%1r%VaD;)3x>p{r-X}%1EDMd9oAY7OVqAFuRj`%s0V^hihFK

0n0WK&^UuwTB>|Ot8?1YR zKDP&$m-hyRg-&=$OUE)G;RZ{kO+_JjqF~ky;1`!JpM;ajgrnc1sYxM9ZS9y zuH_zNIUZ>ZKkg$}V2E=dk8q>PU5U#6$MFxigJT-ktnD?5pdI9uh2shK7WueH{Zy%H{270&{#Jhz9_f|>`|I{YmAbQK$Z$_?@J^p8)^?LMYeCn}XXSfIfn!Vvh3TBgeWE&J z|C?{gC~+`)IFBPvkRWL~hO3Z3ntW>nc2VL`WZE5DHZ|)VTwl@z-?oGJMAF%x5p?~E z!Ldf7jE>OV@n`e9E<|KF#O2^uy*k)@)tImB_*QCBOViy^e~0A*%XX#D%4!mBYHSMb z7+SyxI(%KmepF5GW4vCO6Ud!MYs3+sAB^M<{B6eyIZ!#1Voe{gJ^5O#)Zd*_Ejjm;L0{>)`MokO?VF8@+z!1mE#Yj% zEQ~^U<5)Bhp2j68`kK_RE<6UBLPk3x=0+gd_fHffu-s_I{3h4l#;hT^_>UP{l| z;4V{N)ZU@|)qaCAz%-urrTIdA;4gFSpA*m9+>zifCkz|>ZEcdd>IGBZrJM)(@dt5d z0cde~e*q~C4cI$krq{>&#A(swQ#`f}uxcg)EeNfIy9FijXA;GkS3=~}13rRAn%wE3 zIK;pfle2rp#z2BlP<*_9oV`n~KuEG3RGm65E}9IgJDii9l+GNSdE$P$pFYfSYmsz4 zf_6F|J0YFYmG3{)JgFqa7l};Y7xW@T4c7qSGk|$o0jKx)=R7&Yj*6_GN(#(Hrr@Lu z%bO8{H2uYbD+lPfLN%LT^|XU{m??%wfQm$3X}{4tP&N&5M#5tMEklja6m|mMX6kjs z`Udllzv@Cr(m9v~u@{TqR_hL)(R!MT>?Caa8f4d%wOAC0W3{B}l_|FgsrVyF3@t1hX%ak#;=$6azCKvyQac(o;@>$g{ z)Ku5sek2!eZwx$YyS%|{x`w8M&^EQe&^CAZ&2Dynb~!Ev<*Z�%GcmfwaqDGv2gP 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�W5C%;PLa-_FI2gB5hG;OPa z^x&Bb9MG!%quqgwD1E6(e=HmX19dpcod|M3Tg>Kl0XaKQh$t_{bKPAVnViSp#pA}@ zZO={LJi&vQqT%cl-e)y8]pHPVU&hu*!!en#ObOKDuL^J9q33mX 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
  • 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�^RW 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 z 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≈RRFY;|n@h;KIw{FF77Z{8KnKBI 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�&3(|gIX_Cv23h)CCe3jFM_ zXNsWms6!!)Bl_2qA0G#F8E~(F>mZ@OL~sP2fu#`<3VsU=r(emt(3qvSMGialEzCyd zZ7%tVbG&?)kM5?;F6$JcAFIjFR(KkyZ4+s!y$-mKP)KPdH-GOk2AY#!dHhmD#&T&m zAjVg*I`RFNypTE&=tjkSQPJ5) zYZOIA47LI>KLEo(w7ADde?mcx#=_i1`aE`UMhFH)Q0e3PyY{~jNSX>Y(gR{dil(Cj z?M~-|aG!HtB4 zE;0gVkX^HY1fR<0o;Tn5J*|IIYnyp}@Lbi%HXNEhU>ix1DT}BXNtS`ue@mmLb&7t7 zZ#@WuXJH8C4=ULg@jy)wG#ac40{>(6wOsQ30@n$#=X+cjU4soW0MP{_Er3d8qtCHgUOz>3ua!dS8h%490k zZw;`rHG>Wqwh2kGgyFva>*sPnKWBJYnSVO-W>WK19(*H?7rmXu8aky^P((DTgn?O) zQpCz3%8d0Yb>OsAQ|)bc;ZbrHgakS{+8OIZc|Xq1)OGNQ>>k{|n*Hk_;lOn3oFO)# zf9v>1OTm^!0UwVxHsxFD6Ov!B&?H+pq7Czz>i{cWusf|~dWUasLIH4xXhHYI72bXv zn|qsx!l0DJ|2X3Lt3lnyA%aoQLmJ@%*JydM^%EQw&zEDF%5fuO?`ar_H+_`ZgO z;5++Ld%m&HX)pLFM_o!I1N*{vb1Ml!%G^{q7J78SG3Ww>YE6i?Qmosv^oD`s0G8mXN$lItb|ppaC{wH|gui7zKLScnJ|BvJe#hBZjrwUxDg2Bnc+c8~QFUBndyo+a9;<$axu}u*H5E zLJWZLs}R6;BbS+J^4ra|;U-L_PC`eHt123$sdbkM#?q+8AP?VJFeeS;)J~T62V)1J zE4g<+RqJk&5YZwAtcu@&SXzVgz0O#i&CkS~jXg}pU;w#Lh+8bES}giO81Uc0iXVRB11C_HrUI zhC3yP8$Z*2onG|!jgM;O|5>FDc^VJ7%Q>yGfPC2SM1|y3;Evzlk`>3O4uaE(@DBLp zIV0p!y$G-uG6FTmm=d-%$Gs!lZfwLeGQUSx1=6Kc^kFYx-evZsBA)%&Yxx2&NfJ3E zQq<~n5hznYu1kF&CRVA`CiP?CzoZ3Y(m?%&UPeYZj|(3Ijz3tk5ei0Kd(*i3`)j*r z&HS+Nl$bjz47#K7uVAS*@wC!08#OPZD2H@%!$V|Y>^#u}WwIJ!cfx2MK zXgD!6!3{K5%SAo*m0f{Cs@_~$s#1?rN=_W;?^hRNZah(1)vclAa+NQ8VLrSZb+A3;OsLUPZ}~kXSs%(&Un|&ZWuT#FTyFOvQq;?DW}X< zdnQsP+$Zd`&4ME-Q_X%e#>Cj2I_4O5O&_RB%<>}60kP~kLFl?U?ptKX-tZ^AOvf|B z)_|jn)_^OGR{ND(3pGnz!)>oByskWkjg9)>oSkLb96JrmIn&!`phD~7?*1@|A_uk}IK-C~?%E#}c{E3>1 zSRK|ho9;pqTTmj}QJwLKsE=?^7muOZ!aeig6fuFTL@^q3j#3sXxRZ%TwvfOzT1;S0 zhx0ezG1RI!lvY@UXw-uSr4IJl{!-X)9>{ZhFINiewwe@>hCW}sjewLn#)CtZ z|17k8r`Vp(3nnH;UwCOA#QmL8g!*cD0x<;Y*pKz6oCP7ubYQE?t!lGE|8DuG*Pc^| zl;4&1O5?yHNk~TjiguSAp7cfS=t*;zWe{HD!c1j@;T8jf6@l;l4{yW}2U2%5IevIYaLHb~i z092}%GBqWoVY|zAQB|GG#56#VhT{}yW1&{q=0zAT^-_ueK@RHJ3>J5tTpDUSk(0T9 z?;ciZ!Bsg5@@U6a6%-313d8&di|$6q5F&JStBCGBqd*D5`9G;sOWwLe{HEcfXvu>O zOvH0lt&h5b8;9%Vyi$NWfmEfVArKNqA(dw-FZCR6H3KXNI@3$1Xnzz@17rOBV!b;d zz0JN~An2*`=Zp;E_dr99K!oA^C^+zvU@Mdymk)qsWdJ0%ExJ{1gU}<@!(<&b%QFY% zjpvXpBfkXi^2VOGKu9+zgy~TtX{E<8A@^lge%E3;H>j5tQ^(hyKEkqnrrZggS9n!bXY1D^kvX?6=dfD41zHJU!TIi0nsEFFyI|E2sw4X5x$|M}IRCFLUQu z-EVwlFgDJ3L;7>^7@3_OMo>s6_h0r3a0l(BojVNLVRE_^-VQ-q%n=;E1C7QoM7K-D z(=gI83ovxf_eT)CyS4f#PE)hse%F@)DlEve^Ol;L9O=}6j0?IKD@g4^o{MsTkk|CH zAr1JT&jA(#^n5XZ)$&xkPy`gq;)Vht6p$d4dOa9KZUDVi4x@d^ za!AzK=`ezVlLKc#ERBDiq$)LN2tg;?8k`75)ov8qSel?0w&zW)-;Bu2KgknNdddN% z$9Y<)x7}ZKjmO(IbI}wvJ2t>U#U73E$j=6&sZJe%>eae`zg1h<+GugeGMa13u4EtmEYwxY|zU`Do9#! z;;>Ha(Xp|iWZxxetI;XXuGukk-Q+-WcL6W9JH5}lJKdZLT#=O*pbg7$nK3jgTtM17 zfChl%3o5rje<{kT@^pDZvl8?D^-k&6ra+P(IzCW`LNO1SGXcf(R30`;IjJsT8U~n33bT)k z3bDbX;&2OXcC*cL%9&#UrxCb--PucShG95!M!3L7llSazy%ghCVWB1}nl~(*$)Mh8c1@p8&rGuVI{y0Yn>M|D^PgY#PI}on^r>ZkpLe-6 ztG}PTq;1aueF-T9c4DY`41-jf7ncx+LSCLEAk?@dnhbeaMdLSAVge2BjJoi%7gU+u;XB;&>pgJJ4erFuG=j!)VFRNcGTZ-UeKNPr2x-ydTMe7M}o3?vP=rgUzKl_Fc3 zJsD|~7wnaz!blhM2tqN<{|;W^AY~zuXJo*U{`fOXG6D)KLNu;l6vh!4&0+cC}WTfa4v z2M#qI2Y!?Cxhw|ZygO>*^w*6q-o^xL;AyrCq$#${>fxK~ba`kh3b_>QE|NRCWGvBz8sZNY7ckSKoKqZo<4xu)`< zUc{uB!)-?<>6AJI^YBL)d9og+$YnmQXE-Z8;&?k90K#rwM}OL>+*Scc;DnP!fzRm3 zmK_pJu(C5u9Sqo{7ou;0dOJzMq2CecchEb^H?Nke>;j#?DY%u?AwgkF%EHA8qg$}x z4c41n2~ek7eS}GBJ}hhnkV=*>PEw<52V^^SDZnK-wWQ>?a8)8@EdoeaJTlwzVFu0L zq93G-1w%0-L`7&j8a*|_Mcty-m0E`xAu0F21k9i)IqN1OrSmrTrY3b7z(;SkzVOr7 z*zcn`L&DG#aFX&r?<-viMu^7ycl-n#Q}-Al`QH7=+uu=2Nm3L{9IW{G>mneNyf9pi{ za@A4&>8U_;=jrZ2=OXt6!)5l2Dz766i5bJrWVT-H zz|4|s#N(*hzrd1d-yG(wil$~uY0{gXX_7kv@-r30B3rhd1&+U+A%7e|3PAEd_&(wRtqrU@e zuQt2bUf2s0r>AQMmKk`ENQm*hiz_iTR0GTJMaUrdZx^C>+kn5iJ@3hi%g8*oC84bf z#XQB>m4?FC(cb{cw*@~X+}>{O`0`gB60oHM^pqNo(Oe0KwsEx8_^r8;B!o3<0_lL+ z#^#5BFji`W@(PHkY`}^c85MyqZ>sehmg07}zIn3th?DCekq5YmQ6skFKFt>TEvuYf zRGxcVB~A~7Vgp{$&O+APEo|glz$L5&9RyusAuKmg1oe>5zz`wA3P5|YW4^AVl%gw8?v# zdw)fK;8#0B_^ge@=%04SvqYT}$|pyj!)?hhZMWL}ce{1kKUxVHrd~4$uU?6GeRueO zOkH(U(|^?7#()8njv+O=hD=nt1*JixB-}^|m6VVgFhCUPPEkUT5=n`T5G4cz1?eu4 z?tZ`i-t(UG{^J4h95{GC&wcK5pL?%Z0dD3~5+wAV$ZvdbVqS37H(OnE@)I6gVyaj1 zmMJL#m?Dg5`Bp%jMia#uNGn-b!&-hsMFnN*gy?DQ$aFq-cpElq^P}!pi94fH<`t>3 zjHs&d)i`fy2s>*bZ+`9<@wEqW8)5xWp(QY-_E#$j+Ri*Qq}|LgjT9LTAT}!$xC2T} zLgu23J`O6WJ~Rdfpd^eOzI1jNzrX)!+oCMPXUm~_P!l|_Y}TB`{p1E#RPL^~%YqUG zF7wu!+foQQ=l9sCDABu9roaL%7HVNP7(mgXAz>h3T><(bNk|dSIE^k2BH)57F&!CJ z&M&%s1(LBU)M)VUq>)sQ(Jg(&Wq6JIQNF_jbwIAv9~r#UU+e+RvBm0-j;M$er$l#;INSk63_Gze_$k z`M2D#@ZXRZ;6G|<-Y_`&b6bB{Zc*6h)GTFwuItopCFK`LD}?ZY-`|+av@ZMOrs%7U zq`%0Dn_lnoH)3xQQ*VL;!&)&{K-A!1{?pkCJ2268bOwm{0TvR%kAJ|u!uGCh3W00N z|GuPbfeNxHGarAf!g0l-adO#lkUFwO{ocsEl6Tp90$S5v=(}^w>aTf;pcmJvKoMa? zYgU-8fmuXrfy%4|#F`5(FfA94Mv%0DH;eYBOv9fCtB(OiZGqO9Aew@r@YH$a@tFV! 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�sVkF`1WTpu!bh03q`KdZ#yp(&a$4MgE;;6= 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

    ~SXGG{MXXqOWQ8g%ZhSSOqWSZ%)G* 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ⅇ3@KA(_MA&!&SG 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’@wL;sbfgbObv1v=op_D&sNVly)D%ws)-fstk_3HS9wJ8IbpO!n zRzCT0`zNEb(MOL*=+t=JTwCB?s4{{>(s*0lpGF1#0R(b+bzgAE%jEr_+ey_sp0%9K zBb`}R;z z$ZbsQP`P+ewrkK5P+Yl`Vq#W_9ZbZsGE$iN(;bh;Wk_rtf7Lw6SaM#3%vyW|5$W-` zgWGc*7iE_xp-U`uUc4JX##{sgzi5DC>cJ1#*Z1tkcB|)>+CP)RwsQQ0*Hn;o^ z%Y5N|n!IHP=HI&@q<*AG3A!9_U~8LqVf+Tm~^j1A*_<$F~W(G?bt=kJ05D$k+WMVlJ$31P%*vPpo2N6fr?5nS@ zC^y%n$_!u6i8d1?UR6sG^Epk!55KkjnjHU=uc?r-l|Ocn#Ft>3hsW=v@OL#D5rE52 zuw!(MVX&H~61p2%=vQLb>r6?&(XDS=@YtBNW)*1Zt{Y*9ACWS(Xw~-53Qo8V;6^2c zyc-BfopjVO_%f!R9yLsCGCVcPr(!rCK4!&^zpKSQcTPc`P_d&All9Ch{01*h=UOoz z=J_HZK(KHSY97sO;g}$H--3VHIzP*FMKIfa$1W*L2Ajrop>=NwU8!E>6luk7lD1TE zqYn7UDn`YXkrFW+gVBSiVN9r$eJ&I|yW{DV7Us5R!*+%@aTyJHMY#+neAK9hLr#Q) z&i}4uMsu}@@GidHjgA+szgm@|;Y*!WcI41w%FcG@{q1hT-^O}l&^L;qskJ3n2tsrP zpO|cSp;@JqCqy^6=R*xCHcLm4MwjC^+XtLA0N&&v`=Z5-QnC33|5dbhA3=GRlU->+h84kx=@yYqC`e5nKLj;bn zXzT<{R3Gwsg|f1}){}(>Q!ff@oKNUHAX@jDrYF{K2gaWmYb?3aexPWx&BiWO_X;j4 z$jH4vKi_>LWWdMU=eiNH!zn?wEeF3^qY$O}SXL;*VJLwRX*Dllj2dt&|7N>-l(1Kn znKQODDslZ!R}{(4pQ15{j!skDp+nYoqL2qCd94xo#~4KlE=B9wK^}wi`I;T%Jnl*q zd(QSy*jagp(G0{!HZu4y5ggNEc}3c-9x)D(K0|xg{;*-?Ps*fhC&B<;pLHF5{ zeo%Dw@Npt?(&q*v?%2aIYi?PQ#SN5CQL$Y#`E-7Im4fiXjn{Fv@qpIJU+Ke&4DCy8 zR{_vs948mq%YKv;sPy;NJNz#AcaSx~iS!f_XpIN{7;x{}2g$9vDP=P`;J8UY#TPO# z{56c&nU3t+-v%$1>&kv2%_iI77>$E3Mj(%e$IcQPKLe{52}*2PeIVr?_5~nJ18{>Rpg(JVY4!y(09xSw|-nngNqR^^+`ko-}pcs{ZJZrxZqB<@kb*uMA2L;f;&Yg1=NwMXe?B659kMP^a-DvA5 zD?t12Mg5P%05+quHl$56ox+4~!|${c=j%RsAx4XAOq6#i)YQ5Gob3#nR9_*pDHVB| z;Q(`NeW{>35ATE^woQRV{LW~ zg*19+ZO9~)s$AXR#H}?4F(0|&8S1OamAQ~gqq>6Wd%YqmR{v9c*03qV5tz%X&Jd z3TcvVL#+^>2i_P-5AgLzQ^D@M(yD>_p24J)Z81)R0fz8E2`2Y{2#YyEnysjIs_ufY z@epItCckv3#CDavwBrv6+t^t{UQ7uf)iv3MBe;m{2_4S3@f~T*sK6t615hL0)+SAX zFJT^k;31!V;>rvKya;{@km$57EL?wnjxa9ok~2@6leP>$p@f#OO^s~luK_tBBk9`@ zqB~pmczC12#o)sYRV>a z#b}zV37qsOCY?midR-Go2(L2YW~_A0dKD92@NB*_$*@B=z#x-p)4{&dr?YWF?C%7< z4#F?AQRur$nJ-Ik?83X2B|M#>?n)WRXW5z4vr5tJrL8#Z+Yh5iPI(b2`4p7n z?c5?M+s1B?J~38d#9Rs0a{iJD3Dky7q`iX;#Ae{XWA?@BZl%c_5T|i`%WX-N0s$O( zAq5>)7e>ZiEwU8M+bTVj%&UrX;<1D+g7S4!S3K`C!6GW4-mWf;aKF0&NTt41*f4i+ zk}PH~Zm)C6rWdGnMCW{cQ9BFk*5}qT(bO;AE`YKgrc723dUzr$`g+MH_wo)Ybn#H^ ztYgu?Wm+`|c&=47Uh48Vb_>ZtTFAysC=tACi@R}I-qprb?*oW00o9EkxjWsinT@d~ z(Z(z!t*o;j!!jurrd8ZRC!kwZw=LWid+cvPjCmvuty=wNuVzOc$^r{MuYpwQ6hBql zobeS3oqr^(@@#=xe(`6`u1Hkodnu23=(8)Bzx7H6 z%H%&azGhk(&pBOEiZ0Miw+Ymp4)|;7GmTF5j`m}o{*=MnTa)6ZNVz8dMB0cox z%*xUD<^9s(XzIO5?1{%D>QHJCN0>^bNifm`H1HK^1f zROe#PyL0M?L1aIP4W=@_bN6L|)SlH?_g^L%eW&AVJ;DhSxja0v_x^6Nem0YtKFIqn zdv4oyey`>g_*&K={7eog`+x0;1qQ#>R^@=apBC=~S)b123k6qReqt=Jc~{)Ic=s-V zbauZV;?_o;Jo3*$XK(eN&bs)|mcD8iuG8v3+MJi^oVG zf_r*HQEu{|RL4poy5i#w?p_N!w_G2=Waboy^+emtC(kyk{%Nq_&~+^9-YT)D%0x6F zwvX%|iqlU|ty}Z}$!x6X)O`|wSncLJkI(f6eLT6N#F^@)+P=bz2l^91F-Pne7zRH~!%8E%qa^j=zIw)o?%CPpTh0l$1W%P?4-pQA*p2{UksQm*>!f=pvirevKC!Xba8Fz#HvE?h`qC3azTd_yft9mlc@OXr8 zO&HKW^{eMr!Ph9yFLy&x&w)Q#^R`HJHy#!8OKyi}GQTDI&y&gfJ1&g;&Tcx%%jlMC z=xKH(vQbbr{E1Xw^QZ$Kb3uCdTq)ikh2aW3P&l+ErN?_Kk>Jy~qKo6-$QOL|-0yy+ zuo-{m_>F6+=mnEqacNf%&h)Fab7%)tdX1-0wX~L1aw==1y`;CF5mV!#WOisjpD~9+ zvnOyny8Ta(*Y*{iTJlP-vC@3X?7NOKq5V_$8*Z`<{!fwEh#ztox`%lE_2+tnYs%x@ zYVT|E`}pJcoVjKFs$6OMwic7$DSCiEV)uw=d>Rle#auwyh3Ntxc-V%{gt!@I8!%Y& ze$aFEoYXbV6)K2r%{M<-9d%fvL`1b#J3=2_l=-KIZb zg^fY>`z&<6V>D7f)%~yFT%Z!5E8-UhEr_!}(o7%B4~!9+uR^kkPT_CB)yP?&D zm_ECHDK_#vCNIWUKoDz-w~EU678P0;(l z&1x1)s?)ahrAWF+x&gQQJq@d=>c8=R9VWc9yX~z5|BDLM_?!ZuQK@qXL{;BGOQ)WG za=2c2j7-WLp1DT72OzyW5mFA@)`UkH9<()}O9Rys`W*L@x{Nba0AI0@!F8(42Z`&F zMh}zj3?`{?a!Vx^I|1bPu416dN%vMyq_c}Jw9=_A8+dhFC^GS{@T>~8ODH=|z$zGH z)<8Ub1M$T=tZJ>sB9wt;Z!|r!TF(!uWdaH@EdP!KG8l`ZS=`5jIj1P}w^wJ7pK*ap zqvD1P|Ey6jZSg3F1*dpQlV>bG4OV$3%0=NX?&}hhZ5>itjt>kpX;Sm)yNzJt*yRCq zlZ-z>gFqcO#i>>MRHO@^cQ@_cpf};r2L*}r5(fH9F{Tp&^nHzs4iJU z!HV?Ep@r|Q2D^0#2yEMdNLJVMd)_C|*s%wpD^e&fv+O}FU5KMUm*Wn3?ggFiduK4$ zZc9=6bd@09+Fp8fBQy^;W$_tW9Ae5Yt^6|aE{E-FWi8&8y(H0nm<@8S>K4dXBxZXs ziCrk=81I^;NaZXO32t*d(BW(=lFe}y0_Wr`UZK#0Mn95Y*8aPJ++3Mrc+A{jEzf0{ z=alpjz(=|;XoBtsgsaq-1#7^06iXt?8>PW3eS18xq1$QvcH)U@`6`d&6`+ySMMQ_` zfM+^!i21oCmDI4$r{u7O1L>#m1?lEyQJ&V90k;%VZ#%Ou?E&s!{MA`J&@cEVIqwg! zk{x2mj^$n55Ta*g58qln$Y%bQlhTruLp|S;R8Qiowy#woF>5I`{a9AdT^o5-eZ!C;9mk3?6BxL+aIkK^Zr4@ z{Ada#Hr=9LE$t9IzMZWpD(j$a6>FL^{X1}L-`&{w`4Wj>nbxpr z)XJ=D`Bzf%Z*5_Z{`&~6h=L4d5Tc%8#yJOn0?>21WuEeTOS&+U4?)WOtLW`K<({=1 zW|EA5x#j(7q9d`#dk=KkE)!1qcmXW1?Oic91+P zwTUgArNllv*RY^FHjElvU7S958h9MzrBQ0FVnJWV)R6LWpHa|i+rjc|a!QS1{gC2B z7GGeuMWdXUe+HT9tsCTXh$u+EA-wKGf{|m7Uv=*%lo0;}$6uqysy>*4)GEA!#;Wcr zzx>|;JpHB+dAyWM^2Mz_A2_ya`|*8GlE)2Z9W5pu{3!6<64N#KL!q86OMz&74XgQV z9Rp3IbUz`ZKojTE*uTGoLnX#6Pq}^7ujU0(TW6-g-o00Zvv+2|Y&xotz)YSDcf_S# z=fdcXV{TBNH;w2D+H6WuT?gR1x?xedT*^9{36>Xf57vHLf)R!z?77}3{m5i}E zjtHVX9$o|z@z4nKeT6LO-Bg26w4NM&k_ z%6%gPtb*312k*j$N&4^|eXE+U+VD`{*7@rEX}uo47GyN$mn4=##~$SNwCeu6pnq32 z1Naq^{_Nb!7t!7dQ=yg?Q&?ZM4pMqb1x*R#z5Ma-mln_e=uR|mTDR0_pI5|d+Ec-@ zr7lJ~rh)j^^+WFy$#6SIT3U_ns)9KFM8N-a)e?}f=oYWpS5+^!m1MP_QvSVcMO4NW zg&fHufz6ukjdlfbMZTir@m->cZhgX&`v^#|c3?^=wl)@Le)pC~rl6jOelY*VIRD$> zK64&70NFF~iC%Ov#Ub+li_Phec1&e1SD?0NWfJ=E>yw|S!s(W2g+`Rm1JiJ-_}rPi_w27UD>X>-nz^NuTge&^*cIp2Cxt6A%QJHuNn zJ;oXc?KJ?ut$auS_7~2KwHCcpR2A7h%wuqjKmB4n`c>U(E*aQ$dpGjW^kulS>E1*b z!ucg}PzC3uclOEbjg?lVQ`hV^OC^zQ{eDH>%UOe1WXYmO09yU7EE~I*P0+ zxSfRVD!{8Ett*$8?7RxLaOSvhtD{dMuL`~^0G@?m6^K?bSp{Vhu^c1B0R&40W)s=k zamAc!&?`*ek$O~ys$^9`RYdA4u&UyA6Tkigu$t!5pSv`wI+Y5vozp5oqm@0G0Lu~M zDGGZ$dR*sX{iVL)S@QN3dnd^)O8nzI2lkYxA(zy>nSE!0&dljAghak_Qd0RnpKU5< zGxF2%GN&}GemCY|1($L!>wo_L9Frnpq`_1+lNvy^;9&=bF8=yE(~yzQd?n#@tU4s& z=x3gZ$xQg$MZ(G!&4WCgSwQ2p31t^I1SG*q3&HelN*J&@$o_(Przm>N#tNjy|Foqv zR8iGV)M2O)&n%zX?D4o67wjsKjM2yuTo|@)PvJSra4kw`H4B1+N9qpre`mYcnMitV zb9Ad}f{gtIx2gj?Oc==;Rknq})K(ejDtGSqQ0G1O+{XFIOz}?77-KYOf53$(ccIlI zgZeEWoc3@ha)nr>R+MkG`UZHoO~2@b`@0NRQ+YO$6n(Mi!tWxP)TEq1nW3mGr79-! zESJs&uFW6t)Vn>0&m`4%AHwpbfoSqx97lRGcgw)=ExlI{LCO=ut*r8K}NOyx1Vp@lj8hG%D z>L7gqgFde_fos!G{+!J_?ZW@2;t^|VH4QI|p)>4pKeNy#G^g|jd4Wa>9dxa-@;Ekl zVCP%_S@l8tIx|`G1mIZKm#6Umb&0?ARd5hCCgI+vNA%2-foo*lM2c5Ov+VK0)ZrO` z8L2*(iu|+0L>U6DvtedYNO`O0XLy`{MBYhE6>ppiXKrnSyb_N6F(U^Bb{+(qaX2a; z`wFkhT$<0a(7E)_E!CJ|6rs~s`~4;Ra`FQbtylS3=_R*106WYIC(@*kN46mjKVT@iO`z`}Po+p6ke@Yp z$LvOju5caX3G}PO&@2?GpT|GM%Mt)Gy(Y#sGWv@~ozRl4z+rMq%u^XKEB*ystr~t{ z{&o4gDqwQx4-BlY&_)-Dbkx`;!pLGD=>LviRgr;XKLOZW?#T@mmzFATdo-QjWR$^A zUt^i!9!iJrBoV90(}#kYF0yAgDX^1-sPXAfhwqiK4}*a5=`@et;X?l#anru0wEg~`tC=d6XbnnqaHlx<0avPy3t47bR_vi}}Ni!t9FjYJK zk+X{E_&nVv#YS$Ww2Slwi6`9lkb}J56KKQ-8WOvYaJ_^JSL`Tsixqs^c&Pr<2bTG`&K@-dn@vlR{kSeh@7G~&e$d~Wm z2a9u;=)VqXYbsNFH$&4jkf;Y5JJbsj)WJ<3fA9>?)n*?FJrXle^G&8kql11P45T&L zw6Du{ZtLjqamIdw+Q<~esh)8q=lG*gM7>3%yzLKJQZ>Cg(M|=db7jjnMm9us z2iY}&WIALliXekGMrcHhulCRm^X{L^KKKK8CJR{eVv*8o{zJWxS-_X33RcHV-5E-8 zfN!`m%=#y@++oLgyd3$j^yukRxmfsSvEHCqmZl206HM1e0TMmlRit;D#U>in4<%+% zvSpY_O-mF^83L{|VP|G2xiHQ+U!W{WBPFv-{d5Z7@V4wq z!fgMEJg(|!Ui|)FWukA5ENou_&LG@AQx9{IIsF}QN2Ge)m7tvK!|)d#O2|M=S0>a~ zo_p#aYkrfRS#)aj)h=j6q^ab*8LAc}NytrT-GqN8Dw#OWzBO?0XUzmtv1pvi3Ug@x zfPa4;bhe-P1xNw@kF~~JFZD9iS-NGkIQeLU&^ldbiMW`4vsVgZS=M3 z?b}OA8ah27`xfr7h1+GMJ{I4KDEDGB2{_PmsBz-<$nbCZAW`YA z#RuoG1)1pa1Db0ZLYsx8C0^6IgP~h}EPo5PLs@)+NvheU25XIsN4?j|uZZwbkK$Oq zNNKk}(fG)^Fcong(Ysc%fX(FY$o2MnKh#s8<=&^G*09Ti6>oh9Q96pQCt*8^vMSK4Vy+6hD)6h~dKH9LAz1}w5kwgxLE}IXBcw>P4H5}9fvUiY zBY4RKf=y8GNpe3v(R@cGJZh={SwN=0<Us{uM<|TcvdXyA;*f#-)?|GV$B`Z;H zPs0dzxb5kIDez4N)@!G|^#hk-bXiMqxfli;=6ItK{cbXZ%`%TFvbSvY7#5A&s{m8^ ztS~-9-90Q?yV9%}CppN?Ax?MM&{G=C7n-TAcfr&nmLOstH?DA!z|47s!hpK`H{-6` zgv)?|b+)8y9l00)_c#;riyS>&GLlOz1Qs+oXjV`oapGBI#^ehF9c3W0zusdM79AoJ zoP_;!fM@Z$}1RBlx@INT7*ucWX`j%9k9|Rm1 zR>-l(OQ8^Q&VAL6_nW|jfzMwSQyOLj#)@1^CLJBU%Cb}*xY*=)WZRR&uc`P_)M zQ{il6M&q%TWd1lxr{Cu$@p^UT6f(-f^qVq{X}mXQzYn;XXfW5tzO_uH%(KRROLZnc z@vXg_%37R-n6QhybR~KnkA&x27HH~+hlZIa#-;o5i2r-2Vn**l?^naD=#H%y^y?L7 z4KkibbK9^3Gs)e4cnDbqq+mUmK)cJlervBXGc0?u%T|;v=uD?f=dfu?u9t0ZsWYaQyzWX;v(?F+bhH1>0Swj|YG-V) zH~Y|UylC{!`c9{I!&tLHrg+0#v^1mbf=_b{4yJiQOGk3Vrh3A!YlmgX{+aI$t9i{w zU%i%{B5moY-gQyBVc1OxL92yo5I0pnSb-Sq_YH3 zUrt5H}qa*!Oxx3jUPPNeC`yHwpp_!iIEL2jP&&``0>a_FN2N{EwC zPq@fDC?&t~GRg?`T@HBOHT!zRn-u-~H)l?f(xuU$%}8$C8zOXmjH}hLIy(hdaun#? zD|{UDQJs4po2tAQ4a@3uR*uf^OCXg84Y)Bf%h7cx14(QxOF~?a(T4voHS`t=9EyXQ zJ8yCQXoy7zeb=|T1{pe{gWNn7&>9K$WW)G6Q{sR*Hfe<}Kgz?Qbyja7xc;z^!PnIh zP>ZQMmNd5@w8VHju8yp9n4(JCK8#kf#V9 z8g^wt$3WqkGDLxOtg;^KYm-5P(|m@a3Re{Xc0E%DnUUHxt_=zzF`+rCYK>+j_MY&3 zOS;ohgng0pHU2Vs^GT|mBuk05_=K_@M>AUU3sv0;>wk9`hp(w9Bz*7iVn@G-i4rmL z5MyprKLLpSARk1P?N?w)Bwf+Ws}-dF`tZwV&tX#J1jH)}#0Ld4Sh9^w{zMJg`w

    zZv3BxDWlfvE6OB!a?zq?=JW<3IM!-ZxLDO@>?P@SwV1pr*<-@e#*Y* zE6l#99T3ZVK%C?;3`p#BMaJ2fY&x%Zh+mNE_5`ovwuCyjr`-tchTD#Iis{`H-S#v# zlOeco`@|X7fQL_LZf9Nk7+pkTI`5G3?AF$G-l3GW#j~#Q4&G8mhcnk>J}$$xgcoN!R*wkisfdi({fqe#Ztc(C~s&2Gdtm}57uz&AdhZg(7E<%} zeu1`Kl(POV#QFytx&|0$ISp$K5&>{z>oT8V%kJGY5xZ&j#X7L;jZyY-R#Q{ z4p+H#5IA(Fp#n2&5}jw$;9>&p%7~44waiW=w#i{Fg+m1>qbrPwNv!wiMulmXax25!o97(wrSNqs`nqS zu#wVD%vQW)($s$)MfM%7oWc>Ha&Xs@6I)JoPlN4)nN8Ehr9U-Y52CkgVh6cyo{429 z^VJf@-kgww>7&%d9{0BpBFS!55(^w~_0a}bSA!5?qhd^>s#J&3T(mOAFO=xcwqE}h zacamfBvNZn&T<;)tp13Q){|+7B2?P`%g3YhfMOIglCTr0P|$cNQQ!5aPwOg_$cuvwjb$ZZ`}z=+r$Fgp!8;L+=E1L-}T<2Pg?lVnQ#-6!Qa8DCkhzPTNObAL?L z{i5G`NV!eXq-ZRIa9by_i2LsHV}1IlMkVoYbrO6867uLZLvbhY1|{jP+C)e?AdY#G z;fyFBzjYvJnFeOsq(e5=>Nel&(tVgm5I$D|cx8F}VH1HQn<6IyOxp}16P$_<6`AZ} z$?kR`hz?z%S!G{SdlMQbHiX6BwIHzHHyq#FvK?ix@D$b3gW0k?5NNtH6>ev+?3x=j zEknjn_q?50l;MxUl06;F_rMGTYFaTMjk&CEb;)-Zm!X*xE&@3GeW+TA^WCQLZs;c0@`dCjv~{ zK>`z;gn0f*>nb5od_Tb3FtX8clQ95Ww+c{{^3O?aB!_`-Z`Hw#+3-^8O8>XM^xgcsZx% zx;QpU@X4y39oiy|M9(f2Gh1m%X)^dBzV@o40oc1{M1L`%=*x)nx{2>dti3pHb?fs? zQZd-Kq@Qvz#;fc!$w*yI66D3aeUKvIX8Hxgt?OLW}~bQAhI|ZYH_c=%0$N{ ze5_rQq_i3^h$F#yr5hQW-u+TO%8Hby33zx%)n9-zdn#@y14-#zY!LV>s^jt1lT$>7 z?6?`Yl@+P%Ty+WJ2j{m2z#NWNpD2b=*+!diR3CBc^$KG;)!Ep@_th-TWfgwj*VFo) zUS~NcO=zepc|?wPD*|M)u<7I!EWEZg5~def>P>7^_y{K)Xk@ENq^yw*J*`)BJhrRf zF5VpN-rSv9yz|qcsuBKDz;7rwWqgXyoa)UxbajfCKTgQ@m&-XLiM4w=pydv8%`b&F zTU5bR39(cbZVX7oTqWw_N1c86h#EeU@h8ARIN=5;m7X46LHqO5@#!6}%Gxn1wg&Vh zpZfYSBamxAL_`>(3|IaMtDz4;=jkQ}2Wc;85OZ|;$b;D3Uj#%#X%J$jzJ4+OhUTH_ zqnw5q4QNmhK3&gH-mkelHT*DL7a}%M!ZhThN$vpAR3B-6^t^0fzpP-A#cSPr-L;B7x}|-9bjHI;pBm6wuO`c5b9*m}d6-=AX|2(YDS8 z*|IDe&r$;y`L9Qf)O9X`eXz?4xk>trPB=k616{t$aygp2J7lpB2F^ro4(0b+%YJ>F+ex_A*ofphSJVwWmyqpfc>2pRr`|O>Vz?ij zzvN~GI|{cQW_L@286#SKp)81Zr497DdbN;#f1t(_u< zFzzVULIJ^KwjqddHT=P`TwjB>xO)X!&TLYa^{B@R(?ohn@3i_ykCKi*IZ;4b90s)- zS2c2kp6chu3r3pADvp8t5O(!R_%%%rVuDo5cWFX{36R!?Ij%~46-u{H}nn0g_;KM5g0Hu*0O*O&n+^V-PgZzI4flD z1x*y+z%;?Uc`}}CpMtG_c9w}!k8R_lFSmw-*mceF6Pk~gLWa1rHZLxN>|MQFgoUq0$T6hAV^WJ1taN~9kBrJ=rthNC{f}L$`2ZLvi7J! zmUfc@*yq6qqT7#4A&rF+%CD{cDlO+4H!%ByOJB8^7b?B;ELydXWv32VKDMNk6m=0& zXsh7G_7Z!A@`ybCe>D#`#b|@Q{*Ov}d00E<-dhaX0FOwhX<>CU z9%~OT4#CESX*LSq>0F9jyj-D(iOxyZ1Ut;%bOK(zni!SW<3SQ#A2r!R8Me`vAeX{E z6iIcg&4NlYEzC(z`R?LNJKK~S!C$IEt@tcP7E#sZ^Gb*Ksow4ZJEJ@@a(B5nom+f%N(}L#SSQ-Cq z1t#m?kpybFH$^8Z!@1zB>1SCLdEv87DQk6*MiGwX^$-&;U(0SZ8}4!V5jb_mHqm={ z5W7)VeflO=kGsJw3~-on;zN1q;Y_*3R)k->>2&(E@LfoXh-RfA2JnA9tY?C*J&1_(AKdTj)5Fxl$Z`YzY*jlh7Dvt2V_nl|7 z*j?(US<&LX}_{V=^B1FV&(6xX26)+PxN{T{j0_Zo@MJ?JGL(8>IBXfq5zIPkAOmT$xK z=+)VFJE6E&rZzH=s0!Ri=1cZs#8KG4tYDH;p&^97mtk0_<`u=cIhU#N6SltCaTi8} zRm7sHRPw+oaTkLiC+_NaQEu0J@ggphXDMLnQR&+&E_Gn}bk(e+I;@(Sj&N}U%oaOR zAU87EnfQ8M!6R~yd0zkb_nhy1!yNIYrKey$Hq}*SA*c40##Q&@j7Kb4d=hM%i!6p^ zK34q0jto$|{y}fF$=1?dTCT_yp69FJWR;F8+EH|M?6wt-P4SZWIX{xLdqpAZ71<-J z{kOE}39E~097b!ASI?xBwXAXFPAo@!#RDAQ`wlnxoe9-PNV0*Sp@~NIsW0|RtFZm; zuX#uojUj} zrmE~a(7Q*+4+xoVxbH69B~B)f%-~f`UJUz-V3DD5oP?k%DwTsT-;SK5eJcb=W%^v2 zJ=;8l+3BMXUE!ntw|D{7Omo>CA568DjW=`sa=sQ{`!7<<$2z-&!>8N+;`P}~adiIQ z;&cw#6jCQ>VWYKtLfLh_b&ppkam|p(Hti7esWe?4bfJ5auvi zpS>=f8V%e-Ld7QW`ED>}($?;7Kc1Uqmlzs7h<;i`R!65v6jUUNz;G4rZm#2o$`Q`< z#+;5OWJI#sBg8BSG?P2%OSKb zIM#U@8QwnYO zS6|&+tzCIV9R2*T61Rz@uiZ#xF~({r$2#M9g^+t2!XVY%`a_Mr<{e(v8YHk5 z4Um>X5eCt_tdeb6<$Fw$(H7~8eSL}rIcZgaiiCMrxxm7l?da2;S<#u4hNcqW#!)Eu zx~B5U0R9S#T2dr5*8a%mm7!M`Ml5Qt-0+eguA@NTJ?V!V&p&ZokAskPX~R-=iVoB? zk3F=#m_6rT2(Ov6?vy_UD=Z(;iUkgq>^R|Q<_@UExE);M`o~{)q#^^^>49fo%ldSh zsz`MYKGBr@MG;>YsUDf0o_x16Q(})-l-G97srcniayqJ=%v8KNQCcT*wM*>ZM?V3e z*(ndByemE~O(UE*`v%VsZW?hPV83D`Mx)2rIKH0XYqC9N$41x6u^HBHrl(&@H-<|X z%J*!7rfyf!AD*|uNZ4Ai3MvVv9NGqu$2~3=AadM3bS_P^nt8Eh}1b^SHj5k~C;6*XTY2YFMQszc=0uodO zMQk=o_d%o*9bwLQ%jCw9_G?R5c)KG7af}6#wjEfL<&fZZu_L?{ZWHK(50<>KmW)v2 zqpB6+EL^vCT1QBJ@l{dW`!p)}nS8lG*V_Tr+te~?t6=xOGp>CE9Xp^P!&P2prTRf$ z{!TP;pw67}Zts^#2EU-Sio=CmlWS<>Q0R4sf5%OMU9$x8&bnA2(9}d{3ylb6UH14( z+4KZO(v6P%?L}p3_PWUqrewRsJ(5w$JV?#0cVQl^V?fh!r=zN1^=%<`#62^vuMUof zE+niNhJgcQyVM}vJR6=1 zd3U~qA(@b!FSBL9$#u@v+|9Yqp7hl1c+prHnOVIcgYXHTgF-N2`g?-W9*g{-kLBw9 z!atk!j2rgH8zE0Vk6b{mHy3tIw^>RP2`L}7NzP=BT0ZDG$Z&CZDv|7O=WOt6ADLUc z#wr`{M5<6(agZZD&rLTp)2m8|)#cWS@qz*?j?kUy_iqT>=PFQH+bkHgcewFFaUBJ@ zuA9gbxV-3<0(~s}J!pOId({pOd*bRgQRl)(!{tj0i{Odgi)MtnG zKqU7-syd}iXE%z@8Kst!Se|5UCjEBkVqeM*;z|$ecoJJZpYkN4x-gF z{2@JgcR}73?{{oU0-3nvxNaXI-Vb*L&`8I=SHy)QTQVe_@ooY~kltI!V*LIEd+zyF zcInI=TE$DUH(=4zq-Lgvi&rCVybd$ggPyF|H0jI28!Smz& zO-o+N>fwyKKN1K@Y$grcBkO84ske zk+{7iCSIdrrPjqn2yo3X7DX%nXpz@RnxCi6flH*Nn+uj9|)k0*UK&rHEh9z5I#=}0|c*f zV+{?yyaplT`7n}|2U_9`>`AOdi{n%7sGT zs@IZNXw~ubKOx6ksC9-K+%&GKbDEgVas=!RC0;CiwBw@htM(-<4`Y9@-Lz^oOSUl_ z$9+9o_-PPML~ywnHAF1f+K7>qv){yzbF~nfBL<19qlhjxoIsH0XXAuj^wP)qUP-0Q z4^j5hUwmJ_b);&r3q;eLJWh4g7`JN4;!o3n3DJLP_GDrdK9k^(vUwK?3p~4kkhRt! z1cocp`k>F6(_jV}(l}0%7(_fZ&6Emb_ zodJ2`e1-xKxj_&(5LOWZ3T@m#VRE1d9w`jaf~m&DBRWNi*C384ZFR%wE_UVsU2SH( zU6bzv0@w1-jnMe6BB=Vf0GsW|MMrSw6yZ~OK|QX5Yo1<{enp!GirP`UX-&uYhc|y? zOThRWzp1a^xfvJ}iID^7bCQEsIu=lZ7u`yT2lc;-C)T0cmCUHCl`l&GKpT8(lNWxW zk+SgRvv=KSJx!$MZ)$Io@636%es|ijM)o8#RBg3;nVVO1DU~xeo^OwFP=ihgi5_f9 z;fP9eodgYz8OUzmN<3gKnpe>S;oPr@8*RQMNKY=2!bhy-o)Nu?T*@0KHxV)rDkNkR zo%%WU!HBlVtsBtMp~fMRl8h1he|oXF+-ERbt(6pFI2>=Gh|AcN6uT)M&(5f-bG&ZL zF@e&%%#E^wWrJsEKFI6#rD{*Kg!il0WU?AIPB7574qSyw7}H6@4mW4UsNB|A zbbkwXI$>|HCh7Mm(enL=OZgkAfv0J$cOfG`xY-G`%sKXmb+S2dN`$8_ZMFUjw*>F)x zjJ$B#5LzeEh;A_kxDgHZ1lWbp;9uP)pI8Q55fAFLxk2?eY*7M@ZZ~28&GoW_ed^K! z0qW^h#_66@K-9CO2KHNCkN~ezF0jBaw z2sWzxAc5xT{D#`Ja~CBmV*Zlu0}yiZHVF#m5k<^d z0om0bNzaFJ8-#y(7>2s9jhbz89kGc|Dq8U)g}Jtg7L6LQBgcpNi5j4QSgLk<&m$PF5;Lf*m~N+DtY6KHSrql&Fb6PG9Lb zDH^Ld-BT~%NJgq|b2`iZp`grMmTsI>8q?{? zANoAb+8WcfYwz_>Y}K00JLlSc{soAi`97hvQ`5jJ7+x^kQb8=VQ-UG-K&4@@wgaz8 zyd_Mfxhnt7_z3u&frzBVNP6>(C=ra<_2UXW{c7t`sIDud5( zjhq$Hx#M2}k$x{w9gaAl9n;44X5_>@A1)pmorqDqFTX2q~5cj_MG@!cPa z($0R(zY!=0Qi}b0_8dKp?67Sbjp#T#f`#qzl?1rB>Ofd|ZlI!c<_k09vx!Ii|6uoC zKd`}UVG?h>UXtnZ3m4efF=5P6;6anT$1u#>bgM02ITj7Hb;s>0@rC_53_T8=)V<3J zlFH|!=#K05Tp1V+>dN;aSYon|!ExG5tfjkgQA3L0AKOZ`D}}bw3kiB?)GDrk#&e?& zp~|gUJa&*t9}OvEW{=Pn=r$oSy*(ZsmS7h)$3%8d@re7anAQ$_%*c5D{|a8YNA;9y z6M{Sri@`m$aHMWkzalQP6-gXaBnD4Fpa^#&nsb~uv{PB z0wEooU1T}Dd+;-uYEWMLO(^v89`M(1+c11>Uci5MjT#MjXTaV)En#fbtPLMfQhl%x zA%AJe7moR34Jy6uFFv~x9F5M137O`+9n8>B=yA(6**z6`szbG+a|H3G;(ant)Q-UX zI4pWBqE{_X5E`6J%3E9QkSBk5v|-;O!rMOWhM~jdA->CW(&BNlOYBuAM5(}wd*)1F z2W3SeXlDRe2i&105>X^JAtb0m6Eiif&l8Su&N==Lan3!6LKA{0gdr3tqHtB2kn(WI zLUGP7AqYb8#n!c(wV9iz2b-h&@Atm__uqc~_wY^i*4bujTJMKk*{y56ZTOde;XZut z=X%!lz30!Fn$5ReZtJJulUSh9pOl@{>kvliSF9ay*3J;aikcwa(F_AD*~8y35aGA) z=;t4i2wb~R$5;I9p!q`(Cg$$^4flhJVe^v!S6#&()API#@9F!ErQ`@*(XHPD*?GSp z)v9}7XnU`xYx>R~CviNgNelhU;^Xn*Ve%7J^ z>fDg4>dF}}?8F0>!rC2P;%tF=&FC8~GU3m^Ue4lQ?I7^uCQr)Lx<>2Ny%5)Nqk|Qa zZaW{FApXfrDDRh*+?{3N14n1_8;{RP6OT$WDDjvaYH0Dr=R;@*rQCsI~@Lu*|%uEtLK zypz$lioq+#_TMCFb7bnv)=~efe2=u4qC`A}2Cr=tA4s&an~bR-GI_{)8NVXU;TVqE zE02&z`{iGhPk$KNWi*DpKCrDqADVWzT?&1o%a1fI7`L^wXZN0F$zPR*}xr8%9FkyO6(33s<7?vUUS>0 zW&^UwH=S9_lg}6N>6KEIPz~!)(6!8)H2OyWzUBYQscC>T#U^B-3D(;l zu0>vC!(es_%&h#-;&wj83S4vQ0`6fM`*4uIZ#(W#z((C)e^{QFsX%XT%mDE=kmt14 zoDM6dVSUe9f%O@+un=E}r@+)}6N~)i=#KhkpruHuCCVVrjcDO2@@2qf1Ghzjb^M!R}}`O5Dnu=`d$(q-os! z(M9tnRfYEL`pV${J%s?x)(GR<`Q*a^-kCXq@i2ZfsQPox;KSs3+JNU`oln(1&W8y4 zp!#m>kR7IiRMqLC9Md z&n9X5T!|X)efJ~pU5KK-vBU%K+abfKg~K0_7(sl6)@T~6s|aouvuHcRoT(5$ z0OZ1NFU&$7y)oejgSJO{{b|WoD|;HCM?r&%cgx{ry=7?N1?Vn`b`4)dBtn z>X>*}u)xjR!v|Bys$!P#n^1CAOMj-&Sh29AKH*F^y`>>9Z0RzFksS_uPljyRB36ZA z-@Jo`nQ}X!QZUGJ9_LaxDnV&^BOae9Z5XZ{pDlU;DaR2%OzQ`+e5zhoo$>ulB(++kR2_n*{{3vK?2P2B*E(FhedU&o@@hgy@-eF6u1wdh2c(PUb$FSlgFQ@O{2v6O8FDLD7 z*U;V?ImhO|sZ~}?+^M*lX^NS5RA8I#G|IF3v-ZubVEN~qkJeT0!0N=xkf&i|4nvsq ze~(_|s;TPiDq!C`2G5amRA!mT#_xKA?Au3RO0tojmeOGlf1v~ZE2JQF&ZHNgkd89T ze4ZI2Ujf>r5Z|~yyaAIv3VlnN;QYmJ= z%!X;DM2oG>L0sKII=4O%uZx;xIyTZk-kw#w3M|Hu@MKnTn*$8#y&7|Vl;6%k(>C@O zqdTmI8>Ykdy3-{e*!lr542@ZR-vW1;9+!TMS z@X0_M9>hyr|L0m^e)~d&j7X|+qdl()g+OJ#twbf`U;~!DI}qcM?FUT)(jI0d@ITFS zFne!$SNEFr_3PsL%4tvxvuQbe+5p?P!B}1~PiI%j{Ra_pcRQ()dks&4Hh1%0dIY|L z6zz`5$m(=bv#z@1PUW#V8_a)DeS0+u2c8tc_^q?RAe^2L%`r@ZMyjCcTm-3^{NWke zm@x~+fAqx3d#w%2*W|4KSy&ZRc3BhQY>$enm1|IRmwU3S7S{TILQ(ZlEDj;plD(&= zzq3Ev*>Y6f-m8O2z##^&qrN_8#_*|r$ErFnH1@g2$|4r5``Zt5US(Bawz3EL@6IZ* z=BAI+Gb>eX_>k7?=L}TGq_H2Qksun~mMA&;G+F|fh}x<9>}5e!EsAUq)OTR&o_J@)+Wq00YxqdwtY(GQ z&5AtTpFlF%R>Psa+~lmBRv0{u$o+gnvcYuOgXdZK6TO;X{4}IUV>u@VlJ3qNCz0s< zYxH<_a^2uQwUFerSy>O-@5tZbdw+uixK@rq2#6agpo~8w5w;HRvltF$g2Ee)?=pCB zd{F7`?!eN)Yl6$&)}L$S;DeUb=*++GpMufJ+@GGk5zni?bj+#n_9*D-%L}Drj(w3v z{5j5AuxtDG;C&C#A5qV0gKo)TjFaZ?0k)^`52@)$VpuBGvve7)SSBIygcDKoA-+Gw z7v$Do60m-r0QTrNCwk&Fp|18~0d3G%0m^RV9m&hY1(UOcGtLIEKRtKO=5}tNo!H5h z@#0K^2a~fsdFSR9Yxgw0j}KOlz2>38dF_Ap;=+_Y|6#10E!$VJLseA=ubBjWwv`+e zdfageFCY7=vnm4Fr8}i!CssOq$<%%fz%5zTAiC3(pM9%G125As{|%AM=j`%#l7xzv ziY|Co3Oa#Bm;5O!-qlc=NDX@Cyb~FqwjZ*NHsSMbdvr# zN#2fQ(pMX`vLCPTEXVsCe5#kdIrHxlP+#kdvKPDPKa7Hs`FO&AZ}XfbOj)(B%WR9s8Vi+KqlBI9=zw49M#XDeDulAz%U4e{Ooy015 zECeX3Oef>(QmUDD-zh53Rsb+O#wjdC!ff|%WK@=V29YIo^tGQ&!6`ors@;b9n6RIF z*03G8Z@nJBb882~oZNTD?Suub*AQixba2%evx)$6M_^!?h}N?PoA|N~ZJ)J-yuSTPwgS*gX-uetn1+25p3Xhl65T zu<@WdX9}ys3XWxfSy2XXeA7y=#xsao)|!yqaZ4QlRcu%3SU^XmC7?J!wIAl2``O{b~$|byjaWv|*mf zB>;))!<|=TCs+OZ$;#rt*0MAN4>9=LPiXf zfokWgI(DQ(57m+|`ZYmFY*O0O>iRc;aCMGHy<_D<>e}>sR|LRG>B!H2C9mIeMKBH? zj}(17x#2ORS3^`s1^&kHa+=c4Ac48VoURyRr8r^Hxj0oH>ih=n_ZV($>##Jo13{#` z_2;*XsXh?*r4xBYx|6AMM3k?suaM;CB12!dcu!_%djxKbhds-HmjHMYt}^_-cs1>X z&@|?`V6ohMX7lOfaYSuvC)BpyU|LCI$sOGxebC7dzyIF&3*0fMSgQ)a)ztYNjL0i8 z4+cW*`GCOJb5m#2V+rT;wAD|vdX$GHrBHpw2u;^3vHCiD@HC$IAhC5Hq%_lnY4;&8 zhvpg{&tus_p8tU05D#J_Z&Ap1GrEh9KOcxX3FO%-ePNXC1B=v^IoQy6Y*43Ovg8}~ zpNaQ(->sb&y?P+dHL%&XC1-1Ka0ah$)Ec6orbX&>ooRI?av3&N5=>RO!=txz0*r?S z$8!o7v$sZZH`uV@F0Eke(ntr@-`EaNtpT%{l{Jg9LBB%iGm!xfqS@dMyB{uOrb$RxreqIq>pOz)yH z5NoxyBD$U$Aos&)Dep$5pPNxH_#+y*jC_5o!GCyq#JS{8=Bz+yB7kyVB zpHfFXCGL<5mZ;POuQ=*A$v}AdzFuH5?~m{X}0V^6a+O322}kU#0{ zF_^`3Kza7BCulem1n-!DFQSj00LjT6>*&Uzq>cA{GO&=C@C5^U|cdPz`b3D z4Xy8l2~FJ?5iZ&A+rOw|rtV74zP~6yGeVty));rEs86^3nLKO=R!7m|lQldUU#4OjP2eY!YopC6`>Hf)+u38ch zb5lKoIti zr3O@V3M6mtia+t+2}C=bbZvBpcPiPFJE@x|UlkfC=*rwEbak?iGiMYWbAN>VJ9EHy zP~M~O4$`54*0`UbaB@Ay3S>5G)7jd(lgXbt9;ko|;=LOra)Ym%ay9N&WrF8%hcX@^ zSUMhgleSi33*&oG=W$Q{I7C?g3?heKa-DS%WAs5qXLs#q7{ac>c)WHvbYt%s9KA!`-&~kxe51U*DmYSUl>uQ zPoy4d-Sm?*X*?>%u>+VQk_Jtl6&ix(RaF|#m{Nuu&6!}T?t4` zm-dj0Ix@gKW`{>!9_A7cVn%3f-BKeEBTMQmf*v2F3)YLq*jIh z;cP%fuy=}E8N~azVw;hF2Xrw+G zU-pXz+v4U{KJ-h5Dnp5E+1^@E(`{F8SRsi7y+k*~0obOORM5MmSDi=Gk|40Wym?wa zTu{WF=(f4cS~7%!qZvG5;6JiCYq?Sx83^L+m+d-5d6b#bM=Gr8+eJcx0;=w?ZnAj78WQkD*L!s` z2CS98z7!O6^MxhO`FTtW-TvCwP~u6$|Aga*Ms=_zp;otbO`KSS1VcuYsG2ZKZtp#p zUcH_*gN&Xr6;{G9BR21fMFEPHo}+2=1b*D2u%)=t_Nhh?I#-%91Eq>9 zn_e(i+@W@tr-|x6B-aEnA5PVlr?J&8#>-kBQYC*!3a>0K#$)v+=xU^d9`9rP6}qft z$VWEei*23VEKMYF9^l+d3{BKccvflB>#n_2in%RcuQYzjR%nn3l)jaRxtmjJLrHQ4aBy5<=DGM zZ%6sb$@~0sq@0VLXoYLI)^E0MW6v~Yz+A!6*_KDKY)8QSTNxq033p~IDs>>b-%kQY z523Tve_pI;#`aUbRAy4DTZM;`U5+OjnWEI`t41}FqcOwsNR|DEg$F|OHXrZ#eqEI2 z;JAtpyf3t_%Cow)vjAp5nZG2ISFbyqMq>5pZ@bx>q(`d9O4&27eED z7>KMgeYfdfnKH){R=OZJ_&V`iN!rN?4<>xO8;_kbw?yztMtlyXD6VPjg}B|@i?r)9 z$(20a@g<|<#`{*%5ufL=6votA8Uq?rB_Vt`N5c z=23`GXw@Cc#xpGNS33)!EymrcF4N5Zhekxy@k2KasdabyVQzX?apfXc_9ibsOAO=} z$p<0kjxtirof7J#2Kik^cfV0b3)F^Ig8s<@-ajB>oRpsbuQg-NczrbXEu$#;>TBPo zp`$MXRd+WnQXrI3A$QjDvN|p?7!>b|XR-Kas2V#;Cp;v_jI73gmN7CwRaM@yky>%{ z88k|qMbNGddv-D2+kY2_FcDwXzkImxkiHja)L=rfMLl@s-=r^2~; zL=zW-2s5f|D~rb^S-%}XyBo8T6c6Z`bq@dCxGF~*bR!0@xLuN(tsWB`nZ5rAmsqcf zTsN)>0L>Gn*euobDC=9bXksod1g@OVl(!5YOoYqtxfLG{?eDIUgN1_d7h2qI3v%$! zu9}JHICPpSs4)|-L}PKYwG`mjN-eg<5?b`TaPj9`#t1#6_zfCGW-Q|yELUW!=f1*Q zXPdrG0eC}5X*&5@?O_-jT=rx$)jzDkIMD^tl2j{QY`W~F7>tyfTFli)iWN=CJ88?_ff-*HwZVI+V4V+8t)NfdS*ZAu0Ri8N(psKEWYks)zvI>HN6#U zs%~cVrl!Ph9>p*v6V!&m_?{}W?^fuMzDqxMqynASa{KG%QwD8=sVp^v5M*|i6$)h; zql*DSP>!K}+Z~m_%`VF@aw*xP_j>K`;9J(`xKdNumy{~!yd52)1$8n2ef;`LGafJg zc8_6nrpc1Nbz%(=a`FL_tV_{L(ocP|NX2;{l0|a!59wU=kE318RkhF(Wc}y$qADW=Y%RN>;9Ys9T`JBOPRlB& z>=7n9h-1eS?@o1K?{3J+bMYZZ?6QtZt_*}x<9a^wqVb3_Eo5BUAAKL@5Vgfi!`_#ap>##2|K-LCTZ>-M zX|;!2>N=cZjd%AUt*&Xi`C6+RBhT0pXz~FLOSh37_nYjO%5kgYGaHUn9 z-6s^1qZEyC(&h7U>i-CwUqAQSwpY<#hyRxTFUfOr{Th62$!##|8D=Ee+_8hwf~c}m zuej$7pvtF`a3`1cQfQT!B=!6B7ui?bL?U&*oa8%h`Y9SaNc8X|_Un=gg;_U`3w)v; zfUWE0MuBM8&4?}058_A*bz8Xu4S$K^=W=9n}AuDhMiV{b2?7ufQF&Y9B|Li)z|Kv?|BU zdp)%`kTXF>HAmq5KxnnHp?p{Or3)4|s`EP*pKl!t zMjMap68N_PYhD*N)SK`=+4f>fj0-6$2S4>tsz6&b_9$g%$Ndxzo_VfVj#tGzOgrvWWqb;_kG8Z};*9s^r?T+G%d%M`SNJq1qr;#juT` zRvDn*VfRBpaOUx6uJ=rnPE|G=(@42FS!w0|IKEP}h6$uiQE_Gt>Z-Ip6L(lapq;zR z2sZT@5hMkx&xB}Im8dK`Lcb&j34h#<_H$ejd@q({+zIK=3oe9NL_Xk-Cp@q5N}$;A zcH_O(ajgqP3tL%*&g%9jDQn7<*T7;9(DU<%w&=-(N z=mN+j^Zev4vpK^2vp}>8Ta(Rza7xm``ee@7&^_!Pfa8BK7RX-GkI&#I8Vn6ZmFP80 zOaMF?T0(*RP+yK#9G>qG4>mNNZ`wQ`>u=K`%rV;$kp(N-X_lWwhwbO(U?#&D=t$#$XKP0)8=A>jJue88;|Gd zs{`9+QVxZ&;3{*E5-=L!8MD1BHnYD_KJaQciI8!-Eg^Bn!kh2753CG6VhZVd1!jDz zB6$TZflnzMWrm zAiqbRnLk}^e@45G7-g_oFS_0GkBP!#FtkQ9vD5!l;ZHC53~No#^(c2FK)|fS8Wrfj z^SyLu>UpJ%3jKgd*z6>!+kJ~D`Pb9kbjzGpO%1;%2=Rv(h5CPuPiY!kU!OAQP~nOk zIDKB$qC+O$qJ$7ng_slAtkgOIxzr{obM}QuD{oqocb=h*=rsE@ulS?aJ>~j0=2{?h zVaAu$*%v_RqtDO9DVc!#=&;h3(X?EzPza=hd-f-V(nJQIg#Noo31XqxC{_Ah80yf0 zVnvAy{Lyj+AX3-(TZ+jy}Eq;$# zO#TO;Zhf6W`!oS$KS^qybh*a&Bcr=m;}oG*SRSLj(@Sm z4e}7qFJe!bK~S`B7?6F`)pQ|S!-;o733Dog1r2x{vW(JNpa$?&ndStaGR?3KbN1qk z9&-~egh>LI|6-K2!n|RUddETY)Yr$dZK?G^*xmIP2=CdVsd?Tb__vB2|Fmr3GU-*I zqR95Oub#QYG@(amSv3QIEH(kXAXQOpe&}jYAc2(Zf02Ls6tGOf$S4858L{)#XU)aV zA3+7EW11Wf#q-AW_CA#tPI+{pTp@%yD4LT9K>~-8HpC0Lja1HJs6(!+xW@@QX0`#% zD??Jff8|h?BKPu`Tk_Y2P^3XrQiX9tAVg(kS=U6QBp{I}hR^A%wud4G4az1?lpuja zVv7qP^eGLMvTV@d#hi%3*$uiX0f=nTPil-s=r#Fy8^SW5_bjc z1JC+zFuG8~(4-4}8}=rVGg)d-bU($&fA3;w;g7D0Q0P%?Aqn*jDROiy*d{BL2cq)G zJqkl*Y9K>l8yM6cfkLbcVYrRY`tER+4w{j@Ckh)N4sAi&pJ4hdBf>W`2tmZxk$+g6 znBKPMje>?zACfT8dNMko^eGLL3LJr<z)qJm74^I$k zzB#2MUuVGbI3wsWJF#$sfsIvxy*xl$0Opie=PupBybgZ;P?Og>=yfOA84Qqm zPSiTkC_yW?1RRmphhL(G3s0#t^Ua>vCLJXQk~6450-m-Uf?XPV>R)?wCRI(pTrLbL*9)hO{!~E}tOH=OQU} zOLZVp^92*@WB#htC-MmCIm2GNp;z_`CM2Ndzw{eFK637qhxolGLs|f{I@Cb9$*Cu( z+i~Wu7B(mjUP$S^J)=Fr~kHBz`PiUX#VW0AnU zs0PRRq#bYGJp&hXdNYQ?FJ;Gmb{mR7UuBGeHeH&*;O*m%&VNv#kCB)*8$>|6ANK%v zLnKE0mDB&1JjFU8!CBu^w8no2D?X(3(uGn$(RWZguxwtYIn2{79w@xZskhi7)z;7i3)gjtg@z`3?VpP|2Yj8%=B0tPl^K@H6=c@61KL7{Bx(-(Xypyl>yw=F; z^u#Hf53;EL(|#F|sVg&sm;Cfh09o49gH?#p0^+IQ8eE1|LLJ!yU(_AtWrj0z8fn^X zUFksm*&M{-0P#3YYVH8k3Uv}c@><49a`N*5F#BsMDMpg&j=;xDk5RVOioofc?rSI> zexmw`MG1&~ZvDY8-lvQI*JiRV!}PDAO@gh8xF*q8MP3tltKx7IkgNi*io`1ztb!pc zCV)U7PzV$UQ2>DJpb!WY2Ymp5@t_bMR0074fc79QMf=2n_@FIgs`#ryt%|rN(N{%Y z6L_oQa1)TM0j(;RS3MP++9l=d_c9#lTeew zO%r^!kvy5TZg`&Xmiv05%G2_jCsDsMVu?xRDxWvr9esq8R+H}uPpaJ~c@ z20L?@H^$KPnU=Jz{U3mAB3qbqJOX9_YzUO;7l-U` zT!hn=w{B|E(m{smlnKM;v3k}Z#_ehgOIJNUZ7ve@(ZakYR+;Fv#U`3>TQvB)+?U=06W2TF3PkR$ziTVO7nzvU&_jfRua5M8oouD1nmWxV3OLm zwx(CRY&01uC>wvTr= zC1$X(BC`HFKRUljGhDZ6LBZMfs-{ZFlBQwt2=6E-Z2yvtC1CS+#O$xi zY5uisiI~pWNKQPJKiu|!M8bB*W9>)D%(x_wov?8Y2lF$$bkZ~Z_1yf9^9Yhk4ns8P zA6^0JB%FG#3{W~Wb`;<8kf4-U>HYK(@O-#)v=XVq5=y+{{t`BK%Mf$6mxH<13H_3; zpUN+X*9#pOyr`o>%ILg z;9(%^l|diNq@}eykEvx6-&==q8d*}_Hr$%&iJ@Io9aTF~E`t_1E##lwzxYx_YMQx^ zX(9DaSk$(@7%bE_LXv~vVJKP&y`$Gj96zc4ym82xv;f`T5MCw zNCi}``jo4eN=`2dy5QuyGHBb=K{}@Gs;rc*X(Sq{-kHDzT^z)ah+zErFmt$4si9tr zQm|%V3`q>11?QVG8nTxDL!d%ze~pB^MN_&|O(Cqh@j8~?BvA=@PKG%zv%)&{j4QRQ zV=l*v>KAkG7?qcXbBh37t}L6jsjQBfJ}q#LUv*TMT-tO}33=Pu0WEm~SjoojH^tW3 zImNj?W>T!H+xu^OIr|T^x1PEuwFhDdxFF8RqxA${!RDDF;PLbk2yZ6tMcI@1K`vBe zT5@}cWpju>N&gQfq&koAdqpR{oTIG%O>oiqj(%`>^1hDx&34gpp4E*W!xzX-IIbL$ zlPC{+!aXM&*ZY3~CxSksk4_T?@gG!)5;yd5DpJC4lh&Z^x2=`*ZCp^=FUeborai&VoBK(}{C#zBg_ZOth zNdU|!l4Gg`InnxFxLGQ{H*%DOR2`p$&MWijPK5kjDCJcg;?mAn;Ow-oAy<|{P)`10cv_KS;;tmTlk7Y ze~5)m>$Vp&PMB~`G@$6Y8h<0bb{Yzo#DgMMf+J~AG@byq>E!~6>rf2V>J$oq}BkjfcL<(IZrXWGx zC63GtJS4^0Z)(N;T^Q}P-*<*tAc-VMu;kB9R+r#uDcy)ZO( zhf@k5ah19V$4ery2E*Xs4)Ik~-o!Ng{)r?^2pFXJipz~~x1fQF%shw{3`5`Anq52Y z{A9T@c0LG!(Bv^m$zFSX;gmXmbJ}tNyY$@^V(~c?5!;%wwOhD+V$!rV2z6SVjo~^5 zUY~>7uAgDOItI|xoS1YiPt(ZxOkGep7E5Yn?3E)El?+Qq^qGQu?%7y%(#`3ZvP=^` z;7S~vNl%mU#{uR^H9r%Jw}u3>WD;`EXt40+>^&*Q2!s|%+0KehGV9qU z!q0P?{31(tUj2yb0e@bg7j06p+-BM+{#B*WX!yQ+;RtRFyRVoD729yYO+xdsgaADrJO$Oi+DS9w@6S#xT}oH> zw3U<9XA_-k8bulmivcc=rM^x_Z2tSYG-LN_2{@D|&KmUe#<8coXyG;Zv8I zku^w8Key{U@(B8VMOcojTC)N-dTm`YJnlCw{((;PqO@%^jtj}QUC^YYL!j(gb}DXcdQx8?g$r5F zkBdn1xy!GRCh2lB1NGi@Vn=u^75rK$tdO_5+OV%Yk8sh&_1c7NER4YI#{1_MvDX~fH(YwKfwyAo2o?_6pNx))43>BF)md=Gsre5xV=4#ziaOiR zwbu|EBQ2ZMCe1ew4t*M@qgv93k~z1!lFE(cMHb&+aV^V5dq!(1A1*YT-5~UnF5ujSHm1l@E+lWDl+)IF^=Ju;{hs- zaM=~?LLxY(mr}ad2-55Mcf!DT85iP^aOjaJ@FPktxuJMiI@hWK%=Hp*Ka2FI?rPHq zrt^JOC)m~!+lkcy8%au6XhYjkVCUKjh-QBnKejJs2^AM{r@LuDL{l$9m%@wsypW#3 zT~e|8Q;XuF;r_N`7)Y^mJJZ3DJ4LHDJ?S7+0K-IJxcYH-v?)+*^6lc0KbsgxTdO>_ z`wfhTE`OSjBK29O*pXneWy;{+a$^jgp<&>XpNaRwOhCYFN{z^7#vJ8~a>83u_MYqn zOi??CVgjO_$T;857U9okO32)mc4vnI1^BLyF3?XWzVumsMkJypcXtS|M|XNfwpK0W z*l(-T=)mt>n|S>{U%OxT&`VzbHE=&`-H%8KKM1rJ<6)0M?zhr}yMuI?!hez4Whr(q4W=+&SN)vz^DTrksdkqIM1K`4h!1Dbo`RM)6EE_ngD zxo49Jw&>gn-kp+4n}vj*lAi544aHM-TVm^4p9xd1SY)lV3d52O+niTmtz(jsICfIy z)vpriRTsQw2|T<#hLTp#>yIwGmCu&h@q$I}zWYONfPsWYz9!d^*(*xRb}qL#zFktA zYe#%~dnQQ=4b744s7`}w0@Td$HSJH4m8x@uuhD&z_OLA4EO({Qjrk*`Fo9eM4=}8q>c|E%S-5Hsg7{d_JZtIYruUS#b$s~Rj zvU`7Xe$p^!dV=Wi#aF1M4@yziVbmDRNTvoD{zIU$xxkNxh;#t_wu2ElOvzDJ=rT8W z_5$1}`{Yr{+FxTN@uT6&-_=_NFm}@G^sG5BQODJ{b%YE?NT|JAAjcSvR}0PoD^XVU zEXxE&M~GJUF%BkJ0^90XL~soj=}l?{o~b-5_aY8Ey`%;=gq2SVpTCBPD;dNXywe4& zx{9gNN+<1H;!+`uykAO}BgQ#X;tO`9w0{F z5P-sx2M)V*1vBY9-P>K{t;JtpMqe+mw$&R%G~9B?RqQ1^MDlU8WGApNliEZ2H3VeD zZI%l}F&wwH+3apc%Bb*9ekBMq`y+<)EL^71!l$>66_=kk`}&SHW2Z^0j$`2L@cv9C9#uu8t|>A$000Sn@R`m7w!z-Sq-9G2CZK|YCB`HyAbNZBj360e`lB&+@!tPep%a}k`6Ou!k=g3BOFm29vUCU8s znV28C3ooJoZ!%jX@HjhkpC~s^B3B2MzcZx-@5)xgr7Vc1A)}a7O_2jJ!63&YQ9`78 zr1oWEK5(UP;@rvPd3!FtQ=-Z@P)#VVBLdD=_bfsRy-4lb$+=lYx!BQg@0q+r7+r8A9AmGA*sabJ)I-U@h~^^o<|8B52#y*zNdWz) zO6y-QPe|ZkZ5Y`YF0=TdxG7%I*!hHi7?!SyTo#9Qg9+gv@@qZxEP zPHrLcozWAPo4hn;Bd?OEJnT*?TQ*YY>9q7&UFrSXb~;c|vB4dimi*-%)SeF)AMG=S;gP#Qu!NLrAh7;mJPPj`(} zLFC80PBwx#Y!C>&G2L9;>IUyr7~R{2smKZEl!CbK2{vp+;?h)1Uc|cgR}x))oBBa* zK#W7S4xzMvX~_y3+5JEBa3x(D-)-BD@t6 z+iuN^2X5kqWMdg{gSc#6+-T1ef9|)A>_ySR8N?gjbU6$qAVNj zfp!m(58k{Uzz^6j8YHb}N>?(R%rN(IF3%R;mGCod!SMmWjUeK=p}3O4hWb32wc)U* zG4}C)CNyr>!44oZb)?1m@`cJSx)<9hJZK(^iJ-u~3aH87B23-KKyhrS4!#8#0vpwc zMic#fDNz<(Fvlm(uzb4fC>lRay?0Dg2jGPk2A>i)g@y|xfm7NlCZpCTlgLI&_BR@_ zU;4Q*mSP3>^)wDnoLzpoAUZM=6l(5i&TZD>H-?o7@DN-iDC2}22Pp%%+!Dlc*e_`E z3V(Zei1RJWD~8pG7^)s!fvUo>ZZT~$$J+i^DrTB7kmMI;&3sT!Gg3nl-QJ-rO>M%X zA=*zVrDz_Dhrcsy{`fbX)u>Q7VDQgEy=39Vd1>Q~;Q8;f1BQE5>k*hWVmHlE69lG! zP1Sq=wx#cdNy}u#3**Fz!ua>qpT;_EO5r_Tihds zy5=hd%u#TQC=cZY5#?t7R=&NS7zD|6iuTP43i~@s>U2=L(&+<*@2=E0hc|zvh}JC9 zH8eJTLbtl^aKVt}x8+?{DDLnEB4p;ui^k_j!Q(Ku2sy+T#z>Dr6!GIKLR)lQf7?th z$%(?Co$fH}sol`pMeNgnB@31~A<_2B8)>7_aY~pGc78bCWj%bs9Rl41IB1kk3Y?A2 zEI*SBR^suuKv%dTuA}*f;e8zfh1Dq1_01{-UYLi{4=+R&0xtzDphZAZ5nzwX){9e^ zb}q+wgrVq+Czh~NN22C&KOXv7cUE0}jo5EG>0f#rEWQe0vz(cg)sT6SZ;QD|Ov+x3 z8_dCNRfx;hP3T5g>ho)=uf^T;<}Re~|0yLs8#r(@H z)Qq#h;KP?)&?_&Gy-xPT$FhyEPd|_ma|5khBW! z=e>)g05^h?`VO2r7zhR$F{d%JFeGoRI6+9MeUahn^=)ZJj0Q+*kwyDsY>8H|i{ z8_U{zX2-gol@P%~<`EPlnLR4boIO_(3UnDE2M=}i;82viu-<#sy@W@;K>S1-mx9P3 zVdLS%W!{kVBf3wlVhbyG&_QdA-Uu63H)OGePMd9lbP{;o*?~s$5?>{MPGWq!c`w(P zk5P0WKFW-BI)gB$Tt#54_BlY_a}{w&jl1|2h}{=j6h_JR7k8-#XK!qydA?10v?BbV zZ#E6VNRAKEC~#q_s2j{@*(b}NJ&8x;?I7BeJbqW@$fWcY3z)wCi|&=rCg-kV@oi_D z8^OB_xZ#}TVg~b{csx-6%Q1omhGuL>Xty8s^ys^pRPU~$2yZ^sv#kgj=9jOe{Z+7H_7`@N}=n%o4f!ZaJ;_{6f&DwL!LLG04vGg6b${Rs?+PsINTCp8D zLV@LTAf89Xo*X;v?qa}TJ3`)gp9Ox__XVnT?+xboltPHuoqFzgz-)mSgdpqC!qGgh z58qEUFsBbh9hJXW#|&IfpjbU`#BV;?rrHSZw2aV$OL}S?BHkUvb@>`AT^Xcr2AUqIEv!WdD!hW1@`g|#oGAfRtAlSfvu z<;YhTSOLN^MJrt;vb#O?AGuEzJygD$Jg%exH&fX#M(2KWqBMuQ!VfnKDGnoEwohU< zzj%BUkEd?CuSX->y`c#iY$6bmit?!&pKb zXj*ALx-(f5!05Y1KURhBA7WOeJ!tY?2JHrhA?DVleHijv&QF|%J;wiu^ISMm$Xe#W z`qrxkg{~7BcgKp4=j>yz(|-)~4|PU{8g1>xmA$k?Ey!oVww5K`p4QiGDw%x45aF>w zmG0mix7*^7nkS)Ux$5T1)#-Djbjnx@s?Fb4`%UMl^I1?3_$-lIJofy$>-in6k+&td z!K3KfEJDG%*kuabW4uI=>*z60>MhPq%<%H%5mycWvZt0g(ZEw=Kk`hLLHvtTc~N z3LZ0h0~t<0dF+dFHE>|?q~H~gX5g*%zl>XaOj&MR_HSrV)dM zwJgbI8TkbZt=EWzVwpB&a<+fbb@h1S?ARKd{5OE-G~R&XJQj~A@K|AUC9U7;G#T=J zI7^zXQIw|vyedAs@xy&Px*N}#+33mgS*+55w3X? z7j$V~sWJn3xmYx5_dayW-nU!O4SXWo*yn*iEA*SIkrc#7@=D({X2`%@$XW~J^#a2I zD!PYAX<8h>jI`tC#BJx<3OIH0&%=3k9Q6-TNehHeLkRv0H4NB@A zR0M+e+^lr2=u9v5R2jN)F?VkE|EndrOycg$nt&~FTMH6sQ){d#ZI{I=vK|a>sBb$H zhKv#LYN`S|*TQfSeaABdK^$uu4>v62ilj3 zDYVXfV!>?P5jgIcod_1LOo@jOLQ<2~Szo^iKwj-+E}k+=yIXL3qUH{B>zcEkJ1pBag53`^D4RYwZZh` zHHgW+1K5o1%qbC%88SR>_VI zB-TV#8A~AW#WXjLVCTZUpa_l9WF+?aFOzs}AU1rj64-~RYLJEz4G`O~W+qU#=|)@m+yj zfJ|~A54-9nK6P_F_aCg?S;KiTQ(pEskM+fM8jIRL>@Fh~GaULkmJ#tWCKlfN3xwtd zXH{t&&X}S)jo^m0gXjz|39M~6)Jhmr2eYWxmhtrB7(I%ogxHPHlaEhhv++=mL!6(s zWl-CSaq7f72Y;J5H&!ru)DFVd+Lv4$GMTDP@m~*W_dcc_6{j&!$?RpkvY?>m)erOm zY4Ds5FO<>DElRwHI@nV%u3q|dru?k2Vy6QSb_}V({2QC8I^2h7_OqrAvs)EG+;bP{>ct={En&3-w|Yoq0HM!b!`Yurm(HU(OPpA2kYVV zX5PJr3o`&YgI7>%4gLZlg}{UP9UMWy_Fx!HbWEp21M^Yyxw@(UH(ZzV4UE`7RY&TY zeC#$mf#aMIUZOsgANMvi&2!zh)q#U7N}D;On2zE@peW~Ogboy3!Ut{&ln{{Da?|kW za)mE-Ak47dd5JQ619b(3g49@EKIH*MVQWYW8(`a@Z+fW!KLJ>AbaBwMlGtU3iV+8f1pg58c{s=r!9{Y8UeRMY8DXiR*U(J=;8 zbDoqvv9UA#J8BC$O6bf=esxH`mIUC%KejLG&a>Z7k5YRtKg|RY1W&#DdS(j0TM47i z!!0kTzMm@1Kig4V*7ct9%1Zr>)pA)btK!ui(@U@)MW&2L#H-%f>HU%WT7hI;JfMIXqx&G}+q{?h+ z+4xm@&Mj^<=Ni)N`TAszJB3-zToLQfYC3Rw9u;Z|x`K^@(2|4+S39 znx*%V9zffwQ^r&c&kw?~W$|o(Amk`x|GV6m$@0BCvZv*E{7V|u6+bSIVyT#>8!wee|F8?r-ipnf3ld&1p^ZdhWfk@Y)*^pm^i_r|7A# zpjXQLDA(SeFrBjtSb%FWo3q0$Gzcv0(r>l?o=d*igYA~@mOPDJ?bm}MT@wdp#R>`@ zxlmww-qYQ9v=HQQpC64DPUCqC59`^g71DBWJ&?&J|5y0yvL@`DI;ECmGpuNCx4PN; z82*4%nHZU8x_>KxX;5q=G4eQ@FmQVAZ`%+YZ&0WWuD?WorBg6>+Y_v3#)c)uV*Pr~19t zwxx={-&!+JEMcj$J#2x9dKn5Ax z#0?W3Bs2=eocHVYGwTom(w{OHZ2u(xHs_ocxU65+j}>~i+~oEWhJyy%GJM=8%rxtEykJfewTBS6JiBA6kJ_eu_!rPx!nnH+Pv)@f)vw6ct~(4HY?1 zl~Qge)Z!+Egts??bK5W7?;fb=NJ>bzT3%r+_X;kZTlJ6i4RfbRS8r+SpLyIISq;?` z5S-_sep#g?>;tP4V&GwPfxV`BS5j)R1y=GjUEVKXFI&o3zlxqTJW5RAP!d1UJo$}# zb#)&%cq(w^U#O2S1oL^D#H(fV6(M=D(bcwQ_eo$BE^vsO&=jH-JtX|EII9OO7o-q% z=J7cHQ%BG{)?ZT!uS$a+Cr0w?jQSNdQwWjfYBMJLdP}9Zfed z%5RF*={Z%dWZt)z{JCy$-p#R5`THEeF}KvhY<6e{+AUC@F4+UQ3OmAU#I=D{=W-<6 zE@}2C&C0rFUu1tihXgNMrEo4U@CxW%`|mvt2kQl^FqZ?CQrBY+tt(A$0iNs=R(JjXBH4uL))JUpodp&4LBPyD&yCWg6nIA>XhOI@>e)6lm#@-E#)vM z-II=sa7=HateE^{v$(g8TJWcPm=>r}Vl_U|T~-Ie8-u*Ew}vfo_q>@)(XB9{vT&Y- z3gGs7c=D;*IP1u2m`TBYee}FxnvF1S>BTs}U#&;lp*upLG{^$&u>Hi$EqUDQ4FLTF z4AH%soFV!8m3M5 zGmVkjc~cMO+-B@Y-)qeP2wRVw^<#mZ)isIH|M(RvS+NeTW0rp7Oz<64gcC^PbipUFjuv-UxJ(sZ_2)u=y1y)c7R%)nHhG*T>3RZxuyur+CB0Ef#yX1gmXJ`@ zE0`)nzs(ji8t4}bx0qIV;-r?Tbn zqO*7{VQQdd#ZdHWR_yZV>{T?ikN337@*M0soO4f=TBe=~oJ|%vTn^f4OZ3rn{%=83 zeA{eQ-`-*rz3T7E@7X;%n`0qjExd{fn?1RWU4^{Ab7Cm!+O>5>Df=&C>G)-on0I(u z?OCP$;$Z~?x|~yH$LB>tP&u)w5W4pVc*`3<^ylPP`f zJRMTd7fvGkhd)Q*fK&PUREa+x(x)ZllwKto_ zuZ7{jdr9@(-?`qipdLo+uBOhd?W#RaLit)&#ns`If%)Yvi|_p2pN?!# zjVpI#h}jI#nL}gDO21whL8?~b#U=Vhl%29{QqzQiKT!B;iUlD`TQ{P`!^g`sN);xv zo~Ll$E@vS!yB({nrI#sd6fRLndU^!B$2^HLom1h;HSph0iq}a_j#~A2jkWDZg-%3S zEFKgM_SjUa^hKVqUKRHxbHT~QI)#plkXK!EpD8m)S5DHor(Pomr66ysAY@ zyFvxShXf@OUeoq_xuUJ;Do73QN}pZGx&qtS=t=UiijVeiZeXM+gA4;dr0nehC(}Gs zv=}cWg1Rqp)G^v?S>M)i)cLlzz}Bm=)>jvj>+0<{B=S(&=JE}Ejw~?=+eM3)g$KJP z`k|M@tWS1SST<|Locx0{*kdcsC*`+qV9Ux}&uZUJ2{fd@I+_ychmtB9dU`q1kguUt zNsARFq0l?(!|D9@?g)EbM91te7%=U8ei1a(G%0Nn3fCXDf>&*@T2wI^eiQ}=hJJ>F zVg$}r?#ao#;!N?~>c3qrq-XGgpzP#BshaAU6BbpD3-Z{9xdj*)T+@Jg5Cv(KcyPNu zOM+L227i(-ARY!D=qV|cML5!0m9cOmP^SK8@4LLf=9N>0v8`o8;-z8^u)M;DrFFZD zF;RRBwnJzK3LD~EJ49062V&T-8-gr13&-md*J=C`9^Y76y zTA*Vi8`M)eFr(K`Eplf#7(P=yJF7LVwEd-jQ!4 z?6K-b)TJN91z0_+ECN=LDt-jbMg?1w$xF6AMTk3Vh3x87u}+pOKVVQ_)WCWh#ht)* zG~i>mhX$)(n+^wq7NV06j2Dg1P#%20HAPdIy zErNPB+#|2j0^eqH>g?S8NNxUa)m<7pIH9wPR}T}f5*T_jGPX&Au8fj&VD%<_A(yPu zMg2xX7ys|_)G_q2Xa1Seom&{9#d_Dg2I6{M|9G|(P$(`c?xM7)XNK{d_xnG5^71M&g`zSsSe& z=!2>i#2t{YAnt{M3kic(A-f_8&@liY6cnLmLePica_{B2jc=TT!gy!9Ci{S<(uoB3 z1onueUrJI?#;Br|LfEYI3nKH^-9-%4NEn)a;wV3kWOFJnU)m}sjPZi+Lrs40C@ig- z^5H+$lC)Cm`yoDm>!(eVRUp2TS;Y^_Olc5K=|*1t>sN&1a>q(ssjAnBDvN?_wM>ip8ZL=@CvGfMea7<9;MK{T&ha;Bz1d4k>SBH=mVc=Uh1 z?T%Wc736Q)loif1zz>stRuu|{wxEMk zBuMyI8|;=rUQ3k}K1<9f3pf6-n14(<@4@JhNP&8hP>6V5CF?6P8Sw+#=#A(of4sn; zriH2k3Rtlf)D(Vo4RQdmZ^~Vx=@l%}^9E9H?xI%WBnxUPxJsp_GA3vH0V(Zi9Vpuq zKlucpg`}C{654655q29Vk#FsZD}>T9vTOVTM@cGpgilIn_x-^j%#@UDn*RWgdbE=~ zLY?%bt`TN`)e*nzXePKuiCkPuKK|d`|iZ3=8-0L!L$8%V}dkpd9HlE1~7@}?(K8sc&XA-5hUDLmeM#C z&r^#8F~klj-J|1qEG6(NcS+bUC?Zk&1Tor3%X0dj0Br;1XQ%T+`AeGgu<>>93?{UE zBlXYZXp0zwM&A6gHH=rcpfH>HBQ2?oal8A0JgVvhEeXo)WZ%;X!^_@+rU*?^x#$Y| zVKTz!pKIxaulDKazutr8bgtNY_5R zUwaM}YRk(1>IUQ(4G|(uT$lF2ufo)^WT#VsH~x@!lTKeO|42rtr_U;%dJwzU`j_Ui9le&WbpxdeI7Ofue6sQ(qkp@y*uKb3~v zPqx3X@7+j}w`^ptzW)#{f0|W=LioA4DTNQ(xuz8g(Ue4vnHON>d|>j+DOVQ3W4)OZ zq|Y$OC#4Kbt5<38M(WA${C*FMLN|sX|Kk1x6K-N3;yE#1nLgwRf+qWrCFq;(K$jz< z7x!CN|Gxngv`uKGyE?}#QagHBI~Mw2qbx4#KL3XB_-_vs++)dS?W@VT0(n_L<(rg> z%-Y5rmrlekhMF`PZO(yR9=q8S{57#%Ed7{HSm#}2I}Kr z2ubU7rc_z(COi5)i4swn@HJaoN<6|T^~Wi+UwZJXWgn!AHK$A}FK(^%Ym@BtIYS(a zq{_+$mU+@dd>n*#%f4boq}#gf0{3f6>EBaCLVHBJQI$uib157x;z>e>-xUR33KsB1 zE@mX|}3sb=BF4r|~6zxe!u^TAWsLf9=MNhrn?~+jGlN4pmps&AU4MjGq zDyfE_8Oy<{VW&q@^=7cs0;#`4ElowJ&E=OR%-e{CsZqJivwIC7k|W}J{`69|5z~GX z7MxPAX(49CfiSB6a)5X;PQ{6JUrej@sm3>XU{XYnZmSn%7pi(JCbmBz$fls7Scl&pN|@!_B9hfo>}IExH?8m-WBGp>^yWwW%!f1xsU0&-1cOVl(e_ z?CA(?J6xplT}i_n`}fl;oR2CzJSA2u%t2fpw8}~Q(=2!!6810`S}pi=9fMUpX{{pP z)9UPrQtyRNMQ5a$ zORe#Yv2U3pnM@ImoaQ8|qw8kA zMWsDdLB@xmnTcsxf6-}TdQU)G>7}Yq{8me}wzzK;o|-p=BTw<)rD8y4;xa_awG87O zavz%K^16g&%(AwcYq&~?>oBf-R#Vd%wEVg^Y2CDMyXj1AZ7^e87^JnHjn6Ys5Gv5tP)V9ky>D}1r7J8;5&#jHls_Ef8Lt>G3C zuPkG)Madr%r>tS3_Euz`~sKs>H)OyW;NrI?T zbL$^@3Ct_8J?nab^s;}N-%k9~_hBOuPxNd8eZ{WMW1)1F1R%Np9+QLXZqdlJv)@Ii zQ7V(Qxe}+)C74;`V`|=3`GWnbC0)$3g&l`~JZFl;OO+aA9fPXTG&&8wPa1+nwpG?6 z{Ojrgw3L})UCaz7D6~Potmjkz8Os@fYsAjk`@199^xOF+p053go8a{-pG%MY)7-Ov zv6WJ?`)miLYIEA)oEdrp>f0jnHzx42@E(^EG~4(ya5lu>1%&rTFQyHRtt#AgM*PJ`zM8oepy&!!r*%s>dK_ixcM#Z~Q@wAW;RFZJ;-~3dF)PFJ zEhd-LEFiCrJP#xMSZFtj&&)dsB8L4 zqir;6I(^n{%*xUv*JCItSWDWs9 zDAM__EsqOCIu1Qk2iUt*Fwz-10AYjhoqS!>v$^ ztg+|I@^bq+&&qS)#z%h~l##5P zT>6}nM{FFX4tChRj|K=lTR!rl%To1aYw0XVUBt~|iuNdrq z5aj!>HB8FY@&w0hE-Z`_A>}Q^k5K(4Ot4wGB(U8sTanU6wX9p|YV;qf?HUXJJu?eh zg!H1E#F?Ud)(Du|go<+dnxy4`x|o^If{!gfq}Il^Tek%7c6k!OS2~7Jvpv+C`=6DR zBH(A!=DNF~mF*dglQgt?QTnM*^N|%OA(xFZvE_(DN79xx91OvvTQ_9-Spwt6tmaIq zJaCc8babxIEn%=?)~Cnu@dh~bG#h)et+QgPy}pjdOswQIY*I6EY_5@ z4ln5~I&A2KO30@YQBQ5;>sZz+BEmZMLuSxKC5$x9mGvkMz|E%_Zl*Ve(b#6( z2>z8Jn^vWa5xohdpe+MgbSWbv`($9cdjFCLU&^65a_E4`uJJD|*EDZ|0aY z5oR)k`k0#$6>*(DYiH(00KXd~tJAym4R_qeI%d`u&B7TTc{X13%;CIGrNes$V6Ns= zn)$@#v5&AP#`^tcRwMR?QYbb7_xL?irX-WzUk5X?{@AhMTIsuvYs{pNIZPn%(%{?B zkMWU`1Z33L7rujR%z);UWk=A<_)AyZ1s+v}tWcZd1nyXJ;QPB4aQ>WGW*HSlUF!n0 zfh2_Y(5Tg@v)fUDq=x%g_;96Az4s|Wk1s+P(aa4tIYH%B9l^P=F|scfHIf7S{VNK1 zd?qxW~RBl(QWX*DL7v+s+&Xj?bmlfK)*}?H_ zjQx)PVhi_Z)v{qx_J)H~OE=({kA;S&_!rf&6VN5+5~sP0Etk6to$arlW0lag?tiI` zo6N4r4KdUc=8t_Db<~*HEU4MLZDY{Zzxf#TdP1>zLqnfk;6DxJv3hy%y^Y$}%kzD4 zAsskFZ|<^@>I>@{2-zMI!di|)YhfY2zNClO$oIPOotz>u&6x>WO3KO9k*wDDc#H=j z2_!7*DT?B86r)Ogn?V-o6q}zCMt+hWp0RKf&Ylm+2_HHfdU`d#ADYGb#=Llv$oHDG zIRP@WUH(=-lhgZ{*x2NLZBa0eBHFBAZQJnDfZvUN=x&hXq@2%4{3AAbVX2XuI`J44 zY-&SWI?%}HVlOJio>;)&kk%2+jE}z~`Xll>Vs)FLbI#7c7}OFEh;Rv4oMvciZQ>wu zCS9vqE0V%d{6|MH`^iEG-LI6_wfN@5Zm?mh6iPu+5l- zXACwB*{MKd`lCOh(bq!!LF+QIo)uZfY`fWn`x+lD3vL|B#rt+TT9)msI<)*s�?f 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

    mMv>KjS0!w{&fD9p8>=^%^%%ahLMC2jh7og%~ty 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

    pK3D$I6mDj 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�OVb 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%0D2jD=H_aoqElUFtdL>t@H1 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

    _JCk;X@#L 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

    aMr&;06zC^{N5Y)Q9Vw<=Pob(M!S}aktMZ1$N^} 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

    0!>8MT4!rPi%H z;SLYe>m!Wk@Y;?E3`Ap03CDGuLh1#{tq;qB&V5L91)3nmG$G0U3<_G%r;&(2x4B_bE%T7{{HP}IwpA!xX7@1tki6#5e1YlPE%_XL!omU@(d+3aDOIO;c^aPGhcel&d_gm{?+Y7uR$ATgzO0Z-Ay%dWUUr%>E-aUV3%TqG0=ThRuJ-(*K+LI~URtIH4$o zr?mOyGPh!i>5b{POu+q4>RDRH-ClV&O&GiY_s9IHP-SPZpkxEJdk_!f?$7uuz zjE-o)?Ek9sU8};BD%Y(y^&R##hZL8Ap6u#Ls;;Y=^WQ#ZRbo%aX$sAnxBq$4=NO8{H5iOhoV-HFbyzKpJ5#$S5TE9Db`L8hL?> z{JQLk(S5ju5YsPei->UN21kGCT~C@=Z_B~(ZSdgm-&Z)8z1W4N(J|f*neENRfnD3P zW0Xb+u8>#1H~{fYJp7V$Qj2HTN+E^z4}nlco|z58+O~3&RXLI0CP+U_9?1@W{*!5y z{L()3cU|}OVP=L7?3SC)ctNE#>>EhM?%EkTu6z7hF=t?+(F~Lw9hdENv_dzj(Vr8~ zo^SI)5dOk^v2U{nk>gbY-eE;#zRzdP2j=xal^oDfxJ-#U2B@Fbq|Hz7PW4j)ZV?fNTbXJBq<16CcJ@G(F= zx4pdk42XuENu%(<22)yL zGM#khW$Y}KHf<Z@gY+qE%p%WzOULju zvQd6&^PQ)~c|kmFJlwsXO|xmnJcT}dRe_xDTkdIUeb@pI82jCg zFyt;&dSsyXrX&Nh*ZWHgDosngkc>4`K2+aGH3iR$2dl}psBEs-sGIy=tVQ%i3yq;X zC~}-)7c>!B+8-&bQ%P28$A&zv7ow)*$P+Vql*?E{E<<)3H$sbmm>DuyCI13$&e;o- zmo_i{e0yQ=FW}*h0W;x`Z+j_c!=ql+a5`DZHSJt8V{R<+)N6%@KGZT&%`Y>Fi%k)3 z$d!~v4pvXDJ~B59+wpFh1V}E@;*X_#?vH zM@P~)vK1Mu;h) zT{JLA_iKZVb?F=lKDh}^W088p0H6&z7$o(HT~HLKmm8uYf-6V zH>4g13!X5EO#mE2H~4yoB4DIJO5g(}U8+F_3~C5)z&`@Rg+`D!p74WZ_Q4|&Gu$3f z2DhoSzil~~?Ou)@^fq(hJC($)Snz|b19j)5Dcss{N()nWe5mhofLUHP-B{eIEhd=j zQAcf=YMdlhSN-?tpSX~wq{z>AH^?ZO>IMEhPZ)^gK*Tl_7JM&dLj-e4*$#(tu zBD>%E=gUXCeKLpD_&RdfSENUvB0`uu`$qK(`;b;dv7K}Ss9pNB$%~?J>So;i(rI>- z$EA2r+CAZ_q`iReCG>;)8~8{{@aMhjjsEGgp2sddJ3+(;O^jU5iDJWg7mlTJ05puH z0{me!)EoTUIESvyE^MlQ#k<6N@JT%1LnVsyOB^yzI@-`t^tx#`y7KNqW1QIxAY1$W z%c2hC(e(4n^l8Rbo494uPGm>X1huyZe3w{ET%fA>5poMd*i3hKa$`N#K>oL#*R|-@ zqsYcp0N>AfP^AsU_rG~(+WGNExB0<0zDX6&b~~1q%WC6hw>#M5`@V$zJ;L|Z0}w3LO^ zURnVGQsW4R0;G!;xsiv#oDjDDBHAXL4^#IB(fR9m0+bLiB>LptuPl3;HVAic>5NLK z7}0E0OU*Oy=oxy}T4DR2uZmnx>kRtN&g!b(@5WMIO^2$)+W4Dgvu;_;ZI$jZT5)a5 z`2IO@FY9xw`u#GnnHz!Ul08~?NXe0%G2hfZJgX@kM z`RnvH&`mcZCp|^Eh#1~D?-F(Q+Bd)w(MB{`1qjb6xO40^Fnw5d5<)e53+#%bOdqOd zmuaD^OkANrwYk7%ZRviRC$@(_G-f(dwhXvoMCK6GZq~v4`SJaJqd8mGa+VtO@m92a zQjx4}5*O!Lf~e*DO8b%rIZOAXohiYq8i)*N7t_t>N3r6P649@1{=M(S7XCFtasQ@< z)E6@6?)v5@(LLt$+To;To9oBmKK6{$F^QVTkg4->i15kL$@wLrGvdkHM3&&N@2v0n z6A3zLCcMBL`n~6O6$i6t{P^ZQMEAd#uCo#M<=_`*&GdZqH_e>k0@Y{6 z9+QR+wID4i8xeWxwTenL{|bSNI_!oJBM}Doy~r@t!#v!2r0OB%e)&sm+KP&79WBks zJ-SAk3Y9ada~#X+%GKA@e<*c%2?piGLf- zgh-$J_uGJUm%H%wYj~9xCgr+5`HzLNWy!4S9)fj6WrNq{X$F~_Wm=-1IK@9Z+4`X) z%*RWI*sOaXxuq2;CjI|mqQq{m?ep5uAf$(NvBRuhQqjzHukKvQ;KuF2<~6ZmV8Eyv z$|sZ>+8S3O^SoepD9^6JW@7iJx=fg~^CuOGdWLsId*8ymM*1FHR!_`ohu4k^_oN3U zazSQ`E^Ek7<89XF9!5)^lZ>Yx;d_fTg3v$}*8Q|wMPccf(Mc8kS(G&yM5nOmMrFiO z-_#0HbJH;k(+jI{MlV)jx{b*j$Fyft?sPo9*5({a*6eJ*NnnI{o8}&4yqq`}%pQL* zGpefFhr&rA<2%S3B@5Bd;hv`JoIrA#d86gLwO^D#U$^n})eGDu9{*SQpA_VdT$t;! z_)6P6Pi6}U2~>LFj>vI)kfkEwNdYF=ot&5{IC~p)KzbUPV_8u)AH77ZNmd?6xDG-U z&CZvRadEPMX&I?6>ZcYeDjb$by4(9X>go~)Urz+>0yT5+l158w_wry#7$p~F^nXYu zxpZ{-c*aCMX>6mhz9Ngz$WvZO{TrncN6uI2VDR8rz9zl;0>z|vmYr#__`ikpnbs$K z3;=1H(W6szzh9`i)ay-7V}{i!FFV5)A!$3QL`Udn-8TJx@|qGbKVx-E&HIG}**r#> zE3sQ0x&}_-M7#FcS=~^FPZCGH%~L&_c+0RIDYF-HACE;MdA8pz4aA7s&b0bZBu!Iu zG;4q@SWpF<2IqwUOF*>0S=vKIgZ}OwVLqy^uL;%up1DQje9l7Ib{le^ zmx@X`2pcwT#-{ro<0CbW`d=P6Nc%oT{NTB+zsP>(P#Cn~-V1SAi}(Zk}=Y)HV}`+5B)@XEYk zgF?hw7F9g?klE4z$Jv-`>*D-3w{|-d z#CiSdGwgOHc=mj-MSrXmW1ap>X7z0ZiVT8XaZ6DF$CV&t^DvcY0S zAMX46diK*%ht?!x(Y~g=mY8#-^3IHv$oRLdG%Am;4q7wsiin9Gk5||K82qjxYs1$o z9h`+L5*xL^iyANSO&6I^Vqd&shA0upt{!^htRNJfJ+%jDE?$+6PBl~6vi_KHp0G4^Ox zJ(ar1Iv1E5R6^%5V0`SES-%T(L1Hs51>1KUR>FMyv*Pr-Sai;fQXhFdRW&)LEp->^ z%=CgDG2om<3?!ALRK5@q%TU=659TuZ-b&ob!D?R>Vz2Uz_P9nqjQ9d4@(l|6K-JEtg$vl~_niN?l)cvw zBp^R$bCij!^CCYSTi#E7hru34nL--zv!!PTLi$po1+7o&X$+1h&m8=lwc3hWItZ?a z_i9@#j1_{#mvx&BUPDWZQ6)WhDk26)mnkM4W*ce z?9k6V2^IYJIR3CDFOT@sxT1ZhojzZIbzFgop`nN0V^!dr^0LEVK8An2Ay#BnC!07x4KksIGp5Dmfdt26%FdvwbqG80jBJoTjgaQ5N54Xs1w4Vp;OrTLpwCAJpFY{a2Y|{Iqj$-0%qYoqzKFQW! z1|I)@%c7gu@%76c_h5DG@osHEHL+(r3g}l1wG{`mFENH?`j!+4XH%xCtE@6<)7lLwPnCO1M8RkLH0gPFk6tubCy3R!V4{CR zj#<<&P0tV{MbCh-hLh~Y2S{h*TpyCSu8MWPRmXhEBP! z9nYRRdft+IS0`s@h;=-XNq1$iKIg!(Hu+3c)S75SXb{Jw=95J)Y3fA;d)YMv9iW7~ znhymrrqWG^?}*WoAJr-8x%;dDS>K8m$ko&Cr0BWddT08<&T@x}nzw)5K@L-gr>zxn z3{>TLud{WBumdV1jSb*Cl$2gpQ0fiBzX^+6<<(|jar!UA1_vqn3c5LOl?7kF}I6ZI|%SGcCGB2__OaqDC{mZN*r^u0Ju zO$(Gd90)pw%}Yi$D8neqEq0Ul(HPEBJ(`=&!b4&`>J#FgT|V87EVCC|r|00s`jw@k ze|srhVS6nihu5&Md4*Q4{DiYG`x5hI->D>o0c5#<{h$AOckr%E@z=MXzi(Q*7hg}@ z$;hT;9CxZQkKKtY&kOB~PKVH>64%0$~6JN@OuKwP+{6sVCwQAwcdS6SUDo+d+dXng|`YAV_ z#&1+}HeW8Z$;3xMqR~=N{w5UPxO+(x))YI*Lr}|(%ysf=VuUNxU1Oz8z#2_QNw9RF z`&u9Pnhtg4S95PTxxjJZGX*6lC$`>Psd$Yx>|hJwELcN%`&1 zg!TUnEei>Nm%9o6b%2QlltNbqR6`1Q9Yr0t0}^nAG4{Ku{Ba(KrPJHSW9j%6s$Aj#imvm3zI`_FY|Xb=OyJ zp=qrr!?(bnzkGf)W{2tj?Y(cRZOh53ygJ9`xdj@)1geL$er_!Fg2`Q4q#scnHpOdy z0fq%G7f?J6N0p(uk$BZ|TA-AmPN`j* z7Py22Eu)kQ5P>2nxcHy)EtPa+(bbJ;Ea|+*CrutgeA1mg%Orl+W1p9$nO^_Rz{Q?x z`fK5VVf8^aJDdJj-u|aF0ovug?O%Kv!GhY?vqgpZG%*dHm>Uv?b#g0M3UQ@0*Cw5)NNqsc-C z!_EF~N}GysE`(ZbT9lBoLIveR0s3_vD5W~{gh)VSiD;1nZn%FhF%l7C|9rwLUKPA~ zZy_)H^6UGi&OX{8UmwEB3@BH-%Dd#KN%X-M#27td{TnieUwZ!AiBGh5A-==}B(0)I0eY~UJFiJRYar)hjnlj^6urMH~wuzT-)XR=*VBMTYHhKX8$b zZ_*EZF?~DY8cT`ylr04W*e$UP75Ai%Xe-vLku(CtW|ll0#&t-?WFpeeSIu#CEod(E z&w?pUvT5OKB)qp&ldf?j$1=)3jD%&CZ@v%L0;LpUqMky7 z6v}sJK>s}921cm=56v7nqE-ZwSGrC#k+5y&Q9-7LrIBU(1ut9e367Mx$HnHo#(u<2 zcIo{WJg1ML0LA~o{t#>8)XKcf*?79%^nv8z%;|v2x*0 z-$c(lLL_!hZBCmoXjY})W!LRtqSQ+z6fIg|@-^DfcPG<_6dPLPBd=&~rSUpz`uxiW z@F0BeW1?HYy$msEAe~np+=79kq>gh-hsWLSOS`?7@*%x^el8urg}>kKQ8^_J78kDb zb7?g|jndS>XzBT0;E^}QrM?>RtaLfi;b=V3eIfJxD;18-pKHhWi=6MARvj167*Gjk z>2ym6<8)~~4TWz7iz{=1AyXF3)TY8)@*faXN4uA~gvhmLX~y#8hGq%p^Yc1*GifX8 zUJ^F5ebYxr46GDOk*)ZFX>H_!-cr$K6fH@w>Qu@v z!xCS$i*p5E1u>ZZLe1FIyGd3jBJWv=#WS`9W#X z&*uYLQcGoHF42x2FI69fJ&E=6I2~$vACIWG-OM1t#`MoR&1_2-R_Pgtj;vhs! z3izVYymw3571ip&;)Rv|Ba3CcSf02i>f2#2s*zAuc6$VkxwRrJX7rJ+I*$pNr|sw!LJ zs^P3N$kM9p9!#%Ac0znHbkS`ApMx~kV31yx0-FeRj5H3cVLWi`kGw$WgOqgC< zP8U|^wy4|p@=Q6a?R`k-JNR$a&b8IeZa;P0xsF|KQ7ReXklVgAh?47AxH7KNniLUR zL^kexL*W`Qd9)Cl`9Anot=KCFHm;Q$1g*?+U{@|x^+=bG>VQ;GL1wU&OI$&SL1^GO zIZ{1X8i7_7DzRjTgCc`QrVR>mQsDEValB#$?zSW3m>_mY5JZ)D-6PgQ={EHd$WY7* zI3T?*DFNJ!Qz#E#Z4l>79AKixhf&^wNYBb(1PLOcyqC|78(~!KhG|VA#fU|P)zxBi z@A&?(8MI;``-AldMwYcKA4drEFh9(Wgb;MGVRlK+39&VZc7Z7(iWSawGtUnb%6FJ{1jTA}o^qYH zfcTNv%;udGetzTL?xf{>&nd=l@UNPFza;RUxus`rS-(~|l?<2Fc7#tIHcAD&{SU;K zf~Q)V*#;Zdn!?K4g!zPQhVv_$rZ43*d&VkNlHbn52$d<_~Qsvh1fY#R3fqzD+~mS3WQbZ zRih0Xw?(WTss~&Z43ozET{d!%hlxVU1cWFsY7yJY7b@4@>ygdA_nH0q^(w!=2;WM* z%>NiE6EP{W!O1Did&G3R(13JQ!d|`FZP7B!t(MYV3Bv9yP~0^;pZlds6ud2Se?JjpjKgIUc%VUr|#pbz@rH5w>k0)9lG zwXsjTEn6{maBSyI-ae>Nmc3QUX@S`m@dePr(IE#2FhlIRdm!iGf=b{W1#FWL2(#jB zeI*M-!i($RQjEhW&XP<*cpG3$C9t6Z`T9bh*s2Y%&>!I5;YP@{uC+xu6%A}MA2x~; zA;IBN6*69JIW2Nu>->Ksr$s@>sTD$h@cX6VJLRZfltY%#C}p-C$>?=erA%}RnlyBl zZ@q{All=sJ4NmF^;_>98SIM@|EXu#YoI9v0nWAsMleB4@g>KUhkS3)Y$`;-88*O5D zw-{yc!&ZeiHkZkRX14PaO2U=i)!H7OD#cdN^7uhwojHA-zp5I)&!cYM4=eB-b!_Rd zvRg0E;)7osX2rszojSHDn_8ZgL!b5PlI1HE&AH$2+@#=*{eJBPtTw(i$Byj~b3Y1E zk4Ti_KDnT3yjeS6xn+GC;em#Exx3?v(Gl{pa_|pE@&1pyFCP?)7%4*=Z8sSRG1m#6 zuD(P$NfCLvi{H{moE=#C`BgDLm0Mg1)%L<9ghqp$Dd8BTk$`j!sBnTt6{I(-hX{~X zLg`_pi$Jxwq=5qZ7Kl57M(k$3_l|l#NkIr6+NviK1o3R5+@26Ge^6geQMU^E1{kKF z$xdr{xkkSK%fm?N?*`P!x-PjdH9ZdumG?Co(SU!MvU06Vpyg^jQZLD~^AVQ$?^l%Y zZy zkbykaY$~E)IHJo&^$7*e`3-O6(_z~N-x3W$Bes?)Q1p}^K>+fuxbX%jmEJfZbzYQ( zg_{B{aCF0^x%<#zV&uin0tRGvC4sutFDl4C+-OX_pu zMs&Ejy<0>^SX8F42Nip%gh4L+pW)^l5JF07d$+X-|DJQ5HvfPueIdKc&>TdASCxxa zkn<2zu)<2r9(v zF}BO;KiQcI1*A4tYt!KHle8e%Um#C71)Nj@X#a%`Gwfm)_k}fu!LqL2cf8M2iVMAQnkDl#P-rF__b7r;frW2Q%H-QldY%(gw8C>1$)S4iWY|R^mgP(BZ;zNVYCqPhlMoywX6Ay0s zy;xBGtM1ApY)}y$oS`oB6rp+_jb6G7Dwb4Te|!8-!I5t}aE*i)>6*X$D>5uFR?oV7 z;4HK_jQ2rPOMDEA?B6a}ODbPW->_B(($OrYpt@72Gqq2IJpT<>uq+V5%K!T44f?F=n3w2- z5cu}}+euF-l-{J69_?ZBolrNZZ$e?5sl6#DVo-ss|7YNhP~_GQ1y1vuI9sfOgLn8PYp&H@JO|H)LQTsv2RH&VeErE9i2Bw zxrsG`$y>T*`Vlkt2p(z$2!a-wXws4<*`cC^r`>9_PqLkst;Oe+v2m;{T9Za2Vr}sf z$)QoXdr_zSu>F$2aUT7zkl46e_a0-Lrs2~AKfuN0iI;`G5nIwH;T1nb{m*+Y7Gbjx zVB&Cu2FI&P_eCnl4sows92MXT2b?w*=;dZz+2t`Ue+df=n1jIa5hBX*2?%DHDj?z; zbz=gz&vFa#&tW~01z-3Ppjk4jpggQytTI5%G)wvDL{X9vUFVL@1#Dg9|G2tk5&hdk z0s})k3YeqM0RR(@Y0-Z6lkn)X_SGsW>JzG}zBAF4#+Yo8!|$wDF24Tj7^B(lhaE~h z*#`L z&&q>INW0*|NrmyK7TbtrD8H=i507oZ1H&C>W%}k2+!ipbS&4i|F8xZDsG2tcXe20j zO+RKLobT`R=!R0^aF(iZhJJ9I*?__YgfL6!Vm=iAn#P8vp{pN_zn_awP0zUs&6~lV zYfzi$o7=P}AL+4imn^*2MNv6A_ZRmR#0R?DHnlvw&sBy_{ksTrdCC?hvD@p?Su9DZ zuec;{(F3n>)Z4iBvi@{_K4Hz8pJho7Z3H!(Ppum*e+-g?{=$R8RT`96Q{CE9gs$8> z8gqGAu?_XX(l9_`ITtG^C@3_JOSS5iMxwqPfyFwd9b~q+SR?WBhY?tYb9(Ija|M!? zCPr`Fj?#`s`L&G|a)SOY@xN4qJCQ(pZzf_c)M-<5;JMPiZ#fRAb=NFZ7W3(WWN;UL zij@fD78n1}mGWQv(YunqP%m6n!St}Khyf8qe($z|8!G_S>IY6(liHzZkDrVXCC6Q$ zjArboy?2w1x24;!8^5eE`=s8nrn~nSV*Z0cqqLK;-IR!lic-@%FDY=aRZwR$FE*)3 z(&N@U-9fUTocWE*6f|_lfixE^C1DWfN!G7dvqEv)4$6zYv8M@;sA^x)^#5GPa+QKX z8mac+NA?1FqR+dK_Mw2KB{?M9q}Xd?nrPYN>P8l|@t}+WV8z0y;V1jRnNXBVbMc8d zE`vM*ghV#UrVHzkiywgJCZ{@07)4gpk})2UP!vl-mZ>-l zxy3_p7C^5KQ{iY+TH|JPvNOu=Bn20% z)pcyNYUg10y@cD-zx2gM&C%Jv08Nj#XdZJtUv|?vvuOQ~MM60AB{)u76!W z?O2<#nNv_Xmvx1WyK()E6y1y(u9U<40WrPlBrJ^{I0yc=$%g zT>PHVfrc;dQfS6=Ws?g@bQau3OVM-^&OF)@ zT@AwYlpAx&%Eb-!U`0)r+FKviT?j|4zB--va#mL^*_*L{@bkx55Z_^Y{uphn!)|WN zbN*~~u?k#A`K}7>QG8PSgw4+JKN}D@r`}gss_P$1Gq3Z9i`M}#PA2NKu_=84PF1-P z{Cp*r_w~#ThC)Uh+N7r?oL;$Uw|Wq?K~6g@-b%1uZ;kAog4t1t%}KUTmGIwaBEw6R zx|I0A>r?bqr$%f|(evZ}B}tw;1F@IW`1nJw3P>y=Fh@_F_yFijngB{Vt8|tx7qLJd zolHC$G#QA9Nq^V(w`;Yk-^UCUC+=DGXbqTF{=ZlHWZr%An_itQF8m%wbdnlw7N$(7 zKw-`4BX)=}gC|&)mLVQupTN$)%USFB*R1jpQ*hFscD6 z9Ftxp^5_zNkXkP4WX}Uh&|GFV{W5`MhUxEUZ(VOOzjo#w9& z?%1eq$xM>6=J>JmI(@vT0k>DumWP2mn}7wUX&bxYyEy7Cx2sw7PqrFZJ7~3K{Gsso zys(ECcTiD;*YJISrGYXHMS z{}@;wl>7inPoP#cVAe7$Qh5ZwFy?5OxSuWxk>7JGi}PWg&;?%xx>tdYiejw<0;WEC z?}B*~^p7see{9M~QxM`2oOq)DIn#v#4w?rxV|gU4CkqZ6d)?a1gKJ|vN)~lVw!&FK z=-RXK^uvSME_NVh=^=zB5+fN6&38S4+;aq{PF!n)JP;c1ik-gM-`NA@LQzNhzrQ<@ zXVXkvz?rdxP285zEm2LWk0!x(g+_w}D5qwVr*kIm&6|9I1ID8TIYs6of3lw9{JB?L z7CIB&r3QE6Kj2wmb#^)7;mgap<+|!LgLe1$4G8q@T4E~ooW)Mwc-Z%6p75B&>8V47 zBcwODXU0$Ri5LAVBEl^>d%&uVWE#vu$AO?Mzd9;<8TH-^QCv@{mbJrs?5NAF?cioX zb35ZRQxZ&&zmLz93fHv@nb10C$zmOCD%omX7_VZU5v_CURC$%aEy_rnr41nc z9PDQ42d8y+%*^SS@v9;7FvUn$R=Jpo^~H9PbV!b#; zWl=Qt=_P{I0fqXT9K0pdAQWJ%*&hggySw@g{@*I`W?LZJIC^D6TBX<1hRK6^-UAe| zI`Tn!PHsKgex9pwq?DEu{<*Z$@om>Da(!RlG_*7|_4PKj+e+-4R`%wY-9(!jN;8#) z_3fl`6lG!bV=S!xe0ZdCUNS!imTP}1BI1dvt{C(|Diu^Zr;vq;CEB)~$U|*3^RQY& zZeq!B2A7VE436hJmiLWr>~z}4Js!Kj2J>6z2)Fue`-Z&2B@SZ}k6d#&27VH5$v*=U zuex3lX+~G}5`;yF`n=|8_bxko6PpyrT-zig>hb*8Ki*}s?Lr63<;*??FT$5DFmk56 z*$}9cNsvJvvy!ff5++He1@IM-tg;adS|_|Iw|xfI%rt5$*wt{s{LHW4RY{Zfoa*l` z{x*6h{0}p;6GD=YF4nR%IpkgvGGke%GD8~lv(rN;v2>>FEilC9Y$-m?io4eVCccFf zR65MOunzsaNKCxI*z`W0C%(eJC*2qqzRe}+m2ll(f@Dbeq2F=K-Qf4QtI>LhDQ|jT zo&gEbvkC8)nLDN0N*WME4Z+0BuBs2Zfz7L*OnQOxV41o|~t^nrnTshjrNHiDVuK`-MxxJhh8B_(NPO8i&{)A6_(Dz}7i- zh(XGrI?@ofRS?m&1clSFP`%Skft`rzIFjsH9) zoO`HiF0v@I$Q+1?#45wDUgsB z2x_(Y(`~zO@S@BwqlqMI2}E{m2KKFAmm4@PWO;p<0$OQZp};!&+kD!xg&L@WZunL+ z*htAAE;LEEL%l_w0rR^O+=Ms%d{a-LYy2ceE#_>p!abXdUoARJcA0{gRfw)T@Gv#M zc8djh%1DO4)fsS$OOjP$Y)cn}_zQ8_St;?d5eC%sF>s{(1%Zt?q{T4j$^SGrr_e4A zU=3G13!hw8M>_bbi+Hu4iMsnkS&!J20{pt$IaPn^~86|^yM6Kp0iIt;aN8}d3O#kym`}hh(FpR_Np?-)F`P{HttTJ z@8{Av?JVkFC|XJ|R;s4KyBeJ~@!_2EuylS@x`?olOMS%;A(_#oH^Pp)TE&!^a-kT2 z+N_?ndR7$(#Xw5L0|$s*CC-vAO>S=WgbgXc)vg-)JVp>I3JF0VwZZ8Hv9MuMW&iL3 zTN}y)u%;VZ&$!TV_6A z0v6eHom0iZBVi*Zh;Ezf_i^EF@bm{7n+yQr_Mum&Uia2DbNfG?un-H))|)|{v@LnS zc?8ane9*H)%L_&Z)`_$2Z_F&*EFTZf?YjkoZX?f0CT_EeE6^!qzIMhCfv;slOLAB`Vxh|o7*&i|2p zL;1;r6D%d`7qWe8vHWQk6NXjs?E%rhLTW;0^9Mxiz|hX2>w-&T+6*eJ9c(grxjt&w zHaeA0f79&DzE*BeU)h^YJNV3m>%(K?)i~o^U**koicW{+$$W-G!G67MyPG9q=<0dzL45CnLZt z45`+^9<=;2w~sz}nlc*L#DTM?(R2JLFj2LD%!u70NIfzk#!E6=wWMtp6$fOyQp=n) z`qgM0GCMOuTwIhUw30KCWb0VU;l6)R3bG5NN!9z5g!Pf`dD`m!NF| zU*etJcZ$K>>NLpj8l9>#s#Fw?D6ft53yk%^`=$j6m)t28u@pHS#x4%w;`tLlW$&4- zi;39hLjX(PB!N7ktuB>U$YN6Om<$+mZzWq8hn!5mh0>QMEZpK=o zT||BbkIo1l;@^t-KzlJC2xVYs5_B|K$iEo)OsQ(` z<;{<}rTM_n14j|WM35wapFUSZn?ta(iT$BvPU4cu^Y7!P6@S@xqvHAbt=6MwT=}kRjBA^d+TBMu zsbGYRdqJf@m+>IqCCTmL_jdsHKC#EU*Bea{Hu6$>O}Wjy(;Qewv68T{FZh{X70Tr$L{|oNeM>yJILh#yhO5RQ;I5Ou;<#)y}d@oBF_e{9b z{r>XHQ2>&Dc;P$y4INABQ0C%h#IK-9bH-s{X2{)ejR%mG%z!A)4PZ%BlT(p!Vw_E5 zEpw*fn-oSgqQk3I#Q@umz5>7|ol-%@a37sqH3tJWElrGkr`!*+JT<`hV6Lr>I%Hic z9m^>Kf|hRW3-oRY3#m9C^@UMeE3-0lZ1FdosHCbXX*KubQ1kr$)w}Y#b9wH57ni8c z6=xBvY<4GdNwS2{wwqjpdeuzwZ0qa%9`6ACWCXB|)kV?>f~j0j~-3u8J9lcng8krM(wDr#q)*%PquA>{i7d2bsXYzby%VpeFYSGSFm5-Immh9wW;)^aP{tfroS*=grok&j%z7Td z`Y%O~XigiO0WW5bfD(Cr3=_8#jeqy71F2^O1lsw)GYD?@@Jn*Bdo0vEN2e-SG#FVV z&YZn(sC5H8@K>A#fe_cm#DVN>q5&gg_A_TJt|EiSKk{SwKUIToaYg9&q|PUryw|6- zEm-;d{M^AieYT$qmx`}Zji)4b#G`}R$~4x^XCBAyXRxLDl<+_#A)+G)(;<^qS|)}A zl(ldYE#*@Lz`Dv5Uk?Et%s+C=Kd+!)#-|^GwR1i6glTup=0Pnd5@^~kp{0&bIoVZ3 zCErZ05Y(9&9~lPa=TZ0%0QSXWyZ--RB%TrEWBuYJQ8d3*;j#Sz*5mKLW$=H#Drlwm z{Yoh1qrGn!wXr{Zz9l4TZpRkvZ4e+8@+JipFK=7UtYCO0D#;oF@zznrqfv$nwszD= zZ6>&>YoHl$#srr1IWeEm)nlGq4{;F zK4)Iv1}yBCSXb$i$<1wQKW0kv6@a_k$9$TL+C#Tu-&&Uv%3yGD*Y{>gfGX4~Z zlJydWnq$Qj5Cy2ULQc)vf;ucMW&9s!E#>wpzD6G|J*wIl$44x?3-J8&AdBy(Asoc&%lA;K;Fx@SyXx;BC&RCf;c;9?+K^;~buOD% z%8OCTy_aHT*(@sj50>9i99Hs{OFP#vPIiuJOzq9+BWY+JlzrAQKf zVuMei8HilMKa76oSr0dCW`X`9^X}mV`&{tOC+KQnfbJh}rN*Tgm5?AvMFy7)BGmH@ zgx?Y~B6JDCq0_TAF8o1*TMr+lYU3MLQVT&&;RPt_0!qmcuwKmJ ziLp5iHl^LiCNs|mlgRr)RZd^_%S=}Ye0OKMh0dZ_RpR_Sr|YRsG_e`&<~RX;>`8M* zO7Z^eUOghjgMq5h;<=H~B1MiAHcYfgavSarz&-p2bA%t&T9=dT)p?j@!MN9>YUIw9hcf?+*FVC=k+X~(&h0qM|j zw1|@LYd<5i@hSD`+GHSxEOFj_)0z^H0GdWqi!&|PHhDv+mM>53fL0i~HDaA5>zs4m z3SaFO9)D|N8ynj^*Df0js5DGpt|KZ`5({O~sB)W^94+iEr%F9lP}J$#>D*Ozl5x{| zCjR*RR9G2w(?!0yk1$S)E8TIXlk z>AdLWVuYIN5Eh#S@Ok0yI~3GZ-QIRNYbhqPAQ`bx7GziRvkvo&^uC?t7rhG9~p~4$zx)|OEI98Le{r(~^q>**o{9@&4=pF}T9#p#5Nw^i-*K&z6w#g2 zMORhC&omZJ)$@*fYfY@}_T@?n#?NI`!&)>Yy4rpqEzp|yV`NtTyIU9P?-2HkRC#3X zuMEkgkWL0`S1M-@*F$2|R?O~tGY z|4uz#XSw}p)am~BbW&|=6}$iLCRoq)nz;v@-$m=QL5!dMw+9;#)kjOZ^cI*t7Z9 zd)7Dols`9FJn`SN(Z}lX;zFE?B^u9c735eG4ZT6HC#eKd(YPDp$ z>)7yrp(0n+_41ss@|`IktNzLSy67Ii-`1U>%eU*XyBCAdEW8uXvgdU0z7m-4)Q>{{ zO#w*ccl}fU$yc3R_aW8t%kRx*XkxSM^n9@Ju{cd+SsO8oAEp zZ^V6&`ok9L1s>*^8{)yWgtl%a0M6CF4GNGlbq(X$9y#X(GbCGb9IxzYCr_>?jA&lV7ZLbqKb8MdoW`{=G3BfJIN?Rc0}0K}x) zC{~JZT3263Um+sqZE3gIaoD3pv1i?ybgPgAuXG)?OI-9xm@W1s`-;ooeeZfZWLeW* zHJ7r7!_C`;noemc6dgXou&g3K2b3;lSI_LZvpJjz;l2lmT+Y*^GCKTD-en_3UOV0B zue7zmd_YNlhJ!#xCEw)8v3Y&r#L3Bnf7om}vVDo7quVIXo9gGmS$85lZ0csW`PQ)N zC5gv-iD3YI&*E+=Do{-?R$K4qKovos{EY^cqkYAL=psf?=V{uiE8b?3=01znDp{?*$)HE$j(k=-p7xPeK&glLnmD?YceDsHc}@otZ%REaq4* zkh^Rj-wDsz^=1lz>W+uz?wIp`SXpi(hMkMMeuvGJJF=Ze$;l|rUp|7q`QYaTGppY= z4*mdYzm>f*I37l-aXA1PbtQoz2~MG3&Y`rIXB_u0W_D&>2>G~Ky{bwuXu^oq7O z-p`Lfrus@F%P{hN1*^EtOflkmt58)gjoOkbTfd17)5cm)nd**?A??@vAbaQz6Mr5L z8%H}I%6Dp5_CVGPyrw$_MB{|nRNR>*}aG6ztp%?ZNIt=`y21dZbOvW(8q_#h(N*hwIRM>YGNw1qGK<;7Dn#X`Km2uj zB5NCV| zP)ZjNMP(LOfNTz>D`d29@TUUk2mj#TP7<-@wN%?g69>Qru@or`guK?j?rV*$yTScH zeA&m$HtC4^LUbKPc+CmUQV0TcVQ(csvBmW4oGiu5^*Q2sB&M#^lF`~AFFq40|7ItC zbx&4~N!;%>-lPqG2XhJKhd$!emdea0z}fge_lei@H_Ecpy{&Hadp zOWmr#f>@zFX9!5Rs?mbvlydrn%wmyx@0epp`fbfQ>pAO} za=1TRjVKGMRo$@H=3E4x+Ym6rTR&Ol(_VgO;(sn}g?`;#d)~l}(LsRQ(%3`}JY3Wu z8{=!*d$4BwPiKZM?3ONkG5v1$f?i);=?R8fvpvS7zsToK&3GD1`H~x0yhN>jRVf($ zk9d5Cve2aP^m$Si7iv1RKU?)kwfgUwoh13rTgBckD!()#k^kuvuh??IhkcjUs570` zglsvqHYcjU*?Sj(q-pJtqMt%{vfIgk_z38ye!2T8M6-Q<-IR3QmKRX~PC&80tZ4Wi zumpAW&R<4uh}ZUi8P}b!DX`R_@*Wl)`&u0_zv-wE`Rq8h^Awlo4JrYSH{j(mUGAcq z&vB5PZDJsus7dxA23Nr&Fx$F9!x13XyDAFC$wM5b%!6_BY>qvOhTRa$Ljo;J1wjYp z3%Yp-u|pLjwDM)=UNdfAm2{5rqpDL75K`Frq3_|B;KkkcC$YuS(*#3;uE;C6OoVvF z-t@Dy>}LA4V z7e8`w+gwpCsJ!UD(tGarGw!r~Ig67Oqq>F`#27RwRx~>1PFDnt3lwN8QtH?%7dff5 z-U`62*&{FZ?TPUNg!Bi4x5GxPz8zxb%(MDM=$J4+Z>`1IW#w6;W`O>2C)-~oMyUS~ z{9nvS-ipOWAm?#kT*$4NOMgg&pL=AQyG|B$+qqt7Z#G*cE_b;}tkdz#TVsXE&$A<- zcC^P=gkWrNOvuUCeKu$=}%XdEf#p zycYC!ONGv|y(apRuNd7ge2a^h`xudS4BH9b&A@8;i+S&sBcy)pXe^f7+bqq^(srve+jnDhRGk5uYDd;sv+#7)QTz9g-afksZDv8*2&2Gf)1ivH&Nz!Q1 z*BBXfKqVEzTgTo2f45KfrCf){;%gC<$tKlW4igUli`a)bY~5esce??mvI0;|F{_ z|2Gzlr^(^YY;>befPcl2rf!1E42m*nQkz+=Nbt4I-^F|$zEHiA9+fNu(ErnH37yBv zryP$K3=|h~A^g3+7Xd+3*8!KHo;47%?WHR+DHF>B3NgF2&Y02%iY1yaRef95OYwb+ ztz7d={aj1N335POqBu~J$&EI9{OZ>@RI|f6K5M@Cb-TsDt>Cnu*z+P=QFz%+js(>R zvFW^H!2Y$tMsH+?3vr`Z`P+{RCm+U zS@Mq?$+fH1{rAz2uLVu!+UISZ|CqG-3OZLB9_Co8f0w3`X_%$wAZDO+G%o$0N=vzg zs_NE+?gWVW49`?wuK&<$`{vX_S;YF#|NhmO)<9i?p~w95$y3Wn2M2bN#r~Psra>%| z{1%owenBA8k|6uCelmV20R*s6z6>rG-;0E7UJENTXYkDXrBy(7crmW^xcwh;i+*U> zdH-D#80AP=ywxL8Zr!3y8>5f)pT5g_&HL!z%$)wgaJAI*Ff(@fRKKU6lyx3oeU&ZN z#$P%Ip#;>-;NZfc?E?G23K{l$sH)*tKs#zOyxrjH$gJ&`(UK@W#fhp39k!?I>ys;0??ss_i?Oc_S2fD}X%*r7hEY9gKV3%V zm>dZY6CarZbbs>xLHogCp&rS(u40(i+MsLqb8|Ys?4@wfHhJ1GZ0dW?SsvZp8s*G_ zhL$7!GKhaem7}FjpY=(T&Fo4{Bx_Bg(xlOvS^kvcsN`mJwkc-;GhU2INn-6k-e;W5 zuwI5&0&H_aJ}w`JmZAc_LzkE&ln*(LmwWf|`=kT9p}Gf3Jb%iV^=kWTvOots0C-F1gd+5WleZ?yQB`|S*KP(* zgSXx*BT6tPPzlp)@q*h+P=;W1{CJ#MmlGadQB!))a?EQxtHzHwSI?N>IpB`e=b~xT z?E^kS4m)o~hwg53cQyUKmQGRVNbYXh8n5~LyqX;9eN%RH4(B}_=FH$T_OCep?=~4K z_7GDZ^YI#$Uae3WCLlXO<0ib&ANLL6&V!hq(E-5?&YNmk?N#l~&5&|Zy!Qf#)>uHq zoH#pg*qj^HyZyV+Ai5Z4>4O&1ICN{yIA9X9 zyQlKFa{A@@rLuwZbNSydH#^z*eeI^akO&Qq<%|tDleW zuYQc}xsJY#*uy=XX^kAK+}bWG5143dWlm{g-4kx<M8AWiy|T5F<1QDbJ+Vkd-w1`+$6XYOTmm;I`%NomldDUUa`$bS{sko&<`mbuf1G z44XY<@-|f5%RP;cCg)uN-tn1|TBXRmzTK;KAEST{Ka05#VWm{|plxK zk#l{G-LbFez#rUg$o@UZfe`E{OaBEBAoH z>|9Y{!YSG7@ee0xu!CRpZvi`SLAk_Z=&)aKN?J;rHx;)|K@S-l&jiEF<1-Hu{#m zWQvVjo|^qP!?Du5^#V(?r=hqydd_Yf=Ni*A-tBtk)oSrRRi!HEB$QN8I$Y}UutO}C zN}LN|Nt0RFWznHTyUd2@P?wqIMX&&w*Gahz#PFS?wTa0*rQcP+rpOx*@x1w}(5M)E*r1@sR?2$_M1E+`H-f}l@DG~nbE6w-izrig+k zut6cENN7zM2!jBI)WHEX%m^rv0x_6C$pDZLfH<-OX@-OdKztE2MA0BXnm&C$1)q_x zmEXeobzQsis=Llz{Oa5H6V5*1i%J0+D)PFzH2Wv)%GSDl>l8`OGYD+#IN$H%@lW zrNVKLjh{EA+zF}AVR6K3c_N)0`3wRO-Ai1)J%aJxKFBbLe-aYen2EW0P8wH;B> z0!M*IaNdA#=FOJX*kP{)V5B(QKQ%WN&n^wz zs$P(&e^WWug>Ffwyza(WoDPabLk2x$3|jETDYo=~9v|KYC?v^Rm<#7llgsWe+f+N| z*i{%#R{d?KSr{;2{D4xo!5YT0$#GjDS3^qA*sFv*wc@R}^&~Kln%I2LbY6tHM#VVHhNI}zB0HMo&%r}b!&`qm`1l0yc5bJ)BxbuqCFJ^J z3<2fRBO(j+kq+3~0rFA`&B5CD<_?~Uo#fA5eCU17Rq`KXw1Rf_iulznPc)9rI(Mbz1-A5@aMFm1J)dyUiir{lga>or_{S>bK{DSd-NQ zyh)o}H{gYS{)cL$yF_{{PFe+^a?L~;Y6hX*GZ?@oER!E_$ii6kYC1rj1xbe1#mR|j zeq6k;!AfB$G1XPpiUnj~@VmryeuZvo&NfjOlk@ImE3P==Wvkm5LFE3Ow1)A1wdrwg zu06{uv|4K>=_F9@?x(jl7^#%iEm>^3(7d`Ak}HRxLtfUUFM^{mEb%g7xzw@8|*eXzvm`6<@wFfl^Xz9sKkUXVD#SnN@yP}S#ykm zM(%u0p7EH>Z5-=6KthUS(~N=&e9GJ$EE+zn<|-JUpH0gF+qxr1`mj}Rod#c9kK+hFS%<|lk@p=S)#dD=eghqDj_u-eYh`Q-0|MjR7&o=d*8z`x z1DG7;^LxUr8}qn~dxff?HQ`}cpk>%Tnn(Jb#XFGXElRoz`(RbBA! z()Ii&&!1|l^6s3RS&fOmO3Yj@*r}U+{M#gbg2RN5w_+@@EwOdz>hyen zHOCaOPb|6QZE3zGiySM_7#u9U{{4xFfU(F#cXwMZ=CfN~dL6+7wv7WPo~#3P^FhTKT4 zzTxq$*qj~&5klan`!Lsvm%!l~aW(fF;I-q*Fo+U_*ra{MqqJHjfgP*}k%;XWiD5@; z3YP{G2@w-d_P&Ht5olNtj6$N%8jeRH9^XzUiKvlZLMaHeEC@y+VL~+sRdm1p8#&yf?_*^vIi<8~Wcx}l7*E{bfjwCVWE!P`G2*?;Y|o2@KdVR#GgyGs)r1h(_v4}Jb5QMUwj6x4f+ zPKdP+DsvAwsL;PgR*7CfbZVl=y?@?7r-yr!SFrnlJ?yv;6G}5TDgSvm*5#W{45eYUm~2(&HqbTFY6QSoOL-KFQ}9gUuZt> zSfk=@4yg0ExKH`0H-<6(0SAc>dgts=7c#&U0bc?)kSKRp`fkuH zGJOoG{9ew99&EZSDm-5iIzByl+0!GKyvu(`^NPo~BgOO*rv4c-yF}Wtv)X$o^MbtO z5w$myX<-rSzb~1^_xW0!kH9?Kv{ID#oL#aXj@D*rm$uH}56^vAbU~&v`ErkPJ1FR7{@D4plC-{FO?a zHC7)0?v8qSeeb6-e*2pL@0@UTsHFnO{%&R)6#{Ql6C7G<|H4S0Eqg z-F);&^BMH+(f1ozJ=Y;%O`_s_A?#ySjURE)N7=mE92Cc^;p?%dQW_F_*VGr)}+caYw`Jeo_eHru9tYm*X7kG&e}rm%(-*- zY*AIya^8MfYVE%XJn+2x$H1}0*Nx%e@~N{acUkmdk+#(^hAy_LyTz+XnF;UiF3QwB zY1-6&JBy8ZJHelmKM(qQ`z2CmdnmQsAS6Gw#6creJMN9#9hdRu&WF-Wr_O^F=0z|5 z|1F}6CmUM$c0=X89ecrh=uv302U}d9y{tBwe~p-PdN~yt?o<2>SKZe)pX?tOVNYbb#3QEFTbs~hV}7nwB_Pg6&>zVd=ci4Wp-tlN^&wk+^0*cwLpKkmGckF-ma7fYV1&~ zTs@znJm*~_P?(C5H(KWITDYHwa~bOWz6FjhNapulx@WCqa$TXI@o4n0NS`_tXn+#Y`pAFv&huhi;oQ9q@E72bawwYP@XF#ijD@eG~rziCPHmSG4?kWNobz1A|(A1I`CH+nuc4j;r2U zbw~LHn~`%O~P;#&)9z7Nso> z5?y(-+u!gT7i2#&>G!7ZqqXVvd&{1VCM2SK`*z1a<}t|raR}6-57x6xR@c50 zmhY{GBXsX?G%>HYHlMAH(@}G*GM@Nz$2``0Crcu%{^dG-etY)k{e$A|3GA0!B06SX zMp({xrN%F;YyN|?bv!q|8}eRowF(kSNuO2Ba~HPwJZw2<`}^zYG4E+wkKnW~blGQ* zx!&={k6R)Z2qFJWmfpJ#DdeQpw(nNebL)Q7d(8#-K`HKFjH_II+mse)Cq<64e zkKH~vB(?k`fbv1rQ{FP(Z>GhCJN-c1`A^=YdSqfJ5#GaaJLum0Nx8V^FM>JPJ=74z z(WFxI#+X=*B(m*M{!>8Z43s-E>DOZSm*mi+`)3Cru(@ky^1Qoqb<}e-S};aQ)jZWz zJoooAZ$~1l=9~O>2IHMSgr}YJPdQ!98Ns1ie*fG3aP_xMnw6$%yWHY%*Xb$)SG`mZ zY8^_8c02NEh&xQa^mea<-}lGdD10hb+^g-eO{_E+FPD?5)-2_3;=k~7#mOC_uK)45 zEK(|B25;w!V~@|B26E?juw2`y5B)cM|oYV)e}U1hZGSXw6dvh(yqT z+i7%Qjrw9@{d~n#LObDRX?%$PjToEalBj5GaUc1@ zkr44Os!NWZ>+yf~35rMW7KMQb#4ITNTXGl-T)qnerWDxTdKjx4qSMj*HYpFmP{sNc z{5u_+&0>?Lz&qQB)G$c%=+S-1Y&x3s_P0>O<_6%%ksv3K-!ghjAm5!M+N zGXjpLQEWIQb%nY<^|8`6DMHI!I34}&%amOX27JrThO6^5Fdc|NnKvYl>XZE3s)kP$V#N z196GcYkt;U1DJ%eYB}oNoTnX zG4`Mu@Uz|6w)5^&dx4k7#C0r=_sFZlTP3ya?Hyf_-uD&pC9+#fy(6hqcbAHmOJz1^ zm#Cj8v7Z#x?xKdwh^n8kcI*d}fRuDuPN@tpxkT8kcV?xH4Q-93RJp<)64aF(Lue9? zUrwskDOF^UeQ1+5jaTBRE77dr-HhK31sx?%Xtp67D9Iis9s68)@QbI1CK>5S#B)qkzQBePD6 zze?!2ZFr6f>hIq6Ol`w%WrIV_B;MPoX1DFWqYVC=b*gi5P zR~m`-U5Rb&{)D>lC5eajW(acL88KLH*&TYALS($PLM;2HNt5+D8AqM5Dl66B_N2jh z1;-UhfB}EC#dZI}>PnxRexolG$5qw)yw!G4$oMyC!bkFLCUEn=S)1RhB1mTGvow$T z<32uEBr6~37vY^T$byv%14&aL$qzbBP4x5yLnjtN8bgIkPvudK8ud5 z%*Pw*CDJymNQg{1mRC9hBN|~y<2#Ep$=>o3F8+ka8f4G6&irSq11e_Q#4LTD6}*j& zl|v`9-NoF?&j`p&O^nWd&FB&TJLtIOJz&$zS;;G&t(k&)$&yP&1SRGqjMDDg$m~FU z*s`Fnkkoujy_K7xo{FBlmT3y%DvmxfS{@s}HLELYA67mrEKirx`yN)*%wZ-8W7@~1 zm4w%pN<+bDRG$7?um=!XF9r5IsgxeJQ48^CRHcPv)sTKKxKjOSD0-GOz&D34u`Q(* z9JW{@+2D&lwox5uwzqQo5?_&POqM{Ys+Yz@IQH6k1r4gT$c}td_#oikj-myCtx` zRm)FZC~Q(}B5ioTTuU}Avf_&*4&0MR*tAyS*g$(}eTgmTpar=#F~Jovy*0sV)|L4O zDmDAOYk^a7p`m~4w3uHpLvN95-p&fAe%&Jd#>$YHOogo%n*lVw^(_r0yQS;2ow(Zh z*XnK5#K>iTbT&F^wc-$R?lvjqq~D$3Ow28mCId&3O|whNFR@!CjPGH7_LKCTh-LA* zk#)IQs%Ra{uRJe>n3yNUd7f!v^aclg@3Y1@WwmLt0_R@d{|pD)4iaU8k-+Qp0keliqaHJVivtXa6UL$>m6`^}bs|H!x1+xdh9u6iyljb`yeW5r7TixQZ|91(=AZ?^)e#0wbQ=!Udsw&}J} zdojHv8Rg^PnrO42a>p%TnPgkr=@{sL&^fr@T;oZ`i{Xx+atLa(=OG2|--y0< zZ`7t`*3q=Da;XZffWHW5we=@7DVXjU(k|%un51I-%vj}fAd|l^@1*NCKw-dro);#a zr87oR6x&4UCVRWYose>k}6vN#gyHK7x{Q zIdqJjwyK4RY^XKoZEq3ZH#2gP))%4s*9FANdXESN*tpG{(H9nsEZ?QpeSJwEI5lb2 z_FaUcIj;wT{Hu4JEYSS3OZ7BM8KKuInvIN8~TGx!6-TkE_eo##SWRRs7mgTF+%3wsV_BZ5J;a9*75@iuY8 z7@3}%ehU+GTDjzM?c|F)&J43TcW4Hd94>e^J)sp~I$ku_Sb4+qz!a67c3GxRE3%|M zcv(R8)A~u^;$qn8+^FQcy>3VtYJrxw1Sl_ITd(%=+g|H-w`PzS};> zCC#9bxZLZ=o4btJ>_*zzNOI^?t>R=fHiC+)pmql{NE9)tyiJ&YbMZ;?fyF{%qG93-a2=>fA7L4W3?8x&TuLxL-k4v0FS?t{V)L4A+vYy_DErptxdc`^|e6$;uF z#4E@|p%j9`*^^wyTI!rcN%4hSO@sj`H(wW$W`N=T4l+FI`%uDWqAk6e7~>NDON_>J%Vb2UE%lvonrdvxB^KfgmG0LGVC!iNhtb?g zTDY_>?P%sn1l!hJO-Qr9a~%|6-lyCAS3mGFq<7srF8i=9sly;XoQWEw_=Z)o+_OBk zJb{qYbjDI=84@nHaIL+I)tjm+# z2(QuT%*1k*8LyfII5?V&&&B~hwwq#RE9;Cibwy+{#^;YSg^xm|v6TUGwnf}aH_T@8 z@dUbRr#7HE>u&!prJZ)B(PuN`KJ>ent(h}5dX8N^n|=fMn~LY%yFrWjKSYM6gCu0r z>3T%U4dlAJubj`Lozh*Mm4Gsi61=;`aITrr%jZFdo8g(%{ClF-xDow7ZnVs$!{}Ci zn}X_R-~4op+1hqycQk#IH~)-jpT@!z&NhcwM=v1z!0|#72VgHf?*8sb+V94ZXrd*j z*DedVPZ=-1j5(ZresGxHAKYg*&2CYjzGwQklMOqGGwJ$s1iad7LhH)+32)kM!0#&X zt)J1ta#QIVAi5;Ab@qg9i0Bg9-PIHGcp_c0wR1gpY(X#A@Jae5kPC3HEph{Y&O1A)|7#yb2mU2ONT=UEcxegW50EP z|Bk$u^^_ui%qj1A>!`1_MUx9lz#eHuT+cvT@V$59^A2kd8OS$ZTz z9T70o-2}@hAnbk*z|YqU`HRm#CTFvI;xo}Fb0iilTyC1G$d|cnB~#=~w%evmNi8eC*Ou{D2mReHYi+p6V6D-Rtg{88lrdiQb z84QL+puP!qlKoIUAu>>)qOR1NZ!fXsxg{dnvesXzmc*2ag_v^Q@#`atBwuGTq|6a~ zkS!^w9LbO`*%Xl`O*Jw}6)=gZi;+_j2ZjY@Km}<)pvp2Tfm;wMugfr{l90#}<;(T; zW$i}c@5>(&YHBwcC|%Y&7FhQ5it?h!lP_%AGjL?MsMOe#QZLp<0b{Cbddvz`kl>1# z+?qUXEp14$W|Bm>b&#qyHa^zUQxhwto{(0p)b|RbbnJwPlKBW(YDur6)>LerA}wWM zMz%!y!cAc$QPxso%S&Kc22)=OU!q-ECHSWdx&YgZQMr2yCJeQ;WR!~uWyY7-lZP+V z$#j&6=1OKICS3%{g_okAF3BUuRUF9z+uCc|%rdfY1*sJHGRwmj%Pz@G#H6NSi(7p| z0AF}w{lO|XycWL<$-@?wWWQ64i{WcjtGqH<6G}G|d}NDVgxCAF-- ztL-tcv?+pZ{S~QZAfTeZ7N|ZUSt$i_*5DD=_*xr*ecg*zDRF6{P0X|`hDIQ><(6H` zP9@w+M|49LUwE>C-HS>pWtk;)W?3fUTHBFimDf2^f`A!Ro2t)NnsEA3UIs=FP7{5LJ8uNGC_w7{_a+!rv+!uiRRxKE0$ zRI&|IvdGH8{Zpq;-`Qv+Ym(0e2l;BWEIpx!Nxq&9B6nDWU#@W*-{RP#B&RVSA|#l7 zg!viB5?{H{2^m~OKopyWH#^O`D-^cXwk$6TMhue%);n-)ssYjrWvA-ELzK3MO^x2(_FU6 zsYIn@=#U1(EUQFis_6D1xo$9M=4RbY!!bbcj9Mnci{RT5xpLP6z5|goe>*z5L-f|+ z;Ey&gEb+@7BWQ-are?iVrshE|yJ5ll5*oSmX8pq92CtWW2!3c{XHZz=ULW%15Y+Xw zC+g}_%d&gSS|oVEe0U|7X7jR%kid>Ne2_@!h?>g)(@D8t(ob9KZA{$;!S}M@?~mMh z8j~X%LqMR8U8d#AK`_&dG1&&^FOCO*?*E$`Zki(c!voRD|t`XLT^oPlAs4fSO{`%=+1 z@FcL#l++k}QHSTX^Pk%BPsew6bYiOS&!dxzD~0}edeQIz9RDD#j;(VyEomLc(Kn6e zVQOfUh6rBf;{jq!Z>jk*+Ec&o6C`+;*~HpX znHudh*_BAhbc@MqwE%>X#lL+ubL%0o&zns)%8mR%j%acKmeX^IlVP=;$A!cx(^~db;XV?hFIo&K;S9%9Q+K^C~`K86ym~_UdWd==s zFgAjSZ9xu)9s=dl+ITacfiwysRJ(g4+5#O&aL*A=Vx6HBr&3GGNligg>2I%g(EHo16}< zE)5{mB z--eoQPxKkW${oBA$7HsOC0S4HaY^^}R|{8R$tlNK{bw2D#gMC@W?c!T)?u<%>Sa zZ52`-O`i~1ClU(|Y>*V$WXp0cu93jT6I$d?pg>ptxf4=2e#WsT{B-HsV0#t+l+7-6 zaoMn-jSuhrLa_b98S%=0M?rHL9t)#^|ByH2Huu&gD>X$2jg^RtyT*Q=~xx!Nh6_oY}!O$mY{d9$jqI}E+k znFB>^S4(4dtGIz|{kWV|Vs+G8%`{;)Q~BaU7d#jUV{z8*8`(^mJ_{A@en`0%see$i zTCOu}YbxeSL$J(=lHFM^<5&!zKpY+v)?JsvyDTCOC-WBcF^Znhz`nQDo_Cb^;8EY_T^ZViMWzs~NB>Z{V821TDg zM#l9Vt|m$JQgZ=H-2K$5MqF*-;|Q}p%x!h2q&0d=BnOY2^Vn%1(`1Qo!Izisby(Ek`AJ_;!z>D;^4DlcLd8}yx zf2?p`$)u>=LN3%E5;gXds4yp|i;ImLA*N{ns)|%B2PyqGgaT`+OD}`L&NC3;E!4~E_I1f!&~4wSXHuEA z(@mRtR>{0tCg8#JY!pGs8EXBh;-)H18t zi(?`CF3f;?$i(cyO6%wC>P`DM@n?Nm)y6sKdC*i_1UvMyg=O@j@QT+Fx)s|cw@vho zp1Gnv7J=$62-x9+LBOTf3RS_e4`VsSgjxjtdx1y4P|~gJ)&m) z7H}_(e3j^7lo3m<2-$NH_^n9ofmz&Ppi6uYkX1?ShWPm*oO66DBr_KM9WmY@B9hKV z+F1k}2Ay9j+O57M%BMnD?${_Kuza@kgLK0apTY&?oahrD8o-Hy#gbB5X_SC$mdfs3 zzv;cH6}H*~y!9z){Zox$Ya`?u6=}CqGj*a=x65j*Pqsj>yA-`Xk-|l7QmX`aBbqGO zu*`q$)ro^Y6gW#K1q796(`pMg3gppa=aHl2i&NOz`PUir?qR5(LsWpxq%+G@ix@Mz z947iA-C0GnFh}Id4)D5YtzUvlrV|*XM2U6_7qOvofpZc8E+CEJA~5>KnV0eY+QGR% zO&!Vzm%Q(LVGqy+$r>F?d(FFzA6Iq~l6=u!BgmMoL7Qa;G@i_2-b1k92_9(Mhy4I~ zD-Xw?2U9>+yMEGQM%ehYYu`VEoIRvtL>a>5XY@5LsM1-_nAvLBFVCJyJxd)I;2N0pv(Xu?>5#{5N~0f&meVTIvUO_mD@VzM}^@l%!a^Wg30R{ zozf!pm}iC_kgqu%?(Pin!g5w*B)9&oFfKKjRg84%v7ZQLv~G9thcu48^TAiN6(`xo zvnA!eV&M>L18vxbUH8pnAkEec+xe=rCO~5QP^>n=2i6pWez5l8j@1VBbXf{h9DLnY zm=k8kGPRA5ayrXcC$oDv7Cwblmsme~7z2_Aw3Mwjpr)Iwb-jQC9;;i#9=I7#$NrR`>bFpHTFhhM^jZTee9X@=-&4Xh_LX8Wifu)c)=1+Ep> z;6hJb1(eZ;*)BEN5u|S|vo=wk@6#K5{~+Oynyx~_A7dDnFfvKL(_$&yI57@?20WEF zPi`)l0lc%JL^0GqV6uE+;4Y{}94`s{URn~- z*tBT)@XNEwP7N1#cu;;I)GeSZhUnX^f<5@NH9^De2FUczkjbaOkB;#hqL|K*a)$H< z5yt4XFl;k`;Ww~S0Cmg~bb+5~y8}mO}7_=?mHv{6Y8xoDvvBFvv`y zh(i>HF${7U1TrXO(8{5gL*qj-hHVV$8T2$LXpqt&rbAGMsR`sYh-*;Sp|L`J4Wb)V zHt23pphI|u`3?dcBq&hgpbqEod@s?Dud8F3@mtkQnYBz3Q=&r{Kvv0Oi0+ZLj^0a$ z*@-1{?s6{5|L4n=f6Pnb+vzL&e7P+WObG{z=aR<@7DtND=u4-P;zpl|xs)@P$?B2| zbLw3Q@hmgfz|AScS3QI8B^Pyv0!4nDlPB(1b2_&jX)6Cb(H;K%5gc*1 zqD1g0h~=)~k>_0OLv0SEtiIQYVYCZ8bkHi{?KAj=B9b+iqKML8`T(+E6pIYdvZz_( z$MtE)xCTh01qDrFi{LM{sznAAD^XJm9jWz5=Z^)F_*r6w`AG4Mg+7)zlmcpDV-JwR6mCs>AeXNaY2n%Ct_A3gn+uK8U#mh*u8Hh+=r= zZ>d)oyErbQ{#A73wSTmAyx-Q5!k%t;D+U*3NX%ruNI^xuTP2dCo`XA8aj&G{sx))i zTwdAPgxPNk!yA*88aawZkmsYUz=Q>-my}B;u+Im;&dVVw-I$_`K6L?8I&Oy{OHOY6 zq1vd~$QD>0#9>l!T$Wl&GkR4o(hcqgIJA1&7FqU<&igYn^x--E{8|0baZ}tYWGPSH zol$q2V}U=b{gHD0h-NO^%8NZC?DH4?DpC}TW^a|&BS-G$M(<{5$xAaMV|}GE12zu#%vDg&EOlhg{>I`;-x<)y8mI1M>skkI zIlL3K>w6*%j1K~ArJ;LDKq zLiyypdpY(^@G(158j3T~`PZ0E2Bo2Zn9RF%-XQy!eSd6 z0z9={FwrIv4P@+8LAvq8;F*8XY+{Lk?E&C%d+}e;ZrH5>=&mVm&MBMMF9GdoPgG{N68*Ph= zOCkWqPmGm}01@d9TsZyTw(=liBIX>{8sUe}HH)#R5(hMg4!&*%#Gw9x5idVl>wtzxe}5#K+7JkLG1mC~j%z59Y#UhV!uT-rT;$EzLW$Hx*^Y&E zCzENTHdsSw(!q7>#@<9*TEKaq3oCtyJ?upi>k0`8&FtXJn%F1#S=Dn~r2mfNHe z`=?xpqWeJt!(tiF}?;v4Oqs^i^k0%&fQH# z#~e3%&2Fu1M4rSKoU5Zg2Lz3vc-uxX5~|euUZM_WFwKhN82UN@V7;V8X6lG$_I<{5 z5YIy>pUMw@%-D)B1q%+sV(uKehIF>e$l# z@ngslEDj5~2jIRgRHQ=)@qdHG+6)!lJ39i+jT`PqODi!71Iu&cFCF|}5^b(hzr-(BDn z`OS|U%=H%V%*F1=WmB22G8frCyKN^9yJO+UNpPLF45IJjb#g|u?bmhL3QZB8Rc|J{ zeLJ-We8@c7EnA~HQM2Yy#mt%f?>|CVKKqH9>d!=knAj33XAVc4Zt#!xPq>xbPT0mH zch~>2n9hfTN@b%_X(j6|!W`Iq<1bsEpvnrJ2rBkDb3baAP|u;Ic`T8STIHi93$f{T zoht8ClL#__RtpxW*R%p_;=bSu-A8*Y*d!LIvPoM)gfDg#N>b->c7b~=^0kPOQ!jU& z;Ur0hQ)qY+{b*BfxF$+q_fiO5RtR-l8+z20lI9T+Ay1>-WT0@#FvYaH7Fd%8UlRa3 zvPiMji`~Oa9U+?9Nq0l6BBU2|RDz_nShGvC$i3?2`dzBpOD42~T5D2EVSH;Xo&>$q z^(WQ~Yk^LyMfX}QD|vcWYIjy#3oX5B(+$N!`OjXi!wnKAT7v5}ec6J)0B0tV!Ex@v zXcKx)(Q2%rs+;ItWrteC#u-tisv)-(zE;>;r)En)XVy*UUSajY12a6BW>amGWJ&Rm zVLTMkll*Q;8d0-Hq+N14E~e3Jiwme~K-xVy8&?59Un5I+CJ{VqbWtrUz zGvyoOC_nlP1+GXh6BOr&=y*`DVehZrLKn3hq}&^_)u@ z#s^L_t7!sE;MwD5H&4E5pqEL7voPkJo40XaN6_cWD{bmg#FizhE4=E2=ng%@Sbf9~}D4&*3*NBj24D z7M2cPQ=N8HiDooqc#7tpRDhS2w_P-rWq|UD`7bu$$6(OUJySltG}{Z$_h;RNANl;u zQ^CQSdupf#n&KC=SynR8$h?^4p5Fw2bIVXkFtZK)bzvr6@>+8bS_v~>OR^~;g_cZ1 zXXK6vB=cLf1udLx`LFO>0q=Q0*1^5@3!iLU!-z9Gpdk(Cm+A&LhcBqHV`~^Zhdp%@ zey)0o(8x27R=^km#t7(T`1x-gH9pq=G#SvgF1w8bH&jmIQgR=XCe^f8RQqW3*i zWR(}Na((2AN!E4M!IZQ^BE$uW4ojcxnZOaJipJII111PxOCyzT0P+&^TH$pLQB#8) z%e_~K!Kz~NAahyaM2wsGjrsN}#fZ!wm_^$8Q6x{FxfpYpU_(AJe^)0xI zSX^B7|JW$a)$z$)NowSEnVZ_MwRgS2TyjjJHuAK_d*r&ApyO{;+okd%#JhtD3aqvI zMLT`x-<0K>Bddeb=iWT2B799tw0D0oEpl}q#3-2ixC;H0;&=&i(e+7XZK@JOBkd)N z&v7H}fKS9hlWVys(dQH`xj!nanezoQ+!` zbT~`r=4uZUU4vz{#a6CcHiZ!1)GJAcYF0y)%o=Vi!a%xo%T*u~qL3=uYn7}QVCFhf zV(aT@T`hvS42b~2R^Vjbv~F_5++PPK3Gp;~lr~k-{`*|}vndkp{C>r-ls-H~uRlP{p$5Z9A{TZZ=kdI0k$KO90k9NDOFWPmG zuap%GN{B6K;?)q8sLGH(;rG(xfEWR=|zwrv$&l1Avt$q-+Lnhv|usz;BCGab}ldTrQv6 zRbb#1#XcQT(%W0y9u&rJcPFXxDWOa%cc;oDtN}yZ@#Ff?r`3nITKnd@WL9#evDFyj zZf!PYRTMfcH5_oL$qU0?s6uS}$y^`%Jp7G$FvfXKgUVV&g<(FJ%awu?_ zUVhRot?A6NUwI^P>tJJRUxkXDI9^o7hC-=+kX(3LUu8grRS;Z+WHpsDLBl23hUHn= zz~XaAsY@IA1@%@ZdhU!UJj_kn3Zpn(n@TS{IBA{;^>Cy79VoP+zYvRLv^i%Mx*f*f z#g51_f-=q540wS`%Vxrj2(%7ITwKRN(B6=MX}bz(J85ZT)ZgKcl2>OU&1;FDD{YBo zZw&Bk%B?gET`nb;7HRPXRV=tvFVV?UbzEf=T8{ognL-0Nt+9WMUCzBq7BxYih2{v) zY+MRXw9NPC(?jW9Yv}k%5WW(_rQCpd$1W+H4@QuUSiY&BCI9O8RDSbOitUWkAypf; zCYLx<3yrHw?0PAT_e8OUBR4MUR9fK*<^h|qwIjB{eqJ%JNxj>vs}Bfj28!KHC7po& zOI1iWV;uVCO=uwKW|9BEBPa)wiT^tK9x4^+(_FEVy!2vy~{yAo#74 z%i95>zQd_-V}6VU^fTG=e^pM zx|ew^25AZECC&02m7b-PhTQNZi0$fXCmKoGt;`cszvfYt;qeeg+zxE{@O(0RD9y1j1nqJK=4d+Q5g#Z*sLVF zse_GdlEENrsMa%LoCpQlsIWteh)&3^sUutxXXQdAv)^=0H#Q@=_1WyxCcH+eJFu#| z8U)>-TSqyNWIx?|HHVOGC7~L{xj0|iMO6IkwG|MGVX1xenxJXf;m2=;^7BqR8X3#r zRp}%kd-w)}P72mJsBH&v&sdH(xE|8AlwV!xc*|985o%$=lYX3y+*xX&X(cSk{KM^N z6MI_FLpKD)3DaUUz|=)d66PfiUgkE`u%a2i1t=KRM0pNaPq;u9v`y|ZbSk}qo9BI= zVDQh7io|>fjxO@6Da9Z2>(2~0gGtH>4|o+)di|9mQ77gP9(R&^xMr`d7-i2tIL~6wT9mVcEo+@>C+>SH})J27B7=%G8!)HJbVDb zya!+NWB^&y=d{ynxRA7~WX{M28#wB)hf}bB)_Cz@e1cZeKQgP4K*hE37OJNZ8&dHf zEq`cUQLAMZf4BOhUH>rT6mCl6mf3`hKmNe2%WSOmMCQAnbblk&-#DmM-(6AtFK|P} zEA_gIEK9HTizGeQgh+4F#7u9Vs%M(irfr$Cnvf;`xz|%l-(NJu;_tdYio3J?x~oU1 z`Rj>ML*UEM3a4%%YK%EGDY*G`xZ<&~SuQGWQdNPbIJ0PNA;DjviKeCZ`n@9;zf~&f z|K@$Id(-Uk`vD502YSJ+6LWo)hu2loYEI6{Fv0?>LXKoaF3&A_;VhDgpE`-HUSe=E z&jve30St_8R>0PE2!ty@SRitlQq@Wh*?_eXro)hHEO)cK!HhrSO5|FlxMzj!KZqaQ zUtt>0)Wds7;CJTD!X~5J0wGlbfHHr3qgxiA)^UrAMC^`}9`GuS ztb%=uSThNEwaft=BZB5KY=as;djfbD7|)u_lS2g=RHvaG+Y;Exmfd>ZsEmJp})LdC}sbe+6mD_h8aR!znO-#`MeLt0Mref|n6|92>6NU{;%677-BT*H_l=7!JhN%lYNcs*#%?UOpWnL1X`-) zETbCGTWl|xi%IVxHm)5xvnU=W(_92~@4N}gEeq#N(e!DU);(0FRHdPjXhajeac;mj zcw{?{P`}3AOk}v4Tj!WBQ}gQTVUvRq>^SW8p>{qHK56$eWYO#YWa(9^We&$B`C*Mr z1PX<=%628pxc2^3Y518lD{%8BKpw7LM17LbGN2c(>m1Z!1WR{O z7>dHXl1iUll+1+<*HwCz>lsmWg6yV}Rfby7id^PtR$H3B)~oiUrj*>$r$sRJkX zneg%_9Mogg)l5%hIu;s@gmV?oBM#Yz9EQ$h%6?tD3Fi5jsWL%k zCRJ#v`v4@LkzSmTo6HTsg;J9x>GFVvj(r-FB$l7sNxB9uq1ne)j5Rr;sD&xS5%lvk z^KeC@xx@lTF9)UImA2?-fMv#`lEmkJDaCX!!~^OvV2~CDV%Iyh?WSbgE*T?;TyNtn3WpzD~;{! z*AP?&Y*eW#E)^9Np>r*Iv0aN6DZxd|D;7!3HPJ`l)+vE28Kd%tsefi4`=G!7iXaN5 z@3LzTcZ-WMr{8$6n?Qx|Q`1%E`;?lNpoI69w}F#%cD2S~+MQLce6Z*+O30e)3h~ zUkMl6-x*7lwGpk3aLjz4Ov&17y6@sozPhcTeXwiQ+9@qA!{aE7f;P-%bD{PbD^tyx zNd&OW*N^ifymR54u4Q1CoZO)s=&WR$-`~jw(VbT7YVc*u1h$Q9rHd*rZes(v1GxX&Rxh2;csR!Sk~$@f@$a#4qRnpEVS6=0*=;%jQXS0~kHxw2UgsIKZKVnexlu|xPd%6l$} zo>iqxcS&?Cu_f<&&|KJTvExFFf*{rh1Wj!V6UAtQ~15glXWbdG6_^&(SmNx36iU zSbnYIZk}uKX>)|lGZP}Q*7Nt&{hM18l^OZ_O0PB54uu=ES{3~nVrbxtJ{Tgs%Q3Tm zVYeLSZ~?2>Z{G$gm%TyC9^4>>UH>W9^P0I%**f z1w3%i(aF01b!$cTY$G+2i$0)3tIVpj65J01f-a^wNOrASgvfxk&j`^5LzVZGmhO#} ztKej3Q-N52Hpn8w!<6@VtoTb*ylMXm8_&vJ^3Uhlhgj4Rk~NH<*bSlhv`&erU3W3+cA2LS9KpFE01OkUF7^EbQS23ov5Ahtp7Vo#GIOD;)YY-L;P( z%vcNN3yMnLHQvNK$%g1lcKJGHmo;o7%BHxm8$M-kS`za^p;fX~Z@`beBrV9jsi z&m)&q^CflmlR8-rO78Pw!!SAx?3WU9i`{!!bnEMK@4t zJ!c4zOC1dRuDET=RaBH&wb85^25_{i z^k1QNx}1Tht9}ujE-cxqubmV$A<|tnPd7JGmSIS*^Knu*MG5=_9XwV>zbe9l7tTLr z3h3!CA!@thjUs`NW|IpkDqr61#3((7oh-Ig5hC8hg3X*sQ?SE`XFktSf^Q24Im*>j zl&Kq#Ny+s;u$-@|l-hW~HTCXbW;%1FP(Z4GmWD4NYH+vTNJo&S8qsm{E0<|-`8I`3qoGE$a+fvYtHf8S1A#ibc?Ie}KoOSPlu<$lJXx&@{{-1HSu?f_#;` zT|((sw3p3(Rh{4e7%W=bvNC&D(mTV5nKnJ6UXP2>cZ~22FP(jCvNguyFKohOK@ zxp>`?dPv+-UpR%ggk=-fk$esj;MT*@*t=EIrEw_y>!1IBEMvOabaCX1w;GjhC^v@1 z)7}2bpI276X75?$Gh>Iq5v%aN8O40|5%f9m zt*-z2`syJ!{dJAfHO*h=CF=m*N32e`mHhVnk8!eOg0*=_>4nCT-&d(4$M16@-ZGG;>U}OU2%!sB*v|QCQpfcfwL4>8 z@mHijs?U~aP1k7YkIaXXaQ@d0zVb*R_g}RD!I9;1{)D(T^i;1Svef^gY~0{ zn-voeWjVIoES_oyf!i2pvK8)w{xJGZCf#)vPxP{f&v>WTS^rE@Exfi`&}Np|HO{h| zupFD1VL)Ng-F8lIku-h8a-Dr~_2h?f3--t!%Y5zNS}d#9Vq(v&sroSN#Jo`3&pN9@ zq{X&n@E*yg8dY0bEZWanc-~t#$E?T60U>{eew+g?z-#Nm@iwTC@&8WA@XAppmiqrf z7Zprk41ar3Wne#zM$ie9Gx0xZPdz_&V0ULEnlM{yA$gxpTpF6jc5OCO*9&p4fXb5X zFozgzsWwm;I@%T9YmPB95;>}BWe1nJO%|&;D{nf)8hx*BKNNur2<#Yv0kPWHhCM$1 zG$PAaW>?tG(THYyws7byX26H~q}j#8v9R5w4)5(fU93a__|*MPuQA{EdwWCl);KB4 zCSF=K16AScYD$_cO@o1xzC46md`lh3>iqPLQvJC@8+Fu1ZVdel;lc7$qa<9fCZm<5 zYpzuqbhmJcft3>NEnk5q81hMm)}Bj`2~YlOXonj5pG@sTUde@j_{^|gg&n3(6sV3B z^9E*m=D3m7p5dM`$t5Q_=p=itgwM0jJV^{+l+BcG3|xC#85B>~F`!jq)VizfT?DDn z@O4dgWS2uNiqMa(rJAeDttvcHm{`FssHNl|a#yzK=&$uJTv72)>R7iI`j>5`_Bn4_ zSCfLpe?^3$QH9+1LCJLKcvURj&a+IPyy^+3Rsz@LyvVm1m@wp8<-qSHAtE-!?q$hG ztq~xAmp%bEY#U#H%NjIhuE6+V?4CVaC~>mQ3rZQ|BVwQFRLboQ4FdXWHRVx5RXEZ zuJ)ocUWsm`>y~MMNis8So>Z#KJD)5dvQ74K#6+$3RGVJTut)2S zf+oANoh6b7^(LlcNi@cgr@~+{gunil;%(RJ*){*Ah?vY4j45-K6vwNEcEH8E$n}Ye zee;ug;ssvGzR(kZ><3-*M*2=0se>h=cscP{=z=|+`{_8`Oo<((mgK{G>poPRj^o%y zetZSH#sTDtn|pyRcI+7u4mN^XeLeCv7ZSp^a@LW|!b}p+U&0af?rQJ}MgtDYq(14Q zgKT|0Dgm}u<|#{K8&Yl5YtLv?SOja~X;HZp<5K@k^cJ2a;ClnzIT#;rB8ZNO>@Dm8 zvcfhM>8vB82$s<-zz$Y%&e8|v2GmkgE4mK@>a(Y?oT4)i?VUctspL|SfY_fLBD#XM zOA+2+i7hw{1x51CDEqKTFT;%QEd92BFlh#$4UO=V)ju4WP;GzRK+&0;;ZHpSORHJ| z)t=1@fK=L7p!qo*Z3LGViDT-DX`iB1dvC>cfrIPqGcjp9xt&0&thgK3 z3Z;xF>)rAAHH`ZzO{A*GHi=#sjeOA8ZAI#R>(|tLagdMN7RDiyA*~I|067_b^s55a z8i6yWXUM9Zezcy{7EzJlxQ0$ty{O)BIek6=m6#oKQ0kdP7lxfYcGGr<5o%A`1C(cK zKSl-+89S5V;K;Oi>K3DdGhzIXkWq@SHnEqkyHeI`B(lia?5K^xrv|2epaoj}Ld_9r4S@Y^XF1NW1C#cnApzWg(*!3Y zg*jMB(aL-cdQADFG>%x(jZxBIu}m8f7F>lmgzP;1WrI8b+o zd-JGAEC4qQRs)b16!1~P2HsbW&?99g1 z=-q2m$ts{{Nx>&uYBVn0&^4+Y?$j-O&^w0Wk{4hRL&<_m>}`05lO)3^9n(|Es(WD= z4TJJ%l=5qm>_`LCb_bJG0!ah=uAor(f<`a{Y|tr$3Tz@{DpP3?CN05fm6j7b%U5iCx5kB;pTIQ(0)>DJ~+Lx z9Edx444K>k9-c=GhaKPSOWu>rL)UK*Ohu#KL<=v?2^TnI|9SG7VPP*mO*oqW=es7| zA4?`5+s-BV!l+DcFUCjl0fQ$AyM`m76cxOW)C9dA4XqqmuhU17>fjPhTe+hqoc%0E zYMq$ySyo@oIk~&1MaV3j#-bl{7|{7OG8q z$4Db%rnVB=b|jkFIRp#QJEdQu@Ncy16)86mIhpY8-EU$;@Hnp7BKz}|(J z9j=d{|1dj2V%F4=9YVrNK^NR^8J5nr$O-)EIb%qzwS27xSw=XpgxD-rsAJ(&nOVx2 z)Q*oJ*OotjFVze#AK+<2bHWv=VJ*BU&bZ*DFoRmn}LYr z>cVSdnpj0un`i@lR>>^K3AN`HB1Pq$(a25h(@-+XXdzbefh3=l&mDnU0LoGbR;$Q4 ztQaQhZ;>ocH|cgnmmQwQLN0>9f%?-7v!9^2g6DyOe$_b?VVhnS1nak-En%f&@8U1o zZ8}m3$TaQI9-vg2-7J?@i6juvj8C#evyXDex{Q6qMCbq+s0(Q+3n}&A0Or0R7Bb2^ z4jV0Zv>nK@F-Wxevn+vce1Ix_uoWqq>|dda=Y`6SK{gEypbXte2LqeHAz;K`t?$Ne$awp!x&|1>726pHUBrbb2iDd$njuH9sy2Bp{6NyY?`TR{vVW=Y|njO9w}NO&Dgo zYl$y(GGVr->S9s=Yf3>ln!dDPy+Qf&I6OQWhC1;qF@J%)mB8{bJ7F91*A?zn;^u`KB* z!>w@PAxL#i$cnFWxK0uy=1C2=l5bB?M8mB83Ag^(0&pC!p*7A$M4W$56iq&BrcOi4 z!XxGKd=hL#qZc`B#UTMDAWk#u$5}2Zhx+FeG5|hprtUeN6 zR%i*ia=#*9u6S}fvK|sGeoApKR%udi);;MH@ed@zIb;B`!{Z6M%Gt?$eEo>Pw^oU@ zHGd@Eb5o&dy2KLDMj!zAF4--veIhrzO480rjzoER{g45=Gm-IIC!0&U^KT#dVoq_k zkMwGWSdyLt?y5cm_P8lo9Qwpof%{m|s6w*FF)FD#!XI>$`NpZCyDMJ|Ne30dKw#chwRMe$@mvFDj7v#>*{8 zb1-A}$956T)W`Q&AGUk2kE>lDU5FGK>lpgR2l#=>Abjvc`(QqguKtWmr&k{>Atq_Y zv0<|FS0C&k_BLoi$r{QL9fxJq2klnU{SGQDC4q#lkM5#6D0^Bq1S1vjeKrMAg6@;g zEXgy%#HtUX_{KZ1gFx~i+6f!jV_}eb05#$IvzAf*k5@c919zeQz9%eiTGxmERz7<2 z34V{f=e3_z2%CB3B466g;N_jq-lg2hGTO`i;9yVg2WFMOoQGdeGd_KGGBUsC^!%-* z-Q2OO3OSOX>0j>O5>6WK*A9HIG#s<=;f%#J?}XWb^QibnSyR zt!s#NkNrW@n%&n%z_oeu$MJ(nA1CmgwiU8!SibY!m<{7%+Emal+PV%6nT))SsSXa& z@uKXcYWv~LTW*_9e~cFwN$~t_hF2_-%iuv`4%*!1wCCZ>`$I?p!?WRM3Z=}T6m&tJ z$NS~sf%^5@j}FmVm&K%_IfD(<`R#-x{5IMlYmhGg$^+$tsc@`YPi>CaAK?uiOW#jS zI|mF50c$DRct9&*Va&0NYw>h_1aWsBrY0aHFK!sTyRGkFH1r}*-$q74Trn}oDg~$Q zhAy%l(_t~7r0$m@TEk-V){!e`=hwE~<_LH6$)U2tfk99QYkm?oHU&5hes<#3V6B+Z zZ8x|SWAzX)B--xp44^z*#x>V%o`_EC`t(V-yDIxXQyXB3fx=r%fCZUJg6?r$eNgE2 z`i#Q=$^&6x)mfqfXg2%IfC&W0crUi&@_-39ZVs}Aon&MQu4Jdc>nrcTjTU+8+;*L2 z4EFH9isT=yUAV{KWpSxTbb?HX2+1wkh3W$QGU`9s5NCWJK+Oe+vPYlAwwLYzVVKaS zEZJcBK}XC506Sj7ZdjjF3Bw2Ah!~FJdS7iSI2f(D1*7THEcZ@@OQi4&lREIq4z)G;#~ z1IG$K&YS{_*_rU|$C(%f^#W>|4Lr5WM#LW0J8~EpXPwv9SjUjUo>*m-`&!(<12h|{ z(#c`%0LyDzslH1s z2juJc*-V&G?$7~M%>)XabA%nR_P~KS9@y%!I{Z33efeV7&bw42Z+~hc5u#Yhf!I$N z-r^=~V-9P!{6_;#T1H0pH0x^bHdT+H97Lyvqd$xeeZK{6U`+v;Ff0-kGmyemLWZ^a z;u3CmYg{>-V9}wa2AZ{+xD<8o03b})56{>-wTE*FpR7{KyhCLHW2HzeW@itzE#!898b!JB|*hVQhl!=4d{R--`i>cgyGC_IUuZgL%amhpkn3qrqSuyDZ)me2*8^i887 z$@9)j0v+88 zlWq80;tS|mC68wU*p8b=vf6pz2QORa3O17ScO6lj11CBJB&(i&p==;JuIEdGI!=1} zcu?)&g8EQcwhPmS_S(Lu%UBzlD0&32MhfuF%n%@p80U##WQGY19tcehpO_Zq;1M%_ zjrdq)KRh50Mm&s&=Zc1SNw9a0nE|zC-TvqZWf-LP24>y#)LRaW2QisJ9`+i4x**SO z#i@Jad`NnB@U!I^-PgB(#Iy8!vxXW92K38nSjSl#yut5*V?tSLx43gO!I>SX$aPiy zs8Q@8p8l9QrqIhS7Jnchg3SeCWrOx)U}rTn zPy&Enu+%?lY(m!Hp@ZBJiy5#Oi)nYD2OTU9gW)vmg9(FiW4f~j9;P9IJQ+;Kgo1Dm z{HtO4@D`2EjG%q%T0;ga!%|7GAeP62`j>Y{*^o78LLV=aqH)r4lOg6I02Wzg@a+m?kh}yL}y@NORNG>@%ql4xXWNo7z=5HbZdJ9 zwZ1}Sh)cci=?-W@$}kiVLC{R$iKo!QzHhetPDihIhd=m6MTMY|%{#gnWRTirtN#o2 zykpbI2uoQjfGJ&iw77F50vHEm5z}Su_N|NA!>V-amNvl!-l&2>9cvCnb3tzYFHF!7 za{)sw^fMIONpu*CYZ#|-Mqg(lz!ii8whGxPRhn91!bg>ra-z z^h@jN=#~|*&Y@JV_1c%zf;5JXlW}E;0e>+pWo#oEZb4z@T!JNjv;>8ot;ZJJUeGFo z^n(|QUPKUYQt`$Yz8uzr7Ud3KAS|-&VG(=tm+sW8fBv7)C#qZDA04q3_GI0fq5dXL zhg5G&AkUDf4T_pS+J@92tY68vLwLWHfgwedU;3C0jZt_T@8=hWzTmJbs6I3${Te+b z@mi&Y5zHlCzJs7zGI;P7}) zgbtYeM{~K|s*&mn6<3Cc+hJX)vgi;zw+{ zlW#<*6Lt#$+?d2il12!r6NyBrq(HtCl?prYBMa3@&IK?n@6atoO%PO31|uSBf~<+I z7D&L zx>Km5BP`R%;K&qllwRy{6lHar;*JcXM;V3g#}QH#yy)NTi2k5#RZg{x$(n z@8qhMpmZGruWW~_+Tj>IK`s|aF`JV9ZV>5!PTut=*anPq1|o?hAc`(b!X;^|`vH^% zYq_?uHBRgq68X|ag_`zhd+p5PVCAp=?{e07=!Ak@p=(Ypne>>KTc5t?lM5|#`rOR- z^CrTRE4}Ck9S30Q2kQYDKpJ6;iHE2%GKi;g`k(S7EHDRCvphrn?MSJ02F!w2=|dqf zaxBz?m-Qf+We5V`ty@~JzvUPZ7@B?w%%d!px;(}&t?coO>Aq?4Cfzv7j3MCBcaZyX zR9=5TxJi;-Z!yu9_@Q^5u+hyGN^VAN9`R&tY5YK#`ufSL?P3RovoiFVBlD4Km>Zrp z+>SdgaF`A!s0m8FxOsjr&nZ4}_J43rZY#9{Iad!UHHZ$WHX6q?d5k~vfV~wn-+)Bm zYP^KKPVhh%9F#jT=0bqL+tsV2|B;az9?aP8I7cnRj>*_naim|PX9;}Gw}DUaG-kNP znoCjcT{?)3B-nHzA}>VLzdd0st2u)(hi7WBr>e}3a#IOfBVVPilKs1F3htPcjHO@P z`ejs~P>r9i_!JB7@e<)^M3b0D3zp+b7UsSgjOE+}GgQ$0n9e>4h98XL1+Av1G$FUH z`iS4tsbtoCw%{%8Z>%t@hq+O9o0&onY+3>&{*0RZ3l6JU6;cu=sQj=G0JN8^(nOKM z)R4A*KT8EdM?nfUAV9FCe0ju>e3u|lcq+XFPW8ZxE}5mG2NknWg}=ZxgNuMOJBHoS z;pOz*rIl|J6^INZ<2qs+s|aX4$X%UM5U6ctRJQsRMz+_(FXzF0Qmm6-i>J_DiGG=0 zC}F!@@giFC?oCzsl$y4F+K_CoMPn)lS9j1L*Y4Rhd$iFt+Q&UC?YKGX!eeU997f_C z2@0*x&P`&IXG-yOuz3~}tDFJ)&89@-1}HR;!@5H4-&dvv<_`))=X2l`-Hp_nC41zS zEoDDl0|Rvh-X-$QkS4P2*`PD&4aud9-{PwjRfX5!tszc^Kx3C}$|IE4ajV7hSuae#c;p(!ONA^z%b8j|u0-DF($C%s zVW|^ulJF70afBwa@Z3xvXUH|Zlg6ZshuY$AWNspMWYu)r@@o%j#&(VB??WE@i|!V{0}U*t%vYq%u6*0IF1;pvFsT~dN^^Bo3+rTPGkZ{_PH`$HT}QU4N-7dfa@ zX3FLWz}f73!EJ6Yfz*G+qHko<$yW_&MmcN%%k1}_(l$-offc-fPI!Gt;og7VK+el- zdNYlh5qQI)V1;5gW5#CA+x6pCtE~cF_B6cd8dj*ls@|3pQl?WN8GuUbNC~7g`1rXW?-II^6mb zn6_}?&8zQ0<2xYs6a_}}@v>BQ6N_fI-36C%Pvs4Wwo3ORh3#M#&gXAE2sVpZv0;vL z5-30lMWNt9+*n`jh^HX(EpC1W zL&7aL3uoNlB2M?_X=xIik!$q)R0T;(YVuTTzeRIXDxBp?+hbL!)sCmh7VYA{GAAUQ z2M-pP4S#h`J+N9YFJ#UN%Mo2L)GAHT{xMDE-X_U{Tj3ko@7z@^qCCOB9$HQXdL z6JxxIoO^)Lm%FJEFY2$8R>b^CfUZ`?*eUIhgR-TvEyQoO6@ZwWvXfh?dXl}?Nf5}E z*AsgCk@~1ucay^4h9FV2TF?pQ?o|sZ0*~VM8LR(>I1AQv#iNF0G54bzWrvqL&Av&@?n6b{vU~fq|yb2MpaiYY3E$VRO0?ZJ*{YIeW+h@qQd9B z=AYonc$gDCH*#tmf=RDDZhstbIH`dG?Ra=Gb_|x8m)8bmwjJ*o7ucIgFP+-4E*ZOM z@KQR6Guf*0aZz6Owcs9EG;DCk-)1oi$hDFb)QP|{Wd(}`FQ`~Wvd!v|_^h22y&f96 zk3>-7%2GY$-j2r$9!0N!wq7c)4lHpOLjRvFlwIaFZ#7~LymQHQw%^Hv%G78L*v()1 zU_mSM_uQq-t~^a7Owv?Mm-9ft37Q-H`I98|5+`dPc0tl$6#E5Wqup!ZefEdu0CQJ? z0l$eFO=**SmIOG&&z-Qs{Zb<-LXZO2q*!C@e9?OwY~n;)&RQdkbHZn;7>(vGBV+cIE6bB0je;aFj~&Zg940>6P9cpW&4 zytoc+cvcv5yZfl>G`fKss}^`BJ&%OeVLizz*Ha!a=I^@xM_zv1Oa?%GOz)8=3spRwYOc*N}=0B;aku|N~c z-_bM|bRzWWIJ4%_PEqe1+}g^co;5F0RhEu;#O7;Zv~$I!PPEQ{bHy&o(`@|OS4MV^ zz(#D_Xs2q{Az(6P%B3PwE8@d^vvq+RRks2*@;k8VA7ucWMg(xEi`H*J)M;v$oQ>=D zRGPN&)SA`*Mv;Y-_iBexr_}^>GDt?xjCs>A!s0A}g*~PpCPv#)!wHH}p;dm1V%#k> zmNG6R3427ECUc62=Cy_%`AzDG+wl6}IZhlFG*j6%+_ym_7h&lWl;vkZoHtt6}M++enbtF$_!Ajogo}YT|^a)A%D{7tba8wUQ0JOlr%J9g|k*cV_$9m!fGwMB=dtB&X{hMO!hkqVOYa5H9(d&O3m-Ij;TG zF>Z6HXtS~+?>FV`y$iv^z^Gm3GgP+76Xd&^FAE0?3@-7RDzddqv=7A(Hhl4Go-LKZ zodXJUt{|3Icrr=Q@sqBo>-~vaBRBiQ5wl%!A825d5)t7p9GO#$^i;<>1Nz+>OlWX3 zNX`abiP^QHZuDrJoFYvT)pi4bwa3GV`T;)wz|JCeaV#+IK0&Z^9V`hON2THok3-Qg zjxBky#8JuWUf-$8AZKD?Oh(i5-UU|L%!u7NTT) z4WvjgnucN}tFK}zZ3tqvLyBg1@B3bu&wrSX6lbJIy539`LQy7rZ-ZRez6v;SFs`>@94sP?!1e`)uBgMG&-eQWfQykEN1xnB9|nig zuse%CGp*8{(7}UX`(AeNjm3{XO9mlVyM0U*fU1O*i*{cg)fnoRQnR6an z;28xks7ofzRZIC6A6lqOpLcl#1MV-lr5o6W7R>j0^rzjHQSI(f+^R{O{_Lp?^pk1S zzJ;%q_fgGl&_-vYn%^fOezeTonQV&DXe0rjgoPt#Y~GUphX|Ui@B=r5+qOPwoC`#_ zrYw-+lnHXsWf;Sl;Wm0~%*l71^0Aou83>Y{ow*wt#f&JnzK9AsNmdw5YqPGS$aIS@ zu}Gvq5AI@g=Usf29Rh^y`+NEYXyBr#>?a?Frw*gD>Ma4a@9MV*3Gbw0Qtwf6u_mmXcDB zAuHZC0^P2Hevcv+;;tV9=~-!dJ0j*`>$qd_8up|Y+N=wY<@nmD^0cbj=YzFacxpQs z1;tSFJm=6EU(^!+?ck#(+mu<=?sKZ z8T2NE{k^(Ujx(oI^V1Y_`zQ4E{JIF5`r&)kJYDKK4cUFgaLkC$5|C}%#V19DS$K~K z^hm^{T&qd!!{J&T4VKa_qm`^@J-Rf!uH{$Wt*H@hY_^K5X9lzlI?D0zsw;aoDT@{@ z;Vyq#t}7uxt}Z~m=GpaYaoM4iyJ<>);;v(@y#rxaaJO`Fx}jO%r`Fb=0V%sr&w2{( zXBV>F-UDjT(M@64*O=eemNmk98PkLf^CY*O*Z+unvfUaL?v_e`!ko#vtB5FOlIa(Aa zZ8Vr+U|>?=Sk2`OgmVxn5TgTlp<+`LDo%CS%GZoS@J7$SevT8de7DSxgiXfwEQ7tb zKnT8c$%Nq5ilj>%Cl?^-P06za#$O$X-00y1XJXLZ`w`Ewf;e}bF)ta& z!fTdnwE=>mDeh|78YrqY{51m>DXAJsdr(?N!mEr2dB0Q}keQ)p3fI8bP-@O(MeLm9 zm*+c2JKT$+Y4%agA0p$eFMQ*C%&-`$If*l_^K+@h6T&s; zQdkN2&Z~-Wy7G^%2|(j7xq!zc(y2>Y9un3tUrFV`CI?$p@$S;sWm{15S5*yr>s%hH z%94RgKGT3ntmD<-^GO{fghg$i?43j2>+(lsXD5>rPV8_ZjEKKYrYMyyp++BRXo@R%+E*<$FP&PC{4hXN7!>8 zrq?DLE)LkZ-loD0K>fp(X|?K<0%94Mj4?#cWgZg|%){BC%HTQ8r*^WfQUy}86N!oC z^fO^1bOq$aGvM>@2R+J0re#X=Dmty;oub`EC;i#j&E-6QYny_ZyAyJn#)&DvuS=o0 z;%2oLF;R%KIc=WdboSaRxfDHfdjkKo< zg8Y?GqZa9KhEEyKyjfymF7@gue9J=9LD+L%f3Se-R%g=bs6u7_B_+62Up}BZ z3hL~cx4P96Mv;x5y>%O>CLrvbceF{egy4jhaN$A|0cB z%p#TPD@uXJ`*r__SLwyci;>#y?r=&#n@XAXE9+)>qu{mJ-S8?DRI0u4K(7}eRuXs9 zQMo|=*^WpbvbbH)P<%!g()qv&ziHEDp&(EEbM4;ZLLb`GE=)GPpJ^h0OA`o`3B&nx z$TRF!th!=i_zo)L+*=@%6c6L;RUb@m#V9Irxx01kP~L?Fi3-Z4?biB2dG_vbst4+@ z7lh2W8ZL12A)(RbNdIhMl+)AvlHnAnEv6)&O`3IuS>|>m1G<#cCGpfZ6T;tFXqeEo zDTQ;X-G*U!Gsj4&Y<)Uj6mKEIQ3~xR;3U1LC1M9Te=vw1&EA<6^fudsqyV}yeWD#H zZbfIl0#CEG=+Iu#i#(rIG_4d{huPGsK)sVpN7YfLYxZ*j zRIJBYEOM*+D$57&Z-|~JEU&=q4pbu-!;UjiV_M|#it|~r5 zwdlAxqwlj=^0@2^x@ZD1mZ!x&sXEY}Lv;KCzm;I~MQ%rtihWaF|pPj*qUbbQui+hOxKi{_CD^d^N)-bclgpML{ z;LMlPz@Zn0{b9_uHQfZCa@A_ge9G5TI6G+=qa*xFlWDn=r8s6^B|4sZVKR_rH{sqW zrIWgt8UFL0({PedKHn&#N49vB)-f}a!J3{1TEA#|DsWBayU%@#CxtR*OSM)gUFEIO zVuYJJQj$R3yfSFHI@2A=5?2qbyYK;>SMcbVa!3I3qQpwTO-WJeo0jwJk*d7I3XZH^ z&D;1zG3w6#fp-_3>IMFG-jfS_b$Vl8_4!dHz%1|zj1u(6d?>f(gei?fk>ib#Eo^WG|wC7iA&x| zosNx7CuZlR<^IX{XZyQ=#R{5U)p1(wDXFJ-^X|wOm0tRtglz6433mK61rrsu#WO%# zWuhG(^P$U^6*qGfB<&omx(8Mvr-gL9h&2KGd<=RwclA`D-CQWqDS#5}v7+q>J}q5j zO!dsv849EDul++sxyro?@O|4+CEnm05H`i>D1Gli?2XDO2By|hf*zU*d`du-Z6EH( zow|BJ-tVn)YHQFq?M>nKZ)u=kYsJnNr}(DyG5D`mtm}U_zMy-Rw0J4n)g?qbmFfnP z-Td@_Y<)HLPrQm~!zk6pe_;HfL+|-bi;<8v>9HmC{H(VdY)3!sWTn$x0Z%B6~t z4ksHE5{b#fDmQiSxlu3Dz%3Vv$C3`2J4A3I7VAWPbr$19I-pQDr_cBA*h2`?=pHi2F^iz-jytwTBXBW`8V=>+~^-2BQ32bSqUq z-5Za!K?yRMF}_EVKm^#YCy9hyTg>by^#>%~XCG4}TmKT|ncApQRUOUiPA7$4q%^_O zcH&>}bFb%ye6(?h216k^h;75RQy+rW`NzqlC~fZ&LSf zX!DKToHR+<|BSjwiYt8A=3t)`-kT(6d3SLtFAp25MLPfB;vju%^yVN}bLGupMhUF2 z(QS^86m}~{6+B&i0{ppR5;)(f=o4kUe;tZnk52) zch?IPe!B0KJ^uSJeVfCjI#<}J{9?RO+UpUg)1@HI)!$biR+D`ub1oFVr#48qDS-Vt zy&$Xq?))w)=xO)cWEnhOlB4oezG>B(qT}~!?h@%C)Q+0M;?558q3*$CNtaHM8` zonbH5-yt;o_6T`43|pJx2w+)kys295*ir0tcg#j(!9smDLdmemu(64YTMbE8oluN`)`cuMm^x}o?=O7d2kE;&wK>USKtz47f3gGlmv4S}{~We_ z$PX^$0{^A;C0_<9%8kQBpUUaq490e_huwM`LhQHpCf=7YW+MH@0iU5JTI>aI{SHD< z&1$|e-7d~t%6)rIewU9;FGcwjUh<(FUz-IKPa`q_`A5V`rb;O29GOPh&0K9vm0V1C z3e!ITXp{%_U;H=2wHxp#?)EqXcbmmW!`@wsuj7qAxdc&uI*qjW+eOU1zrU1zXHhr* z#^RjEJ=2-`Y)p{9-+uOIkMh=Tp$3mY13x}BCcq*tAN?Ob!-%z1S9wjBRGfmSsxqyX z(w%OLkUhhfoC@rTMQ^?)m$}GJD*vy-{(W+bkoI^@$+AfWhcp&@rrFTPYz_d*Yz*;! z`nn{cA>v4qo=@8{hS(*^1 zcmM1jGc6m(AoDi&ToEvs?iE@#qtc zQUh_Y6AugOP+0}Eot)X&iGm8Zvibszw(TSL@49#+v{{UCcROb^1n*WMY%P+WW7jJ( zXEXDXGG2FTcaDAt#l_^8y2^Zx_giXX{wUzgxja^)U6*I+z-vb?RP}y+nVI z{Rfu(W@_-b#!LqQ%N5Ds`mLqV%0{XTEqbzWs91-7Spt{YBmJg+zQT;JeQ{=fkYQmo zHr$c>^=FWFN~NDJ!?%hu7qO#S)o#BZsffy%&34J2OqP@fs<#mPR~fME@6vqvnq;Bw z)ydR6F^2Z@?MLsi*&r*i5v9~!qz#Ooiaz^Lgfm-|u9xTdTMU1}GoMTSo=cs|dV<%j zCmW3|i4+_bsgK52aiqRAJ~h5JJ~qBLJ~zHO{Db%dN{_KGx~HKB-zpE@WGboi)w_bq z&uI$RWe6U^70I*)^g_1;oXccy{u1c8C-yT`%S7l@*^(26BPwRSUvG4Z^0jQNaC1rP zfThTmfig4e2SuG7T^qU!O&oO)$W>~TKl#f62RTx7m&IzLC^m@4A!C{p)Ey9~AnJp% z6$Bm7ctPn3k`HKA5PU)P2lOhaRnV*VvWs z6dllbLFk!a+A~I0)XCokiUL^1L_mSo{7)1trUxYv5M!DrMSzLbM1Uu-f*{BwPWu7~ zpBf0BWJFI;v*L&F#Bv#|b19H0RMMG(%5*A_6nb$(DxFGd3S+TNfofC=ZVHRJLoQwl zrGSF;Q|?b6;@*k ztS}%)bs@AmCj140hmz>XAI5r6e4~4yGV-45l3l@;S3KC1D!?VJsp|b5m{|sv3kr_k z6sTvYot%-ZFJ7{q3PP*NbW}4!X}L)RKrsAG)2QZv#hr8DF$Q5xmiNU6AmMsCNKK*) zX*a#Jl0>cqX6#Ne^(-zF@8O(Q$B*wDSHamgXW*n1989}CWY3tgVG|up@!a`EXmBaQ zaa&`jPMEvv0GRr}dv)qe;WX-#AXnxtHgdV0gy1xf+(!Qeq)=ZT>wbr7(n;zPkGG7w+^Dh5MhfJM3?1o^^T!z&$gmN=$ z*L^&xl&H+o`pbc-l_<9?#50=TN6FvmidzRL2#)wDiX(pMGiS0Ly8n z6DbR^?y*DKpA2fR%8$BEGd}P_Ws#6Jh;-rga_4W8|jluWoj z5=sp+(Dy$Vg+jvbvAHHz9M1fqPA+?-ZP+ln%rnANt9 zFNrB2k&|1i{O6C*bR&{7>v)YFmG)|Ol_NH{ZH?hC&}K6U8TGo}OCtF!&ZQ$pwCqM1 zdCH#BH0yX&m(}}P=NThbwK{8zzynE^oTIe)sdQByG%Z?|G0WG@ z6?|1Lt-J2o_9*eRy$+gi_xy6^3H6;zgw0>VsRQrVIm27~N{}pz!9ZB{0L!qHG87LGn;BtD$~CElVU)DSo|V@&x|u@`xQ%=~$Jrq$AK~ zJv;usa90=XeocU?8H!UPr$6r54o8V=enC=%ot>(2EYKI^5?E-x3rj!;?odyO~J^0_fC zhvP#kr!VgDZ^w^?-K|=9^lb8ClpFRLJ91}#%Z@2QpJN%9M(i%L>1+L&8MWXdozdLq z6FSndEl6s3c{Dy32@xmMEs@H_iE<*G?TC&*+4r+hIpUc#fmxcIf(A9&Y3LZ|ELyr} z`uMO5>755+*ZSrZBQ&=e^FM4%GHKCeW`HxJpT`M>SCed8wXk{6g;}}VLbg_QiW8cK zNTt1p=2XfB`ABaH*LqF0D~;l};ybHewOy7stzYAT2A~6aaSZk!hG6y(;8ludC`;XuY3KY1$kFIz}aXqfAlizKP{=eR8ihWUl+%5)vct z_J3iY8@e!L68&w1h_)5ZJtIWFeJP_psXG9XreD0WY0ue0{L(c`_fnU0`nFcY^hA{L z6d9S7P=7AHYCjN0k~IRy{e{!4i!z{Nzi#|Bo1Gp zfK0qgvzcKLsKU1Un4u-N)#Q)@2NY^4uKDEGpmziH1^NST=F%3MLyT2zD?Zy9s&~4o z+a$HC(*`8&M{YbMKK_WO-!w%TqK!|%#i$XbTH5<;OfN%Upbgj{4zx-tPdO9VJCfHd z98)DBD+YyN$l*Hrr@=`BE+}SIrDrkPX$$iAj7G4GcFN2BLdN2Dj|KR$8<8mP=*X$d z>`lkLnunK__S;jcb=&P0H@~s5l-WFQ&aiAodi-Teoac6@%H)m6jL>N zB}f7@<2KcoynyNSO;9UpeVUyId(lH7Hvi)IkDydn z6HaRWP4g$WN4oX$v!?F@8hVWUPKSgX|gH@zM(8y4W_iLI= zsb-!N&-8!mNH1T3jzcSRAifTE0?S1&g7B8L>iLP#R@V2J|MT!z(jR`s@a`cV2KQ?C zJ1p^)S%A7Ad#!!K;Xy_RxhP~X0q(<`+l@1Y;khas-R5TB;20?ibTSkb-CS@4e=CuR z3vD-;gWdg-_VsGqNTDBS53znoX(PB1@j_ABzq@A@Pz#JM&sKuI!UTY5kS0)Z|18n(4#rSou z*9Cv?u;Ur)3k3SiOww-5MdoZ}=)6+N|`h4k|=5bK4yYs|3+g=N(m8!LwL-XD_AzXhQ(!*IPLRN%cO#&O6 z+!;+Z)YE7cKDGerb?#j|!f35=%bJV4ejYPBihGzP9kvGz2U}01I&6>T=@E&wVdTQ@ z#FvoF0}KF zyrxjp(RS-_nmgaqoI;$@0C$5{sSFEb@p>w0s1g(s-f)TGu(`T?;d?1{Oe)+gX)Er6 z)9dVM_ii)5u6+Lw4RnyTn8Qz;{JC(F{j|UkbaHbMY3!&B6vAxUHss7nTloam^Cg># z5^p9>aRT?4b5JicZHi6Ci^DXMU_!b6a+7N<@?uCyc?%=z20gt>AYTulqo&Ohbb%$| z^mEGFf2LQP~(lwT3FW3fmSEs?7Da}wbcmP%F?97QGJ_ohpZOVWWgi!9MM?#@2& z%Bq6~Dj@T$*9NUB3S5bvc>Q{$G4z6joBIzZ2*RCrsk?|&4LL43=Zn{w>PG&vFe-*Yd9Hm@5#(9}f61MHg+O2To@{n5jvSc&g_1&Ph#cbG^e?rgr zouT2?9tJK<)pz;AZoanRGbLO9QJe*1N97EJ!4o$B+_Z7gkyDDERLvaTGB~b<)HIm} z%~Q^VGNBK)2mw7Ep?fc!IV zAypA&2SQurkx#v9ZD<}(HN{&$^>>=QF@H+29qTM6WD7V$czvlmUdBWk#{>{9yyoCI(Kt{9|K9h=+`F;+vq zfm#Ob+688As%QU+{yf=_ND!q;-X*G9`Wuqu~F~+`NY$S=5>lcMXicV zem^Als9w?KT%FwZxMeSJ%|fQuB=owa>f;wvl!2TcWXJt56jZklU@HHNWIu#FVBbGX{7E&5YMpz~yZ>yEqr z>GW55tLve#-dV(+*9nRjH;4^@t}8|B7WCrlkr(Mm7iY4W!aL~7P_EZ&4rCi_(gyoV zF}kZ1B*4@jI~$Qz_Y8yiNmict9PiOxM?-l03>rn%yU}G8Ywl@8mv_gspj}%h!l3Q{ zTA5VA{H?Y$UFKadh9`-PlGc>%qw)Pu3KKOP!f^1?pU!ynQyoICO7IUJbEOmM0Qyi+1MR;<{zrgIbP?yJv!Aq^WSw>eV;@cb-}{ z2=HF{)ZJrsxTgf#jSAy+T2XKlT@@jZB&@4{zZ@&tr%ef&=!cuSv}`&c$4I>ZG!dt?>y!B?r@Xz`j&+Pw|oEE9u2uY(nvh`AMeH`4YZnD z*L=0fmXu*uc81p|B=IY>EL0MeTR#{l2t_! z%ZL6`dmd-8!zzn@Ml-kJgq6+r&MN!{FK*jXB=6QIih+2g?g$w5@YK+mgi>~U;=b7E zZB_UDqxPY^JdujCiENmGYmoqb!k<2)4LCVt?G-4|B>x;mM_4iZR1Vg13OhLU8k-_q zCtU%Z_?V>G7U#6)Ot?s=sElr`1->QoGM(xhiP0Oxg5GwNJXL-Xa#wqTZ^HI>i;uEe z-DsIzh*p{9qqYxkzAf2}+-No&jJZ`4zSGrO+hj>o`4KsWp zCp!6;BU;F85@ZJg+<|cXJt(-et5nJT+bz8S*Jou^l{~0yHuGc9MCt93Se41z7vQFU3^it;NsVFaXJ02_5 z+e|RAI>_NA`7blfjNj$5y^MAy)rU*@$CRw<8421%*R$2+ah13Hwu2#}z4o0NUOOY8 zO-?0rpbgYYDU%Yb7b3T1OQwr1hd10_c0I8&cTC_el#x1|S9j{5?Gr|FjxbpESW^9kJmf z4eNRQB1?hHe+a{+Znps^X?x!>bJiE_7SwwW$!p`Iw;^&p-BX~i z8~EBG#oj~zkhd0y})h?`5m8xj|?U1<`X9I_vpgRBB%xRW5DKT*PqYPAcodAw| z)<&wLW4y=ycF0#7olPZ&ZZmMmp)_m)FBAFQrqZd8H5_V%={+kLlOY`wLAj594bmG< zR%l7}*!koRad?syeSh$YGWXKF(LC$=r2z9sYyimH@V=W+x~>-S$XNx~a)<0Mh2T|B zKhf_c1E@NjvHR$7`1zD@w+K9DBdJ$A% z?|l8hlkBff$Q8EWr?ftDx|Y;a>QdRn4(C@Q5HHhh#2{R|o{ao z>JZ}VB7x%idji`yxUMoPYyRz|(HM1?Xz(Pv?~*wKz=_9LOi%_yL?TFaa7bsfLINP7 zA|e8UqM~b59RfF1Gh@7e!Che$b=T-Y!QLKF3t_5F`8tF6^KO$L3U?eR8y4 z^*~tr5NoM;Khf8Yw~vcT$fBdu^U7c%S{VoXPh+Ag9nb#x)n*)ZvWuAdcBOKyRBjKa zaV?asN7blHWhlw?_$9KFO!~EnY@~udtU_BU(~qYSEtLF6(Ly4bSpCwD)~a-`In z{X&qRTJCD-BcgTh9#72e=d&2-M;$}$ndV|8sBW1V%bMzO z@VdT(vXKYMFCw08xmsi$G>jHLGPh1C>;7dX8FYiCwX=tyCd^-f`kbdYrg#YI&^_mu zpY5NhkX=_2U(~wew$eY=aqJzI_0HW(48POPR*3k2sY_P>|6?I=A8u4j?owOd*M7{r zx;Goo%2U#$Swrrc|7VBRhN;P3VgI0iPCgIeUUIAVAq`^%OBL&vK5!{k?rWcZS8(nw zrTr6~g$P*wDKleRDK51t|NYH-vLDusp6V}=l&g)K2b%z?s*SyuM^PWE!VYr^%4Ytr(ok4=j$? zCWN2*Z{SogbH+U1$O`huCoU^OoEuDi37pQ!1zJv9_#XB}hUeIaHzg>XF5sL8sxka9 zzDe_9SD=Fdl9LOKhIl-GT)D8^${@q*qQjU?G?~l~CE7XZ12r)|nTB6Nn+aPa{R4Fl zyKf9mwG;`0l_F+c&uA6gVQHYAJ>mFd98)h?d#WOa;8g`=_0uy-6 z=W3Ve1Er`ZJBMz54a53kJE!7_4M(s*R;y6nURzFJ7+=UL(D0$ou=wKCuwX7{ICCGA z)FGaU3T~cG@J%*@Yu89-8icTAJ_I_i^aLkg)EK3ODFRxKi!t9Q&rn?(@n+sHBsZEb zvf$@+N!wxTkmM^jm}W9BuvyG@#vmxWH=EAi&l_rHiz9kk0CjN$`>M9lCad+%4R+pGa<}y9s(J3& zb-hst8@^82@Psw$=7M#r!yPJPHvl-Ja?kSG(aUrIO!=Fz{|j2gR{6yrS`le57Pze`{lUb z4@xX7w#D!4Q>J#1po~m1Zw>uqR)8c0!Fk_=f{Cg3S?`b>3<|ec%4kJO*Yt zByxAKn)Mv;q&s(LVh#hs?0?3@v^KE#xM66PO>>aAr`1&;M3M-Lnk*-FU_s^`4I zwu}UL=}YZ{5qOt7VF3g8&jMM0D8`4*NP6EePq(jm2#ua1JEp#JLD)g;PKNhl|5WgH zadaVWU1~WrM44??#N}DGWFYlSm|qRp@wjbBJQbuXTvup?rLKgri~qDwklY5n{MLV? z@vmBv!MAIRHcq}_c{mh<^BK%$D^Bj5+zo`oa=f|W{%Siu%(UqfsN306D7wxP4o&nY z-J@(P21u6*s81Csnm;Dla`9vhb)w72cL)k??-1VF!^Z=+mmpDzh>!>maUPncQq1s4 z7x&MT^?x7tp7FB<^G76g|4TSS26WH8xmF79jovT;V$#hW^y676e#?l}CsMwe+4w(y zQ+luF1@h4rb-!J9re?wWKO6Afd`gG2q&aoP*cN>o`Ob5tl`ZEOvGTj$gZQUS`3{|j zt^leF85{2LFlB10MEhUk!2Y1|Qda^~rmSLD$|Xa3Y*+loacy_h=Cf#`lI|c$4^`9T zOK$QQs3@098w5seehu0R?P~h+MhFaMV=?@%SV`D;JvJ-7|7Rw$60ENC^Fb6n6>&6* zuqL5aMAjz3Hj1>Cc6Ya16L6c#8LkaiMP3tttKzTG~&+0Hoqw}SFFC*%S$5y%j zhI8FqnH_5Jz%2+$(9eA^zu(}U{()rzO;vRmr3(HY9C~DMuj9=Jk@A=L{KDSq-g7sl zZyowq!wM@Vl+{hbmAST>rOI9sYPNz5ND@{DL+RZRzq7c@Q-t zX~*+mr7B(`Ez2mfvlxDy5RQl5Q;nZiIrZ%x942E&Q=TOP9MhW z_p`_8MpjZA_LrJc^?mA(Gn--})c)G(vFS+otE`f8_7gi}EAa;pFk{}+ndHfqJtI2C z7gAEUqs1v-0=xfb1O2G2KSJda;=GKEsE(>F>T)l)(mz(X69<|kluD&utZMjMQry2O z#|#y{5UI7iOL#p>S4OhrKZ~M!sngV323_rtd93Wyuq`QGrob)gE3 zmf4W}GG^zsWSgBKU0aqak3Y6IPv=fS$CL>-T2j7>^29vBH0jk5u+VqG=y|#y$sqsO zNdB_K#l2Rf$~U~XwWLCUm!fx^Rt$%)uW%63#w;M;Gs^pD`ND@(^dnY#1C8>Y-(39&e zm3Eo^sN&WSQkB}N2TCJha^vFKs5+T#_qc(a%xtQn{pTo(}t{{~kcU$E7A77r(4r@oGYGBG$-bPCA;-a zuaMsSJ=^I5t6cOE>YOW{OT6x3$C^8ja;6SUJ)Lh+R;#V79$@y{`yxP-T~%@m+C^EH znUTJT6Cq?0rCvUkx!5wP=!H~Jc{nVt-D{iq{LzLM3`;QcK$5t>^=9d*^8TMKsGOTf z2`1Ewcs)&<`(GaanuYM**P+Ln1e*fLlUnC+euBNJu4H;qnmDsM=l?nr;?k>pZDV5rBkttsmDoG!$GP39V!4<)@4@G2`T0*+lEtGmu!hRmC zja22hlx5juw=HttlxWK6a%0V5T>MZZp|qX;Xs$t@6%4w{@b^I`e_6!+hoZNYmXdYZ z$oJvqX6}9bdNgFI$m~{0RTgDxkIcUp1j9+(PJU%+dkGD(>eGspuWF<|7P*4s(M-O| zJqYsE82GYd<*s2qdN$*O(hoB4U((*#@;hhR`1e$e)NKAE%~@TT{Lmz&RZCpK;tu#Y z97)Bzkhb08hnhQk!u>m#xI)Ep;#bF-!nydMNxL6QU2du9+5T<3d858+FQgvHQMlJa zv^40-q<)IYH+n+4*I4|3@m7lO;~v(i_|=kc6xTNAmeGe!70)Nb@uOd-FAM&Z-Dg@+ z%a0%Ow=D7Rj>*Sx?X;a?yL@M@f(1pUEFw3t+fE8z{8tVvv+pehJyxY4w={Se)n8Mv z#=;9l4Zsk)d-{%E zmzoI3J>Wd_H6U85G$7A2;Xyj3NDi-70qL~3rMCKl7RRi7ue~$C9X$C{JJw&A7j|uB z+@0kCqGafrlB)s?lcM2KdQO-#UbaJ7b4G&kxFjOY84L}McZ6;x<(>ulZgnUB*Z9<| zPX_6|d@{RHnge&Kyr#qV_@`Aae5De#hf{j~2Esy*eiL`~ir^SL9YbU_+Td+)Im2yy zZ8WQ&o9J$TF@FPlMM&GLVuZI%&AiP!O<=dV7gH~reL-;-T!9BqZ3bXJt!dUu<}e(; zf4t^~T@jq9?b*CcE?^Bcw=xrsF;k}*4;+{Ad)!(ig*tE`r zA$5N@ht{J!G2?67cbcl){yaO04%uf*1B)LshnR5$n{jCD_EX z4V%B`>qK%Yox(Ig?!M#-PxhWgYFb)~&CV>RItAaGEm5trEHtTro6Gij`M zFH$67IVzskzT)5?M*(xJ8@3x#)u}_^}@N^JTM7Z-vSXWNNn6pi)^C$AyJ^xX#xQMHh zgkGULpKX%-E_0whBW(l$l->WOr_Y66^I;R>$Maga4REuQR=zubgL;zvpD zOU8E76z)&5p5394I7>(OY~auHBtIL&ipuiPUd&KkCtg1rt19~Ct)Bkz9~r4H#uPw} zER)j^Z;O2}f0c1zPKzj{g3Tshu;#YJoudv8RAZ(W9(|xdLY{OyJ)EQ3G-ZAJ$P*U!( zs@OoG9l^M7rcK%J=RV1%U{{gk5poK9NNQ1a@e9b`HjuCS(W)X!3hp*{6Ia&Y^6V-`2jy0r>nLsPWd;dpGOJguU8Qhdq@a!+%LcGDTzTm% zJfS(&VX(FBCKdy(@~;a4P&|C%zzYtR6&?a>fXAbPYxdAvP?QHYRpF78M?NFs5`1jk zqU3~~0>d5@B*1Pto~klv^_5qxzOI7p9{z-t8@Rr>`I8@r+}v9yO+F(K`r0-Vi(VCpIk^bI2peG%|Fj48v+eV$oi_HHQ4 z+EjQyccT>&9i4#HhEs!~9Vzn3(KCTR6#ix6RT`C+Y>Z83&~Q7Rz}RtCilBp)h_b8$ zYOHnjfGzvp^-~OuUCcq-v^$7AUXCb8kRF2PCiFH4R|pXT@zT=>y>1>XK+wfr1Qq>L z2!hRtya+Iot-=KZc70&WNX?%{aR7_Bk>x(d)VPUuk%BT_YvdRX*Q$9K9No(NSZbR| zCBz__J4UQl3gf|Xj)~Ee^rPeWY}}MIi?nz4P9dQkihg!mtlEul5f&K%UhuAiW_tS5 zLO0I?3?qCP=)oH)D-1XQT|lD0)kE(aH|GTYBd{quLO9}V@Pxb2bPM~!wbt^N4p>n! zl)Axj5Q?GO7WFGO?Ldw zr%@3)DPsexQ=S} z@|o#&ff1*-K&QuBMqz2Y7Fz0_6-U;I)|z@JLZ@$sP>KE{o&YLt_gf+-s%_Us^rqVl zQAGcyUVZHy{y5xGKFg~!q*B9T-lHxZrI*jomKAS{u88g;% zs)R+6(arh>GFNx@)Xasu347e%GK&13(D1CsrC@tJcDiEZ?hzG~<$c;H%XRxgOYq&p zm1EV&2(7N~lvbMcJ}OIWs;j8Xz;L_c7S@3WS8ilmS@;-@WRlv?fb*YjYim7&HF1tx zS>zsFPK9k}U}SP7t*qz_t;W!{vzRey;?btopTk5p7*9)z5f%y7L~PbFU5J!?CI-WK zS!8L-b$Om#Y~DQ7@Qv6`W`u2bc?2n4t+g6CtL04}TD9#OD{>qQ2JTW{>`ab@KWSJZ z20F2FZ#jS1%&K}`3_DoxS|GzdooXDSQ&xgSVli>-a88DNfcqwPnP)6YarHl;uGURoS!kQyi{6b8Fh|*uFx1p@y;N;$ z`b@tIXVb5vQ2$4%xDBE}uY*@a@ytRx3&gR|tI<^<(MX|ZLuw`D;+veq4CyY7GB8k) z#yo73jq+_i^1~Y?I4N(Pb$K?YIhYi;F6YHf!OgvjTX*!fCg^)IB9^{nKa|iCFd~*+ zk>@6Q+U3Nj2>TQs%f#X#gS`E}m~L0am0w3azk#CqVj?P52-d{U1r`~HX{uqL)wB1F zzH0Yq)`NF104XdIHhCR%_Gb@a&G)Zj2N|x=AW3ec5Tx=Q3YagP`SAk*(}6;cM`yV9 z^lr3jUbZOKzOmvmbZpohWRQa!y1@uFZ{M^yrmHTE?3jGS_}RU`;q*k>B9E+8?o99A z^u&yIU%Jxit(_{^n{~;X+x*CUTmaEyV1%B^ouU(_Gn8JYM#Qo#i@9ck-G#W=R_fD;s7+*`^M< zHV~4!Jwz_DM`4Y33Z7yPNggSxTBwR4d~BvNTjoaEwLM<+AeA+ zLHbIv(X2ec|3IOBr`<*tL%N}(>Fhjp5Y?+F8>3p!0KoaU4Zd5*-9mP`*dg#C;)tmoZNtpVw;t%-KUl4o#+;E8YyjPEDnlZLf25(=9 z5Mp>Sh}?EMu>LE?mT?pHXJ_nOe|WSh(?R(oP`y1$!5boUdSk-*%xIWr-`P;TVHK{K zzaGsJBZGPoA0ZuG+ngi6zXxd%1uPyPaxfwt3YwN=_Y`gl@fTB#sa^Nz#~L)ZAyoT2 zLA5n|X5dJ<4@*_v5$Nr!b>M95|Lqe^j(G~R!Px0AK~q@8qAXR(Ty-C44UgomIF@77 zLUz=w5wKf%ftC-dvxr9C^=2z_nzq}RLbkd)`zjY(TW}k9UMw3;sbgW<>f*xFV|X8C z54RbGU}N|_CG&M47BE+BUdss7Rw1?p2&$%Y{d1CPq?29<9|s`z_QA7#*V%#31%xAK zd@61tL!kC|mr1T1j4y^Zcll+vi11d>`B2PphR8wSy`Ir>9@d)!8Sg;8;yF|G>M4*$ zp39rVmKnZ|>__rEpTX$w*novw7!m>ImpYDPi0~y+J z7;VvfazmKtFE2|zC4C3UOs&9L%7ZYt-zYI-J&>bke0Z}Xn?3(LQ~uO%#Vbc-t4G-E zXxVxe!&qwk+(j*@q=~y2!yu#C0g0Oa9g^qbOy6-TF zo-%h1Mw0R#1V(4^|174)Ka8gztuJkc)=^f^Nb&K(YzOpdUP#UVQ7+m5Gh3#1D8s5X z>L1aRYZdbZHgAJv?h-9WrLM*3dJE0l7B&{%?=qP&s}TDutF?IgLk4r_zJSJi>O?4y zO2hpXeK5zEb43u~FSj}4t3F@3G&Mkf1R?oLzbOKO`1ChNe`IbmtV$?ZFsdV6tz~r^ z_(8&VEF)m;Uo+w_p1Ej7_?JVhhT5#Jng27SKf$tj8$r+i%$hWOiJ>8lt!KO{nA>zw z**uKOK34pWLE!Fu>uNG{hsP1=mx*ph+uYP-nb;>=;u4f%<|xB>k1c59G`4V(8|<$v zl}LN@!M>|B5;ONm$U=Kj{zapL1|s(sUQyW@Z_3D%13wDtUkoFY^ykSe?^?5=2tFPWq27c{&Gz41G^TQAIqqacL=RfhMI$76b1RFl^Ro*C89w!h8e` zKT$xC=slq8J*r3CDE9IX-wRP48@l-1#?G-}@B%sqv!@ZcW%C4jJ*r2wOaCJkRYA~t zI*H-1?q_Yn4uZJsAoip%LOmYn(d|;B`}oKB85f6D?F>lRHX$%T`1id-n*Q}c8+f4l zZAZm!v*Hh9(i<4OYcI5)I-WH^pK5{SQrWop1|(cI33#lz5}kU)?mW*FdNu9znHWD2 z2rC;MVFfnSly-q7adiUaB?%FLsWvRt-^T&UEC2HyA(Rb=sKK=!Yyo4H?Q3|S?K6V1 zR(^wMI?rfyBWCiwl_HNV6XV$Qlbhg=Gzll;NwR?-@Tt>CjZp4Xf5WOB>W3BVb;sqh zkFJkIwbv0VB+=xvV_<*5oBs(mMSB)G`AKWJL(Im%QDf0rB>a|aPpAAX>&T&y9)03a zY!ketm-TrZ)NhfT$h`o3sIk7Pe0{Rcb#15WM=Uw@Gn_F-Try}_|3JQ1$N|vkM#uMi z39(nW#!~DC{F|QAOwOhd#9@LkD`Fm2!Sxt(lHEOI56bKDMFB?E#mY^h)Z#|vo!{z- zwvLTsoldU3G&i5-Hl>8P#LYQv+Q5?^LI^+J1?6B{iTyMM^~TV!F|SX8HL}e9usKM< z8<4DCUg~$AwMAFRyEep!_5h(WegfuK0TnBQdrP(V-i8!uNN8 z4({#j6TXLRbmy&N96NhGpzCLG{P~ralP^PFFj`zT#MZf(wT7gH=aLo8Q{b!GNDxC^ zQX#zDRd&W5TDo@@9qd+HVhsvccFogx!f@Z@_(TOvH74@aXiXPe-h zLEridIe@YtaiDo(MKpQWnwPz&wEc0uwj!b}4t4pdaS|Ci7`~&)7^BEz5*WKAhL#82 zI;45N5%Q6N{c7YPudApUl`v>G$5zmhbUG=LouPqP?!4q#(b&Z2wK%SMI}A*cN3|*R z&!;_C(g{u%#LRYw`;royM{gQ+mNht(zD*o<)=GFvTuX{O)BYnp@|(Q<%gZS< zwLfM>ML`_)Y18Cg-#+@ty3@Nq+BplZ5Mk0|t zNWlK2_a`r|DOWzOP`rnm?vj3s7EIyeLhcZvRh?gQ+&VjT%g+sy_8eA@-?77B z*+ypsMWH9?*N-+XBxR?uS{{KD#eJvr2D@8^9B#nr5|@40wjhG*T~Q~C?`iOtOLfaK zm0y#DDy5PBP_J&kotZptcQ+KVQP)zORCUU(v^t@2m8K>T@weEpC5PX%m0{QJN^Zn| z2u?B$;GTesAD$!1rQj;W=Y=Ezcie^24mpx@Sk9MCENy!PQ;|N(a}v1knXcKtDm`pr z8Z3T+DYqUyY{(;sqQY!OBzsLMc>l);r)@_Vt2$hW(Y={jqsIL=9WOCPsZjL$%6xar zp?lh8Tq+2pa!O`{(IcO3S2B}m?#P?yBxTI+;pNYF11SWpw{ zk+;k5>@gi#wvhigkaFjnohj70)krmm6x3$Dp%}~a#gx{F42st-INF}k;ym8^UKj7~ zDbodvDdSSug+MEJ3ktWDbGVjC%Y-qG=LFmjvVmFzBSAPpL@k(!Sh6h_LxmIrNu?YiSYdH-e)^d9=nFtBAh;vjEb4n&_h=poHoCR>kXIixKBESq$d9LE&H7GH5T5rcy^mTy@_XFX?@P9oNQt zW3ua45=pF$M`V|ao&L$(wepIx;<2cB|9Ksia3pneyZ6TUt+@hc_=y@TU&kd^JNFqx zvloZ5ow;wNTI;fE;=*5)dO;jB1}>QGEwF|0>r68wEpOL5mi5GZh=x7PJboJ_p)_?7 z_kYJptgoyKp2I&45)!!R)JBqIvAAv;So_ffoaW>lp|p}31lmKvUe*s50OA?Em#Ft2vuK^@(uLbvxfxRh0&PN^l*R*4oQFMqmOwSoHZaWExVZW;5? zQg`A;YWXrYZ+s_=E*$YAf;|Pv)2K1LkBUpWiHsvfpKc`3=b+o9U5_^iRJ)wQaT3Y> z*378^xj8PuM#H?NkHf?i=jqjy?WaW)`&$ooR81i2LbuL51NbD?btj`WS6(c*ykYEwq0b_l*Veu>L&4o8Z*CGmRgB+hVSRO#|>4 z40i--P<{iE>hDIoW32$~9c+@OwySvyon1~382l9#4tZpYT(7CWEsX)=YjDFXx(liq zw+$JTv_*@SGRQu)P0g5U-ZOL`Tn@% zh#K1s%u4mqUtX?0k9wP2gp6Y@@XY^`##OX}o>mfLcDr=40jwSzVv2Om=0=V7Y)MBE z&x%sXDHro{Db{10d*Syn_vCUbxJ?krAx=o z=SWAwS<15DB2b>SpWOVmvG5Sh-5~}h!t+L8B~tLFI3pTO5l_yVpt`6l6tC?iKVazPH@IqMLzi z9aWw$DzcPOl_SfPeZ@lYCP@vKtGg!=X28t|zIMKdMa=yqhdr`r6^nTfxZUBsaCf`%&RK{wHSpB#?8z7?EIMqEz@>ZmN<9Zg)t0 zOPx+9L^6&)wWdXCyzl6fy6{Xp0mk z??~{j@x1D)ItxB@{L(h`q1i$>PAtymbYZ+Us9swPo{plH zMBXKFJt3dDKQ5vO`!hW>yKFU05awR+oo|6#vpU{9!pTM562eN?7VjCG;yl4c#BUL@ zkJe!sSlG~r=S+(*jpfwIV`O)q!k2;ICComo@lN>()p2wUJ9M=fs^n73T`$8Bw&JZ1 zxRfe5vUnTT)zcc=*J=?q?3+5o1;F`ozKF`tvdb1Wue0zynJ=}TN5tJhaGOOwPx*+5 z8!?jTjX92~D3TjG{XV4$WG7{lE_()B=Qty7_Jf3vH#MoOnw*&KOiKC{+`?^hl0+U* z&&Nn2{j~zbqS>lOnP)w*zaK6ZN?=k=finjyYRLiW+4-spDf?^`Fq3_ zJ2Zy@`{0(ys*UqDdV~%Zw)7xtEB_H1bXhO0NYr+JRM_#uM!H@amdK>d_}e=pxZ(5* z9p0*WziX23pss@&D~V3d7bS6U8lJmmd5hDfq0 z!|AIXlW$&oSuHBF_8!iwxOYTud%=qkYY=Th1V{4>BVTfL;Ttt=!j5;ln?bO%>)J#X zi+(spbTo2eCf;jm{45pJ=Z8|4G;FOW&pLDBOfqpU=t~oAl*Lia*s&qZ$RF89asGsC z%CAxQMm~8W#AUX1m_}S(VZ>%b{C`*>397>lqNWd@+E)~4F=ayviVO;O!y-mAmMGrtwk`JW{ZN3Py*qBBlfT z%9&$w1Ce)cn7R@0LhNidV(piH8w&r&MmbgFGzz`y;ek~h8z;u4w@4?^YwW1lIcPz0 z;T!l#+R@>PjUU8PK5YJ{hwn$ti?iW1BR295L(o2DH7peLA|{V!VKu8J3G~8>GuE;; zrt|AAF}7-8k6_+p+Lce*s(e?#7LoHaGWEAKxvZK-A6{RPd-1hlQb*C+QJ~WrhSXBd z^s80$QpVKf8WtFcH6D$bjEfsGYoOjBZLy6*msYaI!E)5Uh#vm+m`2?0v4S$8dXo{o zhNw{^=Kowmhl$Pk}P^~c8lZ8+m@z?MBrCfT152p zH*{x;j6hfLHQCO2?FOU7Zq_koJ&kbAU}(NU71j9qt#vO3wWU0G^h5^g=4jDy5VW}S z*Flz{HI1&;aYGU%@Kz=!oE?|Nk^3>w+MmU8@xdQV80|+cLU?Q3KLByMUxuJZ;NJu` z*m;wH^xc+l5SueY!Vv(h#A?q42^XYzfqBm4`i^Bcpx!yS)VHH-L`IVIjv;w3RFW}k z!FP-NZM8jiKa&xm-OB8;;$C)4aL7F~_}QD>ay9~)z{8`20h~N5eH`oo8`bkY4)JRT zh$@}WWEC`D4`9%CGee#Ca|Xfc>NyTp+Fk`yx@^Y5F>i+)_2crRV3}!t{1FI3tK2s$ zb|SkO_$5=TxPBWgmk$IY?Di;85IN7qp38k-VjTY%TgJ_e#y5#tt8sMtYw}4<%=9X#{4|!T4QBqkew5Vo_zREU7)x@lnMX zsbp^F)N3ndDvBGCvwos4bdFW4%G(xv>2H&Wo{abP!<|SR7s{CdGV* zhZ~iKy$&d3L!k1k?M{18gHh>3jxk}(NKZJ8Q=zEnSO&?_h0lHnEfG#>XnjU(R@sN~ zvzP-IAhIyP2;XiraO9N-L9lAPlR^!`%?==Wy1x;{?L777lzFx3ypD6H$5$!w#Svab zhw8H*I;woTd%TGFg?V?GXsISy)>GfNDLOrLpiuXZm#9 zDOro{LE&G+Z>*cJJkcjv3i!JvgNH1gWIyL?b|6!5YDOD5dvxLmOR9B%_lC0I4NsDZ zU>DWRiUv!+_UPr;zO8gRC8D+e&nxh`m497BLyO72_PnVFe4AfKB8OTTt16EfJtpgs zEvkZzrKI$;D0OtUa8tAK_f<+Vb2-oyw*o0bXwkPPu2<~kNYRf&qT?)JtsU}d27~9< zo9$MmC;4hsPrfdL#K}BTqE9AZ(Q#EuG)9n)Q*OpfsGTUEHE1?8in!6S=2bJ?d(AfN zd&5hDRL^?`=IUQ|o{X_;)iqCBnYYI>UE3!?TgB#)s#ZI@4)l2WGQ=I<(l-lm9#XUIqY=i*^U}^DHoMt4rX& z$fqwypiT*_+wgOiA2?q-ZYAy%MTceaBRzwjkUEDt12koerRtv!lSPgXZ(XrDvhM^R zdQv{VH3p#ZbM!}C8Iy;1Vv-C)A6ygPwGby;m%}#k@ebX0`3=&;nlIt4BfHX;&>1_Q z05~2_Jiir@B4y=d=%*f_Y<8FO>r%-B(PrS%gd2IuzXSPzCx2DmPGqf|f*c6j@x7Uu zpw;FZPP1GelT_}^=ViO^)8h)Pl_d4m}e2*@g}Hf0-_6yZlKV)3|4I zt~_>f7Ls=ZAkQ`%1MWph3!gyust$(y6Ot76Z#d^cIFKW<^^Ff}e>fXX+gO=R@^&5*&xhFS`JGuJIBV{=deXxz}IY;)uq zXCat4JxX(~*E@JEB<-7Bu(yLH(2_2zHk~y=&Q#-Q8q+ap{UK0e5tG~U&Es00e@=L2*4PvM0Nk@6TpR~ z$C4Y|I74E&?1p1LZie9>a$sJ{Y|VVo`BESMX;6D^(Z9v1n15pW_r@ag`yBaOh7E~+ z_i`E0SNKzDM)e^_(fuzNNcqjV980sU!O0O9PK2dA{0 z*gcKJ9jg4feZI~t5sa*c*!lR7MDU(ZvomtD1?u+OVz=3BYKic#m)6(7n!Vl50?KTu zxCvMSuPiX-wqdNwH+ZR{**~p`t}RZ-Ja@O{&GsQp)u|*E6A;j6bEOIl3R}@s%a%Y>OLj|^hn7@C*V9LKYVxz*`;A?wl zbh(`~`JW7Q`H-!XgePtw3$W<$Mti!nM!9slrzGvM74O|k8F$!OjGxlJ9ipAjh4V$4 zI@qP)+NT@hZ1Y{{8GJ-ByuS-UbN;9hZuE>s*|)P`iserN<0tbo4+_2wv>oW)6oET% zlr#qA&Gi?Am%kVtUI@60gb7aHMbf&`zY?@ec4WG(JkehdEYXY|5<}nCZ!TVK@`%Z1 z)-!9JZVAs(t>B)ZBSwZ>WKNzmx7Iw=fp+2f@y4;mv8vk(m!y&~V=qhi`xL9OXqk9hO1R z+V}EK{`=w6OIeyo45z5XpQrfURmON73v~gWSVB9!w`sxskJtgJx0jOGlkVflPN6JU6ln~s}(~~ zRekqzuJpEPXeehmT-YgUeu~nP^e~9?B&CdD6 z&U!e6)h~8vIh-?idREeX|CBI+=O>B}@5+D;>E=+Kya|Bv+ zK%6j_uhuOOFR+jqy6GO9e>AvZ`;-Q+-zScN>OvcS+!k_)jW~0%Plsw@D1!kAkm{!D zSUX5LqZd4+IqpmC=W7zs1T(YeV{Vg4vhY|SbnY=pt@`Lh)rdX#Qdwh-l=8_M_by@D zOo<#Gd#?vy`w~fhl4Kx}aNUPb7l}I^Cp>NIf=D`6^W_GoD#RP5xXM;x&Q?fXhj?N$ zndBe?ob>oR)1-edSKbq2WBoxhpYcr8pX8bLA|xgIPZ-9zq7%2e!?%Y}g^QZZb7icA z3zf<-imW~btT}U?>ZEwAN%D>Cd-Ca;-FYET?UXfp2%M1fUHC1uEeBZ|;r|FiW-cB8 zI=UN}bu%oe|WMVQDvFj(hwry(q;<;p6uqS`V%6FbZLr4{0<&v z;NFE~viD>>8o|JC1+M%?y*5zA)VxQ$!d||+Tu?LG<%$cUOdtG+pf^jDmk*jtz!xc) zQ2KmVGk3Lggl3m|8$KEpGr#V>7WtXv)fw0j(0KDnnS2&v8{)e`>QQq;>+1PaRPvsn z@iTjn;I5Z6)uzb6;N^&E?6XuLUBpm_jTl1JZq}SD)|oHUFm%h(yRgPRZ^Hb|IGUxI z+=6EaLv}Rips8qPQ(m%ML&Ns`PVH6*cJErRM?vb|!`JFg8NY)tIVl!nwm0%Kc**ci zw)W(cLE4BxR{sh2aN=E)SeY!q>1|+)gpn{Bws++#|KCJ98_jIvA>ISi^|c+Q#V`kd zTbnQ8CXg6u7W2Hh36mFeq!&suI0oD2-Kk{qd&3R;ypzAZe+5bQc!0~?AZlOP05aQ@ z>9Y0cRLzwwpnO`YB-uZkcwVp3WmiIwF>X9%F21NB;^lBhNae^Ly!tQ4ZEjc~-zxJ5 zX1p^=tl7DvF_l8oGj5kcXRyNCp_84qabyR}Jn(j^xq1gyI%t9nOo7OAU(WDrUK3Wo zzQSes2hhFbUQ-vPcrDA?kn2v-^b<_PZ>cpFL&wa8?)~Fp9V_7=9#lN3k((@5%FQ)!su9`zW`hyGG*&oaPnM*TE zi!9v?q*xp(vqr$?OfQ92Fzb$*-WR>Jk-pt^EsmhhZHo=|A_#sIFxm<8n_5U#12j** z9TG}E0NFJ`8#0|ae(C4)ZhF$__Dxx}5Pb=%o=ne0WFf-!Hk0)Kef0(;KiXW#4CFD9 z8D}mevc0yXim*UZ>bm~8CM1EI`ZbUvg$^9G{q%<-j?i?vwxIKInQ-##IfI;glV9#| zb6mMEDosT51~`-RpqO(nUi9I9#=#ouPN3rM*7JIqC?K|P=uPFhzk+fOEZv65;M%N` zb8kAs4dyYt8O?@BbDnA}7w#PK*xj@6BAy?P%`wmcMQomE-`Z%r{&0=$YxuRo|Lov& zH91ZzmqZY)GcTsBY_cas*|O=YP1eBZ?{}ouU9Jf3gv=sfSlz>|CJ{eJcV>65vhbP9 zxm*U1en29AjDgf12jt7oT9bF#s3op%!m_=4+Te4_<1%X<#gsh0@2NA^Ysz+&ojPle zz=pqHI9g^+9hB`Ff)VanWTDTl@I$W9Go7}Qe;_sf{tB*5ZL=+Z;01^y9w8ht*F>jB z_UokYZe>9ShQ)?kg_K@nV8`4c_xL1-q08i6Zzk~FCaTPzThDn zNOIb&?5AyHNbceK?WKosonEtovOZD|f_6qXY#rxkf(~pQkT+fCWZ>cW!P8#fL8OY- z1)KVbI^D^`2Q8@47le?74PTSFJ3W6R#6}OMTW1qsuVgkes=U5YPS65%^?h18+CxlJk&rZw{RqZ>KTyWVWf)jYOp9_+oJ&W z!R}4;#>9rj*^LFp4#Eyol(D>@<}@t5m;(I3Z3HX-blz`f@(L}4x?hJDfEvC|%;n4X z$Sn9iaa#@~LcLnLM@7f=@Ac7%3Hbj*of+7$E@8&&X%1d4DC>iTg> z;^Cw>rDZ4EC0c;mhXQyO%gw zz(`bLQh(L{4*R#f3%){BH(f^TFn-B`tUjW4(!~b(SN)iu}@M zZMVfud#er|Up0+RF6lyZ@A)LBJ*!|-dGt1&RKqu&h}7=`fy`MBz(lW`xOBgqy?1Q~ zzG2AUh3Wtn=ge7?1}6e{IKD>dy&9^>EjoVB$ve>%S_@GRbGuhNdQbU(h#l}y0e)Ly^KwS_@tpIl z`>rru;(cd3cBYMluVxMDHa~)2Z+kbG%=`xIK7`G`KFSNDKEIKm;8|9BJW=DAXse(U zsiL`$+yRd%V*S#IcmnnW=`4t9{> z8HJgFoq^Z3Pe>AY?IHi!J0f{k=?nWXmDcpH(gs!V z9Rr!fXgqD?7ZT_%{9>#x{*nQk9F}tfh00GI$sAl4Z|yHaS}doB|KOth*%Sg`YkQ$1 zM5hRkI^(`5r=E(njg==TCZ>hfKerxv1h}uK%%>a;&CFLHgKPG=i0h+k!MR@4*nwKjPaCnjgkyW1PEVF5 z5}b?xyqU#wnhmO_)j6rw>_*83*c7}hwE+j2YQmwA#~y;@|8Fj{M66h*3$9gO_jyidzD&68XY_)JnbJd*LPM+G4Ryrncu0mIrQZW8+Mj^-E z=ZMi8%CnGZ>DmPXf= zEQc2aru;U!hx0`6YF_1S8*hWkU*i5tndS#_ne)8FC#d3{=BP#zXNQ`JcjF7cxjWs~oPZ0IYCm&h8)FN41M8LqCv{D$Rq_ATBM2h?LK% z49QI?c;q)ajvrjXsoFhLatXt(_$zpAIaXuF<);vr8=}$_2wAgOKDpPb2&qLDyk#X4H}&pqTThJ#m;dDaEMcK!$?4xqPo{9= zMxG;T`b4qIp()F`1XG>>;k-WvjK`&3%;OO*`-LzwDBd@J&&xHf4(@K&t@Q} zdY07+LWfCyT|9KLsd>(2iv^S_*8crQj>$H~400;51vmCOr9CrO$7lt=N3<)dFQxw) zgESSgP7`^swx!)yf06@SaV0p>Zk0BoJkEAM9v8=)@wd7x#*Q)(CJVYDcXCT1Ev1BWNePU@6yQ4?n-sz5Z^qt@X;DxTZ=pA zkNKVmM0Y8pIeIG9o6&vsa{s^Z#|YH7){RcLrCf&1)b{8~g+{-Kwwgd2XIgpdy z*xuRF)KxsTWPY2mZCSmhvW!24WseFvd?~NSz1<2MLW*xK|QYGo;S1G^s%=`(wwHVWjVIy zhJl~OUj`#cAUx|3rf7Ga@ z=N!sYz3s@WUaKsKqn#j1=_NQ`wU>mcKSCu$E&2V@KCDPoMR8y3ZPbytzB;Ro5*&o* zENt7WIH>s{da$b-FIJ9grm*U%e0Ea@xqSI5`G`yHbgq&V&SX&ReV;1}BRx*@uai8o zJp=PMY1cSMJMl4MIsm^?MO<3cUXNN)(; z%Nda8CF9oM3U*v(7})y8>JJY?GjGXeF%V@t+_eQ-`MwdNqV?WFo zpdlu=Z&$mQ8g%weSfdwsOTcs940ky~jLHoI6TO9}#LcMbq^aIjmTberg5J$76kp6| zAB0OC^sW=Q;qWQZyC{2O??4RdToUo635ILH(o@sx!RQ_mYX#(en}n)Ad%+qaJ7rm_ ziPfQrHiH3eRyoG}67e7S1S8exim}>VPe$9HYvUX3_N^~YgT_;~AErRWC$V2AmA!jx zL}=mRyTw=c8-kuE={-`J6?7{P=E4q0_UMdmHg?3W&9xGoY_Y{IPB{*|%Rd7+?IZY! zc|xjt7};ZcDR4g9Ax<7n>FEAZlJ2Q>nxZr~yzIzlCWci+{2QLo!j>(zz*UN6bd8KP zC0AP=Q@plh-KQ%sew-FP*sG0Jk>(nYBJw>r^g9veXKT3@JvE*3hngl2(~P_iPf96m zdnm8#`7v#K0dYMP>uc_YbiA}8GZkf?5=u0Gb*)Jl&N6ea_bBDKf}H*BfE8Z5$JdW8 zrZaFFQ;D(S%ahU)FZ&zYGO=|)U$E@voEF&Jt{2L;8Uk9Ynmc){kNXBJAALy-DDN+n z@2S@ZMQYWptWO8q&tX?#+V|d(=r)R^xiRL~b;`-BhlXCU5Wy3yoU3_%=Ke$kUI>yl zE^A7$WxPW5cF{52e7&``VPrqbA?Z_GRH#{p)eOW?EWPbbHmxJVaqZl74PZ*23CR~;k@ilG0i$)zrLR+U+ z`!BKwy54g|0WkSWaJ@vgUIa^{x??3APK!SWog*rT+LkeCUb>b19Gb?(szcwLH1Y9i zg6!w@#`EXoNxk=e29vnAZ3f&}x+!EdyLwMq&AE2(3u%=i*?w_lTik0sL-V!D=4li% zMgZeeCZIXVo07Qv?H;W-+ZSLW20DQsmfdq z#-XU-YbG*>k@6&0(5?4}G@Re)p7=PfiTz=-g>%1z|78#OFaCRm&ju_Y|M`Dmecq;v z`WK0}WtYQg??v|6-JnOxmk7EQuRG@prPM5-|0AuuVf?;}vU2tgDw~_uD=8aus=N+4 zeA~v&(Z9b59uQo6r+pH*;JQqo*cJ_J(AX_n+7SiHHW)||uPZ+VKBqkwl^((GEwa8O z{5-LAoFkI;NE!UTi;%FN)<^Fa9dY4b8$KRRz{fFE-nOyui8Y7y z&@Jzci5f-^6@z=UBEbpu?tOBH#dF(+U#-&q8M%7m$PRr|*j{1%UWW@_t3d%N+l7W- zOG^%GN1K|AdgHZ|hSYoev}Vmx#J?FOpRJ>CMUB2l9Qw{ZAng?)^B3jxF(9zv_-i0* z#?AQ{2c2G zc0$C?hOddnF1(D7J5ASCL3#^a5ZWq13_q9AbQ|E(VgShNR4q^jR74^-X8=feyi7$$ zNQj6IgB2Kvh=}PHE?$fk9T7yfDr$1Mxq3+|Ev^Wij5Ar;7P|p(H`Di8dHT1qbef-M}RWOawC$ zhGXe+0l&NDBq<;)ITX8Md`Y^C=WHO8S4%w85sczm#HEIos`XgVqJP2h!33eDwPVCk z-TbNWA|&^K@tG41W$GhSrdHrf6K5<_QH0@~1aP@k^RudM zr**Fi+19FJNdbL^IB2T2V(k57cuh>{gCVUl542TPadu_GXPgE1SW=9ps|t@ju!x(h z(m)b8lOSY0m^z-ztp7$XMeqbl6^M~lQB)d#6(*An5h6<#fv-CL%O@!jvc&5mH8@0w z&|wlIFNCWe9qi$GDfEyYOkj$HDo1{Gah{c~tiU72;X2*VkVh%@$erblb2g#KSa;I3 z%^f{r33Vd3Z#LD=jXR*>ERMt6?i_vMSiafAcj&n>sQgrM|9UoZWZiSORO*#6VBznu z^1uAwhV?QF5u~|79Z>5mL$_daJKBktMvrTkI~64Wj!x#)*QcE$P{^UU?_f^5(+2O< z^{6X$PG++3y!yw`P=0aN&QVC^debFMed*j-8`>4vCFf?cy@Y;CZh0?QTo_^O9{l3= zLW_mK;qXJvQ$c@3Ma^d`c>_*B1H%f6T@OL+Wa+Bs&kvc-&Lic>Zy(+q6#u%_#_^DKQ9VPSkK zZ>XPmz`e{gmh(`@w}M-~Tdeb!Ah&Vt)yD21gmLqC@_cX0U zOGwur#)j~;jZrw%Wm{Vg4KT79>lA=*lGsakc zyKYg_=E|ktXqPSK3q1NJa6bx6KtpU#si_(59I+Us48<=%78?U!4e5faicjsWY6RUc zE1x}s=mo43Fj7Ste=cM>>a2;zj#el~K}zlgi2K}--c89hw{Cf)wU>(m(Ao5u69oeB zO7Cf>QL4`l8K_m&b~um{@Re9zo!WZd{PlSa8#4$%x23d73Q`3&ma_J-gi4l1I@>1* zOiWZ3%XimoSp@>zY|+vt3I(v+3kvZ_wp62Kt{h{LDO(F|wIIQ4wxZQ3i?iB3L~(urYSDHh6xfLjS%#)|PkroN=N62G}=))KFnus5dh7Rje%ibF%- z4u}xpECVqzynHY}JT5Rdset^gthRclL5lRKbrs@~Y>EYtP%MeQMT-pM8sd2(WXzXl z4^+=^!LMgLh1s9;qB(A7;*~?cz++Sjq~!M4l)JlWV{{5n%)YN`NVIPm^Lmc$ju~@n z#Th;taK95k`)RxCJz`bo_&PwjUo5 z1lk>%>yv6!84C2@qSh!A6T@&7$(3T)-D?GzE<)2*&1?@U1}n!o(J)X=nq)RB{T&FeWAzOcbT4CcNrCZaZGCx$!=PY<(zHSKP26&qi>XO&upHW@|Cd zF{K#>Z6zccR<~0HDgbXlkiS;h(m=Pps8N&~aBs)m80gkGAH?Z}?fp0B;b><09~Q|A364}NoDM!s)7TE}?QwFJJg&kP(7D7Yqk zn%+=vGaZ9z;uEF{yegkV20qPfF9lKa2R-lBcl`IjUqOBa1ki7{Hh2bHMoQpQT3fm0 zPiMT^SDSzKwFo}h&o$pRKD!>i9JO`ThSEF}26w+<_w2OOCitt4=hzQkbFF{Kb>7bq zY<@)Jdl|Tct#XDO|I&Oq^8-~|x`HU|?7b>Z{}55SpQXhMe$pJ@dgTsg`i>6;!{|c? zz!)#^r3@zLtYSKy3`!Y4&N$v2oWc7H$inom-Z2lW-y6M!$~dp;{6lK~y$?be(=A9Z zMdBU-8YX0aaM z%K-n~|IIG9eqivr{KFaJ-&dZ6;A2~d9bz8qf#=HB#utvp_ztkW$D^3Oekefr$KP3i z7(X>;a|9G1;D2R^5aKfv&(Lldjed@fb)xSgH-FLLLX+SeFNe-`P48GF5xCPa=efBr zHS#_o3N0A(KLzF+?)L^ipED3_&&3Xnr||4GigWXP1fYE-jNiWd9E;xV@cN#Sh>XYd z&2{XJ|B&26nBn}4ud&~xW`?X_dPJY6#F?l^M64Vy?2gm#l3@JRsHQrM_&-sM_Fu0? zeq-+##{}?uPLPLHST@9&v4u(gy9eC5UeU4@{u}VfmxbnT zz8_5{Ty2`Bu-z6DGHtc@KFUG_%9$^a*W~2&u9YIh7uqq&U1IQ{sse-Bp zpezMg%AiGHGWH6{J%By}wg=Ex0Q?8=SAhTu_-=nxn{q^!iu>V6^JD?>BzH0?9ek2U zHztw8$|P=Aq_I@xQrmdqlHf>;vZRgfT_*U$FsUPdnN*R$%_YKmk!q4SQ{EdrxKSvK z_$UBY4lhkJF&>tMNZL*poDh&nZ#OzR;zoTB%e=Xg{ev%yQ_wcoeNABiTb;ToUtC_4 zZZwbb72n!iq>Z{94Gk!b>W3OwAZD3waBCWv%-NdP*jcU^4*#`4DoRNSm7uyL3GruaN zskbtWC4|XKhA`{Kc=8Ws=kMPs=o+wt`Oj{d1T~N8?>C0-eE)(E(Ufu!=Hhl)1N!v{ zauI3`tB&hc^{(k87}Y#FQ`1%%`(Ev0^}e$fkDOD;@CP|eq@s$5P5p4#uhjP^$HMq zZdP4|Gu^^X0nCyPE3-slU+whMtU?WcX!LvQ-pE5i<8@pn6#o=N&`5%V#Nw?e%XS~r zI8c7()}W6YDZ(Mf&tBmXiP~UOIY(mhFh_Uq(CM7yS8k*Y<+Vcwt95l2tO zk3%gkNn$XrSF^_r)3;(y%32{%F*#!Q_&4BTH-vIg(7(pG$Miw93P&YtT~@r@+#P~W?`rmfCO z*32Q5(P`?WynXtdu_>#Dy&LaUGe)`RjS!iiT>*$qLR~wZt{l>bNI|hR+|)2nF*j*$?D@8~@mhoi_sRTzr&!Q9V%_><*uE@gB-qt2l_#iaQcJUd*3 zWhkh83%U^r>KTm=)6ddP43kAd`4q_nRvROU*wJ#OR-O ztG)Srie@!*Lzckod`tl-CfE$KI=7aP5k@!knKNNnO=uiuVW{oDe_n*z!fMLk2{m

    M(J(Gu)kpPEc#1*tffXs!2D9i9r-!whFx!-e|CZm#$HkDUipwAftyJ1Z3VFa^&JR=I#+gzaDuNf@D!;vKeqj|4b zYlV6oMo8&`m{O{TO%y)9{BsJoA7q^A8TL-8^KfKwnw-rng6fVJ=W;}|ytJW6es9HI;8RO+llqrw3)S!l7ov3(;1WU_qW_F=A8F%&-n{D|VRy|NAE z{XB){bDZE59Ob^aBlRyfWe0d#$>rj@aw-pMp!A00?r~(0HChDoAZg^PxV!?fg?|@P zlp)nREE#e889F=)5$uRpMp(gZ49h}c$v?W-Nw!%TzLRxNi71!Dau~C5dVmo|-@jOO z_iG##sP@l7Vf>SeHU9gc8c9!YWj%WxVyTgqbbnIRjlo%rYc5^#F;)o>VVL6aXz3ePViW?`T z>%M6GI)iD>(d)D^H(?Ze-dKg)&U^7IM%YoYhh`pP$w#j%-l`oFOSX`GVB>|y9k!@` zWFS%UYnPq!b6N~`kf)vxE z5R7o0E^6s;)Plu2$rmwrEwec%Dx?I8y`cAOtzC?i!E}EAzbFa5EI+dN(RQQ__t{P&Ex@eb$ZuQa#@huQRDDF8p@re33 z;S_TEesQ*9)Vx@C&z^sazPyLpT4Eg^;UIEzReZ}Be}(1Dm+TmLol+zIn379htCNvN z>&5e?cMo5P9nUUt&UQC9dA!V0b=umoZ*nk_GCB9M=7&B_N(5|D$D^g?!HHdaLN2oVtIYR(Lxzxl_&QV4^)9?GC7JnUxy;d}l zPN^KvG$$mJYWpc4x`M2>izZ68@fC=|2nYPRX!1=yFY%2e(WtL^AU#9J1f7-4;sA9n z-^!i(91;Cn!{9#>h?~moLT14j zqVPnLn~!nCldQg3qRA7K_?6_Ojq1~o2|wpPtU)~v4;MVmcbQh&l6fd-tSmM=>@hj7 zv+SKpThz~G6APUROVMy#BubZzd%B8A3^VLvtQ6dkc~PlY+XY}S7tm&Vp7=g}BhW7Lo*IhTfD{Oge*ML;4n7PNy{tehBi9^f}|k?K92~=4oje<;rdG?Qt4vW z^7y{UM~nsbT$stIbZ{XOJs+&My1l%(8`_}K9rni|4d*#lJ0b7Ghp`t*4hO3%73SUbus}0~$$$$sJs5yop51}7 zFRBXfUmy()!;lUyb__eM{b2C4O}&NeseYqF$i2v)7#k^qq_u})y6KrPEZ+1XfwQ@7 zf$i&J0kZgR!EUSK1O&JdJUh+pXB^g+Z)vY(O`-a&g&lzRzOcVW8yv$)Yd{5d&B`D* zn{n3R0?Xx1sYA{SRdNd@KFL5qcRWD&_?U1@;da5^Z)<7=rJLGo**0}JY{Yd_vH>?! zXHq)Udoh;IqWy~-x{2{IyQqH?Qgt>_c}!T{)GP^&{XxTSK~v{YFw}-Hzw#E%v3tE%M0}o-78h6z-%jkb=*!Zk@;T ziWxKJaxMb>a4ylO%T85gb!pxpGrW=7c#m7P(8&xb+=ni?5tU?!clh(#K^A?2n1J)k z&S|>5kzh(E#P4Re)&4*Zw(Y+l9dhAl$%w-je&eTpAi?L+hA1*J`#%OuE$N@X#!K5; zQ=SfJo3^uHKy*Jn#0O-(&0#R%uNn!zcDvaYf?5rPTFVNT``!^H@IKC)^lZcX74$yM z;*f}cV!sFIp(TOehxRH7q)x+=PQ;GwkgTB`lrX39Q-3jX48iK|);U-o1~86@KLvtf zSJ~*u5yuDJrQ79ebd1V*uRZ=q`B#{&@J3z?e>FM}!d9m1YfB|B2c5ZNC2KnW&MNp=65?Yv!j(o^Cmn@OGFDUZIh4sb2$p1pry+}d z?8;iD=J+=LBs6aj=CI~YV0s+*DreqU=8$f?86tt)iGyOZ(*;d;S&j4<4?&9g>%A$O z+%F~SpUOLGsxaDK!FkyppYntU70B#{7MV5Ve;dL-Kc8y78?4O9-D9_9e^=r6bfEl} zm3ta5NddGv?R~EyAGhb7242LbJE(IwW(-Bb=@8vwZ6{$iA8iH$o@Yd2Khd($q2*si zJ6rc#r||C14^GYdmp!Hz-zf@DqLO7*r8(iPNJ5{^W~>c6=7dUKgVJ?J|GW zq=z$!*Bk!pY>hw5WQaRSVDFowqGC>?R_#b&@EFGM9M}4vIO_(3>qE!A`;K$f#J8Q} zF77u;J)EJ2;U0O&b|J9o*USFM5+am^W8AptQ@?bTclC3uVx)s;lLZ-9KtGCJ%TFna5~<78Slsx)t1t^fY_8 zDL&2Rh>^WZ2aTr69T=+DY~3A6dMn*-NLAxz5yIRS8@>F;-wp6DKRKLrM}4OI1xQvY zx`r4(XO4A$@~5!4(mIG_U>_=KNNvpwfQI1>PR5v@5mR8+mHRF zWu#2%b#92;Vcm`2=5>hEzSvWAulNLBu@OhwWnaeUzPy zI1hGE|8^EY_8N~Yol8Xwf9>^f4PSDRM#F-;AJmJ>q4Vc7V{(00ls1yQL*cmm^ffuW zNuCaf`{OPxLuuyeHT_uu|x*_J?b% zG8F$ODoX^B4z~A>GWFcsp<{&0pG>5^qjUY1n-$;tQM7M-v%^o&q>ax_>%*6z;875# zV!xAfI*$@H`)&~38|MKVb^Bb(*{v7gzv2Di>_^WN*37ZlXldXxQUy#EP(1>y3b-D@ zSp{ehfPDk-E1<6e01zOs0>laGnUC#J3C?)P!8qN@p$5CvAUiY?(oJoeZ=tcK!)uKQ z<7eS;Wew1)ShA2ERU(91zw_K5hAUXUb>h;_2UGCsDi~_{Q`zm*YTunm*E`TAtdGx9 z>Xr$upV|8UNS=`UbGWienEVy{^cLDGIxK?bW40tMd>a_Laj4GKypk?Mwq&y;8TqNX@STFP1vc&)f!ns0-1mbEfpFTM|NVY z`)N7^l6DDtgGlNk%m6Nr0mS@h?*vnJ33`J@l0Z{11lLDp8WLaXv`}P_ij5Gefz=us zr$rRwOsDA~I_H<><3gJA&xJ#E+|?)`ReX--#aSH0mX|Va+QEzoHzN4G9fkX*1Fp8m zv^Uuo+0_#23FWp(TMj5laGeD$c_s2V;!ht}!NafPq@CSoTco z5*@@Mzg#nBwTxrBJ>2|2OE?{s z?cx@9oO+x!+Kg^D0LV@CMrQVFf)_T*KZNW>-WiTTsAFUkh`6YjMzB&>GOb<2pM3V2v^$*Lp)4LK8X9Kb&$lcjd=rVvqNTG%KEigPQAe{=Y zyewneQz~FJ_1%*C+|7McPxz(cpX=uWu<*%z&Q29cdu=o3y8i6-6sG^ zweF>w_Z-DW+h~NBRQzDx$rK7OVv1#X8*CS2B*a5Sf|64!cH3Z(RLa%1*cJz-ZfY84 zOO($X(7Q02m?=#1%?q;XY-LRI%?q;2EM@IT$8EBUGr+MK7&SA*ls3tg`x99Hqa*&% zI7x!5LaGeNXpn7VbktS_kLfbhRVGj0=`=7kHe{6zGr5&tS_P_;L*ylwyA*PcW^=55(d{$Y&r9%v5>=P(aq{hm(64X|l9daw_oicYED8j+2DKU5#+zOh_2)d%7}D)yWxNpNZ^gqH=Ps7Y{2 zepNqDU;cbstrCM08@9E+YCEmVvAtW3MIDWn#>c<<-fw1cF>giN2OpHL4)oQs(uZYU zpwYCv(GK{(D>6L&KG58*_d>za2ds`ONpE27x6m+p`?*MMfk*>@906*vSrFCfBF*_S z3()yF7IQn*3t{-(*C5x9PltyIo=@>Psi?r&B?bnKshb)zyL-3V*!SbQ{ev>%hZsTi z@Me4G3|zt;y8S%np1s`ew8j}6hM;5gt=k&HqgutCVXffUEh}=0$!TOTSYARK?VkYO zqeEAgWdIG>zfma1!4`8f=*ac`0fUSY_55TU0{IJD%GXM(sAVFXSgcc@B zCnKO{o(E7=0PG5g9su$RkSbuR7c3D~EHLz6EFoZIV|U&lASe*&hzNDW1Uo^IK!<=} zp$`~<#-A{SaCy9^;ioL?pnnB;5CE@&1Qq~TL1F~=Ck=M=v(_z@sZA)3HP@6iw`qOA zYlC@p-*@dU!G4xV{Ucex?FZnH%veVC&r!rY-*I+FIaH6T7T$B8+e{vI zTKe#)3G@i2>TT#|lQUAdB9P~3%p>uiV-qz^o%ek(5*IC;fgj2A5%im>v%fZ`_CEc1 zlnGCuN@^P`eu{D;u&|O4kj&N=%3J#7*Lj*^;Ie$Qk6D^G-5^H_>5ne0nRqV4py-B< z_9JBiPP;`pfZyDw(2cj#_AT7)_r=#GJ<{L);%MX@S7Wd{1>SQa2t2Nb?hnJga_^9RJF~j% z9a`XLhj%~b*e%-YGG)Gx{Vuo!$QiNS#k89VC*<;rdwI=@L@hf4w|Q>07XClQFDp$iL(d=2PG+2Mkoee#*k#Z?w{`LH&d;P_VD z^IWp)BQP&99#Rioc_Yr{QK891MndMW=N=p?fSo@IEX)Fe<*?Qg7h$Ed!qmg0CoKg);? zWbJ|rkniVq0X9L)Lekz1nb>_;&LYg3)O+sqk{#Zr++{H~M!1vu`wl@#Ln0NY}BH-&1KQ=*E~B>vV6{pz0@0OyiTE|Dd{iPB}DWUXVhG?ke0)u#4i4d6(y(iS;^S@e~8ch`>s5H5;xmu;J8Nj+rG^!md(^(o? zZ}Yt!TT$7*FCnG_U0Q{~5Du9Z&#@+8pz5wg)a(6jZj3QZ;dYLGRYY)P%W0;t6?81C zbhun;Z=O4Wb(_ucDX@?3VdaXGAN^B3CrLj`DNYZYKweGGZ8|hh z!*!0vPK;NiUKKhk2R<(64~Tau$RY|CZy`ED*nD9rU26;QmC%GSwi*@5We zxoN}Vu~8r8in4E~az#E=+#l^q3%9KIV!!ky5-)T7(_&0N0!TUA1RNmBduB{eJk z=&tPl?*7w~7Cst2Vx~ zR$cvOtVR0GS2AvReO&STNmY~-EJdpH9IdFUm{JUM{0*Q1nNjoOEga~n%4^QriD8FAPN9U3N zoF_}?zDdG#{(vV0&-}8dloIdHd=LA!l~bgjOC--f>D|l+uCChb9tkT1lRg5Jor2B( zXp}y7Q#{96?Oi<~Mbe1SOj2rX&`7)Yyn!cYt=)q%=tG4?RR;cB5KyWo6w9W&jcMMzH$mjm8E1vvVqwA5BV`T1$ZYo_A*R`rX#XU znI`}Xl2XPNCe^OZ4!%jB2Gy@*^k$hQ6f<*P+SOd&J!4%3_trM4uimk?pwdUjI0y4o zyfg{Y_50d4{fOUuDII~-pOdC{Co33@_k-sI=!%`;V_2oA>|SHbpwX}4P{LZ z6?kJEk9FNQTP|U_jR5-A_Tx~0t-GR+xHvB|stFwiN!;9i51cn2J}nL-{5jQ>AWg0FXFx|4udK|pGVi*s-%wYONxwM^H#3k$t6i3GyFVY`-{@7!DmN8ol z1}*h>ub_Hyh~J0nJgt2S5cg zGc`XpWlwpcrhx6R{jZ(AH^%v00`bWkk>0+^F~>73?)#)90Zv2`j2An4^kmGR0%Jpn zeFz6l55n*!aqy&hz*;4p70|VD}YJf6)~;?)24o z|9waLY@PJ!VxR+ngjPD^bclA&;EBOkL&Sc&8uj_=BFotk+G{FM5iZ?d=?0AZI813< zr#c7GPe9cl6@e?24s@9E0^vZCL50i`I2`Ja-V`!{lvF`e7J?S`GOWYgs<$i#N>%t^ zsd3T}y7gFPMo46$$I$r(&0LmXsiYV`=mL!EqA;t3T}l^Uh6xgIA=M;GCsrcR?0vQy zjO_(15*2UB>+$XNP6ew}v3wCW zlmV0`shI2qmv~pi14mw-&#xUCOiG~+S(qqvTpw{{*b6J*3E8K^)O7cCd7|5|Ssy}4 zg~Y*U71ca@10P^3Z4(DJzSd_%ZPL&y?z+6}(eD+(Or}OJl>(tcKEPI!FtLQ4+Vd%r zNM@AAO^fS-23=IdK${wOyun(%b!*wXS68?0vA$KeIC{*%Aq+T#3AD}}%4IH`#vv)j zlmTGI^T5D|1An3Ok=ZT>i9Y}MwqWr9`O!FEYF6B3UJes~&(9+{Pf_|NCT zC3MMU$ylCcTI0FkV(H38(H0a+Kc1w3TWR66qveLD1eH(^;(3F=INZH>Rvg>^22(2K z2lYY;cv>@5vxd%^vgA?^81umNXqmn%%|XlONinLmOS9pA@pR>*1tz^;hWvMBv=rIh zGtCnJ&JMX@@(-r)7ldb__y+D?0jP&UoXF90U0;%a|KZu+r)KRN(E!5z`lE~Lw3;z) zecy6yBV!A{R-V)+SjbL-Mx}|>w1j6|KEj>`EyGE3#?k52?k#eF!Sh2yia=^OKv(&ieFbfDo3<7OI zUu6)=;B$s50u-EC0NS}=D6$o1`vzppy6ec=ft~t%5iW^c*)8&tFp1#>FMW0kyLERW zT!^{!B;448GDtMr763gwysSWgo{uHp63yH>lS~MGfM1Vi)fT2xb1pId#R`wvfDNwE ze?l~`;m=i#{GbiR4r@6Y#}aT9OV1p{CICLgupb{p=QkCU1f7j345~PmE4wDgEF05~ zyf8BdHOLcH?P8QHeSl?%+Rc@yM;8{AaWi70&#V}fZ3MuW3|DO9mk&Ah+b-xIo8jH2 z)Se=0wQG&M3msn|4H__OX39#(j)O{Rn6jz0e2_gJc3D|!HIwqYF5F{^ZCrq4fEizB zVaxT;HHwcc?vOf;T`>CUw4x`ACNg1tTCgrayQ9C;cKZ=#$nN5{%~gIHr)>}NCskQ< zV!7Z{T0KVnrTlkBj@No@OFP~hU~D$AGi z48GeklY>kQT^n;`7(TlOUTNCpl$@v>vrgu)lUbq)eSl_J-Q-?bI!0CEEEimDB#JbyojmbP=AQ-P8Jn1Z>tMFOI21e1%W6bkg^JDV$Ao!rA z6E}t^QO+`%2nnhYxntUc8_#{@$4_8IY_bXY}4T4kkh;Upd!h!aF} z<1t9i=SCU(9ozuW>eQ1ftk(x0?3+_j-yY?M05o17hdB#~my?4dii+W8FpMx0XeCc# zcWR1H@nOMA7_ARvsYK0D*rUlR?2ap6An?_?l6>N&%QjZx`r@gx;03#SS8Hp?P7XCk zFwb~c`xYpwAU$@nrOe%cDw_{r8MXmJSJ|}(9v9NZ_*q!mnM9vr(QPC}g?LOpOX8)f zC->uPNCfq$ypJdX0}H&w1q6}#ARzG@qN;!+017cNF)%eQYIARH3IhUiT)96R=+^;{ z60K@52UJ829pXQDao#*T*`CeW%PAA7E%kMMhjxZ;H=i4xEyifCigWl+ z-Yn0~GqgKAPiLZM;UB~LKOfch{=c{K{6A;(et+TpAE)2={*m+jALIYC^nKqS%TM!Z z{(t%F_Oa-@{hyHsPI-@fsmt{JzklfcKaqf~bJS0l-~E37(f0l%73cY*%kvO# zzxREgf8eMm=ltLN|Fi!u_kXYdKlgv#|F`>p`2Sz~fA{}q=Kt&d|NTGv|F{1S_kZjE zkMw_j!{8~BmH(tuU)k^ewL|_thvE4jqp!G#eV^Lk#BcWd{y%T*{J4plh4uTzbN@#% zmz}rt|F2i$E$)=|gG6`seuY*gn5fyBt|7lKf93a^LBX#I!_S78RvIf+yyk0P*Z6+F z!{f2Y|DSg+MJb=6Z0(vSSqe9et>rv<-#0aJL4I_>`u?xo`$%*8{SzGfs%@w#o_+Hq zsi3L%b1c;1XM6I-UUa|GPCfNoh)(LYIx8O9w6C5V=fx5BCUOt_KX=F0nY-%jw-(^tf=zKr@QRe;oUo5QI~kC#n#!06M7}n%j5JTh0j0- z?#qO!h|curCNWf4squekNnamSa9c;K7omg6xzfo7F@L#VxE_`Gy0=| z`0LtY<0s#h2}xy$*~sye&M=#L3g78xABMhi(?xOHP*5Ah-Y2Vh=}4?22Xha>8 zUXUs-C@;?&kFiok^W(gln{ST!f>QCES(OE!eGJp!J#Pw=Urquv;%wf7{OkPp{r?}U z^7*$baeFq}(il?4&T};~GMSEIotG@8bvF8wUwuu8FB!YPQG+qxoZ^LZ^iy4(_|dW{ zcWPA^P16d0+tFQiQ(GEuUiy(vGe5lj^b;Mm*}i?cgTSEWmeQyjxtE%IMCc&jzz^H(`o14Fas?P)y!BEc_|0VX z8dr*z4{i2wx7j%QYcBBpw>zhRiKW5=z38XX&2-n}+lM*=`uW;(MCgA0v>V#PKYYu+ z9#*qy3V58!c#>z#W2Ps%HMFT5S=yK-KM<}>Hoi|d#9J{)%@&eY3Mf6kVzEyMr;jDy2+o=O@0Mpd^|Cj zF--%_-gx=|k9~;5A8?8;ljr{aq2HVm>L$;-=2)mP>n{Ac*`FNIdtQ-Zr3Z(zs|RG^ z@&?2AYfz!PJ+u@jpxovRsr2(-$Quvct*fc-$Za@G(Y*)yS+c)DRt8r)$U*Y1d!f1p z|5hzT#jk&-o$as3xU;;xQ>LNJ{{FN}r3xZ_;Ly7Akr4D6{-;bK|a{q2BCL z=G2{j{>lsOhv~0=^=6Gxj@1f9vSeLE`|M0VLwkg;3B`}nQrv>Fu5zD4P;0K8_q}R( zrqZ8!2(MTz`2MfI(+ccs~2--2nDH z@$_LDYqz+02`?}2;5XCBTRpyRB29ho7L_`vu)TNF?)dIitLy7~=$gM@AXe9T=7R+) zV1$7>ZoZnnclIW*0Q>)6&b~%TS81kmN(;Ing_b&En9tbL)lD7Oz@R)aO?_@wIa)8m zC@-`hroFsTY4~Iu7z*$EiSyc+E3aYdryh*~15c3MLZhm}%f2x4NGCKmYNiIzS4MH~8k|7YR; zuVIO**>{mimtz(r#Pxp3hFY0tt#?-+Phnt2l1oc_PBV5@(C1a7XZE7%aqO`E6)qk3 z$Ly;^8W3)pq+*YA0=)j2S|^0t)_{LHR*me=f6P^+do!2w6=_>?{|r`{{eOq#-KsIGQ9ed?d z`EtI(0P(`V>}6D*u&{$oAc*UNeJg&;3Xgy9{*wYJ-{soU$gn6HUbyq(uUAim&b?*` zPhx)h|4;SB*h|rajwRFA)jviTHqABlQ_+YGvt4~v^kS22+h0|^7|7c<*VTP*xdi+G zxcBWPtbdfx#GJm#7XH2SBZKjf{a+8Dk(i%oyLynDyq~rQzE{>CzFXre-KS4&eKK>T zXLO@~e;G4{@00JQ-*m6G55`~D>G=%szJMRsug{p zhTxPxY_yC|vQxjWe3ilY$VEl>{eP>|Chx{yry^aFp3rvZfNl!o+rCi{oy2eV$v!&n z=RF7xejdeb;wkGPFy2qu0qV-VRQ0=4g#W$ro+91^rbI7wG3;0`=mGc0JQ&fts0Xh< zs85hiR`QPMF8OC?(c%E`mHN_eNw&YI_k4dZVo%!_^hG@cF(+f_sTbg`HMUEmwF+)z`h@6q#5Z0e2@pJ zD)E$h@^6z*J!*C7$d`13Etf&Kq54e$92JO7Tm|Bs_r9>%wC8EkzYDF+Ww2W%gB z1jDFr&A-poO-{?e9P}3xPpL!w0M6Lot5g1||1VT`3w~e3&@ao<0q&N3sZWHHyof)J zyZ$=u-1Ls(FDLX8oy_&#Psg_Uok*A!Ew(tn=F`HR`bh`xgYls}_jjNt^noY*Xcz0- zZ=jUk->2mvBUu|CWq@pLz856d8S(sE=P{ znx_`=0(R$fbR-_oAN-o@{omEnvFYsqz5kp0zfbP|q$^!K0bRhK#xULZ!MO+ zkJa(?*bm2Dy}?fk*{0XpjCsA`e_FJthr~nvKX35egD1@;<^9z_rWAJy}rPrPmbC3h^zX(9h9#6_uQH9O)>11_agH1 z-C~akvLsj@KbljX%n;}6)31NhQ;huKWbjuXHq?nk#G~6zDe0!&^wYkXdg%;zrFGV; z?eC~M*jm@J_RgUr*26jFj%Z5iFg?s; zE7q=B0O~KL?!vOp^rH901;+C-$c2=oOrj%a;wBulU@=Al)2?FY-uk=cB{h#~XU&Pr z9T1b~{%j`MbVKc})Ld1ZSE8_~N_#ZK0C}NP*c?ZNc;>WW+K4*D|1$ui`YKrIon31l zrmiajyZgX5F`aX0eE|Au{Ald8S^f0Wo6cg(7uR7!u;O9`dw?jfdML=J4yTB=ir{mV z6r|R1GdTUl7*;|gxpYFeiQ}38>518V$X9hquqF-RvgU=BPh=?A4yiB-N^vu0=V3zt zf1%I7&;^ioyV5~abjxNb)|)XK#>ilr)KKC*g@TPP z>mUhDUZIxe>}_EFzzL%Z5bC_KK4H?y;a*iP>e+_Q%FM8^yd{~isiszR>{qplQCdWS z(9!PX`G6|2G5vV9%uSQc55w>G{?F0+)^4jma1mU@TBhxfk@;WI3_&ZF!gXJ&Cj@h(?5(m&3i9} z=gb)?2GPQ*L}>PiCNC)XDY_;t9A_sif79lGFWOEaE@mjHjz0tJGLm8nIVJs6hnO;j z2xu|!tM)UE^<)%dHGX&1AZ-{N!WhkW3r}O4hdu-|hvsOMN6i4yf%X!!{@p;wu*vz4 zsJ1teOPfDX#Hh(B^N2(3IGIFb$=u`t1R1KePo^Oy{W60C9?CRgfI>8W7hl8V zq5}kuR;odlKfL+MT+#(NvGz0$Q&21F=tr23FfM1{d1%99{WU0m4K!h+8qxgZF+KgC zZ^!cc{r%x?RXAraaa$ zf~$j-u7F0(NE8$iIB$5d?U@E(QoBJr2N3+wi89hg82tiT2A4aC>KafG8OJ*R!`w9* zNKL+IS%Re)6Cm=;F90-LOnz%MHWB?aauY+qwS>Yx5d8%Eny3kG<;27rI_+nq{NkXR zv_L>wp_zSBkv`GLa701w3e%|RP|({oWWHBB9zii0#Aw%8F@6DI(7_*M5VOHlw6t2_ z-=+%<3vk68T3-rfQ-LD`TI!PS?47&{OJ`-~e?LfJRzk86)m8u(&0m=`5sV;$U4Rf# zorlwz+p8MtBspiQrBw<9Vhe1vXt_v{09mVJ=?uH9bYw$*RddYjEh*}eHyvB+{eiwE zJy1x-wTCEypb$fin)214j}gdaR~i%s$A6lCmJyk(E1J}5Flkv@Y7Iuf|J=^E|0bG? z;#!;JB&!z07%=!~zGoNP3<`HxnZ(|)Kg?fJwOSuq7cPR&1&NRZVSrT(rxv^yqN)NW zH-Ui;D4L@}cLea6{7^lE*PLi46l%3Q;*E%Lq8qHZx3ORY!Oz1_FFQG#K@xZLJ+pQ> zf%Od%hA98X{S9(B7Fm5OeMz^OB zY{22DP$fU64b~C!WNR#9HiIX4vBy3Qv^tC~kc*)1eG8I0u~B5iJ_#8aRgr?e;x9gg z2y+bpAuy_}8Yh;Awv4I?29FuR#EV6UQBDy7;+ECOg^U{r1RD*&(XV3LqaY?@1T6-= z%JX7DjgY0sA6Noma|n++(FHV|*olVpHd=Gk0v!{r4q_K!e2*y!rDWB2ESO9H6lE1?NGAuky@Ki`;=8R{=RC^-f zH8jN52)oe8nrxq_jljy^pr?-)qV7PagYK2;cP z#MJ^cuJ1pG2un7=Qi~ttux*I2x~yhR=oioeL!BZxZ8bOuUeey0i-i|@A+pBs6R;C$ z_@;ztlH&3eFs)dW2el5b!$(F47NE(M1@6V=V0|Y&BS1u1)>-7VE)k`BO4=P76!J7L zt)I{aX@+3AvUOHXVHfR@S-< zJa&wbQEGxSR3-ya-a9kC^A-@+2Km{Rh-u1@%?s2uLbAI-oADt9e~p4nt(m+bjj!?f zDEN~)plm(h{0qs)&LIG{F(-;F(Q2;14jcGET8*6RpowI)lV&1k|ML2MLiVvDyw6C zS|&EEqG|JNo=fc6D_LxyA6=OWtIOa2&sIK<>D}0se#c@k$Y1yWf4i}8m*@T-9-gt= z=-*YS%&5i|bi%{=6v&vSyle<#M2-q3gfW>I zb$1~*5^Go;1-mB(ZNh^hAa$C;fn9uny>o*@Anf?|(VFx##_7%{cso-A$z^0kvUH3e zl&mH~m8&lr>@4=$(vNX7GqwPI8^{nG%Mb55HY%ba)V$XuL~cmt@N;sqkt}Dw1G`-= z8U?8!s=2Tsib^I%cJVjIO_m@U5E;45R@kOg(kf<-vR3zg<5?$4g;C9*hX@fmD-B^4 z=wl}iG+TRCKnaOBA4=#VQ0 z#!}DP@51qwlLOF`US{O9+|GWoBx%9+n=xv9)kwkjItv|4mZJvE!XE|f<1!>ixSX81 z`&Ecf8=RB5%MwQOAf8ZoNr+L(58F;tah%}XC_8^W&K6*ED}Q4+NuIK%dBM*J%Gcn{ zxQNW3o{A9$GErm_awQNSP%nA?%jBGA5-hhlzPmPX9o%Az!22VJ(Y0^@a#)cs3&H}8 zi7+;u5{a2}H*Hdd=ef^l6#YsBnWAEkv-yBo@jwNx@I3p@2AXtj`2s>tk|Ll? zlB5XQqt^2`sln6WSk+Op-dYo0%*qH~7!4Yi0Ir~n;V zGNAhc6wTDSwquBn(qp{2qc{{P#%Q!!?Xau{_+Hv`c*$6YG0bTscj62hC`h%=Y7o;a zb0+^ml*&1Sv+W535JVBOY2UhwVLCl#JT4tK+S|& z*p`PI#FevSMM)7tX7knlg3NXU9r|FFR3(OzktP0qs|4X!m zpYU=ltu_AT)QMnQHq;tqY?~R+=l&hOKB*E6w^D}M=;6ehav-s>+5^(2;(;Y=(+X5+ zuk(K+BB+BPZtFkLUo-piX}{LFfX@}KC@YIgKY60QhI|+#DNDrBi}4)!XF-sJVIqbuM81v$QlO*+0;67V?NL1CH-@FnJ(zCOD$$b z<(h3liL{(>rlddvL!AKY?`q|%76&bxp!Ef$I;<^yrz^=2^(^#6yAZ3^-q}gm_IbZ@ zfyZPq`LY>vc6~;hv_d;;KYFnEQOpzNS^H85J_R#ufY_1&S?5HX){fIb1gM@t6wwfx z0drSa0M}{Uf(#e;*@s0s5?AaHTdNZV`CqUblwQ{pW?G%pAGvE%Om9VlL08t^ooUSq zQslz{2$X?ZBjhKrQGVJ?D5ESKA^M2OL~S;o?P7otxazfL)DVcIS5YLgys`%zio`&y!4rCFAe4JmQz zwI{%woZZ>Q6~>SaDn0fj-?*%Ru;?&=q8(Xh#vjvmPT{4_ryA_CwF)NyI|~bZO#?_3 zc-(t~87Z`RYZbYdG4&Om+COnSJp5@*P^2Wb)ez2DF zMHfHgSk~}{1^mQeC5<40Misf;$A!V<=VA0LRf^jQ%^jMJ2_060K!zF7mx5uwY&mT5 zj5tL3mUvb=4g%Q`PCt+(=O-Hc-G`xF+@$d!6Uw@{lT{y`BF#cURf-KF?K4Lwgna7u zt(4v`vU6xSF(d~AsC0B*n#M5xjHmb-1}^Y~hJs_`3&nfryw8NPkAp^x9`G2RtkY%d zvM?sP3c{j;EXTonFgl4JMf6ut3zC2uM0db6`ZzhcVU*^em(WsBkM>W(T7nnD^X7Ef zY*GtUXRZ1>X8o;);$RI@z4_&QI@Aiu#6nx71%m>!u)W39A2s2YtkjBgT-3F6>&ky99*yC1+s{-s2#4x^WWOKvUA%g4J+;FNv%3U!0R(%?Ea!l^@t?zOSXgqpKu^h3F)*4Nfq0OnGr*803dsy!k;rDd#=*)R5OLq zAZ|5)4JhbMDrD1>{N2A?h{+&`|2Tuir_EtK4mzg?>OCmL`ix|d&+G~yne7F$$=X83 zM4Yg^&B7>=fzfgah?_LH?J6$K*j8&$k0P<5t-5f>0Yh0~bcR{Frm(Qgu?{HI?$?+U z<10hceP+_i%&o&@!8o1DFb9V8RTzl|6DK=5VsL_)*g-^ZM`Hj`U&JuBv!z)^!(xfp z*oGD@?sQs6q1CuyBitZxPCXs|92As42jXt6g#|Tp*tY|kQ}kKgATe>*TO>_M9+6-_ zOl3jsOl|)?H;;oR?-Low;jUrIWYjBU6r?GQIugVFaTy*H$DKO?ErA!v6~J9-2n25x z89futin{N7r)7pfNQGD=Fh}gNN6u_?sup>;=T|}q-fiEy#xi2F26eQkX<9m2a4o9P zu2k##*EGqjh3E=(W%Lc}!NalOh2<19JW~=$QZu2AU=Z92R+Nof-V6v3(M3(Es5o{Z z%q6#BfWq7YEn<#YuEsUOsD%LdDk)U3Sh&L37cdbZktqzr7;>kY&1@BI?W`^%_Xf$h;5%tkt=4f1hNsFPQ`Xg&+%jNbG+Kjbdez#vlXn2 zG>Nx35k&&W?dM^IImrt-VFaG9Cp%1tEd2mjT1HxQdL>C?UV(9}_nm{BtXb=1EC!B6 zZ8U({cucn^iQcoR3c4;?6AM8El6et_*9&%nfS&TLfVKvUXGy|b;5ZJVnOsr$%Z*l)25>W5(7F}p-q1LFHU%Ma*onx~Mog4vLUKR_QI#(? zVTRG_aH8j6%g}?}0hEi!-v%XzJPs~>YJQnR1Q^i7CBku%ToF(gi`guA8;L9s zl}sBftod(2@4Yf5R=q1c+X6w%Ib!fK-Q@hh5LH%=FGb;i4BDQMysY6Zpq|9(5$xWs zwWHK%=^4?21BsB%$1_NSPyQt9RVI6BBtjwQp`7TnTN7D3Mk#EPkn@QfLcc+UrUIFK zVUb0n+H?!l(RF6&r0%y2P-E$~_%b-YAVn!*>8*M5-%`*}qR#lJ&5w)f6u`KG7n{DOuQ1;#H)$=NmHqk2Iii80gBo43LZy+@mKP zA{;_V&9b$TXq;3MdT+!L#o3Di{aa;54bw$w;@cRh>{=q$koiVKL#g2Fd533wN(GA= z3bi=q))^<;CN%J$X^~=0$=^^=;)v=j#yKkj4_g6@Cv1T{mXJwtzj;Fvo$r!6^;v;Z zQ+^B4Awa~AMqsS7qd1SFmuVC#8^(>F&}MFE!<+v=}Ci)IKoh4R|2E+Y}++i zAv6a2C=lRiTU32TOnS3xh08HvgoNP&qG`N%j;Npbrj_T-#MWqLy_Wc|==e&3LDs!Am?vaI|J-oEKf4lO^%0 z1uC+SB3Ta<@UR$=(yY_toN!mv4M(TGj%Ee66N_R|MM?-vi4Kr+GsEEvlYAv-XG&6h znL=`cW%P>B@@A>IKuy_oqQZ!u1F$gC?25R;y1OR4d>b zr7Wq$>sf0k$v>VTt|BGGh^;fIWEBD0EsV94mdrzuZi!$tFMN%W2*;F{yxxT^Ztif7Ev<7PriDkxe z-gSg2N8)Xi{#_*)Y}*c;-da~&Ntv=MR*F^8mc9KI)t#z7iwV_NNOdqwo1mYX@mmGX z)z>>g&qnXnY|Rh&2wbHcgDI`SL8i6UV3%Zdpb1@TzAGuDR@~fVu@EIgd|@_`I<6xc z2#9$a^IGrBwGBZH$4NNM>MmA@- zV3iN2xjp)&)G}(h#}!*q4?~6|OD$uA-C2p`>CB@<+RhP*$v1X~?Snb|t0}74JVqY^ zD_QRxOkkv*mbO!2UW>^QuVTdNWAz(oxR4BY>33;7)(#XlQ(9LMd-FonblPCP*$GuB zQ=5sv=gg>~v`6v->Dvt+Yu1fO3gq3DmaZA-@T3 z6v@~M11h=T%1)(uQr#jhO#RKN(~&hbO) zOr=@a)0MM#(}kv97E6ext6jl4tqH*&S3)EL3EUGWaG2$=zPT)icSd1z0G+GGB~CU5 zXeAjjtXNSN;h~yA_<@94Bj;c~GY?%OA-3r#i?$|UP0t~S0x|A&pf!nK@IqI4M1-J) zHh)Ocm>RLB@)K3gXWHlDx375#*|mcv**BoJsE?iHIgq1~lWS)49(gSX$j(haA4wR@ zw@n&ZM2*PsoS^J$N>9#e{DXc-G&?mMSqITy=7}l&f)d z8!Yl*v=E=<(3DB)(vTq8lRq)lLwtv$)MCi4?3PCc0ze7(#pIwPc*a=ON*vdQidBwBE;6D7WBaJ z^DOXiS8>LE5fBKW%SBfUi4KohBz?ngYq)e39-43F%APe|`$0})UufDiK_6mi40>%b zt1UcoU6+L2IubUKJWNl-v3fX~)~`rUt6}hsGc`8OcpDACHc?DY4BeYh?Ae9~;eXaM zftHOC2_;l}E6vm<<*7*p(OdaDl_^gNzgf~Q0doVJ>>O-YDNe7WgGViIq zYt3pIv7$INiR(W%p#n4H2LlK!5O|sqDY?X8yS#K_!ST8X1XUiH^ka}%vfB<-7VeRN zEN&JMkW@|@D!?iEv}Bj)(I^|>812}TY0yxcZjBFM$yTHy3>oUM4>e;Y2f8J|sjegz zG!a?Nm1+ykzT@ArK^ul^SWQp8yTy#ukLPts*exXW&ItDaY43Wqt3h)J@&vHy*8|`v z0JMs%6aePINgUZq?3umA^0eBrT4armMcjf;w?>EhG~NhcVK;Rk(`_0d0M%!f>aB_M zJQi+R1#iAps))tBCsCncwicjK#;q4~S1uV@5SP(;q>RTp=bO~L*7P6F?*Spa`*SPu z=t(cm!gLZU)0?tC@^D!YDdH9Z$(hTgPE=q8JG zlDV56N%v_z^n=M2h;ylK!stm7Q$np4se4X2zcXpcA?5ywuRAPcs7qgXaEn2!6c~$_GoPhcpI`*fO?5=JHNT! z2=uw4cLdqb`2DM?5Q9F%JE6v@kW(Bn_G|Mt~??fGL>e6@4sURULfR(WdY%Dk`3 z4V5QlJzZgg`(uW|6KD)PT9YXzR|C$1~X{IRSS zkF=h+uPgG#vbk%C@~_yUb|c{nuR%$DUoSS=oZ=sI~$qb|8pW- zq6sl5g))h)v>CGx=bln{lUnRY=5{XyC zZ9E4(Wwft5_=DtshiR%>7x|`p3)?iWa?JRAg^3^heh&HZ!mm^EnkP!9y*CwhZXVC- zyJ*l}&&=&%3p+eQ7|fsbZJHQbS@UI_C4k=9EdXSO5dhQurmZ<}FS3)DOPfs;%fn+` zna+mbMA6ckM-(9v9^e)Ih?<1(WsWmI=LM20?HZ(K2oZ*;GHD(Z3#ThYfJP131%;!8 zvCgC$)^JjAiNk0#y?G`=Q?YR%=5$oz44#NXfPikD4Wt+z+~JL&i(3t1XvasLI?n|B z#EZ=`RYf*O8r?Vo3ZSTk5{DJ$QCM4LZC8S9fOuC}OQV~`CWXvhBrrLhqVGJ8hbTg8 zeG?PyaF3SEkYB_eR@IOXTU<=ZV62X^q|N?FgY2W^7>rZegPIOIY4Xf#z&9p9l#&l^ z;SpY`ksY{jqQ^$mw3dfFbES^jsND}`b12*jZ<3LtKEMbe8oMHZ`u$-;9m#}eM{jns zB1$&sPI-&8%{dDojazRSs@pW|Ds3}()S8B7v0tB8j6uwe=bmPg^B5#yXI-tmSJahMO;k?aFbTG(P!+XU70S(M&cXfQ48s5&DpP39E)&eOaO-RhU{4eI zqT4qGTq%(vPke|zhmg|_>y~#`IuYZ=&R<6F6l%I8?$Bzm=kgu^FAYu}^;$QwtHEfU zw4%}nV)XDi2O?cYbBJ)?^uv2Z(S(=snrIu)_gi5?6N;<`j3N$o7T@x zZ%Eh`S~bXsf_5ZqmccqVw~7aUSoiAe@Nfzp>Nd6m>4u}+op8m0d226);`N!U*KCNP z=kSoWwc$CZh>M5ZfT|{k=xByuR&-aoDK~zv2Vg!JTny?D;DnGfd)>G^#UxS}rcyx* zIZ4fmllE+)QVhVyq1k6BJ?tncpF~C|TBFv{uw>xVBFc6^$4%;N=Su4_y8q>_Ks?7S zIw==T=wOaf{1nBA3P#uofk}H0kjKQ}40J9mwCiggAWE}z)+2P(n%y-yusU;Y25-IB zdd&et0D?w%oLagKz^Ve1_Avh5m|Bh1X!uCQ8t`8~cMxWhBn$PoSS0FwQEKa%CViRb z3_s=$t9VdWbS>9vQQFWIhFkh%>!_*H+8yzNkXbUC%x<>1qSPo;ld(O5-n4bxk<5|a zxbSp7&u~qXqR0~(gOG!?SnZ*=9qqD$D^>}i7@_(yX?#Y6xK@dDxVcSGrz|6*cH~;N zZwqKbttgI^N0Utjiq|M`#GV5vl_+!AgE%KW2cRWDj8amRQGgWa}!k$278AHGBcnK+l(l!o&rlfyKM5;-c$=?B? zse&6EU>wU*X!6v>z2MDS$txlzaP&ep?_N}-Ou%MIU-vB8=J=EIGkaG-t=;Xsgv{u0eIP^LVb50f$NmJs~ zQFrb=v}Md}9{9{3n*ab-ec!%NsWxth&TxmMYs#Dr>whU}Cj|WJ>>{o0?j5HKJh#z& zv{&d7^gV1f*=HIJM8@1CQ?xinrpo-iom4fAqWR5)z=#L<%rFsR_qeeB9NraWkMig*d8+L=={x7_b0kvG?mv`3G}ul=e#1=*vUP_Q>NIY zdeQFX8{ElIU`KC?HsYL7G!)kihsmAl^pjyV;Ce|?fsOeQDxyV^Z@K{hZy~C5FA^2r zc8bhyJ|uk|0Z#DbRE1pAWvXT};ZBaFs?_Qz=27RR^WKZOl3GIR&~!#Qyy*24 zl4TbHr#HT&DtNlnsX#;#F$kLB6~Z9VkKl`@uE3<0-!DwSSWLJ%({2PH`P1 zRh)*sOhKEc=uzb8E~T5**awIjn=74+aW4Bd<1TUu7fo$rRv;~X4*Lkv^GhtZCV@Ma zR)8*uxyr`d1ZKxRiin(fy|j4|&N?X~=BK{Fx|ZAxB2UC@IvZ@?Lf4ub0z+ObAH)nm z7ev~!x<{I0`b)`D@g352C@mU5#cn*{D(x@(yGxX}_BcyO3i8!{NBkt|oA6ND79Wh# z+St%YFp*8%8O&k=8TpbhnVi7oY^>~VZVnnDEYMW*CI&rTJe-o&TpbFktx*%uNQI+f z{>@sbX0=%S#(TLWRn65mJMPpzbQn06J3nE&U0TNr;U+o|LBl;()ERCz!Z0rM+y(R2*=edgNMZwZ@F4Kl=N&}Co&8P4 z_5W_Ps#@0->Jr#|P&2#D_4N(|1+|xN0h*1v23TzotZ*0W!9-+vhdvcKKiVGlJ=T{F~av_z`N9=eQ?F`jANYg*!9+kV*>VbXHa|INv^6ZDWH&CyWQY$U*!CQX8 zr6Jmp5_+ZC52bWYi$y357TBLaj?dG5z;2OsP!>@ zIH4Jq(W$+&tjm{!CtAiZAhwLtTDqpoFk6))qA!Y@6r{Y#8MvXjL#`z9RqaS!maTImyySQtSoi5vr$BEG&^?wrHMQ*sS^@j=SWGG1>+&A33S`W! zCrfw}Db0d51;wGhDjXF;@h~rw3sSa;{(3|8Pcy$bhHlxxEO3SLj8Wg%2cP~=fjgDW80rn}A&hx7LfgTY3-OJ?wZ~!5EMOX`Z8x6-b?J%2kc^}Al5Ec| z6qs6i2`9W%4=qT-0DPF&aH4d6RhzlPSchCkEIb_Vk+KQg}7s~BMwbRzdc*Uz2Y7j;3 zQ03s*%jw~TYiiCClC0>kvuKb3BR4D5vEPKGMvjN0;qDME?ATyuwH#AaHb*VAN! zc?%v<19a)XFQw#?Wd8~%@ZalHOkjAe7HS;H92`XoxOt;%mRp7=vO->-`@Op3oLU;; zGJD-PlsLp%b^F7z)j>>c`0$nq%ZaZJWG7RnrSU;lsii1~sFpes!ougDm4=^C(mc2D zI9!vd#%82-I)_3Pvw=q{nP1GuCpmzD9p9Egv1-GLHlYlUnzPh#7? z0^-?KsF=|`2JBqb`^kt;!wkm^nLw!WLcJxSoV`NbQq(_hNUT$f>j?%HY(xOH6M2m! znkQbRNTDorZr_sdT-)YQk*1zWCvVnLo8yqExT}zqV((aB`vz6!rPRf5cLK;TIq1)m z(6kT0O30;DmW>Y07~W%ZXdGtS>coR3tRcZk*{hwsKNx~tZ88z4ZwH!jpQkDZtA!}S z3$A=%!+lXvk=yFBzTNP&efvdhGEcQ7jc@jH`!(_aWn{{k1+c7`8rQH_^Dk#jmR44~LpwINmZX$I(Q-i<}PFp<6xuL7@ngI}3kIs7Ai^gJ^Tlrm(zU5Ox~FE{`U zRJwV>mXigAfjpBM;Nf4Dwv#mqPPems88N&^gG=f}TStIk&K{%a!sW^H)tii3@5^Af zoU!iS3g>8)N;QFimO7&0wanwiKW)|ULs@$@R3W)G@rc@A2t9&{ zcs;8dWqUAf+J~gUKaSx_Pg-f4!U5(&Ru4GwU1Gua5|h4a?CS#QI3EEJ!;iN>=Wf81 z&?R%)zc`sE|NUGWrAUZPUKkk&(h;czEG8c5erwghxL%(aZ z14IIUgWd4Z8?8c?tS$|-JXch|8iey!5^2H(w1MBT^gc7to04afiHQMFdPD=F;_>Vq zjOvxA{-xf*7$z!Y7?+AckILsswH8Pm109e< zi{3F{s3DNQ%+iIHxRG>|>0dNjJ0lfu($%hrv0G^5GhkmUz1t>X*$>c}Gj?w1c!ztI zKfv}GQBQT#B;is(kfEL9+_Pb_Mxl>Q8=Gd%mTq3rA02ju9dw_M!r)oxN+Us;y&ciLK35cXK}AARjwXOQ ztBRRp`ATqBG-c!aRAtl zrr><57~{F*0=%?bkPlP=nt#HSBc=L@Ymx~k=Be!RHW!WK9J>IyUdfU&fVCd2!7vEfAA#6HO;MUYy&e8AT(xFEwSV|5)$FK3Z% zLrFG{w_%249kDen`?mU9~XX-^9f0KCU?f0nP z9T`*R%RW1+yX)cdGun80ozE_69^WEgYOWJvlSsBnq%7tnaHRW9BN$<5e8L{?@;42J>M@SlRhc2#ISPNud04yrQZd@d*2C$GUItkYvm()Cix3pLCXoaqtIEP#^a z#!5!T9X!Gd+vO?ZdbB=qV<)WUlrR9=M$O3$I=t*6D40@ruGyXLczAU^jL! zm$dsaOHDPP^Pd1Nm3Bff|pcS6-A)i$djmcV-%-2(?zOc7qS^^rCz${lTK7Fs~ppgCy}6T@P{WXW|`HXNvv}SiOfBG-vC>8%hwl@nJkR$q8eC}kOOwvX$u%!aybF3 z)#w{8b3?g*54rS}-E+89P5i2$C!R#&q3Ftm4y_4sRqS_SN3><}1ax3I>`#i%Sprwm z56g5^YL)in_>6OEVg~uU1XpjD$XJ<^+&Y37Zp}Zt+sWHkM2})0(tODGTM%$d1$o4i z1Y$ieETyjTF=mTAIT+u%+=uK2u&|3iHa-A2P04JsS)#m5v8Qv1v{qZohcYXfT0>z^ zOO_Etup`0o0_A>2 z>95C|$o5-|0yo;(Z{)N?&FGrgLemECxfH1Vc=_MN)%!;e#QdHLd6lD`y0$NHeVhSr zz7Z8c^*78&cazlB4HczYi}!WU*G;lskGXoYx(tUGdyd|sJ&pPanz z0?`s7Ol|=R2{vT=ej#!ghMWK_iqNk6;Lc?|qTZ-c zgz>)>PK}=GRQh)A9y z8}Sj?{!1s)j+Se3!_yIRL8-{4YeBp~iO4p@=5hFmJ!tv8n@2!1VilwI2=MZss3|aS zn%GodH$R52WhWlAPCW~>dVq*L{Ww} zU=5TeDS}P6&qKNoK@ANYpQaroQR$wt7V*q+2ro*GzL!;?U{+O1FZ-YmYcC|WB}RuD zGgWg!={SY~YuBieC(HRWmy?+ye#ng5CBI(}kXC9cZ8y8!s_eYq53;!${n{G@V@yH5 zbX=!yF%hfLv}|QGmdF9}T!`$~DXIiy?^hCyejfp_d2}8>@OON)KWnB$kXt95CSrWG z!gwrQI3_~TC+?@qK49OPwK0@EV3@3NrFlMIgh#YuldI*Q4Jg@MQhch>WGC8vvcq%^ zI&pm0B^S&tNLLS+0t^_dl8a*UZjwMR3OZ4+$BxyFkji$R=(m^Vg$}Men(;fS5ju9A z`1fuxJvSkbM(AkH90uvop*AlP;QV}eP9e{SW#(K9i;%v5H|C|s*(l^X7T2OFIWdU* zk-Sf?*0F7IICK<5ea`-+>>qQVV?jdWE{_y_!<*LC)fN@r$jLnw zaR#)X z90&9+ogGESX}$RP$;xLn!Eku=Fy~2Y&I3w;;M4lSq+4k_j}SquB=1FOrx1CUv5b?U zCMbd8@+o*~uFB3aQt!AR71VvR(KEGaPo1)-MvX_*#nA=i(9PchQD1i zy|{3TRBAKAR^a#N$@r}>=5|G}01R+uN25|)DXHLiu$hjCBGJ=;v`eOpfp60TGkx*C z5oD0+hK%l^a{1?a0X}bc4y3*FteR4gquO0FB#IJ8ehi!`F&_*lw`!7sv$N}>4nN@P zAA5EV{hyM;m3YyW^=I$T{5>AWy~p{c{Sw+K+ugj+p`HSIRyx64rQh7E z40X|NFwJSL(Jz6Y$FXFgeYemF>U$?UJ!q#gQ}#~p*bg8gp6#}gra9mjPv z&&FoYKI(Bv?Lpe?J#f6W{aNy-D)P50^3RqzX|L)_Eq_<}rd#F8T&2ofrOI5T%3P<) ze5cBMr^FgaKST#! z#ltz`1HGGhj}KmIQ;*ErWa&3xXfn|CH&`Pa=|Gdiz&AhVAhkwWF*B>2x{L43S++7MLod9{Y1T@nU)zp0r^7z(% zr+5hIW=mkHTI%J5*}|RWHEJrfd_~%Krs6mny$hCEt-lKdpG?9FSr~5_zLxr)0+(*- zVF#B;7-+I<40hXq~d=KXbMif0%7pTr+~0OPD}B`d3fX(=@V}`W`iH zJ?f+C_ZHy{Cj9G10)$}(^~|{sw{?E>S1)q8);c|ze2$kfD&$$^yv$R!B^%k_iIo0k zTwtMZSYpV|hvmrr*BP93nR9WK(Y-FPvlP1|6@hTwsg$_}vG3SQq?wd(+6 zT18kEIvfeA`Eo9rMb;9}9f6v@K796Wa7VuoYv^Vo z<($ActQKZ7Px`FwHucI~L~^-39Y?zAQyj((?x zL@a4H-W=>*?wIC7Pf>|mRG_4Xc}KC3heE6mB0MGA)68S1j}6z$(2tq$*x77!EHo97 zbJ`&-r#%UMBg3=J33xi)mcdq&-ycbM%It+Bgut&5gRSpqpQoK;6*6OpE&Cxd(a5+1 zvpmp$5Ogl|t2v zZ8(Ar(jw!fmmQNtY^DYRMi~>n{aIaBekeFk-gTnwC%1YQS|dUH%z6=o@76OkF-vFX z*%w)#Gh zz0CRdJNTqQ@%?);kFVeRKeQRM`HUx7RQperns-lrGv?>7@l#h#cT-yD+O{J3Z0pLp z?yj^AI6G2O)!UV|-EP^}N%|Mw{x{j*UDxiW9n1bFvmNy@%U6fy-5$B%C-y<+)lSV~ zYujbIZ~*+${#H*uROMb)<$hW6$1OQa`D_?V`DsM?Q*AyS@4;*6*qhXuAeA`3~=fyS%NJ zVNB7z0EFAp0AeK17hGPXq_|LKW0TkJW5Q3VxjxgLxX8>H;^5vcy5lMP*I!#rT6So7 zN3KoZN0QnZzQ6}C;TT7TxW0h`lm%y$a*cRL7p~VbyVG@-L0ygmQxPN5Z59Cp-4RP` zvbgA)@I=zM2SQ~6;aKL88mC92Bl8noZ`bW*lx{mGL!d&8@Oe~qb9dLk22Epe>ap7*HO%zbD7m> zv}W^5ZR5juGF(hcE>cC)83^d@tEY0tKdBM&Yj%@dp_`LD{8(m*c zZQ)PFHc&$4A^Ej))t}cH;(Dr!=@&>QU2&7+s<9p(1oXrSK9)=@dGoN2&P!Jr;@TG* zhdRW=qJL-<{5pHOA-A_P5$Yxtd}>~TfCt`6cy}t8IzfKNAdtGzFqzG7D-)1-CHGhe zv*|VRyMFLrHP{n&2Z5R>s~2Ho7Vf4WBG*f>onIQz8y(_ezNSC(k zHaM$-7&f%7pALT9?FZ#%AHB|Dt~n~|>gHLyCL1&bMKPBDK(4rUN_OPd;v1M&Ni^$G zPNvg`N=qBe5=l;zQzPl$s6S=h7zP}TFHTVO9$Z=>?qrSppl)=6%igHHaWqJpomMep z($nF-1|W~6H*`)!wd>Z3q=ItDoSA}<&~X`F+V z`N(TzlZM;y4vVGx0amW_FT@&mk666?`Sf>}IgO70Jd6a5Tk)R>KWf|O&NHjPk64|J zNiEy>d0j4!^7lDB2dd0uv)(}6^RBB1knEI)uJEMNZSGoVePbvqkPI~)5E)S#zHUBv z3@!S%Wr{w9cVt{zI=t}sF#7SpdPL%sY3H-bk&X4&uB!S{kk>`!1#q^(_aL5g=T&Dg zOt(C)lP%2bGPch~t&>RPeZ-#k;}5~pPi6gCD91-Nf?q2)++~2Hx;++w+0EHFjt+8( z2n_UmK;fBWlxLq+b@cCh!XyKY4>L?r*#A4-+ueS6rd`RWJ5dA}6XD#5^RYEYM73eA zJ>24d-N%8|4j=k_=W1*Y$N#zOn(%`$ZLvEa|E&h;CuP6<%|^W6g?T>!R6wi0?Y3ru zzJQlrYR*3EgZq_>hxyrL~_9q2KDp3lYz?|y3$b}QJ`b|2Bs*%c4N%pt5()u6B1X@1j{wa$}VmIZQE_#mZb!Tv$ zp;)SXg@I#c>2UlozKp16?lcRGG)vi)j@<{040rDIZmg+1w#NM0d* zt5PEKjEDlbX>}kQ?*m7w0Ue(ZN3Jq1q{AAIufQ`d>C&J2j5@ejiN2A>@cfG zb@~IgNytNhzh>RYVn8tT_WE_lZ_$$KNV%=%Dl15kaIxMMZ|LNOLq?syPeFmnSh*@( ziItP@Omu-1TFB~G-LT?^3EyBWH_E-y;Bn=*1CE^>bsEs}UG#$VjwZD8pICF=at}+1 zJ%SgdLIdW!62;!GdlecX;r16C*FIS;u>5uxH}xKtAW7xQE-m$ORnhLdAmoZwsbo}? zP2;}MqL!Jk1CYvbvkj)S%zu~DdowQn3>SMkE}tcN<8S@h4T0UG)tT74>iCDq@p!Rz zPmCJM9eZPaCT_)kj$5zMDX+mlnHc5}bZW!2-RBUyu<=~~*XYRa1yy1@pm+EQns1Ev zZ?Ev8TizP#ccq2iJ0y#t*2kUuVe|!}MgvIEd!!ar)dKO7I@*41h_Jyvl>cYd6*L{i zwc||mt^1YxYBnBxAcI-HvqCI00M< zc}ZC?>eq}!WUU@L^?2`({TXr~@e6U$U}F&V-?S&)kjhtUtRE}g;vMSlZoN!1$7j+u zCR^1^7hSC97(GhY`VqTp?1s>G{dmHrXuPPVFaxqI4B@p9E(^tY%ntZUb%z&LE3c}; zOX8~k`4$k|K|MX3P@OT{Qy*zstfwSglKvMHs(mLm6k{&z<*)PXC}19|vLBC@MFny5 z>l7u6p6ZsI2O2R1KK)3@?a2&fGaV>#i+q~TC(2NYRJ#xi*W)+BKedKnGlkrGQcx{` zBriu7s{DC4uR25Bsf&LMnsLMbC+LDRh$I1oI&^)MpmHyHG^F@^PPI3JIl4@)@0G$f2U?3WEAyzcD5g1HokMF6{^wXSWEnQGrTVSs1L@WORHm0QkfeL~Byjub94X zyl9@O)vyM{tWbdvCo3$OJcg#WAyvf6F3Xj@vyK4pAi?ppg2?O#U z0mk`+yxDC+>a%|Ax?qZd&10xuxb@Z3rRSJ`G)$%v-^w|Z}Yk*S|ESEzP2@@Sw6%nUO0B(%j6Q%A-C|d6` z(xx0Jv6Xc<05(C*Cb3>E>0tDB%Lt^jXOzu!W}+2!5Fs^|&hJ-YRNYjl_hs&*(0Pz# zABt`^#HT zfwi9n$F;7Y*13NBbZ@zEI!O^ei%0ngbsvi5q!`dp-`UFC(Xn5UAv{->*gk8W#j8Lb zWBn!dMl7R_hFQwPr8SxtYdL;f`Ho`xJTcD{g%VYS z8tb+cKec^Z9XHdvNJ1P=V1tP8U)=I z3)m|UxB$*OJ|F-dJN0z6>MpsnM*A|-$Qd%|qFtkt_!u9 zmph?O;yMefH>W*3?FRuWz`DJ)`KQs6!Owx!D&|IJnCYL(qXLh_5E+gRPBY$6@JN?L z9DL5+(A~)4j5=m!N|WV%`z^sUVRDUypSCz|G1rW1y!%#~6;l@^9)r8Sj8qqNtC6Hr z!m$;w27kPx=&tr&G%1Pz`X8o`p^5`yw2As`-lxsA4L|eGdG^cjROQMj!G@{#0nt|jRL)fHG!9|_ozeM=|8)cc<>6#H3jPg7oAuEFH++gn~Qvk&+-TJPG_zYV; z=Xkej9%h{N;5XL#4~epdq%9D|m}*{tOqb+QiukywV+ZO~oS}Dps#`#d09pcpTykZb zbeKg%b9Qobl$&=8$6?ru6d~NK@4}n8(bfRTp(dg?uF(}Mq{i96j-&EVgQg1SyoG*H zj_TMF9ve@ich)*Sd>0#^~$`#xKYsXPLCS-~b9xb!KM@qlqkTgNuYvbbv_zjNKeci~D;P@!XeA zJW3(@7wmi4o8v|bA;aHVndWr5>{AF8O-ZP^(iGZMAGgujT9b6do+~RjqR+SH))ya` z`RO(1A2xSlW_8yvk9O@Nmbyox)rNB!iNxi_0>i#2wZ}Xo$m1=7jL3=_VjnKsq6l5F zy}6M2fCjd49~Kn55xcUmXcN)I)8dq#udPoChY0^Pe0xD!l9-V2{>` zC#%V1XBe$A zbn!k7uL-{FJI5A&G(1}pbtbIvtz?kxoc-k*R{{eDCa~5VE~U!#UJo_(q?+w@|V08#Ub9UKag{6=8JGSY&E7AUUjV8?&m@dQtg=ajz>CEsJ!}pD1?ih#0!Xe#ARK zlKrGisDP%1zu(c`hlCm~?V>f2BgM`oh_-R+M&EB9N%jEZ=xox!bzfXa5WYwa8l9BdCoT z!y7sy*!>aEEx^tqh-Pw#pS(a$t7$C}hB_pH-zdk7ut z{L;zF84xBQShs?41lf|?a}*X#t(TI)`A`+Hd7r1cy^!|;U8*v7|T>YEDfR%LM?~O zP6|^GdH#te0$q}UmZM?bg;rMAMG&jxeO>eEZN^YT_UmB;gd^EZmq5(6_XfWl7hgD7 zHaeuUF>c3XK^#oT{6@M1I;i@9aVy#2uGefi2NCq(#d4UXURF1E;Lwpqt9dGz{$>3# zV}f5v5;iXSHf!pSX*@<95llv|VWFBF?1B`Lvf^yZhZTQ1My=$z#ne2O#KitD^=K|r zogob#0;;3DcQf^n1K(SxJE%oZ7pp@(8m@f*2& zpS*f5n{2Zm&F}hGLf|HCqh+-Tb{pD9T7i!R{c-jAd|aWmL2n_~S((y5FWHnZ{N5O! z(-2+tc7IfE&&&@0n0b%PVatA;YSPTHJD&yhrfa3vuix6cfm`%(%Rkcl=DKkz;fbWV zXLrVb6#cunTgks`g65w6_(}Bb7RRgT;g?rPCh~l<+R`I8`Zp}41AAp@Srq@UvMlDS zzrH~Gj*4`IbN5973$io&WAeL2EzBR$VagHNRtfk}dz|Pm77<{q z5}abOlrXi+rWX&WbBSJ&qbS=65L*7OG?=arM@wx0{Rxn;J+jUn;V;n4`xg2nQ8x5?5E) zDRYv!VyFP`A8bxM-EtbR`L5n(k7CTYNSu797gduuE0if`pA!w&4S@RWSqi#_P;xYy z;gaWgNBPIm*Oc?;(TtQS8QZlqM?*aIcj6B;{u8n7{oEpaNt9RV)ebvqvI{gJ8NR0i z2}Z0O-e9V^y{KTqV{lA+fwzhNe^sG5Tvk1#gB7Mmpo1rdqw zpV~kau3~e$PaK)ScMm%*AF6QazW4?Z z8_OM3R~4FVy@=I}ocMnWUSVHDIUl1XAbKM>h%#&nJDnW%Z3l#<#DV=vc#~Pp90in@ z|rQATP)C{vWzLe=ptl%T$8@v+w@0 z@`G`{gYti>?|<;x&N-DA`|R)Z{|^7(Y!CQ!C-nC7D&Ev*yMrp@_e$=x$9?C z_ebubeQpYS`~BUq;L&Thm36$nd~W*b?NFR^({3`$ThE`I_0w)LuRS*9;aUBF*M(%K zPBYs|ZN_~xuTMUjSEntsuH3q5ZM><^OKrxRX>GXEo|oIto|oH>UKHZ{aq!Dm@i}MD zpDuc5w=J~CKc^h{^Vb`3+g&;RI&k-kn^lrKPA*UqGDuB42mEUia?%{>$n!`#nsf z`jac6bJvNKe(#9?gC~gB<@WyH+xGpRGJ5rC?e^E<>e1gC!L{kHXHPP-l z@8xTe(z*P-Z}zW-tA4agPnWH4am*hpT2AAZyqX>$=nXY+m+i6^QR!hK zU-9iNJHFZSE#5tWz^3bCI0AK4Fcmc-av3$OE z;oE&}#B$q*zFUjW8u6g$Q-~V*qcUq}Zk?;f%LGb_(xr7Jc#S};Y zkOBCURTWh=fjg)qhnn{syInt5(gJ!9ekUekr~Gr6`a6aFvg6wB?5%)y1GvZsFIQ{7 zXx)G8A`227v8L=pdQ_uHmj38kM}711C6KXS`KoMTUHzqRjl zZ*^G9z6oYDy>?yMs0+-l*FajritCw|Y|iZzZ0Sg*!YbIK4WzODTRd1wx~YPNl}7&h z^?=2Vl^OZMYhP-cvyHaOA*`giF=0rO|8SjWKdfooXa^*3q3xqC<)6_RXz9<(f@Tc2p7L(=6Lk zx>1A3OSv~HEYP+n+ITjzx76rO8gw^aGyFuKBaD21gsZmZ+WR-ILXz`!Bodth)XGr+*u?3l= zpN)v=y+|+qeYL;Ov;u>1&fO0lMA?U7KYwj+-`UZn8M4fm=SFDJ-L(IOdn>yNUnliz z5Bf!K9&s7#ZymUHMzoMofaY2>RNOY~xpvCiRjVRqTkqMi$t_Lz=_Z8-9)Zmid^*C; zQ7_G8ZS~BUW#M5^yHx+Zl}x^BPwp1$R&!~#OY2#(ZZyUpV$GfMmH3RV!IS-(`^IyT z@vd!u=Wn-;Ty|%0?Uos+ifNf#_D);KgccN5xkMxb=h#m1;3Y*Yr2)BD@)1zaQbpVv&V{_wolQpmCE@ zs;Owsdla|V7$$L!&z}iW_MpwJj%O?`HXLEzDEIAs6;g3vat6A`eq%;WshHeqm)`^D2sxmggyRU-Q86JS)bh1d@E_+6H#~*MI|5QA) zgpEUG2?(3k1fSI!Yx)W3f5-vjsgeVuaosb2FaxBwo~iw4h^tF z*ikkzgU~#{9n5e%c3jS)AxBeY$UZt;WB(5=iIR1~j;6(ev4d`pflO+%+aE#OFD@8| zaV3mcKtG@;MV9*dO(A7gb}R$j#2Jx{DCsB*Ba~ zf?f1LPcd{cghEhryO3l@l~EfK>l@R-kSMr;q%&B-wdLD0t(k51k$-9)5b&u zN1qC51M3e}*Q`R3;Y~rVJvLEqr`R5&B_R>tG#b{`Jv2UC^83Y0L3l-6HJxZ}Z?*f3 z8b{e92;T!I*M>a|o`pY3t}qYyW{lm{z0t#{QksZMgs6Av%iin1Jeli@9%2F?Kwx^~ z5E}8baQG%3ifRbYhGFtrr?g-&^tZhg*)F!yRvSQC}VN9hrBQ;-GEu zj?cN4GoO#WaZ-YjmRu(4FSI=?ileSa_|VHkDSQE z##zoR@RG~3e^Y!hxLL5;} zV7IsRteAbVZCl09z>^`y12bDa8Eijj{J+*p%g%cE)*q=NRo>L`=^+*?+f{v5DTy+eJ2Q``6vCVX3(CXI{${kqY!dDI=-`gt9_@?o`b*1&L(p zlLGzdRlrT?+qS3ljYd1DDkK3vZx!H*bRWRNjV2t1|9>QxjucBTNb^PXK})gdi=TjI zY-ZuWdRSJYvn=A@hnVy$lq7m>!a<4u+oDlFak7 z(e{xeQTEMDp5o`}qZZ_GJ)WthT>EYqX_tR?KH;h(p{+FIZ;x_nEu#@vP}NMW=;pWJ zBR>1}jWOzSZMf@ej{L8rtUjM|?`$A zPT8^NCq}-9N|F=hgjOStU$(Z$@Ut=e;K!PmV`y>E3hB3r);>Qs+pJR6dH|>^5T?mC z(xqK6bac`!Y>$x#;qBq5Wg|>yv4)=hC;;&F%xP(-TaiI~2PHI?jBn{({!fTDwU+(I z?Y(S^INw!m*e4soy@LOSm6?M$3|$1Ky1qjX4jZQtya!pp|6sjE4Mjr}?+f{Ho8k$P zjl1m<)Q(quO23%uM>g=2O`l1$(u>nf$E;zQDx_w|u&=Ff`Zn|_Cmlkun%Wr_oDWVE z%w@~=osRUdAua}eu3%W@A2dBxObXP4*=f3gEHSQes~6_n{lwVSID3}d3+q55YJArX zNK?su6vR7}cdI)09qyhx)??@zX4TbT%7Vbq^L-8p|4f1+pg%#N8+!d<(VLc+=`tkfuU4dsYQma=e0N!>`1-$H_6M5M{Hu2>F zHe0oqWuj8ME{|k^hNo%C2dC2%V8iTGosDqyk67Pl#?M<5a6ulOTuq^f(OV*%m`JsU z5`_AVe64!g65){UpmnIZ`h?)fIbm9>6M5Q*nq>$&HrO%d<=!o{nR zy028D##EQzsFBZ(t|kk#Fm{4pUHSz5CVE|p^%6Nt_R)55v9m&OCI4F%=qk6i7iEZ~ zSUwuXh`x}#eI=z$nyPE~F{cZ-rd%yM>)j!HK5vQk%P28&c}{m{SiG@=ed$ID;!5L; z_DHdyB(|0iiP&2|>@&4Z@w67UXzwEw*S9Q5Cwk(M;be8$dpSSRsPS5s!;Ff`#I}hv zwR5^;UEDV;*IFEZ(bL`Omm5;XSk%N|J|f()89Vlg?kiGWqM#NxD-1mEzE|zj08m+K zGj{8lp-06m2%=sk(P6fobA1~QW_=jdOj)M4`3m+clS=8*35qH&#%a-Eu4O2vtgfy) zLpi!gC|hV5Ty)5?Fy|LBQKTPk&mhk9$ba(vYfKQDZ112AEGiu!8xt;ujv(7McyiAD zoH94<`qEZwxs)vv3448dRe(gdt>55c1)T~X8)k6DQmX_>^@Ug4!3mIM;4;t?7rRuK zBn8^gPtr;!(JW}Ge$@9`D&qBDxNeYq!*lwsHv_J zN1=5gz3fTF|8M6>v5_5Q*86AEJaOdC676t(A{F9~esBhC(L&8c)M$)6suL7Os~#AS zhu-LowMzMJpUWrpv7)A9JzmU+N;T^uFXm4bTb#Thjk?a3dEPB8gxb7~<9!D={3x@0 z_`6AF{_K;P0rpC&MleO5&`phUNnNfTP+=UZ7*=9ns8gYIENx_s)Tit|>zf5m6h*Kf zy-l(Txoo7OV2GWPIJsM!u{*GB{#fb)H zu~=VCLPPw0-%=WU?YShX;r!6Nap)S>d zLsrEX>f?hkqRC4rqyAO~eRXOBZ8_IiFtAv3uRMn9)oz|X%^s`}q?pw&TCuaWMn)A) znut;I7M9uv9~451?p`?+OHVxNE*TA)Oza8;E?<3ZD}jrGG}P4EE&eVKpSH^vY0skq z=SGP)MHpu{kB;e3SIYZ#CRxLvfiYpXPIiuPp0QrSW(qxe_5P@|kKv^s_28D~sCMeM zW*7Gezx3)tkye7Cz;;Ev8TKeBZIqhIxl@rAnMs;k>=d*S;KzCgW3aYT!DVJvrHEuE ztXpsiNsovHmD>cY9eM zu`M)UdFZ)$bq04;RNoB?-A|Fmjc>TfdnM3k#yY8j0?MW7N75>K z(!z%2P$^}*YG-CB*_5kIL5{%DV8~FHXQsXK%J#N`0%@hSt2OsTV4>^q0$ZKC1?wMK zxc4f+OLvy$f@A3U-;Gq!4lKNU)8c(FzjZI`m;z%Lk6@==E)Z*DkarN2X5BF0j^z~ zf@S}DyS(QKp~lag-Blx-M%{e71P`AD$w5r__J!P8DaCE(yX_8LY^0=;3mamtcIJ#6 zgy%pov$h0Y?_QK8MP=s<4YX1c$@XHK@Ni6$u2~d$LA2UoSJ=jkbc*6pW*mN|9|0vA zX>DcJCA;qbXy_g^U2xG}|J$ufh5Sc2t?HdPTRFlu!<%J0Hj4MWGK{XwRwSBvOlM~@ zK~MVCE`M@LS&~^wWZZHMT2v|D&i}%4qLNKasaQV>@ump-cOKYKWQr_e{?zvbmTK@A zBipz!q#0To`8;>PZkQ(~Hs#3HlLfIt}nQ*du3h!{3AMhNw-S^`Q8HWlG52@AfcOpWNex&Qt19_^y*x32f1kprK-DZv{p!-!d{|xjL+(t&na#QQ) z$}1h0axe^8EsF9V*zoNIjY#%{SGho5O*?R6MBuBJ`j@9$j>&A1-)@uVzdZ+!5u*Vt zefgm}GC&8ixZt;_!BNYTfc8k{H~3bF0wyM*k;azqWA8bS}rA*)3J+ zJqHqGcyI5jR|iFB`mRk~-v597Y!TU!fEION+6v)bjC=J)cc&^T&xMPwQNg_^GxR== z`Z1q6sMZBp?bOVuzlF~H5?`+U2FcSTB)wTDEn3;uGlT2z4q7<1fFq!a#K7zQTfb@$ z=RrL4#=c%JDDrko{s&>-0i_qeo=jEMV5kCr-~UwN?w|j3;>5amu=kOI%4(TYVab;T zZAm4@ zwkAw+Eqf!?{5nu5W+MkO&it<6@|M2~e3vclynv`_g2ko!;Q=LusJ-KcH~y2BUfgPH zy}Ir!>ZC%#P$Esvaxfn33cAio_Y8v^sAQr=OvZpkWR^(qqn3s@AU|x1t!yx}A+$OM zI-c9}{x}BHd?g|dWRxKzAmbmz$H}4Q9ss-O$f^q_N?@LAf^btOk+-A<{zyN{HCG|w z2MbUi_8@LD=psR2<|ZKTlO_ES@F`N_P6Ca7kbf8zO6&vhME*+)&1p~tO1m6bA&_r^ zWmW!9xLGyB$Ci0fC^9McXj1~m+zV>DT6H>&_@^+Cf!G3mf-zab2niVmNyphRX^7Zs zLrxpK0he+Chly8#IX{IFV|%k_d95ll36_H{Kr_c_45gH6B%m{sr6nvH5DgM1EW}Da zFu7}z$cI>B32o_NLBkNRDnf<3=baL~H}}x3y$TJWLLN;}MP3NsnwB}lpCNA4{m3$& zfUK*Tabap=2OyY!G5o}zq`JV1Kx2zSl8R!;;&rHy zRBnfWWVkKRK(VhtmCY9C$xYD_B27#PeRSZqk@fdgaPy$ZLL>tWLY{H_6GT?Sh z09A>&5?1LbtGM4PT?3hdf(Akckl%6&1hqT-NS2H+4LdIhGpbTJ%tRg%40~AUE=3pA zG_2HS+N4&e?dY+2WQx1CO-ZW2uKYhwLH4HvrnIa5#c3ZDrZH$sIfY2MKtRapY&K=F z_9vVGuwh&!OQcYv$tVf(9=HIZ5>T1qxBakG&7@5{GR#iRV8j|AZ1Ro4B_u>ptS%5! z9}!eQB1Q@#;0OQ_0Ny5*GY>X47`$@tae|DHBajXYEy?oZ_+@m0NL%U?CIMi>Y*AcJ z9vm!BWT67tcM-gwo((8Eoh-No;Tp#1mn4VAAq$qZemi;>1F;7f9LQ38saXZ(loqVMIB(-HO}nxKa|f{b!C z-kX5piskGg7^Wg9b76K-A{P^+L71r-0Z{ENfu04i9*^aUNRKF5$F&MDBgb;Yh>0a-#z1(iMwvWKDnGLb_B{^{%EhkUk8j54DdXv z(TQJE5m{6+2H(jG082=;rz&0Lig|NYcwZg+(KvaeW2%96m?FUR0nz2G?!dB8WR$Vk zgrX==08hXC|EKzYu;Y-NXeLwsb`9TJxzFjK+~rq0`c=|+?K6Yf%xP~vV?A=^VKNGD z2$!)s*grOHJR1;#DSHV3Q|CEZ_Z4q(ICrf$5byyx`9wkhzl<{dIVLK9HvkpmsFHeF z#5Foyu7Wge5RjG#7!z2YF#=2@Ar|034e|)gyAf>v00|}hg>&UpuG8@JMQxrrai9mq zdCoA^l57CrhjC+EZSn(v@`5MiDd>$d@Kf>V-!DO1&MoTR3B(Fwk>RoB(;MwX7pEw? z%HQSUmIb5}0i>CDA`t~0pm^nr^27Edob7I?w=#C!Aj|^?P6GF3=~HW%X0)!?0Chok zcQo-I#^i61!=w{dl=Dt8mpglqo{z(1EHBfA6DO3}>-*KZA5>>_nT&zjOOFc6qW1t- z>H&c|46X>v0O3GFU%Lw40ax(FOTw)PH;RTxzA;laoxl#oiEAh})ku-Kd^|!3DPTB_ z_^xJRq=Usl1z+MS$|DO+M;pDV<3^OIfZD4KwauZOZx*3uAv8ZuDq00-XADvVnxyhe zbOV8Y-h<{GL&O!yw~De^pOwP;K+z|r8HNRXelrCEj-7R7EuG}gvCqNgxmmGp_`8^j2z zm-OH>R4V~3ndqx!q7$Aq?>qve?HQdgY2IcxmK@113RpHRU%{qju?u-97P}F(*g!xt zW;E0k5&KbDSeqgwx0R`Asr=%9kxuj)J!8#2QXQ4jRB)@wUcQl4-2^P7P``uI^c)uC z6@Yw^y5pIqOJ@WAiCmJ$z?Q}3`kpbg0MN_o3WW=a7>Y|8jB zQhm}otRe&t3px=biLe{s!6ROgMNcc`uz1SepjdH0Bwmd4v|co$0}sh7(N7*1C?mk( zrEmeO_$&7WV9Bw7gB>~0K9R@{U6}U|71v<@jxM|8g5HPW}Jar13VMV z30#73Z=LN+P=~^!F)-7l6g3=7Xcxfz_yC0dfu*`v87)QmqteroIIRaS8 zp#rkIrIwd`DTD%CnTtxjoNC>>`p59!FS#YyQ#=^=MM|JBlXT%L_619qhwz(l#PHuh zY$o5Qx3t~PLyJ)7z9_*W&;I}{0VV}4D||xV=vnka-VzgsLpF2d1QXX)&1V-rmPm!}$>C3KJ& zSXvoMY`kG%8{}H&OJajFHSkAN7*OFd;+44$ELq?F?*6I#I`-SiSmjouAz)%SwyIgM zk+kI|l+kbSEqV_{!?Gke;hj@M=xvVF%^+HE4bH(=Hv7{2{B{|hdH^tP_+@XXSKD#} zD+ce%of+VzZU4gW>Yu`f+?vSIWt=VV6a`rRA!xoT%SG8`#&YOs4ybgHt%@$hwcEdC z6eF5xQ0(BM3Rz1Bd&>8kDQ--w5~xoSwwBSJmc;@C_QW}we?eifh*3DZH*H_zclA%> z67_Bg$d+c(QgGR5t#u=)E?(os-yA=PdgPx>O}ZlXs%dq+$A-Aw{n~T5z~&qJU*Y~= z{(t10n9WLH`72Cc?JtBXLfZ1xR<@rLy6N$0q=`-QAs1BD`&YW1t(t$X`={>dvyAY3 zx$Nvdeuw=3Z{7QUmuMtmw}a=^GqQ|yx^X$C4X8qli`@3fUF3V^9RJxn84Xc{3sCG>O#(p*Teq{zX z7mZ)*SfQrMu0Q^3^C+T~6<296Y@h4@UNu(HV~(elChaM_US(I7h`Ynyr{ad+| z?Aq|gT*>nqubKhwyZOqj(C)ykR+Q-~WsL1Il!%7$^?3GYd9I_bjLK4cItrXSx=Oc` zyG;&qtkBFm2F!nEW!MI@ux;!kUDyW0uxnM{FYG6itIN1>TQAlOsDW>;oCtHL0yJo4b6S>K(&o5oekN zsaM+K8w+S4ax%4)b3d%Qm{4z86WMo{Q z#(xZq)D=bM8LMdPx+MqklLqy5K5?4gM_thGyJ^4nhwXpu%2vsyRfT;NQYLJ>Xv49qY=lhX5;KBen5iq^Ex zS!XZ2!LW7O)&JG0XFYyKeC}ei4fn55`&O&-a`i~HBetwo(U#T8>0u4~=!>t*l==~a zXp(Fv&X%?;`ehyJZ8|&A+G)1U6YPxAo;-v$=tAKztMiQc`~n%cbYtj1_^;Dz z`OjG^8CY%LAdWDU{SZY9m!5jcHypLyEX{=*yQ8Lx=e0{Y=oezuPl|IT6r4`JNMjPA zt2NCJ1=_1^-C3;TIZ-KgH4)FR`1{cKyK6PIgMgk}6Yw8%n4Ft9J-gDz0Uq1gq&wJnTn zZJc-87~yJP_QpDJvax}5hK>i1%dL!f!+64Y*rqv-&1%nRWI1CpuhOw@-P+hcJz*mP zM-K6#HyMW5+qW7=4vdLLMrNq+d8~b3W_T40(e4NliRI8(N@u7!M6QVEx%eA+?gA*_?FT zHgTy#6zK5Ur;+Dgp+L=0P+tCXM5Bi*D)?~bIy97}ZIx4065KR!qhnk|$O49tP8$U7 zEu|9to`+lLN#{z8vfh;v>n4&=Q2&mful#)VSoLFJWgE6U+XBszB zD#z^tEr$v@)pCpHoJGu_LFy4`Val8WELBEy2)$dpA-r1?^T7M?V{i|X1x z6}3D&dOO!wEM=fLKQu`B*Hj)a$Wt3t5R<;y1!k{FIabnpiqP`;yPo7j(t{v(+p3T- z;-&q(mE>=?W4|s0GYI7?JHio72u0i8tuLAiqs7m(8Ld?wqSmW@jf-5$4E0^RV+67p z_*3?xv$*QiCVyj0Q`WIU0Y%CT{cJZ47q2x*iwZ!g3qH?kO*X3UtyP2DseZKVZW`4< zGUr+q-+BGF*keu!n$K$je-T9qJT-ouYNa2qJD;0;xp&SHLOlCOsaE=va+QDMq-RnW zhw+kD`U#d|=F?yTbz~;zPn#M@Tc5ff>b*KnpR-bLrui7UqE%C76bQ*w`9?U&ZkvUi z(?!y5^9v?36}R-q0xn)XKzf54$@C)yCfZh4jtZRUwA9~oEtTay)34(NnkP|VPjBVY zO7qS^653(`gcsC2HT8zJ=?-IRvKXMpX}38Hi6#{b92%GwYiG0H_WI&%5ThK>A(&n< zw{?WuhG;{Z-A3lytvoyw3OiVOp zwj$+8wrA>wV8aVNsu}cm;h~!X;{mn{iaIh5h1b|UYKU-tn}`eQ2h@NSx=h#AJ+Vc{ zojKNBHYF0}-F{q>>~tCoz`@p!a1K`z(7Td;3c>CX;YSl}RY3}TDagm_CDUT9Nw;2v z03N-dwHTe+q~_#<+tpa^7jMrher<=+GgI{|x!CzO7KhNz8w#PFQD1C*ET`q7!nXpF zti{}GD0w7EN(hK~$2Y)X_38ttuNu~a<|!)v1I-Pmyv2=m0kxGMG~~4KELc<-uW>MEm_7+b$j5}Cm(L=-K(SITLo{d(};X>Nh1CzO|U1z zrCj=aw@^)@_gt5K+p~(CNNvG?pNgy)?k7@xl9GWW9SE*3jM234Ux^V*&gliZn-(zI zs2WP@A3E2KUR5mVKQ}-|8Z8xV;iml8D1o4@*Sa=NR|L+2kEv%oF>$>+Bh_+SF()Pf z=tzYXDqXVfw~m(%ELGnW#CBtwj%Vbf9upDMmT96<;x*dhD!T0u$3o^){7Z*Ee`Qno zO5uwa%R0z+vY&3Fmt1+ZnTPwqT47=%DBW9J7oNQx*L;TA*Fc27=CKvZSi_Ofm>#%mGPtb?;>pm!PF#OLgm6MftQJ zc0&hwZFk|Go^`3z-FR=nm4d5TF7wlZwgBrwp;5Y7s&w>S*0V`KnNsrUBo8sn9zHy& ze}M^-Y;~Rh(ox%^j^Z^~i`l86hKe9gDy&*+kz1NDq&WY7ejtGtwMXcQD6y5TmqQIM z+EB1s*j_VJ4mwEFtJNS`RBn*eCkr)%oHYI!0VZE{u)E33D)NfztanRa6IYL-Kg;Q_ zNV|C^Wili9y_&{SOR5ZMjboBVe)PacF}5&Q#ir%LH5f3um*z`Crk$C)9=pMogwDIvTO-CjNog_pqt8{q9Qhp& zU}U%_tCd{l2}PLNb5eJ&hOp*sfn8?eBKExvQa-M`z?yBC#gL&d&7BW_Sg)1cpN9fT zcuOm{dR#}tQsKv6w{;fXlz_KB#pT&I9e<#*t>z_dR8%0cirB+MZF6Bs-Dhji=9joO z$||lkNT}4@)z>>(C4N{{lg0j9>P9Fs4upkeV!~EBovEOoe)oHILbDWtHO){a8x6|q z7+y=!(*xv`212>a5hl7rdp;yeC%$B z-DUW$)_lZeGh7~vlu69wW&m5xrPW{$r#NaEK8|UDT|*~1sb1OP7~Hee`t&FJX0f=* zZr}24h`T@>>q4zN<&u49O^pJk*YB3HDW^t%TGPMWugqrgJSr9CB@m8X229sTkegU#)U!$yk-_P+hIx&Gg!u+M4*kH69Vu;hg8D zwc}2+)`*!`rorU6>^A9NT*s62TWQ9eomTsaEUhy(B z1nSa)WYt$+970cS{WOeZ#QX90kyl>!tUpA=K4G?Jr$`Z*2St{ zLP6lk?7c5mLY`YOyLql{e#O)ts8rI!haW^*E|sF*MnwkJ{W2w%74h_L7&`kwfa>O? zb?)3XwVR;mz%X0(t8IlgHzKyH9FZ2eN!R1On~tVKQhcdHO0&Be)jj;dSW?dEJAdwZ zD0fm|H&gEV+Z;7i)JM>NSrNUS2(bCL^H$AIL`kSN!Fv&%NWb|zDtx6FSiAf5Zo6HEZrDqgONrc#ceifHsm zCc54@p{kso|Kc8Wk<5a3P@m*TEP^}5pF;W&VE-4&{W2r4pl14)!wp>uU6dfsi8{Q- z03GOMaXG=Rth{}+kCW>fxTqNVe%@BH`E0v-ct_4)9KN|K5Pg+Sc=PZ*i3v9mSH=sz z@8spH71!I5x~V7!6}FpZDcemv_;Cu)zkVTJ)(`-0GtqvE+BZ`fS_7NB>-)Z!FTdbWu~P^rj>te9C5|d3K3CB)^~q)*>Fb4`^zBb4bU^3@M7sFC>$jw*%aI@7 z+w;RM#R!8gzAwO~T=A2Eg-U-$3tsZ*{ru@0PP){MEkBEV?i~6HO+cAr} zVt^2JJU7t2G(q6h&+ZM%Hj}%bsS>1*H(&IJ`+tm17_6yYBDEC>yJbRLLgU z!P-T~>&g5o^z{t3&Xy|$AV*2#BQGAr{_sRL-_XZ&Toef@HqUUFz$HIi6W^FGvSxmr!^}4>T zrJ`Wna{N@-f(!K2kD9xgxwQ;!9d%HWbwM;=Jw=qWn~x|5*DjF3u)W(q{F&Uobs`w7 zIHXkdW}!T^iG^HFY}tu^0jcFh8kK+$Ua*9z4SVPS3T{IupO<{~NjrY@9qTIrRBAG< zvO8CA5XQP>!pl(GIi9P%{rFR6w}5-WE6%lofukM&No_da-V1s33i1_o*GVGd zAPdg3zS=Yx3NTLCc7XEV1zkvRt5jVzM`J-?lpS}3j%kIFF0Q0K(O>NKm5%*tD!WXI zoGR$)Mr!lK?^)9Ak;F~oNKgsdgv>0^SjKq0^|~plkWEEXzG-FnuFnj`zo6Gw ze$y*{7uXuOuYr|~e%%)`YiRnFrrW}CtEAGeqfgbpkW}Ce41XZ48!sGkw8X+{a6*gj zwUfBqEDNR-B*Y5CT(Z^&;c2`TOSMG{ok@=5D%~nZ%fpw=gs-7N6`mxuMbFWzqJn0) zMm%H1y5#TR*G*cZcDwY&Y;BtiEK@cwjs04#chtZZ{FQA|n4f)%ag^$viv~M&nI1p6 zws=kp%B5thP!6aqnd1ws>n?8HrQ+-MN%zZmodod~z`1vKk-^k!C$te-q?*~PNkLYk zH&O}WfEM&kAcf0X%Bd4UHM9g=r%cSK1m88m23#US`h`m>R_8*D&1|PX*EX+r-s0N$ zOI%~Q_+VEm;<8fN`4u&#P?Hb4HbxhjznXWrH6=f#Bz0bSpQxPE?b_J9!c^nB$$9w| zm46OBV&WX>#uIPQoLqP@q_hBwl_s$H>TwMfJ7HvT4_=E#<$P5$eS25kQwV*qy=~*p zmUMgL&(Y`gJ9NP*D1E$6y-h>AWb}^N-4jBM(~Z@h?v4 z0H2PZ%&vc^$cESrm+<4Tox!0zrgQIfP*-`r*-U>+!;egGTI#u?iLt?U%3?1ZK^NY# za%l~9(XyRQdK6Yc7G+mNpxQ#`D(-K9rC2>R0axQFe*gF^3~Z==Ulm7*|G{8iWk^`~ z$|bcH1r`a@vZbpTRyNaYA7fV`y?JmMJ9+cmcMZG-;ZGHePdu~2%(xSpQMg0b&4rza ziq;u(Dk664=!^SB2Jqc~V7YodT>FvyI1HQP#1c*u zWkr6keE8~uUfuWQs~a@;e~hg^ZQeg5t94cH-x*k(-KOJzG+`^g`%o~PYXJdd_>4G) ze(n$g-+;ukr|v_ZfwALd_x@qu(1dwk!Iqp>V#Rshk0+2!f(_5+I&KE?2ku zAy7G0dXP#OdYz|iMP=T7kbrrZB$GLp}t%FHNtI=s7zf%`{xg z_R&XL;Ll)$(~;I<{#~+L&|#YDL?edwKW8^-Rm{BE6xdMH>$Sm^&o@(j@6Rf1XDbiW zyK|p6D&4ZV&GoxEV4_pN_j>)Ihc9uQlzTB{EsphAphvSHcpQ_?-JjNwBXf0!op}NN z*(T@xxOUkeGNq%dAF#8$IqeS1BREz#F0wEHtw)nw$_47(S*&D$kpLYE2TgsC3~ZH4 z`1ul}S2Ls$j9f9RI8`FrG60H;t(3kPW5|mMv-MP3Xgqm(_5nGSB(LGx`*$vaqc%c6 zknk9tbwW+oH+pPbsL7xqOr3!YaWZiz--a%LWwhG`faCa4nJlQ;OsV{{os!EJWStr+@;mfq&9r#Ted1T|E5Cz4~QG~@5;ZU+?5}fi6^c1@@-3Qn%>apCxNaGS>HhWYb zXyVX<#qbNWfdxKXrm5m(yOMKio&`!%IkR>i5y%{Vj*dJu!N@n4o(~Z!aG3CnNgp0i zx*$jih9sztA3|~g;o%3&5Vt8Qb3?I--Y$A7ewae6hbx~qxt=hCI!JJxq;xU7hZ*XS zVm#moQ6mtWTYV&sIH>ATBBu8R3Az7`6n4L?ld_3|3@Na4tl^L_r*|F9fT|jSIcXnm zg(NQm zs2pD&1H^N=@iwYmpNTxcc42dj>$+0rT%p|m0Yu?LeE3*%(HoGI0sqF8r6#V;*|w2L zO%ldbISpC5IwGgc!!ayBI(L{IB}?c- zqsnXLI`l_WShz`oD${T-gcv{Q;%6*n@i8fEX|QC-DeadUQX0Cukr;Xi++*axeBm#M z)Rde`%xW4jWKSs{N;=&;(y)?GJQ#rjJ_LrtT|zZx8sn3oB`306@x_6w6(NA)8A6_9 z5222Ikh`Q5d_VM>*)DJP={kpCVOwX72E>U8*GD^)4$?l3T-+fE^91lCQA3p~r#Ryw zB&Rxk(;G(;IT<}cO^}zqT2fa%25LWNi5B3*zG8Xb=Q6yCEppa74biGx6xN!L_>jNvZS2JUEVI?$lL z3C%7ZQe|^1po7a1K#L$K-wF2$i4dGiwkw-thH})GXG{4SqYdWJ{%OMbXY?e0#Du#E zT`BbvaQ5htU=E_6rNVg&&@vfiGzmOnNGNIuz?A2~h~{Dhd@xGCM+&PV5l$3^qoz@x z{v(SDW5Md8SfMgGAsxObWA-RI(Mj8-9bh=z?j|Z1zX^Bnq?mq{*@qt1uPHnoIOdCC zY9V3-WQxfPfT`Jw!;le?Xy_;)1bGeEuvR2SRxyBnAPTQ^e#c*bPOXPvIdZAKZ);hgAR~ zdONhnNUooa&WtGKOeq85RsTmTcL*zza$0-}wi;uY{#YM4IGxBmJ}-j^lPKeR@w_Cz z6E6ZGg;r(7Q3XdZUx@?~AWR`~1yJwWD5Zi5y344JU>%K73BMC|1K3JHhKWk^*Ie09 z%`O0%ifB0ag0|pytcVb-I@>4!f}hg~6p+1#c@h|Ca@2K2Vy%A{7v#ek0T7dxqL8LC zf1$6&7d1e3e2*Y__NY(Nd}t`4J_LDy5OOYTOgNp5IW71=Tn`^2%bvpvfVn{(V35Xi zsjS(B6Bb9TU77%az!ItB1;PLEp7d9433~6n2!Jx^XT9jCr{E^GQ#5$6JO_EMtj5z| zTI4G@2e6;h&kz`ad8a1%ha6KRb)^7Kd4xoB5DZZY@iHnfqlqQV6Mh9>p=7vvptx`e zv(1E*$6?{IPEHVVRr%bSm0YI`^fE1(;*&_5zCm(q{v8G~0M28@xz@+5~2_!BJ8-+aP zJ`9V%#Q-Dqs;eN*x4|B8pm9?glEv|=sMq;+7@!@1l_Wewn*<+w4-$zD@cfm!keplU z>Z{yAz>p>5+?;q=ES{RZ(bPkXbW26!S9cax0;(1SuuMmXe=%?PoOx&UdJ?c*Va3S` zPZ`^xm%uK8Mz?4DhejuKQX=##i1AoZpt=t%aUe}$p7h$GQO z`xZE4;t=6ec$ePHtCAn3#z2fo6dJ`jne@1vX?La3Q2oSK<^dN;3_QC#+>M${P?s|Y z9*UV5niWkuslZgd*Le(nK6PD_)2@d3*gBqJSTWk z#Q_ZUxis6R?nyM|O?&{-U6{0Yhs%^*1Oaw`$N_>zGt&4VG#~`xtC?7f2NbW7JV^2> z23=rmW)zmhs*Gjc>kn#3+KM0p@Se~B^G+=$)-z=oi(0a^Gp9CT!L`AWZ1;6%o`^JrkH>|?kEDLe;h zk{NL}@q+iKFL8>Fne4VHPu#=fwpRA6jpggtZWT+GBINZ@byf2fWyooObO`7E{ zY@8*GS?dypB;Wwj91Iqgg^7_yf!<{2sex0i{V6|d@Qa-S6B7naX@@21Lm8r%2PwR8i(#v^<4WbHpRTjzUo&?IvN2r?CR? z;3Y0pK!%4)c1b?tjpQXmU`#nHR3JVuM;%`VxDvpDg+g+%M>N7N254!d6-BWyeH0%J*CU?PIPZTfGi43N05N zswAtTz4%IL#T}=RNkN%|A;+_FhgX^46a0&VdN@!NxO_Wz8#RJiY zmZFb~2jWWFA&M+jnC7m)Bf&W#=zvjL8n7nPPsQXMtv{VXuHuG^(&(tt`t&qTK`#WA zv&?l`esl(ho(l&xJU1(pFk)y#8P7`r2KmsP>#h9FTQ?z+2PNSC8w;bW*H-)iNGKnQ zE(>CK@Ri|+)>)-me}Xp^W?n&`i{$7xCa^TXPbG|zKj^r?GD}!8ET^J@`*?EPb@RII ze2h+!j1^FnSUWdeNq+*1FZ&AGRn?2#$l029cZK)L^a<(rjpli~kM$(HB9!cc1|7-C z#3IJk(*IyzxS9JANZd=O@BmuW;^`z=wE#7brTSG>D7os2B7ML0|9|)XKh8LtTbie( z-0n3O*_3tH^mvZ%oTb}&)d=OP7qOX2anxkLuyiUNK4=oYCd-U@coU_>-t1&SZ($w# zE^{HzR8c$3z9jyP%T!&X8r2s&{Lm*Z;#0&Y{MAN_ywPqQgvYdRh-*}Iaql;9Ti8Xa zKe>6JO!JxIHSsa@W?Gs@8J4D#Gq^1CK$Y<7L}pT&q~3=UWJFJs#NO=eBIUW=1vUAc zV`00yBQn)1Xw4SJIJPrgk3~?9HEI8fl%;)gBK~7GbF|f56}h0;`YfH8YuD9fk0iZj z%>gmwXA`t+asfi=&C!CeCkgqGM!%J*yw>K70%ear3F?`U%k<{J<@mq&@+cxs$ywab zHhP+68CL#OPGs457cIB_`87(JMODJjI(DdR?{vZn9F4#dDo+LIB;c8%Y`P(9*PuG` zJkOChQZ25#)tr_b6of-Bmjlr7*G@)8EEhJU*>+suaJxqvTDV}t`Slo6#sH{7rK%x7bs!c0DErdL8N)|@8)AtOzh-swpM($m7Q^f`% ze9axqtZXK`0|z$>sM`ZM*P4ps7D-%=Lq1nJ(DFjk%U%Y`4ucLssSucQ*>Zx|M)*43QX+J=^(hQLPN zk`uc??k|U*cO>fgB$%$0g{mjVV*bn5M4+*!qkXs5iLJkuV_tgJFe&q2rxTJC=T+~2 z<=D|Y{M0d#(+yx=38WEn3PI~wgwZu~`qe|}m0z5~tSV{oo?o=88#AJ1lgN@^HG588 zEbV-wdGtR<@-W!cHX_z3kC-+4FJ>C)R4%hitLmY~Y6jn(4rNp08|Xt_VCN|)?KQ=I zeqavtjUD+yPwVM{{q|@A&mUuwkbF+902%#%FV>OKb~C@&<@V29KhhD$_ZIeDW22>X zw;$Pwj)6_3JkdL8M#hPQZyu)`6-pHPM(3`eUtUVf_%>QsFM4WS7(jkv6g{T*o5{=89tXYjsgq|VlVXC(^u*Z04)13p1k{zoW1@qQXLn;&b~t zIm}nqBxM!m{(&P6q|@Jkr3(Hs3*pMN5%^zq`RED8O>pR zyU?W<@)QDVr&p>txreDqw1a<;L2tT|3HQ-R*oFB9l4;F{(<$-?o^?G8LQmw{NM}q+ zyw;F|@;uE>_xTO9Bbhlh_D4=s;#z2`{}XTFRog@Qcc4~w`A$iVOYr=*;IO0FP~^=! z?Zr-wcc}`x*Q`gde67S1Y+tTCyh76B_eW*7^+B~3-tLJ-149P&0lSy8F!k_(xM=?G zZ2QZeJ+^AxKv~x~GrAl6oy*H$KI-FX|1!}dXBA6&m^7z)_?Z<15W(AF4Y@=m&Hp9pX7HHt=N8r3%C-Ddt4_Uyfo2-jb0Z#$mHEZr@=`b(F) zMY@K^k&SQ*&!_SsvmaQib0OqjE?>#DGeAn*?^?huL_lj?QKwqf2Ua4tvpqpMq$t{V zzn{!juqXQpRlPu0;NIEBv__??;?j0&ft3G@&%E*5O2}I(zZt!OwQh%fTsqfCvxZ-7 zfMX%Wny@z~4P}KH)M(Ru!^G#8Ec-i2DQouFqpOu%dqCD16Zoc_{Q%^|h1NK4!0YwH zgnlxXwT>AL(Rr4ep(nnYJ0X#(dj#1rgEJ#K(4EDUn%s6rk*&cW;#m%uW?5%WmoCp% zcDMBT@9aVJD+ZmWj})L@|FmiR2T`m~`vcgr#Ov9Zmz}FAG`VCTZI-MQeF&dMMgAIk zz~Pp|&pm9*i%rcaI}Q?eb_c&A&G|;PVve})?#4@vXC}QejLZy8=!~VvfXswqjQ89~+@DLj z;~)by+IGb}k7rG`khwLOQ~nOK{3Q{EnZ6CR>}nSyVNWhyEGE!@vdmFNqPifco*}Kf z52*~{j!i79KsxJ|aqt5ep1mVR9g`+?D*O(eZg#`8cvJS4Q2L$xL^j5QaCm}7L7C7R zk6&{g%x(=Su}mbXiDr4&=?_>RQSkj+#6v8$9~+A~{0cc|G~*v-}r)6&i?KoR<~H zQ<+aR)2qJ}h?F>0Y~Yqa>`?ZZp!4Je@n`%Jn_ij1kYz`XqUGio5Nz;u;K>q_8 zufz1@k9XhG%Kz*C$Nx$7gdKmm)LrstG z-S8v7YADqh?q^``Z|tozXQ0R8{Lmi{0k2G`@<5!shPFPx8JEqS?dP%e&hvP0N1owX z*dF=}%dma$@C*7P*YTm_4*>U@yJIwP@vhG>*n74!M-G0Z6W)91>$*&f+q`SkcVjeL z8KT(8{re0DeSY)BTx8d&k0f}X8anSjqqh|Ij)p&P5S!RfBOm5>Z^Pf%Oh0ALWMiR_ z2}W-0jPYb-Z($RPQF zA+|9N0SF$O~V(Hw(W3Mi@Ii!pHRi)+{t?A-#v8V$jrb}O_9yXCfr$wh5G^9=4 z8dIPx77uR6g+LlFrq3F_eo39-5-mSZ$Jp7-&0gCmt+Pf1vbYR}l<{D9z0JzFfQw1@ zE`SXwc!Zxru6=BSNw0{+9`K{&aH^OgLsIj16R8>ZbUFdN_ba2 z7u4MSHPA<^&htk~zfbbuGizSZ6m_tSDwUn(R7jrwor_I*r%IEUwJ*keCWzmtEdp)d zZs8L;l_NcoLEI=vWM&0;QNXnnsEiDKq+NMU^J_zYn?XgcoHDZOr^?C}>ZL}R#tSs8 zJ)8^C32~pD_JuZ2QK~NzJ5!2~W8IQ-4QQ+Fx^Y3ne(!%n4F96~?i}d1Mh6LmDC7SZ z{ySR_$7}0|g{#lSPs$oov*{e5>&wR~7ydh1gqC7N1&1Ar%!2#Xrb+qnGOy3F<$JSX zHmLCUT`4ZiiDBbYU_8!S(Z%h{5>nN%*2fhRi;0%x&A<%W4%T)}d` z7SWcXai>nTxZ-9G35MR2Lfv}O`0W@laX}WdRNLsMWT|1VYm}J63r3N%VK#})!m^%; z**@gHcj~yfmmWPYWCz1&() zt|E=rEdI8U>_rWvr&yrAeMDR{GiQfKgu_42W}$s=m|Mu`hAAeSp@w3(Zk!HI$`?<} z_0tAw%Mez|*`w|7)^FKOnmGv9W$c$vPcv2_DRTQfpgjs$qlpXa5OBjnh*ikMu2pPvtH99>@ z>R0K7`ex6t+^c*3vd-^oP5su+|6I(FW+Z1&SFEU&BFg-EhExZBm8adb2fl_R@1;qN z$7-dgQaP;i?G>$+V4*-2=_dv82Ts6$dn~D`g3RTLNQoU~iv+@FSHQ&6d`#@!fvYCd z4zcWw(N$EBuEXH;59$;jhR~>)<7$zC0P?R$weTynP~p9b#qicXEmA7`>af?nK31)Y z(9M_Mb$UcMO{b}awL@{#Ln$?@^{bO*mW;cum6W?~NZ``AhfkwVSM&K-`gD_qUY_qZ z3oNA#V(8hsbV&KFoYh_NUsrLP&IU%JZ=Y;d6N9@xT6x8aJQmKyWbp=8iLP!oIFmT( zIF@S+8fj%V1E%8ZJ9UM?Y^TwKDj9G)RZ{FIR{3Z9M9^*)={8)|dGE1F=j6XGqR3PV zlxr^TLD%zgDZ8spXOUFTp1t1ag`RhlaXK5PB0b+v6#C~wSY?|cWiRfEq|1vs9S6+o z)!qnjth}xl(2LsMDZgN-cCPm6%7{;77M}{|>bOS5sN&y9 z)IQq<`gst+-QfzuCpTF7aoJU_K@q3mN+Ix97#l8Q?0USVQNFY<9&-{QB^-T_qfHRkMM%QopUT2|q& zX3WZAe7L&vYQ=qu3Hh)(say5_jcSK} zwB%1|KGiLHfuE-E+*>z-taabCX9)Q#Bkjs2D?^`jvEjXpE8k#VlyW+}_cF9B(6fS7 zJTMyday*5c3uAC!4(qDxJxphIdM4vShZFd>7in9dA(g6rlJGeQWt{zWGt*$EJMzOq z4}{lURHhd|F-0v-%_)o2Ha?EcsU8^6$X}hOMqoCF=|^93uJ1LZ>jXJ|WYs$Jy(QGa z6hlV|qI)UgAq?n}j&-3g7-9Wx9PTgG*{K^V1blRct!|hrfKOt|gGs{B(0rC?2vE&Q z^4goX=D{741{vp_3ZGYfv1|0?Ps^K8NSg99Ayzto(3@X4JQe+7`J);RzeOTwA58CS zsnx#<^mi_7>0XY-jg5JVC|6luKNRX2F)ap#6i}S&la4rBJGF%Tm2*w5!NG`?EC6dT z6x#0Ewp?Jc^rz-&Dud0}xnvj0i*>P=>q(3aQNs>TD@(fpLCo0hv@)X6-hxSe`nY#l zgjlwylA(6D$%yHpm2FiAwiw#zGOf-!T6%VtbC*}b0WYS$b_|Na>4plT#8_MN4MsgN)v5%dOY4xfP~Y zv$4e3P|xkN^-fPM4^J0+Z=6pWG5m}*>|;THu0!KB^`XEdM;q`ca_L>Qw@1`jFZ1cI z*NtPIvHEg3RML4av1s}Y?RYI`bC*e{#HNm)d~V8;jtcJExz6EJTC}J7w)MHmla6ug zn#_%~7+YEQVxeM;7g#1h^DupUBl`w~?`F_TX}BPS{yp}%bQ!FngeP}H@uID%wl}dt zOLkkS9gf42IvT8VLA(pp{Xbg4G5P8;jYrU{>jnLPer@ega%$Jiq(Nj?l7jg&4%htT(Sq0?39m zGoLyJ2YUFT_az2k1o5GR4fXbc3m<4nJX0n-zQ-H%@%{?z{8IS zPjtn!_+#6T{J*dBpj(BwtB-0$wtJ;RavNh8oa+LgZZ;1TQ{3XyotO2+JoS~qK&M=; zBYF9`;Mu94Z#*HON6XO|?D{0S&+}Pjr|8Fs115PoFx3t#-kvi?aZY$s`yb?)?Omy5 z1~<33a!J>x=u;#donB=}5@?`+kXFJk(Qid~3&!C>`FXd+LnbkL{<@Te4Jw5iq53Ce=LLHwkESctk*FI|ixR#d#I zxJ_jOa2nFHJx37x*iXbcRN{uI;Q!7w+nYUVR7q*b{OsJ~EqgwgfsCzY1*okFS21{b znjB3XWs8^pEpT*C9Wf?9C1sOC*|}7psnz;mvoc{=uVWn`%|M!COPM;j}%Uk%(eNrwC1ala8Yq8hw}K)p%&w6 zbnCfVSC<5Uwo0?r!9QDMN|se~Y8qYB{6ul5pot4adkWl|W?!i*Q{ko$G$sVlnhC7gdq6%tc z>AxfuKYwqErIOXhfGDyb2vn-eJ#~RfQA^XS;$}&ej6T`^GaQ&uuV(J@*q-y8sc({3=zkfXcGd(Lo^tJrgceWb%Z>+xXz*S}2H9j?#jQ6)HC#OcMf0(p_o-0uJ$*6NY ze2p=mOrgxZfqnivn;)dWUU;-CJsB;0we=eeJjS$?L)x@3 zbxfj+HEh{9uJ8jtU*ROKkNUsg}2t~YZHo?tV8br?AY9OXI@udSDxa7+5lDO z3r&Y(t;^n9mvsr+#*kI=H{rLjW_fu=Z#evpFmajyzBH3+l$Jh&=4VZd=xjt8-lH0x zbh?pK2g1`=`euzV8|w>HcNy)yB+)!v^3!(RBcY>+4?>J!KDWCio-=AF<*}T-JY)6L zRRIfRKYbdTmO(;)ZYjVOA zG(FvN@%svzjW~*GpoXTehQt8i%K33yp{rAD7%l4!ZVkERM^mO{N>3xZK5bJeIyITU2|i;a=%u;4xcU_RDxE zY!ndN%~O{0fjn`Z+4 zsNAm;14oXgpr}khBnz1V-<-v@;Wfz>nt8Vj&6GjnzZIRHM>X9%2jyvU;3D| z0i7I_p+bh;2caby=ndczrwu8sW=rPFe=^(Vn+D(b?d99dKXJ!Bbg7)%`Sgde$;>R# z^($*5HV`i!G6Sydea%J&+Td@T{$)cjfQG|#wt+5Uu3sjf>v1O7gmKo{oGSJBr%V@k zzvS{wg)nA5PiQMqig}Iu^}wWVcydV|!a=q8Cjkh8D;6k0iT4X>O~t z9B-?VyaayvA$vZjXT zbc7wo<4e_CSu%QQr=kAdoD!K3JIB?$)1<1j_Oa{8z4g1yy@kPOm2W-Fa;eWsP!ij6 zZu=_TiSN#B`1O=v6X6P+n=w38_1xV<|Nr%;|J%3DT|}DuHK!w&I>)HALr2%GJ@mza*gvN(&db4_4@^Dk-n8CnIZ}!(P7!2YSuRY zHDgMmecy2SbWJxAy*eg&lAeFAw+BDZaFNJJTW8sYRiJ@+k&Wr`hVs43^%zdf^Cy?z zBFJtWnntpRDKvz4n>Li==g4>4(68{3XBBB5H9?p8aRf-@Iev?@4bOC@kI)6_OLaQo zi)gg^_tm0yJ)EMF>m$z^l6r^fG8uBH^!}MaBVL_mXuxp2+Rc8M@+&um77qPt&I;^||A$%H zdrWQW6%pr4=l2>mj*Ri8^bp%-l(Q1$itJ>0_A=aN){K`6IxgW1x>B~ASUl%4V5HJ2 z(vEJEvtO$p7nKBR^!rk&PnRQ@`z$dMUgWZ#HgMADm^ zWruAJM*1M9Cd(AWN~gu@Z5G9|)q6J*KSK(89+}*YqtgzE;e2{$XUcECNv6;;KT4A) zTJ`vs5=Fy=Bh@U|>ODqdOcvM5zw zb8@N(vh`gr4xI_=i!Z*pmdpm)Z|WH&oiX0Znx-mI6Agpn#dh#n>OV})lNPY8dj@Q9 zeI^8Ot81RU#{%1abczJ2&B1wgMAdaCZ3s}&RTT3%espiyL!SmzqB5E zO7r3>=!IP!#uja0Vjq6Hn^3C(&5zsuCCk(cpJ)6lmzGgiH;wZ2=kWKbd5Z71V4vl4T1C3H12$I z?M>tO@0Pp0Lq%=MifYf=nc7&k`W<(7#{hVg$n{UC9kBQYo?f+Mqti6-U$$4`9w4I- zf$N%iVsH;nz%=oN)b^hN4Y4E7V7k(On6_B^Xew2+>(Yl~w$=K);rlT>wRYHvzDw;( zy%|d7V0|m@^4v}hNp9X%UAkvX3bpoQqVlct|94;A``46%itynB_3Jcsln+}huR7ci zasWv{w!gF2n}L&yu_6VXp6>$Mb>c1s1}fe6d8-cCL1C4X7IW+46aRO^!{K~#j5E+K zn(39cuyhm~8+M;);1Z4xAgJ=Ttvx^Y?+e%B;@B@*vWnHafleDe@;jYK7j}uZDtKFE zK%e`mvvOTTT*}z{u>0VT3PWFFg{VP)?P@vA^m+`rl=7%cY#_d@u!Ob^q0MA&Pl3LUlG{j+1px(#A+UGKp&arAx1m-Mo_rr@v6ugtkx z9a^;ktE`|wwEb!*4^In?D->j{IbM>bE?%FEpn+w2(aqq+vS*9JuQu8GBlmbM8w4rp z+|aQ|c_N1W=4fvJ5~^L>O(LRwGdK}+dwBKSI4^@0vX3fe-o47bb#U9XSb6Uwa$Hq7 zuPx+#X=zimOzO3mNUE!ldhgTWvt0mO7<7G2AIA*zEQ`aIP1VsY<)K4fH~5O$cE+4} zp@v^~*3m6prrdXZ8g|UU(fyxXZ>^p7Y`x+V_%-ae@8RXCnT-`R`xWdyQYRi}UF*Rq z#|FipWA-x452EE8oZ)da2>sBb3kMF@n)UlA=-u(IW5!5J)UR1?P7nFI^=ZJ0VfNk) zzw-I^;eFZCOn46i<3XC~!g;DQTR5g~tHi?leAv)#E}MNyZ`=>27hQ$D_`!YVtCC6B zRE0P#E;0R|KkCu)jH_1e-UjpLtwSeq%2(Skbfl-By1c5C4*(rdMTG+Av~ISJLa>-B z>hH?4{I<#PiQ8w6>qz;X(NwE=NtA22Nq23tOKz`0%f9#v5kDsZDz{NXd+C9Yb(;=b zqx<`6vx?-v`arkc!G&I~AJ5_s`Z*{abO6eW1?w_$+UVwgAyWdkASy;!BGQg*#noyb zaZUplTfw4;T}SF6}_L&nc>~y>B|V)#14$3y{!XD+(0L0p!V0cNp%6_pbpD~kD~43_P{p9 zVSAlKc{f)WKb5-n9-@BjI{P<2_vt!-bsO>I)GfZsA9jc^C29M|j>H0x@7?A}R)A1N zbLuM;Pu12@ZDuudkvK!T{w&oO0pzyuZzSo@&@+79XHZq9SRZa>vHhr*%hX0RaL0iJosdZ}T-FO;M2abp&0`>N^+Dc{zQm{_}2Z5tS7KZ-ji!oq`;u~pUb z9Xnw{JUQKFK)di$Vh=0*{3YEwaSx-HGY-y&@bcz|ZL;_nOP0~NB}aV(-rr9NbX`Z6 z$iP@|q0kZQ@8mQ)CH6msb{~b1PB+;729;^UeFF?W7C;1ULf->HZh?~@cR_5rjC*`| zRj@01`U_ctv`H7Kk8mgk^L;#fiErGVMS27<4~%P-;X*YFHB!rT(uwn$*x0T_Gu3MP zDLZ#237YR^Yjx>a^~7rguEUj~0;-L7@e<`iR%sR6GWuF8eVhHI*=1M3#mpQ$1h*|K zql;CrhC8IN5jKn+KEP1LZ0gDaoNVC!oppq@q1i1ksD$4Y4dZ{p8xGI9>o`9{^>DwX zmZ+l$EVohpU&}zhlm^$+@-IqcZIc%(y17}ji&&MbueJut#FobaKQ=Ae`PLX3Hl!`E z#xy#dBvH5&7hq*VMtZ&~QxAH{8R~%AhaCG?)Kqs+8qt;K^IeOm4KSh6_oz0DZo>sA zT~t_nJ)_~O3VEqQt#>1RVy(B08OwzbYgRTZ$m!c#_5j><+!TfXme*)rJh5?mSlx499~SFAJ^gUB#aE&GPjfRq?k`%6y6t&7eP2y(m2_isNuBs1NNq<~5{3 zW`yFO!ZV89Qb!9E(YA6o=;V0q0juZ~uZ6kWl7A_Iy1~gdB~Nzp>D+i9z5+>Dtpi@m zt5IL*3E?I4tS6ERjfm04I%FH{7N}i;3lCtDqfV7~&X}H{+AB1VMUCLvDaKy^gtoTu zZ50LOz<9*@ZVb9@j{i+&HrCg$UP^o3K1Su2{ZrsjF*k+Ejm{_~f%{PG@_UQEA zCF^pmwmNR6c&!g6*No5|c8KTd`a2C=HoR68Sf4}&;abzBX9{ZX;ry;~e_7Lqy9XCcme2#FzGRx8&zX*V36% zN5-tm>?3Sxsa8HSvozg0>D#mO>sQ44&eL{)xp(#qncfsQ_oEiCtKT)!L~COWNH-f) zjCxIOahq~PN$;)Py0wU19H^7oa+*x{ThDj0JJoWP4VI$9p>G!?$_|FKeM&MlGcyph z+m*g_e-r6RIclqj(E-P?*Qm4abiV-lS|7tMdQ|XLX;ksde(W-LnQXMU`avfNB@PMftOCV z4G~cG(Hcxo32tcbN7=-|hkOQI&;8^~HwicAEe9)H!^?Nq)Jz<>*CDWz)L~-lb;PhCWMf=mym_r`RKFJcm zkI*z?_-U4?&QOV;65;iOP4_S6PFd$cOiGWVy-0>029H<)*hE9<U>@$gcJV7GE z(Pd%u%m4|LScc{xgmcpj{e?6DD*1GQoUbRe8-jI@tC}QS2;*jhxMEtnwZ?@V$j^{x znB~Rl$KDL|XTjiF&ueeZo^}`QvOepH9n+LcS!%#6E@~{7_b(Fcb84nxsret|B-jE`;(>O` zgGHvtqgp2wktemQ=hWq~zON6wdLwAezt3prQGr9VEyvW=bco^okZ>zl2%N^G^oge; z0xdjjLLn)r(6CRf!p3t%`K0v(SloJBsv2ndYkLQk3j_bA0C_%#)fR!cg$9j2xGHGx zz|qLR(R9AZC3PAgDQNg%tTP6Vx6g?Ej)Au z8TTb{`gyQ@k^3#FIU4jK>>wNna~JsDNj?FLdry>iroD6cjZm)^Z)#>F+$bQd3`p5W zA+!L9HWTQPl>~AAP$ajP?-?IBhQ+ZemY&dkPvsMQLKHSLg5|FOdgiTD*^i*cAOsqo z?JEi2KCp9y-kv3tfdo-vCNwRe0i||M9>_+Q9`hoAGFG3+iQ(wk1_<}ZxQFadWDHAW zN-i^|1X43bLIeiHxJEsKHYf|x$`QN}m{jzCRXqXcKMjShg9Y9~_#EfS)AxLO>4SE}g|Qu{P7s zto!I4IF_0aB-r~N09xb(nt|Y#;x(c*1RG*DK0D1n3zG^8rIE68to#(A<{#W5q2@?+SB0?t+bpsLF1IvmyBRoZ|*dH|RsOw&O4F+_vwA-tS~6n&HA z%QdV{g%7Bslnn_s9wgB8^3!A8C-ZG2+m>Azp5+x`CdB}I$R08EdmR5FBf>ZH?J^l5 zi2FNuM>r~?l}&F)HJ>BaKCHGMjCZqANq{1}mL&ntstDm8OF&667(>GT=bvJ!`Fmh+ zHQ40fh=W&|6^Iv!1RmuA)Ot^zKF;%`^|Y@SQ7h15$7aaAJq_l3C!Mg3VZe8f>waqF~&D`0AcQ^Au~; z2A{HPGDzg4XV(vug9z8NfL{r7bfQBLr6CBAm2p}i24gKEY1@zKywghDx2wVBFDwh| zAkt-I5cr<3r6+Wh3I;=y`3f>0)UPBiKHYtc9O$TBD8?Yzoj8%J5x>!HKTY(W-UFxo z9)y>m#9AxWm4YOwsIkOJ6s$_T6Lq_=i3>qIi2^InH-Z$mMx#1C732JqksTOP))nj3 z2$s@Bl39$z~ej0-2XpeY|7nAhHx`%7!SN@x*g(kUDeae-9})JdoKqlDWcz32 zMA8%?W9kN3AUgup!^IMCYBg?y55Vm~CuYgmX~RaQG$w432t9^zt0W?f0-NI{bdFu{ zG3A-oi;{cJrNj7a474?BaZ`w=Vt=y}5wypJrFfBWkjVD&k2EDr&F0IVr5HK^T#DSU zbs&jQ(_C@^Nrs&A|A`CY9YvyLlstvi3FgOuf*pp&a z#_q-x?o#&VW3O+vYnl&p>0H(vPcretcF+!I=J7E3D1DPIBmBBj= zIyAAT&?E0DHIs3GQZ1?E+i-M(%>1X-zQ7vcwVg`E@N&b;($|hh+aq#>6ba}P4u&hR zm$qq1?piq~__l#GYuUn)`PkPbvxcA^U1%QcqGsPaOJT}oV-X_44oF?GNySMDB7)f$ zDG|Z4a~xvnrbZ2?v4HntjWOg3xK;dH3ZN?p#zN)mNz$LN4tx(rBoe$N^g?U`q3?jo z{t%N?dJ@c@--?Opmvg|^=rfSCXi ze2)KtIA12jl;mp0AiDd|#rW$%T{ZerW^JXW>)?d=n>J;DHsyqxbWm$*qAM9uQpQ|=M-KjD-4vNUay0B~{-XThhpmXI!Abdd1crA7Za3*iW@{khK$e}+mUE?%sTX#{MMoY~=S5T}U^44Z&70dk(r zhX$uao;*2Lv68?={mXJdcx$b1w_GFs{6kHFO%VnF1ucu9Ru<&8kcSx)*^dko)nas~ z_$9-EkHN6zOQj4EwJZ|`(LhB2HKBr2ll%~{JbeKRCfW&~rWEWHH8sW+b#M#Vigd*X zNY5CuT1*fV3}6tjiJLD&*n+ap0-l~DoV(?@yQW{*2t7n*f;}I%PoI} zs5Q_%vFTr058EWNj2#g;```Es!G^tZY(!#?Xs~;g=;sC}*}L?y?ncmRQYXMqtzfAP zB3DVy5QJD1$xm%u+@9{>_aJJZ{Q}u1oSu_ap6zm5@XAC1U)aeLBy!A=yW=S^Pj99J zVT2xyNRUaz4lKC(&mNJSTykQb%u*z92-9Q`@97#b6jnWqQ0?htlN7LoRp+8+j3M0Z zEyxf~qffgMz;AzVNw+1vO4RZ5A+tH)gEc;gStmwrYEQhg0N=tMzZE)=f(>6$4;2$2 zZbr5WYDXOjF-V?;M!H6y4`OVChq(`RgcGL%OFyVns*=%oO_Yn7;~_V0m!ZSJf|nr* zDPz?H+GJoblgwr04XH8M99;^`f72)73?~zSg!Rgl$ZN6DBtDG;=yUP9Q$NH{(Ga>D z83~f0Ea_v1Fp@D! ze6mLIG2tD1r9`a|Hr=a!u33xy$z~j={1?IV%-4%rT~=@^bD?mEKjDs-zO`P1P55zmm^jn>Gv)Pn#6dG#)qc>KC_h}^U*|IKiS zGxCSzOj8~#%os*B(D%WWoC9)RB3>18wJ1y}3;-MkI5gugZk3PnX>yP6S`3o_|eVq0w~sI--qhcyTO6qbPtc&12n0OLclL+-$!>))Bc z*pgjNo9NVTnr5Xp$QA`mo+xXp$v!j7vQoW$5!v_3?(k3mlP8yRc7BQ(2_k|yp@vD) zk%kt$ENyTW;iyYt6{~Q$?gM`x-4YQ^y1y%*CF@j^=#pY~?g&sad#0_7ii{Pa0F*G5 zKl&s!1Y_wNVQK8y7SKYR%4i5$KDgzd_FK_YZ_@2#69wFW*r+p%13Z=JQ49Q<1gH z0@n^gGT z7x123uErdwsgGy>rRJ}8Cep-0OU7%G*T~Q#!(UcT+@A94r-3e$ibYVhZh_{&RkGyD2OKAYni<8smaqeV_ z8XpFEV1{|YQK;!jActW+2zb#BVV`~R&zVay33-kLTnt~rh;*W#V$0=v6D!~I)824S ziSH0;zlT1Dun=NC^A{J9fr%JVf_0(nJ0QDPC`j>G4VqA&%v(2^n#*1aqw;+IsRwCsVnoEwq%oKjKr;S3AhwHXFDXnbnl zy4Z&&IJPiG#GbR$k>Zxkpi7{MmcrJ3ef7H;d!5{DMi);rAdCs1c`7vBjvq&^k<(2> z5zBKB@4|Z-P#Yu*5c~_%(lH@u*x+VIrN`+FgJ`{cS4uz)`NA#w725oNC&G^xQ0R8b zbz0NrSa97y5fRby?>Juq#gGj#JoiB4Q*U+h^q&;NQ##ipaLXdxzFxOV3kC-b^upho z3Vh@o=up@Z7pf?9SeTv{p4r}$1Dp5$oE!kMPXZ&U*q^R20>=T$l~|iRZ@4(}4R1JFcy3{uxBhty!2?Wg?8tKBNBX`ZoFZEiua=G~? zXb7T?H@G0l#J(`jbCh#H217JNMKl0LRq`5{Vl*8-EscE`lE!StWX!X#FN~X>@nl4O z^Mj-U34%cpT5j!VOvkwgacOB}HR4@92R^KZlguq1?kT3HDn=v;}h zbxC`e+#!o&oH4w6 z55*BuEC4`elzN{VluXiAH-hM=?CiPfWa?qhigs#k}VsFMNYS( zvC`OpvI*b~fVwFqIjgK_;v`~iEGACis}~`UozV72#ahEyUG&upLW^%cl;}h^!9eN=?5XvYg`kuWrra8mY7^PLV!}=Gx<8uIb&``(CMUblq}(Vh z0L_E)$#aSm(-n4SF*3RIpaq~;xi3=K^(`JYo5sWtj{ubwf&kqgigzKYL{E}?*cEmw z6;e@Je6Ezb$|8{_=9bW-5w;c?;>I6`iq(*`)C64BFOm5LrNgvR`H;; zseD$mKu2)Y^eQhfZ7R&-)}a~s6)AOyZ`BeasFw~E63wqgm19US7HV2i(ruY-U3<`u zOIP^|aNDM$k4B4l+ffoA3#~TP;I!Tr04om_A|*WmVUa-1&qU+%`h-aeoz`Pd!SeVF zH5L{E(jt~t@m=@Drj^pLFy$6TP+ydS)p7&ISA8AmwLJT|(GswLhu$HEXpOalWLvXe%c4$Y%|^>G-t}kEMb+r^KW!dg>Mf7^Hx%08lGM7y3)Z zA5*{sl?uzjA<>f5cUi&vppltbr9xX{NqGYnyo`N%N2zVUYx*g!jgc!anX%T-g8~Ns*1KAs=7GYm(7>_BVfs7df@78O=GVPDRy6(?!*V zwJciFh_i7pREuXHz?CAMO3IwPYyKHtEiU!mubD*>@d&}A=1@0=BQAkCr(m)xGE_gg zZ>ZKN>QNitZIAp%`ifGTt`IrV7N|xW2=<$*eA>ZT2aKSt#9=i`{t1)DyvE-5V<*4m4On* z!1SOnK2aVV_!SMZ_(Vfwa%9L>c)Y2+z0X^JhFDmJ9;Nq#(MR79K~IHOV6wLOP;a1M?_t2tqe8gr~-N-d`Z2K6Ze`Ol8F(2HkH?a z3iUipo;2Xx^lG^B~F3z&_|;-Jre;QIcI912Jjy(z*UV{s zXkLXtJWn263$Jp7kthaI^A`#Pgh+?w&s;3ydSh}JwdFPOC|bdP8bCbldLwUu(8pfj zsCZO?=--TmFU1kNNV65y3=?cLnB{UjAz2?RLkvEC5&BOg$2SoRgm=hEl}u#OO0B)m z@o9w{N@>NzmFaNyEa_9lSgIX?S&{2;lwbqV19nU=nnjg_cz6iZg{AsMAZ0OCMODre zATuAveLHSOG%YPwDqZ{rhl=1L3;?Pa6LhbHSAtLoOQOE~fqCP`>x=?w z>W2^rFemPyF6c>#z&LiZMaqsK$e_#^!8Qq)gi_L*g6s&Od4`)=jXcAylJVpt!D<)8 z^u9|X%IPf9NyrR*hFVw)>*!!t5P&2_c`#kAAdNkLwf7tB5{Xu3l3+DNcj6meOKZvB zflYzrw43mGqo>( zVPd5kYD;B8WpI)$O*py z3C$k5==P?{g>d zlJz2g5R-LC06KRv;mmK(&N%{c@1S-0^j-@7nSLXKGy(>w{!qrxoK1;(340a>LXD>} z5=crG0|2Y;x&Ml|tz2Lwn}%TU>gp?Dj(_dxXA0Ac_a)_=VOoX~Y~Dc`*DF#}010Dx zsIFi6UMnLyNTLA1nWaH1lhb6JY}`_n{}iZ#sQBv5^Gw+^CY2@mwYH#A z#sCS4qeW06wJC~0(}RNRD{Qk`RzORc1iyJ4mYpxoQFMEePdxk}GES-UlIZ*jj|gF} z8ZAx_3H>(Ok$6$oh_ak8uuFNDU=)Tf;RWxoub<05C^WtrNOcxL|qkW|92qBBM>(ciK!GBsV@m`ZA8y27wcuH zxA2Co(a{0OBV_L?7~2V&&wE*)_Z7>NIcgeX88WTppNLJaa0wt@Cij`Jga2`_n3Rba zJ7F=N!pU?F|2v~%s_CFi6!+Ob8a=i8E*9T1a^UG#TiIAqWn8XwTf)tZaob%`H9u)KVpjkKYT zBdD@3YX8QTEkuOx8weai=SiRn9Shj?GA9(9saXCoBJ`3W$NnYAp>U60hf$JEKIEWX zFgx zdMk+-&I(7|hVCTON(UTD?U^39nCxLU=!As8y8>tAL`&S3y?m^Ze9XlP%ZCeMXO=}r z9sow;LiM45ZKhCGrOTPE(x=t6HTaM&)B^16-QOG+k_4Zc^~km+apFJWrC_g^0W;c{ z*^Mt){sD7%)0Jbg^sk6sv9(|~f$4wlTw7|cUyd5}*<2oO79IxK{Fn)c{tIjj6h|tl zxbQ-WhH@vUh{(+34sZBk8E!YGZ&f?dN^D|a{K8{J3MnO9qA5*1gqeB%yCX$XeQ2k) z%H*P)^j{9#F@Jsxy9{65gD=Au{cu}q{=1?+e8Oc)iczckxWMQ8a%D$e4=nbmq`eU` z(r}#4aVW&`vgJEx!yF3mc?>r-!ndAabNn;F+{X?Wad12_!*eWfyfMJ=&m(gjKP>VI z2(LNKCS|?`=5vWY{a8G!_EsOA?@1_-w4?kRZJ7Q-}2F`L`o~f&BW8a09 zDFb(|e!4fu3Nk)U;(;hK-N%EGutvy-lO2{F>DT`*k)}y&K)n9q5W6oP6~x$!$m*<; z_%qlVTXVI`G(?KD<->;84&D#br)jvJE_OWguZ)xWXzVTzPMo*7515o} zZsa__b)C9{G*M%w9k(9-4W((@6dq=LR;@ggY`r^>^_c{3QLd3Yu)Q+j>y61eRSs0; z4^eE7CF!SvZIbo7W?y!i1H}91>z5finT2mR@LY3} z;`yX}!a8%Db9U~RHp}w;xkz(oPDKS*Tu$Rwqj$DdUgZ&d865cBdYR7VogZ9LdFZEl zR0wOtgjYsmlBQJ-<2kG4yS*n^3LAhY>U(#jCUetl=jqf@y}B|Rts?%t#Etd~tl-X}|B?|4wnnWC0Vn7MI0-t=wg#v}Ex( zY~OmWhmcP$*%?`kl;>_$Aw~H$>b)I0N}}QSpXqXm<9k$7{UmxCb6i8$J+*WCg!$iNMeu#J9~C!&A%>5ZG2ni zR$|Q8GApc!AM4$-G{~H6rY!P$(!u>UywpmRt`!``mp8jYdt;GtZUXn~vn$uH?a=|k zuIJ33#7LVZa@?;iu@s#Tx(*4s1G}elHR9y(|4hF3X{o`ftL@3T9LIXvXq-KckC~)%+cqB0~|;&--FU#|Jrxq&lb~(bIAYR!WKvG70u}>v4Q&htv#xZt05L zeZ%V9%OBu*-w*0cQ=QA-R>-_RuXsR23dTXwYO;FLT(KSJ(`BQ(M25E{*xv6)!`{sL zsm7wa^Y#z(yg4Q>9GrJG4xjOh*M`F`PXxc*lLS0>vi;M$X9Jd#wRvHylDL!=K0)3@ z&_Y5F9|4eUUx-*p~G z8I22n7D>y6B0tgn z8v8pCpCLjg`p}x2JK2i#&i$+7VqM*;zOm@?VZFUFjQ3$XB8Cn#-hK6K$%>?|f)#qyy2aG%3gkx$Yv$ zEtB)ewZpEs2$7$>Q3Qy18hzWcgNX|WBPS+)G$Mt;Zdq#Zqs6j@b3H0lG{q1I=0Gy) z`Bw<9p1CZ=&7rQ~tT|;-Lj{nkqyFdv)o`O|EszPieLd=j^1vjsbWk3x_⪻WZj#y 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Ξb3>iyCU7z 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ξ;=tluCamJA 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�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%0As_S3-O#8W76f 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 z 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Μ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ðj7#bjFlON~ESn~&#rNxXsux(1fYz-+ZGQ2yR> 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%0D2#O^`>ZhHXtTGll$foIAJC`M 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

    >ErDS+YJZ$B4ZTArL%Um5=Z-r@guL0J5S`N$k# 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 lZe#F$ht!#a%FAW;kA=hB>EerR5QBb^ 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

    e>E23P^pE>&G{g_edJgSoQKH_N;55^H+IX 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 R6BVG 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 XX9@!X+v0vV8|c>o9d}ky0|f*CVi{Gg literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/spine/fenrir.atlas b/tests/cpp-tests/Resources/spine/fenrir.atlas new file mode 100644 index 000000000000..d7b896f96b0b --- /dev/null +++ b/tests/cpp-tests/Resources/spine/fenrir.atlas @@ -0,0 +1,776 @@ + +fenrir.png +size: 1128,1128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +attack/0 + rotate: true + xy: 388, 255 + size: 27, 32 + orig: 154, 63 + offset: 127, 18 + index: -1 +attack/a + rotate: false + xy: 1022, 872 + size: 27, 32 + orig: 154, 63 + offset: 127, 18 + index: -1 +attack/b + rotate: true + xy: 937, 275 + size: 131, 57 + orig: 154, 63 + offset: 10, 6 + index: -1 +attack/c + rotate: false + xy: 1017, 502 + size: 109, 52 + orig: 154, 63 + offset: 5, 4 + index: -1 +attack/d + rotate: false + xy: 1039, 558 + size: 77, 46 + orig: 154, 63 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 2, 803 + size: 290, 323 + orig: 302, 323 + offset: 12, 0 + index: -1 +canying/s1 + rotate: true + xy: 847, 548 + size: 125, 142 + orig: 125, 142 + offset: 0, 0 + index: -1 +canying/s3 + rotate: false + xy: 431, 255 + size: 135, 130 + orig: 135, 130 + offset: 0, 0 + index: -1 +canying/s4 + rotate: true + xy: 570, 639 + size: 158, 106 + orig: 158, 106 + offset: 0, 0 + index: -1 +canying/s5 + rotate: false + xy: 600, 17 + size: 146, 107 + orig: 146, 107 + offset: 0, 0 + index: -1 +canying/s6 + rotate: true + xy: 548, 799 + size: 137, 106 + orig: 137, 106 + offset: 0, 0 + index: -1 +eyefire/eyefire_00000 + rotate: false + xy: 767, 911 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00001 + rotate: false + xy: 767, 911 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00002 + rotate: false + xy: 997, 420 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00003 + rotate: true + xy: 1088, 782 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00004 + rotate: false + xy: 721, 691 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00005 + rotate: true + xy: 1022, 859 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00006 + rotate: true + xy: 1022, 859 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00007 + rotate: false + xy: 953, 18 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00008 + rotate: false + xy: 753, 909 + size: 12, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00009 + rotate: false + xy: 656, 811 + size: 12, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00010 + rotate: false + xy: 1114, 471 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00011 + rotate: false + xy: 1114, 471 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00012 + rotate: false + xy: 1114, 440 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00013 + rotate: false + xy: 1114, 409 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00014 + rotate: false + xy: 230, 284 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00015 + rotate: false + xy: 244, 284 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00016 + rotate: false + xy: 258, 284 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00017 + rotate: false + xy: 996, 262 + size: 11, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00018 + rotate: false + xy: 827, 504 + size: 11, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00019 + rotate: false + xy: 997, 448 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00020 + rotate: false + xy: 925, 17 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00021 + rotate: false + xy: 925, 17 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00022 + rotate: false + xy: 939, 17 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00023 + rotate: true + xy: 925, 2 + size: 13, 27 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00024 + rotate: true + xy: 662, 2 + size: 13, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00025 + rotate: true + xy: 692, 2 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00026 + rotate: true + xy: 692, 2 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00027 + rotate: true + xy: 600, 2 + size: 13, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00028 + rotate: true + xy: 631, 2 + size: 13, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00029 + rotate: true + xy: 136, 10 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00030 + rotate: true + xy: 680, 380 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00031 + rotate: true + xy: 680, 380 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00032 + rotate: false + xy: 1106, 1099 + size: 13, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00033 + rotate: false + xy: 937, 246 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00034 + rotate: true + xy: 166, 11 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00035 + rotate: true + xy: 710, 381 + size: 12, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00036 + rotate: true + xy: 710, 381 + size: 12, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00037 + rotate: false + xy: 966, 18 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +hair t + rotate: true + xy: 2, 253 + size: 313, 145 + orig: 313, 145 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 680, 395 + size: 145, 138 + orig: 145, 138 + offset: 0, 0 + index: -1 +head beard b + rotate: true + xy: 996, 293 + size: 113, 66 + orig: 113, 66 + offset: 0, 0 + index: -1 +head beard f + rotate: true + xy: 656, 841 + size: 96, 95 + orig: 96, 95 + offset: 0, 0 + index: -1 +headmouth + rotate: true + xy: 1064, 268 + size: 86, 55 + orig: 86, 55 + offset: 0, 0 + index: -1 +l arm + rotate: false + xy: 1017, 409 + size: 95, 91 + orig: 96, 92 + offset: 1, 1 + index: -1 +l armour + rotate: false + xy: 829, 130 + size: 91, 99 + orig: 92, 100 + offset: 1, 0 + index: -1 +l beard + rotate: false + xy: 991, 556 + size: 46, 117 + orig: 46, 117 + offset: 0, 0 + index: -1 +l ear + rotate: true + xy: 1009, 135 + size: 23, 51 + orig: 23, 51 + offset: 0, 0 + index: -1 +l eye + rotate: false + xy: 827, 398 + size: 9, 8 + orig: 9, 8 + offset: 0, 0 + index: -1 +l finger a + rotate: true + xy: 922, 135 + size: 94, 85 + orig: 94, 85 + offset: 0, 0 + index: -1 +l finger b + rotate: false + xy: 678, 774 + size: 73, 65 + orig: 73, 65 + offset: 0, 0 + index: -1 +l finger c + rotate: false + xy: 149, 254 + size: 63, 59 + orig: 63, 59 + offset: 0, 0 + index: -1 +l finger d + rotate: true + xy: 1009, 160 + size: 71, 49 + orig: 71, 49 + offset: 0, 0 + index: -1 +l hand + rotate: true + xy: 847, 11 + size: 117, 76 + orig: 118, 76 + offset: 0, 0 + index: -1 +l leg + rotate: true + xy: 273, 634 + size: 160, 227 + orig: 160, 227 + offset: 0, 0 + index: -1 +l upparm + rotate: false + xy: 276, 400 + size: 153, 232 + orig: 153, 232 + offset: 0, 0 + index: -1 +lock + rotate: false + xy: 847, 478 + size: 168, 68 + orig: 168, 68 + offset: 0, 0 + index: -1 +lock 2 + rotate: false + xy: 827, 408 + size: 168, 68 + orig: 168, 68 + offset: 0, 0 + index: -1 +r arm + rotate: false + xy: 216, 86 + size: 170, 196 + orig: 170, 196 + offset: 0, 0 + index: -1 +r armour t + rotate: false + xy: 587, 939 + size: 234, 187 + orig: 234, 187 + offset: 0, 0 + index: -1 +r armour u + rotate: true + xy: 388, 123 + size: 130, 193 + orig: 130, 193 + offset: 0, 0 + index: -1 +r beard + rotate: false + xy: 753, 235 + size: 83, 158 + orig: 83, 158 + offset: 0, 0 + index: -1 +r ear + rotate: false + xy: 730, 126 + size: 97, 107 + orig: 97, 107 + offset: 0, 0 + index: -1 +r ear ringa + rotate: false + xy: 954, 2 + size: 15, 14 + orig: 15, 14 + offset: 0, 0 + index: -1 +r ear ringb + rotate: false + xy: 1088, 823 + size: 38, 36 + orig: 38, 36 + offset: 0, 0 + index: -1 +r ear ringb s + rotate: false + xy: 678, 683 + size: 41, 35 + orig: 41, 35 + offset: 0, 0 + index: -1 +r ear s + rotate: true + xy: 1039, 606 + size: 78, 67 + orig: 78, 67 + offset: 0, 0 + index: -1 +r eye + rotate: true + xy: 214, 284 + size: 29, 14 + orig: 30, 14 + offset: 1, 0 + index: -1 +r eye hurt + rotate: true + xy: 1088, 796 + size: 25, 38 + orig: 25, 39 + offset: 0, 0 + index: -1 +r finger a + rotate: false + xy: 502, 634 + size: 66, 160 + orig: 66, 161 + offset: 0, 1 + index: -1 +r finger b + rotate: false + xy: 838, 231 + size: 97, 175 + orig: 98, 176 + offset: 0, 0 + index: -1 +r finger c + rotate: true + xy: 388, 13 + size: 108, 210 + orig: 109, 211 + offset: 0, 1 + index: -1 +r finger d + rotate: false + xy: 136, 25 + size: 78, 226 + orig: 78, 226 + offset: 0, 0 + index: -1 +r hand + rotate: false + xy: 568, 262 + size: 183, 113 + orig: 183, 113 + offset: 0, 0 + index: -1 +r leg + rotate: false + xy: 2, 568 + size: 269, 233 + orig: 269, 233 + offset: 0, 0 + index: -1 +r upparm + rotate: false + xy: 294, 938 + size: 291, 188 + orig: 291, 188 + offset: 0, 0 + index: -1 +skill/0 + rotate: true + xy: 216, 2 + size: 82, 108 + orig: 267, 145 + offset: 130, 18 + index: -1 +skill/1 + rotate: false + xy: 276, 284 + size: 153, 114 + orig: 267, 145 + offset: 43, 0 + index: -1 +skill/10 + rotate: false + xy: 1002, 48 + size: 72, 85 + orig: 267, 145 + offset: 93, 30 + index: -1 +skill/11 + rotate: false + xy: 925, 47 + size: 75, 86 + orig: 267, 145 + offset: 92, 30 + index: -1 +skill/12 + rotate: false + xy: 583, 126 + size: 145, 134 + orig: 267, 145 + offset: 56, 11 + index: -1 +skill/13 + rotate: true + xy: 431, 387 + size: 245, 135 + orig: 267, 145 + offset: 11, 10 + index: -1 +skill/14 + rotate: true + xy: 2, 2 + size: 249, 132 + orig: 267, 145 + offset: 9, 12 + index: -1 +skill/15 + rotate: true + xy: 149, 315 + size: 251, 125 + orig: 267, 145 + offset: 8, 15 + index: -1 +skill/16 + rotate: true + xy: 568, 377 + size: 255, 110 + orig: 267, 145 + offset: 6, 22 + index: -1 +skill/17 + rotate: false + xy: 753, 675 + size: 257, 90 + orig: 267, 145 + offset: 5, 34 + index: -1 +skill/18 + rotate: false + xy: 753, 767 + size: 261, 90 + orig: 267, 145 + offset: 3, 34 + index: -1 +skill/19 + rotate: true + xy: 1051, 861 + size: 265, 53 + orig: 267, 145 + offset: 1, 62 + index: -1 +skill/2 + rotate: true + xy: 748, 3 + size: 121, 97 + orig: 267, 145 + offset: 58, 12 + index: -1 +skill/20 + rotate: false + xy: 753, 859 + size: 267, 45 + orig: 267, 145 + offset: 0, 68 + index: -1 +skill/3 + rotate: false + xy: 1012, 686 + size: 78, 79 + orig: 267, 145 + offset: 76, 27 + index: -1 +skill/4 + rotate: true + xy: 1064, 356 + size: 51, 62 + orig: 267, 145 + offset: 103, 37 + index: -1 +skill/5 + rotate: false + xy: 1064, 212 + size: 55, 54 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/6 + rotate: false + xy: 1009, 233 + size: 53, 58 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/7 + rotate: true + xy: 678, 720 + size: 52, 73 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/8 + rotate: false + xy: 326, 4 + size: 60, 80 + orig: 267, 145 + offset: 103, 32 + index: -1 +skill/9 + rotate: false + xy: 1016, 775 + size: 70, 82 + orig: 267, 145 + offset: 94, 31 + index: -1 +skirt b + rotate: false + xy: 680, 535 + size: 165, 138 + orig: 165, 138 + offset: 0, 0 + index: -1 +skirt f + rotate: true + xy: 294, 796 + size: 140, 252 + orig: 140, 252 + offset: 0, 0 + index: -1 +tail + rotate: false + xy: 823, 906 + size: 226, 220 + orig: 226, 220 + offset: 0, 0 + index: -1 diff --git a/tests/cpp-tests/Resources/spine/fenrir.json b/tests/cpp-tests/Resources/spine/fenrir.json new file mode 100644 index 000000000000..0d7ecb983744 --- /dev/null +++ b/tests/cpp-tests/Resources/spine/fenrir.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"+DQzIA0eXfSetpRgAF946l9QrG0","spine":"3.8.99","x":-813.41,"y":-125.16,"width":2088.89,"height":2360.03,"images":"./images/","audio":"E:/正在制作中/芬里尔"},"bones":[{"name":"root"},{"name":"zroot","parent":"root","scaleX":0.5,"scaleY":0.5},{"name":"body","parent":"zroot","length":177.73,"rotation":82.1,"x":82.98,"y":475.22,"color":"0000ffff"},{"name":"body2","parent":"body","length":241.58,"rotation":-28.67,"x":177.73,"color":"0000ffff"},{"name":"l upparm","parent":"body2","length":153.97,"rotation":-139.16,"x":228.65,"y":-180.36,"color":"0000ffff"},{"name":"l upparm2","parent":"l upparm","length":223.22,"rotation":-34.8,"x":153.97,"color":"0000ffff"},{"name":"l armour","parent":"l upparm2","length":121.38,"rotation":54.27,"x":224.35,"y":1.51,"color":"0000ffff"},{"name":"lhand","parent":"zroot","rotation":-66.25,"x":336.2,"y":268.79,"color":"0000ffff"},{"name":"l hand","parent":"lhand","length":155.21,"rotation":16.9,"x":1.02,"y":-0.45,"color":"0000ffff"},{"name":"l finger a","parent":"l hand","length":123.4,"rotation":51.42,"x":67.26,"y":27.18,"color":"0000ffff"},{"name":"l finger a2","parent":"l finger a","length":97.57,"rotation":-62,"x":124.51,"y":-0.04,"color":"0000ffff"},{"name":"l finger b","parent":"l hand","length":76.3,"rotation":7.31,"x":200.91,"y":31.05,"color":"0000ffff"},{"name":"l finger b2","parent":"l finger b","length":64.11,"rotation":-75.85,"x":76.3,"color":"0000ffff"},{"name":"l finger c","parent":"l hand","length":70.21,"rotation":-45.18,"x":160.62,"y":-19.28,"color":"0000ffff"},{"name":"l finger c2","parent":"l finger c","length":68.53,"rotation":-68.5,"x":70.21,"color":"0000ffff"},{"name":"l finger d","parent":"l hand","length":85.66,"rotation":-87.22,"x":124.69,"y":-44.08,"color":"0000ffff"},{"name":"l finger d2","parent":"l finger d","length":65.02,"rotation":-76.57,"x":85.66,"color":"0000ffff"},{"name":"r upparm","parent":"body2","length":179.64,"rotation":138.9,"x":235.44,"y":186.79,"color":"0000ffff"},{"name":"r upparm2","parent":"r upparm","length":352.22,"rotation":16.52,"x":179.64,"color":"0000ffff"},{"name":"r arm","parent":"r upparm2","length":205.31,"rotation":66.89,"x":351.56,"y":-1.2,"color":"0000ffff"},{"name":"rhand","parent":"zroot","rotation":-84.25,"x":-365.78,"y":540.34,"color":"0000ffff"},{"name":"r hand","parent":"rhand","length":129.6,"rotation":0.32,"x":1.36,"y":-0.14,"color":"0000ffff"},{"name":"r finger a","parent":"r hand","length":216.23,"rotation":-11.53,"x":31.12,"y":141.46,"color":"0000ffff"},{"name":"r finger b","parent":"r hand","length":199.56,"rotation":6.63,"x":-15.93,"y":-93.44,"color":"0000ffff"},{"name":"r finger c","parent":"r hand","length":244.47,"rotation":6.56,"x":69.12,"y":-149.36,"color":"0000ffff"},{"name":"r finger d","parent":"r hand","length":234.37,"rotation":-12.12,"x":113.12,"y":-202.3,"color":"0000ffff"},{"name":"head","parent":"body2","length":140.56,"rotation":-11,"x":240.46,"y":-1.18,"color":"0000ffff"},{"name":"r ear","parent":"head","length":110.31,"rotation":78.26,"x":135.56,"y":-69.9,"color":"0000ffff"},{"name":"r ear2","parent":"r ear","length":127.52,"rotation":9.9,"x":110.31,"color":"0000ffff"},{"name":"l ear","parent":"head","length":49.88,"rotation":55.53,"x":236.87,"y":-130.4,"color":"0000ffff"},{"name":"l ear2","parent":"l ear","length":44.37,"rotation":-19.53,"x":49.88,"color":"0000ffff"},{"name":"hair t","parent":"head","length":161.15,"rotation":102.8,"x":226.83,"y":-89.39,"color":"ffff00ff"},{"name":"hair t2","parent":"hair t","length":161.66,"rotation":26.68,"x":161.15,"color":"ffff00ff"},{"name":"hair t3","parent":"hair t2","length":145.45,"rotation":4.97,"x":161.66,"color":"ffff00ff"},{"name":"hair t4","parent":"hair t3","length":126.46,"rotation":3.12,"x":145.45,"color":"ffff00ff"},{"name":"hair t5","parent":"hair t4","length":41.55,"rotation":-72,"x":126.46,"color":"ffff00ff"},{"name":"hair t6","parent":"hair t","length":45.45,"rotation":-55.24,"x":105.17,"y":-54.49,"color":"ffff00ff"},{"name":"hair t7","parent":"hair t6","length":45.25,"rotation":-36.12,"x":45.45,"color":"ffff00ff"},{"name":"hair t8","parent":"hair t2","length":41.68,"rotation":-50.49,"x":77.2,"y":-72.86,"color":"ffff00ff"},{"name":"hair t9","parent":"hair t3","length":45.54,"rotation":-46.28,"x":58.31,"y":-53.23,"color":"ffff00ff"},{"name":"hair t10","parent":"hair t3","length":52.14,"rotation":83.3,"x":53.88,"y":100.89,"color":"ffff00ff"},{"name":"hair t11","parent":"hair t2","length":73.36,"rotation":33.61,"x":70.23,"y":102.78,"color":"ffff00ff"},{"name":"r eye","parent":"head","length":55.66,"rotation":117.62,"x":162.34,"y":-173.01},{"name":"l eye","parent":"head","length":19.01,"rotation":-8.36,"x":186.18,"y":-200.45},{"name":"head2","parent":"head","length":110.58,"rotation":-77.71,"x":140.45,"y":-199.34,"color":"0000ffff"},{"name":"headbeard b","parent":"head","length":84.61,"rotation":141.54,"x":125.94,"y":-206.96,"color":"ffff00ff"},{"name":"headbeard b2","parent":"headbeard b","length":59.45,"rotation":16.25,"x":84.61,"color":"ffff00ff"},{"name":"headbeard b3","parent":"headbeard b2","length":32.2,"rotation":22.93,"x":59.45,"color":"ffff00ff"},{"name":"r eye3","parent":"r eye","x":23.27,"y":0.16},{"name":"r ear s","parent":"head","length":107.77,"rotation":93.23,"x":116.77,"y":-59.98,"color":"002d6cff"},{"name":"r ear ring b","parent":"r ear","length":70.73,"rotation":107.11,"x":65.47,"y":42.89,"color":"ff0000ff"},{"name":"r ear ringb s","parent":"r ear","length":80.52,"rotation":93.81,"x":62.65,"y":56.6,"color":"5d0000ff"},{"name":"r ear ringa","parent":"r ear","length":27.09,"rotation":114.5,"x":106.19,"y":33.19,"color":"ff0000ff"},{"name":"r beard","parent":"head","length":131.38,"rotation":-142.97,"x":52.1,"y":-9.02,"color":"ff0000ff"},{"name":"r beard2","parent":"r beard","length":87.59,"x":131.38,"color":"ff0000ff"},{"name":"r beard3","parent":"r beard2","length":43.79,"x":87.59,"color":"ff0000ff"},{"name":"l bear","parent":"head","length":109.23,"rotation":-137,"x":127.26,"y":-156.27,"color":"ff0000ff"},{"name":"l bear2","parent":"l bear","length":72.82,"x":109.23,"color":"ff0000ff"},{"name":"l beard3","parent":"l bear2","length":36.41,"x":72.82,"color":"ff0000ff"},{"name":"headbeard f","parent":"head","length":69.03,"rotation":150.34,"x":76.63,"y":-138.99,"color":"ffff00ff"},{"name":"headbeard f2","parent":"headbeard f","length":47.75,"rotation":19.76,"x":69.03,"color":"ffff00ff"},{"name":"headbeard f3","parent":"headbeard f2","length":42.28,"rotation":34.27,"x":47.75,"color":"ffff00ff"},{"name":"headbeard f4","parent":"headbeard f","length":52.36,"rotation":-47.52,"x":78.43,"y":-52.66,"color":"ffff00ff"},{"name":"headbeard f5","parent":"headbeard f4","length":40.38,"rotation":5.98,"x":52.36,"color":"ffff00ff"},{"name":"l leg","parent":"body","length":259.69,"rotation":-131.1,"x":-96.06,"y":-6.15,"color":"0000ffff"},{"name":"l leg2","parent":"l leg","length":85.2,"rotation":-94.14,"x":259.69,"color":"0000ffff"},{"name":"l leg3","parent":"l leg2","length":131.52,"rotation":84.89,"x":85.2,"color":"0000ffff"},{"name":"l ik","parent":"zroot","rotation":-58.24,"x":247.34,"y":20.32,"color":"0000ffff"},{"name":"l leg4","parent":"l ik","length":115.52,"rotation":46,"color":"0000ffff"},{"name":"r leg","parent":"body","length":322.61,"rotation":129.46,"x":-78.5,"y":21.46,"color":"0000ffff"},{"name":"r leg2","parent":"r leg","length":99.8,"rotation":75.21,"x":322.61,"color":"0000ffff"},{"name":"r leg3","parent":"r leg2","length":151.51,"rotation":-67.03,"x":99.8,"color":"0000ffff"},{"name":"r ik","parent":"zroot","rotation":-140.26,"x":-311.65,"y":39.13,"color":"0000ffff"},{"name":"r leg4","parent":"r ik","length":153.02,"rotation":-29.39,"color":"0000ffff"},{"name":"skirt f","parent":"body","length":148.8,"rotation":-177.03,"x":-79.11,"y":-6.29,"color":"ff0000ff"},{"name":"skirt f2","parent":"skirt f","length":99.2,"x":148.8,"color":"ff0000ff"},{"name":"skirt f3","parent":"skirt f2","length":49.6,"x":99.2,"color":"ff0000ff"},{"name":"r leg5","parent":"r leg","length":77.69,"rotation":37.22,"x":164.63,"y":68.04,"color":"ff0000ff"},{"name":"l leg5","parent":"l leg","length":70.74,"rotation":-39.63,"x":135.91,"y":-24.6,"color":"ff0000ff"},{"name":"tail","parent":"body","length":147.59,"rotation":142.64,"x":-53.6,"y":15.95,"color":"ffff00ff"},{"name":"tail2","parent":"tail","length":153.62,"rotation":27.15,"x":147.59,"color":"ffff00ff"},{"name":"tail3","parent":"tail2","length":145.02,"rotation":-65.6,"x":153.62,"color":"ffff00ff"},{"name":"tail4","parent":"tail3","length":121.56,"rotation":-86.55,"x":145.02,"color":"ffff00ff"},{"name":"tail5","parent":"tail4","length":63.05,"rotation":31.03,"x":119.56,"y":-0.61,"color":"ffff00ff"},{"name":"tail6","parent":"tail5","length":80.54,"rotation":100.35,"x":63.05,"color":"ffff00ff"},{"name":"l ik2","parent":"l ik","rotation":-84.89,"x":-131.52,"color":"0000ffff"},{"name":"r ik2","parent":"r ik","rotation":67.03,"x":-151.51,"color":"0000ffff"},{"name":"r eye fire","parent":"r eye","rotation":23.99,"x":19.98,"y":-4.53,"scaleX":2.4368,"scaleY":2.4368},{"name":"r ear s2","parent":"r ear s","length":89.01,"rotation":12.12,"x":107.77,"color":"002d6cff"},{"name":"shadow","parent":"zroot","length":150,"rotation":-90,"scaleX":0.2986,"scaleY":1.4317},{"name":"r upparm3","parent":"r upparm","length":91.08,"rotation":111.51,"x":74.13,"y":76.86,"color":"0000ffff"},{"name":"l hand2","parent":"lhand","length":129.6,"rotation":-17.68,"x":-0.3,"y":-1.4,"color":"0000ffff"},{"name":"r finger a2","parent":"l hand2","length":216.23,"rotation":-11.53,"x":31.12,"y":141.46,"color":"0000ffff"},{"name":"r finger b2","parent":"l hand2","length":199.56,"rotation":6.63,"x":-15.93,"y":-93.44,"color":"0000ffff"},{"name":"r finger c2","parent":"l hand2","length":244.47,"rotation":6.56,"x":69.12,"y":-149.36,"color":"0000ffff"},{"name":"r finger d2","parent":"l hand2","length":234.37,"rotation":-12.12,"x":113.12,"y":-202.3,"color":"0000ffff"},{"name":"headmouth","parent":"head","length":133,"rotation":-81.22,"x":92.69,"y":-150.77,"color":"0000ffff"},{"name":"lock","parent":"body","rotation":-105.65,"x":-8.77,"y":-14.12,"scaleX":4,"scaleY":4},{"name":"lock2","parent":"body","rotation":-105.65,"x":-8.77,"y":-14.12,"scaleX":4,"scaleY":4},{"name":"effectroot","parent":"root","scaleX":0.5,"scaleY":0.5},{"name":"s","parent":"effectroot"},{"name":"s1","parent":"s"},{"name":"s2","parent":"s"},{"name":"s3","parent":"s"},{"name":"s4","parent":"s"},{"name":"s5","parent":"s"},{"name":"s6","parent":"s"},{"name":"zhuaji","parent":"effectroot","x":2396.97,"y":2272.11},{"name":"skill","parent":"effectroot","x":284.53,"y":3231.33,"scaleX":7.3877,"scaleY":7.3877},{"name":"zhuaji2","parent":"effectroot","x":2396.97,"y":2272.11}],"slots":[{"name":"s1","bone":"s1","color":"49b3ff81","attachment":"s1"},{"name":"s2","bone":"s2","color":"49b3ff81","attachment":"s2"},{"name":"s3","bone":"s3","color":"49b3ff81","attachment":"s3"},{"name":"s4","bone":"s4","color":"49b3ff81","attachment":"s4"},{"name":"s5","bone":"s5","color":"49b3ff81","attachment":"s5"},{"name":"s6","bone":"s6","color":"49b3ff81","attachment":"s6"},{"name":"shadow","bone":"shadow","color":"ffffff37"},{"name":"tail","bone":"tail","attachment":"tail"},{"name":"l upparm","bone":"l upparm","attachment":"l upparm"},{"name":"l arm","bone":"l armour","attachment":"l arm"},{"name":"l hand","bone":"l hand","attachment":"l hand"},{"name":"l finger d","bone":"l finger d","attachment":"l finger d"},{"name":"l finger c","bone":"l finger c","attachment":"l finger c"},{"name":"l finger b","bone":"l finger b","attachment":"l finger b"},{"name":"l finger a","bone":"l finger a","attachment":"l finger a"},{"name":"l armour","bone":"l armour","attachment":"l armour"},{"name":"body","bone":"body","attachment":"body"},{"name":"l leg","bone":"l leg","attachment":"l leg"},{"name":"r leg","bone":"r leg","attachment":"r leg"},{"name":"skirt b","bone":"body","attachment":"skirt b"},{"name":"skirt f","bone":"skirt f","attachment":"skirt f"},{"name":"l beard","bone":"l bear","attachment":"l beard"},{"name":"head beard b","bone":"headbeard b","attachment":"head beard b"},{"name":"l ear","bone":"l ear","attachment":"l ear"},{"name":"headmouth","bone":"headmouth","attachment":"headmouth"},{"name":"head","bone":"head","attachment":"head"},{"name":"r eye hurt","bone":"head","attachment":"r eye hurt"},{"name":"r eye","bone":"r eye3","attachment":"r eye"},{"name":"l eye","bone":"l eye","attachment":"l eye"},{"name":"head beard f","bone":"headbeard f","attachment":"head beard f"},{"name":"r beard","bone":"r beard","attachment":"r beard"},{"name":"hair t","bone":"hair t","attachment":"hair t"},{"name":"r ear ringb s","bone":"r ear ringb s","attachment":"r ear ringb s"},{"name":"r ear s","bone":"r ear s","attachment":"r ear s"},{"name":"r ear","bone":"r ear","attachment":"r ear"},{"name":"r ear ringb","bone":"r ear ring b","attachment":"r ear ringb"},{"name":"r ear ringa","bone":"r ear ringa","attachment":"r ear ringa"},{"name":"r beard2","bone":"r beard","attachment":"r beard"},{"name":"r upparm","bone":"r upparm2","attachment":"r upparm"},{"name":"r eye fire","bone":"r eye fire","attachment":"eyefire/eyefire_00000"},{"name":"r armour u","bone":"r upparm","attachment":"r armour u"},{"name":"r upparm 2","bone":"r upparm2","attachment":"r upparm"},{"name":"r armour t","bone":"r upparm","attachment":"r armour t"},{"name":"r arm","bone":"r arm","attachment":"r arm"},{"name":"r hand","bone":"r hand","attachment":"r hand"},{"name":"l hand2","bone":"l hand2","attachment":"r hand"},{"name":"skill","bone":"skill","color":"1fffe1ff","attachment":"skill/9"},{"name":"r finger d","bone":"r finger d","attachment":"r finger d"},{"name":"r finger d2","bone":"r finger d2","attachment":"r finger d"},{"name":"r finger c","bone":"r finger c","attachment":"r finger c"},{"name":"r finger c2","bone":"r finger c2","attachment":"r finger c"},{"name":"r finger b","bone":"r finger b","attachment":"r finger b"},{"name":"r finger b2","bone":"r finger b2","attachment":"r finger b"},{"name":"r finger a","bone":"r finger a","attachment":"r finger a"},{"name":"r finger a2","bone":"r finger a2","attachment":"r finger a"},{"name":"lock","bone":"lock","attachment":"lock"},{"name":"lock 2","bone":"lock2","attachment":"Lock"},{"name":"zhuaji","bone":"zhuaji","color":"5168f3b4","attachment":"attack/3"},{"name":"zhuaji2","bone":"zhuaji2","color":"5168f3b4","attachment":"attack/3"}],"ik":[{"name":"lhand","order":4,"bones":["l upparm2","l armour"],"target":"lhand","softness":50},{"name":"l ik","order":2,"bones":["l leg3"],"target":"l ik"},{"name":"l ik2","bones":["l leg","l leg2"],"target":"l ik2","softness":50,"bendPositive":false},{"name":"rhand","order":5,"bones":["r upparm2","r arm"],"target":"rhand","softness":50},{"name":"r ik","order":3,"bones":["r leg3"],"target":"r ik"},{"name":"r ik2","order":1,"bones":["r leg","r leg2"],"target":"r ik2","softness":50}],"skins":[{"name":"default","attachments":{"body":{"body":{"type":"mesh","uvs":[0.14905,0,0.05732,0.13531,0.05112,0.24871,0.04492,0.3621,0.05236,0.5565,0.07468,0.72081,0.11434,0.80644,0.04245,0.96612,0.17633,0.98306,0.31021,1,0.49615,1,0.52094,0.87355,0.62096,0.87601,0.70937,0.87818,0.81598,0.85041,0.93746,0.75784,0.95482,0.56576,0.99201,0.50327,0.996,0.40145,1,0.29962,0.91763,0.17465,0.76143,0.05662,0.57797,0,0.46144,0,0.34492,0,0.24699,0,0.72556,0.35848,0.34726,0.66029,0.28537,0.25931,0.71399,0.70628,0.36451,0.42609,0.81777,0.58214,0.5104,0.18357,0.58203,0.60122,0.61379,0.39127,0.25729,0.84069,0.68418,0.19439,0.17677,0.54516,0.47638,0.7008,0.9013,0.41399,0.48908,0.33191,0.43889,0.52353,0.30185,0.09637,0.16255,0.3997,0.72568,0.50893,0.40138,0.84587,0.2286,0.73657,0.84575,0.28844,0.56737,0.76759,0.18221,0.12361,0.48257,0.78604,0.60565,0.79327],"triangles":[42,25,24,49,0,25,49,25,42,1,0,49,32,23,22,36,22,21,36,21,20,32,22,36,28,49,42,47,36,20,47,20,19,23,42,24,26,36,47,36,40,32,34,36,26,34,40,36,2,49,28,49,2,1,43,2,28,3,2,43,23,32,42,32,28,42,19,39,47,18,39,19,26,47,39,32,40,28,30,28,40,43,28,30,17,39,18,44,26,39,34,26,44,41,30,40,41,40,34,37,43,30,4,3,43,4,43,37,16,39,17,31,44,39,16,31,39,33,41,34,33,34,44,41,27,37,41,37,30,38,41,33,29,33,44,29,44,31,15,31,16,29,31,15,48,38,33,48,33,29,14,29,15,13,51,29,29,14,13,27,41,38,5,4,37,46,5,37,27,46,37,50,38,48,51,48,29,50,48,51,6,5,46,45,35,46,6,46,35,50,45,27,50,27,38,45,46,27,11,50,51,45,50,11,13,12,51,11,51,12,8,6,35,7,6,8,9,35,45,8,35,9,10,45,11,9,45,10],"vertices":[1,3,250.05,350.93,1,2,2,471.3,230.72,0.00204,3,146.89,343.28,0.99796,2,2,398.23,224.36,0.02147,3,85.83,302.64,0.97853,2,2,325.16,218,0.09153,3,24.76,262.01,0.90847,2,2,201.38,196.31,0.45201,3,-73.43,183.59,0.54799,2,2,98.09,168.4,0.86474,3,-150.66,109.55,0.13526,2,2,46.59,137.11,0.97903,3,-180.84,57.38,0.02097,1,2,-61.54,165.88,1,1,2,-61.29,84.41,1,1,2,-61.04,2.95,1,2,2,-45.64,-108.12,0.99445,3,-144.12,-202.02,0.00555,2,2,37.32,-111.7,0.85541,3,-69.6,-165.37,0.14459,2,2,44.04,-171.66,0.65507,3,-34.95,-214.75,0.34493,2,2,49.97,-224.66,0.478,3,-4.32,-258.41,0.522,2,2,76.57,-285.87,0.36681,3,48.39,-299.35,0.63319,2,2,145.87,-350.21,0.25392,3,140.06,-322.56,0.74608,2,2,270.21,-343.53,0.10251,3,245.96,-257.05,0.89749,2,2,313.28,-360.2,0.05898,3,291.74,-251.01,0.94102,2,2,378.76,-353.55,0.02402,3,346.01,-213.76,0.97598,2,2,444.25,-346.9,0.00659,3,400.28,-176.51,0.99341,2,2,517.39,-286.61,8.0E-5,3,435.53,-88.52,0.99992,1,3,440.66,32.55,1,1,3,404.13,143.2,1,1,3,362.27,199.63,1,1,3,320.41,256.07,1,1,3,285.23,303.5,1,2,2,383.85,-188.21,0.00687,3,271.15,-66.24,0.99313,1,2,159.4,10.96,1,2,2,410.85,83.51,0.00305,3,164.47,185.11,0.99695,2,2,160.35,-212.16,0.32405,3,86.53,-194.49,0.67595,2,2,310.69,21.44,0.00408,3,106.37,82.6,0.99592,2,2,248.38,-263.13,0.13495,3,188.23,-196.98,0.86505,1,3,284.61,105.27,1,2,2,216.65,-124.02,0.17899,3,93.65,-90.15,0.82101,2,2,353.62,-124.36,0.00291,3,213.98,-24.73,0.99709,1,2,36.52,48.69,1,1,3,341.42,16.95,1,2,2,218.95,123.01,0.3835,3,-22.85,127.7,0.6165,2,2,144.17,-69.75,0.64637,3,4.02,-77.3,0.35363,2,2,362.9,-298.1,0.02818,3,305.48,-172.72,0.97182,1,3,199.98,58.51,1,1,3,82.53,9.08,1,1,3,254.93,239.84,1,2,2,310.85,144.41,0.10338,3,47.51,190.57,0.89662,2,2,287.6,-201.63,0.07053,3,193.13,-124.2,0.92947,2,2,45.13,-37.83,0.98,3,-98.19,-96.81,0.02,2,2,100.76,75.06,0.96519,3,-103.55,28.93,0.03481,2,2,438.63,-253.78,0.00324,3,350.66,-97.5,0.99676,2,2,108.97,-130.03,0.61934,3,2.06,-147.08,0.38066,2,2,489.14,157.17,2.6E-4,3,197.83,287.3,0.99974,2,2,90.14,-81.02,0.77008,3,-37.98,-113.11,0.22992,2,2,95.71,-155.17,0.58803,3,2.48,-175.5,0.41197],"hull":26,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,0,22,24,24,26,22,100,100,102,102,24],"width":603,"height":646}},"hair t":{"hair t":{"type":"mesh","uvs":[1,1,1,0.93655,1,0.8731,1,0.80965,1,0.74621,0.97867,0.65134,0.95734,0.55648,0.93166,0.49324,0.90598,0.43,0.89938,0.35095,0.89278,0.27189,0.91919,0.18968,0.9412,0.12644,0.88104,0.13593,0.82969,0.20233,0.82089,0.29087,0.78127,0.21182,0.70644,0.16755,0.65363,0.11063,0.62512,0.04678,0.60457,0,0.5777,0.03826,0.57295,0.10469,0.57295,0.15409,0.51661,0.1587,0.47709,0.16551,0.42097,0.17914,0.38224,0.15018,0.35774,0.10589,0.34114,0.05138,0.33008,0.14166,0.34193,0.2081,0.35853,0.23706,0.31337,0.26952,0.27385,0.3104,0.23907,0.33936,0.19243,0.35639,0.14027,0.3581,0.09047,0.34447,0.05886,0.3104,0.05095,0.26952,0.07387,0.2593,0.09601,0.26441,0.07545,0.20819,0.03752,0.19116,0.00116,0.23545,0,0.33936,0.02645,0.39216,0.06755,0.40068,0.11735,0.4092,0.16556,0.41772,0.20824,0.41601,0.24934,0.41772,0.29044,0.42964,0.32285,0.44838,0.3513,0.48756,0.36632,0.55059,0.35339,0.62355,0.34707,0.71554,0.34628,0.80071,0.35577,0.8944,0.36841,0.96765,0.39054,1,0.38659,0.93188,0.39608,0.87226,0.41505,0.82286,0.44824,0.80071,0.48381,0.80071,0.50831,0.80412,0.52807,0.81263,0.50989,0.85352,0.49092,0.8961,0.48618,0.96765,0.52175,0.92166,0.55653,0.92506,0.60501,0.9455,0.63821,0.96595,0.68168,0.9932,0.71962,1,0.73306,0.96254,0.72515,0.91995,0.71509,0.88104,0.69121,0.836,0.71509,0.85638,0.74395,0.8982,0.7748,0.93467,0.77431,0.87247,0.82738,0.92009,0.88046,0.96772,0.90235,0.92053,0.88494,0.87227,0.92923,0.92804,0.94067,0.92911,0.98545,1,0.56916,0.64447,0.82587,0.6385,0.70306,0.38182,0.45682,0.41814,0.62948,0.33442,0.74222,0.63473,0.66662,0.56659,0.53681,0.3129,0.43869,0.68673,0.93205,0.74328,0.7731,0.45982,0.87323,0.4955,0.48291,0.62679,0.55701,0.48373,0.60783,0.81374,0.37064,0.34021,0.61036,0.45399,0.41112,0.51834,0.65541,0.69911,0.91643,0.5967,0.77713,0.75995,0.5023,0.50074,0.87749,0.72979,0.82792,0.79865],"triangles":[94,67,106,68,67,94,69,68,94,108,94,112,69,94,108,82,112,99,108,112,82,73,70,69,71,70,73,74,69,108,73,69,74,75,74,108,76,75,108,82,76,108,72,71,73,77,76,82,77,82,81,77,81,80,78,77,80,79,78,80,102,111,106,57,56,102,67,66,102,67,102,106,102,58,57,65,102,66,65,58,102,59,58,65,64,59,65,60,59,64,63,60,64,61,60,63,61,63,62,30,29,28,31,30,28,31,28,27,32,31,27,26,109,32,26,32,27,97,26,25,98,23,22,101,24,23,19,22,21,98,18,17,19,18,22,19,21,20,22,18,98,11,13,12,10,13,11,14,13,10,15,14,10,104,16,15,9,105,15,9,15,10,105,9,8,105,8,7,104,15,105,113,105,7,43,40,44,41,43,42,41,40,43,45,44,40,46,45,40,46,40,39,47,46,39,48,39,38,47,39,48,49,38,37,48,38,49,51,36,35,50,37,36,50,36,51,49,37,50,51,35,52,33,32,109,52,35,34,109,26,97,97,25,101,53,34,33,54,53,33,52,34,53,109,54,33,55,54,109,111,55,109,97,111,109,56,55,111,115,111,97,56,111,102,96,98,17,96,17,16,25,24,101,98,101,23,110,101,98,104,96,16,107,101,110,115,97,101,107,115,101,96,110,98,100,96,104,100,110,96,106,111,115,94,107,110,94,110,100,112,94,100,112,100,99,106,115,94,94,115,107,113,7,6,99,100,104,95,104,105,95,105,113,99,104,95,116,95,113,5,103,113,5,113,6,116,113,103,103,5,4,114,99,95,117,95,116,114,95,117,103,4,3,83,82,99,114,83,99,90,116,103,117,116,90,86,83,114,86,114,117,92,91,103,86,84,83,87,86,117,87,117,90,90,103,91,92,103,3,2,92,3,84,86,85,92,2,1,88,87,90,88,90,89,93,92,1,93,1,0],"vertices":[1,31,-61.6,28.58,1,1,31,-51.11,13.46,1,2,31,-40.62,-1.65,1,35,-322.22,-524.55,0,3,31,-30.13,-16.77,0.99737,35,-304.72,-530.24,0,36,-108.13,-89.64,0.00263,3,31,-19.64,-31.89,0.98371,35,-287.22,-535.93,0,36,-89.73,-89.64,0.01629,3,31,7,-46.88,0.8976,35,-256.94,-531.75,0,36,-62.22,-76.31,0.1024,3,31,33.64,-61.88,0.68276,35,-226.66,-527.57,0,36,-34.71,-62.97,0.31724,3,31,57.28,-67.8,0.41463,35,-204.26,-517.98,0,36,-16.37,-46.93,0.58537,3,31,80.92,-73.71,0.08773,35,-181.85,-508.38,0,36,1.97,-30.88,0.91227,4,31,97.38,-90.19,0.00184,35,-158.78,-511.54,0,36,24.89,-26.75,0.92623,37,-0.83,-33.72,0.07193,3,35,-135.7,-514.7,0,36,47.82,-22.62,0.23199,37,15.25,-16.88,0.76801,2,35,-118.12,-537.77,0,37,44.24,-16.16,1,2,35,-104.93,-556.52,0,37,67.16,-16.46,1,1,37,42.78,12.29,1,5,31,157.74,-100.77,0.00179,32,-48.3,-88.5,0.0031,36,67.99,16.81,0.07896,37,8.3,26.87,0.91389,38,-67.78,-106.77,0.00226,5,31,147.62,-76.53,0.06218,32,-46.46,-62.31,0.06667,36,42.32,22.31,0.71947,37,-15.68,16.18,0.10635,38,-86.82,-88.69,0.04533,4,31,181.03,-81.25,0.07264,32,-18.72,-81.52,0.23909,36,65.24,47.07,0.47841,38,-54.35,-79.52,0.20986,4,31,226.77,-65.13,0.00828,32,29.39,-87.66,0.22154,36,78.08,93.84,0.16765,38,-19.01,-46.31,0.60253,3,32,64.39,-99.36,0.00589,36,94.58,126.85,0.02029,38,12.29,-26.74,0.97382,2,36,113.1,144.67,5.6E-4,38,37.38,-21.2,0.99944,1,38,55.65,-17.31,1,3,32,114.33,-113.47,1.1E-4,38,54.95,2.81,0.99985,39,-39.4,-121.83,4.0E-5,5,32,114.55,-93.98,0.02542,33,-55.07,-89.55,2.5E-4,35,-27.8,-339.59,0,38,40.05,15.38,0.96866,39,-52.1,-107.04,0.00566,5,32,112.54,-79.79,0.15157,33,-55.85,-75.24,0.00374,35,-41.43,-335.16,0,38,27.83,22.85,0.8135,39,-62.98,-97.72,0.03119,5,32,147.21,-73.52,0.39051,33,-20.76,-71.99,0.07899,35,-31.82,-301.26,0,38,45.05,53.59,0.3286,39,-41.07,-70.12,0.2019,5,32,171.39,-68.09,0.28816,33,3.8,-68.68,0.16807,35,-26.06,-277.15,0,38,56.24,75.7,0.149,39,-26.5,-50.08,0.39477,5,32,205.56,-59.25,0.04629,33,38.61,-62.83,0.08654,35,-18.98,-242.58,0,38,71.16,107.69,0.02133,39,-6.68,-20.87,0.84583,4,32,230.71,-64.16,5.8E-4,35,-3.51,-222.15,0,38,90.95,123.97,3.2E-4,39,15.45,-7.96,0.99911,1,39,35.17,-4.69,1,2,35,31.68,-206.58,0,39,53.92,-7.1,1,1,39,38.55,15.19,1,2,33,87.48,-51.75,0.05177,39,19.1,22.1,0.94823,2,33,76.66,-43.93,0.26237,39,5.97,19.69,0.73763,3,33,104.34,-33,0.85622,35,-23.12,-170.51,0,39,17.19,47.25,0.14378,4,33,128.36,-19.82,0.98032,34,-18.15,-18.86,0.00805,35,-26.76,-143.36,0,39,24.26,73.72,0.01163,4,33,149.6,-10.25,0.40644,34,3.59,-10.46,0.59355,35,-28.03,-120.09,0,39,32.03,95.69,1.0E-5,4,33,178.44,-3.73,0.001,34,32.74,-5.52,0.999,35,-23.72,-90.85,0,39,47.25,121.03,0,1,34,65.34,-5.03,1,2,34,96.46,-8.98,0.99158,35,-0.74,-31.31,0.00842,2,34,116.22,-18.86,0.3722,35,14.77,-15.57,0.6278,2,34,121.16,-30.71,0.03643,35,27.57,-14.53,0.96357,2,34,106.84,-33.68,0.00113,35,25.96,-29.08,0.99887,2,33,240.07,-27.09,0,35,20.28,-41.77,1,1,35,39.75,-34.6,1,1,35,51.78,-13.57,1,3,33,299.72,-32.26,0,35,46.58,12.01,1,39,151.68,188.98,0,3,33,298.8,-2.13,0,35,18.15,22.01,1,39,129.27,209.14,0,4,33,281.46,12.27,0,34,136.48,4.86,0.23392,35,-1.52,11.02,0.76608,39,106.88,206.55,0,3,33,255.68,13.34,0,34,110.79,7.33,1,39,88.29,188.65,0,2,34,79.66,9.79,1,35,-23.78,-41.48,0,1,34,49.53,12.26,1,1,34,22.85,11.77,1,2,33,141.96,12.09,0.64231,34,-2.83,12.26,0.35769,2,33,116.12,14.15,0.99984,40,-78.88,-71.94,1.6E-4,2,33,95.6,18.47,0.98705,40,-76.98,-51.06,0.01295,3,33,77.22,28.85,0.89321,40,-68.82,-31.6,0.10673,41,100.86,-147.9,6.0E-5,4,32,224.23,52.2,0.00163,33,66.86,46.59,0.61689,40,-52.41,-19.23,0.37782,41,100.26,-127.37,0.00366,4,32,229.26,74.29,2.6E-4,33,73.77,68.16,0.27919,40,-30.18,-23.58,0.71925,41,116.67,-111.75,0.0013,2,33,76.27,95.01,0.03669,40,-3.22,-22.93,0.96331,2,35,-175.98,-142.47,0,40,21.2,-19.2,1,1,40,46.96,-8.72,1,1,40,66.54,2.69,1,2,40,73.43,17.92,1,41,142.77,-3.24,0,3,35,-219.94,-154.67,0,40,54.38,12.11,0.99995,41,136.48,-22.13,5.0E-5,4,32,192.71,141.95,0.00202,35,-205.33,-165.65,0,40,36.33,15.01,0.99209,41,123.68,-35.17,0.00589,5,32,182.98,126.1,0.02187,33,32.16,123.78,0.00508,35,-195.37,-181.36,0,40,20.2,24.24,0.91897,41,106.81,-42.99,0.05408,5,32,163.34,116.82,0.08233,33,11.79,116.24,0.03959,35,-195.68,-203.07,0,40,10.33,43.59,0.6777,41,85.32,-39.85,0.20038,5,32,141.34,113.7,0.12842,33,-10.41,115.03,0.04255,35,-202.55,-224.22,0,40,6.54,65.5,0.39976,41,65.26,-30.27,0.42926,5,32,126.03,112.52,0.12147,33,-25.75,115.18,0.02779,35,-208.22,-238.48,0,40,4.9,80.75,0.22502,41,51.87,-22.77,0.62571,5,32,113.46,113.23,0.05717,33,-38.22,116.98,0.00949,35,-214.39,-249.46,0,40,5.23,93.34,0.07499,41,41.79,-15.22,0.85834,5,32,123.04,126.57,0.00259,33,-27.52,129.43,4.1E-4,35,-222.15,-234.99,0,40,18.85,84.17,0.00392,41,57.15,-9.42,0.99308,5,32,133.04,140.46,1.0E-5,33,-16.35,142.41,0,35,-230.23,-219.9,0,40,33.04,74.6,2.0E-5,41,73.17,-3.39,0.99997,4,32,133.06,161.42,1.0E-5,33,-14.52,163.29,0,40,53.99,75.21,1.0E-5,41,84.79,14.06,0.99998,1,41,58.98,11.6,1,1,41,39.79,21.86,1,2,31,150.21,156.36,0.0168,41,15,40.27,0.9832,2,31,129.79,149.4,0.05254,41,-1.16,54.56,0.94746,2,31,102.96,140.4,0.08571,41,-22.28,73.4,0.91429,2,31,82.36,128.5,0.09209,41,-42.82,85.4,0.90791,2,31,81.65,114.78,0.09581,41,-55.08,79.22,0.90419,3,31,92.75,107.45,0.10785,32,-12.87,126.73,0.00181,41,-55.95,65.94,0.89035,3,31,104.35,101.77,0.13824,32,-5.06,116.44,0.00828,41,-55.14,53.05,0.85348,3,31,124.06,99.55,0.27556,32,11.56,105.6,0.04416,41,-47.3,34.83,0.68028,3,31,108.43,95.89,0.54334,32,-4.05,109.36,0.03887,41,-58.22,46.6,0.41779,3,31,86.7,95.57,0.7217,32,-23.61,118.83,0.01395,41,-69.27,65.32,0.26435,3,31,64.83,93.26,0.76976,32,-44.19,126.59,0.00579,41,-82.11,83.17,0.22445,3,31,75.37,78.62,0.80256,32,-41.35,108.77,0.00679,41,-89.61,66.76,0.19066,2,31,40.24,71.06,0.9487,41,-113.59,93.52,0.0513,2,31,5.11,63.49,0.98325,41,-137.57,120.27,0.01675,2,31,1.67,44.44,0.98561,41,-155.81,113.82,0.01439,2,31,18.6,39.15,0.98849,41,-152.02,96.5,0.01151,2,31,-13.36,36.66,0.99971,41,-170.03,123.03,2.9E-4,1,31,-19.42,32.83,1,1,31,-54.13,33.76,1,6,31,218.4,97.42,0.00197,32,94.89,61.34,0.46454,33,-61.21,66.89,0.01013,35,-175.94,-288.95,0,40,-47.21,110.33,0.04658,41,-2.4,-48.16,0.47677,3,31,87.58,4.51,0.99612,32,-63.71,37.06,4.0E-5,41,-147.92,19.42,0.00384,4,31,193.08,-12.88,0.00105,32,22.75,-25.84,0.7646,36,15.94,95.95,0.08638,38,-70.92,-12.1,0.14798,4,32,173.63,6.22,0.00578,33,12.47,5.16,0.97992,40,-99.9,29.95,0.01114,41,32.67,-137.65,0.00316,5,32,70.21,-32.99,0.63018,35,-102.08,-352.6,0,36,29.68,141.94,0.00919,38,-35.22,19.97,0.35978,39,-125.67,-90.52,8.4E-4,4,31,131.15,33.42,0.74875,32,-11.8,43.33,0.13476,35,-206.69,-392.69,0,41,-101.22,-4.1,0.11649,4,31,181.23,44.13,0.11995,32,37.76,30.41,0.71938,35,-173.29,-353.86,0,41,-67.1,-42.29,0.16067,5,32,128.43,-31.02,0.73318,33,-35.8,-28.03,0.02197,35,-78.25,-299.44,0,38,0.31,66.14,0.18983,39,-83.25,-50.6,0.05502,4,32,173.9,84.93,0.10715,33,19.55,83.56,0.15377,40,-21.22,32.07,0.6024,41,76.46,-72.24,0.13668,3,31,15.74,-8.37,0.98676,35,-273.29,-495.8,0,36,-88.88,-47.17,0.01324,4,31,144.22,-19.25,0.73181,32,-23.78,-9.6,0.03897,36,-6.68,52.17,0.21206,38,-113.05,-37.66,0.01715,3,31,86.91,-46.44,0.25332,35,-193.59,-483.05,0,36,-17.03,-10.41,0.74668,4,32,148.98,63.84,0.31834,33,-7.11,64.7,0.18251,40,-43.07,56.34,0.27716,41,44.03,-76.02,0.22199,5,32,108.96,16.25,0.92743,33,-51.09,20.75,0.00237,35,-129.26,-296.14,0,40,-91.84,94.9,0.01205,41,-15.64,-93.5,0.05816,2,31,170.55,123.96,0.00933,41,-3.06,6.55,0.99067,2,33,67.48,-14.47,0.82256,39,-21.67,33.41,0.17744,5,31,228.74,37.35,2.5E-4,32,77.17,3.03,0.99114,35,-131.37,-330.51,0,40,-106.03,126.28,2.3E-4,41,-49.44,-86.91,0.00838,4,32,197.83,39.01,0.02891,33,39.41,35.73,0.72157,40,-66.4,6.76,0.23214,41,70.97,-123.74,0.01738,5,31,165.08,79.7,0.17404,32,39.29,69.45,0.29033,35,-207.67,-335.32,0,40,-40.79,166.15,2.0E-5,41,-44.21,-10.63,0.53561,3,31,47.99,-37.72,0.71699,35,-229.85,-499.65,0,36,-46.38,-37.41,0.28301,3,31,92.52,50.81,0.83996,32,-38.51,76.22,0.01729,41,-105.26,38.07,0.14276,4,32,142.13,25.94,0.71705,33,-17.22,27.54,0.14769,40,-81.15,62.04,0.06442,41,17.35,-103.78,0.07084,2,31,45.98,7.86,0.99735,41,-165.63,57.21,0.00265,2,31,60.04,41.93,0.94849,41,-129.07,61.88,0.05151],"hull":94,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108,108,110,110,112,112,114,114,116,116,118,118,120,120,122,122,124,124,126,126,128,128,130,130,132,132,134,134,136,136,138,138,140,140,142,142,144,144,146,146,148,148,150,150,152,152,154,154,156,156,158,158,160,160,162,162,164,164,166,166,168,168,170,170,172,172,174,174,176,176,178,178,180,180,182,182,184,184,186,186,0],"width":625,"height":290}},"head":{"head":{"type":"mesh","uvs":[0.23467,0.78444,0.37718,0.76636,0.53048,0.8274,0.67514,1,1,1,1,0.83418,0.88674,0.69401,0.7939,0.6307,0.77014,0.5787,0.84356,0.51314,0.84356,0.38427,0.62764,0.04062,0.49161,0,0.3016,0,0.12023,0.07227,0.02523,0.19436,0,0.3187,0,0.45888,0.02523,0.60809,0.1116,0.71888,0.23035,0.6194,0.31888,0.40462,0.52832,0.30062,0.69889,0.32096,0.42252,0.63975,0.57366,0.54479,0.69026,0.54931,0.58446,0.75505,0.64492,0.71209,0.72049,0.66914],"triangles":[4,3,5,6,5,3,3,29,6,29,7,6,2,27,3,27,28,3,3,28,29,27,2,24,19,20,0,0,20,1,2,1,24,1,20,24,28,27,25,19,18,20,27,24,25,28,26,29,28,25,26,29,8,7,29,26,8,25,24,21,24,20,21,21,20,17,20,18,17,8,26,9,10,9,26,21,22,25,26,25,23,25,22,23,26,23,10,17,16,21,16,15,21,15,14,21,14,13,21,22,13,12,22,21,13,22,11,23,10,23,11,22,12,11],"vertices":[1,26,40.53,-149.57,1,1,26,74.3,-173.68,1,2,26,95.63,-216.01,0.5,44,6.75,-47.35,0.5,1,44,68.39,-62.1,1,1,44,145.04,-7.88,1,1,44,118.61,29.48,1,1,44,69.54,42.16,1,2,26,188.44,-227.31,0.5,44,37.55,40.93,0.5,1,26,193.06,-212.09,1,1,26,220.93,-213.05,1,1,26,244.93,-186.8,1,1,26,262.88,-74.69,1,1,26,241.43,-39.89,1,1,26,200.9,-2.84,1,1,26,148.76,17.81,1,1,26,105.76,11.47,1,1,26,77.22,-8.94,1,1,26,51.11,-37.5,1,1,26,28.7,-72.81,1,1,26,26.49,-112.22,1,1,26,70.35,-115.11,1,1,26,129.23,-88.63,1,1,26,193.27,-108.28,1,1,26,225.86,-145.69,1,1,26,107.55,-156.73,1,1,26,157.47,-166.86,1,1,26,181.5,-190.52,1,2,26,120.61,-211.8,0.5,44,7.95,-22.04,0.5,2,26,141.51,-214.84,0.5,44,15.37,-2.27,0.5,2,26,165.63,-220.83,0.5,44,26.35,20.02,0.5],"hull":20,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,0,38,0,40,40,42,42,44,44,46,46,20,2,48,48,50,50,52,52,16,4,54,54,56,56,58,58,14],"width":289,"height":276}},"head beard b":{"head beard b":{"type":"mesh","uvs":[0.4976,1,0.52707,0.87968,0.55654,0.75936,0.66851,0.5911,0.78048,0.42284,1,0.38265,1,0.2822,0.92413,0.18426,0.84826,0.08631,0.6803,0,0.44014,0,0.19999,0,0.09999,0.09589,0,0.19179,0,0.3274,0.08802,0.42284,0.04401,0.58105,0,0.73927,0.14106,0.63379,0.16168,0.74931,0.35911,0.71415,0.38268,0.88493,0.43278,1,0.49157,0.44396,0.86158,0.28706,0.24567,0.34296,0.6811,0.26133,0.38276,0.27419,0.26709,0.51149,0.53512,0.19559,0.31718,0.15384,0.59552,0.47699,0.45436,0.66692,0.13585,0.21936,0.58411,0.11415],"triangles":[13,12,33,14,13,33,15,14,33,15,33,25,15,25,28,18,15,28,16,15,18,17,16,18,19,18,28,19,28,20,30,11,10,33,12,11,33,11,30,27,30,10,27,10,29,25,33,30,25,30,27,23,27,29,23,29,31,28,25,27,28,27,23,32,28,23,20,28,32,31,32,23,2,32,31,1,32,2,21,20,32,21,32,1,1,22,21,0,22,1,34,10,9,29,10,34,26,9,8,34,9,26,24,8,7,26,8,24,24,7,6,5,24,6,4,26,24,4,24,5,26,29,34,31,26,4,31,29,26,3,31,4,2,31,3],"vertices":[3,45,98.89,87.12,0.00523,46,38.08,79.65,0.93692,47,11.35,81.68,0.05785,3,45,91.18,71.74,0.03882,46,26.37,67.04,0.90884,47,-4.35,74.63,0.05234,3,45,83.46,56.35,0.16909,46,14.66,54.43,0.8013,47,-20.05,67.58,0.02962,3,45,56.79,35.95,0.74597,46,-16.66,42.3,0.25397,47,-53.62,68.6,5.0E-5,2,45,30.11,15.54,0.99819,46,-47.98,30.16,0.00181,1,45,-19.53,13.67,1,1,45,-20.45,0.45,1,1,45,-4.32,-13.64,1,1,45,11.82,-27.72,1,2,45,48.73,-41.71,0.97579,46,-46.12,-30,0.02421,3,45,102.63,-45.46,0.23509,46,4.58,-48.68,0.76089,47,-69.5,-23.46,0.00402,3,45,156.53,-49.21,3.0E-5,46,55.28,-67.36,0.71012,47,-30.08,-60.42,0.28985,2,46,80.77,-63.26,0.466,47,-5.01,-66.57,0.534,2,46,106.26,-59.16,0.30578,47,20.06,-72.72,0.69422,2,46,112.45,-42.37,0.26865,47,32.31,-59.66,0.73135,2,46,98.22,-23.7,0.14867,47,26.47,-36.93,0.85133,2,46,114.73,-7.52,0.00351,47,47.98,-28.47,0.99649,1,47,69.49,-20,1,1,47,36.81,-8.45,1,1,47,43.86,5.85,1,3,45,127.36,47.32,0.00236,46,54.28,33.47,0.67009,47,8.28,32.84,0.32755,3,45,123.63,70.17,5.9E-4,46,57.09,56.46,0.90424,47,19.82,52.91,0.09517,3,45,113.44,86.11,3.1E-4,46,51.77,74.61,0.93533,47,21.99,71.7,0.06436,3,45,95.15,13.81,0.07184,46,13.98,10.31,0.92713,47,-37.86,27.21,0.00102,1,45,10.67,-1.08,1,2,46,61.29,-21.33,0.6048,47,-6.62,-20.36,0.3952,1,45,50.94,-7.28,1,3,45,118.02,-10.25,0.00992,46,29.21,-19.18,0.98469,47,-35.33,-5.89,0.00539,1,47,5.08,-0.84,1,2,45,83.1,-18.22,0.61725,46,-6.55,-17.07,0.38275,3,45,131.64,-27.12,0.01237,46,37.56,-39.19,0.89658,47,-35.43,-27.57,0.09106,2,45,72.12,19.78,0.69962,46,-6.46,22.49,0.30038,3,45,105.55,42.59,0.05542,46,32.01,35.03,0.8662,47,-11.62,42.95,0.07838,2,46,78.83,-45.18,0.43351,47,0.25,-49.16,0.56649,2,45,71.36,-28.18,0.82384,46,-20.61,-23.34,0.17616],"hull":23,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,0],"width":225,"height":132}},"head beard f":{"head beard f":{"type":"mesh","uvs":[0.50254,0.11314,0.53275,0.21387,0.56295,0.31461,0.65962,0.4245,0.82981,0.45656,1,0.48861,0.96877,0.58782,0.93754,0.68703,0.82879,0.7084,0.72004,0.72977,0.60827,0.86103,0.4391,0.87324,0.32733,0.93124,0.279,1,0.21254,1,0.17327,0.89156,0.17025,0.73282,0.22462,0.58019,0.34545,0.51914,0.24275,0.44587,0.07056,0.36956,0,0.38482,0,0.30545,0.10077,0.26882,0.27295,0.25661,0.15212,0.16503,0.08264,0.07956,0.02223,0,0.12191,0,0.29108,0.06124,0.39681,0.08719,0.53297,0.509,0.41058,0.35977,0.49354,0.70647,0.31084,0.74766,0.69703,0.58386,0.61046,0.67755,0.38149,0.61256,0.40608,0.19882,0.87698,0.58537,0.21941,0.33999,0.44655,0.46301,0.39065,0.77425],"triangles":[26,27,28,25,28,29,26,28,25,38,30,0,38,0,1,24,25,29,38,24,29,38,29,30,40,23,24,32,38,1,32,1,2,24,38,32,40,24,32,20,22,23,20,23,40,21,22,20,19,40,32,20,40,19,41,32,2,31,41,2,18,19,32,41,18,32,15,16,34,12,42,11,15,34,12,13,14,15,12,13,15,37,18,41,37,41,31,17,18,37,33,37,31,34,17,37,42,34,37,16,17,34,33,42,37,10,33,36,11,42,33,11,33,10,12,34,42,3,31,2,35,3,4,31,3,35,39,4,5,35,4,39,6,39,5,36,31,35,7,39,6,36,33,31,8,35,39,8,39,7,9,36,35,8,9,35,10,36,9],"vertices":[1,62,15.26,-48.85,1,2,59,51.28,-76.95,0.01729,62,-0.42,-36.43,0.98271,2,59,49.86,-57.01,0.17834,62,-16.09,-24.01,0.82166,2,59,36.38,-32.54,0.75033,62,-43.24,-17.43,0.24967,2,59,5.86,-19.37,0.99558,62,-73.56,-31.05,0.00442,1,59,-24.66,-6.2,1,1,59,-14.64,10.85,1,1,59,-4.63,27.91,1,2,59,16.63,27.25,0.9988,60,-40.1,43.36,0.0012,2,59,37.89,26.59,0.90812,60,-20.31,35.55,0.09188,3,59,64.34,46.17,0.39602,60,11.19,45.03,0.58793,61,-4.85,57.8,0.01605,3,59,96.53,41.25,0.04257,60,39.82,29.52,0.58388,61,10.08,28.86,0.37355,3,59,119.89,47.25,6.0E-5,60,63.84,27.27,0.03318,61,28.66,13.47,0.96676,1,61,44.32,10.09,1,1,61,49.35,-1.64,1,1,61,33.38,-16.68,1,3,60,68.99,-20.73,0.22226,61,5.89,-29.1,0.77404,62,0.58,84.26,0.0037,3,60,44.6,-39.57,0.79105,61,-24.88,-30.93,0.13414,62,8.53,54.48,0.07482,4,59,99.18,-28.34,0.00977,60,18.8,-36.87,0.52807,61,-44.68,-14.17,0.00191,62,-3.92,31.72,0.46025,2,60,27.94,-59.21,0.06339,62,20.22,31.52,0.93661,1,62,55.65,38.45,1,1,62,65.12,48.55,1,1,62,73.72,36.16,1,1,62,61.79,19.42,1,1,62,35.94,-1.33,1,1,62,64.92,-2.41,1,1,62,85.14,-8.15,1,1,62,103.29,-13.96,1,1,62,87.56,-24.87,1,1,62,54.24,-33.82,1,1,62,34.75,-41.33,1,3,59,63.64,-22.26,0.55276,60,-12.59,-19.13,0.14794,62,-32.41,9.62,0.29931,1,62,3.06,-0.29,1,3,59,79.33,12.66,0.07857,60,13.97,8.43,0.91718,61,-23.17,25.98,0.00425,3,60,47.75,-3.84,0.63078,61,-2.15,-3.18,0.36745,62,-23.2,71.19,0.00176,2,59,36.07,-1.42,0.99794,62,-66.4,3.36,0.00206,2,59,56.22,12.26,0.83826,60,-7.91,15.87,0.16174,4,59,96.36,-9.5,0.00145,60,22.51,-18.18,0.87545,61,-31.09,-0.82,8.6E-4,62,-19.72,42.37,0.12225,1,62,21.2,-24.92,1,1,59,2.44,6.5,1,2,60,20.9,-78.58,0.00594,62,35.36,17.55,0.99406,3,59,77.89,-34.45,0.14305,60,-3.3,-35.42,0.22133,62,-13.79,11.9,0.63561,3,59,101.44,20.85,0.00551,60,37.55,8.66,0.83489,61,-3.55,12.9,0.1596],"hull":31,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,0],"width":192,"height":190}},"headmouth":{"headmouth":{"x":60.98,"y":0.2,"rotation":38.79,"width":172,"height":109}},"l arm":{"l arm":{"x":86.74,"y":-13.25,"rotation":66.25,"width":191,"height":184}},"l armour":{"l armour":{"x":67.24,"y":-12.87,"rotation":66.25,"width":184,"height":200}},"l beard":{"l beard":{"type":"mesh","uvs":[0.27682,0,0.14862,0.08845,0,0.19099,0,0.37968,0,0.56265,0.03753,0.69116,0.07098,0.80567,0,1,0.90171,1,0.78409,0.83426,0.77745,0.72847,0.76938,0.59982,0.94582,0.45401,0.86496,0.33965,0.94485,0.19418,1,0.09378],"triangles":[14,0,15,1,0,14,14,2,1,7,6,9,8,7,9,3,11,4,5,4,11,5,11,10,6,5,10,6,10,9,13,2,14,3,2,13,12,3,13,12,11,3],"vertices":[1,26,112.99,-125.71,1,1,26,90.42,-133.11,1,1,56,36.14,-53.64,1,2,56,80.16,-50.12,0.93755,57,-29.07,-50.12,0.06245,2,56,122.84,-46.72,0.32047,57,13.61,-46.72,0.67953,3,56,152.54,-40.92,0.02686,57,43.31,-40.92,0.94911,58,-29.51,-40.92,0.02402,2,57,69.78,-35.75,0.59075,58,-3.04,-35.75,0.40925,1,58,42.8,-38.57,1,1,58,36.27,43.23,1,2,57,71.28,29.47,0.37868,58,-1.54,29.47,0.62132,2,57,46.66,26.9,0.94433,58,-26.16,26.9,0.05567,2,56,125.93,23.77,0.17361,57,16.71,23.77,0.82639,2,56,90.65,37.06,0.95658,57,-18.58,37.06,0.04342,1,56,64.56,27.59,1,1,26,127.2,-200.26,1,1,26,146.75,-186.31,1],"hull":16,"edges":[12,14,14,16,16,18,22,24,24,26,0,30,4,6,6,8,8,10,10,12,18,20,20,22,0,2,2,4,26,28,28,30,2,28],"width":91,"height":234}},"l ear":{"l ear":{"type":"mesh","uvs":[0.23839,0.76519,0.44833,1,1,1,1,0.76193,1,0.49441,1,0.25796,1,0,0.71964,0,0.36855,0.24323,0,0.49855],"triangles":[8,5,4,8,7,5,7,6,5,1,3,2,1,0,3,3,0,4,0,9,4,9,8,4],"vertices":[1,29,20.15,15.41,1,1,29,-4.88,9.38,1,1,29,-8.32,-15.21,1,1,29,15.73,-18.58,1,2,29,42.75,-22.36,0.73651,30,0.76,-23.46,0.26349,2,29,66.64,-25.7,0.03658,30,24.38,-18.62,0.96342,1,30,50.16,-13.35,1,1,30,47.63,-0.99,1,2,29,72.07,2.23,0.02184,30,20.16,9.52,0.97816,2,29,48.57,22.26,0.92807,30,-8.68,20.55,0.07193],"hull":10,"edges":[2,4,12,14,14,16,16,18,8,10,10,12,2,0,0,18,4,6,6,8],"width":45,"height":102}},"l eye":{"l eye":{"x":8.91,"y":-0.86,"rotation":-34.08,"width":17,"height":15}},"l finger a":{"l finger a":{"type":"mesh","uvs":[1,1,0.86727,1,0.66479,0.53694,0.51568,0.58383,0,0.65185,0,0,0.19829,0,0.47673,0,1,0,0.15557,0.27187],"triangles":[9,6,7,3,9,7,9,5,6,4,5,9,4,9,3,2,7,8,0,1,2,8,0,2,3,7,2],"vertices":[1,10,130,-12.23,1,1,10,117.56,-33.71,1,2,9,114.94,-39.63,0.45352,10,30.46,-27.04,0.54648,1,8,157.81,65.97,1,1,8,103.77,-14.73,1,1,8,19.69,57.45,1,1,8,43.85,85.59,1,2,9,83.09,52.85,0.8084,10,-66.15,-11.74,0.1916,1,10,-17.12,72.94,1,1,8,73.71,49.42,1],"hull":9,"edges":[8,10,0,16,0,2,2,4,4,16,10,12,12,18,4,6,6,8,18,6,12,14,14,16,4,14],"width":187,"height":170}},"l finger b":{"l finger b":{"type":"mesh","uvs":[1,0.51051,0.78902,0.99999,0.57176,1,0.12581,0.80863,0.53734,0.60657,0.06593,0.28854,0,0,0.65224,0,1,0.36769],"triangles":[5,6,7,4,5,7,3,4,2,2,4,1,1,4,0,0,4,8,4,7,8],"vertices":[2,11,94.37,22.26,0.62846,12,-17.17,22.96,0.37154,1,12,53.38,25.7,1,1,12,68.12,-2.14,1,2,11,26.2,-91.41,0,12,76.39,-70.93,1,2,11,52.92,-31.94,0.45304,12,25.26,-30.48,0.54696,1,8,181.56,-18.83,1,1,8,146.88,-1.65,1,1,8,208.48,70.11,1,2,11,81.94,36.05,0.91025,12,-33.58,14.28,0.08975],"hull":9,"edges":[8,10,10,12,12,14,14,16,10,14,16,8,6,8,2,4,4,6,2,0,0,16,8,0],"width":145,"height":130}},"l finger c":{"l finger c":{"type":"mesh","uvs":[1,0.2059,0.91275,0.83391,0.81682,0.99998,0,1,1.0E-5,0.59484,0.44765,0.60693,0.50456,0.19374,0.54629,1.0E-5,1,0],"triangles":[6,7,0,7,8,0,0,5,6,1,5,0,2,5,1,3,4,5,3,5,2],"vertices":[1,8,188.86,-0.79,1,2,13,81.53,27.97,0.64282,14,-21.87,20.78,0.35718,2,13,102.02,17.48,0.20684,14,-4.6,36,0.79316,1,14,93.85,5.97,1,1,14,79.89,-39.76,1,2,13,59.47,-32.57,0.23965,14,26.36,-21.93,0.76035,1,8,147.11,-47.23,1,1,8,133.19,-28.34,1,1,8,170.43,15.03,1],"hull":9,"edges":[14,16,12,14,2,0,0,16,10,12,2,10,6,8,8,10,12,0,2,4,4,6,10,4],"width":126,"height":118}},"l finger d":{"l finger d":{"type":"mesh","uvs":[1,0.2697,1,0.43237,0.49844,0.99999,0.27323,1,0.05049,0.68462,0,0.25986,0.35345,0.51742,0.30353,0,1,0],"triangles":[7,8,0,0,6,7,3,4,6,4,5,6,3,6,2,2,6,1,1,6,0],"vertices":[1,8,151.75,-26.93,1,1,15,-4.98,39.32,1,2,15,84.6,30.35,0.98314,16,-29.77,6.01,0.01686,2,15,107.82,8.37,0.23589,16,-3,23.5,0.76411,1,16,40.21,15.18,1,1,16,68.74,-15.4,1,2,15,67.37,-17.79,0.6513,16,13.06,-21.92,0.3487,1,8,67.48,-84.92,1,1,8,131.9,-9.88,1],"hull":9,"edges":[12,14,14,16,0,16,14,0,12,4,10,12,0,2,2,4,4,6,6,8,12,6,8,10],"width":142,"height":97}},"l hand":{"l hand":{"x":85.5,"y":12.82,"rotation":49.35,"width":236,"height":152}},"l hand2":{"r hand":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[221.31,134.74,182.59,-229.21,-41.15,-205.41,-2.43,158.54],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":366,"height":225}},"l leg":{"l leg":{"type":"mesh","uvs":[0,0,0.38747,0,0.74199,0.28564,0.83631,0.64779,0.75522,0.68707,0.59861,0.66926,0.57636,0.70766,0.69103,0.84858,0.76802,0.88789,0.99222,0.93764,1,1,0.48373,0.98435,0.52022,0.89414,0.49957,0.85583,0.28127,0.68446,0.30726,0.60179,0.41697,0.55447,0.36977,0.4857,0,0.37108],"triangles":[12,7,8,11,12,8,8,9,10,10,11,8,6,14,15,13,14,6,13,6,7,12,13,7,5,16,2,3,5,2,15,16,5,4,5,3,5,6,15,18,0,1,17,18,1,2,17,1,16,17,2],"vertices":[1,64,-64.32,15.84,1,1,64,17.04,109.4,1,1,64,189.12,110.1,1,2,64,332.72,25.23,0.16781,65,-30.44,71.02,0.83219,3,64,329.12,-6.03,0.07378,65,1,69.69,0.92561,66,61.91,90.07,6.1E-4,2,65,36.25,33.17,0.83025,66,28.68,51.71,0.16975,2,65,52.39,42.81,0.39548,66,39.72,36.5,0.60452,2,66,113.31,34.1,0.75,68,11.88,36.78,0.25,2,66,141.42,45.67,0.35,68,39.73,24.61,0.65,1,68,114.62,17.79,1,1,68,123.05,-9.28,1,1,68,-39.91,-37.39,1,2,66,102.09,-23.24,0.35,68,-37.16,5.02,0.65,2,66,83.86,-19.73,0.75,68,-47.3,20.58,0.25,3,64,228.71,-119.7,3.0E-4,65,121.62,-22.25,0.29172,66,-18.92,-38.26,0.70798,3,64,205.91,-88.85,0.03635,65,92.5,-47.22,0.74889,66,-46.38,-11.48,0.21476,3,64,212.77,-48.29,0.39835,65,51.55,-43.31,0.6009,66,-46.13,29.66,7.5E-4,2,64,179.35,-39.25,0.90959,65,44.94,-77.29,0.09041,1,64,62.53,-94.47,1],"hull":19,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,0,36,32,10,12,30,28,12,26,14,24,16,30,10,34,4],"width":320,"height":453}},"lock":{"lock":{"width":335,"height":136}},"lock 2":{"Lock":{"path":"lock 2","width":335,"height":136}},"l upparm":{"l upparm":{"type":"mesh","uvs":[0.09978,0.58733,0,0.85791,0,1,0.5004,1,0.53419,0.85154,0.66934,0.66373,0.9686,0.47911,1,0.32313,0.90585,0,0.40386,0,0.1046,0.10986,0,0.29448,0,0.47911],"triangles":[4,3,1,3,2,1,1,0,4,4,0,5,7,5,11,6,5,7,11,5,0,0,12,11,11,9,7,9,11,10,7,9,8],"vertices":[2,4,231.14,-151.98,0.08056,5,150.1,-80.76,0.91944,1,5,273.75,-43.3,1,1,5,330.55,-9.82,1,1,5,252.78,122.09,1,1,5,188.19,96.01,1,2,4,279.48,19.18,0.0028,5,92.12,87.38,0.9972,2,4,200.88,116.89,0.51255,5,-28.18,122.76,0.48745,2,4,129.43,131.87,0.84804,5,-95.41,94.28,0.15196,1,4,-22.23,114.32,1,2,4,-33.69,-38.86,0.99553,5,-131.92,-139.01,0.00447,2,4,10.32,-133.98,0.87229,5,-41.51,-192.01,0.12771,2,4,93.36,-172.29,0.59756,5,48.55,-176.07,0.40244,2,4,178.78,-178.68,0.27264,5,122.34,-132.57,0.72736],"hull":13,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,0,24],"width":306,"height":464}},"r arm":{"r arm":{"type":"mesh","uvs":[0.07385,1.0E-5,0,0.37872,0,0.54104,0.3259,1,0.43316,1,0.76024,0.99999,0.87402,0.90654,1,0.80308,1,0.37409,1,0.25582,0.58064,0,0.87023,0.53173],"triangles":[1,4,2,0,5,1,11,10,9,8,11,9,11,0,10,11,8,7,6,11,7,5,11,6,5,0,11,5,4,1,3,2,4],"vertices":[-95.66,-146.16,49.55,-185.94,112.86,-192.31,302.93,-100.41,306.58,-64.23,317.72,46.09,285.11,88.14,249.01,134.69,81.69,151.54,35.57,156.18,-78.45,24.77,138.79,101.57],"hull":11,"edges":[0,2,2,4,4,6,18,20,0,20,10,0,6,8,8,10,2,8,14,16,16,18,16,22,10,12,12,14,22,12],"width":339,"height":392}},"r armour t":{"r armour t":{"x":198.55,"y":-8.44,"rotation":167.66,"width":467,"height":373}},"r armour u":{"r armour u":{"type":"mesh","uvs":[0.64487,0,0.52295,0.27447,0.97536,0.85789,0.99999,0.99857,0.77321,1,0.68978,0.84141,0.1636,0.36489,0,0.31322,0,0],"triangles":[6,1,5,1,6,8,6,7,8,1,8,0,4,2,3,4,5,2,5,1,2],"vertices":[1,90,51.37,111.96,1,1,90,121.77,26.73,1,2,2,96.14,-154.1,0.59,3,2.34,-174.35,0.41,2,2,43.22,-167.88,0.66,3,-37.48,-211.83,0.34,2,2,34.61,-109.77,0.86,3,-72.91,-164.98,0.14,2,2,92.27,-79.96,0.78,3,-36.62,-111.16,0.22,1,90,98.92,-70.01,1,1,90,58.76,-94.1,1,1,90,-41.66,-26.76,1],"hull":9,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,0,16,10,4,2,12],"width":259,"height":386}},"r beard":{"r beard":{"type":"mesh","uvs":[0.2079,0,0.15063,0.16618,0.15584,0.39316,0.47841,0.49333,0.66864,0.49374,0.74412,0.35647,0.95237,0.28307,0.96803,0.21333,1,0.07104,0.70248,0,0.45519,0,0.42371,0.36333,0.59611,0.17744,0.35657,0.22015,0.76263,0.19178,0.57726,0.26196,0.43861,0.12192,0.68143,0.12191,0.87714,0.17112],"triangles":[7,14,18,13,1,16,7,18,8,14,17,18,12,16,17,18,17,8,1,0,16,16,10,17,16,0,10,17,9,8,17,10,9,5,4,11,2,11,3,4,3,11,2,13,11,2,1,13,11,15,5,11,13,15,5,14,6,6,14,7,5,15,14,15,12,14,15,13,12,13,16,12,12,17,14],"vertices":[1,26,45.68,67.27,1,1,26,3.27,34.89,1,2,53,82.89,-50.5,0.99951,54,-48.49,-50.5,4.9E-4,1,53,104.28,7.61,1,2,53,98.68,38.5,0.99208,54,-32.7,38.5,0.00792,1,53,53.75,42.81,1,1,53,24.67,72.36,1,1,26,92.76,-67.12,1,1,26,126.99,-37.49,1,1,26,105.91,12.2,1,1,26,75.79,39.73,1,1,53,65.55,-8.77,1,1,53,2.6,8.46,1,1,53,23.09,-27.93,1,1,53,2.03,36.3,1,1,53,29.42,10.29,1,1,26,47.78,13.15,1,1,26,77.35,-13.89,1,1,26,90.69,-47.15,1],"hull":11,"edges":[0,2,2,4,8,10,10,12,16,18,18,20,20,0,2,32,32,34,34,36,12,14,14,16,36,14,4,6,6,8],"width":165,"height":316}},"r beard2":{"r beard":{"type":"mesh","uvs":[0.47841,0.49333,0.15584,0.39316,0.16105,0.62015,0.08295,0.7914,0,0.88655,0,1,0.1561,1,0.31219,1,0.62438,1,0.5515,0.8213,0.59315,0.63102,0.66864,0.49374,0.32382,0.86705,0.36613,0.70389,0.3626,0.53397],"triangles":[7,12,8,12,9,8,7,6,12,12,6,4,6,5,4,4,3,12,12,13,9,12,3,13,9,13,10,3,2,13,2,14,13,13,14,10,14,0,10,10,0,11,2,1,14,14,1,0],"vertices":[1,53,104.28,7.61,1,2,53,82.89,-50.5,0.99951,54,-48.49,-50.5,4.9E-4,2,53,153.25,-36.55,0.14444,54,21.87,-36.55,0.85556,2,54,77.43,-39.32,0.6598,55,-10.15,-39.32,0.3402,2,54,109.49,-47.29,0.13046,55,21.91,-47.29,0.86954,1,55,57.16,-40.73,1,1,55,52.45,-15.41,1,1,55,47.74,9.91,1,2,54,125.91,60.56,0.02568,55,38.33,60.56,0.97432,2,54,72.6,38.41,0.75452,55,-14.99,38.41,0.24548,2,53,143.6,34.18,0.27152,54,12.22,34.18,0.72848,2,53,98.68,38.5,0.99208,54,-32.7,38.5,0.00792,2,54,93.67,4.12,0.00469,55,6.08,4.12,0.99531,1,54,41.71,1.56,1,2,53,120.4,-8.83,0.9936,54,-10.98,-8.83,0.0064],"hull":12,"edges":[2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,2,0,0,22],"width":165,"height":316}},"r ear":{"r ear":{"type":"mesh","uvs":[0.69857,1,0.77644,0.96287,0.91662,0.9418,1,0.85986,1,0.73812,0.88287,0.63745,0.70269,0.44043,0.52251,0.24341,0.2811,0.12171,0.03969,0,0,0,0,0.05846,0.1565,0.26916,0.21101,0.42017,0.26552,0.57117,0.37455,0.87317,0.53809,0.98321,0.62894,1,0.51919,0.55974,0.34907,0.35226,0.64304,0.85127,0.45082,0.71211,0.67328,0.66834,0.84166,0.8086,0.49564,0.42023,0.38232,0.50585],"triangles":[23,4,3,2,23,3,1,23,2,20,0,17,1,0,20,11,10,9,8,11,9,12,11,8,19,8,7,12,8,19,13,12,19,24,19,7,24,7,6,25,19,24,13,19,25,25,24,18,14,13,25,18,24,6,22,18,6,22,6,5,21,25,18,21,18,22,14,25,21,23,22,5,23,5,4,20,21,22,20,22,23,15,14,21,15,21,20,1,20,23,16,15,20,17,16,20],"vertices":[1,26,115.29,-72.26,1,1,26,131.75,-76.54,1,1,26,154.76,-91.46,1,1,26,178.47,-89.38,1,1,26,196.05,-70.15,1,1,27,42.12,-50.83,1,2,27,96.13,-42.46,0.83404,28,-21.27,-39.39,0.16596,2,27,150.13,-34.08,0.01342,28,33.37,-40.42,0.98658,1,28,83.47,-22,1,1,28,133.57,-3.57,1,1,28,138.55,2.25,1,1,28,129.05,10.39,1,1,28,75.16,16.8,1,2,27,148.3,36.92,0.02051,28,43.78,29.84,0.97949,2,27,115.14,44.37,0.41739,28,12.4,42.88,0.58261,2,27,48.83,59.28,0.99749,28,-50.37,68.97,0.00251,1,27,12.47,44.16,1,1,26,105.38,-63.19,1,2,27,92.25,1.03,0.99824,28,-17.61,4.12,0.00176,2,27,147.19,6.59,1.0E-5,28,37.47,0.15,0.99999,1,27,26.41,12.33,1,2,27,70.95,29.02,0.97013,28,-33.78,35.36,0.02987,1,27,57.09,-12.68,1,1,27,14.69,-25.3,1,2,27,120.24,-10.3,0.11084,28,8.02,-11.86,0.88916,2,27,115.66,17.86,0.2898,28,8.34,16.67,0.7102],"hull":18,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,0],"width":193,"height":214}},"r ear ringa":{"r ear ringa":{"x":10.4,"y":3.04,"rotation":124.8,"width":30,"height":27}},"r ear ringb":{"r ear ringb":{"x":30.77,"y":3.76,"rotation":132.19,"width":76,"height":71}},"r ear ringb s":{"r ear ringb s":{"x":30.54,"y":-0.5,"rotation":145.49,"width":81,"height":69}},"r ear s":{"r ear s":{"type":"mesh","uvs":[0.67463,1,0.83732,1,1,1,1,0.8169,0.89791,0.56359,0.79359,0.43694,0.68927,0.31029,0.55018,0.21155,0.41109,0.1128,0.22808,0.02265,0,0,0,0.06987,0.10729,0.1772,0.20978,0.34464,0.37083,0.54642,0.42756,0.67736,0.4843,0.80831,0.67692,0.53182,0.48551,0.40941,0.75579,0.76242,0.55491,0.61196,0.86068,0.86604,0.37591,0.27458,0.62957,0.74313,0.87756,0.75199,0.27876,0.21553,0.77193,0.63155,0.34357,0.35862,0.625,0.41865],"triangles":[13,27,14,14,27,18,27,22,18,18,22,7,13,25,27,27,25,22,13,12,25,22,8,7,22,25,8,12,9,25,25,9,8,12,11,9,11,10,9,1,21,2,21,3,2,1,0,21,16,23,0,0,19,21,0,23,19,21,24,3,21,19,24,24,4,3,16,20,23,16,15,20,19,26,24,19,23,26,24,26,4,23,17,26,23,20,17,15,14,20,26,5,4,26,17,5,14,18,20,20,28,17,20,18,28,17,28,5,28,6,5,6,28,7,28,18,7],"vertices":[1,49,28.97,39.58,1,1,49,10.82,21.85,1,1,49,-7.33,4.11,1,1,49,9.68,-13.31,1,1,49,44.62,-26.28,1,1,49,68.03,-26.95,1,2,49,91.44,-27.63,0.95502,88,-21.77,-23.58,0.04498,2,49,116.14,-21.86,0.28599,88,3.59,-23.13,0.71401,1,88,28.95,-22.68,1,1,88,59.5,-17.61,1,1,88,91.21,-1.19,1,1,88,86.26,6.67,1,1,88,64.49,9.83,1,2,49,141.76,27.91,1.0E-5,88,39.09,20.15,0.99999,2,49,105.03,29.55,0.54673,88,3.53,29.47,0.45327,2,49,86.53,35.82,0.92801,88,-13.24,39.48,0.07199,2,49,68.03,42.09,0.99741,88,-30.02,49.5,0.00259,1,49,72.23,-5.21,1,2,49,104.97,4.01,0.79655,88,-1.9,4.51,0.20345,1,49,42,8.13,1,2,49,78.4,15.72,0.98808,88,-25.42,21.54,0.01192,1,49,20.66,6.56,1,1,88,22.13,-1.55,1,1,49,57.88,20.06,1,1,49,29.38,-6.13,1,1,88,39.14,-0.12,1,1,49,52.36,-6.08,1,2,49,125.53,14.65,0.01846,88,20.44,10.6,0.98154,2,49,88.54,-10.31,0.99669,88,-20.97,-6.05,0.00331],"hull":17,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,0],"width":156,"height":133}},"r eye":{"r eye":{"x":5.72,"y":0.66,"rotation":-160.06,"width":60,"height":27}},"r eye fire":{"eyefire/eyefire_00000":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00001":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00002":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00003":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00004":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00005":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00006":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00007":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00008":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00009":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00010":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00011":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00012":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00013":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00014":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00015":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00016":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00017":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00018":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00019":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00020":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00021":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00022":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00023":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00024":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00025":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00026":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00027":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00028":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00029":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00030":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00031":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00032":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00033":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00034":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00035":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00036":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00037":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64}},"r eye hurt":{"r eye hurt":{"x":162.63,"y":-138.57,"rotation":-42.44,"width":49,"height":78}},"r finger a":{"r finger a":{"x":112.78,"y":0.67,"rotation":95.46,"width":131,"height":321}},"r finger a2":{"r finger a":{"x":112.78,"y":0.67,"rotation":95.46,"width":131,"height":321}},"r finger b":{"r finger b":{"x":119.22,"y":11.56,"rotation":77.3,"width":195,"height":352}},"r finger b2":{"r finger b":{"x":119.22,"y":11.56,"rotation":77.3,"width":195,"height":352}},"r finger c":{"r finger c":{"x":134.42,"y":6.36,"rotation":77.37,"width":218,"height":421}},"r finger c2":{"r finger c":{"x":134.42,"y":6.36,"rotation":77.37,"width":218,"height":421}},"r finger d":{"r finger d":{"x":159.42,"y":8.42,"rotation":96.04,"width":156,"height":451}},"r finger d2":{"r finger d":{"x":159.42,"y":8.42,"rotation":96.04,"width":156,"height":451}},"r hand":{"r hand":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[221.31,134.74,182.59,-229.21,-41.15,-205.41,-2.43,158.54],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":366,"height":225}},"r leg":{"r leg":{"type":"mesh","uvs":[0.7409,0,0.62921,0.07564,0.39813,0.34299,0.31726,0.519,0.36347,0.60144,0.41181,0.60462,0.4,0.64394,0.27725,0.78161,0,0.90594,0,1,0.40262,1,0.38919,0.87659,0.5877,0.69354,0.59069,0.62619,0.55636,0.57266,0.58181,0.50632,0.79153,0.40491,0.93929,0.34965,1,0.20631,1,0.07507,0.88407,0],"triangles":[7,11,10,9,8,7,9,7,10,11,7,6,11,6,12,3,5,4,3,2,5,15,14,5,6,5,14,6,14,13,12,6,13,20,19,18,17,20,18,16,0,20,16,20,17,1,0,16,15,2,1,16,15,1,2,15,5],"vertices":[1,69,78.53,-106.62,1,1,69,148.14,-108.1,1,2,69,319.14,-67.25,0.93733,70,-65.9,-13.81,0.06267,3,69,399.06,-20.28,0.04469,70,-0.1,-79.09,0.95386,71,33.83,-122.84,0.00145,2,70,43.78,-66.34,0.95046,71,39.22,-77.47,0.04954,2,70,52.7,-41.87,0.81033,71,20.17,-59.7,0.18967,2,70,68.37,-53.23,0.40278,71,36.74,-49.71,0.59722,2,71,128.45,-42.71,0.5,73,0.87,-48.53,0.5,1,73,157.99,-18.45,1,1,73,165.85,24.58,1,1,73,-47.24,63.49,1,2,71,110.38,29.76,0.5,73,-50.44,5.74,0.5,2,70,119.6,36.8,0.72619,71,-26.16,32.59,0.27381,3,69,299.8,99.18,0.00796,70,90.07,47.38,0.96436,71,-47.42,9.53,0.02768,2,69,302.51,68.31,0.11979,70,60.91,36.88,0.88021,2,69,274.69,49.19,0.68231,70,35.32,58.89,0.31769,1,69,153.87,68.07,1,1,69,72.68,87.78,1,1,69,9.97,48.09,1,1,69,-21.97,-3.92,1,1,69,12.9,-66.31,1],"hull":21,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,0,40,10,30,10,28,12,24,26,12,14,22,4,30,32,2],"width":538,"height":465}},"r upparm":{"r upparm":{"type":"mesh","uvs":[0.5629,0,0.44107,0.13245,0.33446,0.35768,0,0.70057,0,1,0.50416,1,0.55593,0.91151,0.79695,0.90142,0.93211,0.83091,1,0.68376,1,0.44172,0.92622,0.17615,0.79786,0,0.65662,0.27214,0.71933,0.47436,0.75204,0.72291,0.40813,0.72836,0.31878,0.50647],"triangles":[1,0,13,17,3,2,13,16,2,13,2,1,16,13,14,6,16,14,17,2,16,15,6,14,6,15,7,16,4,3,16,3,17,5,16,6,4,16,5,13,0,12,13,12,11,14,13,11,14,11,10,15,14,10,9,15,10,8,15,9,7,15,8],"vertices":[2,3,191.71,419.51,0.5,18,-35.67,-142.37,0.5,1,18,50.36,-132.92,1,1,18,145.48,-88.64,1,1,18,377.9,-69.52,1,1,18,432.24,29.08,1,1,18,175.7,170.46,1,1,18,133.29,155.84,1,2,3,0.5,108.37,0.5,18,8.83,220.11,0.5,1,3,68.57,61.1,1,1,3,136.51,62.38,1,1,3,209.6,116.59,1,1,3,264.27,210.51,1,1,3,273.04,309.87,1,2,3,141.97,314.81,0.5,18,-33.97,-26.47,0.5,2,3,102.6,240.26,0.5,18,-29.18,57.7,0.5,2,3,38.86,169.32,0.5,18,-0.72,148.73,0.5,1,18,175.27,54.08,1,1,18,180.46,-44.04,1],"hull":13,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,16,18,18,20,20,22,22,24,0,24,0,26,26,28,28,30,30,14,14,16,12,32,32,34,34,4],"width":581,"height":376}},"r upparm 2":{"r upparm":{"type":"mesh","uvs":[0.40813,0.72836,0.31878,0.50647,0.33446,0.35768,0,0.70057,0,1,0.50416,1,0.55593,0.91151],"triangles":[1,3,2,0,4,3,0,3,1,5,0,6,4,0,5],"vertices":[1,18,175.27,54.08,1,1,18,180.46,-44.04,1,1,18,145.48,-88.64,1,1,18,377.9,-69.52,1,1,18,432.24,29.08,1,1,18,175.7,170.46,1,1,18,133.29,155.84,1],"hull":7,"edges":[4,6,6,8,8,10,10,12,12,0,0,2,2,4],"width":581,"height":376}},"s1":{"s1":{"path":"canying/s1","width":249,"height":284}},"s2":{"s2":{"path":"canying/s1","width":249,"height":284}},"s3":{"s3":{"path":"canying/s3","width":270,"height":260}},"s4":{"s4":{"path":"canying/s4","width":316,"height":211}},"s5":{"s5":{"path":"canying/s5","width":292,"height":214}},"s6":{"s6":{"path":"canying/s6","width":273,"height":212}},"skill":{"skill/0":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/1":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/2":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/3":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/4":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/5":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/6":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/7":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/8":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/9":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/10":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/11":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/12":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/13":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/14":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/15":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/16":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/17":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/18":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/19":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/20":{"x":8.28,"y":23.13,"width":534,"height":289}},"skirt b":{"skirt b":{"type":"mesh","uvs":[0.55483,0.0745,0.27158,0,0.10839,0,0.07042,0.04782,0,0.13651,0,0.24672,0.07943,0.36639,0.08934,0.56514,0.09847,0.74821,0.10432,0.86567,0.11102,1,0.13246,1,0.22417,0.91358,0.33284,0.81118,0.43649,0.7135,0.5086,0.64554,0.58606,0.73603,0.66628,0.82975,0.72654,0.90014,0.81201,1,0.83809,1,0.86946,0.87562,0.89354,0.78014,0.92519,0.65463,0.95637,0.53101,0.97065,0.47438,0.98229,0.4282,1,0.35799,0.99881,0.28119,0.88446,0.16119,0.54426,0.20515,0.53488,0.32098,0.5287,0.39736,0.52041,0.49974],"triangles":[23,17,16,22,17,23,22,18,17,21,18,22,19,18,21,20,19,21,13,8,7,14,13,7,12,9,8,13,12,8,11,10,9,12,11,9,30,29,28,31,30,28,31,28,27,26,31,27,32,31,26,25,32,26,33,32,25,24,33,25,15,33,24,24,16,15,23,16,24,30,1,0,2,1,30,5,33,6,31,2,30,3,2,31,4,3,32,33,5,32,31,32,3,4,32,5,6,14,7,33,15,6,15,14,6,30,0,29],"vertices":[2,69,-29.26,-28.11,0.882,64,-55.27,28.56,0.118,1,69,39.43,-94.34,1,1,69,85.18,-122.44,1,1,69,102.7,-117.78,1,1,69,135.21,-109.12,1,1,69,151.07,-83.29,1,1,69,146.03,-41.58,1,2,69,171.86,6.7,0.9105,77,-31.34,-53.22,0.0895,2,69,195.65,51.17,0.10647,77,14.5,-32.2,0.89353,2,69,210.92,79.7,6.7E-4,77,43.92,-18.71,0.99933,1,77,77.56,-3.29,1,1,77,75,3.29,1,3,64,47.47,-204.95,4.1E-4,77,41.93,22.81,0.99946,78,46.91,-195.32,1.3E-4,4,69,139.02,106.28,0.05243,64,49.68,-159.49,0.03263,77,2.74,45.95,0.90459,78,19.62,-158.9,0.01035,4,69,95.9,101.25,0.26312,64,51.79,-116.13,0.16773,77,-34.64,68.02,0.51089,78,-6.41,-124.16,0.05826,4,69,65.9,97.74,0.23503,64,53.25,-85.96,0.37814,77,-60.65,83.37,0.19912,78,-24.52,-99.99,0.18771,4,69,57.21,132.28,0.05687,64,88.75,-83.06,0.32056,77,-46.68,116.13,0.05051,78,0.97,-75.11,0.57206,4,69,48.21,168.06,0.00712,64,125.52,-80.06,0.0588,77,-32.2,150.06,0.0109,78,27.37,-49.35,0.92318,4,69,41.45,194.93,2.6E-4,64,153.13,-77.8,1.5E-4,77,-21.33,175.55,0.00173,78,47.2,-30,0.99786,1,78,75.33,-2.54,1,1,78,75.54,6.03,1,2,64,178.9,-37.9,0.02489,78,41.59,17.17,0.97511,2,64,164.29,-14.69,0.42853,78,15.53,25.73,0.57147,1,64,145.07,15.82,1,1,64,126.15,45.87,1,1,64,117.48,59.63,1,1,64,110.41,70.85,1,1,64,99.67,87.92,1,1,64,83.47,101.48,1,2,69,-109.18,48.97,8.3E-4,64,33.88,94.75,0.99917,2,69,-7.48,0.69,0.88955,64,-30.44,2.36,0.11045,4,69,11.82,26.21,0.46467,64,-8.43,-20.87,0.52721,77,-146.98,59.13,0.00502,78,-113.54,-89.2,0.0031,4,69,24.55,43.05,0.38003,64,6.09,-36.19,0.57426,77,-126.67,64.83,0.02605,78,-92.59,-91.74,0.01966,4,69,41.61,65.61,0.32084,64,25.54,-56.72,0.5139,77,-99.43,72.48,0.08787,78,-64.51,-95.14,0.0774],"hull":30,"edges":[2,4,8,10,20,22,38,40,54,56,56,58,4,6,6,8,16,26,12,30,12,14,14,16,26,28,28,30,14,28,16,18,18,20,22,24,24,26,18,24,30,48,30,32,46,48,32,46,32,34,44,46,34,44,34,36,36,38,40,42,42,44,36,42,10,12,52,54,48,50,50,52,2,0,0,58,0,60,60,56,62,60,54,62,64,62,52,64,30,66,66,64,66,50,60,4,6,62,64,8,10,66],"width":329,"height":275}},"skirt f":{"skirt f":{"type":"mesh","uvs":[0.76659,0.10516,0.53321,0.09018,0.31685,0,0.11097,0,0,0.15158,0,0.18723,0.11172,0.28589,0.12084,0.3891,0.12749,0.46441,0.14327,0.64294,0.15904,0.82147,0.17482,1,0.28922,1,0.40363,1,0.63244,1,0.72433,0.8302,0.81622,0.6604,0.90811,0.4906,0.94806,0.40504,0.99999,0.29383,1,0.07988,0.46626,0.67526,0.59829,0.42794,0.36219,0.39794,0.72087,0.52069,0.30873,0.80022,0.45151,0.88401,0.45759,0.53275,0.44099,0.2974,0.71835,0.32344,0.55373,0.76966,0.31134,0.54266,0.60346,0.63165,0.22468,0.23695,0.8356,0.39205],"triangles":[22,28,29,28,23,33,34,29,19,28,1,29,29,0,19,29,1,0,28,33,1,19,0,20,2,33,4,33,2,1,2,4,3,33,5,4,13,26,14,14,26,15,13,12,26,26,12,10,26,10,25,10,12,11,26,30,15,26,25,30,15,30,16,10,9,25,25,21,30,25,9,21,30,32,16,30,21,32,9,31,21,31,27,21,21,27,32,32,24,16,16,24,17,9,8,31,32,27,24,27,31,23,31,8,23,27,22,24,27,23,22,24,34,17,24,22,34,17,34,18,8,7,23,23,28,22,22,29,34,18,34,19,33,23,6,23,7,6,6,5,33],"vertices":[1,2,8.55,-46.79,1,1,2,7.07,18.74,1,1,2,43.71,84.76,1,1,2,35.82,141.66,1,1,2,-43.96,161.85,1,1,74,-25.95,-164.56,1,2,74,20.82,-129.24,0.991,75,-127.98,-129.24,0.009,2,74,72.32,-122.25,0.9168,75,-76.48,-122.25,0.0832,2,74,109.91,-117.14,0.77199,75,-38.89,-117.14,0.22801,3,74,199,-105.04,0.17387,75,50.2,-105.04,0.72762,76,-49,-105.04,0.09851,3,74,288.09,-92.95,3.7E-4,75,139.29,-92.95,0.25441,76,40.09,-92.95,0.74522,2,75,228.38,-80.85,5.6E-4,76,129.18,-80.85,0.99944,1,76,126.44,-49.05,1,1,76,123.7,-17.25,1,1,76,118.21,46.36,1,2,75,130.12,64.56,0.22231,76,30.92,64.56,0.77769,3,74,191.62,82.77,0.16701,75,42.82,82.77,0.81073,76,-56.38,82.77,0.02226,2,74,104.32,100.98,0.87402,75,-44.47,100.98,0.12598,2,74,60.49,108.39,0.98435,75,-88.31,108.39,0.01565,1,2,-76.5,-124.33,1,1,2,30.09,-109.55,1,3,74,207.45,-13.87,0.00222,75,58.65,-13.87,0.99232,76,-40.55,-13.87,0.00547,1,74,80.34,12.15,1,2,74,70.97,-54.78,0.96235,75,-77.83,-54.78,0.03765,2,74,123.89,50.23,0.79891,75,-24.91,50.23,0.20109,2,75,125.05,-52.26,0.27119,76,25.85,-52.26,0.72881,2,75,163.62,-8.95,9.4E-4,76,64.42,-8.95,0.99906,2,74,136.24,-22.43,0.7678,75,-12.56,-22.43,0.2322,1,2,-99.7,29.91,1,1,2,-102.05,-48.54,1,2,75,103.87,14.53,0.33551,76,4.67,14.53,0.66449,3,74,144.71,-62.66,0.53214,75,-4.09,-62.66,0.46626,76,-103.28,-62.66,0.0016,2,74,182.31,22.39,0.03446,75,33.51,22.39,0.96554,1,2,-77.88,93.87,1,2,74,56.67,76.56,0.98952,75,-92.13,76.56,0.01048],"hull":21,"edges":[6,8,8,10,10,12,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,8,66,66,56,56,58,58,38,34,36,36,38,12,14,14,16,38,40,6,4,66,4,4,2,56,2,2,0,0,40,58,0],"width":279,"height":503}},"tail":{"tail":{"type":"mesh","uvs":[0.86601,0,0.77697,0.0272,0.68794,0.05441,0.58182,0.11908,0.50537,0.23825,0.42893,0.35743,0.45231,0.41102,0.40195,0.44612,0.34979,0.41656,0.28504,0.32048,0.2005,0.28722,0.08359,0.32602,0,0.43688,0,0.5302,0,0.62351,0.0602,0.56068,0.11376,0.59366,0.10476,0.69159,0.12994,0.7886,0.15512,0.8856,0.23427,0.9428,0.31341,1,0.41863,1,0.52385,1,0.67134,0.94658,0.74239,0.89115,0.81344,0.83572,0.92496,0.71007,0.99151,0.60475,0.99575,0.49019,1,0.37563,1,0.27406,1,0.17249,0.98047,0.08624,0.96093,0,0.77729,0.55777,0.31623,0.71699,0.5658,0.70194,0.6858,0.26757,0.8362,0.23794,0.57194,0.45103,0.47806,0.87273,0.4433,0.52477,0.22564,0.46302,0.72838,0.72388,0.81124,0.39667,0.61736,0.59178,0.32775,0.54978,0.35419,0.86041,0.44331,0.68815,0.83926,0.12218,0.62985,0.84682,0.66152,0.41712,0.20303,0.63394,0.91514,0.485,0.73469,0.13814,0.85807,0.65295,0.23248,0.80486,0.91228,0.35372,0.5283,0.59155,0.55111,0.35677,0.09778,0.45666,0.68787,0.48294],"triangles":[14,13,15,15,61,16,15,13,61,13,12,61,12,11,61,43,61,11,53,43,47,16,61,43,47,7,42,47,8,7,47,43,8,43,11,10,43,9,8,43,10,9,19,18,57,36,57,53,57,18,53,18,17,53,36,53,47,17,16,53,53,16,43,22,41,23,23,51,24,23,41,51,21,48,22,22,48,41,21,20,48,24,51,25,19,57,20,20,57,48,48,49,41,41,37,51,41,49,37,57,36,48,48,36,49,36,47,49,47,42,49,26,25,44,25,51,44,51,37,44,26,56,27,26,44,56,37,46,44,44,35,56,44,46,35,27,56,28,49,59,37,37,59,46,49,42,59,56,54,28,56,35,54,59,40,46,46,62,35,62,40,52,62,46,40,59,42,40,35,62,45,42,6,40,42,7,6,62,52,45,6,60,40,40,60,52,6,5,60,28,54,29,35,45,54,29,54,30,45,58,54,54,58,30,52,38,45,52,60,38,45,39,58,45,38,39,58,31,30,5,4,60,60,4,38,58,39,31,31,39,32,32,39,50,50,33,32,4,3,38,38,55,39,38,3,55,50,0,33,0,34,33,39,55,50,3,2,55,55,1,50,55,2,1,50,1,0],"vertices":[1,79,-42.87,-71.32,1,1,79,-5.86,-91.15,1,3,79,31.15,-110.98,0.99893,80,-154.26,-45.6,4.5E-4,83,13.88,-297.41,6.3E-4,3,79,85.25,-124.53,0.95456,80,-112.31,-82.35,0.03695,83,23.67,-242.51,0.00849,4,79,146.7,-111.61,0.69671,80,-51.73,-98.9,0.25579,81,5.22,-227.87,2.0E-5,83,6.53,-182.09,0.04748,4,79,208.16,-98.69,0.31032,80,8.85,-115.45,0.53865,81,45.32,-179.54,0.00956,83,-10.6,-121.68,0.14146,5,79,217.25,-74.5,0.16641,80,27.98,-98.08,0.57721,81,37.4,-154.94,0.03031,82,148.18,-116.75,0.00162,83,-35.36,-114.28,0.22444,5,79,244.29,-79.55,0.02905,80,49.73,-114.91,0.38417,81,61.73,-142.09,0.06291,82,136.81,-91.7,0.01309,83,-32.18,-86.95,0.51077,5,79,251.88,-105.39,0.00302,80,44.69,-141.37,0.15618,81,83.73,-157.6,0.0301,82,153.62,-70.67,6.8E-4,83,-6.93,-77.6,0.81003,3,80,13.6,-182.32,0.02712,81,108.19,-202.83,8.4E-4,83,44.2,-83.05,0.97204,3,80,11.57,-223.19,0.0048,83,80.24,-63.68,0.94097,84,-65.73,-5.47,0.05423,2,83,101.83,-12.51,0.2921,84,-19.28,-35.91,0.7079,1,84,42.41,-34.71,1,1,84,74.38,-8.95,1,1,84,106.34,16.82,1,3,82,113.3,69.08,0.07266,83,30.56,62.94,0.08176,84,67.75,20.66,0.84558,3,82,94.9,47.68,0.57185,83,3.76,54.09,0.17221,84,63.86,48.61,0.25594,3,82,53.12,58.98,0.97648,83,-26.21,85.31,0.00456,84,99.96,72.48,0.01896,3,81,200.46,-5.8,0.09295,82,9.13,54.99,0.90704,84,126.05,108.13,1.0E-5,2,81,193.83,37.88,0.54563,82,-34.87,51.01,0.45437,2,81,161.04,66.82,0.91652,82,-65.73,20.02,0.08348,1,81,128.25,95.76,1,1,81,80.97,100.98,1,2,80,264.25,13.19,0.01246,81,33.7,106.19,0.98754,3,79,312.81,162.56,2.4E-4,80,221.19,69.25,0.31653,81,-35.14,90.15,0.68323,3,79,272.83,167.84,0.00866,80,188.03,92.19,0.62689,81,-69.74,69.43,0.36445,3,79,232.85,173.13,0.04125,80,154.87,115.14,0.83373,81,-104.34,48.71,0.12502,3,79,158.13,169.34,0.21227,80,86.66,145.87,0.78597,81,-160.5,-0.71,0.00175,2,79,104.15,157.6,0.4043,80,33.27,160.06,0.5957,2,79,67.3,123.15,0.62991,80,-15.24,146.22,0.37009,2,79,30.46,88.7,0.8698,80,-63.75,132.38,0.1302,2,79,-1,56.96,0.97761,80,-106.23,118.5,0.02239,2,79,-32.46,25.22,0.99981,80,-148.71,104.61,1.9E-4,1,79,-52.9,-7.95,1,1,79,-73.35,-41.12,1,2,79,158.37,74.76,0.23918,80,43.71,61.61,0.76082,4,80,175.05,-114.71,0.01481,81,113.31,-27.87,0.55454,82,25.91,-33.33,0.41217,83,-97.11,20.24,0.01848,4,80,133.71,-9.55,0.84984,81,0.46,-22.08,0.14613,82,13.33,-145.62,8.7E-4,83,-165.79,-69.5,0.00316,3,79,97.86,-45.04,0.97689,80,-64.81,-17.38,0.01798,83,-56.51,-235.41,0.00514,1,79,40.4,-6.45,1,5,79,191.23,-23.93,0.08553,80,27.91,-41.21,0.83201,81,-14.41,-131.51,0.01142,82,121.67,-167.06,1.6E-4,83,-84.01,-143.71,0.07087,1,81,48.13,48.26,1,5,79,255.37,-41.82,0.01222,80,76.82,-86.4,0.50088,81,46.95,-105.64,0.13185,82,99.54,-104.26,0.04564,83,-70.59,-78.49,0.30941,4,80,81.56,-188.35,0.01759,81,141.75,-143.44,0.00241,82,142.98,-11.9,0.03233,83,14.25,-21.76,0.94767,3,79,225.52,111.12,0.03643,80,120.05,63.31,0.92236,81,-71.52,-4.42,0.04122,2,79,97.57,35.22,0.86912,80,-28.44,54.17,0.13088,4,80,80.39,-2.45,0.99635,81,-28.02,-67.7,0.00187,82,57.16,-176.8,1.4E-4,83,-144.31,-118.81,0.00164,5,79,300.22,-70.77,2.0E-4,80,103.5,-132.62,0.14731,81,100.07,-100.43,0.10732,82,97.54,-50.92,0.2557,83,-44.81,-31.76,0.48947,1,81,103.18,36.73,1,4,80,145.14,-64.05,0.18193,81,54.83,-34.18,0.70539,82,28.69,-92.09,0.06015,83,-125.03,-31.54,0.05253,1,79,3.56,-41.65,1,3,79,295.23,118.18,5.0E-4,80,185.3,37.78,0.36535,81,-21.32,44.46,0.63415,4,79,151.97,-6.03,0.367,80,1.14,-7.36,0.62916,81,-56.29,-141.9,3.0E-5,83,-99.16,-184.12,0.00381,2,82,70.6,10.91,0.99072,84,52.33,91.15,0.00928,2,79,91.57,95.88,0.62265,80,-6.09,110.88,0.37735,3,79,42.07,-69.93,0.99938,80,-125.81,-14.07,1.4E-4,83,-27.82,-289.34,4.7E-4,3,79,161.92,130.21,0.21468,80,72.17,109.32,0.78462,81,-133.21,-29.01,6.9E-4,2,81,155.18,6.4,0.44908,82,-5.77,10.53,0.55092,2,79,51.83,53.94,0.91358,80,-60.59,91.7,0.08642,4,80,92.81,-40.75,0.76617,81,11.98,-72.22,0.13802,82,64.07,-137.15,0.01562,83,-117.94,-88.39,0.0802,4,79,168.73,-60.02,0.43901,80,-8.59,-63.05,0.48475,81,-9.6,-173.76,0.00298,83,-46.46,-163.68,0.07326,3,82,155.53,44.58,3.4E-4,83,54.12,20.17,0.11655,84,21.45,5.16,0.88311,2,79,163.9,22.92,0.07152,80,24.97,12.96,0.92848],"hull":35,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,0],"width":452,"height":440}},"zhuaji":{"attack/0":{"x":0.5,"y":0.5,"width":307,"height":125},"attack/1":{"path":"attack/b","x":0.5,"y":0.5,"width":307,"height":125},"attack/2":{"path":"attack/c","x":0.5,"y":0.5,"width":307,"height":125},"attack/3":{"path":"attack/d","x":0.5,"y":0.5,"width":307,"height":125}},"zhuaji2":{"attack/0":{"path":"attack/a","x":0.5,"y":0.5,"width":307,"height":125},"attack/1":{"path":"attack/b","x":0.5,"y":0.5,"width":307,"height":125},"attack/2":{"path":"attack/c","x":0.5,"y":0.5,"width":307,"height":125},"attack/3":{"path":"attack/d","x":0.5,"y":0.5,"width":307,"height":125}}}}],"animations":{"animation":{},"attack":{"slots":{"r eye fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00004"},{"time":0.1,"name":"eyefire/eyefire_00006"},{"time":0.1333,"name":"eyefire/eyefire_00008"},{"time":0.1667,"name":"eyefire/eyefire_00010"},{"time":0.2,"name":"eyefire/eyefire_00012"},{"time":0.2333,"name":"eyefire/eyefire_00014"},{"time":0.2667,"name":"eyefire/eyefire_00016"},{"time":0.3,"name":"eyefire/eyefire_00018"},{"time":0.3333,"name":"eyefire/eyefire_00020"},{"time":0.3667,"name":"eyefire/eyefire_00022"},{"time":0.4,"name":"eyefire/eyefire_00024"},{"time":0.4333,"name":"eyefire/eyefire_00026"},{"time":0.4667,"name":"eyefire/eyefire_00028"},{"time":0.5,"name":"eyefire/eyefire_00030"},{"time":0.5333,"name":"eyefire/eyefire_00032"},{"time":0.5667,"name":"eyefire/eyefire_00034"},{"time":0.6,"name":"eyefire/eyefire_00036"},{"time":0.6333,"name":"eyefire/eyefire_00000"},{"time":0.6667,"name":"eyefire/eyefire_00002"},{"time":0.7,"name":"eyefire/eyefire_00004"},{"time":0.7333,"name":"eyefire/eyefire_00006"},{"time":0.7667,"name":"eyefire/eyefire_00008"},{"time":0.8,"name":"eyefire/eyefire_00010"},{"time":0.8333,"name":"eyefire/eyefire_00012"},{"time":0.8667,"name":"eyefire/eyefire_00014"},{"time":0.9,"name":"eyefire/eyefire_00016"},{"time":0.9333,"name":"eyefire/eyefire_00018"},{"time":0.9667,"name":"eyefire/eyefire_00020"},{"time":1,"name":"eyefire/eyefire_00022"},{"time":1.0333,"name":"eyefire/eyefire_00024"},{"time":1.0667,"name":"eyefire/eyefire_00026"},{"time":1.1,"name":"eyefire/eyefire_00028"},{"time":1.1333,"name":"eyefire/eyefire_00030"},{"time":1.1667,"name":"eyefire/eyefire_00032"},{"time":1.2,"name":"eyefire/eyefire_00034"},{"time":1.2333,"name":"eyefire/eyefire_00036"},{"time":1.2667,"name":"eyefire/eyefire_00000"},{"time":1.3,"name":"eyefire/eyefire_00002"},{"time":1.3333,"name":"eyefire/eyefire_00000"}]},"s1":{"color":[{"color":"4951ff00"},{"time":0.5667,"color":"49faff00"},{"time":0.6,"color":"49d8ff81"},{"time":0.7333,"color":"4951ff00"}]},"s2":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6,"color":"4951ff00"},{"time":0.6333,"color":"49b8ff81"},{"time":0.7667,"color":"4951ff00"}]},"s3":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6333,"color":"4951ff00"},{"time":0.6667,"color":"49f0ff81"},{"time":0.8,"color":"4951ff00"}]},"s4":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6667,"color":"4951ff00"},{"time":0.7,"color":"49f7ff81"},{"time":0.8333,"color":"4951ff00"}]},"s5":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.7,"color":"4951ff00"},{"time":0.7333,"color":"49ebff81"},{"time":0.8667,"color":"4951ff00"}]},"s6":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.7333,"color":"4951ff00"},{"time":0.7667,"color":"49e1ff81"},{"time":0.9,"color":"4951ff00"}]},"zhuaji":{"attachment":[{"name":null},{"time":0.6667,"name":"attack/0"},{"time":0.7333,"name":"attack/1"},{"time":0.8,"name":"attack/2"},{"time":0.8667,"name":"attack/3"},{"time":0.9333,"name":null}]},"zhuaji2":{"attachment":[{"name":null},{"time":0.6667,"name":"attack/0"},{"time":0.7333,"name":"attack/1"},{"time":0.8,"name":"attack/2"},{"time":0.8667,"name":"attack/3"},{"time":0.9333,"name":null}]}},"bones":{"r ik":{"rotate":[{"time":0.1333,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1667,"angle":38.69},{"time":0.2667,"angle":2.56,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"angle":31.51},{"time":0.6667,"angle":-22.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.7}],"translate":[{"time":0.1333,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.1667,"x":24.02,"y":22.96},{"time":0.2667,"x":170.96,"y":133.44,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":127.36,"y":286.82},{"time":0.6667,"x":150,"y":122.9,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7}],"scale":[{"time":0.1333,"curve":0.25,"c3":0.75},{"time":0.1667,"x":0.503,"y":-0.381},{"time":0.2667,"y":-1,"curve":"stepped"},{"time":0.6333,"y":-1},{"time":0.6667,"y":-1.629,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.7}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":-59.77,"y":49.83,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.1667,"x":-178.66,"y":-151.92},{"time":0.2667,"x":-3.42,"y":47.53,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":0.16,"y":17.95},{"time":0.6667,"x":80.42,"y":-14.4,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"x":-20.57,"y":2.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"x":67.02,"y":-70.19,"curve":0.349,"c2":0.39,"c3":0.69,"c4":0.75},{"time":1.0667,"x":29.46,"y":-24.29,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"x":-59.3,"y":6,"curve":0.364,"c2":0.64,"c3":0.701},{"time":1.3333}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":82.85,"y":-12.22,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"x":47.4,"y":-37.21,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"x":-17.65,"y":-32.13,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.6667,"x":43.49,"y":42.81,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"x":21.85,"y":9.36,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7667,"x":-62.69,"y":-76.55,"curve":0.342,"c2":0.36,"c3":0.687,"c4":0.73},{"time":1.0667,"x":3.36,"y":12.83,"curve":0.379,"c2":0.6,"c3":0.723},{"time":1.3333}]},"l ik":{"rotate":[{"time":0.0667,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1333,"angle":-34.28,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"angle":-63.4,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.6667,"angle":2.03,"curve":"stepped"},{"time":0.7,"angle":2.03,"curve":0.365,"c2":0.45,"c3":0.754},{"time":1.3333}],"translate":[{"time":0.0667,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1333,"x":-60.34,"y":70.73,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"x":-151.67,"y":380.94,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":29.71,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1333,"angle":7.38,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.6,"angle":36.02,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":76.11,"curve":0.338,"c2":0.36,"c3":0.671,"c4":0.69},{"time":0.7667,"angle":13.31,"curve":0.348,"c2":0.44,"c3":0.682,"c4":0.78},{"time":1.0667,"angle":21.11,"curve":0.35,"c2":0.65,"c3":0.684},{"time":1.3333,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":"stepped"},{"time":0.1333,"x":-7.85,"y":2.92,"curve":0.347,"c2":0.39,"c3":0.682,"c4":0.73},{"time":0.6,"x":99.36,"y":8.92,"curve":0.367,"c2":0.63,"c3":0.704},{"time":1.3333,"x":-7.85,"y":2.92}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":37.22,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":73.39,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":77.65,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":22.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":50.48,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":48.95,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":59.93,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":1.54,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-6.68,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"angle":-4.77,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}],"translate":[{"time":0.0667,"curve":0.325,"c2":0.23,"c3":0.659,"c4":0.56},{"time":0.1333,"x":39.49,"y":101.31,"curve":0.305,"c2":0.17,"c3":0.641,"c4":0.52},{"time":0.6,"x":6.66,"y":41.87,"curve":0.329,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.6667,"x":28.08,"y":83.67,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"x":5.91,"y":37.16,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7333,"x":-29.5,"y":109.03,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7667,"x":-21.98,"y":129.19,"curve":0.322,"c2":0.3,"c3":0.658,"c4":0.64},{"time":1.0333,"x":0.7,"y":-13.01,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0667,"x":-19.75,"y":-19.42,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.1667,"x":-16.77,"y":-3.81,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.3333}]},"l upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":8.27,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":1.52,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":-25.71,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":37.43,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":30.18,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":8.56,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":-4.37,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":-2.06,"curve":0.38,"c2":0.6,"c3":0.725},{"time":1.3333,"angle":-6.45}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":45.87,"y":-1.01,"curve":0.287,"c2":0.15,"c3":0.634,"c4":0.54},{"time":0.6,"x":12.36,"y":-44.52,"curve":0.329,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.7,"x":-15.16,"y":-9.56,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"x":-100.98,"y":22.47,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-34.69,"y":12.67,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"x":-54.29,"y":-30.69,"curve":0.38,"c2":0.6,"c3":0.725},{"time":1.3333}]},"l finger a":{"rotate":[{"angle":-2.5}]},"l finger a2":{"rotate":[{"angle":5.32}],"translate":[{"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5}]},"l finger b2":{"rotate":[{"angle":16.78}],"translate":[{"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5}]},"l finger c2":{"rotate":[{"angle":16.54}],"translate":[{"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"l finger d":{"rotate":[{"angle":-2.5}]},"l finger d2":{"rotate":[{"angle":26.01}],"translate":[{"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r upparm":{"rotate":[{"angle":-6.94,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-42.16,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"angle":2.03,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":47.11,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":79.85,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":55.18,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":6.04,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":-0.99,"curve":0.337,"c2":0.35,"c3":0.674,"c4":0.69},{"time":0.9333,"angle":-35.06,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"angle":-32.65,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-28.99,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"angle":-6.33,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":25.34,"y":-85.66,"curve":0.289,"c2":0.17,"c3":0.641,"c4":0.57},{"time":0.6,"x":65.74,"y":35.42,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"x":117.09,"y":-47.26,"curve":0.34,"c2":0.35,"c3":0.679,"c4":0.71},{"time":0.9333,"x":-13.82,"y":-152.47,"curve":0.341,"c2":0.36,"c3":0.676,"c4":0.7},{"time":1.0333,"x":3.6,"y":-136.8,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":30.12,"y":-113.75,"curve":0.375,"c2":0.62,"c3":0.715},{"time":1.3333}]},"r upparm2":{"rotate":[{"angle":12.97,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-1.38,"curve":0.322,"c2":0.23,"c3":0.656,"c4":0.56},{"time":0.0667,"angle":12.97,"curve":0.308,"c3":0.643,"c4":0.35},{"time":0.1,"angle":42.24,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":59,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":24.1,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":18.81,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":0.7,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":14.3,"curve":0.337,"c2":0.35,"c3":0.674,"c4":0.69},{"time":0.9333,"angle":15.51,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"angle":31.74,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":35.18,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333,"angle":12.97}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.6,"x":122.67,"y":45.28,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":73.71,"y":95.62,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":-46.55,"y":-38.81,"curve":0.335,"c2":0.34,"c3":0.675,"c4":0.69},{"time":0.9333,"x":-24.66,"y":-20.56,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"x":42.13,"y":20.67,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":25.48,"y":11.95,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333}]},"r finger a":{"rotate":[{"angle":14.41}]},"r finger b":{"rotate":[{"angle":-8.92}]},"r finger c":{"rotate":[{"angle":-9.49}]},"r finger d":{"rotate":[{"angle":7.12}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-28.12,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":44.43,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-3.92,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":-9.95,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.7667,"angle":-4.89,"curve":0.353,"c2":0.42,"c3":0.689,"c4":0.77},{"time":1.0667,"angle":-2.65,"curve":0.343,"c2":0.4,"c3":0.677,"c4":0.74},{"time":1.1667,"angle":-6.58,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"angle":-4.31}],"translate":[{"time":0.1333,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":-82.09,"y":-2.66,"curve":0.333,"c2":0.33,"c3":0.669,"c4":0.67},{"time":0.7667}]},"r ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":23.99,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"angle":5.22,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"angle":-18.84,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":7.33,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"angle":-13.57,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"angle":19.53,"curve":0.349,"c2":0.39,"c3":0.69,"c4":0.75},{"time":1.0667,"angle":-8.27,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":7.25,"curve":0.364,"c2":0.64,"c3":0.701},{"time":1.3333}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-17.47,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-7.31,"curve":0.336,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.3667,"angle":19.96,"curve":0.34,"c2":0.36,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-21.12,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":13.14,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":-13.39,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-41.77,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.9333,"angle":27.48,"curve":0.343,"c2":0.39,"c3":0.677,"c4":0.73},{"time":1.0667,"angle":-3.74,"curve":0.342,"c2":0.4,"c3":0.676,"c4":0.74},{"time":1.1667,"angle":-17.22,"curve":0.351,"c2":0.65,"c3":0.686},{"time":1.3333,"angle":-2.28}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0667,"angle":23.99,"curve":0.326,"c2":0.23,"c3":0.66,"c4":0.56},{"time":0.1333,"angle":5.22,"curve":0.296,"c2":0.14,"c3":0.635,"c4":0.5},{"time":0.6,"angle":-18.84,"curve":0.33,"c2":0.32,"c3":0.664,"c4":0.65},{"time":0.6667,"angle":7.33,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"angle":-13.57,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.7667,"angle":19.53,"curve":0.324,"c2":0.3,"c3":0.66,"c4":0.64},{"time":1.0667,"angle":-8.27,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.1667,"angle":7.25,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.3333}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-11.92,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-1.76,"curve":0.336,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.3667,"angle":25.52,"curve":0.34,"c2":0.36,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-15.57,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":18.69,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":-7.84,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-36.22,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.9333,"angle":33.03,"curve":0.343,"c2":0.39,"c3":0.677,"c4":0.73},{"time":1.0667,"angle":1.81,"curve":0.342,"c2":0.4,"c3":0.676,"c4":0.74},{"time":1.1667,"angle":-11.67,"curve":0.351,"c2":0.65,"c3":0.686},{"time":1.3333,"angle":3.27}]},"head2":{"rotate":[{"time":0.6667,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"angle":5.87,"curve":0.377,"c2":0.51,"c3":0.748},{"time":1.0667}]},"r leg":{"scale":[{"time":0.1333,"curve":0.25,"c3":0.75},{"time":0.1667,"x":0.787,"y":-1,"curve":"stepped"},{"time":0.6333,"x":0.787,"y":-1},{"time":0.6667}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":25.34,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-42.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-24.81,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":161.27,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-143.61,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":108.86,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":36.8,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-4.25,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.8,"angle":-31.24,"curve":0.342,"c2":0.37,"c3":0.676,"c4":0.7},{"time":0.9333,"angle":-58.68,"curve":0.341,"c2":0.37,"c3":0.675,"c4":0.71},{"time":1.0333,"angle":-90.06,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-48.42,"curve":0.343,"c2":0.4,"c3":0.677,"c4":0.74},{"time":1.1667,"angle":-6.5,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-135.88,"y":5.39,"curve":0.325,"c2":0.23,"c3":0.659,"c4":0.56},{"time":0.0667,"x":-256.76,"y":63.87,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"x":318.1,"y":-171.89,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"x":1082.98,"y":45.2,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"x":754.88,"y":728.06,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":1273.35,"y":-53.61,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":455.27,"y":-180.44,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-64.06,"y":-103.48,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.8,"x":-68.82,"y":-25.93,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9333,"x":-153.32,"y":121.18,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"x":-58.69,"y":40.26,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":-44.28,"y":-55.53,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"x":122.47,"y":-55.31,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":0.803,"y":0.682,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"y":-1,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"x":0.994,"y":-0.844,"curve":"stepped"},{"time":0.7,"x":0.994,"y":-0.844,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7667,"x":0.831,"y":-0.93,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.8,"x":0.789,"y":-0.755,"curve":"stepped"},{"time":1.0333,"x":0.789,"y":-0.755,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":1.0667,"x":0.695,"curve":0.25,"c3":0.75},{"time":1.3333}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-9.73,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":-23.13,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":4.69,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":-61.02,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7667,"angle":-32.79,"curve":0.345,"c2":0.37,"c3":0.689,"c4":0.74},{"time":1.0667,"angle":-13.92,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"y":-186.25,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"x":48.5,"y":40.9,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"y":345.15,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":248.34,"y":-36.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":61.3,"y":-61.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-206.23,"y":-101.45,"curve":0.345,"c2":0.37,"c3":0.689,"c4":0.74},{"time":1.0667,"x":2.79,"y":-19.68,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"x":29.1,"y":32.67,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-31,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"angle":78.45,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":-152.46,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":-87.67,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":-9.66,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":-105.82,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":41.72,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":27.63,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":3.14,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.3333,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":103.03,"y":16.59,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"x":349.17,"y":93.6,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":377,"y":129.38,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"x":432.04,"y":252.54,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"x":-13.24,"y":1029.9,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.6667,"x":532.83,"y":177.15,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"x":362.28,"y":224.75,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7333,"x":252.8,"y":12.37,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"x":80.29,"y":-97.37,"curve":0.351,"c2":0.41,"c3":0.686,"c4":0.75},{"time":1.0333,"x":15.48,"y":-24.23,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.1667,"x":-52.17,"y":55.03,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":"stepped"},{"time":0.0667,"x":0.95,"y":0.95,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":0.95,"y":-0.95,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"x":1.29,"y":-1.29,"curve":0.347,"c2":0.38,"c3":0.688,"c4":0.74},{"time":0.6,"x":1.232,"y":-1.232,"curve":0.347,"c2":0.38,"c3":0.689,"c4":0.74},{"time":0.6667,"x":-0.647,"y":-0.95,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.7,"x":0.875,"y":-0.95,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7333,"x":0.975,"y":0.844,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"curve":0.37,"c2":0.63,"c3":0.708},{"time":1.3333,"x":0.95,"y":0.95}]},"shadow":{"scale":[{"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.0667,"y":0.757,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"y":0.811,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"y":1.253,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"y":1.164,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"y":0.986,"curve":0.377,"c2":0.51,"c3":0.748},{"time":0.7667}]},"r arm":{"rotate":[{"angle":-8.2,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-13.93},{"time":0.0667,"angle":-60.51},{"time":0.1,"angle":-62.71},{"time":0.1333,"angle":16.39},{"time":0.6,"angle":27.68},{"time":0.6667,"angle":3.05},{"time":0.7,"angle":-137.79},{"time":0.7667,"angle":171.9},{"time":0.8,"angle":157.91},{"time":0.9333,"angle":144.13},{"time":1.0333,"angle":124.02},{"time":1.0667,"angle":-32.36},{"time":1.3333,"angle":-8.2}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-41.06,"y":-16.61},{"time":0.1,"x":-27.22,"y":52.6},{"time":0.1333,"x":5.47,"y":50.88},{"time":0.6,"x":-26.72,"y":-9.06},{"time":0.6667,"x":-136.32,"y":1.61},{"time":0.7,"x":80.65,"y":75.26},{"time":0.7667,"x":84.81,"y":71.67},{"time":0.8,"x":9.26,"y":-15.84},{"time":0.9333,"x":7.48,"y":-9.84},{"time":1.0333,"x":6.15,"y":-5.35},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":0.708},{"time":0.1,"x":0.717},{"time":0.1333,"x":0.803},{"time":0.6,"x":0.817,"y":0.762},{"time":0.6667,"x":1.37},{"time":0.7,"x":-1.065},{"time":0.9333,"x":-1.368},{"time":1.0333,"x":-1.021},{"time":1.0667}]},"l armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-70.14},{"time":0.1,"angle":-13.03},{"time":0.1333,"angle":115.4},{"time":0.6,"angle":147.71},{"time":0.6667,"angle":139.35},{"time":0.7,"angle":144.7},{"time":0.7333,"angle":179.91},{"time":0.7667,"angle":-15.92},{"time":1.0333,"angle":-2.99},{"time":1.3333,"angle":1.84}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-47.04,"y":42.46},{"time":0.1,"x":11.52,"y":-6.65},{"time":0.1333,"x":53.7,"y":-2.86},{"time":0.6,"x":61.61,"y":1.75},{"time":0.6667,"x":61.32,"y":5.82},{"time":0.7,"x":85.02,"y":2.27},{"time":0.7333,"x":25.94,"y":7.26},{"time":0.7667,"x":-46.14,"y":-10.29},{"time":1.0333,"x":-0.75,"y":-10.81},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":1.09},{"time":0.1333,"x":0.706,"y":0.847},{"time":0.6,"x":2.248},{"time":0.7,"x":1.63},{"time":0.7333,"x":-1.044},{"time":0.7667,"x":1.584},{"time":1.0333,"x":1.27},{"time":1.3333}]},"r finger a2":{"rotate":[{"angle":14.41}]},"r finger b2":{"rotate":[{"angle":-8.92}]},"r finger c2":{"rotate":[{"angle":-9.49}]},"r finger d2":{"rotate":[{"angle":7.12}]},"l hand2":{"scale":[{"x":0,"y":0}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":15.59},{"time":0.1333,"angle":18.42},{"time":0.6,"angle":13.11},{"time":0.6667,"angle":57.13},{"time":0.7,"angle":7.32},{"time":0.7667,"angle":15.43},{"time":1.0667,"angle":15.55},{"time":1.1667},{"time":1.3333,"angle":9.15}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"y":0.751},{"time":0.1333,"y":0.853},{"time":0.6,"x":0.659,"y":0.822},{"time":1.3333}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0667,"x":26.77},{"time":0.1333,"x":16.87},{"time":0.6,"x":29.56},{"time":0.6667,"x":-0.2},{"time":0.7667,"x":-0.17,"y":-10.27},{"time":1.0667,"x":-0.08,"y":8.78},{"time":1.3333,"y":-15.36}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":44.9},{"time":0.1333,"angle":-45.16},{"time":0.6,"angle":11.27},{"time":0.6667,"angle":54.79},{"time":0.7,"angle":35.24},{"time":0.7667,"angle":19.05},{"time":1.0667,"angle":-20.9},{"time":1.1667,"angle":14.34},{"time":1.3333,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":44.9},{"time":0.1333,"angle":38.44},{"time":0.3,"angle":-18.77},{"time":0.6,"angle":7.41},{"time":0.6667,"angle":-24.12},{"time":0.7,"angle":35.24},{"time":0.7667,"angle":31.85},{"time":1.0667,"angle":-20.9},{"time":1.1667,"angle":-20.36},{"time":1.3333,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-12.38},{"time":0.1333,"angle":-36.29},{"time":0.3,"angle":-24.56},{"time":0.6,"angle":-31.83},{"time":0.6667,"angle":-110.13},{"time":0.7,"angle":-83.67},{"time":0.7667},{"time":1.0667,"angle":26.37},{"time":1.1667,"angle":-10.6},{"time":1.3333,"angle":7.98}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-112.87,"y":-109.8},{"time":0.1333,"x":-133.67,"y":-105.23},{"time":0.1667,"x":-101.04,"y":-49.3},{"time":0.3,"x":-176.77,"y":-36.51},{"time":0.6,"x":-99.31,"y":-37.52},{"time":0.6667,"x":-100.9,"y":-138.3},{"time":0.7,"x":-72.09,"y":-142.33},{"time":0.7667,"x":-110.87,"y":-78.71},{"time":1.0667,"x":-24.67,"y":-48.57},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":2.138,"y":2.138},{"time":0.1333,"x":2.823,"y":1.854},{"time":0.6,"x":2.967,"y":1.522},{"time":0.6667,"x":1.934,"y":1.474},{"time":1.3333}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":33.36},{"time":0.1333,"angle":7.96},{"time":0.6,"angle":24.88},{"time":0.6667,"angle":45.51},{"time":0.7,"angle":21.47},{"time":0.7667,"angle":-9.31},{"time":1.0667,"angle":-33.22},{"time":1.1667,"angle":29.51},{"time":1.3333,"angle":-9.62}]},"r upparm3":{"rotate":[{},{"time":0.0667,"angle":56.14},{"time":0.1333,"angle":-50.51},{"time":0.6,"angle":-135.48},{"time":0.6667,"angle":-136.3},{"time":0.7,"angle":-23.42},{"time":0.7667,"angle":-21.34},{"time":1.0667,"angle":6.75},{"time":1.1667,"angle":4.67},{"time":1.3333}],"translate":[{},{"time":0.6,"x":127.5,"y":81.83},{"time":0.6667,"x":135.42,"y":147.68},{"time":0.7},{"time":0.7667,"x":-12.2,"y":-20.68},{"time":1.0667}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":15.49},{"time":0.1333},{"time":0.6,"angle":-31.98},{"time":0.6667,"angle":10.06},{"time":0.7,"curve":"stepped"},{"time":0.7667},{"time":1.0667,"angle":-9.17},{"time":1.1667},{"time":1.3333,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-42.06},{"time":0.1333,"angle":18.35},{"time":0.6,"angle":-45.41},{"time":0.6667,"angle":-50.42},{"time":0.7,"curve":"stepped"},{"time":0.7667},{"time":1.0667,"angle":6.4},{"time":1.1667},{"time":1.3333,"angle":4.52}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-91.9},{"time":0.1333,"angle":-74.48},{"time":0.6,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-56.28},{"time":0.1333,"angle":-77.8},{"time":0.6,"angle":33.91},{"time":0.6667},{"time":0.7,"angle":-18.96},{"time":0.7667,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-11.95}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":39.84},{"time":0.1333,"angle":31.32},{"time":0.6,"angle":86.4},{"time":0.6667,"angle":83.56},{"time":0.7,"angle":26.29},{"time":0.7667,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-8.22}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":19.89,"y":-14.88},{"time":0.1333,"x":32.79,"y":-41.73},{"time":0.6,"x":19.38,"y":-35.79},{"time":0.6667,"x":2.31,"y":-7.7},{"time":1.3333}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667},{"time":0.1333,"angle":43.27},{"time":0.6,"angle":88.47},{"time":0.6667},{"time":0.7,"angle":-67.87},{"time":0.7667,"angle":4.09},{"time":1.0667,"angle":20.21},{"time":1.1667},{"time":1.3333,"angle":-1.85}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":4.88,"y":-43.61},{"time":0.1333,"x":-11.93,"y":65},{"time":0.6,"x":15.3,"y":52.26},{"time":0.6667,"x":-54.15,"y":41.88},{"time":0.7,"x":21.7,"y":68.45},{"time":0.7667,"x":32.71,"y":67.25},{"time":1.0667,"x":-47.13,"y":35.86},{"time":1.3333}]},"hair t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":8.52},{"time":0.1333,"angle":-8.98},{"time":0.6,"angle":0.79},{"time":0.6667,"angle":-1.02},{"time":0.7,"angle":-8.68},{"time":0.7667},{"time":1.0667,"angle":-6.38},{"time":1.1667}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":12.22},{"time":0.1333,"angle":-7.25},{"time":0.6,"angle":-5.48},{"time":0.6667,"angle":-12.84},{"time":0.7,"angle":5.93},{"time":0.7667},{"time":1.0667,"angle":-10.87},{"time":1.1667},{"time":1.3333,"angle":0.61}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-21.87},{"time":0.1333,"angle":32.23},{"time":0.3333,"angle":21.14},{"time":0.6,"angle":40.57},{"time":0.6667,"angle":13.45},{"time":0.7,"angle":14.83},{"time":0.7667,"angle":14.44},{"time":1.0667,"angle":10.66},{"time":1.1667,"angle":11.02},{"time":1.3333,"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-29.51},{"time":0.1333,"angle":-41.13},{"time":0.3333,"angle":22.09},{"time":0.6,"angle":26.89},{"time":0.6667,"angle":-3.93},{"time":0.7,"angle":-23.54},{"time":0.7667,"angle":12.73},{"time":1.0667,"angle":5.46},{"time":1.1667,"angle":-0.83},{"time":1.3333,"angle":5.88}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":44.78},{"time":0.1333,"angle":28.47},{"time":0.3333,"angle":48.31},{"time":0.6,"angle":85.29},{"time":0.6667,"angle":9.1},{"time":0.7,"angle":29.31},{"time":0.7667,"angle":56.03},{"time":1.0667,"angle":95.45},{"time":1.1667,"angle":18.9},{"time":1.3333,"angle":63.33}]},"headmouth":{"rotate":[{"time":0.6667},{"time":0.7,"angle":0.32},{"time":0.7667,"angle":-7.36},{"time":1,"angle":-15.78},{"time":1.1667,"angle":-4.46},{"time":1.3333}],"translate":[{"time":0.6667},{"time":0.7,"x":-9.23,"y":5.08},{"time":0.7667,"x":-14.87,"y":16.6},{"time":1,"x":-7.26,"y":35.86},{"time":1.3333}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-13.02},{"time":0.1333,"angle":-24.09},{"time":0.6,"angle":-18.83},{"time":0.6667,"angle":-10.89},{"time":0.7,"angle":-19.1},{"time":0.7667,"angle":-21.93},{"time":1.0667,"angle":-5.66},{"time":1.1667,"angle":-2.83},{"time":1.3333,"angle":8.77}],"scale":[{"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-13.02},{"time":0.1333,"angle":-24.09},{"time":0.6,"angle":9.35},{"time":0.6667,"angle":-23.49},{"time":0.7,"angle":14.32},{"time":0.7667,"angle":-3.09},{"time":0.8333,"angle":-32.51},{"time":1.0667,"angle":2.58},{"time":1.1667,"angle":-4.79},{"time":1.3333,"angle":-0.61}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-53.23,"y":-6.97},{"time":0.6,"x":-73.04,"y":-5.93},{"time":0.6667,"x":-86.38,"y":19.37},{"time":0.7,"x":-62.23,"y":-13.36},{"time":0.7667,"x":-6.3,"y":2.44},{"time":1.3333}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":26.12},{"time":0.1333,"angle":-33.86},{"time":0.6,"angle":17.96},{"time":0.6667,"angle":-30.75},{"time":0.7,"angle":14.32},{"time":0.7667,"angle":44.83},{"time":0.8333,"angle":32.69},{"time":1.0667,"angle":-51.59},{"time":1.1667,"angle":8.36},{"time":1.3333,"angle":-10}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.93},{"time":0.1333,"angle":-10.83},{"time":0.3,"angle":-17.1},{"time":0.6,"angle":-16.9},{"time":0.6667,"angle":20.79},{"time":0.7,"angle":13.57},{"time":0.7667,"curve":"stepped"},{"time":1.0667},{"time":1.1667,"angle":-5.03},{"time":1.3333,"angle":-11.82}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":41.46},{"time":0.1333,"angle":-31.95},{"time":0.3,"angle":10.84},{"time":0.6},{"time":0.6667,"angle":45.5},{"time":0.7,"angle":-15.56},{"time":0.7667,"angle":-27.01},{"time":1.0667,"angle":13.84},{"time":1.1667,"angle":2.84},{"time":1.3333,"angle":1.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-58.71,"y":-18.28},{"time":0.3,"x":-43.07,"y":-3.13},{"time":0.6,"x":-8.1,"y":-1.98},{"time":0.6667,"x":-84.71,"y":-4.69},{"time":0.7,"x":-54.46,"y":-33.89},{"time":0.7667,"x":-3.81,"y":-47.8},{"time":1.0667,"x":-40.87,"y":-40.97},{"time":1.1667,"x":1.02,"y":-5.62},{"time":1.3333}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":23.83},{"time":0.1333,"angle":-25.44},{"time":0.6,"angle":24.3},{"time":0.6667,"angle":45.5},{"time":0.7,"angle":29.05},{"time":0.7667,"angle":13.4},{"time":0.8667,"angle":-24.92},{"time":1.0667,"angle":-20.59},{"time":1.1667,"angle":11.55},{"time":1.3333,"angle":15.47}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-19.5},{"time":0.1333,"angle":16.7},{"time":0.6,"angle":7.2},{"time":0.6667,"angle":39.42},{"time":0.7,"angle":-34.68},{"time":0.7667,"angle":34.93},{"time":1.0667,"angle":-21.35},{"time":1.1667},{"time":1.3333,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-35.8},{"time":0.1333,"angle":68.99},{"time":0.6,"angle":-26.98},{"time":0.6667,"angle":56.47},{"time":0.7,"angle":-44.29},{"time":0.7667,"angle":-15.83},{"time":1.0667,"angle":37.68},{"time":1.1667},{"time":1.3333,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":6.21,"y":10.67},{"time":0.6,"x":9.81,"y":-25.6},{"time":0.7,"x":-26.54,"y":-20.81},{"time":0.7667,"x":-1.22,"y":-7.58},{"time":1.3333,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":37.1},{"time":0.1333,"angle":-42.72},{"time":0.6,"angle":72.54},{"time":0.6667,"angle":-44.71},{"time":0.7,"angle":14.62},{"time":0.7667,"angle":43.02},{"time":1.0667,"angle":-30.54},{"time":1.1667,"angle":-2.06},{"time":1.3333,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":13.87},{"time":0.1333,"angle":16.7},{"time":0.2667,"angle":56.98},{"time":0.6,"angle":16.82},{"time":0.6667,"angle":-4.21},{"time":0.7,"angle":52.49},{"time":0.7667,"angle":80.81},{"time":1.0667,"angle":63.64},{"time":1.1667,"angle":-20.36},{"time":1.3333,"angle":26.63}]},"hair t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":9.54}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":40.99}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":8.76}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":-10.54},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":-0.6}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":6.67}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":-10.54},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":3.67}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"r ear s":{"rotate":[{"angle":-5.67}]},"r ear ring b":{"rotate":[{"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"r ear s2":{"rotate":[{"angle":-7.49}]},"s1":{"translate":[{"x":44.14,"y":871.69},{"time":0.6,"x":39.16,"y":905.66}],"scale":[{"x":5,"y":5}]},"s2":{"translate":[{"x":250.1,"y":731.92},{"time":0.6333,"x":278.27,"y":730.27}],"scale":[{"x":5,"y":5}]},"s3":{"translate":[{"x":522.28,"y":518.6},{"time":0.6667,"x":313.28,"y":707.08}],"scale":[{"x":5,"y":5}]},"s4":{"translate":[{"x":257.46,"y":525.95}],"scale":[{"x":5,"y":5}]},"s5":{"translate":[{"x":217,"y":511.24}],"scale":[{"x":5,"y":5}]},"s6":{"translate":[{"x":189.08,"y":511.24}],"scale":[{"x":5,"y":5}]},"zhuaji":{"rotate":[{"angle":-35.1}],"translate":[{"x":-1862.83,"y":-1618.32}],"scale":[{"x":-6.27,"y":6.27}]},"zhuaji2":{"rotate":[{"angle":-35.1},{"time":0.6667,"angle":-90.76}],"translate":[{"x":-1862.83,"y":-1618.32}],"scale":[{"x":-6.27,"y":6.27}]},"s":{"scale":[{"x":0,"y":0},{"time":0.0333,"curve":"stepped"},{"time":1.3},{"time":1.3333,"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]}},"ik":{"lhand":[{"softness":50},{"time":0.0333,"mix":0,"softness":50,"curve":"stepped"},{"time":1.0333,"mix":0,"softness":50},{"time":1.3333,"softness":50}],"r ik":[{"time":0.6}],"r ik2":[{"time":0.1333,"softness":50,"curve":"stepped"},{"time":0.1667,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":0.6,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":0.6667,"softness":50}],"rhand":[{"softness":50},{"time":0.0333,"mix":0,"softness":50,"curve":"stepped"},{"time":1.0333,"mix":0,"softness":50},{"time":1.0667,"softness":50}]},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.2,"vertices":[-31.93134,-81.1846,-42.60324,-50.47324,-21.36816,-62.50143,-20.28406,-38.41428,-4.95038,-43.16226,1.75409,-26.59991,11.29492,-24.15213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14.02216,-58.32932,1.53766,-64.53867,-10.9469,-70.74783,-21.43884,-75.96606,0,0,0,0,0,0,9.83972,-34.66701,21.75732,-28.73352,0,0,0,0,0,0,0,0,0,0,0,0,34.44312,-29.9411,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.04004,-56.24902,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-30.10202,-50.38266,-9.75293,-57.8786],"curve":0.328,"c2":0.27,"c3":0.661,"c4":0.6},{"time":0.6,"vertices":[-7.16339,-66.76302,5.08936,-49.54437,-1.29144,-49.78841,4.49988,-18.28939,2.12268,-18.7148,9.95319,-12.1902,8.31146,-13.36357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25.71436,-29.77234,17.19019,-34.88861,-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,55.4898,-115.34093,44.22822,-137.56801]},{"time":0.6667,"vertices":[3.6321,-100.9129,62.7143,-54.9528,12.52618,-87.53851,61.60427,-40.45278,16.05284,-73.74738,80.50346,-26.3567,38.5543,-76.38689,18.67151,22.63937,29.30438,1.55887,-5.25476,-10.40659,-11.2193,-3.168,-2.58197,-0.24799,-1.92908,1.73404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.46552,-13.89214,-5.67834,-52.09679,11.59296,-45.30103,28.76481,-58.07358,21.99501,-68.80438,-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,37.42488,-76.73364,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,58.73687,-116.59249,45.50251,-140.80627]},{"time":0.7,"offset":86,"vertices":[-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,55.4898,-115.34093,44.22822,-137.56801]},{"time":1.0667}]},"r upparm":{"r upparm":[{},{"time":0.0667,"vertices":[43.13046,-13.27382,-36.1978,-26.94739,5.74899,22.31195,0,0,0,0,0,0,0,0,0,0,31.6051,18.1186,-4.06282,-36.20312,38.16904,39.10783,37.80072,30.64732,43.97684,21.13391,55.23495,13.60487,67.52536,11.74265]},{"time":0.1333,"vertices":[60.07882,-69.59204,19.27461,1.86738,5.44641,21.13764,0,0,0,0,0,0,0,0,0,0,66.70468,20.39863,-12.45708,1.58896,184.55437,33.34988,148.37286,83.35548,67.07377,93.50201,-36.5234,56.99421,-120.72923,-18.50066,12.30743,-14.77753,12.80518,14.34698,24.56116,-5.73856,2.06067,25.13708,31.05945,12.91113,-17.34119,28.82153]},{"time":0.6,"vertices":[-2.76124,-163.20505,137.66345,-15.41998,3.32836,12.91745,0,0,0,0,0,0,0,0,0,0,91.91296,-18.69115,13.58247,56.98287,196.27774,40.69681,101.71411,88.45444,-28.87119,64.12794,-155.66006,-30.5406,-222.00279,-166.49883,-7.98074,-106.22893,106.21513,11.44228,19.44185,-73.45589,69.19238,32.60618,49.33606,-42.82529,33.65353,56.79309]},{"time":0.7,"vertices":[-13.96832,-199.53496,111.97314,45.99949,72.60979,33.76303,0,0,0,0,0,0,0,0,0,0,79.37938,-16.14236,11.73032,49.21249,138.32974,-78.16116,102.05568,-47.90683,40.54369,-51.69243,-17.7495,-95.54425,-39.05264,-155.89218,-6.89246,-91.74317,91.73126,9.88197,-3.60842,-58.27855,80.75627,29.49527,42.60842,-36.98548,29.06442,49.04858]},{"time":1.3333}]}}},"drawOrder":[{"time":0.0667,"offsets":[{"slot":"body","offset":1},{"slot":"r beard2","offset":3}]},{"time":0.1333,"offsets":[{"slot":"l arm","offset":39},{"slot":"l hand","offset":39},{"slot":"l finger d","offset":39},{"slot":"l finger c","offset":39},{"slot":"l finger b","offset":39},{"slot":"l finger a","offset":39},{"slot":"l armour","offset":39},{"slot":"l beard","offset":-6},{"slot":"r beard","offset":-14},{"slot":"r upparm","offset":-20},{"slot":"r armour u","offset":-23},{"slot":"r upparm 2","offset":-22},{"slot":"r arm","offset":-23},{"slot":"r hand","offset":-35},{"slot":"r finger d","offset":-37},{"slot":"r finger c","offset":-38},{"slot":"r finger b","offset":-39},{"slot":"r finger a","offset":-40}]},{"time":0.6333,"offsets":[{"slot":"body","offset":1}]},{"time":0.6667,"offsets":[{"slot":"l armour","offset":-5},{"slot":"body","offset":-5}]},{"time":0.7,"offsets":[{"slot":"l armour","offset":-5},{"slot":"body","offset":-5},{"slot":"r beard2","offset":4}]},{"time":1.3333,"offsets":[{"slot":"r beard2","offset":3}]}]},"die":{"slots":{"lock":{"color":[{"color":"ffffff00","curve":"stepped"},{"time":0.7667,"color":"ffffff00"},{"time":0.8333,"color":"ffffffff"}]},"lock 2":{"color":[{"color":"ffffff00","curve":"stepped"},{"time":1.3333,"color":"ffffff00"},{"time":1.4,"color":"ffffffff"}]},"r eye":{"color":[{"time":2.7667,"color":"ffffffff"},{"time":3,"color":"000000ff"}]},"r eye fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"},{"time":1.9333,"name":"eyefire/eyefire_00002"},{"time":1.9667,"name":"eyefire/eyefire_00003"},{"time":2,"name":"eyefire/eyefire_00004"},{"time":2.0333,"name":"eyefire/eyefire_00006"},{"time":2.0667,"name":"eyefire/eyefire_00007"},{"time":2.1,"name":"eyefire/eyefire_00008"},{"time":2.1333,"name":"eyefire/eyefire_00010"},{"time":2.1667,"name":"eyefire/eyefire_00011"},{"time":2.2,"name":"eyefire/eyefire_00012"},{"time":2.2333,"name":"eyefire/eyefire_00014"},{"time":2.2667,"name":"eyefire/eyefire_00015"},{"time":2.3,"name":"eyefire/eyefire_00017"},{"time":2.3333,"name":"eyefire/eyefire_00018"},{"time":2.3667,"name":"eyefire/eyefire_00019"},{"time":2.4,"name":"eyefire/eyefire_00021"},{"time":2.4333,"name":"eyefire/eyefire_00022"},{"time":2.4667,"name":"eyefire/eyefire_00023"},{"time":2.5,"name":"eyefire/eyefire_00025"},{"time":2.5333,"name":"eyefire/eyefire_00026"},{"time":2.5667,"name":"eyefire/eyefire_00028"},{"time":2.6,"name":"eyefire/eyefire_00029"},{"time":2.6333,"name":"eyefire/eyefire_00030"},{"time":2.6667,"name":"eyefire/eyefire_00032"},{"time":2.7,"name":"eyefire/eyefire_00033"},{"time":2.7333,"name":"eyefire/eyefire_00034"},{"time":2.7667,"name":null}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":16.49},{"time":0.1,"angle":-16.57},{"time":0.3,"angle":1.8},{"time":0.7667,"angle":-16.9},{"time":0.8333,"angle":3.76},{"time":0.9667,"angle":1.33},{"time":1.3333,"angle":1.68},{"time":1.4,"angle":-16.6},{"time":1.6333,"angle":-6.02},{"time":1.8667,"angle":-0.35},{"time":1.9333,"angle":-13.61},{"time":2.0333,"angle":-5.47},{"time":2.6667,"angle":-9.54},{"time":2.7667,"angle":-7.05},{"time":2.8333,"angle":-15.47},{"time":3,"angle":2.5}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-184.28,"y":-59.89},{"time":0.1,"x":55.28,"y":-92.14},{"time":0.3,"x":115.18,"y":4.61},{"time":0.7667,"x":198.1,"y":64.5},{"time":0.8333,"x":-364.72,"y":-0.95},{"time":0.9667,"x":-270.68,"y":6.37},{"time":1.3333,"x":-164.46,"y":78.32},{"time":1.4,"x":61.15,"y":-24.61},{"time":1.6333,"x":96.07,"y":-109.25},{"time":1.8667,"x":15.4,"y":-158.17},{"time":1.9333,"x":-35.28,"y":-151.53},{"time":2.0333,"x":23.8,"y":14.69},{"time":2.6667,"x":-96.75,"y":119.78},{"time":2.7667,"x":-96.75,"y":-257.99},{"time":2.8333,"x":-96.75,"y":-175.07},{"time":3,"x":-96.75,"y":-216.53}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":40.56},{"time":0.1,"angle":48.46},{"time":0.1667,"angle":36.57},{"time":0.3,"angle":30.02},{"time":0.7667,"angle":21.83},{"time":0.8333,"angle":12.42},{"time":0.9,"angle":34.56},{"time":0.9333,"angle":71.56},{"time":0.9667,"angle":44.82},{"time":1.0667,"angle":16.51},{"time":1.3333,"angle":-27.67},{"time":1.4,"angle":-49.08},{"time":1.5,"angle":-39.13},{"time":1.6333,"angle":-47.16},{"time":1.8667,"angle":-37.47},{"time":1.9333,"angle":-55.66},{"time":2.0333,"angle":-8.32},{"time":2.6667,"angle":-18.72},{"time":2.7667,"angle":-9.15},{"time":2.8333,"angle":-36.31},{"time":3,"angle":-15.71}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-98.46,"y":-24.61},{"time":0.0667,"x":74.49,"y":72.73},{"time":0.1,"x":286.77,"y":-3.16},{"time":0.1667,"x":388.95,"y":-330.47},{"time":0.3,"x":320.72,"y":-272.48},{"time":0.7667,"x":328.07,"y":-224.33},{"time":0.8333,"x":269.63,"y":-170.96},{"time":0.9,"x":77.59,"y":-240.96},{"time":0.9333,"x":-99.14,"y":-246.25},{"time":0.9667,"x":-171.61,"y":-179.86},{"time":1.0667,"x":-116.17,"y":-43},{"time":1.3333,"x":34.67,"y":23.83},{"time":1.4,"x":316.86,"y":-73.41},{"time":1.5,"x":380.06,"y":-201.1},{"time":1.6333,"x":346.97,"y":-293.06},{"time":1.8667,"x":323.56,"y":-321.08},{"time":1.9333,"x":386.93,"y":-386},{"time":2.0333,"x":376.07,"y":-344.42},{"time":2.6667,"x":260.01,"y":-271.8},{"time":2.7667,"x":14.09,"y":-439.51},{"time":2.8333,"x":27.11,"y":-364.85},{"time":3,"x":35.95,"y":-382.46}],"scale":[{"time":0.0333},{"time":0.0667,"y":-1,"curve":"stepped"},{"time":0.9,"y":-1},{"time":0.9333,"x":0.679,"y":0.679}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-21.28},{"time":0.1,"angle":29.83},{"time":0.3,"angle":-22.81},{"time":0.7667,"angle":36.27},{"time":0.8333,"angle":-13.81},{"time":0.9667,"angle":4.9},{"time":1.3333,"angle":17.12},{"time":1.4,"angle":62.03},{"time":1.6333,"angle":16.28},{"time":1.8667,"angle":-4},{"time":1.9333,"angle":5.81},{"time":2.0333,"angle":-2.56},{"time":2.6667,"angle":61.08},{"time":2.7667,"angle":41.63},{"time":2.8333,"angle":37.23},{"time":3,"angle":2.61}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"x":18.45,"y":-42.62},{"time":0.1,"x":-43.9,"y":-0.68},{"time":0.3,"x":-58.59,"y":-2.25},{"time":0.7667,"x":11.9,"y":-2.22,"curve":"stepped"},{"time":0.8333,"x":11.9,"y":-2.22},{"time":0.9667,"x":6.27,"y":6.41},{"time":1.3333,"x":33.65,"y":8.73},{"time":1.4,"x":7.7,"y":32.35},{"time":1.6333,"x":-4.69,"y":-13.44},{"time":1.8667,"x":8.33,"y":-6.9},{"time":1.9333,"x":-19.99,"y":-23.01},{"time":2.0333,"x":-15.28,"y":-2.95},{"time":2.6667,"x":-0.46,"y":11.36}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":2.76},{"time":0.1,"angle":-18.51},{"time":0.3,"angle":48.94},{"time":0.7667,"angle":17.78},{"time":0.8333,"angle":5.37},{"time":0.9667,"angle":5.68},{"time":1.3333,"angle":-0.07},{"time":1.4,"angle":1.28},{"time":1.6333,"angle":4.18},{"time":1.8667,"angle":-4.85},{"time":1.9333,"angle":1.88},{"time":2.0333,"angle":34.7},{"time":2.6667,"angle":0.77},{"time":2.7667,"angle":29.95},{"time":2.8333,"angle":1.95},{"time":3,"angle":-10.36}],"translate":[{"time":0.1},{"time":0.3,"x":-14.48,"y":30.27},{"time":0.8333}]},"r upparm":{"rotate":[{"angle":-6.94,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":0.83},{"time":0.1,"angle":-12.63},{"time":0.1667,"angle":28.26},{"time":0.3,"angle":39.35},{"time":0.7667,"angle":-0.67},{"time":0.8333,"angle":53.95},{"time":0.9,"angle":28.66},{"time":0.9667,"angle":9.43},{"time":1.0667,"angle":-13.21},{"time":1.3333,"angle":-41.05},{"time":1.4,"angle":-64.3},{"time":1.5,"angle":-18.04},{"time":1.6333,"angle":2.94},{"time":1.8667,"angle":21.32},{"time":1.9333,"angle":31.47},{"time":2.0333,"angle":59.01},{"time":2.6667,"angle":7.47},{"time":2.7667,"angle":-19.11},{"time":2.8333,"angle":-5.56},{"time":3,"angle":4.52}],"translate":[{"time":0.1},{"time":0.1667,"x":57.8,"y":22.76},{"time":0.3,"x":31.87,"y":44.86},{"time":0.7667,"x":42.14,"y":-13.87},{"time":0.8333,"x":39.83,"y":-36.83},{"time":0.9,"x":18.62,"y":-33.41,"curve":"stepped"},{"time":1.5,"x":18.62,"y":-33.41},{"time":1.6333,"x":43.93,"y":-21.89},{"time":1.8667,"x":47.72,"y":15.61},{"time":2.6667,"x":7.84,"y":-7.41},{"time":3}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":16.11},{"time":0.1,"angle":-35.23},{"time":0.1667,"angle":82.25},{"time":0.3,"angle":116.74},{"time":0.7667,"angle":82.7},{"time":0.8333,"angle":82.18},{"time":0.8667,"angle":57.67},{"time":0.9667,"angle":-26.21},{"time":1.3333,"angle":-85.18},{"time":1.4,"angle":-78.37},{"time":1.5,"angle":-30.79},{"time":1.6333,"angle":-39.33,"curve":"stepped"},{"time":1.8667,"angle":-39.33},{"time":1.9333,"angle":-9.78},{"time":2.0333,"angle":-7.75},{"time":2.6667,"angle":-10.01},{"time":2.7667,"angle":4.29},{"time":2.8333,"angle":34.82},{"time":3,"angle":37.42}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":-150.81,"y":24.49},{"time":0.1,"x":-76.17,"y":120.73},{"time":0.1667,"x":131.02,"y":104.78},{"time":0.3,"x":518.03,"y":344.46},{"time":0.7667,"x":758.79,"y":560.74},{"time":0.8333,"x":77.5,"y":434.32},{"time":0.8667,"x":-262.6,"y":159.04},{"time":0.9,"x":-573.86,"y":162.62},{"time":0.9667,"x":-428.45,"y":161.24},{"time":1.3333,"x":-380.12,"y":197.16},{"time":1.4,"x":-110.57,"y":161.24},{"time":1.5,"x":-67.63,"y":142.65},{"time":1.6333,"x":-87.53,"y":32.25},{"time":1.8667,"x":-133.6,"y":-18.43},{"time":1.9333,"x":-152.03,"y":-32.25},{"time":2.0333,"x":-181.18,"y":85.36},{"time":2.1333,"x":-235.29,"y":123.69},{"time":2.6667,"x":-322.46,"y":196.08},{"time":2.7667,"x":-367.32,"y":-41.73},{"time":2.8333,"x":-362.56,"y":-83.63},{"time":3,"x":-359.32,"y":-106.64}],"scale":[{"x":0.95,"y":0.95}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-19.75},{"time":0.1,"angle":11.41},{"time":0.1667,"angle":40.75},{"time":0.3,"angle":111.94},{"time":0.7667,"angle":70.86},{"time":0.8333,"angle":81.86},{"time":0.9667,"angle":5.88},{"time":1.3333,"angle":-11.53},{"time":1.4,"angle":-24.45},{"time":1.5,"curve":"stepped"},{"time":1.8667},{"time":1.9333,"angle":5.49},{"time":2.0333,"angle":8.95},{"time":2.6667,"angle":-41.62},{"time":2.7667,"angle":-2.49},{"time":2.8333,"angle":-23.36},{"time":2.9333,"angle":-2.1},{"time":3}],"translate":[{"time":0.0333},{"time":0.1,"x":-32.08,"y":138.93},{"time":0.1667,"x":-24.98,"y":138.16},{"time":0.3,"x":-57.9,"y":74.7},{"time":0.7667,"x":-39.31,"y":141.16},{"time":2.0333},{"time":2.6667,"x":-41.56,"y":-12.73},{"time":2.7667,"x":-30.06,"y":148.44}],"scale":[{"time":0.3},{"time":0.7667,"x":1.275},{"time":0.8333,"curve":"stepped"},{"time":2.0333},{"time":2.6667,"x":1.827},{"time":2.7667}],"shear":[{"time":2.0333},{"time":2.6667,"x":-3.87,"y":28.69},{"time":2.7667}]},"r upparm3":{"rotate":[{"time":0.0333},{"time":0.1,"angle":-21.47},{"time":0.1667,"angle":-27.88},{"time":0.3,"angle":-33.47},{"time":0.7667,"angle":-5.69},{"time":0.8333,"angle":-57.95},{"time":0.9,"angle":-24.73},{"time":0.9667,"angle":-7.42},{"time":1.0667,"angle":28.95},{"time":1.3333,"angle":53.49},{"time":1.4,"angle":79.29},{"time":1.5,"angle":27.55},{"time":1.6333,"angle":0.33},{"time":1.8667,"angle":-23.2},{"time":1.9333,"angle":-32.54},{"time":2.0333,"angle":-58.89},{"time":2.6667,"angle":-1.39},{"time":2.7667,"angle":33.34},{"time":2.8333,"angle":19.02},{"time":3}],"translate":[{},{"time":0.1,"x":22.99,"y":-32.47},{"time":0.1667,"x":74.29,"y":2.56},{"time":0.3,"x":34.41,"y":49.49},{"time":0.7667,"x":69.3,"y":30.53},{"time":0.8333,"x":64.16,"y":28.43},{"time":0.9,"x":37.93,"y":34.06},{"time":0.9667,"x":49.12,"y":1.88},{"time":1.0667,"x":64.85,"y":-31.31},{"time":1.6333,"x":80.3,"y":9.26},{"time":1.8667,"x":91.3,"y":14.17},{"time":2.6667,"x":100.79,"y":-26.46}]},"l ik":{"rotate":[{"time":2.6667},{"time":2.7333,"angle":-34.2},{"time":2.8333,"angle":-127.38}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":4.61,"curve":"stepped"},{"time":0.1667,"x":4.61},{"time":0.2333,"x":172.76,"y":64.5},{"time":0.3,"x":165.85,"curve":"stepped"},{"time":0.7667,"x":165.85},{"time":0.8333,"x":-225.74,"y":69.11},{"time":0.9,"x":-400.81,"curve":"stepped"},{"time":1.3333,"x":-400.81},{"time":1.4,"x":9.21,"y":87.53},{"time":1.4667,"x":87.53,"y":96.75},{"time":1.5333,"x":105.96,"y":4.61,"curve":"stepped"},{"time":2.6667,"x":105.96,"y":4.61},{"time":2.7333,"x":-122.32,"y":40.88},{"time":2.8333,"x":-273.74,"y":20.43},{"time":3,"x":-264.7,"y":23.44}]},"r ik":{"rotate":[{"time":2.6667},{"time":2.7667,"angle":139.62},{"time":3,"angle":178.71}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8333,"x":4.61,"curve":"stepped"},{"time":0.9667,"x":4.61},{"time":1.0333,"x":-184.28,"y":42.93},{"time":1.1333,"x":-214.34,"curve":"stepped"},{"time":1.2667,"x":-214.34},{"time":1.3,"x":-9.32,"y":94.45},{"time":1.3667,"x":69.58,"curve":"stepped"},{"time":2.6667,"x":69.58},{"time":2.7667,"x":155.07,"y":0.5},{"time":3,"x":136.39,"y":-39.99}]},"l ik2":{"translate":[{"time":0.1667},{"time":0.2333,"x":28.91,"y":-23.32},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"x":2.98,"y":-12.68},{"time":0.9,"x":43.46,"y":0.19},{"time":1.3333,"x":15.3,"y":77.22},{"time":1.4,"x":35.04,"y":42.45},{"time":1.4667,"x":27.23,"y":26.49},{"time":1.5333,"x":7.88,"y":58.56},{"time":1.6333,"x":22.2,"y":62.12},{"time":1.8667,"x":41.41,"y":-7.11},{"time":1.9333,"x":57.27,"y":-30.03},{"time":2.0333,"x":-26.86,"y":0.37},{"time":2.6667,"x":-131.88,"y":-108},{"time":2.7333,"x":68.19,"y":9.9},{"time":2.8333,"x":17.31,"y":6.26},{"time":3,"x":-3.16,"y":28.58}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":119.88,"y":-43.84},{"time":0.1,"x":56.38,"y":18.74},{"time":0.7667,"x":37.11,"y":12.33},{"time":0.8333,"x":102.75,"y":-72.41},{"time":0.9667,"x":145.32,"y":-93.43},{"time":1.0333,"x":56.33,"y":-22.09},{"time":1.1333,"x":16.21,"y":-23.93},{"time":1.2667,"x":14.63,"y":-21.59},{"time":1.3,"x":128.62,"y":-71.45},{"time":1.3667,"x":63.44},{"time":2.6667},{"time":2.7667,"x":89.2,"y":2.13},{"time":2.8333,"x":128.84,"y":-9.59},{"time":3,"x":135.19,"y":26.05}]},"l hand2":{"scale":[{"x":0,"y":0}]},"r upparm2":{"rotate":[{"angle":12.97,"curve":0.25,"c3":0.75},{"time":0.1,"angle":21.5},{"time":0.3,"angle":17.38},{"time":0.7667,"angle":28.93},{"time":0.8333,"angle":15.91},{"time":0.9,"angle":22.08},{"time":0.9667,"angle":47.05},{"time":1.0667,"angle":69.38},{"time":1.6333,"angle":55.09},{"time":1.8667,"angle":60.16},{"time":2.6667,"angle":34.95},{"time":3,"angle":52.06}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":-12.47,"y":-65.76},{"time":0.1667,"x":38.83,"y":-30.73},{"time":0.3,"x":38.26,"y":-28.45},{"time":0.7667,"x":59.51,"y":18.64},{"time":0.8333,"x":47.97,"y":10.09},{"time":0.9,"x":27.01,"y":20.96},{"time":0.9667,"x":48.86,"y":1.53},{"time":1.0667,"x":42.04,"y":-55.44},{"time":1.6333,"x":71.88,"y":-0.06},{"time":1.8667,"x":67.73,"y":-10.59},{"time":2.6667,"x":30.39,"y":-75.33}]},"lock":{"rotate":[{},{"time":0.7667,"angle":33.15},{"time":0.8333,"angle":12.05},{"time":0.9667,"angle":5.02},{"time":1.3333,"angle":-6.27},{"time":1.4,"angle":22.68},{"time":1.5,"angle":17.17},{"time":1.6333,"angle":-3.53},{"time":1.8667,"angle":6.47},{"time":1.9333,"angle":10.48},{"time":2.0333,"angle":15.89},{"time":2.6667,"angle":41.03},{"time":2.7667,"angle":23.73},{"time":2.8333,"angle":33.96},{"time":3,"angle":15.35}],"translate":[{"time":0.7667},{"time":0.8333,"x":28.21,"y":-55.96},{"time":0.9667,"x":66.08,"y":79.4},{"time":1.3333,"x":110.87,"y":113.37},{"time":1.4,"x":69.74,"y":83.77},{"time":1.5,"x":39.7,"y":39.04},{"time":1.8667,"x":13.03,"y":-41.58},{"time":1.9333,"x":12.89,"y":-68.2},{"time":2.0333,"x":-21.33,"y":-63.12},{"time":2.6667,"x":-22.19,"y":3.95},{"time":2.7667,"x":-74.3,"y":5.84},{"time":2.8333,"x":-153.69,"y":-31.86},{"time":3,"x":-131.13,"y":2.54}],"scale":[{"x":0,"y":0},{"time":0.7667,"x":2,"y":2},{"time":0.8333,"x":0.309,"y":0.309},{"time":0.9667,"x":0.508,"y":0.508},{"time":1.3333,"x":0.626,"y":0.572},{"time":1.4,"x":0.681,"y":0.917}]},"lock2":{"rotate":[{},{"time":1.3333,"angle":26.76,"curve":"stepped"},{"time":1.4,"angle":26.76},{"time":1.5,"angle":17.08},{"time":1.6333,"angle":-3.95},{"time":1.8667,"angle":-7.56},{"time":1.9333,"angle":2.43},{"time":2.0333,"angle":2.8},{"time":2.6667,"angle":40.34},{"time":2.7667,"angle":16.77},{"time":2.8333,"angle":11.01},{"time":3,"angle":-5.08}],"translate":[{},{"time":1.3333,"x":198.13,"y":193.19,"curve":"stepped"},{"time":1.4,"x":198.13,"y":193.19},{"time":1.5,"x":162.47,"y":108.28},{"time":1.6333,"x":207.63,"y":64.45},{"time":1.8667,"x":184.34,"y":3.51},{"time":1.9333,"x":169.05,"y":-31.92},{"time":2.0333,"x":112.27,"y":-31.4},{"time":2.6667,"x":145.34,"y":117.01},{"time":2.7667,"x":221.78,"y":144.78},{"time":2.8333,"x":167.65,"y":123},{"time":3,"x":197.32,"y":97.4}],"scale":[{"x":0,"y":0},{"time":1.3333,"x":-2,"y":2},{"time":1.4,"x":-0.671,"y":0.859},{"time":1.5,"x":-0.751,"y":0.917,"curve":"stepped"},{"time":2.7333,"x":-0.751,"y":0.917},{"time":2.7667,"x":-0.836,"y":0.917}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":-17.28},{"time":0.3,"angle":-24.69},{"time":0.7667,"angle":-24.78},{"time":0.8333,"angle":-24.51},{"time":0.9667},{"time":1.3333,"angle":-43.74},{"time":1.4,"angle":-65.84},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1},{"time":0.1667,"x":33.54,"y":-5.99},{"time":0.3,"x":40.27,"y":49.7},{"time":0.7667,"x":42.99,"y":4.1},{"time":0.8333}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":68.98},{"time":0.1,"angle":69.57},{"time":0.1667,"angle":80.32},{"time":0.3,"angle":60.85},{"time":0.7667,"angle":56.27},{"time":0.8333,"angle":42.87},{"time":0.9667,"angle":27.14},{"time":1.3333,"angle":49.52},{"time":1.4,"angle":39.01},{"time":1.6333,"angle":32.12},{"time":1.8667,"angle":4.56},{"time":1.9333,"angle":4.29},{"time":2.0333,"angle":23.86},{"time":2.6667,"angle":50.59},{"time":2.7667,"angle":26.41},{"time":2.8333,"angle":35.92},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":15.69,"y":-42.72},{"time":0.1,"x":29.26,"y":-74.82},{"time":0.1667,"x":-64.57,"y":-135.91},{"time":0.3,"x":-27.47,"y":-144.54},{"time":0.7667,"x":-7.52,"y":-129.4}]},"r finger d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":5.46},{"time":0.3,"angle":-10.65},{"time":0.7667,"angle":-8.36},{"time":0.8333,"curve":"stepped"},{"time":1.3333},{"time":1.4,"angle":-22.1},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1667},{"time":0.3,"x":69.31,"y":13.25},{"time":0.7667,"x":33.77,"y":-24.7},{"time":0.8333}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":-14.73},{"time":0.3,"angle":-22.7},{"time":0.7667,"angle":-20.59},{"time":0.8333,"angle":-34.81},{"time":0.9667},{"time":1.3333,"angle":-40.05},{"time":1.4,"angle":-62.15},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1},{"time":0.1667,"x":121.04,"y":-31.75},{"time":0.3,"x":86.34,"y":46.01},{"time":0.7667,"x":96.48,"y":35.54},{"time":0.8333,"x":59.11,"y":-15.72},{"time":0.9667}]},"l finger a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":-8.74},{"time":0.8333,"angle":13.91},{"time":0.9667,"angle":10.78},{"time":1.3333}]},"l finger a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":-0.62,"curve":"stepped"},{"time":0.8333,"angle":-0.62},{"time":0.9667,"angle":18.9},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":35.95,"y":34.16},{"time":0.7667,"x":-65.9,"y":-20.58},{"time":0.8333,"x":-18.98,"y":-25.1},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":-46.37,"curve":"stepped"},{"time":0.8333,"angle":-46.37},{"time":0.9667,"angle":-26.85},{"time":1.3333}]},"l finger b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":70.98,"curve":"stepped"},{"time":0.8333,"angle":70.98},{"time":0.9667,"angle":90.5},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":2.03,"y":49.54},{"time":0.7667,"x":37.04,"y":7.14},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l finger c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":50.22,"curve":"stepped"},{"time":0.8333,"angle":50.22},{"time":0.9667,"angle":69.74},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":-38.06,"y":31.78},{"time":0.7667,"x":37.53,"y":3.76},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":11.31,"curve":"stepped"},{"time":0.8333,"angle":11.31},{"time":0.9667,"angle":30.84},{"time":1.3333}]},"l finger d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":37.45,"curve":"stepped"},{"time":0.8333,"angle":37.45},{"time":0.9667,"angle":56.97},{"time":1.3333}]},"l finger d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":62.3,"curve":"stepped"},{"time":0.8333,"angle":62.3},{"time":0.9667,"angle":81.83},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":-49.55,"y":-1.88},{"time":0.7667,"x":35.07,"y":13.9},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-24.25},{"time":0.1,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":18.79},{"time":0.9667},{"time":1.3333,"angle":-7.62},{"time":1.4,"curve":"stepped"},{"time":2.8333},{"time":3,"angle":-20.01}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":15},{"time":0.1,"angle":-9.71},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":15.73},{"time":0.9667,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":13.37},{"time":1.9333,"angle":27.39},{"time":2.0333,"angle":-1.64},{"time":2.6667,"angle":-11.25},{"time":2.7667,"angle":-25.72},{"time":2.8333,"angle":3.52},{"time":3}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-40.42},{"time":0.1,"angle":-80.2},{"time":0.3,"curve":"stepped"},{"time":1.8667},{"time":1.9333,"angle":-24.44},{"time":2.0333,"angle":-77.3},{"time":2.6667,"angle":-13.9},{"time":2.7667}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.3},{"time":0.7667,"angle":-64.49},{"time":0.8333,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":-18.41},{"time":1.9333,"angle":-37.26},{"time":2.0333,"angle":-67.74},{"time":2.6667,"angle":-58.8},{"time":2.7667,"angle":-57.84},{"time":2.8333}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-23.31},{"time":0.1,"angle":24.59},{"time":0.3},{"time":0.7667,"angle":13.06},{"time":0.8333,"angle":-1.7},{"time":0.9667},{"time":1.3333,"angle":33.27},{"time":1.4,"angle":6.41},{"time":1.6333},{"time":1.8667,"angle":-30.46},{"time":1.9333,"angle":-27.92},{"time":2.0333,"angle":15.55},{"time":2.6667,"angle":40.74},{"time":2.7667},{"time":2.8333,"angle":1.33},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-13.9,"y":32.14},{"time":0.3,"x":15.52,"y":-53.53},{"time":0.7667,"x":96.22,"y":-50.78},{"time":0.8333,"x":1.97,"y":-11.66},{"time":0.9667,"x":-19.97,"y":-17.52},{"time":1.3333,"x":-94.05,"y":113.18},{"time":1.4,"x":-103.02,"y":53.64},{"time":1.6333,"x":-4.96,"y":-0.23},{"time":1.9333,"x":-3.87,"y":-0.18},{"time":2.0333,"x":-67.59,"y":20.05},{"time":2.6667,"x":27.34,"y":-49.83},{"time":3}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333},{"time":0.1,"angle":35.69},{"time":0.3},{"time":0.7667,"angle":54.04},{"time":0.8333,"angle":-32.08},{"time":0.9667},{"time":1.3333,"angle":12.43},{"time":1.4,"angle":48.89},{"time":1.6333},{"time":1.8667,"angle":-5.58},{"time":1.9333,"angle":-34.21},{"time":2.0333,"angle":-9.74},{"time":2.6667,"angle":34.81},{"time":2.7667,"angle":44.18},{"time":2.8333,"angle":13.05},{"time":3}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-13.21},{"time":0.1,"angle":23.14},{"time":0.3,"angle":29.25},{"time":0.5,"angle":2.77},{"time":0.7667,"angle":-24.22},{"time":0.8333,"angle":-16.63},{"time":0.9667,"angle":21.53},{"time":1.3333,"angle":-7.86},{"time":1.4,"angle":39.09},{"time":1.6333,"angle":-12.88},{"time":1.8667,"angle":-1.91},{"time":1.9333,"angle":29.51},{"time":2.0333},{"time":2.6667,"angle":22.49},{"time":2.7667,"angle":26.71},{"time":2.8333,"angle":13.79},{"time":3,"angle":28.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":0.806,"curve":"stepped"},{"time":2.6667,"x":0.806},{"time":2.7667,"x":0.717}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0333,"x":10.51,"y":15.78},{"time":0.3,"x":-12.05,"y":-4.86},{"time":0.7667,"x":12.01,"y":5.63},{"time":0.8333,"x":25.98,"y":17.69},{"time":0.9667,"x":0.44,"y":17.69},{"time":1.3333,"x":4.31,"y":17.69},{"time":1.4,"x":30.99,"y":17.69},{"time":1.6333,"x":35.32,"y":31.2},{"time":1.8667,"x":23.94,"y":31.2,"curve":"stepped"},{"time":2.6667,"x":23.94,"y":31.2},{"time":2.7667,"x":23.94,"y":38.29},{"time":2.8333,"x":23.94,"y":23.92}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":26.87},{"time":0.1,"angle":-15.74},{"time":0.3,"angle":-27.27},{"time":0.5,"angle":25.21},{"time":0.7667,"angle":4.19},{"time":0.8333,"angle":24.92},{"time":0.9667,"angle":-26.3},{"time":1.1333,"angle":15.5},{"time":1.3333,"angle":5.56},{"time":1.4,"angle":-25.66},{"time":1.5,"angle":22.59},{"time":1.6333,"angle":19.98},{"time":1.8667,"angle":-10.7},{"time":1.9333,"angle":-6.66},{"time":2.0333,"angle":22.3},{"time":2.6667,"angle":-10.86},{"time":2.7667,"angle":24.66},{"time":2.8333,"angle":49.32},{"time":3,"angle":2.02}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":22.62},{"time":0.1,"angle":17.78},{"time":0.3,"angle":-27.7},{"time":0.7667,"angle":36.62},{"time":0.8333,"angle":35.15},{"time":0.9,"angle":-18.39},{"time":0.9667,"angle":-16.39},{"time":1.3333,"angle":13.16},{"time":1.4,"angle":-30.81},{"time":1.6333,"angle":30.96},{"time":1.8667,"angle":-9.54},{"time":1.9333,"angle":-31.08},{"time":2.0333,"angle":-16.04},{"time":2.2667,"angle":18.83},{"time":2.6667,"angle":-25.39},{"time":2.7667,"angle":44.23},{"time":2.8333,"angle":11.22},{"time":3,"angle":19.6}]},"hair t":{"rotate":[{"time":0.1},{"time":0.3,"angle":-19.21},{"time":0.7667,"angle":-5.78},{"time":0.8333},{"time":0.9667,"angle":-9.38},{"time":1.3333,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":10.8},{"time":1.9333},{"time":2.0333,"angle":-9.13},{"time":2.6667},{"time":2.7667,"angle":-13.97},{"time":2.8333}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":7.3},{"time":0.1,"angle":3.64},{"time":0.3,"angle":1.74},{"time":0.7667,"angle":-1.69},{"time":0.8333},{"time":0.9667,"angle":-9.58},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":-5.18},{"time":1.8667,"angle":-4.5},{"time":1.9333},{"time":2.0333,"angle":2.63},{"time":2.6667},{"time":2.7667,"angle":-8.41},{"time":2.8333,"angle":-9.13},{"time":3,"angle":-1.65}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-6.72},{"time":0.1,"angle":14.11},{"time":0.3,"angle":14.45},{"time":0.7667,"angle":25.58},{"time":0.8333,"angle":30.7},{"time":0.9667,"angle":25.88},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":20.83},{"time":1.8667,"angle":15.95},{"time":1.9333,"angle":19.25},{"time":2.0333,"angle":23.38},{"time":2.6667,"angle":22.61},{"time":2.7667,"angle":-34.4},{"time":2.8333,"angle":24.51},{"time":3,"angle":23.31}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":-21.29},{"time":0.1,"angle":-19.11},{"time":0.3,"angle":14.45},{"time":0.7667,"angle":19.91},{"time":0.8333,"angle":30.7},{"time":0.9667,"angle":28.91},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":-39.75},{"time":1.8667,"angle":24.75},{"time":1.9333,"angle":24.59},{"time":2.0333,"angle":23.38},{"time":2.6667,"angle":22.61},{"time":2.7667,"angle":-34.4},{"time":2.8333,"angle":-23.73},{"time":3,"angle":19.69}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":93.37},{"time":0.1,"angle":14.11},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":49.55},{"time":0.9667}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":-2.26,"y":14.51}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":1.49,"y":10.12}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-9.24},{"time":0.1,"angle":42.73},{"time":0.3,"angle":25.78},{"time":0.5,"angle":80.97},{"time":0.7667,"angle":34.03},{"time":0.8333,"angle":-16.62},{"time":0.9667,"angle":-10.38},{"time":1.1,"angle":49.94},{"time":1.3333,"angle":39.12},{"time":1.4,"angle":-36.84},{"time":1.6333,"angle":90.97},{"time":1.8667,"angle":-36.46},{"time":1.9333,"angle":52.21},{"time":2.0333,"angle":79.24},{"time":2.2,"angle":30.05},{"time":2.6667,"angle":-28.63},{"time":2.7667,"angle":-4.12},{"time":2.8333,"angle":30.39},{"time":3,"angle":37.87}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"angle":19.46},{"time":0.1},{"time":0.3,"angle":-23.17},{"time":0.7667},{"time":0.8333,"angle":5.71},{"time":0.9667,"angle":16.32},{"time":1.3333},{"time":1.4,"angle":-21.2},{"time":1.6333},{"time":1.8667,"angle":33.35},{"time":1.9333,"angle":7.55},{"time":2.0333},{"time":2.6667,"angle":-21.03},{"time":2.7667,"angle":-16.96},{"time":2.8333,"angle":18.8},{"time":3,"angle":33.05}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-41.2},{"time":0.1,"angle":-50.03},{"time":0.3,"angle":5.43},{"time":0.7667,"angle":25.23},{"time":0.8333,"angle":-40.92},{"time":0.9667,"angle":-25.65},{"time":1.3333,"angle":29.67},{"time":1.4,"angle":22.01},{"time":1.6333,"angle":-37.44},{"time":1.8667,"angle":-14.65},{"time":1.9333,"angle":33.09},{"time":2.0333},{"time":2.6667,"angle":-24.86},{"time":2.7667,"angle":-37.16},{"time":2.8333,"angle":-10.32},{"time":3}]},"r ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.46},{"time":0.1},{"time":0.3,"angle":-23.17},{"time":0.7667},{"time":0.8333,"angle":5.71},{"time":0.9667,"angle":16.32},{"time":1.3333},{"time":1.4,"angle":-21.2},{"time":1.6333},{"time":1.8667,"angle":33.35},{"time":1.9333,"angle":7.55},{"time":2.0333},{"time":2.6667,"angle":-21.03},{"time":2.7667,"angle":-16.96},{"time":2.8333,"angle":18.8},{"time":3,"angle":33.05}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-41.2},{"time":0.1,"angle":-50.03},{"time":0.3,"angle":5.43},{"time":0.7667,"angle":25.23},{"time":0.8333,"angle":-40.92},{"time":0.9667,"angle":-25.65},{"time":1.3333,"angle":29.67},{"time":1.4,"angle":22.01},{"time":1.6333,"angle":-37.44},{"time":1.8667,"angle":-14.65},{"time":1.9333,"angle":33.09},{"time":2.0333},{"time":2.6667,"angle":-24.86},{"time":2.7667,"angle":-37.16},{"time":2.8333,"angle":-10.32},{"time":3}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-12.54},{"time":0.1,"angle":14.62},{"time":0.3,"angle":-35.54},{"time":0.7667,"angle":-32.14},{"time":0.8333,"angle":-7.04},{"time":0.9667,"angle":-11.61},{"time":1.3333},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-20.77},{"time":1.8667}],"scale":[{"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-21.33},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":0.78},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-5.05},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":3.48},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-25.81},{"time":3,"angle":6.58}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-6.15},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":-20.92},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-23.18},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-35.63},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-32.65},{"time":3,"angle":6.58}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-12.54},{"time":0.1,"angle":7},{"time":0.3,"angle":-35.54},{"time":0.7667,"angle":-21.7},{"time":0.8333,"angle":-7.04},{"time":0.9667,"angle":-11.61},{"time":1.3333},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-27.21},{"time":1.8667}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-21.33},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":18.51},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-5.05},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":3.48},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-25.81},{"time":3,"angle":6.58}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-6.15},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":-20.92},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-23.18},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-35.63},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-32.65},{"time":3,"angle":6.58}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.0333}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.0333}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"hair t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"r finger b2":{"rotate":[{"angle":-8.92}]},"r finger c2":{"rotate":[{"angle":-9.49}]},"r finger d2":{"rotate":[{"angle":7.12}]},"l upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":3,"angle":-22.92}]},"l armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":3,"angle":-6.9}]},"r arm":{"rotate":[{"angle":-8.2,"curve":0.25,"c3":0.75},{"time":3,"angle":-84.98}]},"head2":{"rotate":[{"time":1.9333},{"time":2.0333,"angle":-15.66},{"time":2.6667},{"time":2.8333,"angle":0.67},{"time":3}],"scale":[{"time":1.9333},{"time":2.0333,"x":0.704,"curve":"stepped"},{"time":2.6667,"x":0.704},{"time":2.8333,"x":0.962}]},"r ear s":{"rotate":[{"angle":-5.67}]},"r ear ring b":{"rotate":[{"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"l leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":12.22}]},"l leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":-42.07}]},"l leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":-112.01}]},"r leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":2.27}]},"r finger a2":{"rotate":[{"angle":14.41}]},"r leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":78.83}]},"r leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":37.17}]},"r ear s2":{"rotate":[{"angle":-7.49}]},"headmouth":{"rotate":[{"time":1.9333},{"time":2.0333,"angle":-15.66},{"time":2.6667},{"time":2.8333,"angle":0.67},{"time":3}],"scale":[{"time":1.9333},{"time":2.0333,"x":0.704,"curve":"stepped"},{"time":2.6667,"x":0.704},{"time":2.8333,"x":0.962}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{},{"time":0.0333,"x":-52.19},{"time":0.1},{"time":0.3,"x":115.98},{"time":0.7667,"x":266.75},{"time":0.8333},{"time":0.9667,"x":-237.76},{"time":1.3333,"x":-231.96},{"time":1.4,"curve":"stepped"},{"time":2.6667},{"time":2.7667,"x":-92.78}],"scale":[{"time":0.1},{"time":0.3,"y":1.232},{"time":0.7667,"y":1.58},{"time":0.8333},{"time":0.9667,"y":0.536},{"time":1.3333,"y":0.652},{"time":1.4}]}},"ik":{"rhand":[{"time":0.9,"softness":50,"curve":"stepped"},{"time":0.9333,"softness":50,"bendPositive":false}]},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.3,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-1.11292,2.46487,-2.62152,0.66437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.33542,-2.81793,7.39606,4.76642,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-86.42184,144.60709,-71.70786,96.86353,-73.50958,69.51074,-91.13928,50.4678,-105.95621,34.46371,18.44489,3.86809,8.46115,16.83865,-41.97913,-134.35272,-41.19659,-133.54768,78.82657,-115.40646,20.23096,-3.54591,15.37378,13.61917,-54.43726,-135.24458,71.90833,-126.82217,43.03165,-13.14539,37.08572,25.47952,-33.96228,47.75824,2.03949,1.65744,-0.02682,2.62775,10.05231,-0.81355,6.89728,7.35754,-6.62946,-43.74097,-34.93259,82.7384,-5.02664,-34.56741,23.91364,-25.46234,-11.69156,-43.56143,26.79962,-36.27829,149.85062,40.57056,61.5874,142.5073,2.47775,2.49991,35.65607,-52.29532,-51.13794,-2.1225,-26.75546,-146.7348,98.13779,-112.32092,8.5022,1.38368,4.2128,7.51306,-1.06296,-4.55374,2.90103,-3.66769,-17.72357,-119.58167,82.51889,-88.34344,100.19598,79.14415,0.48279,127.68155,0,0,0,0,-28.97784,35.3174,-45.68018,-0.67749,-2.30304,-8.52882,5.23767,-7.11429,4.44827,-1.50385,3.94696,2.54361]},{"time":0.8333,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-1.11292,2.46487,-2.62152,0.66437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.33542,-2.81793,7.39606,4.76642,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-86.42184,144.60709,-71.70786,96.86353,-73.50958,69.51074,-91.13928,50.4678,-105.95621,34.46371,18.44489,3.86809,8.46115,16.83865,-3.9183,-113.68477,-1.60358,-84.10944,54.73862,-66.66803,20.23096,-3.54591,15.37378,13.61917,-10.85379,-103.38661,64.05984,-85.91092,43.03165,-13.14539,37.08572,25.47952,-33.96228,47.75824,2.03949,1.65744,-0.02682,2.62775,10.05231,-0.81355,6.89728,7.35754,3.82114,-40.98517,-34.93259,82.7384,-0.50278,-26.98291,18.32074,-20.40405,2.55304,-37.71628,27.71506,-25.87012,149.85062,40.57056,61.5874,142.5073,0.24445,9.84131,34.5827,-37.72894,-61.27515,10.12372,1.24237,-105.39186,73.16168,-77.69614,8.5022,1.38368,4.2128,7.51306,0.39243,-4.21655,3.13745,-2.84338,9.74438,-104.49744,77.75705,-70.48712,100.19598,79.14415,0.48279,127.68155,0,0,0,0,-27.42624,39.75204,-48.89328,2.37924,0.71335,-7.65024,5.69312,-5.15967,4.44827,-1.50385,3.94696,2.54361]},{"time":0.9667,"curve":"stepped"},{"time":1.9333,"curve":0.25,"c3":0.75},{"time":2.6667,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-1.11292,2.46487,-2.62152,0.66437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.33542,-2.81793,7.39606,4.76642,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-86.42184,144.60709,-71.70786,96.86353,-73.50958,69.51074,-91.13928,50.4678,-105.95621,34.46371,18.44489,3.86809,8.46115,16.83865,-13.66269,-9.18733,-11.34796,20.388,-23.01843,3.81909,20.23096,-3.54591,15.37378,13.61917,-20.59818,1.11082,-13.6972,-15.4238,43.03165,-13.14539,37.08572,25.47952,-33.96228,47.75824,2.03949,1.65744,-0.02682,2.62775,10.05231,-0.81355,6.89728,7.35754,0,0,-34.93259,82.7384,-2.89908,-1.27499,-0.80798,-3.06244,-0.72122,-2.60077,1.58545,-2.18445,149.85062,40.57056,61.5874,142.5073,-11.21695,20.23029,3.77939,-9.80554,-80.78256,27.80896,-8.50201,-0.89442,-4.59537,-7.20901,8.5022,1.38368,4.2128,7.51306,0,0,0,0,0,0,0,0,100.19598,79.14415,0.48279,127.68155,0,0,0,0,-28.11429,47.13446,-54.38657,7.35934,0,0,0,0,4.44827,-1.50385,3.94696,2.54361]},{"time":2.7667,"offset":90,"vertices":[34.13654,-127.86366,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13.38882,-50.14972,0,0,8.39827,-31.45702,1.12668,-32.53924,11.47104,-42.96606,1.53851,-44.44423,0,0,0,0,0.67459,-19.49482,1.814,-52.39503,1.14877,-33.18303,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,1.37723,-5.15866,0.18454,-5.33613,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,0,0,0,0,2.41159,-9.0331,0.32309,-9.34386,2.49876,-9.35932,0.33484,-9.68131]}]}}},"drawOrder":[{"offsets":[{"slot":"r beard2","offset":3}]}]},"dizzy":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00002"},{"time":0.1,"name":"eyefire/eyefire_00003"},{"time":0.1333,"name":"eyefire/eyefire_00004"},{"time":0.1667,"name":"eyefire/eyefire_00005"},{"time":0.2,"name":"eyefire/eyefire_00006"},{"time":0.2333,"name":"eyefire/eyefire_00007"},{"time":0.2667,"name":"eyefire/eyefire_00008"},{"time":0.3,"name":"eyefire/eyefire_00009"},{"time":0.3333,"name":"eyefire/eyefire_00010"},{"time":0.3667,"name":"eyefire/eyefire_00011"},{"time":0.4,"name":"eyefire/eyefire_00012"},{"time":0.4333,"name":"eyefire/eyefire_00013"},{"time":0.4667,"name":"eyefire/eyefire_00014"},{"time":0.5,"name":"eyefire/eyefire_00015"},{"time":0.5333,"name":"eyefire/eyefire_00016"},{"time":0.5667,"name":"eyefire/eyefire_00017"},{"time":0.6,"name":"eyefire/eyefire_00018"},{"time":0.6333,"name":"eyefire/eyefire_00019"},{"time":0.6667,"name":"eyefire/eyefire_00020"},{"time":0.7,"name":"eyefire/eyefire_00021"},{"time":0.7333,"name":"eyefire/eyefire_00022"},{"time":0.7667,"name":"eyefire/eyefire_00023"},{"time":0.8,"name":"eyefire/eyefire_00024"},{"time":0.8333,"name":"eyefire/eyefire_00025"},{"time":0.8667,"name":"eyefire/eyefire_00026"},{"time":0.9,"name":"eyefire/eyefire_00027"},{"time":0.9333,"name":"eyefire/eyefire_00028"},{"time":0.9667,"name":"eyefire/eyefire_00029"},{"time":1,"name":"eyefire/eyefire_00030"},{"time":1.0333,"name":"eyefire/eyefire_00031"},{"time":1.0667,"name":"eyefire/eyefire_00032"},{"time":1.1,"name":"eyefire/eyefire_00033"},{"time":1.1333,"name":"eyefire/eyefire_00034"},{"time":1.1667,"name":"eyefire/eyefire_00035"},{"time":1.2,"name":"eyefire/eyefire_00036"},{"time":1.2333,"name":"eyefire/eyefire_00037"},{"time":1.2667,"name":"eyefire/eyefire_00000"},{"time":1.3,"name":"eyefire/eyefire_00001"},{"time":1.3333,"name":"eyefire/eyefire_00002"},{"time":1.3667,"name":"eyefire/eyefire_00003"},{"time":1.4,"name":"eyefire/eyefire_00004"},{"time":1.4333,"name":"eyefire/eyefire_00005"},{"time":1.4667,"name":"eyefire/eyefire_00006"},{"time":1.5,"name":"eyefire/eyefire_00007"},{"time":1.5333,"name":"eyefire/eyefire_00008"},{"time":1.5667,"name":"eyefire/eyefire_00009"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"body":{"rotate":[{"angle":0.6,"curve":0.25,"c3":0.75},{"time":0.8,"angle":17.85,"curve":0.25,"c3":0.75},{"time":1.6,"angle":0.6}],"translate":[{"x":-103.58,"y":-38.84,"curve":0.25,"c3":0.75},{"time":0.8,"x":-170.24,"y":-75.87,"curve":0.25,"c3":0.75},{"time":1.6,"x":-103.58,"y":-38.84}],"scale":[{"x":0.98,"y":0.98,"curve":0.25,"c3":0.75},{"time":0.8,"x":1.02,"y":1.02,"curve":0.25,"c3":0.75},{"time":1.6,"x":0.98,"y":0.98}]},"body2":{"rotate":[{"angle":-39.45,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-46.98,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-31.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-39.45}]},"r upparm":{"rotate":[{"angle":33.1,"curve":0.25,"c3":0.75},{"time":0.8,"angle":15.15,"curve":0.25,"c3":0.75},{"time":1.6,"angle":33.1}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":40.04,"y":-36.24,"curve":0.25,"c3":0.75},{"time":1.6}]},"lhand":{"rotate":[{"angle":143.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":139.77,"curve":0.25,"c3":0.75},{"time":1.2,"angle":147.52,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":143.65}],"translate":[{"x":121.33,"y":183.16,"curve":0.25,"c3":0.75},{"time":0.8,"x":8.16,"y":258.79,"curve":0.25,"c3":0.75},{"time":1.6,"x":121.33,"y":183.16}],"scale":[{"y":-1}],"shear":[{"x":18.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":15.59,"curve":0.25,"c3":0.75},{"time":1.2,"x":21.46,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":18.53}]},"head":{"rotate":[{"angle":8.82,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-13.83,"curve":0.25,"c3":0.75},{"time":1.6,"angle":8.82}]},"l upparm":{"rotate":[{"angle":50.38,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.55,"curve":0.25,"c3":0.75},{"time":1.6,"angle":50.38}],"translate":[{"x":-44.25,"y":75.09,"curve":0.25,"c3":0.75},{"time":0.8,"x":0.93,"y":104.69,"curve":0.25,"c3":0.75},{"time":1.6,"x":-44.25,"y":75.09}]},"l upparm2":{"rotate":[{"angle":88.28}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":-7.17,"y":-14.44,"curve":0.25,"c3":0.75},{"time":1.6}]},"l armour":{"rotate":[{"angle":52.64}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":1.348,"curve":0.25,"c3":0.75},{"time":1.6}]},"l ik2":{"translate":[{"x":-2.35,"y":-18.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"x":-4.71,"y":-36.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":-2.35,"y":-18.34}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":68.21,"y":-32.84,"curve":0.25,"c3":0.75},{"time":1.6}]},"r upparm3":{"rotate":[{"angle":-25.15,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-25.55,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-24.75,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-25.15}]},"rhand":{"rotate":[{"angle":-9.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-0.24,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-19.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-9.78}],"translate":[{"x":55.95,"y":-181.34,"curve":0.25,"c3":0.75},{"time":0.8,"x":-39.14,"y":-223.6,"curve":0.25,"c3":0.75},{"time":1.6,"x":55.95,"y":-181.34}]},"r hand":{"translate":[{"x":4.87,"y":-2.59,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":14.89,"y":-7.36,"curve":0.25,"c3":0.75},{"time":1.2,"x":-5.15,"y":2.18,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":4.87,"y":-2.59}]},"l hand2":{"translate":[{"x":4.87,"y":-2.59,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":14.89,"y":-7.36,"curve":0.25,"c3":0.75},{"time":1.2,"x":-5.15,"y":2.18,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":4.87,"y":-2.59}],"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"skirt f":{"rotate":[{"angle":-1.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":6.96,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-9.65,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-1.34}],"scale":[{"x":0.829,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":0.658,"curve":0.25,"c3":0.75},{"time":1.2,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":0.829}],"shear":[{"y":7.76,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"y":15.51,"curve":0.25,"c3":0.75},{"time":1.2,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"y":7.76}]},"skirt f2":{"rotate":[{"angle":-9.65,"curve":0.25,"c3":0.75},{"time":0.8,"angle":14.51,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.2,"angle":2.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.6,"angle":-9.65}]},"skirt f3":{"rotate":[{"angle":2.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-9.65,"curve":0.25,"c3":0.75},{"time":1.2,"angle":14.51,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":2.43}]},"l leg5":{"rotate":[{"angle":4.23,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":26.02,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-17.56,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.23}]},"r leg5":{"rotate":[{"angle":4.23,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":26.02,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-17.56,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.23}]},"headmouth":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.5333,"angle":-7.39,"curve":0.25,"c3":0.75},{"time":1.6}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.5333,"x":-5.29,"y":14.89,"curve":0.25,"c3":0.75},{"time":1.6}]},"head2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":-1.24,"curve":0.25,"c3":0.75},{"time":1.6}]},"r finger a":{"rotate":[{"angle":2.63,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":11.35,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":2.63}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r finger c":{"rotate":[{"angle":-1.34,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":-5.78,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":-1.34}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r finger d":{"rotate":[{"angle":2.14,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":9.22,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":2.14}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r finger b":{"rotate":[{"angle":-2.11,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":-9.1,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":-2.11}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r beard":{"rotate":[{"angle":11.44,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1,"angle":-8.1,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":11.44}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":0.78,"curve":0.25,"c3":0.75},{"time":1.6}]},"r beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.88}]},"r beard3":{"rotate":[{"angle":-3.68,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.1,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-3.68}]},"l bear":{"rotate":[{"angle":11.44,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1,"angle":-8.1,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":11.44}],"scale":[{"x":0.744,"curve":0.25,"c3":0.75},{"time":0.7667,"curve":0.25,"c3":0.75},{"time":1.6,"x":0.744}]},"l bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.88}]},"l beard3":{"rotate":[{"angle":-3.68,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.1,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-3.68}]},"l finger d":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":10.96,"curve":0.25,"c3":0.75},{"time":1.6}]},"l finger c":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":-0.02,"curve":0.25,"c3":0.75},{"time":1.6}]},"l finger b":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":2.72,"curve":0.25,"c3":0.75},{"time":1.6}]},"l finger a":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":-38.23,"curve":0.25,"c3":0.75},{"time":1.6}]},"l finger d2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l finger c2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l finger b2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l finger a2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.8,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":-8.22}]},"hair t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.6}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":0.61}]},"hair t3":{"rotate":[{"angle":24.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":18.48,"curve":0.25,"c3":0.75},{"time":1.2,"angle":30.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":24.7}]},"hair t4":{"rotate":[{"angle":21.75,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":3.93,"curve":0.25,"c3":0.75},{"time":1.4,"angle":25.78,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":21.75}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"angle":63.33}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":26.63}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"x":-2.26,"y":14.51}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":9.54}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.2,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.6}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.6,"angle":8.76}]},"r ear ringb s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.2,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.2,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":5.7,"y":-8.17}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.8,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.6,"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.2,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.2,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":40.99}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.2,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-8.22}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":-46.39,"curve":0.25,"c3":0.75},{"time":1.6}]},"r leg3":{"rotate":[{"angle":-61.17}]},"r leg2":{"rotate":[{"angle":52}]},"r leg":{"rotate":[{"angle":8.57}]},"l leg3":{"rotate":[{"angle":-27.36}]},"l leg2":{"rotate":[{"angle":19.09}]},"l leg":{"rotate":[{"angle":15.47}]},"r arm":{"rotate":[{"angle":-49.77}]},"r upparm2":{"rotate":[{"angle":26.73}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.8,"offset":36,"vertices":[-1.33797,7.81604,-5.90574,5.2917,6.33594,0.28658,4.78575,4.16223,11.55866,17.07976,-1.55895,20.56429,29.86721,11.68993,16.13397,27.72059,24.26713,30.27791,0.19429,38.80218,-0.48879,10.80822,-7.1001,8.1636,3.17479,16.88126,-8.00425,15.19824,1.25424,15.80983,-8.84296,13.16528,-2.85379,19.56236,-14.39343,13.55197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-11.877,-17.74498,1.72377,-21.28316,-18.11217,-35.82497,-1.48508,-27.23736,15.76438,-22.26129,8.43136,-21.825,20.16967,-11.85804,-0.1679,-16.30974,10.00489,-12.88177,0.20083,-4.4402,2.91694,-3.35373,4.57208,-8.01418,-3.4199,-44.53263,24.99755,-37.01321,-6.20858,-22.9226,9.38237,-21.81659,-1.48507,-27.23736,0,0,-2.4751,-45.39566,26.27411,-37.10221,-4.85504,-32.8238,16.59641,-28.73217,-1.24924,5.85095,-4.61498,3.80738,8.04572,-13.38659,16.68522,-27.45588,0,0,0,0,0,0,-2.38898,-27.27825,15.08163,-22.85509,-1.35797,-10.02383,5.16594,-8.69684,1.14474,-25.30709,16.62506,-19.11462,0,0,0,0,-11.13212,5.83612,-12.34814,-2.3464,0,0,0,0,0,0,0,0,2.15036,6.44641,-2.32169,6.38667],"curve":0.25,"c3":0.75},{"time":1.6}]}}},"drawOrder":[{"offsets":[{"slot":"r beard2","offset":3}]}]},"enter":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00009"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00013"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00016"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00020"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00023"},{"time":0.5667,"name":"eyefire/eyefire_00024"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00027"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00030"},{"time":0.7333,"name":"eyefire/eyefire_00031"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00034"},{"time":0.8333,"name":"eyefire/eyefire_00035"},{"time":0.8667,"name":"eyefire/eyefire_00010"},{"time":0.9,"name":"eyefire/eyefire_00001"},{"time":0.9333,"name":"eyefire/eyefire_00002"},{"time":0.9667,"name":"eyefire/eyefire_00004"},{"time":1,"name":"eyefire/eyefire_00005"},{"time":1.0333,"name":"eyefire/eyefire_00007"},{"time":1.0667,"name":"eyefire/eyefire_00008"},{"time":1.1,"name":"eyefire/eyefire_00009"},{"time":1.1333,"name":"eyefire/eyefire_00011"},{"time":1.1667,"name":"eyefire/eyefire_00012"},{"time":1.2,"name":"eyefire/eyefire_00014"},{"time":1.2333,"name":"eyefire/eyefire_00015"},{"time":1.2667,"name":"eyefire/eyefire_00016"},{"time":1.3,"name":"eyefire/eyefire_00018"},{"time":1.3333,"name":"eyefire/eyefire_00019"},{"time":1.3667,"name":"eyefire/eyefire_00021"},{"time":1.4,"name":"eyefire/eyefire_00022"},{"time":1.4333,"name":"eyefire/eyefire_00023"},{"time":1.4667,"name":"eyefire/eyefire_00025"},{"time":1.5,"name":"eyefire/eyefire_00026"},{"time":1.5333,"name":"eyefire/eyefire_00028"},{"time":1.5667,"name":"eyefire/eyefire_00029"},{"time":1.6,"name":"eyefire/eyefire_00030"},{"time":1.6333,"name":"eyefire/eyefire_00032"},{"time":1.6667,"name":"eyefire/eyefire_00033"},{"time":1.7,"name":"eyefire/eyefire_00035"},{"time":1.7333,"name":"eyefire/eyefire_00036"},{"time":1.7667,"name":"eyefire/eyefire_00010"},{"time":1.8,"name":"eyefire/eyefire_00001"},{"time":1.8333,"name":"eyefire/eyefire_00002"},{"time":1.8667,"name":"eyefire/eyefire_00003"},{"time":1.9,"name":"eyefire/eyefire_00004"},{"time":1.9333,"name":"eyefire/eyefire_00005"},{"time":1.9667,"name":"eyefire/eyefire_00006"},{"time":2,"name":"eyefire/eyefire_00007"},{"time":2.0333,"name":"eyefire/eyefire_00008"},{"time":2.0667,"name":"eyefire/eyefire_00009"},{"time":2.1,"name":"eyefire/eyefire_00010"},{"time":2.1333,"name":"eyefire/eyefire_00011"},{"time":2.1667,"name":"eyefire/eyefire_00012"},{"time":2.2,"name":"eyefire/eyefire_00013"},{"time":2.2333,"name":"eyefire/eyefire_00014"},{"time":2.2667,"name":"eyefire/eyefire_00015"},{"time":2.3,"name":"eyefire/eyefire_00016"},{"time":2.3333,"name":"eyefire/eyefire_00017"},{"time":2.3667,"name":"eyefire/eyefire_00018"},{"time":2.4,"name":"eyefire/eyefire_00019"},{"time":2.4333,"name":"eyefire/eyefire_00020"},{"time":2.4667,"name":"eyefire/eyefire_00021"},{"time":2.5,"name":"eyefire/eyefire_00022"},{"time":2.5333,"name":"eyefire/eyefire_00023"},{"time":2.5667,"name":"eyefire/eyefire_00024"},{"time":2.6,"name":"eyefire/eyefire_00025"},{"time":2.6333,"name":"eyefire/eyefire_00026"},{"time":2.6667,"name":"eyefire/eyefire_00027"},{"time":2.7,"name":"eyefire/eyefire_00028"},{"time":2.7333,"name":"eyefire/eyefire_00029"},{"time":2.7667,"name":"eyefire/eyefire_00030"},{"time":2.8,"name":"eyefire/eyefire_00031"},{"time":2.8333,"name":"eyefire/eyefire_00032"},{"time":2.8667,"name":"eyefire/eyefire_00033"},{"time":2.9,"name":"eyefire/eyefire_00034"},{"time":2.9333,"name":"eyefire/eyefire_00035"},{"time":2.9667,"name":"eyefire/eyefire_00036"},{"time":3,"name":"eyefire/eyefire_00037"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"r finger a2":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72},{"time":3,"angle":14.41}],"translate":[{"x":131.03,"y":-25.92,"curve":"stepped"},{"time":0.8,"x":131.03,"y":-25.92},{"time":3}],"scale":[{"x":0.356,"y":0.528,"curve":"stepped"},{"time":0.8,"x":0.356,"y":0.528},{"time":3}]},"r finger d2":{"rotate":[{"angle":-55.55},{"time":0.3,"angle":27.3},{"time":0.4,"angle":-22.35},{"time":0.5,"angle":-106.07},{"time":0.6,"angle":-89.23,"curve":"stepped"},{"time":0.8,"angle":-89.23},{"time":3,"angle":7.12}],"translate":[{"x":25.4,"y":155.06},{"time":0.3,"x":55.13,"y":192.85},{"time":0.4,"x":39.27,"y":177.3},{"time":0.5,"x":-13.43,"y":192.22},{"time":0.6,"x":-0.48,"y":179.83,"curve":"stepped"},{"time":0.8,"x":-0.48,"y":179.83},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"r finger b2":{"rotate":[{"angle":-72.05},{"time":0.3,"angle":-7.32},{"time":0.4,"angle":-56.97},{"time":0.5,"angle":-139.63},{"time":0.6,"angle":-117.1,"curve":"stepped"},{"time":0.8,"angle":-117.1},{"time":3,"angle":-8.92}],"translate":[{"x":171.78,"y":113.86},{"time":0.3,"x":144.96,"y":155.26},{"time":0.4,"x":129.1,"y":139.7},{"time":0.5,"x":188.45,"y":155.72},{"time":0.6,"x":182.9,"y":141.76,"curve":"stepped"},{"time":0.8,"x":182.9,"y":141.76},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"r finger c2":{"rotate":[{"angle":-62.67},{"time":0.3,"angle":2.17},{"time":0.4,"angle":-47.48},{"time":0.5,"angle":-133.75},{"time":0.6,"angle":-110.06,"curve":"stepped"},{"time":0.8,"angle":-110.06},{"time":3,"angle":-9.49}],"translate":[{"x":43.59,"y":126.34},{"time":0.3,"x":73.32,"y":164.13},{"time":0.4,"x":57.46,"y":148.57},{"time":0.5,"x":63.53,"y":172.35},{"time":0.6,"x":56.88,"y":157.01,"curve":"stepped"},{"time":0.8,"x":56.88,"y":157.01},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"body":{"rotate":[{"angle":-8.67},{"time":0.1,"angle":-57.16},{"time":0.2,"angle":-81.65},{"time":0.3,"angle":-101.77},{"time":0.4,"angle":-119.71},{"time":0.5,"angle":-130.33},{"time":0.6,"angle":-117.59},{"time":0.7,"angle":-79.13},{"time":0.8,"angle":-59.37},{"time":0.9333,"angle":-31.14},{"time":1.1333,"angle":-8.99},{"time":1.2333,"angle":-1.19},{"time":1.4667,"angle":1.56},{"time":1.9,"angle":-13.1},{"time":2,"angle":-41.48},{"time":2.0333,"angle":-42.2},{"time":2.4333,"angle":-34.12},{"time":2.6667,"angle":2.11},{"time":3}],"translate":[{"x":-3552.25,"y":-102.64,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.1,"x":-3277.91,"y":-75.73,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.2,"x":-2495.59,"y":-30.21,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.3,"x":-1391.07,"y":16.35,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.4,"x":-963.85,"y":43.22,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.5,"x":-791.92,"y":16.31,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.6,"x":-515.79,"y":-29.21,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.7,"x":-270.92,"y":-75.77,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"x":-197.98,"y":-102.64},{"time":0.9333,"x":-130.76,"y":-113.25},{"time":1.1333,"x":-79.12,"y":-106.01},{"time":1.2333,"x":-68.94,"y":-4.14},{"time":1.4667,"x":-79.19,"y":55.69},{"time":1.9,"x":-42.06,"y":43.32},{"time":2,"x":44.57,"y":-30.94},{"time":2.0333,"x":75.51,"y":-71.16},{"time":2.4333,"x":47.66,"y":-71.16},{"time":2.6667,"x":50.42,"y":-19.84},{"time":3}]},"l hand2":{"rotate":[{"angle":-5.46},{"time":0.1,"angle":19.32},{"time":0.2,"angle":21.77},{"time":0.3,"angle":22.05},{"time":0.4,"angle":-91.8},{"time":0.5,"angle":-68.35},{"time":0.6,"angle":-55.42,"curve":"stepped"},{"time":0.8,"angle":-55.42},{"time":3}],"translate":[{"x":-23.89,"y":-2.05},{"time":0.1,"x":-28.71,"y":12.87},{"time":0.2,"x":-41.75,"y":-1.02},{"time":0.3,"x":-65.66,"y":-15.55},{"time":0.4,"x":98.13,"y":100.45},{"time":0.5,"x":44.43,"y":127.78},{"time":0.6,"x":43.38,"y":135.2,"curve":"stepped"},{"time":0.8,"x":43.38,"y":135.2},{"time":3}],"scale":[{"x":0.578,"y":-0.613,"curve":"stepped"},{"time":1.0667,"x":0.578,"y":-0.613},{"time":1.1,"x":0,"y":0}]},"body2":{"rotate":[{"angle":-22.79},{"time":0.1,"angle":-10.08},{"time":0.2,"angle":16.6},{"time":0.3,"angle":38.66},{"time":0.4,"angle":52.44},{"time":0.5,"angle":59.18},{"time":0.6,"angle":41.89},{"time":0.7,"angle":-15.52},{"time":0.8,"angle":-13.97},{"time":0.9333,"angle":-38.77},{"time":1.1333,"angle":-42.93},{"time":1.2333,"angle":-26.53},{"time":1.4667,"angle":10.48},{"time":1.9,"angle":50.62},{"time":2,"angle":45.37},{"time":2.0333,"angle":12.98},{"time":2.4333,"angle":-20.67},{"time":2.6667,"angle":-35.35},{"time":3,"angle":-2.21}],"translate":[{"x":-80.64,"y":48.56},{"time":0.1,"x":-29.6,"y":11.44},{"time":0.2,"x":24.21,"y":6.83},{"time":0.3,"x":87.48,"y":24.44},{"time":0.4,"x":76.26,"y":17.25},{"time":0.5,"x":26.63,"y":100.63},{"time":0.6,"x":-89.25,"y":-3.33},{"time":0.7,"x":-119.7,"y":79.08},{"time":0.8,"x":-10.26,"y":16.06},{"time":0.9333,"x":28.57,"y":-3.29},{"time":3,"x":-7.85,"y":2.92}]},"head":{"rotate":[{"angle":54.91},{"time":0.1,"angle":57.8},{"time":0.2,"angle":61.64},{"time":0.3,"angle":73.6},{"time":0.4,"angle":89.11},{"time":0.5,"angle":87.54},{"time":0.6,"angle":81.54},{"time":0.7,"angle":92.91},{"time":0.8,"angle":54.91},{"time":0.9333,"angle":42.93},{"time":1.1333,"angle":17.02},{"time":1.2333,"angle":13.18},{"time":1.4667,"angle":4.73},{"time":1.9,"angle":16.82},{"time":2,"angle":33.14},{"time":2.0333,"angle":36.1},{"time":2.4333,"angle":66.37},{"time":2.6667,"angle":29.02},{"time":3,"angle":-4.31}],"translate":[{"x":20.04,"y":114.02,"curve":"stepped"},{"time":1.1333,"x":20.04,"y":114.02},{"time":1.2333,"x":-9.67,"y":27.62},{"time":1.4667,"x":-20.75,"y":35.91,"curve":"stepped"},{"time":1.9,"x":-20.75,"y":35.91},{"time":2,"x":-33.53,"y":5.13},{"time":2.0333,"x":23.53,"y":45.69,"curve":"stepped"},{"time":2.6667,"x":23.53,"y":45.69},{"time":3}]},"rhand":{"rotate":[{"angle":-61.96},{"time":0.1,"angle":-73.08},{"time":0.2,"angle":-53.34},{"time":0.3,"angle":-7.68},{"time":0.4,"angle":-29.8},{"time":0.5,"angle":-28.8},{"time":0.6,"angle":-23.59},{"time":0.7,"angle":-38.24},{"time":0.8,"angle":-31.8},{"time":0.9333,"angle":-54.75},{"time":1.1333,"angle":-97.12},{"time":1.2667,"angle":-59.09},{"time":1.3,"angle":-164.78},{"time":1.4667,"angle":-173.44},{"time":1.9,"angle":149.12},{"time":2,"angle":21.91},{"time":2.0333,"angle":-53.26,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-21.83},{"time":2.6667,"angle":-25.48},{"time":3,"angle":5.78}],"translate":[{"x":-3139.48,"y":-265.49},{"time":0.1,"x":-2597.5,"y":-287.15},{"time":0.2,"x":-1538.08,"y":-271.75},{"time":0.3,"x":-156.59,"y":-302.33},{"time":0.4,"x":162.82,"y":-415.03},{"time":0.5,"x":333.89,"y":-405.4},{"time":0.6,"x":362.68,"y":-451.02},{"time":0.7,"x":341.39,"y":-449.56},{"time":0.8,"x":363.74,"y":-468.24},{"time":0.9333,"x":436.4,"y":-362.08},{"time":1.1333,"x":449.16,"y":-326.78},{"time":1.2667,"x":362.78,"y":-209.31},{"time":1.3,"x":335.64,"y":-198.55},{"time":1.4667,"x":131.27,"y":-121.58},{"time":1.9,"x":2.3,"y":-135.16},{"time":2,"x":126.95,"y":24.83},{"time":2.0333,"x":215.53,"y":202.48,"curve":0.25,"c3":0.75},{"time":2.4333,"x":271.51,"y":181.5},{"time":2.6667,"x":215.79,"y":82.37},{"time":3}],"scale":[{"x":0.445,"y":-0.647,"curve":"stepped"},{"time":0.7,"x":0.445,"y":-0.647},{"time":0.8,"x":0.445,"y":-0.648},{"time":1.2667,"x":0.665,"y":-0.968},{"time":1.3,"x":0.492,"y":0.694},{"time":1.4667,"x":1.263,"y":1.104},{"time":1.9}]},"r upparm":{"rotate":[{"angle":56.42,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.1,"angle":74.64,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.2,"angle":73.29,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.3,"angle":101.63,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.4,"angle":104.15,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.5,"angle":99.53,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.6,"angle":87.72,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.7,"angle":95.14,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"angle":80.25},{"time":0.9333,"angle":71.45},{"time":1.1333,"angle":66.47},{"time":1.3,"angle":27.63},{"time":1.4667,"angle":-6.25},{"time":1.7333,"angle":-24.81},{"time":1.9,"angle":-40.77},{"time":2,"angle":-23.48},{"time":2.0333,"angle":-19.48},{"time":2.4333,"angle":-10.17},{"time":2.6667,"angle":-0.31},{"time":3,"angle":-6.94}],"translate":[{},{"time":0.4,"x":-23.64,"y":21.09},{"time":0.8,"curve":"stepped"},{"time":1.1333},{"time":1.3,"x":-37.82,"y":-33.24},{"time":1.4667,"x":-30.27,"y":-75.09},{"time":1.7333,"x":-8,"y":-64.19},{"time":1.9,"x":-1.33,"y":-79.96,"curve":"stepped"},{"time":2,"x":-1.33,"y":-79.96},{"time":2.0333,"x":-0.65,"y":-149.57},{"time":2.4333,"x":24.58,"y":-147.44},{"time":2.6667,"x":-50.71,"y":-70.12},{"time":3}]},"l ik":{"rotate":[{"angle":-2.64},{"time":0.1,"angle":3.05},{"time":0.2,"angle":-46.63},{"time":0.3,"angle":-134.68},{"time":0.4,"angle":-137.5},{"time":0.5,"angle":-127.9},{"time":0.6,"angle":-79.41},{"time":0.7,"angle":-68.78},{"time":0.8,"angle":-2.64},{"time":0.8667,"angle":-18.59},{"time":0.9333,"angle":3.59,"curve":"stepped"},{"time":1.9333,"angle":3.59},{"time":2.0333}],"translate":[{"x":-3697.95,"y":70.09},{"time":0.1,"x":-3528.29,"y":-2.76},{"time":0.2,"x":-2975.64,"y":85.85},{"time":0.3,"x":-2033.06,"y":290.99},{"time":0.4,"x":-1594.4,"y":360.98},{"time":0.5,"x":-1351.98,"y":415.93},{"time":0.6,"x":-857.77,"y":228.69},{"time":0.7,"x":-522.75,"y":181.63},{"time":0.8,"x":-222.27,"y":109.6},{"time":0.8667,"x":-119.44,"y":50.83},{"time":0.9333,"x":-86.11,"y":9.27,"curve":"stepped"},{"time":1.9333,"x":-86.11,"y":9.27},{"time":2,"x":-36.61,"y":102.09},{"time":2.0333}]},"lhand":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-84.39},{"time":0.2,"angle":-88.18},{"time":0.3,"angle":-51.49},{"time":0.4,"angle":63.47},{"time":0.5,"angle":23.26},{"time":0.6,"angle":22.08,"curve":"stepped"},{"time":0.7,"angle":22.08},{"time":0.8,"angle":13.43},{"time":0.9333,"angle":13.68},{"time":1,"angle":-64.87},{"time":1.2333,"angle":-72.6},{"time":1.2667,"angle":-44.35},{"time":1.4667,"angle":-14.78},{"time":1.9,"angle":85.83},{"time":2,"angle":36.86},{"time":2.0333,"angle":-97.53},{"time":2.4333,"angle":-72.24},{"time":2.6667,"angle":-27.8},{"time":3,"angle":-6.06}],"translate":[{"x":-3709.84,"y":-59.33},{"time":0.1,"x":-3469.49,"y":197.82},{"time":0.2,"x":-2505.59,"y":106.23},{"time":0.3,"x":-1151.71,"y":12.55},{"time":0.4,"x":-405.36,"y":-39.96},{"time":0.5,"x":-202.6,"y":-176.13},{"time":0.6,"x":-75.62,"y":-178.34},{"time":0.7,"x":-33.78,"y":-178.34,"curve":"stepped"},{"time":0.9333,"x":-33.78,"y":-178.34},{"time":1,"x":-142.05,"y":-61.94},{"time":1.1333,"x":-282.59,"y":176.33},{"time":1.2333,"x":-276.56,"y":345.61},{"time":1.4667,"x":-151.63,"y":252.03},{"time":1.9,"x":139.85,"y":309.89},{"time":2,"x":135.73,"y":256.73},{"time":2.0333,"x":-128.65,"y":48.02},{"time":2.4333,"x":-132.78,"y":-49.13},{"time":2.6667,"x":-69.38,"y":-48.69},{"time":3,"x":-49.01,"y":-5.46}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.525,"y":-0.516},{"time":1.4667,"y":-0.582},{"time":1.6667,"y":-1},{"time":1.9,"x":1.175,"y":-0.725},{"time":2,"y":-0.983},{"time":2.0333,"curve":"stepped"},{"time":2.6667},{"time":3,"x":0.95,"y":0.95}]},"l upparm":{"rotate":[{"angle":121.1},{"time":0.1,"angle":113.65},{"time":0.2,"angle":153.35},{"time":0.3,"angle":138.84},{"time":0.4,"angle":121.54},{"time":0.5,"angle":114.98},{"time":0.6,"angle":121.16},{"time":0.7,"angle":148.41},{"time":0.8,"angle":106.3},{"time":0.9333,"angle":74.35},{"time":1.9,"angle":24.26},{"time":2,"angle":52.64},{"time":2.6667,"angle":24.26},{"time":3}],"translate":[{"x":-7.3,"y":263.84,"curve":"stepped"},{"time":0.8,"x":-7.3,"y":263.84},{"time":1.9,"x":4.3,"y":132.76,"curve":"stepped"},{"time":2.6667,"x":4.3,"y":132.76},{"time":3}]},"r finger b":{"rotate":[{"angle":-31.61},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-40.66},{"time":0.4,"angle":-120.95},{"time":0.7,"angle":-134.91,"curve":"stepped"},{"time":0.8,"angle":-134.91},{"time":0.9333,"angle":-144.5},{"time":1.1333,"angle":-91.5},{"time":1.2667,"angle":-130.98},{"time":1.3,"angle":-148.54},{"time":1.4667,"angle":-142.86},{"time":1.9,"angle":-149.27},{"time":2,"angle":-130.98},{"time":2.0333,"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-80.56},{"time":2.6667,"angle":-65.19},{"time":3,"angle":-8.92}],"translate":[{"x":78.27,"y":97.55},{"time":0.2,"x":144.96,"y":155.26},{"time":0.3,"x":129.1,"y":139.7},{"time":0.4,"x":188.45,"y":155.72},{"time":0.7,"x":171.78,"y":113.86,"curve":"stepped"},{"time":0.9333,"x":171.78,"y":113.86},{"time":1.1333,"x":84.68,"y":122.05},{"time":1.2667,"x":153.6,"y":158.11,"curve":"stepped"},{"time":2,"x":153.6,"y":158.11},{"time":2.0333,"curve":0.25,"c3":0.75},{"time":2.4333,"x":49.96,"y":19.95},{"time":2.6667,"x":80.79,"y":37.55},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.9333,"x":0.674},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.307,"y":0.895},{"time":2,"x":0.674},{"time":2.0333}]},"r finger c":{"rotate":[{"angle":-22.53},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-31.17},{"time":0.4,"angle":-115.08},{"time":0.7,"angle":-125.53,"curve":"stepped"},{"time":0.8,"angle":-125.53},{"time":0.9333,"angle":-118.27},{"time":1.1333,"angle":-82.13},{"time":1.2667,"angle":-121.6},{"time":1.3,"angle":-121.62},{"time":1.4667,"angle":-133.48},{"time":1.9,"angle":-115.45},{"time":2,"angle":-121.6},{"time":2.0333,"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-66.51},{"time":2.6667,"angle":-35.74},{"time":3,"angle":-9.49}],"translate":[{"x":6.64,"y":106.41},{"time":0.2,"x":73.32,"y":164.13},{"time":0.3,"x":57.46,"y":148.57},{"time":0.4,"x":63.53,"y":172.35},{"time":0.7,"x":43.59,"y":126.34,"curve":"stepped"},{"time":0.9333,"x":43.59,"y":126.34},{"time":1.1333,"x":-43.51,"y":134.53},{"time":1.2667,"x":25.41,"y":170.59,"curve":"stepped"},{"time":2,"x":25.41,"y":170.59},{"time":2.0333,"curve":"stepped"},{"time":2.4333,"curve":0.382,"c2":0.56,"c3":0.739},{"time":2.6667,"x":30.83,"y":17.59},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":0.9333,"x":0.534},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.399,"y":0.679},{"time":2,"x":0.674},{"time":2.0333}]},"r finger d":{"rotate":[{"angle":1.61},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-6.04},{"time":0.4,"angle":-87.39},{"time":0.7,"angle":-118.41,"curve":"stepped"},{"time":0.8,"angle":-118.41},{"time":0.9333,"angle":-94.23},{"time":1.1333,"angle":-75.01},{"time":1.2667,"angle":-93.5},{"time":1.3,"angle":-58.49},{"time":1.4667,"angle":-126.36},{"time":1.9,"angle":-79.35},{"time":2,"angle":-114.48},{"time":2.0333,"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-49.17},{"time":2.6667,"angle":7.68},{"time":3,"angle":7.12}],"translate":[{"x":-11.55,"y":135.14},{"time":0.2,"x":55.13,"y":192.85},{"time":0.3,"x":39.27,"y":177.3},{"time":0.4,"x":-13.43,"y":192.22},{"time":0.7,"x":25.4,"y":155.06,"curve":"stepped"},{"time":0.9333,"x":25.4,"y":155.06},{"time":1.1333,"x":-61.7,"y":163.26},{"time":1.2667,"x":7.22,"y":199.32},{"time":1.3,"x":-6.92,"y":192.44},{"time":2,"x":7.22,"y":199.32},{"time":2.0333,"curve":"stepped"},{"time":2.4333,"curve":0.382,"c2":0.56,"c3":0.739},{"time":2.6667,"x":30.83,"y":17.59},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":0.9333,"x":0.434,"y":0.747},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.458,"y":0.679},{"time":2,"x":0.674},{"time":2.0333}]},"r finger a":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72},{"time":0.9333,"angle":-9.99},{"time":1.1333,"angle":-1.21},{"time":1.4667,"angle":-42.33},{"time":1.9,"angle":-28.83},{"time":2,"angle":-1.21},{"time":2.0333,"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":45.08},{"time":2.6667,"angle":39.22},{"time":3,"angle":14.41}],"translate":[{"x":131.03,"y":-25.92,"curve":"stepped"},{"time":1.2667,"x":131.03,"y":-25.92},{"time":1.3,"x":188.98,"y":-2.29,"curve":"stepped"},{"time":2,"x":188.98,"y":-2.29},{"time":2.0333,"curve":0.25,"c3":0.75},{"time":2.4333,"x":33.92,"y":-37.24},{"time":2.6667,"x":13.46,"y":-38.48},{"time":3}],"scale":[{"x":0.356,"y":0.528,"curve":"stepped"},{"time":0.8,"x":0.356,"y":0.528},{"time":1.3,"x":0.512,"y":0.759,"curve":"stepped"},{"time":2,"x":0.512,"y":0.759},{"time":2.0333}]},"r upparm2":{"rotate":[{"angle":2.65},{"time":1.1333,"angle":38.25},{"time":1.4667,"angle":55.72},{"time":1.7333,"angle":27.54},{"time":1.9,"angle":6.41},{"time":2.4333,"angle":25.98},{"time":3,"angle":12.97}],"translate":[{},{"time":0.1,"x":-23.06,"y":-56.12},{"time":0.2,"x":18.62,"y":-75.54},{"time":0.3,"x":58.57,"y":-61.11},{"time":0.4,"x":21.93,"y":-102.93},{"time":0.5,"x":56.85,"y":-62.14},{"time":0.6,"x":63.16,"y":-55.04},{"time":0.7,"x":-2.02,"y":-22.9},{"time":0.8,"x":-12.36,"y":-30.77},{"time":0.9333,"x":-18.04,"y":-30.53},{"time":1.1333,"x":-32.01,"y":-71.98},{"time":1.3,"x":14.33,"y":3.83},{"time":1.4667,"x":-0.34,"y":5.85},{"time":1.5,"x":10.13,"y":4.27},{"time":1.7333,"x":-15.82,"y":-3.94},{"time":1.9,"x":-16.38,"y":5.99},{"time":2.4333,"x":-19.28,"y":-33.74},{"time":3}],"scale":[{"x":0.874,"y":0.874,"curve":"stepped"},{"time":0.9333,"x":0.874,"y":0.874},{"time":3}]},"l finger c":{"rotate":[{"angle":67.75},{"time":0.2,"angle":46.4},{"time":0.4,"angle":29.53},{"time":0.5,"angle":73.3,"curve":"stepped"},{"time":0.7,"angle":73.3},{"time":0.8,"angle":67.75,"curve":"stepped"},{"time":1.2333,"angle":67.75},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l finger b":{"rotate":[{"angle":12.29},{"time":0.2,"angle":-9.05},{"time":0.4,"angle":-25.92},{"time":0.5,"angle":17.85,"curve":"stepped"},{"time":0.7,"angle":17.85},{"time":0.8,"angle":12.29,"curve":"stepped"},{"time":1.2333,"angle":12.29},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l finger a":{"rotate":[{"angle":-21},{"time":0.2,"angle":-42.35},{"time":0.4,"angle":-59.21},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.7,"angle":-15.44},{"time":0.8,"angle":-21,"curve":"stepped"},{"time":1.2333,"angle":-21},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l finger d":{"rotate":[{"angle":104.78},{"time":0.2,"angle":83.43},{"time":0.4,"angle":66.56},{"time":0.5,"angle":110.34,"curve":"stepped"},{"time":0.7,"angle":110.34},{"time":0.8,"angle":104.78,"curve":"stepped"},{"time":1.2333,"angle":104.78},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l finger b2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":16.78,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":79.08,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-11.64,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":16.78}],"translate":[{"time":1.2333},{"time":1.2667,"x":-1.29,"y":10.42}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l finger a2":{"rotate":[{"angle":19.49},{"time":0.2,"angle":-1.85},{"time":0.4,"angle":10.22},{"time":0.5,"angle":56.06},{"time":0.7,"angle":44.53},{"time":0.8,"angle":19.49,"curve":"stepped"},{"time":1.2333,"angle":19.49},{"time":1.2667,"angle":5.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":67.62,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-23.1,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":5.32}],"translate":[{"time":1.2333},{"time":1.2667,"x":-3.75,"y":9.81}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l finger c2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":16.54,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":78.84,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-11.88,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":16.54}],"translate":[{"time":1.2333},{"time":1.2667,"x":-2.62,"y":10.17}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l finger d2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":26.01,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":88.3,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-2.42,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":26.01}],"translate":[{"time":1.2333},{"time":1.2667,"x":-1.16,"y":10.43}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"r ik":{"rotate":[{"angle":102.66},{"time":0.1,"angle":27.72},{"time":0.2,"angle":-23.72},{"time":0.3,"angle":-35},{"time":0.4,"angle":-34.26},{"time":0.5},{"time":0.6,"angle":71.42},{"time":0.7,"angle":72.92},{"time":0.8,"angle":82.14},{"time":0.9333,"angle":102.66,"curve":"stepped"},{"time":1.1667,"angle":102.66},{"time":1.3,"angle":28.42},{"time":1.5333}],"translate":[{"x":-3273.98,"y":-6.67},{"time":0.1,"x":-3267.98,"y":99.3},{"time":0.2,"x":-2558.01,"y":126.65},{"time":0.3,"x":-1289.31,"y":271.14},{"time":0.4,"x":-701.5,"y":318.34},{"time":0.5,"x":-427.68,"y":281.87},{"time":0.6,"x":-135.25,"y":150.47},{"time":0.7,"x":34.7,"y":120.68},{"time":0.8,"x":91.94,"y":49.04},{"time":0.9333,"x":77.25,"y":-9.7,"curve":"stepped"},{"time":1.1667,"x":77.25,"y":-9.7},{"time":1.3,"x":140.65,"y":110.58},{"time":1.5333}],"scale":[{"y":-1,"curve":"stepped"},{"time":1.1667,"y":-1},{"time":1.3}]},"l ik2":{"translate":[{"x":91.54,"y":85.04},{"time":0.1,"x":57.37,"y":79.54},{"time":0.2,"x":46.58,"y":84.16},{"time":0.3,"x":43.88,"y":-108.48},{"time":0.4,"x":50.02,"y":-49.47},{"time":0.5,"x":61.7,"y":4.19},{"time":0.6,"x":69.69,"y":-9.68},{"time":0.7,"x":87.16,"y":32.39},{"time":0.8,"x":40.89,"y":17.54},{"time":0.8667,"x":36.41,"y":-39.33},{"time":0.9333,"x":57.87,"y":16.78},{"time":1.1333,"x":37.58,"y":-6.79},{"time":1.2333,"x":1.78,"y":6.73},{"time":1.4667,"x":-27.38,"y":7.96},{"time":1.9333,"x":-17.93,"y":-28.08},{"time":2,"x":52.27,"y":21.93},{"time":2.0333,"x":39.5,"y":-2.99},{"time":2.4333,"x":28.53,"y":-14.33},{"time":3}]},"r arm":{"rotate":[{"angle":22.15},{"time":3,"angle":-8.2}],"scale":[{},{"time":0.9333,"y":1.378,"curve":"stepped"},{"time":2,"y":1.378},{"time":2.0333}]},"l leg":{"rotate":[{"angle":7.96},{"time":3}]},"r ik2":{"rotate":[{"time":1.0333},{"time":1.2333,"angle":11.17},{"time":1.5333}],"translate":[{"x":128.11,"y":-106.46},{"time":0.1,"x":78.5,"y":-78.71},{"time":0.2,"x":-2.33,"y":39.33},{"time":0.3,"x":87.53,"y":45.77},{"time":0.4,"x":81.77,"y":1.21},{"time":0.5,"x":108.09,"y":16.09},{"time":0.6,"x":105.52,"y":-61.86},{"time":0.7,"x":167.96,"y":-36.84},{"time":0.8,"x":112.19,"y":-79.33},{"time":0.9333,"x":101.11,"y":-61.8},{"time":1.0333,"x":135.3,"y":-65.86},{"time":1.1667,"x":115.72,"y":-49.39},{"time":1.3,"x":104.91,"y":-7.44},{"time":1.5333,"x":89.47,"y":-33.56,"curve":0.26,"c3":0.618,"c4":0.44},{"time":3}]},"r leg":{"rotate":[{"angle":63.83,"curve":"stepped"},{"time":1.3,"angle":63.83},{"time":1.5333}],"translate":[{"x":3.77,"y":-2.04},{"time":1.0333}],"scale":[{"x":0.787,"y":-1,"curve":"stepped"},{"time":1.1667,"x":0.787,"y":-1},{"time":1.3}]},"r hand":{"rotate":[{"time":1.2667},{"time":1.3,"angle":22.22,"curve":"stepped"},{"time":2,"angle":22.22},{"time":2.0333}],"translate":[{"x":-108.92,"y":-86.21},{"time":0.1,"x":-231.8,"y":-34.01},{"time":0.2,"x":-257.1,"y":-45.29},{"time":0.3,"x":-225.91,"y":-67.47},{"time":0.4,"x":-184.87,"y":-44.92},{"time":0.5,"x":-188.82,"y":-80.85},{"time":0.6,"x":-168.25,"y":-121.48},{"time":0.7,"x":-209.89,"y":-75.36},{"time":0.8,"x":-202.11,"y":-101.44},{"time":0.9333,"x":-119.87,"y":-108.71},{"time":1.1333,"x":-205.04,"y":-50.37},{"time":1.2667,"x":-212.95,"y":-50.19},{"time":1.3,"x":-185.79,"y":-148.06},{"time":1.4667,"x":-119.62,"y":-101.72,"curve":"stepped"},{"time":2,"x":-119.62,"y":-101.72},{"time":2.0333}]},"r upparm3":{"rotate":[{"angle":-27.65},{"time":0.1,"angle":-53.5},{"time":0.2,"angle":-105.96},{"time":0.3,"angle":-138.28},{"time":0.4,"angle":-125.37},{"time":0.5,"angle":-109.13},{"time":0.6,"angle":-88.34},{"time":0.7,"angle":-34.45},{"time":0.8,"angle":-67.94},{"time":0.9333,"angle":-57.34},{"time":1.1333,"angle":-44.48},{"time":1.3,"angle":-19.31},{"time":1.4667,"angle":16.01},{"time":1.9,"angle":43.83},{"time":2,"angle":16.04},{"time":2.0333,"angle":22.11},{"time":2.4333,"angle":27.19},{"time":2.6667,"angle":16.64},{"time":3}],"translate":[{},{"time":1.1333,"x":-0.49,"y":-9.64},{"time":1.3,"x":-5.15,"y":-12.45},{"time":1.4667,"x":-5.55,"y":-5.54},{"time":1.9,"x":13.19,"y":-8.62},{"time":2,"x":13.75,"y":-10.47},{"time":2.0333,"x":10.82,"y":10.91},{"time":3}]},"l upparm2":{"rotate":[{"angle":-78.32},{"time":2.6667,"angle":1.59},{"time":3,"angle":-6.45}],"translate":[{"x":-56.13,"y":20.55},{"time":0.1,"x":-86.33,"y":42.77},{"time":0.2,"curve":"stepped"},{"time":0.3},{"time":0.4,"x":-97.89,"y":54.46},{"time":0.5,"x":10.44,"y":22.48},{"time":0.6,"x":-13,"y":90.89},{"time":0.7,"x":-44.26,"y":70.92},{"time":0.8,"x":-56.13,"y":20.55},{"time":1.9,"x":2.61,"y":-9.89,"curve":"stepped"},{"time":2.6667,"x":2.61,"y":-9.89},{"time":3}]},"l hand":{"scale":[{"x":0,"y":0,"curve":"stepped"},{"time":1.0667,"x":0,"y":0},{"time":1.1}]},"r leg2":{"rotate":[{"angle":93.27},{"time":1.5333}]},"r leg3":{"rotate":[{"angle":-83.89},{"time":1.5333}]},"l armour":{"rotate":[{"angle":-53.84},{"time":2.6667,"angle":19.71},{"time":3,"angle":1.84}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"r ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":19.13,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":41.37,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":37.65,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":16.4,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":-10.53,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":-4.8,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-31.05,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-27.47,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":-4.22,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3}]},"r ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":-0.23,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":-26.38,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-13.4,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":37.79,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.6333,"angle":-23.32,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.9,"angle":39.57,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":3.84,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":27.73,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":2.2,"angle":-25.17,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":2.4333,"angle":-8.23,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":15.32,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":-2.28}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":19.13,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":41.37,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":37.65,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":16.4,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":-10.53,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":-4.8,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-31.05,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-27.47,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":-4.22,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3}]},"l ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":0.22,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":-25.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-11.95,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":40,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.6333,"angle":-20.58,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.9,"angle":43.11,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":7.66,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":31.64,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":2.2,"angle":-20.82,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":2.4333,"angle":-3.36,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":20.61,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":3.27}]},"hair t":{"rotate":[{"angle":4.07,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":17.13,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-8.99,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":4.07,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":13.41,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":7.98,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":2.46,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":1.48,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":1.28,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":1.21,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":0.5,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":0.19,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3}]},"hair t2":{"rotate":[{"angle":-2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":8.12,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":17.96,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.9333,"angle":9.4,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.1333,"angle":11.59,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":2.86,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":-7.32,"curve":0.342,"c2":0.38,"c3":0.676,"c4":0.71},{"time":1.9,"angle":-0.51,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":-14.93,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-12.73,"curve":0.344,"c2":0.41,"c3":0.678,"c4":0.75},{"time":2.4333,"angle":0.27,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":0.48,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":0.61}]},"hair t3":{"rotate":[{"angle":0.21,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-23.63,"curve":0.25,"c3":0.75},{"time":0.6,"angle":24.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":21.08,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":31.72,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.1333,"angle":29.69,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":9.21,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-1.61,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-26.31,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-11.28,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":15.95,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":-30.14,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":6.15,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":3.7}]},"hair t4":{"rotate":[{"angle":15.32,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-41.21,"curve":0.25,"c3":0.75},{"time":0.7,"angle":28.11,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":36.2,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.9333,"angle":32.22,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.1333,"angle":42.54,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.2333,"angle":49.92,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":9.97,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":-18.95,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":-4.6,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":22.41,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":-26.13,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":9.07,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":5.88}]},"hair t5":{"rotate":[{"angle":30.87,"curve":0.25,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.87,"curve":0.293,"c3":0.631,"c4":0.37},{"time":1.1333,"angle":33.5,"curve":0.311,"c2":0.25,"c3":0.648,"c4":0.59},{"time":1.4667,"angle":38.85,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":47.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":49,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":49.65,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":57.11,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":60.71,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3,"angle":63.33}]},"hair t6":{"rotate":[{"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.4,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.7,"angle":-0.67,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"angle":-31.7,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":-3.83,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":35.91,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":54.86,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":-64.12,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":2.07,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":34.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-26.89,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-34.03,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":18.89,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3,"angle":6.2}],"translate":[{},{"time":3,"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":0.51,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":0.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.9333,"angle":-30.83,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.1333,"angle":22.86,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":10.61,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":76.25,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":1.6,"angle":19.11,"curve":0.34,"c2":0.37,"c3":0.673,"c4":0.7},{"time":1.9,"angle":45.99,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":17.52,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":74.08,"curve":0.337,"c2":0.36,"c3":0.67,"c4":0.69},{"time":2.1667,"angle":-1.64,"curve":0.341,"c2":0.39,"c3":0.674,"c4":0.73},{"time":2.4333,"angle":12.71,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":48.39,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":26.63}]},"hair t8":{"rotate":[{"angle":10.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.6,"angle":26.71,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.7,"angle":19.65,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.8,"angle":-15.64,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":18.47,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":53.6,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":71.03,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-45.85,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":20.45,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":53.24,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":-8.58,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":-16.16,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":36.42,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":23.39}],"translate":[{},{"time":3,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":20.79,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.7,"angle":25.53,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":-5.5,"curve":0.328,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.9333,"angle":29.47,"curve":0.328,"c2":0.31,"c3":0.662,"c4":0.65},{"time":1.1333,"angle":67.48,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.2333,"angle":86.62,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":-27.55,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":44.89,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":79.09,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":17.73,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":15.34,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":70.34,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":59.01}],"translate":[{},{"time":3,"x":-2.26,"y":14.51}]},"hair t10":{"rotate":[{},{"time":1.1333,"angle":0.98},{"time":1.4667,"angle":1.27},{"time":1.9,"angle":1.65},{"time":2,"angle":1.73},{"time":2.0333,"angle":1.76},{"time":2.4333,"angle":2.11},{"time":2.6667,"angle":2.31},{"time":3,"angle":2.6}]},"hair t11":{"rotate":[{},{"time":1.1333,"angle":3.61},{"time":1.4667,"angle":4.67},{"time":1.9,"angle":6.04},{"time":2,"angle":6.36},{"time":2.0333,"angle":6.47},{"time":2.4333,"angle":7.74},{"time":2.6667,"angle":8.48},{"time":3,"angle":9.54}]},"head2":{"rotate":[{"time":1.9},{"time":2.0333,"angle":3.15},{"time":3}],"translate":[{"time":1.9},{"time":2.0333,"x":23.71,"y":-27.59},{"time":3}]},"headbeard b":{"rotate":[{},{"time":1.1333,"angle":1.39},{"time":1.4667,"angle":1.79},{"time":1.9,"angle":2.32},{"time":2,"angle":2.45},{"time":2.0333,"angle":2.49},{"time":2.4333,"angle":2.98},{"time":2.6667,"angle":3.26},{"time":3,"angle":3.67}]},"headbeard b2":{"rotate":[{},{"time":1.1333,"angle":2.52},{"time":1.4667,"angle":3.26},{"time":1.9,"angle":4.23},{"time":2,"angle":4.45},{"time":2.0333,"angle":4.52},{"time":2.4333,"angle":5.41},{"time":2.6667,"angle":5.93},{"time":3,"angle":6.67}]},"headbeard b3":{"rotate":[{},{"time":1.1333,"angle":3.31},{"time":1.4667,"angle":4.28},{"time":1.9,"angle":5.55},{"time":2,"angle":5.84},{"time":2.0333,"angle":5.93},{"time":2.4333,"angle":7.1},{"time":2.6667,"angle":7.78},{"time":3,"angle":8.76}]},"r ear s":{"rotate":[{},{"time":3,"angle":-5.67}]},"r ear ring b":{"rotate":[{},{"time":3,"angle":8.97}]},"r ear ringb s":{"rotate":[{},{"time":3,"angle":15.92}],"translate":[{},{"time":3,"x":5.7,"y":-8.17}]},"r beard":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38},{"time":1.1333,"angle":1.69},{"time":1.4667,"angle":-6.56},{"time":1.9,"angle":-51.71},{"time":2,"angle":-50.66},{"time":2.0333,"angle":-1.36},{"time":2.1667,"angle":3.87},{"time":2.4333,"angle":-10.16},{"time":2.6667,"angle":3.59},{"time":3,"angle":8.77}],"scale":[{},{"time":3,"x":0.88}]},"r beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":23.26,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":31.09,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-23.54,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-2.37,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-43.11,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":-24.88,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":2.1667,"angle":17.77,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":2.4333,"angle":11.18,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":-9.8,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":-0.61}]},"r beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72},{"time":1.1333,"angle":-6.27},{"time":1.2333,"angle":29.04},{"time":1.4667,"angle":30.42},{"time":1.9,"angle":-2.19},{"time":2,"angle":-34.94},{"time":2.0333,"angle":-54.22},{"time":2.1667,"angle":-34.76},{"time":2.4333,"angle":15.5},{"time":2.6667,"angle":-13.08},{"time":3,"angle":-10}]},"l bear":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38},{"time":0.9333,"angle":-9.76},{"time":1.1333,"angle":-0.57},{"time":1.2333,"angle":7.72},{"time":1.4667,"angle":-0.77},{"time":1.9,"angle":-46.51},{"time":2,"angle":-50.69},{"time":2.0333,"angle":-29.9},{"time":2.1333,"angle":-23.51},{"time":2.4333,"angle":-24.86},{"time":2.6667,"angle":-19.49},{"time":3,"angle":-11.82}]},"l bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":-29.64,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":22.7,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":18.77,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-24.33,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-10.77,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-31.53,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":34.58,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":2.1333,"angle":35.65,"curve":0.345,"c2":0.39,"c3":0.679,"c4":0.72},{"time":2.4333,"angle":0.16,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":17.9,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":1.82}]},"l beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72},{"time":0.9333,"angle":-37.29},{"time":1.1333,"angle":-16.24},{"time":1.2333,"angle":37.88},{"time":1.4667,"angle":18.31},{"time":1.9,"angle":-12.28},{"time":2,"angle":-26.03},{"time":2.0333,"angle":-28.49},{"time":2.1333,"angle":36.65},{"time":2.4333,"angle":37.07},{"time":2.6667,"angle":-6.49},{"time":3,"angle":15.47}]},"headbeard f":{"rotate":[{},{"time":1.1333,"angle":1.14},{"time":1.4667,"angle":1.47},{"time":1.9,"angle":1.91},{"time":2,"angle":2.01},{"time":2.0333,"angle":2.04},{"time":2.4333,"angle":2.44},{"time":2.6667,"angle":2.67},{"time":3,"angle":3.01}]},"headbeard f2":{"rotate":[{},{"time":1.1333,"angle":-1.76},{"time":1.4667,"angle":-2.28},{"time":1.9,"angle":-2.95},{"time":2,"angle":-3.11},{"time":2.0333,"angle":-3.16},{"time":2.4333,"angle":-3.78},{"time":2.6667,"angle":-4.14},{"time":3,"angle":-4.66}]},"headbeard f3":{"rotate":[{},{"time":1.1333,"angle":-0.23},{"time":1.4667,"angle":-0.29},{"time":1.9,"angle":-0.38},{"time":2,"angle":-0.4},{"time":2.0333,"angle":-0.41},{"time":2.4333,"angle":-0.49},{"time":2.6667,"angle":-0.53},{"time":3,"angle":-0.6}]},"headbeard f4":{"rotate":[{},{"time":1.1333,"angle":13.61},{"time":1.4667,"angle":17.61},{"time":1.9,"angle":22.81},{"time":2,"angle":24.01},{"time":2.0333,"angle":24.42},{"time":2.4333,"angle":29.22},{"time":2.6667,"angle":32.02},{"time":3,"angle":36.02}]},"headbeard f5":{"rotate":[{},{"time":1.1333,"angle":15.48},{"time":1.4667,"angle":20.04},{"time":1.9,"angle":25.96},{"time":2,"angle":27.33},{"time":2.0333,"angle":27.78},{"time":2.4333,"angle":33.25},{"time":2.6667,"angle":36.43},{"time":3,"angle":40.99}]},"l leg2":{"rotate":[{"angle":-85.86},{"time":3}]},"l leg3":{"rotate":[{"angle":2.06},{"time":3}]},"skirt f":{"rotate":[{"angle":16.01},{"time":0.1,"angle":37.11},{"time":0.4,"angle":72.86},{"time":0.5,"angle":79.35},{"time":0.8,"angle":16.01},{"time":0.9333,"angle":31.78},{"time":1.1333,"angle":25.95},{"time":1.2333,"angle":-3.48},{"time":1.4667,"angle":2},{"time":1.9,"angle":1.29},{"time":2,"angle":-0.42},{"time":2.0333,"angle":9.72},{"time":2.4333,"angle":21.18},{"time":2.6667,"angle":3.49},{"time":3,"angle":9.15}],"scale":[{"x":0.554,"curve":"stepped"},{"time":0.8,"x":0.554},{"time":3}],"shear":[{},{"time":3,"y":-15.36}]},"skirt f2":{"rotate":[{"angle":8.67},{"time":0.2,"angle":26.26},{"time":0.6,"angle":-8.92},{"time":0.8,"angle":8.67},{"time":0.9333,"angle":-25.83},{"time":1.1333,"angle":-6.53},{"time":1.2333,"angle":20.3},{"time":1.4667,"angle":0.81},{"time":1.9,"angle":12.72},{"time":2,"angle":31.36},{"time":2.0333,"angle":-12.77},{"time":2.4333,"angle":-2.08},{"time":2.6667,"angle":-27.26},{"time":3,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-8.92},{"time":0.4,"angle":26.26},{"time":0.8,"angle":-8.92},{"time":0.9333,"angle":-26.44},{"time":1.1333,"angle":-8.67},{"time":1.2333,"angle":17.39},{"time":1.4667,"angle":-3.9},{"time":1.9,"angle":4.69},{"time":2,"angle":22.56},{"time":2.0333,"angle":-21.83},{"time":2.4333,"angle":-14.22},{"time":3,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":-21.75},{"time":0.3},{"time":0.7,"angle":-26.67},{"time":0.8,"angle":-21.75,"curve":0.328,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.9333,"angle":-19.83,"curve":0.325,"c2":0.31,"c3":0.66,"c4":0.65},{"time":1.2333,"angle":-16.8,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":18.96,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":6.38,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":-6.93,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":2.29,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":22.58,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":-12.72,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":7.98}]},"l leg5":{"rotate":[{"angle":7.51},{"time":0.1},{"time":0.5,"angle":40.71},{"time":0.8,"angle":7.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.9333,"angle":5.91,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.2333,"angle":3.57,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":32.52,"curve":0.342,"c2":0.38,"c3":0.676,"c4":0.71},{"time":1.9,"angle":5.8,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":-10.08,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-1.56,"curve":0.344,"c2":0.41,"c3":0.678,"c4":0.75},{"time":2.4333,"angle":10.52,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":-28.82,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":-9.62}]},"tail":{"rotate":[{"angle":-11.38},{"time":0.1,"angle":0.98},{"time":0.2,"angle":21.9},{"time":0.3,"angle":42.82},{"time":0.4,"angle":66.9},{"time":0.5,"angle":82.78},{"time":0.6,"angle":73.27},{"time":0.7,"angle":22.12},{"time":0.8,"angle":5.63,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":6.83},{"time":1.1333,"angle":-3.18},{"time":1.2333,"angle":4},{"time":1.4667,"angle":-4.11},{"time":1.9,"angle":-5.33},{"time":2,"angle":-5.61},{"time":2.0333,"angle":-5.7},{"time":2.4333,"angle":-6.82},{"time":2.6667,"angle":-7.47},{"time":3,"angle":-8.41}]},"tail2":{"rotate":[{"angle":21.88},{"time":0.1,"angle":16.73},{"time":0.2,"angle":28.65},{"time":0.3,"angle":30.6},{"time":0.4,"angle":39.52},{"time":0.5,"angle":35.58},{"time":0.6,"angle":25.54},{"time":0.7,"angle":30.68},{"time":0.8,"angle":25.76,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.9333,"angle":14.17},{"time":1.1333,"angle":1.71},{"time":1.2333,"angle":6.71},{"time":1.4667,"angle":2.21},{"time":1.9,"angle":2.86},{"time":2,"angle":3.01},{"time":2.0333,"angle":3.06},{"time":2.4333,"angle":-7.59},{"time":2.6667,"angle":-21.43},{"time":3,"angle":4.52}]},"tail3":{"rotate":[{"angle":9.68},{"time":0.1,"angle":-0.06},{"time":0.2,"angle":16.73},{"time":0.3,"angle":-0.19},{"time":0.4,"angle":-0.25},{"time":0.5,"angle":-0.31},{"time":0.6,"angle":2.63},{"time":0.7,"angle":-0.43},{"time":0.8,"angle":24.08,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.9333,"angle":7.46},{"time":1.1333,"angle":-0.7},{"time":1.2333,"angle":26.36},{"time":1.4667,"angle":-0.91},{"time":1.9,"angle":-1.17},{"time":2,"angle":23.89},{"time":2.0333,"angle":-1.26},{"time":2.4333,"angle":29.51},{"time":2.6667,"angle":-1.65},{"time":3,"angle":-1.85}],"translate":[{},{"time":0.4,"x":-8.99,"y":-3.86},{"time":0.8}]},"tail4":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-0.27},{"time":0.2,"angle":-0.55},{"time":0.3,"angle":16.73},{"time":0.4,"angle":-1.1},{"time":0.5,"angle":-1.37},{"time":0.6,"angle":-1.64},{"time":0.7,"angle":34.38},{"time":0.8,"angle":34.35,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.9333,"angle":32.05},{"time":1.1333,"angle":-3.11},{"time":1.2333,"angle":-33.57},{"time":1.4667,"angle":35.01},{"time":1.9,"angle":-30.93},{"time":2,"angle":-32.01},{"time":2.0333,"angle":18.49},{"time":2.4333,"angle":50.3},{"time":2.6667,"angle":29.73},{"time":3,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-20.23},{"time":0.1,"angle":-0.4},{"time":0.2,"angle":-0.8},{"time":0.3,"angle":-1.19},{"time":0.4,"angle":16.73},{"time":0.5,"angle":-1.99},{"time":0.6,"angle":-2.39},{"time":0.7,"angle":-2.79},{"time":0.8,"angle":-20.23,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-39.18},{"time":1.1333,"angle":-4.51},{"time":1.2333,"angle":-4.91},{"time":1.4667,"angle":33.19},{"time":1.9,"angle":-33.29},{"time":2,"angle":-14.52},{"time":2.0333,"angle":-8.1},{"time":2.4333,"angle":-24.82},{"time":2.6667,"angle":-10.62},{"time":3,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-20.23},{"time":0.2,"angle":-0.55},{"time":0.3,"angle":-0.82},{"time":0.4,"angle":-1.1},{"time":0.5,"angle":16.73},{"time":0.6,"angle":-1.64},{"time":0.7,"angle":-1.92},{"time":0.8,"angle":-37.57,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.9333,"angle":-32.92},{"time":1.1333,"angle":-3.11},{"time":1.2333,"angle":-52.46},{"time":1.4667,"angle":35.01},{"time":1.9,"angle":-30.93},{"time":2,"angle":-12.04},{"time":2.0333,"angle":-5.57},{"time":2.4333,"angle":-62.19},{"time":2.6667,"angle":-7.31},{"time":3,"angle":-8.22}]},"r ear s2":{"rotate":[{},{"time":3,"angle":-7.49}]},"headmouth":{"rotate":[{"time":1.9},{"time":2,"angle":-3.81},{"time":2.0333,"angle":-8.16},{"time":2.0667,"angle":-12.2},{"time":2.1,"angle":-7.9},{"time":2.1333,"angle":-12.39},{"time":2.1667,"angle":-11.44},{"time":2.2333,"angle":-17.98},{"time":2.3,"angle":-13.71},{"time":2.4333,"angle":-24.39},{"time":2.6667,"angle":1.02},{"time":3}],"translate":[{"time":1.9},{"time":2,"x":-13.44,"y":11.31},{"time":2.0333,"x":-29.23,"y":22.85},{"time":2.0667,"x":-25.45,"y":24.41},{"time":2.1,"x":-32.91,"y":16.54},{"time":2.1333,"x":-28.89,"y":18.24},{"time":2.1667,"x":-30.6,"y":15.24},{"time":3}],"scale":[{"time":1.9},{"time":2.0333,"x":1.207},{"time":3}]},"shadow":{"translate":[{"x":-3453.81},{"time":0.1,"x":-3037.09},{"time":0.2,"x":-2203.66},{"time":0.3,"x":-1179.52},{"time":0.4,"x":-565.04},{"time":0.5,"x":-317.84},{"time":0.6,"x":-36.69},{"time":0.7},{"time":0.8,"x":61.15},{"time":0.9333,"x":67.27},{"time":1.1333,"x":48.92},{"time":1.2333},{"time":1.4667,"x":-79.5},{"time":1.9},{"time":2,"x":91.72},{"time":2.0333,"x":134.53},{"time":2.4333,"x":91.73},{"time":2.6667}],"scale":[{"y":0.576},{"time":0.1,"y":1.071},{"time":0.2,"y":1.353},{"time":0.3,"y":1.424},{"time":0.4,"y":1.212},{"time":0.5,"y":1.283},{"time":0.6,"y":1.183},{"time":0.7,"y":1.245},{"time":0.8,"y":1.122},{"time":0.9333,"y":1.061},{"time":1.1333,"y":0.817,"curve":"stepped"},{"time":1.2333,"y":0.817},{"time":1.4667,"y":0.755},{"time":1.9},{"time":2,"y":1.122},{"time":2.0333,"y":1.183},{"time":2.4333,"y":1.256},{"time":2.6667}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]}},"ik":{"r ik2":[{"softness":50,"bendPositive":false,"curve":"stepped"},{"time":1.0333,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":1.3,"softness":50}]},"deform":{"default":{"body":{"body":[{"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,23.4961,-62.50654,62.42265,-22.3002,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,49.89716,22.95819,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.74295,37.16302,155.17085,-24.09232,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-3.7588,-102.26871,75.48494,-69.10156,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321],"curve":"stepped"},{"time":1.1333,"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,23.4961,-62.50654,62.42265,-22.3002,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,49.89716,22.95819,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.74295,37.16302,155.17085,-24.09232,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-3.7588,-102.26871,75.48494,-69.10156,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321]},{"time":1.2333,"vertices":[15.73206,-19.10012,-3.65614,-13.89171,8.21622,-11.78294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.02841,-14.95192,0,0,0,0,0,0,0,0,6.79175,4.0816,1.28926,7.81836,19.0617,14.16509,1.55389,23.69785,23.27552,21.47573,-1.28674,31.6435,20.77935,33.39001,-11.64886,37.53635,9.45075,27.82674,-15.07984,25.22443,10.60612,31.22893,-16.92344,28.3082,10.46921,30.82592,-16.70508,27.94291,10.31026,30.35767,-16.45131,27.51845,6.96428,20.50637,-11.11265,18.58848,0,0,-3.96477,4.6761,1.38646,-1.78326,6.7376,-8.2428,11.2348,-13.67148,0.82433,2.42787,-1.31567,2.20115,-10.5059,-44.22236,6.65168,-18.72021,18.57133,-7.05695,13.70272,6.06801,5.00837,14.31902,-3.26551,-29.1581,20.10072,-21.3733,4.65753,13.71403,-7.4318,12.43166,7.84324,-2.34049,-1.80564,-10.00681,6.45476,-7.85692,-4.2534,-7.05144,2.61776,-7.80749,-10.67647,-32.21683,1.95824,-3.2751,-7.142,-67.93263,47.13231,-49.44061,-8.98315,-28.01286,15.52479,-24.98783,7.15484,21.0674,-11.41671,19.09711,12.67016,-3.55518,20.31413,-22.71037,16.61763,-15.54735,3.48098,-3.04037,4.57146,0.68358,1.68552,1.055,0.2882,1.96816,-2.10653,-6.98407,3.95685,-6.12842,-10.11516,-45.41711,28.05194,-37.12286,4.82944,14.22039,-7.7062,12.89057,0,0,0,0,-1.12764,-30.68062,22.64549,-20.73047,-2.59161,-8.41229,4.73084,-7.42304,2.56753,5.42152,-2.46764,5.46788]},{"time":1.4667,"curve":0.271,"c3":0.619,"c4":0.41},{"time":1.9,"offset":60,"vertices":[37.48517,62.19609,58.01733,43.6738,13.45941,74.05562,40.16711,63.65485,-9.40399,84.27005,22.77954,81.67564,-42.74304,78.72104,-10.21722,88.99184,0.15021,15.37225,0,0,0,0,0,0,0,0,-18.41156,25.91011,-7.39111,30.91399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12.12845,3.8064,12.67126,-1.00376,-4.67511,2.56232,0,0,0,0,-14.9501,1.44153,-13.32825,6.92537,0,0,-16.55725,22.66578,0,0,0,0,0,0,0,0,8.89136,54.56642,28.6449,47.28631,-11.92657,1.74176,0,0,0,0,0,0,0,0,5.03729,3.62621,6.02765,1.47992,0,0,0,0,0,0,0,0,-24.07605,55.22311,-1.68732,60.21938],"curve":0.326,"c2":0.31,"c3":0.66,"c4":0.65},{"time":2.0333,"offset":52,"vertices":[87.80539,-3.36305,86.0305,26.09262,130.83118,-21.90453,125.22055,52.53799,231.09903,59.91956,159.18552,171.53738,139.97455,62.84583,105.13766,121.96976,101.75116,59.44374,53.0515,105.1792,29.55228,46.22049,15.95096,52.49091,1.58522,66.16406,0,0,0,0,0,0,0,0,99.92578,15.82083,81.96442,72.44122,-8.27121,-59.20851,-13.54034,-95.89952,63.9221,-72.7597,57.12891,-35.91383,79.75745,-2.03003,-12.68851,-75.12286,48.71669,-58.57599,248.4389,26.41142,200.59967,151.51443,32.05046,-23.61557,-11.67401,-69.22443,45.22089,-54.46356,0.49945,-87.57159,71.31328,-58.93054,-13.29416,-95.16391,18.18263,51.32007,-13.29416,-95.16391,63.52454,-72.09381,-6.30997,-42.96962,28.483,-32.78632,234.6795,96.40231,152.50386,196.57257,48.24133,-58.27618,71.33318,-84.88074,34.19733,-38.8103,-8.07059,-57.77269,38.56491,-43.76678,151.72177,-27.3723,154.17879,64.48386,-8.21057,-58.77573,39.23445,-44.52594,-13.29416,-95.16391,63.52454,-72.09381,136.71231,74.96933,76.5536,138.8316,-2.34671,-16.79988,11.21426,-12.72662,-7.04813,-50.45514,33.68033,-38.22357,-4.77377,-34.17123,22.81015,-25.88733,5.27451,-8.41873,11.83421,-4.42062],"curve":0.358,"c2":0.42,"c3":0.756},{"time":2.4333,"offset":52,"vertices":[121.78693,-17.43251,118.8455,42.70169,121.45566,-21.26025,118.62239,45.84622,175.42584,40.20203,137.86493,116.45798,141.89926,62.06236,106.98592,122.91977,142.46075,91.74541,55.07549,157.10797,55.44174,78.74402,8.14989,93.32208,-9.89001,32.80634,0,0,0,0,0,0,0,0,131.74475,82.10487,52.01645,139.483,25.79602,-85.88007,97.53918,-163.19644,91.48434,-110.04504,85.04752,-65.79146,108.91766,-5.57858,60.92096,-78.17427,44.11397,-49.71747,262.46606,36.98798,201.71605,169.0477,26.32883,-4.14645,18.63394,-132.9446,67.16234,-96.28162,105.9787,-70.70122,89.06021,7.86621,14.16776,-118.22227,-2.03976,94.02371,49.73306,-140.92178,70.21329,-118.33276,8.70432,-76.16702,34.98631,-61.9126,248.1388,155.0454,116.789,244.99268,45.33655,0.63382,80.07954,-173.95483,58.1859,-87.73584,52.98373,-80.64719,53.52129,-63.22638,182.49146,-3.64156,144.65237,96.48193,2.49295,-81.07822,31.68808,-73.56509,26.83438,-132.03143,60.44763,-115.29529,157.94473,132.68073,46.61153,192.5437,2.67133,-46.40553,26.008,-34.77368,44.24838,-114.66135,69.61789,-97.22211,2.86493,-60.93796,27.50298,-51.37921,8.84415,-38.44814,31.4649,-24.35187],"curve":0.358,"c2":0.42,"c3":0.756},{"time":2.6667,"offset":52,"vertices":[87.80539,-3.36305,86.0305,26.09262,130.83118,-21.90453,125.22055,52.53799,231.09903,59.91956,159.18552,171.53738,139.97455,62.84583,105.13766,121.96976,101.75116,59.44374,53.0515,105.1792,29.55228,46.22049,15.95096,52.49091,1.58522,66.16406,0,0,0,0,0,0,0,0,99.97629,16.18695,81.71991,72.71924,0,0,-0.24619,-0.73561,0.39757,-0.66589,58.98053,-22.65485,70.90659,8.0141,-3.87582,-12.03766,6.60556,-10.78387,248.4389,26.41142,200.59967,151.51443,5.0999,6.97037,-4.35648,-16.8421,10.25435,-14.78021,5.65866,-50.63797,46.65887,-30.95007,0,0,15.91461,53.89301,0,0,0,0,-0.5282,-1.57901,0.85345,-1.42944,234.6795,96.40231,152.50386,196.57257,19.63693,-25.81274,7.80864,-12.78693,0,0,0,0,0,0,153.23071,-16.5722,146.96951,72.66568,0,0,0,0,0,0,0,0,136.71231,74.96933,76.5536,138.8316,0,0,0,0,0,0,0,0,0,0,0,0,6.44553,-0.03372,6.23685,1.93149],"curve":0.358,"c2":0.42,"c3":0.756},{"time":3}]},"l hand2":{"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}],"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r arm":{"r arm":[{"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043],"curve":"stepped"},{"time":2,"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043]},{"time":2.0333}]},"r armour u":{"r armour u":[{"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576],"curve":0.25,"c3":0.75},{"time":0.4,"offset":4,"vertices":[163.9654,-45.00104,177.28926,99.94327,181.48798,-69.53613,202.98242,108.74658,140.53593,-68.87366,203.46579,65.00528,76.7599,-81.34448,151.37636,9.09085],"curve":0.25,"c3":0.75},{"time":0.8,"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]},{"time":0.9333,"offset":4,"vertices":[86.15086,-86.93385,131.65134,16.42305,98.35374,-87.21111,139.04272,20.50257,72.67327,-88.64056,118.05659,-0.91488,47.05607,-96.31017,106.23074,-20.62051]},{"time":1.1333,"offset":4,"vertices":[76.72326,-75.8345,106.16136,31.64257,76.53687,-57.70183,90.38624,33.82039,57.22791,-59.38353,79.41578,16.51402,46.80376,-80.84232,91.47905,3.04135]},{"time":1.1667,"offset":4,"vertices":[61.37862,-60.66761,84.92911,25.31406,51.66551,-48.59739,70.66653,17.3245,36.21834,-49.94276,61.89016,3.4794,37.44302,-64.67386,73.18325,2.43308]},{"time":1.2,"offset":4,"vertices":[46.03392,-45.50067,63.69678,18.98553,31.84498,-37.87653,50.86269,6.27486,20.25962,-38.88556,44.28042,-4.10896,28.08224,-48.50535,54.88739,1.82481]},{"time":1.2333,"offset":4,"vertices":[30.68928,-30.33378,42.46452,12.65702,24.77088,-24.68441,35.46425,7.4142,17.04731,-25.35709,31.07607,0.49165,18.72149,-32.3369,36.59159,1.21654]},{"time":1.3}]},"r hand":{"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052],"curve":"stepped"},{"time":2,"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]},{"time":2.0333}]},"r upparm":{"r upparm":[{"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":0.1,"vertices":[-28.71144,-44.1958,56.25366,21.75468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.93488,43.86108,51.64029,65.98203,0.65607,47.6413,-54.5849,17.91281,-131.43018,-29.84882]},{"time":0.2,"vertices":[-70.29115,-121.59358,129.93558,-53.69101,0,0,0,0,0,0,0,0,0,0,0,0,60.33824,12.40262,1.57361,70.47795,138.48999,146.07806,67.43813,181.56848,-45.18221,149.7756,-149.39273,46.96301,-219.99423,-105.85606,-43.01499,-68.8707,65.8432,-65.57346,-24.77599,-39.39505,37.61963,-37.69945]},{"time":0.3,"vertices":[-142.63615,-149.74637,47.56436,-137.68623,0,0,0,0,0,0,0,0,0,0,0,0,50.28187,10.33552,1.31134,58.73162,40.17482,138.09778,-59.78693,144.63666,-163.83813,74.89461,-232.30444,-49.23798,-259.16425,-211.93402,-35.84583,-57.39225,54.86933,-54.64455,-20.64665,-32.82921,31.34969,-31.41621,12.45225,-6.3985,16.0213,-0.0816]},{"time":0.4,"vertices":[-114.10892,-119.7971,38.05149,-110.14899,0,0,0,0,0,0,0,0,0,0,0,0,40.22549,8.26841,1.04907,46.9853,17.968,82.77934,-63.6477,81.75819,-145.03168,21.48185,-197.31894,-77.27264,-203.24228,-209.83081,-28.67666,-45.9138,43.89547,-43.71564,-16.51732,-26.26337,25.07975,-25.13297,9.9618,-5.1188,12.81704,-0.06528]},{"time":0.7,"vertices":[-28.52724,-29.94928,9.51288,-27.53725,0,0,0,0,0,0,0,0,0,0,0,0,10.05638,2.0671,0.26227,11.74633,97.34462,37.31192,50.5202,69.83792,-27.32924,70.25962,-114.90354,35.7408,-166.87126,-25.32079,-7.16917,-11.47845,10.97387,-10.92891,-4.12933,-6.56584,6.26994,-6.28324,2.49045,-1.2797,3.20426,-0.01632]},{"time":0.8,"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":2.0333,"vertices":[-14.41787,-22.19356,28.24859,10.92443,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31.91917,-11.54503,15.38733,-3.67176,5.42368,5.79634,-24.18028,6.86073,-50.13742,-7.49749]},{"time":3}]}}},"drawOrder":[{"offsets":[{"slot":"body","offset":6},{"slot":"r leg","offset":6},{"slot":"l hand2","offset":-34},{"slot":"r finger d2","offset":-36},{"slot":"r finger c2","offset":-37},{"slot":"r finger b2","offset":-38},{"slot":"r finger a2","offset":-39}]},{"time":1.2333,"offsets":[{"slot":"r beard2","offset":3}]}]},"hit":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00005"},{"time":0.1667,"name":"eyefire/eyefire_00006"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00009"},{"time":0.2667,"name":"eyefire/eyefire_00010"},{"time":0.3,"name":"eyefire/eyefire_00011"},{"time":0.3333,"name":"eyefire/eyefire_00012"},{"time":0.3667,"name":"eyefire/eyefire_00014"},{"time":0.4,"name":"eyefire/eyefire_00015"},{"time":0.4333,"name":"eyefire/eyefire_00016"},{"time":0.4667,"name":"eyefire/eyefire_00017"},{"time":0.5,"name":"eyefire/eyefire_00019"},{"time":0.5333,"name":"eyefire/eyefire_00020"},{"time":0.5667,"name":"eyefire/eyefire_00021"},{"time":0.6,"name":"eyefire/eyefire_00022"},{"time":0.6333,"name":"eyefire/eyefire_00024"},{"time":0.6667,"name":"eyefire/eyefire_00025"},{"time":0.7,"name":"eyefire/eyefire_00026"},{"time":0.7333,"name":"eyefire/eyefire_00027"},{"time":0.7667,"name":"eyefire/eyefire_00029"},{"time":0.8,"name":"eyefire/eyefire_00030"},{"time":0.8333,"name":"eyefire/eyefire_00031"},{"time":0.8667,"name":"eyefire/eyefire_00032"},{"time":0.9,"name":"eyefire/eyefire_00034"},{"time":0.9333,"name":"eyefire/eyefire_00035"},{"time":0.9667,"name":"eyefire/eyefire_00036"},{"time":1,"name":"eyefire/eyefire_00037"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"r ik":{"rotate":[{"time":0.0333,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1,"angle":25.21,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"curve":"stepped"},{"time":0.7,"curve":0.352,"c2":0.41,"c3":0.689,"c4":0.75},{"time":0.7667,"angle":9.64,"curve":0.369,"c2":0.63,"c3":0.706},{"time":0.8333}],"translate":[{"time":0.0333,"curve":0.324,"c2":0.23,"c3":0.658,"c4":0.56},{"time":0.1,"x":-101.79,"y":48.93,"curve":0.325,"c2":0.27,"c3":0.659,"c4":0.61},{"time":0.1667,"x":-80.39,"curve":"stepped"},{"time":0.7,"x":-80.39,"curve":0.289,"c2":0.17,"c3":0.637,"c4":0.56},{"time":0.7667,"x":1.39,"y":24.46,"curve":0.333,"c2":0.33,"c3":0.68,"c4":0.71},{"time":0.8333}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":12.92,"y":48.34,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":65.28,"y":-16.92,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":74.96,"y":-32.61,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":-2.67,"y":33.81,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":30.14,"y":55.33,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-15.63,"y":47.49,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":-51.28,"y":-15.43,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":9.84,"y":-19.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.5333,"x":46.76,"y":-38.04,"curve":0.34,"c2":0.35,"c3":0.678,"c4":0.7},{"time":0.7,"x":42.59,"y":2.41,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"l ik":{"rotate":[{"time":0.4667,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.5333,"angle":-13.4,"curve":0.34,"c2":0.35,"c3":0.678,"c4":0.7},{"time":0.7}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-90.87,"curve":"stepped"},{"time":0.4667,"x":-90.87,"curve":0.291,"c2":0.1,"c3":0.631,"c4":0.47},{"time":0.5333,"x":7.14,"y":90.87,"curve":0.308,"c2":0.25,"c3":0.676,"c4":0.7},{"time":0.7}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-23.46,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.1,"angle":15.41,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.1667,"angle":43.89,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":0.4667,"angle":70.49,"curve":0.346,"c2":0.41,"c3":0.68,"c4":0.75},{"time":0.7,"angle":19.6,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":34.99,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":42.13,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":-8.35,"curve":0.314,"c2":0.27,"c3":0.651,"c4":0.61},{"time":0.3333,"angle":9.48,"curve":0.329,"c2":0.32,"c3":0.681,"c4":0.71},{"time":0.7,"angle":2.12,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"x":-52.34,"y":46.37,"curve":0.324,"c2":0.23,"c3":0.658,"c4":0.56},{"time":0.1,"x":-57.03,"y":72.75,"curve":0.309,"c2":0.19,"c3":0.644,"c4":0.54},{"time":0.3333,"x":-104.82,"y":61.44,"curve":0.311,"c2":0.25,"c3":0.649,"c4":0.6},{"time":0.7,"x":-20.34,"y":18.01,"curve":0.327,"c2":0.31,"c3":0.664,"c4":0.66},{"time":1}]},"l upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":0.7,"angle":-28,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":-6.45}]},"l finger a":{"rotate":[{"angle":-2.5}]},"l finger a2":{"rotate":[{"angle":5.32}],"translate":[{"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5}]},"l finger b2":{"rotate":[{"angle":16.78}],"translate":[{"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5}]},"l finger c2":{"rotate":[{"angle":16.54}],"translate":[{"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"l finger d":{"rotate":[{"angle":-2.5}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":164.73,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1,"angle":56.93,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-2.31,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.4667,"angle":-48.64,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-60.78,"curve":0.369,"c2":0.63,"c3":0.707},{"time":1,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":769.74,"y":-4.16,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.1,"x":-38.06,"y":-43.54,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.1667,"x":-293.89,"y":-78.91,"curve":0.328,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.4667,"x":-319.95,"y":69.94,"curve":0.337,"c2":0.34,"c3":0.679,"c4":0.7},{"time":0.7,"x":-52.78,"y":-127.22,"curve":0.382,"c2":0.58,"c3":0.732},{"time":1}]},"l finger d2":{"rotate":[{"angle":26.01}],"translate":[{"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":87.31,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":-15.69,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":-58.76,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-108.56,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-38.56,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1,"angle":-6.74}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":25.92,"y":124.89,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"x":-3.54,"y":-53.5,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"x":-26.77,"y":-128.17,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"x":-62.12,"y":-136.89,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":4.04,"y":-103.39,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}]},"r upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":0.7,"angle":42.78,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":12.65}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":73.73,"y":-9.65,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":49.53,"y":-9.85,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":82.59,"y":-14.08,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":96.88,"y":-28.67,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":54.66,"y":-48.55,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":28.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.3,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":58.28,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":67.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":101.84,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.4,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-19.98,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-43.93,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-57.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-18.62,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":-8.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":10.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":1.48,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-3.19,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-34.21,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-9.49}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":36.4,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":57.75,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":39.01,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":20.82,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":7.12}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.64,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-23.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-55.53,"curve":0.343,"c2":0.37,"c3":0.68,"c4":0.71},{"time":0.4667,"angle":-33.3,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":5.38,"curve":0.368,"c2":0.63,"c3":0.705},{"time":1,"angle":-4.31}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-69.32,"y":62.19,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-21.53,"y":24.11,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":14.64,"y":-70.3,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":-13.03,"y":-34.66,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":36.17,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"angle":39.42,"curve":0.314,"c2":0.24,"c3":0.649,"c4":0.58},{"time":0.1667,"angle":16.9,"curve":0.306,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-24.36,"curve":0.339,"c2":0.35,"c3":0.679,"c4":0.71},{"time":0.7,"angle":14.42,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-25.52,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.95,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1667,"angle":34.72,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":28.88,"curve":0.344,"c2":0.37,"c3":0.678,"c4":0.71},{"time":0.6333,"angle":-29.04,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.7,"angle":-12.45,"curve":0.347,"c2":0.41,"c3":0.681,"c4":0.75},{"time":0.8333,"angle":13.31,"curve":0.356,"c2":0.65,"c3":0.691},{"time":1,"angle":-2.28}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"angle":36.17,"curve":0.323,"c2":0.17,"c3":0.657,"c4":0.51},{"time":0.1,"angle":39.42,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1667,"angle":16.9,"curve":0.307,"c2":0.21,"c3":0.644,"c4":0.56},{"time":0.4667,"angle":-24.36,"curve":0.322,"c2":0.29,"c3":0.657,"c4":0.63},{"time":0.7,"angle":14.42,"curve":0.327,"c2":0.31,"c3":0.663,"c4":0.66},{"time":1}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-19.97,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":22.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1667,"angle":40.27,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":34.43,"curve":0.344,"c2":0.37,"c3":0.678,"c4":0.71},{"time":0.6333,"angle":-23.49,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.7,"angle":-6.9,"curve":0.347,"c2":0.41,"c3":0.681,"c4":0.75},{"time":0.8333,"angle":18.86,"curve":0.356,"c2":0.65,"c3":0.691},{"time":1,"angle":3.27}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":30.35,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":1.75,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":4.65,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-6.59,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-3.61,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-58.43,"y":-54.32,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"x":-260.66,"y":9.12,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"x":-230.19,"y":5.77,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"x":-37.59,"y":-15.4,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":24.51,"y":-84.79,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":67.62,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"angle":123.9,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"angle":46.02,"curve":0.311,"c2":0.25,"c3":0.649,"c4":0.6},{"time":0.3333,"angle":-8.31,"curve":0.326,"c2":0.31,"c3":0.662,"c4":0.65},{"time":0.4667,"angle":-43.48,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-5.26,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":-32.58,"y":323.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":-52.71,"y":368.77,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"x":-78.73,"y":205.05,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.3333,"x":-204.38,"y":122.23,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.4667,"x":-88.19,"y":158.14,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"x":48.72,"y":-37.23,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95}]},"shadow":{"translate":[{"time":0.0333,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-132.37,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":-127.28,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":-56,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7}],"scale":[{"curve":0.323,"c3":0.656,"c4":0.34},{"time":0.0333,"y":0.796,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"y":0.844,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"y":1.131,"curve":0.311,"c2":0.25,"c3":0.757},{"time":1}]},"r upparm3":{"rotate":[{},{"time":0.0333,"angle":-102.88},{"time":0.1,"angle":7.97},{"time":0.1667,"angle":51.87},{"time":0.4667,"angle":88.15},{"time":0.7,"angle":35.32},{"time":1}],"translate":[{},{"time":0.0333,"x":-11.7,"y":10.92},{"time":0.1,"x":-8.78,"y":-0.12},{"time":0.4667,"x":-22.85,"y":-27.98},{"time":0.7,"x":18.84,"y":1.59},{"time":1}]},"r finger a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":28.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.3,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":58.28,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":67.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":101.84,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.4,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-19.98,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-43.93,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-57.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-18.62,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":-8.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":10.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":1.48,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-3.19,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-34.21,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-9.49}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r finger d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":36.4,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":57.75,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":39.01,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":20.82,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":7.12}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"l hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-19.79},{"time":0.1,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-10.97},{"time":0.7},{"time":1,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-32.84},{"time":0.1},{"time":0.1667,"angle":-12.75},{"time":0.4667,"angle":-10.69},{"time":0.7,"angle":-17.17},{"time":1,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-48.54},{"time":0.1},{"time":0.1667,"angle":10.41},{"time":0.4667,"angle":11.72},{"time":0.7,"angle":42.67},{"time":1,"angle":-1.85}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":-61.9},{"time":0.1667,"curve":"stepped"},{"time":0.7},{"time":1,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333},{"time":0.1,"angle":-75.34},{"time":0.1667,"angle":-21.66},{"time":0.4667},{"time":0.7,"angle":-54.92},{"time":1,"angle":-8.22}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":23.05},{"time":0.1,"angle":38.94},{"time":0.1667,"angle":40.08},{"time":0.4667,"angle":66.43},{"time":0.7,"angle":-37.39},{"time":1,"angle":-8.22}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-37.07},{"time":0.1,"angle":4.09},{"time":0.1667},{"time":0.4667,"angle":9.33},{"time":0.7,"angle":-23.32},{"time":0.8333,"angle":-14.82},{"time":1,"angle":9.15}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":0.729},{"time":0.1,"x":0.864},{"time":0.1667,"x":1.304},{"time":0.4667,"x":1.094},{"time":0.7,"x":0.831},{"time":1}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0333,"x":10.19,"y":11.92},{"time":0.1,"x":6.58,"y":-9.31},{"time":0.1667,"x":-14.72,"y":-8.62},{"time":0.4667,"x":-8.71,"y":-5.52},{"time":0.7,"x":11.07,"y":25.64},{"time":1,"y":-15.36}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":33.85},{"time":0.1,"angle":3.29},{"time":0.1667,"angle":-42.38},{"time":0.4667,"angle":-24.67},{"time":0.7,"angle":15.69},{"time":0.8333,"angle":13.56},{"time":1,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":33.85},{"time":0.1,"angle":20.17},{"time":0.1667,"angle":34.82},{"time":0.3,"angle":-41.81},{"time":0.4667,"angle":-60.29},{"time":0.6,"angle":-42.16},{"time":0.7,"angle":-10.93},{"time":0.8333,"angle":16.66},{"time":1,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-28.82},{"time":0.1},{"time":0.1667,"angle":38.87},{"time":0.4667},{"time":0.7,"angle":-32.16},{"time":1,"angle":7.98}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":27.64},{"time":0.1667,"angle":-9.15},{"time":0.4667,"angle":-16.72},{"time":0.7,"angle":31.14},{"time":1,"angle":-9.62}]},"headmouth":{"rotate":[{},{"time":0.1333,"angle":-27.08},{"time":0.5333,"angle":-7.87},{"time":1}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-30.45},{"time":0.7,"angle":-18.66},{"time":0.8333,"angle":-22.58},{"time":1,"angle":8.77}],"scale":[{"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.45},{"time":0.1,"angle":-16.16},{"time":0.1667,"angle":-31.14},{"time":0.4667,"angle":-21.04},{"time":0.7,"angle":17},{"time":1,"angle":-0.61}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":26.3},{"time":0.1,"angle":30.94},{"time":0.1667,"angle":15.76},{"time":0.2667,"angle":-40.58},{"time":0.4667,"angle":-37.74},{"time":0.7,"angle":-32.12},{"time":0.8333,"angle":16.53},{"time":1,"angle":-10}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-30.45},{"time":0.7,"angle":-18.66},{"time":0.8333,"angle":-22.58},{"time":1,"angle":-11.82}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.45},{"time":0.1,"angle":-16.16},{"time":0.1667,"angle":-31.14},{"time":0.4667,"angle":-21.04},{"time":0.7,"angle":17},{"time":1,"angle":1.82}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":26.3},{"time":0.1,"angle":30.94},{"time":0.1667,"angle":15.76},{"time":0.2667,"angle":-40.58},{"time":0.4667,"angle":-37.74},{"time":0.7,"angle":-32.12},{"time":0.8333,"angle":16.53},{"time":1,"angle":15.47}]},"hair t":{"rotate":[{"time":0.1667},{"time":0.4667,"angle":-7.53},{"time":0.7}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":8.83},{"time":0.1,"angle":10.81},{"time":0.1667,"angle":12.21},{"time":0.4667,"angle":-9.5},{"time":0.7,"angle":-15.08},{"time":1,"angle":0.61}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":83.56},{"time":0.1667,"angle":96.33},{"time":0.4667,"angle":96.83},{"time":0.7,"angle":51},{"time":1,"angle":26.63}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":34.16},{"time":0.1,"angle":10.81},{"time":0.1667,"angle":19.55},{"time":0.4667,"angle":-19.87},{"time":0.7,"angle":-31.29},{"time":1,"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":34.16},{"time":0.1,"angle":14.59},{"time":0.1667,"angle":12.21},{"time":0.4667,"angle":19.46},{"time":0.7,"angle":-20.89},{"time":1,"angle":5.88}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":23.39}],"translate":[{"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.7},{"time":1,"angle":63.33}]},"s":{"scale":[{"x":0,"y":0}]},"l armour":{"rotate":[{"angle":1.84}]},"r arm":{"rotate":[{"angle":-7.98}]},"hair t10":{"rotate":[{"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54}]},"headbeard b":{"rotate":[{"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67}]},"headbeard b3":{"rotate":[{"angle":8.76}]},"r ear s":{"rotate":[{"angle":-5.67}]},"r ear ring b":{"rotate":[{"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"headbeard f":{"rotate":[{"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99}]},"r ear s2":{"rotate":[{"angle":-7.49}]},"skill":{"scale":[{"x":0,"y":0}]}},"deform":{"default":{"body":{"body":[{"time":0.1667,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"vertices":[50.96356,-63.95969,125.297,9.36234,99.62122,-76.56879,137.16132,12.42788,110.50739,-82.19516,96.17535,1.83795,72.90155,-62.75839,33.88568,20.26118,38.76379,-7.49484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.43463,-34.76004,37.47375,-29.39993,51.36212,-34.07013,59.93573,-63.58115,0,0,0,0,0,0,92.04196,-22.24189,53.76447,-77.94763,0,0,0,0,0,0,0,0,0,0,0,0,4.94843,-2.55756,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50.45117,-64.9491,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100.59836,-10.82629,67.75372,-75.1456],"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]}}}},"idle":{"slots":{"r eye fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":10.23,"y":32.42,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-14.9,"y":-20.45,"curve":0.25,"c3":0.75},{"time":1.8667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":-11.96,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-40.32,"y":-0.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-7.85,"y":2.92}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-13.07,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":-32.01,"y":36.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.9,"y":0.9,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l upparm2":{"rotate":[{"angle":-6.45}]},"l armour":{"rotate":[{"angle":1.84}]},"l finger a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":17.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-7.5,"y":19.61,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.64,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.59,"y":20.84,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.16,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-5.23,"y":20.34,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l finger d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":59.08,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.33,"y":20.87,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"r upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":2.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":36.1,"y":-45.18,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":12.97}]},"r arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.2}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r finger d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.63,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.31}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":12.82,"y":6.27,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r ear":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-3.09,"y":-14.86,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.842,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":14.28,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-16.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":12.07,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-2.28}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":18.73,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":3.59,"y":24.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.76,"curve":0.25,"c3":0.75},{"time":1.4,"angle":24.3,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.27}]},"hair t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.8667}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":0.61}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-2.51,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-11.93,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":9.92,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":5.88}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":63.33}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.63}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":-2.26,"y":14.51}]},"hair t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-32.32,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":10.5,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":9.54}]},"head2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":4.6,"y":-21.12,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.7,"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.76}]},"r ear s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":8.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-5.67}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":12.16,"y":-17.99,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"r ear ring b":{"rotate":[{"angle":8.97,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-10.98,"curve":0.25,"c3":0.75},{"time":1.4,"angle":28.93,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.4,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.4,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":5.7,"y":-8.17}]},"r ear ringa":{"rotate":[{"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.4667,"angle":-29.16,"curve":0.314,"c2":0.27,"c3":0.686,"c4":0.73},{"time":1.4,"angle":16.48,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.8667}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.19,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.77}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":9.4,"y":-12.46,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.61}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-10}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":15.47,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-22.67,"y":24.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.819,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.4,"angle":15.47,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":1.82}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":15.47}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":40.99}]},"l leg":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-2.29,"y":50.63,"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.75,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":9.15}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":5.8,"y":-22.14,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.9333,"y":16.45,"curve":0.25,"c3":0.75},{"time":1.8667,"y":-15.36}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":10.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10.83,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":27.49,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":27.96,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-12.01,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.98}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-30.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":11.31,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.62}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.1667,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6333,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-8.22}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-45.72,"y":-64.16,"curve":0.25,"c3":0.75},{"time":1.8667}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":16.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":5.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":-98.01,"y":-10.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":0.9,"y":0.9,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.95,"y":0.95}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-3.18,"curve":0.25,"c3":0.75},{"time":1.4,"angle":14.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":59.09,"y":-135.37,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":1.1,"y":1.1,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r ear s2":{"rotate":[{"angle":-7.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-18.83,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.85,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-7.49}]},"shadow":{"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.97,"y":0.895,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r finger a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r finger b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r finger c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r finger d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"l hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.9333,"offset":36,"vertices":[-2.41049,14.08145,-10.63983,9.53357,11.41489,0.51631,8.62204,7.49872,20.82419,30.77104,-2.80862,37.0488,53.80902,21.06067,29.06711,49.94165,43.71988,54.54894,0.35004,69.90634,-0.88062,19.47218,-12.7916,14.70761,5.71973,30.41342,-14.42053,27.38129,2.25964,28.48312,-15.93155,23.71869,-5.14142,35.24371,-25.93134,24.41534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.39771,-31.9695,3.10556,-38.34393,-32.63104,-64.54259,-2.67554,-49.07106,28.40125,-40.10614,15.19,-39.32011,36.33786,-21.36356,-0.30249,-29.38377,18.0249,-23.20792,0.36182,-7.9995,5.25519,-6.04211,8.23709,-14.43842,-6.16132,-80.23037,45.0358,-66.68332,-11.18542,-41.29755,16.90335,-39.30496,-2.67551,-49.07107,0,0,-4.45917,-81.78522,47.33566,-66.84366,-8.74689,-59.13564,29.90024,-51.76413,-2.25064,10.54112,-8.31439,6.85941,14.49524,-24.1174,30.06024,-49.46475,0,0,0,0,0,0,-4.30402,-49.14474,27.1712,-41.17593,-2.44653,-18.05902,9.30701,-15.6683,2.06238,-45.59348,29.95184,-34.43707,0,0,0,0,-20.05573,10.5144,-22.24652,-4.22729,0,0,0,0,0,0,0,0,3.87411,11.61391,-4.18277,11.50629],"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt f":{"skirt f":[{"curve":0.25,"c3":0.75},{"time":0.9333,"vertices":[-1.8898,-25.58164,0.47333,-28.95829,-1.18393,-41.18966,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.78281,5.60857,0,0,0,0,11.63187,18.17604,12.89143,17.3054,0,0,0,0,0,0,0,0,0,0,0,0,-0.37607,-29.25813,5.20969,-17.44646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.98029,-21.54911],"curve":0.25,"c3":0.75},{"time":1.8667}]}}},"drawOrder":[{"offsets":[{"slot":"r beard2","offset":3}]}]},"skill":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00005"},{"time":0.1667,"name":"eyefire/eyefire_00006"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00009"},{"time":0.2667,"name":"eyefire/eyefire_00010"},{"time":0.3,"name":"eyefire/eyefire_00011"},{"time":0.3333,"name":"eyefire/eyefire_00012"},{"time":0.3667,"name":"eyefire/eyefire_00014"},{"time":0.4,"name":"eyefire/eyefire_00015"},{"time":0.4333,"name":"eyefire/eyefire_00016"},{"time":0.4667,"name":"eyefire/eyefire_00017"},{"time":0.5,"name":"eyefire/eyefire_00019"},{"time":0.5333,"name":"eyefire/eyefire_00020"},{"time":0.5667,"name":"eyefire/eyefire_00021"},{"time":0.6,"name":"eyefire/eyefire_00022"},{"time":0.6333,"name":"eyefire/eyefire_00024"},{"time":0.6667,"name":"eyefire/eyefire_00025"},{"time":0.7,"name":"eyefire/eyefire_00026"},{"time":0.7333,"name":"eyefire/eyefire_00027"},{"time":0.7667,"name":"eyefire/eyefire_00029"},{"time":0.8,"name":"eyefire/eyefire_00030"},{"time":0.8333,"name":"eyefire/eyefire_00031"},{"time":0.8667,"name":"eyefire/eyefire_00032"},{"time":0.9,"name":"eyefire/eyefire_00033"},{"time":0.9333,"name":"eyefire/eyefire_00035"},{"time":0.9667,"name":"eyefire/eyefire_00036"},{"time":1,"name":"eyefire/eyefire_00010"},{"time":1.0333,"name":"eyefire/eyefire_00001"},{"time":1.0667,"name":"eyefire/eyefire_00003"},{"time":1.1,"name":"eyefire/eyefire_00004"},{"time":1.1333,"name":"eyefire/eyefire_00005"},{"time":1.1667,"name":"eyefire/eyefire_00006"},{"time":1.2,"name":"eyefire/eyefire_00008"},{"time":1.2333,"name":"eyefire/eyefire_00009"},{"time":1.2667,"name":"eyefire/eyefire_00010"},{"time":1.3,"name":"eyefire/eyefire_00011"},{"time":1.3333,"name":"eyefire/eyefire_00013"},{"time":1.3667,"name":"eyefire/eyefire_00014"},{"time":1.4,"name":"eyefire/eyefire_00015"},{"time":1.4333,"name":"eyefire/eyefire_00016"},{"time":1.4667,"name":"eyefire/eyefire_00018"},{"time":1.5,"name":"eyefire/eyefire_00019"},{"time":1.5333,"name":"eyefire/eyefire_00020"},{"time":1.5667,"name":"eyefire/eyefire_00021"},{"time":1.6,"name":"eyefire/eyefire_00022"},{"time":1.6333,"name":"eyefire/eyefire_00024"},{"time":1.6667,"name":"eyefire/eyefire_00025"},{"time":1.7,"name":"eyefire/eyefire_00026"},{"time":1.7333,"name":"eyefire/eyefire_00027"},{"time":1.7667,"name":"eyefire/eyefire_00029"},{"time":1.8,"name":"eyefire/eyefire_00030"},{"time":1.8333,"name":"eyefire/eyefire_00031"},{"time":1.8667,"name":"eyefire/eyefire_00032"},{"time":1.9,"name":"eyefire/eyefire_00034"},{"time":1.9333,"name":"eyefire/eyefire_00035"},{"time":1.9667,"name":"eyefire/eyefire_00036"},{"time":2,"name":"eyefire/eyefire_00010"},{"time":2.0333,"name":"eyefire/eyefire_00002"},{"time":2.0667,"name":"eyefire/eyefire_00003"},{"time":2.1,"name":"eyefire/eyefire_00004"},{"time":2.1333,"name":"eyefire/eyefire_00005"},{"time":2.1667,"name":"eyefire/eyefire_00006"},{"time":2.2,"name":"eyefire/eyefire_00008"},{"time":2.2333,"name":"eyefire/eyefire_00009"},{"time":2.2667,"name":"eyefire/eyefire_00010"},{"time":2.3,"name":"eyefire/eyefire_00011"},{"time":2.3333,"name":"eyefire/eyefire_00013"},{"time":2.3667,"name":"eyefire/eyefire_00014"},{"time":2.4,"name":"eyefire/eyefire_00015"},{"time":2.4333,"name":"eyefire/eyefire_00016"},{"time":2.4667,"name":"eyefire/eyefire_00018"},{"time":2.5,"name":"eyefire/eyefire_00019"},{"time":2.5333,"name":"eyefire/eyefire_00020"},{"time":2.5667,"name":"eyefire/eyefire_00021"},{"time":2.6,"name":"eyefire/eyefire_00023"},{"time":2.6333,"name":"eyefire/eyefire_00024"},{"time":2.6667,"name":"eyefire/eyefire_00025"},{"time":2.7,"name":"eyefire/eyefire_00026"},{"time":2.7333,"name":"eyefire/eyefire_00027"},{"time":2.7667,"name":"eyefire/eyefire_00029"},{"time":2.8,"name":"eyefire/eyefire_00030"},{"time":2.8333,"name":"eyefire/eyefire_00031"},{"time":2.8667,"name":"eyefire/eyefire_00032"},{"time":2.9,"name":"eyefire/eyefire_00034"},{"time":2.9333,"name":"eyefire/eyefire_00035"},{"time":2.9667,"name":"eyefire/eyefire_00036"},{"time":3,"name":"eyefire/eyefire_00037"}]},"skill":{"attachment":[{"name":null},{"time":0.5333,"name":"skill/5"},{"time":0.7333,"name":"skill/6"},{"time":0.7667,"name":"skill/7"},{"time":0.8667,"name":"skill/8"},{"time":0.9333,"name":"skill/9"},{"time":1.0333,"name":"skill/10"},{"time":1.1333,"name":"skill/11"},{"time":1.2333,"name":"skill/12"},{"time":1.2667,"name":"skill/13"},{"time":1.3,"name":"skill/14"},{"time":1.3333,"name":"skill/15"},{"time":1.3667,"name":"skill/16"},{"time":1.4,"name":"skill/17"},{"time":1.4333,"name":"skill/18"},{"time":1.4667,"name":"skill/19"},{"time":1.5,"name":"skill/20"},{"time":1.5333,"name":null}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.03},{"time":0.2667,"angle":8.71},{"time":0.3667,"angle":0.42},{"time":0.4333,"angle":-4.13},{"time":0.4667,"angle":-1.03},{"time":1.1667,"angle":12.46},{"time":1.2667,"angle":0.27},{"time":1.4,"angle":-4.27},{"time":1.9667,"angle":-10.87},{"time":2.5,"angle":-23.32},{"time":2.6667,"angle":-11.3},{"time":2.7333,"angle":0.46},{"time":2.8667,"angle":5.04},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-61.4,"y":-89.91},{"time":0.2667,"x":-143.8,"y":-26.64},{"time":0.3667,"x":-224.94,"y":77},{"time":0.4333,"x":22.87,"y":-15.17},{"time":0.4667,"x":109.65,"y":-48.74},{"time":1.1667,"x":6.62,"y":-44.84},{"time":1.2667,"x":111.06,"y":13.19},{"time":1.4,"x":24.54,"y":54.39},{"time":1.9667,"x":17.67,"y":-6.04},{"time":2.5,"x":41.02,"y":-19.77},{"time":2.6667,"x":22.37,"y":-10.79},{"time":2.7333,"x":14.92,"y":-7.19},{"time":2.8667}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":6.03},{"time":0.2667,"angle":44.43},{"time":0.3667,"angle":-77.68},{"time":0.4333,"angle":-3.17},{"time":0.4667,"angle":95.02},{"time":0.5333,"angle":113.32},{"time":1.1667,"angle":90.81},{"time":1.2667,"angle":45.14},{"time":1.3333,"angle":16.95},{"time":1.9667,"angle":7.45},{"time":2.5,"angle":-13.6},{"time":2.6667,"angle":16.35},{"time":2.8667},{"time":3,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":120.37,"y":40.89},{"time":0.2667,"x":-226.83,"y":262.85},{"time":0.3667,"x":-613.37,"y":525.86},{"time":0.4333,"x":228.17,"y":161.45},{"time":0.4667,"x":1219.84,"y":-322.34},{"time":0.5333,"x":1223.81,"y":-222.21},{"time":0.6,"x":1125.92,"y":-164.04},{"time":0.6667,"x":1100.6,"y":-199.89},{"time":0.7,"x":1098.74,"y":-164.49},{"time":0.7333,"x":1085.31,"y":-185.2},{"time":0.7667,"x":1089.89,"y":-146.31},{"time":0.8,"x":1056.94,"y":-182.19},{"time":0.8333,"x":1054.45,"y":-142.4},{"time":0.8667,"x":1047.28,"y":-177.92},{"time":0.9333,"x":1031.34,"y":-121.25},{"time":1,"x":982.45,"y":-147.96},{"time":1.0667,"x":953.74,"y":-100.45},{"time":1.1667,"x":910.67,"y":-101.25},{"time":1.2667,"x":70.18,"y":-60.67},{"time":1.3333,"x":60.37,"y":121.19},{"time":1.9667,"x":-48.93,"y":26.13},{"time":2.5,"x":33.5,"y":-81.54},{"time":2.6667,"x":-76.89,"y":-16.48},{"time":2.7333,"x":-171.19,"y":89.85},{"time":2.8667,"x":63.81,"y":-25.52},{"time":3}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.5333,"x":0.751,"y":0.751,"curve":"stepped"},{"time":2.5,"x":0.751,"y":0.751},{"time":2.8667}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":21.11},{"time":0.2667,"angle":34.4},{"time":0.3667,"angle":41.26},{"time":0.4333,"angle":-50.06},{"time":0.4667,"angle":-50.83},{"time":1.1333,"angle":-95.12},{"time":1.1667,"angle":-146.98},{"time":1.2333,"angle":-38.36},{"time":1.2667,"angle":-23.14},{"time":1.3,"angle":1.54},{"time":1.3333,"angle":72.8},{"time":1.4,"angle":103.52},{"time":1.5333,"angle":111.69},{"time":1.9667,"angle":154.79},{"time":2.5,"angle":176.43},{"time":2.6667,"angle":108.32},{"time":2.7,"angle":15.14},{"time":2.7333,"angle":-8.23},{"time":2.8667,"angle":-13.63},{"time":3,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"x":-31.25,"y":-37.5},{"time":0.2667,"x":-60.05,"y":105.72},{"time":0.3667,"x":-131.25,"y":225},{"time":0.4333,"x":-100.52,"y":153.09},{"time":0.4667,"x":-535.02,"y":442.88},{"time":1.1333,"x":-670.18,"y":422.97},{"time":1.1667,"x":-642.6,"y":573.81},{"time":1.2333,"x":-213.4,"y":332.2},{"time":1.2667,"x":-105.03,"y":260.32},{"time":1.3,"x":-38.13,"y":244.9},{"time":1.3333,"x":371.64,"y":122.17},{"time":1.4,"x":407.25,"y":278.83},{"time":1.5333,"x":417.36,"y":402.07},{"time":1.9667,"x":434.51,"y":566.11},{"time":2.5,"x":290.33,"y":243.81},{"time":2.6667,"x":240.04,"y":62.11},{"time":2.7333,"x":20.51,"y":42.38},{"time":2.8667,"x":-76.46,"y":5.13},{"time":3,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4333},{"time":0.4667,"y":-1,"curve":"stepped"},{"time":1.9667,"y":-1},{"time":2.5,"y":-0.565},{"time":2.6667,"x":0.711,"y":-0.766},{"time":2.7},{"time":3,"x":0.95,"y":0.95}]},"r upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-24.35},{"time":0.2667,"angle":-37.26},{"time":0.3667,"angle":-37.23},{"time":0.4333,"angle":-62.7},{"time":0.4667,"angle":95.46},{"time":0.5333,"angle":107.56},{"time":1.1667,"angle":92.09},{"time":1.2667,"angle":-34.17},{"time":1.9667,"angle":-43.69},{"time":2.5,"angle":-60.1},{"time":2.6667,"angle":-70.15},{"time":2.7333,"angle":-37.86},{"time":2.8667,"angle":-5.8},{"time":3,"angle":-6.74}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-7.31,"y":-20.37},{"time":0.2667,"x":6.31,"y":56.99},{"time":0.3667,"x":24.31,"y":8.76},{"time":0.4333,"x":-72.1,"y":-142.92},{"time":0.4667,"x":68.98,"y":-167.34},{"time":0.5333,"x":33.11,"y":-180.49},{"time":1.1667,"x":24.31,"y":8.2},{"time":1.2667,"x":-0.19,"y":-140.11},{"time":1.9667,"x":-26.37,"y":-161.8,"curve":"stepped"},{"time":2.5,"x":-26.37,"y":-161.8},{"time":2.8667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-12.19},{"time":0.2667,"angle":6.53},{"time":0.3667,"angle":24.69},{"time":0.4333,"angle":54.22},{"time":0.4667,"angle":0.87},{"time":1.1667,"angle":-26.44},{"time":1.2667,"angle":-13.84},{"time":1.4,"angle":14.64},{"time":1.9667,"angle":43.3},{"time":2.5,"angle":56.68},{"time":2.6667,"angle":39.49},{"time":2.7333,"angle":16.66},{"time":2.8667,"angle":-5.11},{"time":3,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"x":14.34,"y":-20.85},{"time":0.2667,"x":-9.76,"y":36.53},{"time":0.3667,"x":-0.26,"y":-3.78},{"time":0.4333,"x":-0.25,"y":-3.66},{"time":0.4667,"x":-27.41,"y":-59.88},{"time":1.1667,"x":1.56,"y":6.75},{"time":1.2667,"x":-25.1,"y":-4.85},{"time":1.4,"x":13.01,"y":0.94},{"time":1.9667,"x":32.32,"y":15.52},{"time":2.5,"x":-40.3,"y":2.78},{"time":2.6667,"x":0.88,"y":0.43},{"time":2.7333,"x":8.07,"y":-13.87},{"time":2.8667},{"time":3,"x":-7.85,"y":2.92}]},"r upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":2.5,"angle":-1.68},{"time":2.8667},{"time":3,"angle":12.65}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.48,"y":-51.78},{"time":0.2667,"x":-51.18,"y":55.67},{"time":0.3667,"x":19.29,"y":-28.02},{"time":0.4333,"x":26.15,"y":-98.44},{"time":0.4667,"x":87.29,"y":30.31},{"time":0.5333,"x":4.79,"y":-48.18},{"time":1.1667,"x":46.4,"y":-127.16},{"time":1.2667,"x":22.49,"y":-35.79},{"time":1.9667,"x":-23.7,"y":-52.16,"curve":"stepped"},{"time":2.5,"x":-23.7,"y":-52.16},{"time":2.8667}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":17.16},{"time":0.2667,"angle":-3.01},{"time":0.3667,"angle":-32.36},{"time":0.4333,"angle":-50.81},{"time":0.4667,"angle":-2.27},{"time":1.1667,"angle":25.66},{"time":1.2667,"angle":-16.29},{"time":1.4,"angle":-20.46},{"time":1.9667,"angle":-20.91},{"time":2.5,"angle":-18.68},{"time":2.6667,"angle":-16.09},{"time":2.7333,"angle":-10.97},{"time":2.8667,"angle":3.9},{"time":3,"angle":-4.31}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.74},{"time":0.2667,"angle":26.02},{"time":0.3667,"angle":-12.97},{"time":0.4333,"angle":-28.46},{"time":0.4667,"angle":-84.46},{"time":1.1333,"angle":-53.97},{"time":1.1667,"angle":-16.7},{"time":1.2333,"angle":23.44},{"time":1.2667,"angle":2.88},{"time":1.3,"angle":44.72},{"time":1.3333,"angle":58.53},{"time":1.9667,"angle":36.88},{"time":2.5,"angle":18.71},{"time":2.6667,"angle":23.41},{"time":2.7333,"angle":14.65},{"time":2.8667,"angle":9.4},{"time":3}],"translate":[{"time":0.0667},{"time":0.2667,"x":-0.07,"y":60.35},{"time":0.3667,"x":-43.08,"y":70.98},{"time":0.4333,"x":50.21,"y":235.41},{"time":0.4667,"x":-20.77,"y":339.32},{"time":1.1333,"x":-48.52,"y":286.89},{"time":1.1667,"x":-119.99,"y":423.7},{"time":1.2333,"x":-82.01,"y":66.55},{"time":1.2667,"x":-103.21,"y":60.51},{"time":1.3,"x":-134.41,"y":86.04},{"time":1.3333,"x":-124.32,"y":75.41},{"time":1.9667,"x":-132.91,"y":25.84},{"time":2.5,"x":-100.45,"y":13.55},{"time":2.6667,"x":-93.32,"y":26.52},{"time":2.7333,"x":-67.2,"y":-4.84},{"time":2.8667,"x":-8.95,"y":-18},{"time":3}]},"l ik":{"rotate":[{"time":2.5},{"time":2.7333,"angle":-17.05},{"time":2.8667}],"translate":[{"time":0.2667},{"time":0.3667,"x":-201.34},{"time":0.4333,"x":131.25,"y":34.23},{"time":0.4667,"x":221.88,"curve":"stepped"},{"time":2.5,"x":221.88},{"time":2.6667,"x":121.02,"y":41.2},{"time":2.7333,"x":18.88,"y":37.08},{"time":2.8667}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":8.22,"y":13.29},{"time":0.2667,"x":-90.32,"y":-99.12},{"time":0.3667,"x":-88.9,"y":34.14},{"time":0.4333,"x":-66.3,"y":11.64},{"time":0.4667,"x":-9.53,"y":-7.72},{"time":1.1667,"x":-100.44,"y":-126.62},{"time":1.2667,"x":10.53,"y":-7.63},{"time":1.4,"x":-59.11,"y":-81.07},{"time":1.9667,"x":-28.56,"y":-53.45},{"time":2.5,"x":-4.01,"y":-49.13},{"time":2.8667}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":53.57,"y":0.46},{"time":0.2667,"x":42.73,"y":-27.34},{"time":0.3667,"x":11.36,"y":-74.91},{"time":0.4333,"x":-32.64,"y":14.87},{"time":0.4667,"x":-1.63,"y":17.72},{"time":1.1667},{"time":1.2667,"x":-61.69,"y":-29.08},{"time":1.4,"x":-63.95,"y":-56.02},{"time":1.9667,"x":-69.01,"y":-36.85},{"time":2.5}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":31.41},{"time":0.2667,"angle":26.63},{"time":0.3667,"angle":25.07},{"time":0.5333,"angle":59.28},{"time":1.1667,"angle":-4.98},{"time":1.2667,"angle":4.28},{"time":1.3333,"angle":33.29},{"time":1.9667,"angle":39.84},{"time":2.5,"angle":64.76},{"time":2.6667,"angle":35.33},{"time":2.8667},{"time":3,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.751},{"time":1.1667,"x":1.552},{"time":1.9667,"x":1.167},{"time":2.5,"x":0.835},{"time":2.6667,"x":0.653},{"time":2.7333,"x":0.506},{"time":2.8,"x":1.232},{"time":2.8667}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-14.7},{"time":0.2667},{"time":0.3667,"angle":-23.72},{"time":0.4667,"angle":-54.57},{"time":0.5333,"angle":-65.12},{"time":1.2667,"angle":8.43},{"time":1.3333,"angle":-55.31},{"time":1.9667,"angle":-36.86},{"time":2.5,"angle":-9.95},{"time":2.6667,"angle":-5.43},{"time":2.8,"angle":-23.47},{"time":3,"angle":-8.92}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.1,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.1},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-4.33},{"time":0.2667},{"time":0.3667,"angle":-21.35},{"time":0.4667,"angle":-56.6},{"time":0.5333,"angle":-67.46},{"time":1.2667,"angle":21.7},{"time":1.3333,"angle":-53.94},{"time":1.9667,"angle":-11.99},{"time":2.5,"angle":-5.02},{"time":2.6667,"angle":-2.74},{"time":2.8,"angle":-18.4},{"time":3,"angle":-9.49}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r finger d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":18.15},{"time":0.2667,"angle":1.92},{"time":0.3667},{"time":0.5333,"angle":-53},{"time":1.2667,"angle":46.29},{"time":1.3333,"angle":-17.24},{"time":1.9667,"angle":20.97},{"time":2.5,"angle":20.38},{"time":2.6667,"angle":11.12},{"time":2.8667},{"time":3,"angle":7.12}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"l upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":2.5,"angle":56.15},{"time":2.8667},{"time":3,"angle":-6.45}]},"l finger a":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":-7.83,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l finger a2":{"rotate":[{"angle":5.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":4.27,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-2.9,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-29.33,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":46.48,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":16.31,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":40.05,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":68.88,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":24.23,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l finger b2":{"rotate":[{"angle":16.78,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":13.48,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":5.9,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-20.73,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":52.54,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":20.91,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":43.48,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":71.65,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":25.24,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l finger c2":{"rotate":[{"angle":16.54,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":13.28,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":5.71,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-20.92,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":52.41,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":20.81,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":43.4,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":71.6,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":25.22,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l finger d":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l finger d2":{"rotate":[{"angle":26.01,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":20.88,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":12.98,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-13.82,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":57.4,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":24.6,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":46.23,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":73.89,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":26.05,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-2.28}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.27}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":0.61}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":5.88}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":63.33}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":26.63}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-2.26,"y":14.51}]},"hair t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":9.54}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":6.67}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":8.76}]},"r ear s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-5.67}]},"r ear ring b":{"rotate":[{"angle":8.97,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":5.7,"y":-8.17}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":8.77}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-0.61}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-10}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-11.82}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":1.82}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":15.47}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":40.99}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":9.15}],"shear":[{"y":-15.36}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":7.98}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-9.62}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-8.22}]},"r ear s2":{"rotate":[{"angle":-7.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-7.49}]},"shadow":{"translate":[{"time":0.0667,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.3667,"x":-145,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":78.72,"curve":"stepped"},{"time":2.5,"x":78.72,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":2.6667}],"scale":[{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"y":1.153,"curve":"stepped"},{"time":2.5,"y":1.153,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":2.8667}]},"r upparm3":{"rotate":[{},{"time":0.0667,"angle":22.9},{"time":0.2667,"angle":50.67},{"time":0.3667,"angle":52.68},{"time":0.4333,"angle":68.19},{"time":0.4667,"angle":-155},{"time":0.5333,"angle":-145.55},{"time":1.1667,"angle":-120.43},{"time":1.2667,"angle":35.02},{"time":1.9667,"angle":21.53},{"time":2.5,"angle":56.21},{"time":2.6667,"angle":63.35},{"time":2.7333,"angle":13.6},{"time":2.8667}]},"r finger a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":31.41},{"time":0.2667,"angle":26.63},{"time":0.3667,"angle":25.07},{"time":1.1667},{"time":1.2667,"angle":4.28},{"time":1.3333,"angle":33.29},{"time":1.9667,"angle":39.84},{"time":2.5,"angle":64.76},{"time":2.6667,"angle":35.33},{"time":2.8667},{"time":3,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.751},{"time":1.1667,"x":1.552},{"time":1.9667,"x":1.167},{"time":2.5,"x":0.835},{"time":2.6667,"x":0.653},{"time":2.7333,"x":0.506},{"time":2.8,"x":1.232},{"time":2.8667}]},"r finger b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-14.7},{"time":0.2667},{"time":0.3667,"angle":-23.72},{"time":0.4667,"angle":-54.57},{"time":0.5333,"angle":-35.92},{"time":1.2667,"angle":8.43},{"time":1.3333,"angle":-55.31},{"time":1.9667,"angle":-36.86},{"time":2.5,"angle":-9.95},{"time":2.6667,"angle":-5.43},{"time":2.8,"angle":-23.47},{"time":3,"angle":-8.92}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.1,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.1},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r finger c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-4.33},{"time":0.2667},{"time":0.3667,"angle":-21.35},{"time":0.4667,"angle":-56.6},{"time":0.5333,"angle":-38.26},{"time":1.2667,"angle":21.7},{"time":1.3333,"angle":-53.94},{"time":1.9667,"angle":-11.99},{"time":2.5,"angle":-5.02},{"time":2.6667,"angle":-2.74},{"time":2.8,"angle":-18.4},{"time":3,"angle":-9.49}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r finger d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":18.15},{"time":0.2667,"angle":1.92},{"time":0.3667},{"time":0.5333,"angle":-23.8},{"time":1.2667,"angle":46.29},{"time":1.3333,"angle":-17.24},{"time":1.9667,"angle":20.97},{"time":2.5,"angle":20.38},{"time":2.6667,"angle":11.12},{"time":2.8667},{"time":3,"angle":7.12}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"l hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"skill":{"rotate":[{"angle":-90},{"time":0.5333},{"time":0.6667,"angle":-90},{"time":0.7}],"translate":[{"x":1258.69,"y":-2863.22},{"time":0.5333,"x":1945.62,"y":-3005.98},{"time":0.7,"x":1904.42,"y":-2704.6},{"time":0.8667,"x":1483.93,"y":-2472.17},{"time":1.0333,"x":1244.46,"y":-2497.27},{"time":1.1333,"x":1114.58,"y":-2650.25},{"time":1.1667,"x":333.03,"y":-2816.05},{"time":1.2,"x":173.45,"y":-2798.68},{"time":1.2333,"x":675.4,"y":-3114.3},{"time":1.2667,"x":748.69,"y":-3016.22}],"scale":[{"x":0,"y":0},{"time":0.0333,"x":0.937,"y":0.937},{"time":0.5333,"x":0,"y":0},{"time":0.6667,"x":0.414,"y":0.414},{"time":0.7,"x":0.414,"y":0.414},{"time":1.2,"x":0.877,"y":0.877},{"time":1.2333,"x":0.948,"y":0.948,"curve":"stepped"},{"time":2.9667,"x":0.948,"y":0.948},{"time":3,"x":0,"y":0}]},"s":{"scale":[{"x":0,"y":0}]},"l armour":{"rotate":[{"angle":1.84}]},"r arm":{"rotate":[{"angle":-7.98}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.0667,"offset":92,"vertices":[2.20322,30.46043,-18.26239,24.47815,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.20322,30.46043,0,0,1.46875,20.30699,-12.17502,16.31879,0,0,0,0,0,0,0,0,0,0,0,0,-18.26239,24.47815,1.46875,20.30699,-12.17502,16.31879,0,0,0,0,0,0,0,0,2.20322,30.46043,-18.26239,24.47815,0,0,0,0,0,0,0,0,2.20322,30.46043,-18.26239,24.47815]},{"time":0.3667,"offset":90,"vertices":[1.22015,85.50305,8.85266,63.22167,-11.04908,62.60259,0,0,0,0,-6.34235,126.33496,-53.48529,114.63028,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.36218,63.396,0,0,1.15774,53.59198,-21.08538,49.06215,0,0,0,0,0,0,0,0,0,0,-26.46741,90.20621,-22.42884,58.16097,1.15774,53.59198,-21.08538,49.06215,0,0,0,0,0,0,0,0,-3.01361,87.82533,-31.31251,80.92049,0,0,0,0,0,0,0,0,-3.36218,63.396,-22.42884,58.16097]},{"time":0.4333,"offset":90,"vertices":[11.28321,29.56786,64.24847,-1.59769,15.38139,-20.66391,0,0,0,0,30.03378,63.63551,-37.9719,42.57151,0,0,0,0,21.52234,-32.401,0,0,0,0,0,0,0,0,11.37859,-10.34697,0,0,10.04763,-32.86191,-46.04496,-32.88637,0,0,0,0,0,0,0,0,-6.04218,-42.5224,-6.48686,6.21558,13.33047,-7.81927,74.10146,18.25119,33.79031,-14.39904,0,0,0,0,0,0,0,0,10.88204,44.88947,-30.96428,36.15376,0,0,0,0,0,0,0,0,63.57747,-1.31068,14.50655,-29.04317]},{"time":0.4667,"offset":86,"vertices":[-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,55.4898,-115.34093,44.22822,-137.56801]},{"time":1.1667,"offset":44,"vertices":[13.68317,13.3293,-1.79593,19.0177,40.93475,29.97415,2.33765,50.68173,45.62729,58.9476,-17.28067,72.51294,5.87097,28.37482,-18.41379,22.37299,9.02417,22.71495,-12.02777,21.27783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.34116,-25.95972,2.87909,-26.34647,21.36486,-151.78146,69.57217,-109.37783,55.94293,-119.57079,-9.27048,-25.94392,7.98193,-27.92816,21.33434,-164.38474,48.64049,-169.80396,-10.8429,-18.338,-1.82306,-23.04482,48.12115,-135.29684,-21.33124,-65.07796,18.26343,-64.03969,-10.16232,-58.32629,22.86304,-54.1167,-4.32936,-91.79655,0,0,-10.19131,-230.23357,44.46687,-207.03862,-13.73187,-64.35754,17.35513,-60.88112,0,0,0,0,24.02046,-94.70818,55.50031,-161.04776,64.36263,-117.89432,52.18075,-116.5673,99.54089,-135.70296,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-6.65829,-158.96844,49.1057,-142.28601,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,50.47698,-132.96794,54.80964,-152.53014]},{"time":1.2667,"offset":44,"vertices":[4.56106,4.4431,-0.59864,6.33924,13.64492,9.99139,0.77922,16.89392,15.2091,19.64921,-5.76023,24.17099,1.95699,9.45827,-6.13793,7.45766,3.00806,7.57165,-4.00926,7.09261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.78039,-8.65324,0.9597,-8.78216,7.12162,-50.59383,23.19073,-36.45929,18.64765,-39.85694,-3.09016,-8.64797,2.66065,-9.30939,7.11145,-54.79493,16.2135,-56.60133,-3.6143,-6.11267,-0.60769,-7.68161,16.04039,-45.09896,-7.11041,-21.69266,6.08781,-21.34657,-3.38744,-19.4421,7.62101,-18.03891,-1.44312,-30.59886,0,0,-3.3971,-76.74454,14.82229,-69.01289,-4.57729,-21.45252,5.78505,-20.29371,0,0,0,0,8.00682,-31.5694,18.50011,-53.6826,21.45422,-39.29812,17.39359,-38.85578,33.18031,-45.23433,-2.80185,-8.81374,0.0367,-9.24824,-0.22391,-11.89757,3.43632,-11.3927,-2.21943,-52.98949,16.36857,-47.42869,0,0,0,0,-1.72692,-8.99374,1.11505,-9.08984,16.82566,-44.32266,18.26989,-50.84339]},{"time":2.8667}]}}}},"walk":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00005"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00008"},{"time":0.2,"name":"eyefire/eyefire_00010"},{"time":0.2333,"name":"eyefire/eyefire_00011"},{"time":0.2667,"name":"eyefire/eyefire_00013"},{"time":0.3,"name":"eyefire/eyefire_00014"},{"time":0.3333,"name":"eyefire/eyefire_00016"},{"time":0.3667,"name":"eyefire/eyefire_00017"},{"time":0.4,"name":"eyefire/eyefire_00019"},{"time":0.4333,"name":"eyefire/eyefire_00020"},{"time":0.4667,"name":"eyefire/eyefire_00022"},{"time":0.5,"name":"eyefire/eyefire_00023"},{"time":0.5333,"name":"eyefire/eyefire_00025"},{"time":0.5667,"name":"eyefire/eyefire_00027"},{"time":0.6,"name":"eyefire/eyefire_00028"},{"time":0.6333,"name":"eyefire/eyefire_00030"},{"time":0.6667,"name":"eyefire/eyefire_00031"},{"time":0.7,"name":"eyefire/eyefire_00033"},{"time":0.7333,"name":"eyefire/eyefire_00034"},{"time":0.7667,"name":"eyefire/eyefire_00036"},{"time":0.8,"name":"eyefire/eyefire_00037"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"body":{"rotate":[{"angle":-46.01},{"time":0.1,"angle":-57.16},{"time":0.2,"angle":-81.65},{"time":0.3,"angle":-101.77},{"time":0.4,"angle":-119.71},{"time":0.5,"angle":-130.33},{"time":0.6,"angle":-117.59},{"time":0.7,"angle":-79.13},{"time":0.8,"angle":-46.01}],"translate":[{"y":-102.64},{"time":0.4,"y":43.22},{"time":0.8,"y":-102.64}]},"body2":{"rotate":[{"angle":-22.79},{"time":0.1,"angle":-10.08},{"time":0.2,"angle":16.6},{"time":0.3,"angle":38.66},{"time":0.4,"angle":52.44},{"time":0.5,"angle":59.18},{"time":0.6,"angle":41.89},{"time":0.7,"angle":-15.52},{"time":0.8,"angle":-22.79}],"translate":[{"x":-80.64,"y":48.56},{"time":0.1,"x":-29.6,"y":11.44},{"time":0.2,"x":24.21,"y":6.83},{"time":0.3,"x":87.48,"y":24.44},{"time":0.4,"x":76.26,"y":17.25},{"time":0.5,"x":-2.05,"y":-11.35},{"time":0.6,"x":-89.25,"y":-3.33},{"time":0.7,"x":-119.7,"y":79.08},{"time":0.8,"x":-80.64,"y":48.56}]},"head":{"rotate":[{"angle":54.91},{"time":0.1,"angle":57.8},{"time":0.2,"angle":61.64},{"time":0.3,"angle":73.6},{"time":0.4,"angle":89.11},{"time":0.5,"angle":87.54},{"time":0.6,"angle":81.54},{"time":0.7,"angle":92.91},{"time":0.8,"angle":54.91}],"translate":[{"x":20.04,"y":114.02}]},"rhand":{"rotate":[{"angle":-61.96},{"time":0.1,"angle":-73.08},{"time":0.2,"angle":-53.34},{"time":0.3,"angle":-7.68},{"time":0.4,"angle":-29.8},{"time":0.5,"angle":-31.51},{"time":0.6,"angle":-40.31},{"time":0.7,"angle":-69.63},{"time":0.8,"angle":-61.96}],"translate":[{"x":262.77,"y":-233.79},{"time":0.1,"x":680.4,"y":-287.15},{"time":0.2,"x":957.51,"y":-271.75},{"time":0.3,"x":1234.48,"y":-302.33},{"time":0.4,"x":1221.78,"y":-462.7},{"time":0.5,"x":1093.17,"y":-495.57},{"time":0.6,"x":634.16,"y":-422.65},{"time":0.7,"x":326.51,"y":-326.65},{"time":0.8,"x":262.77,"y":-233.79}],"scale":[{"x":0.445,"y":-0.647}]},"r upparm":{"rotate":[{"angle":56.42},{"time":0.4,"angle":110.55},{"time":0.8,"angle":56.42}],"translate":[{},{"time":0.4,"x":-23.64,"y":21.09},{"time":0.8}]},"l ik":{"rotate":[{"angle":-2.64},{"time":0.1,"angle":3.05},{"time":0.2,"angle":-46.63},{"time":0.3,"angle":-134.68},{"time":0.4,"angle":-137.5},{"time":0.5,"angle":-127.9},{"time":0.6,"angle":-79.41},{"time":0.7,"angle":-68.78},{"time":0.8,"angle":-2.64}],"translate":[{"x":-145.7,"y":70.09},{"time":0.1,"x":-250.39,"y":-2.76},{"time":0.2,"x":-480.05,"y":85.85},{"time":0.3,"x":-641.99,"y":290.99},{"time":0.4,"x":-630.55,"y":360.98},{"time":0.5,"x":-560.06,"y":415.93},{"time":0.6,"x":-341.98,"y":228.69},{"time":0.7,"x":-251.83,"y":181.63},{"time":0.8,"x":-145.7,"y":70.09}]},"lhand":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-84.39},{"time":0.2,"angle":-88.18},{"time":0.3,"angle":-51.49},{"time":0.4,"angle":63.47},{"time":0.5,"angle":23.26},{"time":0.6,"angle":22.08},{"time":0.7,"angle":29.82},{"time":0.8,"angle":-13.41}],"translate":[{"x":-157.59,"y":-59.33},{"time":0.1,"x":-191.58,"y":197.82},{"time":0.2,"x":-10,"y":106.23},{"time":0.3,"x":239.36,"y":12.55},{"time":0.4,"x":558.49,"y":-39.96},{"time":0.5,"x":517.71,"y":-176.13},{"time":0.6,"x":249.12,"y":-178.34},{"time":0.7,"x":11.48,"y":-146.59},{"time":0.8,"x":-157.59,"y":-59.33}]},"l upparm":{"rotate":[{"angle":121.1},{"time":0.1,"angle":113.65},{"time":0.2,"angle":153.35},{"time":0.3,"angle":138.84},{"time":0.4,"angle":121.54},{"time":0.5,"angle":114.98},{"time":0.6,"angle":121.16},{"time":0.7,"angle":148.41},{"time":0.8,"angle":121.1}],"translate":[{"x":-7.3,"y":263.84}]},"r finger b":{"rotate":[{"angle":-31.61},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-40.66},{"time":0.4,"angle":-120.95},{"time":0.7,"angle":-134.91},{"time":0.8,"angle":-31.61}],"translate":[{"x":78.27,"y":97.55},{"time":0.2,"x":144.96,"y":155.26},{"time":0.3,"x":129.1,"y":139.7},{"time":0.4,"x":188.45,"y":155.72},{"time":0.7,"x":171.78,"y":113.86},{"time":0.8,"x":78.27,"y":97.55}],"scale":[{"x":0.674}]},"r finger c":{"rotate":[{"angle":-22.53},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-31.17},{"time":0.4,"angle":-115.08},{"time":0.7,"angle":-125.53},{"time":0.8,"angle":-22.53}],"translate":[{"x":6.64,"y":106.41},{"time":0.2,"x":73.32,"y":164.13},{"time":0.3,"x":57.46,"y":148.57},{"time":0.4,"x":63.53,"y":172.35},{"time":0.7,"x":43.59,"y":126.34},{"time":0.8,"x":6.64,"y":106.41}],"scale":[{"x":0.674}]},"r finger d":{"rotate":[{"angle":1.61},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-6.04},{"time":0.4,"angle":-87.39},{"time":0.7,"angle":-118.41},{"time":0.8,"angle":1.61}],"translate":[{"x":-11.55,"y":135.14},{"time":0.2,"x":55.13,"y":192.85},{"time":0.3,"x":39.27,"y":177.3},{"time":0.4,"x":-13.43,"y":192.22},{"time":0.7,"x":25.4,"y":155.06},{"time":0.8,"x":-11.55,"y":135.14}],"scale":[{"x":0.674}]},"r finger a":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72}],"translate":[{"x":131.03,"y":-25.92}],"scale":[{"x":0.356,"y":0.528}]},"r upparm2":{"rotate":[{"angle":4}],"translate":[{},{"time":0.1,"x":-23.06,"y":-56.12},{"time":0.2,"x":18.62,"y":-75.54},{"time":0.3,"x":38.71,"y":-22.49},{"time":0.4,"x":39.74,"y":16.28},{"time":0.5,"x":47.56,"y":21.53},{"time":0.6,"x":15.76,"y":-82.19},{"time":0.7,"x":53.32,"y":-22.94},{"time":0.8}],"scale":[{"x":0.874,"y":0.874}]},"l finger c":{"rotate":[{"angle":67.75},{"time":0.2,"angle":46.4},{"time":0.4,"angle":29.53},{"time":0.5,"angle":73.3,"curve":"stepped"},{"time":0.7,"angle":73.3},{"time":0.8,"angle":67.75}]},"l finger b":{"rotate":[{"angle":12.29},{"time":0.2,"angle":-9.05},{"time":0.4,"angle":-25.92},{"time":0.5,"angle":17.85,"curve":"stepped"},{"time":0.7,"angle":17.85},{"time":0.8,"angle":12.29}]},"l finger a":{"rotate":[{"angle":-21},{"time":0.2,"angle":-42.35},{"time":0.4,"angle":-59.21},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.7,"angle":-15.44},{"time":0.8,"angle":-21}]},"l finger d":{"rotate":[{"angle":104.78},{"time":0.2,"angle":83.43},{"time":0.4,"angle":66.56},{"time":0.5,"angle":110.34,"curve":"stepped"},{"time":0.7,"angle":110.34},{"time":0.8,"angle":104.78}]},"l finger b2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger c2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger d2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger a2":{"rotate":[{"angle":19.49},{"time":0.2,"angle":-1.85},{"time":0.4,"angle":10.22},{"time":0.5,"angle":56.06},{"time":0.7,"angle":44.53},{"time":0.8,"angle":19.49}]},"l ik2":{"translate":[{"x":91.54,"y":85.04},{"time":0.1,"x":57.37,"y":79.54},{"time":0.2,"x":46.58,"y":84.16},{"time":0.3,"x":43.88,"y":-108.48},{"time":0.4,"x":50.02,"y":-49.47},{"time":0.5,"x":61.7,"y":4.19},{"time":0.6,"x":69.69,"y":-9.68},{"time":0.7,"x":87.16,"y":32.39},{"time":0.8,"x":91.54,"y":85.04}]},"root":{"translate":[{"x":-273.37}]},"r ik":{"rotate":[{"angle":102.66},{"time":0.1,"angle":27.72},{"time":0.2,"angle":-23.72},{"time":0.3,"angle":-35},{"time":0.4,"angle":-34.26},{"time":0.5},{"time":0.6,"angle":71.42},{"time":0.7,"angle":72.92},{"time":0.8,"angle":102.66}],"translate":[{"x":275.23,"y":-9.7},{"time":0.1,"x":9.93,"y":99.3},{"time":0.2,"x":-62.42,"y":126.65},{"time":0.3,"x":101.76,"y":271.14},{"time":0.4,"x":262.35,"y":318.34},{"time":0.5,"x":364.24,"y":281.87},{"time":0.6,"x":380.54,"y":150.47},{"time":0.7,"x":448.94,"y":120.68},{"time":0.8,"x":275.23,"y":-9.7}],"scale":[{"y":-1}]},"l leg":{"rotate":[{"angle":67.12}]},"r leg":{"rotate":[{"angle":125.66}],"scale":[{"x":0.787,"y":-1}]},"r ik2":{"translate":[{"x":128.11,"y":-106.46},{"time":0.1,"x":78.5,"y":-78.71},{"time":0.2,"x":-2.33,"y":39.33},{"time":0.3,"x":87.53,"y":45.77},{"time":0.4,"x":81.77,"y":1.21},{"time":0.5,"x":108.09,"y":16.09},{"time":0.6,"x":105.52,"y":-61.86},{"time":0.7,"x":117.78,"y":-18.96},{"time":0.8,"x":128.11,"y":-106.46}]},"r upparm3":{"rotate":[{"angle":-27.65},{"time":0.1,"angle":-53.5},{"time":0.2,"angle":-105.96},{"time":0.3,"angle":-138.28},{"time":0.4,"angle":-125.37},{"time":0.5,"angle":-109.13},{"time":0.6,"angle":-88.34},{"time":0.7,"angle":-34.45},{"time":0.8,"angle":-27.65}]},"r hand":{"translate":[{"x":-108.92,"y":-86.21},{"time":0.1,"x":-231.8,"y":-34.01},{"time":0.2,"x":-257.1,"y":-45.29},{"time":0.3,"x":-225.91,"y":-67.47},{"time":0.4,"x":-184.87,"y":-44.92},{"time":0.5,"x":-188.82,"y":-80.85},{"time":0.6,"x":-168.25,"y":-121.48},{"time":0.7,"x":-163.45,"y":-119.28},{"time":0.8,"x":-108.92,"y":-86.21}]},"r arm":{"rotate":[{"angle":-11.76}]},"l upparm2":{"rotate":[{"angle":-76.23}],"translate":[{"x":-56.13,"y":20.55},{"time":0.1,"x":-86.33,"y":42.77},{"time":0.2,"curve":"stepped"},{"time":0.3},{"time":0.4,"x":-97.89,"y":54.46},{"time":0.5},{"time":0.6,"x":-50.26,"y":59.34},{"time":0.7,"x":-44.26,"y":70.92},{"time":0.8,"x":-56.13,"y":20.55}]},"shadow":{"translate":[{"x":195.38},{"time":0.0667,"x":178.18},{"time":0.4667,"x":274.91},{"time":0.7667,"x":203.98},{"time":0.8,"x":195.38}],"scale":[{"y":1.081},{"time":0.0667},{"time":0.4667,"y":1.458},{"time":0.7667,"y":1.122},{"time":0.8,"y":1.081}]},"r finger a2":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72}],"translate":[{"x":131.03,"y":-25.92}],"scale":[{"x":0.356,"y":0.528}]},"r finger b2":{"rotate":[{"angle":-72.05},{"time":0.3,"angle":-7.32},{"time":0.4,"angle":-56.97},{"time":0.5,"angle":-139.63},{"time":0.8,"angle":-72.05}],"translate":[{"x":171.78,"y":113.86},{"time":0.3,"x":144.96,"y":155.26},{"time":0.4,"x":129.1,"y":139.7},{"time":0.5,"x":188.45,"y":155.72},{"time":0.8,"x":171.78,"y":113.86}],"scale":[{"x":0.674}]},"r finger c2":{"rotate":[{"angle":-62.67},{"time":0.3,"angle":2.17},{"time":0.4,"angle":-47.48},{"time":0.5,"angle":-133.75},{"time":0.8,"angle":-62.67}],"translate":[{"x":43.59,"y":126.34},{"time":0.3,"x":73.32,"y":164.13},{"time":0.4,"x":57.46,"y":148.57},{"time":0.5,"x":63.53,"y":172.35},{"time":0.8,"x":43.59,"y":126.34}],"scale":[{"x":0.674}]},"r finger d2":{"rotate":[{"angle":-55.55},{"time":0.3,"angle":27.3},{"time":0.4,"angle":-22.35},{"time":0.5,"angle":-106.07},{"time":0.8,"angle":-55.55}],"translate":[{"x":25.4,"y":155.06},{"time":0.3,"x":55.13,"y":192.85},{"time":0.4,"x":39.27,"y":177.3},{"time":0.5,"x":-13.43,"y":192.22},{"time":0.8,"x":25.4,"y":155.06}],"scale":[{"x":0.674}]},"l hand2":{"rotate":[{"angle":-5.46},{"time":0.1,"angle":19.32},{"time":0.2,"angle":21.77},{"time":0.3,"angle":22.05},{"time":0.4,"angle":-91.8},{"time":0.5,"angle":-68.35},{"time":0.6,"angle":-55.42},{"time":0.7,"angle":-53.84},{"time":0.8,"angle":-5.46}],"translate":[{"x":-23.89,"y":-2.05},{"time":0.1,"x":-28.71,"y":12.87},{"time":0.2,"x":-41.75,"y":-1.02},{"time":0.3,"x":-65.66,"y":-15.55},{"time":0.4,"x":98.13,"y":100.45},{"time":0.5,"x":44.43,"y":127.78},{"time":0.6,"x":43.38,"y":135.2},{"time":0.7,"x":18.48,"y":87.3},{"time":0.8,"x":-23.89,"y":-2.05}],"scale":[{"x":0.578,"y":-0.613}]},"l hand":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":-11.38},{"time":0.1,"angle":0.98},{"time":0.2,"angle":21.9},{"time":0.3,"angle":42.82},{"time":0.4,"angle":66.9},{"time":0.5,"angle":82.78},{"time":0.6,"angle":73.27},{"time":0.7,"angle":22.12},{"time":0.8,"angle":-11.38}]},"tail2":{"rotate":[{"angle":21.88},{"time":0.1,"angle":16.73},{"time":0.2,"angle":28.65},{"time":0.3,"angle":30.6},{"time":0.4,"angle":39.52},{"time":0.5,"angle":35.58},{"time":0.6,"angle":25.54},{"time":0.7,"angle":30.68},{"time":0.8,"angle":21.88}]},"tail3":{"rotate":[{"angle":9.68},{"time":0.2,"angle":16.73},{"time":0.6,"angle":2.63},{"time":0.8,"angle":9.68}],"translate":[{},{"time":0.4,"x":-8.99,"y":-3.86},{"time":0.8}]},"tail4":{"rotate":[{"angle":-13.41},{"time":0.3,"angle":16.73},{"time":0.7,"angle":-20.23},{"time":0.8,"angle":-13.41}]},"tail5":{"rotate":[{"angle":-20.23},{"time":0.4,"angle":16.73},{"time":0.8,"angle":-20.23}]},"tail6":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-20.23},{"time":0.5,"angle":16.73},{"time":0.8,"angle":-13.41}]},"skirt f":{"rotate":[{"angle":16.01},{"time":0.1,"angle":37.11},{"time":0.4,"angle":72.86},{"time":0.5,"angle":79.35},{"time":0.8,"angle":16.01}],"scale":[{"x":0.554}]},"skirt f2":{"rotate":[{"angle":8.67},{"time":0.2,"angle":26.26},{"time":0.6,"angle":-8.92},{"time":0.8,"angle":8.67}]},"skirt f3":{"rotate":[{"angle":-8.92},{"time":0.4,"angle":26.26},{"time":0.8,"angle":-8.92}]},"r leg5":{"rotate":[{"angle":-21.75},{"time":0.3},{"time":0.7,"angle":-26.67},{"time":0.8,"angle":-21.75}]},"l leg5":{"rotate":[{"angle":7.51},{"time":0.1},{"time":0.5,"angle":40.71},{"time":0.8,"angle":7.51}]},"hair t":{"rotate":[{"angle":4.07,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":17.13,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-8.99,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":4.07}]},"hair t2":{"rotate":[{"angle":-2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":8.12,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":-2.92}]},"hair t3":{"rotate":[{"angle":0.21,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-23.63,"curve":0.25,"c3":0.75},{"time":0.6,"angle":24.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":0.21}]},"hair t4":{"rotate":[{"angle":15.32,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-41.21,"curve":0.25,"c3":0.75},{"time":0.7,"angle":28.11,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":15.32}]},"hair t6":{"rotate":[{"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.4,"angle":26.71,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-5.42}]},"hair t7":{"rotate":[{"angle":0.51,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":0.51}]},"hair t8":{"rotate":[{"angle":10.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.6,"angle":26.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":10.65}]},"hair t9":{"rotate":[{"angle":20.79,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.7,"angle":26.71,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":20.79}]},"hair t5":{"rotate":[{"angle":30.87,"curve":0.25,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.87}]},"r ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8}]},"r ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3}]},"l ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8}]},"r beard":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38}]},"r beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88}]},"r beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72}]},"l beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72}]},"l bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88}]},"l bear":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"r leg3":{"rotate":[{"angle":-24.54}]},"r leg2":{"rotate":[{"angle":55.93}]},"l leg3":{"rotate":[{"angle":-46.18}]},"l leg2":{"rotate":[{"angle":-42.4}]},"l armour":{"rotate":[{"angle":-39.8}]}},"ik":{"r ik2":[{"softness":50,"bendPositive":false}]},"deform":{"default":{"body":{"body":[{"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,23.4961,-62.50654,62.42265,-22.3002,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,49.89716,22.95819,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.74295,37.16302,155.17085,-24.09232,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-3.7588,-102.26871,75.48494,-69.10156,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321]}]},"l hand2":{"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}],"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r arm":{"r arm":[{"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043]}]},"r armour u":{"r armour u":[{"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]},{"time":0.4,"offset":4,"vertices":[163.9654,-45.00104,177.28926,99.94327,181.48798,-69.53613,202.98242,108.74658,140.53593,-68.87366,203.46579,65.00528,76.7599,-81.34448,151.37636,9.09085]},{"time":0.8,"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]}]},"r hand":{"r hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r upparm":{"r upparm":[{"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":0.1,"vertices":[-28.71144,-44.1958,56.25366,21.75468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.93488,43.86108,51.64029,65.98203,0.65607,47.6413,-54.5849,17.91281,-131.43018,-29.84882]},{"time":0.2,"vertices":[-70.29115,-121.59358,129.93558,-53.69101,0,0,0,0,0,0,0,0,0,0,0,0,60.33824,12.40262,1.57361,70.47795,138.48999,146.07806,67.43813,181.56848,-45.18221,149.7756,-149.39273,46.96301,-219.99423,-105.85606,-43.01499,-68.8707,65.8432,-65.57346,-24.77599,-39.39505,37.61963,-37.69945]},{"time":0.3,"vertices":[-142.63615,-149.74637,47.56436,-137.68623,0,0,0,0,0,0,0,0,0,0,0,0,50.28187,10.33552,1.31134,58.73162,40.17482,138.09778,-59.78693,144.63666,-163.83813,74.89461,-232.30444,-49.23798,-259.16425,-211.93402,-35.84583,-57.39225,54.86933,-54.64455,-20.64665,-32.82921,31.34969,-31.41621,12.45225,-6.3985,16.0213,-0.0816]},{"time":0.4,"vertices":[-114.10892,-119.7971,38.05149,-110.14899,0,0,0,0,0,0,0,0,0,0,0,0,40.22549,8.26841,1.04907,46.9853,17.968,82.77934,-63.6477,81.75819,-145.03168,21.48185,-197.31894,-77.27264,-203.24228,-209.83081,-28.67666,-45.9138,43.89547,-43.71564,-16.51732,-26.26337,25.07975,-25.13297,9.9618,-5.1188,12.81704,-0.06528]},{"time":0.5,"vertices":[-85.5817,-89.84782,28.53862,-82.61174,0,0,0,0,0,0,0,0,0,0,0,0,30.16912,6.20131,0.7868,35.23898,11.92402,64.56107,-49.2754,62.96702,-109.30013,16.21414,-146.1988,-59.89482,-150.68185,-159.84299,-21.5075,-34.43535,32.9216,-32.78673,-12.38799,-19.69753,18.80981,-18.84972,7.47135,-3.8391,9.61278,-0.04896]},{"time":0.6,"vertices":[-57.05446,-59.89854,19.02575,-55.07449,0,0,0,0,0,0,0,0,0,0,0,0,20.11275,4.13421,0.52454,23.49265,85.12775,89.96481,24.06255,114.93831,-62.65114,98.66886,-151.15407,45.04043,-190.00272,-40.19608,-14.33833,-22.9569,21.94773,-21.85782,-8.25866,-13.13168,12.53988,-12.56648,4.9809,-2.5594,6.40852,-0.03264]},{"time":0.7,"vertices":[-28.52724,-29.94928,9.51288,-27.53725,0,0,0,0,0,0,0,0,0,0,0,0,10.05638,2.0671,0.26227,11.74633,97.34462,37.31192,50.5202,69.83792,-27.32924,70.25962,-114.90354,35.7408,-166.87126,-25.32079,-7.16917,-11.47845,10.97387,-10.92891,-4.12933,-6.56584,6.26994,-6.28324,2.49045,-1.2797,3.20426,-0.01632]},{"time":0.8,"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]}]}}},"drawOrder":[{"offsets":[{"slot":"body","offset":6},{"slot":"r leg","offset":6},{"slot":"l hand2","offset":-34},{"slot":"r finger d2","offset":-36},{"slot":"r finger c2","offset":-37},{"slot":"r finger b2","offset":-38},{"slot":"r finger a2","offset":-39}]}]},"win":{"slots":{"r eye fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00002"},{"time":0.1,"name":"eyefire/eyefire_00003"},{"time":0.1333,"name":"eyefire/eyefire_00004"},{"time":0.1667,"name":"eyefire/eyefire_00005"},{"time":0.2,"name":"eyefire/eyefire_00006"},{"time":0.2333,"name":"eyefire/eyefire_00007"},{"time":0.2667,"name":"eyefire/eyefire_00009"},{"time":0.3,"name":"eyefire/eyefire_00010"},{"time":0.3333,"name":"eyefire/eyefire_00011"},{"time":0.3667,"name":"eyefire/eyefire_00012"},{"time":0.4,"name":"eyefire/eyefire_00013"},{"time":0.4333,"name":"eyefire/eyefire_00014"},{"time":0.4667,"name":"eyefire/eyefire_00015"},{"time":0.5,"name":"eyefire/eyefire_00016"},{"time":0.5333,"name":"eyefire/eyefire_00017"},{"time":0.5667,"name":"eyefire/eyefire_00018"},{"time":0.6,"name":"eyefire/eyefire_00019"},{"time":0.6333,"name":"eyefire/eyefire_00020"},{"time":0.6667,"name":"eyefire/eyefire_00021"},{"time":0.7,"name":"eyefire/eyefire_00022"},{"time":0.7333,"name":"eyefire/eyefire_00023"},{"time":0.7667,"name":"eyefire/eyefire_00024"},{"time":0.8,"name":"eyefire/eyefire_00025"},{"time":0.8333,"name":"eyefire/eyefire_00027"},{"time":0.8667,"name":"eyefire/eyefire_00028"},{"time":0.9,"name":"eyefire/eyefire_00029"},{"time":0.9333,"name":"eyefire/eyefire_00030"},{"time":0.9667,"name":"eyefire/eyefire_00031"},{"time":1,"name":"eyefire/eyefire_00032"},{"time":1.0333,"name":"eyefire/eyefire_00033"},{"time":1.0667,"name":"eyefire/eyefire_00034"},{"time":1.1,"name":"eyefire/eyefire_00035"},{"time":1.1333,"name":"eyefire/eyefire_00036"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00001"},{"time":1.2333,"name":"eyefire/eyefire_00002"},{"time":1.2667,"name":"eyefire/eyefire_00003"},{"time":1.3,"name":"eyefire/eyefire_00004"},{"time":1.3333,"name":"eyefire/eyefire_00005"},{"time":1.3667,"name":"eyefire/eyefire_00006"},{"time":1.4,"name":"eyefire/eyefire_00008"},{"time":1.4333,"name":"eyefire/eyefire_00009"},{"time":1.4667,"name":"eyefire/eyefire_00010"},{"time":1.5,"name":"eyefire/eyefire_00011"},{"time":1.5333,"name":"eyefire/eyefire_00012"},{"time":1.5667,"name":"eyefire/eyefire_00013"},{"time":1.6,"name":"eyefire/eyefire_00014"},{"time":1.6333,"name":"eyefire/eyefire_00015"},{"time":1.6667,"name":"eyefire/eyefire_00016"},{"time":1.7,"name":"eyefire/eyefire_00017"},{"time":1.7333,"name":"eyefire/eyefire_00018"},{"time":1.7667,"name":"eyefire/eyefire_00019"},{"time":1.8,"name":"eyefire/eyefire_00020"},{"time":1.8333,"name":"eyefire/eyefire_00021"},{"time":1.8667,"name":"eyefire/eyefire_00022"},{"time":1.9,"name":"eyefire/eyefire_00023"},{"time":1.9333,"name":"eyefire/eyefire_00025"},{"time":1.9667,"name":"eyefire/eyefire_00026"},{"time":2,"name":"eyefire/eyefire_00027"},{"time":2.0333,"name":"eyefire/eyefire_00028"},{"time":2.0667,"name":"eyefire/eyefire_00029"},{"time":2.1,"name":"eyefire/eyefire_00030"},{"time":2.1333,"name":"eyefire/eyefire_00031"},{"time":2.1667,"name":"eyefire/eyefire_00032"},{"time":2.2,"name":"eyefire/eyefire_00033"},{"time":2.2333,"name":"eyefire/eyefire_00034"},{"time":2.2667,"name":"eyefire/eyefire_00035"},{"time":2.3,"name":"eyefire/eyefire_00036"},{"time":2.3333,"name":"eyefire/eyefire_00037"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"l hand2":{"scale":[{"x":0,"y":0}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"angle":9.3,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-41.35,"curve":0.345,"c2":0.38,"c3":0.68,"c4":0.72},{"time":0.6333,"angle":-12.68,"curve":0.374,"c2":0.62,"c3":0.715},{"time":1.0333,"angle":18.46},{"time":1.7,"angle":21},{"time":2.0667,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":-21.31,"y":54.01,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"x":203.36,"y":-162.81,"curve":0.332,"c2":0.33,"c3":0.671,"c4":0.68},{"time":0.6333,"x":205.79,"y":-89.37,"curve":0.382,"c2":0.55,"c3":0.741},{"time":1.0333,"x":11.92,"y":11.92},{"time":1.7,"x":-110.25,"y":39.82},{"time":2.0667,"x":0.79,"y":-46.91,"curve":0.298,"c3":0.635,"c4":0.36},{"time":2.3333}]},"r upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.1333,"angle":2.59,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"angle":14.07,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"angle":-46.21},{"time":1.7,"angle":-68.13},{"time":2.0667,"angle":-18.17,"curve":0.298,"c3":0.635,"c4":0.36},{"time":2.3333,"angle":-6.74}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.0333,"angle":65.68,"curve":"stepped"},{"time":1.7,"angle":65.68},{"time":2.0667,"angle":14.41}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.0333,"x":24.67,"y":-27.07,"curve":"stepped"},{"time":1.7,"x":24.67,"y":-27.07},{"time":2.0667}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.0333,"angle":-13.17,"curve":"stepped"},{"time":1.7,"angle":-13.17},{"time":2.0667,"angle":-9.49}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.0333,"angle":-3.49,"curve":"stepped"},{"time":1.7,"angle":-3.49},{"time":2.0667,"angle":-8.92}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1333,"angle":-11.3,"curve":0.345,"c2":0.38,"c3":0.679,"c4":0.72},{"time":0.4333,"angle":4.57,"curve":0.368,"c2":0.63,"c3":0.705},{"time":1.0333,"angle":41.65},{"time":1.7,"angle":53.63},{"time":2.0667,"angle":31.13,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":2.3333,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.0333,"x":79.8,"y":3.04,"curve":"stepped"},{"time":1.7,"x":79.8,"y":3.04},{"time":2.0667,"x":-7.85,"y":2.92}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.4333,"angle":-24.78,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"angle":76.39},{"time":1.7,"angle":113.74},{"time":1.7333,"angle":55.84},{"time":2.0667,"angle":-11.64,"curve":0.256,"c3":0.619,"c4":0.46},{"time":2.3333,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":-137.1,"y":88.66,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"x":-128.25,"y":2.45,"curve":0.349,"c2":0.4,"c3":0.686,"c4":0.74},{"time":0.7,"x":182.63,"y":76.38,"curve":0.37,"c2":0.63,"c3":0.709},{"time":1.0333,"x":346.03,"y":330.86},{"time":1.7,"x":246.39,"y":504.5},{"time":1.7333,"x":224.92,"y":364.09},{"time":2.0667,"x":116.85,"y":41.93,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.3333,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":0.95,"y":0.46,"curve":0.34,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.4333,"y":-1.069,"curve":"stepped"},{"time":1.7,"y":-1.069},{"time":1.7333},{"time":2.3333,"x":0.95,"y":0.95}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"angle":-4.04,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-20.74,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1.0333,"angle":28.13},{"time":1.7,"angle":31.71},{"time":2.0667,"angle":-4.31}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"angle":21.72,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"angle":14.59,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"angle":-23.03},{"time":1.7,"angle":-38.61},{"time":2.0667}],"translate":[{"time":0.1333,"curve":0.296,"c2":0.21,"c3":0.648,"c4":0.6},{"time":0.4333,"x":-28.84,"y":103.01},{"time":1.0333,"x":-62.58,"y":33.68},{"time":1.7,"x":-76.87,"y":3.58},{"time":2.0667}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.4333,"x":-13.16,"y":17.34,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"x":-83.56,"y":-14.11},{"time":1.7,"x":-117.51,"y":6.9},{"time":2.0667}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"angle":-0.38},{"time":0.4333,"angle":-14.97},{"time":1.0333,"angle":-3.36},{"time":1.7,"angle":6.3},{"time":2.0667,"angle":-17.69,"curve":0.25,"c3":0.75},{"time":2.3333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":3.97,"y":-59.43,"curve":0.307,"c2":0.25,"c3":0.651,"c4":0.62},{"time":0.4333,"x":71.54,"y":-90.8,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1.0333,"x":63.57,"y":67.54},{"time":1.7,"x":55.62,"y":119.19},{"time":2.0667,"x":-8.66,"y":-38.97,"curve":0.284,"c3":0.625,"c4":0.38},{"time":2.3333}]},"l leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":25.1},{"time":2.0667}]},"l leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":-30.32},{"time":2.0667}]},"r leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":7.26},{"time":2.0667}]},"l leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":-2.67},{"time":2.0667}]},"r leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":-30.14},{"time":2.0667}]},"r ik2":{"translate":[{"time":0.4333},{"time":1.0333,"x":-92.02,"y":14.21,"curve":"stepped"},{"time":1.7,"x":-92.02,"y":14.21},{"time":2.0667}]},"r leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":1.7,"angle":13.63},{"time":2.0667}]},"r finger c2":{"rotate":[{"angle":-9.49}]},"l armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":1.7,"angle":2.46},{"time":2.0667,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":1.84}]},"l finger c2":{"rotate":[{"angle":16.54}],"translate":[{"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"r upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":1.7,"angle":-0.29},{"time":2.0667,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":12.65}]},"l upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":1.7,"angle":50.9},{"time":2.0667,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-6.45}]},"r finger d2":{"rotate":[{"angle":7.12}]},"l finger a":{"rotate":[{"angle":-2.5}]},"l finger a2":{"rotate":[{"angle":5.32}],"translate":[{"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"r finger a2":{"rotate":[{"angle":14.41}]},"l finger b2":{"rotate":[{"angle":16.78}],"translate":[{"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l finger c":{"rotate":[{"angle":-2.5}]},"r finger b2":{"rotate":[{"angle":-8.92}]},"l finger d":{"rotate":[{"angle":-2.5}]},"l finger d2":{"rotate":[{"angle":26.01}],"translate":[{"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":1.7,"angle":23.59},{"time":2.0667,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-7.98}]},"r finger d":{"rotate":[{"angle":7.12}]},"r ear2":{"rotate":[{"angle":-2.28}]},"l ear2":{"rotate":[{"angle":3.27}]},"l ik":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-14.25,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":127.95,"y":68.89,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":167.31,"curve":"stepped"},{"time":2.0667,"x":167.31},{"time":2.1667,"x":39.62,"y":56.29},{"time":2.3333}]},"l finger b":{"rotate":[{"angle":-2.5}]},"head2":{"scale":[{"time":0.6,"curve":0.32,"c2":0.29,"c3":0.66,"c4":0.65},{"time":1.0333,"x":1.035,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.0667}]},"r upparm3":{"rotate":[{"time":0.4333},{"time":1.0333,"angle":49.31},{"time":1.7,"angle":59.31},{"time":2.0667}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"headmouth":{"rotate":[{},{"time":0.2333,"angle":-11.46},{"time":0.6,"angle":-38.32},{"time":1.0333,"angle":-3.97},{"time":1.7,"angle":-0.86},{"time":2.3333}],"translate":[{"time":0.2333},{"time":0.6,"x":-21.09,"y":14.18},{"time":1.0333,"x":-36.67,"y":19.76},{"time":2.3333}],"scale":[{"time":0.6},{"time":1.0333,"x":1.035},{"time":2.3333}]},"r ear s2":{"rotate":[{"angle":-7.49}]},"hair t2":{"rotate":[{"angle":0.61}]},"hair t3":{"rotate":[{"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88}]},"hair t5":{"rotate":[{"angle":63.33}]},"hair t6":{"rotate":[{"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63}]},"hair t8":{"rotate":[{"angle":23.39}],"translate":[{"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair t10":{"rotate":[{"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54}]},"headbeard b":{"rotate":[{"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67}]},"headbeard b3":{"rotate":[{"angle":8.76}]},"r ear s":{"rotate":[{"angle":-5.67}]},"r ear ring b":{"rotate":[{"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"r beard":{"rotate":[{"angle":8.77}],"scale":[{"x":0.88}]},"r beard2":{"rotate":[{"angle":-0.61}]},"r beard3":{"rotate":[{"angle":-10}]},"l bear":{"rotate":[{"angle":-11.82}]},"l bear2":{"rotate":[{"angle":1.82}]},"l beard3":{"rotate":[{"angle":15.47}]},"headbeard f":{"rotate":[{"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99}]},"skirt f":{"rotate":[{"angle":9.15}],"shear":[{"y":-15.36}]},"skirt f2":{"rotate":[{"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98}]},"l leg5":{"rotate":[{"angle":-9.62}]},"tail":{"rotate":[{"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{},{"time":0.1333,"x":6.12},{"time":0.4333,"x":42.81},{"time":1.0333,"x":61.15},{"time":1.7,"x":30.57},{"time":2.0667}],"scale":[{},{"time":0.1333,"y":1.122},{"time":0.4333,"y":1.245},{"time":1.0333,"y":1.016},{"time":1.7}]}}},"winloop":{"slots":{"r eye fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"}]},"zhuaji":{"attachment":[{"name":null}]},"zhuaji2":{"attachment":[{"name":null}]}},"bones":{"l hand2":{"scale":[{"x":0,"y":0}]},"r upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":12.97}]},"r beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.19,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.77}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":9.4,"y":-12.46,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":0.88}]},"r finger b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r ear s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":8.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-5.67}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":12.16,"y":-17.99,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"skirt f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.75,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":9.15}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":5.8,"y":-22.14,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.9333,"y":16.45,"curve":0.25,"c3":0.75},{"time":1.8667,"y":-15.36}]},"r finger a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-45.72,"y":-64.16,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r finger c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r ear s2":{"rotate":[{"angle":-7.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-18.83,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.85,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-7.49}]},"lock":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.41}]},"shadow":{"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.97,"y":0.895,"curve":0.25,"c3":0.75},{"time":1.8667}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6333,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-8.22}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"r ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":10.23,"y":32.42,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-14.9,"y":-20.45,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r finger d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":-11.96,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-40.32,"y":-0.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-7.85,"y":2.92}]},"l upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-13.07,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":-32.01,"y":36.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.9,"y":0.9,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l upparm2":{"rotate":[{"angle":-6.45}]},"l bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":15.47,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-22.67,"y":24.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.819,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l finger a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.63,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.31}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":12.82,"y":6.27,"curve":0.25,"c3":0.75},{"time":1.8667}]},"hair t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.76}]},"l finger a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":17.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-7.5,"y":19.61,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l finger b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.16,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-5.23,"y":20.34,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l finger d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l finger d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":59.08,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.33,"y":20.87,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"r upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":2.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":36.1,"y":-45.18,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.2}]},"r finger a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r finger b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r finger c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r finger d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"r ear":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-3.09,"y":-14.86,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.842,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":14.28,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-16.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":12.07,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-2.28}]},"l ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":18.73,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":3.59,"y":24.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"l ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.76,"curve":0.25,"c3":0.75},{"time":1.4,"angle":24.3,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.27}]},"hair t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":0.61}]},"hair t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-2.51,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.7}]},"hair t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-11.93,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":9.92,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":5.88}]},"hair t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":63.33}]},"hair t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-0.31,"y":4.06}]},"hair t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.63}]},"hair t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":1.49,"y":10.12}]},"hair t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":-2.26,"y":14.51}]},"hair t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-32.32,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":10.5,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":2.6}]},"hair t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":9.54}]},"head2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":4.6,"y":-21.12,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.7,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l armour":{"rotate":[{"angle":1.84}]},"headbeard b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.67}]},"headbeard b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.8667}]},"r ear ring b":{"rotate":[{"angle":8.97,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-10.98,"curve":0.25,"c3":0.75},{"time":1.4,"angle":28.93,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":8.97}]},"r ear ringb s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.4,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.4,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":5.7,"y":-8.17}]},"r ear ringa":{"rotate":[{"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.4667,"angle":-29.16,"curve":0.314,"c2":0.27,"c3":0.686,"c4":0.73},{"time":1.4,"angle":16.48,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.8667}]},"r beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.61}]},"r beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-10}]},"l bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.4,"angle":15.47,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":1.82}]},"l beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":15.47}]},"headbeard f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":3.01}]},"headbeard f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.66}]},"headbeard f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-0.6}]},"headbeard f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":36.02}]},"headbeard f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":40.99}]},"l leg":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-2.29,"y":50.63,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l finger b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.64,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.59,"y":20.84,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"skirt f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":10.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10.83,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.1}]},"skirt f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":27.49,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-16.58}]},"r leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":27.96,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-12.01,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.98}]},"l leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-30.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":11.31,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.62}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.1667,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":4.52}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-8.22}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-1.85}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.95}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":16.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":5.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":-98.01,"y":-10.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":0.9,"y":0.9,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.95,"y":0.95}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-3.18,"curve":0.25,"c3":0.75},{"time":1.4,"angle":14.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":59.09,"y":-135.37,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":1.1,"y":1.1,"curve":0.25,"c3":0.75},{"time":1.8667}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.9333,"offset":36,"vertices":[-2.41049,14.08145,-10.63983,9.53357,11.41489,0.51631,8.62204,7.49872,20.82419,30.77104,-2.80862,37.0488,53.80902,21.06067,29.06711,49.94165,43.71988,54.54894,0.35004,69.90634,-0.88062,19.47218,-12.7916,14.70761,5.71973,30.41342,-14.42053,27.38129,2.25964,28.48312,-15.93155,23.71869,-5.14142,35.24371,-25.93134,24.41534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.39771,-31.9695,3.10556,-38.34393,-32.63104,-64.54259,-2.67554,-49.07106,28.40125,-40.10614,15.19,-39.32011,36.33786,-21.36356,-0.30249,-29.38377,18.0249,-23.20792,0.36182,-7.9995,5.25519,-6.04211,8.23709,-14.43842,-6.16132,-80.23037,45.0358,-66.68332,-11.18542,-41.29755,16.90335,-39.30496,-2.67551,-49.07107,0,0,-4.45917,-81.78522,47.33566,-66.84366,-8.74689,-59.13564,29.90024,-51.76413,-2.25064,10.54112,-8.31439,6.85941,14.49524,-24.1174,30.06024,-49.46475,0,0,0,0,0,0,-4.30402,-49.14474,27.1712,-41.17593,-2.44653,-18.05902,9.30701,-15.6683,2.06238,-45.59348,29.95184,-34.43707,0,0,0,0,-20.05573,10.5144,-22.24652,-4.22729,0,0,0,0,0,0,0,0,3.87411,11.61391,-4.18277,11.50629],"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt f":{"skirt f":[{"curve":0.25,"c3":0.75},{"time":0.9333,"vertices":[-1.8898,-25.58164,0.47333,-28.95829,-1.18393,-41.18966,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.78281,5.60857,0,0,0,0,11.63187,18.17604,12.89143,17.3054,0,0,0,0,0,0,0,0,0,0,0,0,-0.37607,-29.25813,5.20969,-17.44646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.98029,-21.54911],"curve":0.25,"c3":0.75},{"time":1.8667}]}}}},"za":{"bones":{"r finger d":{"rotate":[{"angle":4.88},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-44.03},{"time":0.4,"angle":-86.33,"curve":"stepped"},{"time":0.7,"angle":-86.33},{"time":0.8,"angle":4.88}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]},"r finger c":{"rotate":[{"angle":-20.25},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-69.15},{"time":0.4,"angle":-111.46,"curve":"stepped"},{"time":0.7,"angle":-111.46},{"time":0.8,"angle":-20.25}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]},"r ik":{"rotate":[{"angle":102.66},{"time":0.1,"angle":27.72},{"time":0.2,"angle":-23.72},{"time":0.3,"angle":-35},{"time":0.4,"angle":-34.26},{"time":0.5},{"time":0.6,"angle":71.42},{"time":0.7,"angle":72.92},{"time":0.8,"angle":102.66}],"translate":[{"x":275.23,"y":-9.7},{"time":0.1,"x":9.93,"y":99.3},{"time":0.2,"x":-62.42,"y":126.65},{"time":0.3,"x":101.76,"y":271.14},{"time":0.4,"x":262.35,"y":318.34},{"time":0.5,"x":364.24,"y":281.87},{"time":0.6,"x":380.54,"y":150.47},{"time":0.7,"x":448.94,"y":120.68},{"time":0.8,"x":275.23,"y":-9.7}],"scale":[{"y":-1}]},"body":{"rotate":[{"angle":-46.01},{"time":0.1,"angle":-57.16},{"time":0.2,"angle":-81.65},{"time":0.3,"angle":-101.77},{"time":0.4,"angle":-119.71},{"time":0.5,"angle":-130.33},{"time":0.6,"angle":-117.59},{"time":0.7,"angle":-79.13},{"time":0.8,"angle":-46.01}],"translate":[{"y":-102.64,"curve":0.25,"c3":0.75},{"time":0.4,"y":43.22,"curve":0.25,"c3":0.75},{"time":0.8,"y":-102.64}]},"rhand":{"rotate":[{"angle":-61.96},{"time":0.1,"angle":-73.08},{"time":0.2,"angle":-53.34},{"time":0.3,"angle":-7.68},{"time":0.4,"angle":-6.95},{"time":0.5,"angle":-9.55},{"time":0.6,"angle":-40.31},{"time":0.7,"angle":-69.63},{"time":0.8,"angle":-61.96}],"translate":[{"x":262.77,"y":-233.79},{"time":0.1,"x":680.4,"y":-287.15},{"time":0.2,"x":957.51,"y":-271.75},{"time":0.3,"x":1234.48,"y":-302.33},{"time":0.4,"x":1221.78,"y":-462.7},{"time":0.5,"x":1093.17,"y":-495.57},{"time":0.6,"x":634.16,"y":-422.65},{"time":0.7,"x":326.51,"y":-326.65},{"time":0.8,"x":262.77,"y":-233.79}],"scale":[{"x":0.445,"y":-0.647}]},"r leg":{"scale":[{"x":0.787,"y":-1}]},"r finger b":{"rotate":[{"angle":-29.74},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-78.64},{"time":0.4,"angle":-120.95,"curve":"stepped"},{"time":0.7,"angle":-120.95},{"time":0.8,"angle":-29.74}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]},"r ik2":{"translate":[{"x":128.11,"y":-106.46},{"time":0.1,"x":78.5,"y":-78.71},{"time":0.2,"x":-2.33,"y":39.33},{"time":0.3,"x":87.53,"y":45.77},{"time":0.4,"x":81.77,"y":1.21},{"time":0.5,"x":108.09,"y":16.09},{"time":0.6,"x":105.52,"y":-61.86},{"time":0.7,"x":117.78,"y":-18.96},{"time":0.8,"x":128.11,"y":-106.46}]},"r finger a":{"rotate":[{"angle":41.48}],"scale":[{"x":0.674}]},"r upparm2":{"translate":[{},{"time":0.1,"x":-19.41,"y":-38.23},{"time":0.2,"x":70.15,"y":4.15},{"time":0.3,"x":65.08,"y":-39.08},{"time":0.4,"x":15.42,"y":-18.44},{"time":0.5,"x":52.86,"y":31.48},{"time":0.6,"x":19.38,"y":-89.99},{"time":0.7,"x":53.32,"y":-22.94},{"time":0.8}],"scale":[{"x":0.874,"y":0.874}]},"r upparm3":{"rotate":[{"angle":-42.68},{"time":0.2,"angle":-132.51},{"time":0.8,"angle":-42.68}]},"body2":{"rotate":[{"angle":-22.79},{"time":0.1,"angle":-10.08},{"time":0.2,"angle":16.6},{"time":0.3,"angle":38.66},{"time":0.4,"angle":52.44},{"time":0.5,"angle":59.18},{"time":0.6,"angle":41.89},{"time":0.7,"angle":-15.52},{"time":0.8,"angle":-22.79}],"translate":[{"x":-80.64,"y":48.56},{"time":0.1,"x":-29.6,"y":11.44},{"time":0.2,"x":24.21,"y":6.83},{"time":0.3,"x":87.48,"y":24.44},{"time":0.4,"x":76.26,"y":17.25},{"time":0.5,"x":-2.05,"y":-11.35},{"time":0.6,"x":-89.25,"y":-3.33},{"time":0.7,"x":-119.7,"y":79.08},{"time":0.8,"x":-80.64,"y":48.56}]},"head":{"rotate":[{"angle":54.91},{"time":0.1,"angle":57.8},{"time":0.2,"angle":61.64},{"time":0.3,"angle":73.6},{"time":0.4,"angle":89.11},{"time":0.5,"angle":87.54},{"time":0.6,"angle":81.54},{"time":0.7,"angle":92.91},{"time":0.8,"angle":54.91}],"translate":[{"x":20.04,"y":114.02}]},"r upparm":{"rotate":[{"angle":56.42},{"time":0.4,"angle":101.77},{"time":0.8,"angle":56.42}]},"l ik":{"rotate":[{"angle":-2.64},{"time":0.1,"angle":3.05},{"time":0.2,"angle":-46.63},{"time":0.3,"angle":-134.68},{"time":0.4,"angle":-137.5},{"time":0.5,"angle":-127.9},{"time":0.6,"angle":-79.41},{"time":0.7,"angle":-68.78},{"time":0.8,"angle":-2.64}],"translate":[{"x":-145.7,"y":70.09},{"time":0.1,"x":-250.39,"y":-2.76},{"time":0.2,"x":-480.05,"y":85.85},{"time":0.3,"x":-641.99,"y":290.99},{"time":0.4,"x":-630.55,"y":360.98},{"time":0.5,"x":-560.06,"y":415.93},{"time":0.6,"x":-341.98,"y":228.69},{"time":0.7,"x":-251.83,"y":181.63},{"time":0.8,"x":-145.7,"y":70.09}]},"lhand":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-84.39},{"time":0.2,"angle":-88.18},{"time":0.3,"angle":-51.49},{"time":0.4,"angle":63.47},{"time":0.5,"angle":23.26},{"time":0.6,"angle":22.08},{"time":0.7,"angle":7.83},{"time":0.8,"angle":-13.41}],"translate":[{"x":-193.67,"y":14.63},{"time":0.1,"x":-191.58,"y":197.82},{"time":0.2,"x":-10,"y":106.23},{"time":0.3,"x":239.36,"y":12.55},{"time":0.4,"x":566.66,"y":-50.17},{"time":0.5,"x":517.71,"y":-176.13},{"time":0.6,"x":249.12,"y":-178.34},{"time":0.7,"x":0.66,"y":-103.29},{"time":0.8,"x":-193.67,"y":14.63}]},"l upparm":{"rotate":[{"angle":121.1},{"time":0.1,"angle":113.65},{"time":0.2,"angle":153.35},{"time":0.3,"angle":138.84},{"time":0.4,"angle":121.54},{"time":0.5,"angle":114.98},{"time":0.6,"angle":121.16},{"time":0.7,"angle":148.41},{"time":0.8,"angle":121.1}],"translate":[{"x":-7.3,"y":263.84}]},"l finger c":{"rotate":[{"angle":67.75},{"time":0.2,"angle":46.4},{"time":0.4,"angle":29.53},{"time":0.5,"angle":73.3,"curve":"stepped"},{"time":0.7,"angle":73.3},{"time":0.8,"angle":67.75}]},"l finger b":{"rotate":[{"angle":12.29},{"time":0.2,"angle":-9.05},{"time":0.4,"angle":-25.92},{"time":0.5,"angle":17.85,"curve":"stepped"},{"time":0.7,"angle":17.85},{"time":0.8,"angle":12.29}]},"l finger a":{"rotate":[{"angle":-21},{"time":0.2,"angle":-42.35},{"time":0.4,"angle":-59.21},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.7,"angle":-15.44},{"time":0.8,"angle":-21}]},"l finger d":{"rotate":[{"angle":104.78},{"time":0.2,"angle":83.43},{"time":0.4,"angle":66.56},{"time":0.5,"angle":110.34,"curve":"stepped"},{"time":0.7,"angle":110.34},{"time":0.8,"angle":104.78}]},"l finger b2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger c2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger d2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l finger a2":{"rotate":[{"angle":19.49},{"time":0.2,"angle":-1.85},{"time":0.4,"angle":10.22},{"time":0.5,"angle":56.06},{"time":0.7,"angle":44.53},{"time":0.8,"angle":19.49}]},"l ik2":{"translate":[{"x":91.54,"y":85.04},{"time":0.1,"x":57.37,"y":79.54},{"time":0.2,"x":46.58,"y":84.16},{"time":0.3,"x":43.88,"y":-108.48},{"time":0.4,"x":50.02,"y":-49.47},{"time":0.5,"x":61.7,"y":4.19},{"time":0.6,"x":69.69,"y":-9.68},{"time":0.7,"x":87.16,"y":32.39},{"time":0.8,"x":91.54,"y":85.04}]},"root":{"translate":[{"x":-273.37}]},"shadow":{"translate":[{"x":203.98},{"time":0.1,"x":178.18},{"time":0.5,"x":274.91},{"time":0.8,"x":203.98}],"scale":[{"y":1.122},{"time":0.1},{"time":0.5,"y":1.458},{"time":0.8,"y":1.122}]},"r finger a2":{"rotate":[{"angle":41.48}],"scale":[{"x":0.674}]},"r finger b2":{"rotate":[{"angle":-29.74},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-78.64},{"time":0.4,"angle":-120.95,"curve":"stepped"},{"time":0.7,"angle":-120.95},{"time":0.8,"angle":-29.74}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]},"r finger c2":{"rotate":[{"angle":-20.25},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-69.15},{"time":0.4,"angle":-111.46,"curve":"stepped"},{"time":0.7,"angle":-111.46},{"time":0.8,"angle":-20.25}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]},"r finger d2":{"rotate":[{"angle":4.88},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-44.03},{"time":0.4,"angle":-86.33,"curve":"stepped"},{"time":0.7,"angle":-86.33},{"time":0.8,"angle":4.88}],"translate":[{"x":44.52,"y":60.51}],"scale":[{"x":0.674}]}},"ik":{"r ik2":[{"softness":50,"bendPositive":false}]},"deform":{"default":{"body":{"body":[{"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,35.35371,104.09641,-56.41144,94.36063,34.89735,102.75305,-55.68358,93.14301,34.36752,101.1922,-54.83769,91.72815,23.21427,68.35455,-37.04214,61.96158,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,2.74778,8.0929,-4.38556,7.33716,-35.01967,-147.40784,22.17225,-62.4007,61.9044,-23.52316,45.67571,20.22668,16.69455,47.73007,-10.88503,-97.19366,67.00238,-71.24432,15.52511,45.71341,-24.77264,41.43884,26.14412,-7.80164,-6.01879,-33.35602,21.51585,-26.18973,-14.17799,-23.50479,8.72586,-26.02496,-35.58823,-107.3894,6.52748,-10.91699,-23.80665,-226.44205,157.10765,-164.802,-29.94382,-93.37616,51.7493,-83.29276,23.84945,70.22464,-38.05568,63.65701,42.23387,-11.85059,67.71373,-75.7012,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,5.61839,3.51666,0.96066,6.56055,-7.02176,-23.28021,13.18948,-20.42807,-33.7172,-151.39035,93.50644,-123.74283,16.09814,47.40128,-25.68732,42.96857,0,0,0,0,-3.7588,-102.26871,75.48494,-69.10156,-8.63871,-28.04095,15.76945,-24.74347,8.55842,18.07172,-8.22548,18.22626]}]},"r arm":{"r arm":[{"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043]}]},"r armour u":{"r armour u":[{"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]},{"time":0.4,"offset":4,"vertices":[163.9654,-45.00104,177.28926,99.94327,181.48798,-69.53613,202.98242,108.74658,140.53593,-68.87366,203.46579,65.00528,76.7599,-81.34448,151.37636,9.09085]},{"time":0.8,"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]}]}}},"drawOrder":[{"offsets":[{"slot":"body","offset":1}]}]}}} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/spine/fenrir.png b/tests/cpp-tests/Resources/spine/fenrir.png new file mode 100644 index 0000000000000000000000000000000000000000..64d6bc3d6eea4487818917e5cd0c0734d335126b GIT binary patch literal 877350 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

    DC#MDZGl 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
    QPp_Z4ejS3CJ0IS;^U1qCJvT4)^z>Zm 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

    =lTPY1nWP`(|Wk#^S)_mZNX88>TOp8B9)2Tsi_8 z;TJchDzO^ba+v=&lsGCgm|{g7Iju8U+ol2n1Ufv<>b5;n@EdxHjAnll7teND8J|f6 z|F0;mwDI1}PZ0M%AR`)*fJ7=TE2IR_D&_J33P~;ze)Qm_1$($Y8aS88)EWJOk#}G9 zwVa6^_vcVh@b;L2jfUDtU2$^3mY3n3r3MpDzsYG5u4GO|3X&jET7=P zw|s+idJX~4AP7n#nl773MHcMa{y1^$GDw<+=qJC*n*AnD+NYX~od21b(Uw{*b1=NV zl-avJd3!OlhwJy84pWsmT)$I?tY;8Y( z1iSfqIVm_da(m{tIz~MZ&Vsi}(sWh3R`z?=eoGzQQZ=@4S9zm8SmrU^h(&*$;y3mK zr*kSg!#U%=z_ykIS(jJkrHOAkJ~n z@#d9_Ip?|8jU~V2M74)|yONSJeGcwUn5~0^zlz?oVA2`je-;8@Bv?-6fDx>-2nv`BQ-ZxmcuZP(AC^QS3Z6r% z>h{%hbZi0%m|l)m@>@$6ahno1vF}Le4uu}D z*(}+?&+$}ZtU>H{^!^-kH*yaaJDl3dBg9K4<)a)HUpapEvh7r4nb9@H((r9QDSw-A|-SkBXb`;QRNeRbZeC<7o%!O>iDMSe+C zdI1QT(aMbF<%8-t$7bIqsjkY0ZE`gD-~*!(LPhXGs9q$$DKh|xhbL+(_;3dxnQ&uM ztS?2t0QOcmeB@~~pd?Wy=4#R7;>Jd}$EP1faeuDtDo!gKMi^xQcOV3}8U|#fIa$Ua zxE})K9{O2$uHlxa?I+D02J~t?2;T3OY{_|2_Lg8fb-}DsOx9A0 znC@k3ZfS}rM7NU>NG|!q{1ALcx4wH5ov-2DXVWl`MJ$^dZ1!GnvgRhc zwU=zveA{U+3Y)uWFHCigvjg4;!c0Su9e82PtL`3T`y<*|8xxH9N@Jbqu|e;R^HQjL zl3?<|q>?Cr3vQ7$WDY@q)rUQaAvV~{jR0Kz%~AAeo;^giy)d!=k_kspz)YAViHim6 z8?bVmTgg7J$+EK&0IS`Z&yR9Pj0{R+G!MM=-qZ-F8KnXF%N&~aH|Z}els!uS7DnLZ z>@0Ml3oF*yeVNMe10mPfREUc!EBFR!fgW3p#eAgxq?>N^mGi0pg<$A4eIePr($f__ z@g^mzr)g*->wbpN(u~9+%ar}qO?)A@s34ND$i3n`6(3~3^;*0+1MUP6r73VrC$NT4 zNc4ixz+7wa(Xq0Evt}qTX(PubDs*SVtnF^elB2jlk57X2NCR$SXH($Y$g;L;UQSSd zA47%Y%%ZMB8KDMl>&wl{qu-rIzIg3Qcz9Ct&%vO>5jDGg-+$no*)B)J2lD*c|4Pjd z3B#k{Zp^95`lO4@R_0ID;L{;|R`>Vs+BB?XcJ}n^L+s7A=*wwJmx&(3;%5h z(b2txCw{<7d;coX{$X{h~9u~QOlK%EZ__B8=0nTq<9{lL;Rq=5JuU#W0uxfapJ^^1h z&@f&F8euyl?q7}2;uO-4u=|=6oPu0-AkYW$jLELRW6w|gXb~S>t@|(r5GALjlQP2a z{ntp~mD)}u*iF0={HEEvy5e$jWpZD+dLk4CK|)`XU~qMoj*u54Cnc%Mdp*x=PWR8& zlRVSRA7ypfu%*G`HTh~EpZm(E!9KpZk7*|*e93Lg&|b-qsdIMuIlp1|10f=z*^V#O$0o}g(NxIatdzjeBY2Za z7I^Ax@%@t+(C6Jyd&)RfzsH%6?{~n;%W_eXa{)442$<$wM*x4cdQkW?s$vP)L$Do+P{|LoUr1kZ6ft zB_HOq@QmgBvkOG1kcB^jfBCt0iw04K!0Ea({)AkAiC<-dTiJZkH`Y&Ux)HBT393@( zNvn~C)`=vBi=`sDCq_*~P{*6|U$}MZ2q7=}0t#>$CjSN@7_~pWzfxEH_ySknHkfFn z`Zaqp;Xo%xOO%E7-KG*@drqt5c8%rzZqGFPedO&wECes7Jf^xgmqxk68>7DpWV zfrepbSzxd~G!WLK=@1m!MR&6vh7{HW+edKUC-6_oB|;`bRWEW=>4B%`#jhttdA1fU zO-dqooa!Eev~0bEUAv{eF^Wlr$uu{w9G3 zig2c>wEUigeo?s@wKH1(5OTJ2>MZkhEoa3h!GWMX8s2c2@pR_`A6LJa;^4J$g$Pv2 zJJ;UmxC}FoYW=bwym6)0X?@R5>E*QdqABUF9HdY=E#w2@(eK~NS-!7<1>Y2gKazW! zTAYa?%JTONg&^2~8!7Gi$VEW1Oj1-Y-gor6t_V4=3E4%ab*cuzx4u7aj|K9ja8WT( zFcsk*sTC;kSm9+BZ1-1`zksTAAE**+t%Ohr+U-(CJw=2XRiQ;jwN33FG5X|Sm8aAT zUaU4c?J~I<=9lio!vhhf3P418Fq1#1k#21bB%`62NTkONWWG6m%yR$0FbHzSyWiK^ zs)OrJU0PZGRsrwz1LYTdlC@h_C*;NM*CqI6q@| zwwF*6)9Mj9XA5dUKUN76U1B1q9A1OBT)`OHYL#sbVA7z+1M!E;I8)1*unXI>1emCj z0D+`$I>3&KGD(MLVD2~VW$tnuXfAvZEaqBuI=KYVvGv`d<4wGXNmn{^sz!>L*_0z+K^ZfY5Zg%IR_ zPMa2Bt=wbe;qMVni#dV=GwW#Ghb_?{VXZHx@DhKi@30(aAh-pgZCXQaw+)6o|_mz8;QD6qLR zn3vkOQvyqiK&CBbiMKkCS}5m3a8K%Ni#MSN)G*U;RVgg^yAS=n%q1B!-Uoy9@HQU3 z)wk?zKA2-ob@pwaQMdGN_uh$NjQ+K=x$O+n@$7#jn(#{dpd4R-`?_e_ALoW;q=TZD z$4?OP3{$Cl+RS|vTt|18?~)K3?zcD%B7Mg7%te&x7DIC8BFsQ=>XO{0@Ar)k9Zx*n z@Ik4Iv#I0_4bnG{k9$U$lHKVVKGF89exx=E(-&yjj(%&?ESe+hhicJJny!@f7xW*m zef^@B6<-DnNVv2Q+_X3{Yc&d-Dl<)zf&y@f7siacB~?qRTo4Xj{w#aH9WP-1&)(uR z4A{&GlhZDH*_ofe?l#w@ctWh%Sib)UmNU;?pxq@Sm0k?uvV;JlBdA)UKfUR)Ia8lt zmN^B$qHT)z#7qAoO%$iEZ4)IS@H?M{!RU*?HiDW<$an76(zkWVX{u0N%dl`T;V618 ztDv9s&Yh8%0!$);Y=?HV$afcyS|svowo_hP*9``|)WBB(wYTmu?~&{LaOP@4NHwa> z=Gz(>VLSWTc`Bm>-d4g}`h1F|!gRRZM9%N6L$l__>xWWh?9J*C9 z2>Dr8@8Og_W}P1$nnX%}lEGeg0EnRYD}%MPhlP;{^&6QjMmhJ>gw|A{*f~rOIB70| znmnK%wvDpO0EL_%NKb{CTk@%^49@Z@#2DQEawDprm%J+r)nceL7v>9#{-h7j4&wkB ztQr%>3}_QN*Q6N9h_rzAe0#v!3N=f)3D_2 zvF)Q&DXj95dNxch9)$-Sn=E^<_gSk$FikG3-{wbEPMO7Ki5!e!x;tPPk*Unz-B+C( zV)?lt|G)E;(?=|;zu%F{jQs|c1K#U#L(kj>sVw~a_mJDkWa!;8RO{`_iirmO-Yz7# zFPU#v|3(VLvbGpO$_@X(w~pO!x_$L)Y@Tfk(6KgTz-N-Q$f$XMVX(9J5Di zYOYEE;>3eDgnbe}ncW!p>K^%|(MBJtr6Kh{M3H>Zi*A>G)Xu)|oGMtoJdAML2V|B6 zIR$KQ-p{1fD8rjzdl&V5mBf+$+sP+zXLg$WjF9}SgzuYMy@wl~7N>PO!SfL{Uti=( zRzsIvH*y>5=DJt6jZDr!RDc9HdrE%-`R3{^8gpkq!yhq}zzxD=al0=p?z}rNU77K7 zj$Jy4{Frtg+0A3~_!1$+R68F`iX!|95^lawIKo};5BfoJq^adv+x>y~5$@LyO?)ta z5z{P_47j+hBZO&^bvOcI?x%0{%?>ctYzzgHW#*xmXm6o$>;QbfsWa*8inKfx<%w5t z*wY@J?noV!sdik}!~Xn*;5j(A3k$gdWLVG+(ozn*>lL7H_?yJ-Mz=ak+R~(EK0-cs zj@^)MTrK+SKCAy)p0fYj64_H9S)bdo@=VkL>Z3TfRB=s_@7K&j-AeMVkbc0mGm(qt zu-aOMSu#k5%&*)&@Dj6Qq2briEcKZ z4Z9`Z>t>zNoG&-5T~}w08TNZv$VL06E4-fy6uur@_UTgTO=RZJ7^G5D406SkkUPCbER;H~IF;!z2F{eWS-qV;&<5|_{|Jq>`!pkNG;+oC#fiPxD zWDOZ^dxw*mXM6jHOr?%FW7=KbqLF(QB0V$K=}FqH+#Pmb1WPk-T6$!^D?$LH$yfrm+-h866kxy==^>cR>6?*N zld@bP(;j$TpXrSqQsD2f>b;WpiKjC!oy2!%R^|+ir=a2$T5{(Q}^s_WT z`N<&USr(#kkx%FyhJi>AXiQ~Q?>&j^@Qh4 z$R$}3OP0eX^^1R3PK11nM|A(C9{65~I9(~=Y#1qhbGTEO*Q@Exvu*cpLr^JDRTo7( z;k`@*Ce;0&1VQ|4F+j3l=P?Op{@+7-Q{@miih&sx9^v;&v{y!o)$)FZ067xA zO3W5gADpT`c69rBklNb;L)kXYP|ufi@u|K!{ITqJThw!TZG}P8VR{&q8J!dJSOG1i zja&`~v^AV_v$9DLqu=Z|KmxXL;f%Jmd-JT(P3|!E zv55e?90e%Zh&CcGnVM6TMiEAZee^VjSxPH)OEqFjwM# zKNh5sYc6J9b38tXJ9_WWO%_fOVme|K=g(g6SmcQ< z%bl@x?QE+TQ6k}2N0wb_va*H$#T0^#m)xiIYsC)JHH$yv>IK)HWx&BYic7>sdP7R# zT4N>I=&>4=#2$oJwWl@ojmXc8*6r~ujTDHT`b`Zy4CPC6~ z)yw%p8;V)(RkXpaNs&M95SI>aQ(zxehMh#JnVQ6~((>CuszqE2Oi6I>Ue1&a+nX?2 zU^6t<&=jWlBjHO%s8;o?GT?KELg2?Pk~iTeUBAC=+|3!CfO(|7#MDBydhtihNLzN7 zcTL~a6UYup(>Vq;@f!Uz43y@!m8z@*jooX0GlYLZKZ6gsbFHaTj3nv4p;{QFXk~^Z zbQyjp9gjo`&e=&Cm56Mm)7GAoAG1wy|FQZuH1&DvlD)>?pZPPULlYoHtIi+8H zo*Z6lAo((hu^_GAmk;ibbYc#lS~VqPm5E8}DT7X~{+Nip5_el`(6asjSeVcm|mvFDLE`B5Tm}+|nn4P6)$eKj8TfG&&I+?T? zWmxe&go~yb+|!Su+I`^<2I$k81k^NMSi46-=q`JWl(%&yD$YNKJF|r6XHcKv&+X2R zuI>J%9~j(&-V~bq@R%{~loD9+72{nl?rAr2oEy3M0%pM;uc3_Kxf}f_IlvXUmBrz} z{(k7b%)t$7LLp$fOWAN_GA# z93T&9dQyD%F900V2(6GMfoK+D(TslLP!4w>cnT;ks8DnmV-hq1_$4@j1E0yGd9XeVpM)fQhGqLnFHn91y&gy^>E?^qAZ&8YGW0<|Dyf!J7VVIv{AFoI5z zFnRIZHoXAs>Y%@jV8zv55n*X}@wpHM;Ct{xPZo-6f7^Lz9nyTQex5T;+I7A`154dz zOAQ&BEQ`$$-RZ7fAT?*x<_tteO(uftk|ci==fRN)r}|u@+NF%XUPr^uD~{PHYS^4HJ&Qk?Jj~rGQkFqt3_aVjaWohvC6C}Q<@!woGV`ANa8UZ=fE(VgqJ>y z%gbt#WqgqoGr2tU{R!OtKH;fN-D%g5`?~(4lA|*RC-$+v-9FD4XYJn){&BU#l#QGQ zWQK>TPp|p}aRHI{I@m7L#AdOY09e;5^5|k1+v@8ELbTFuz$BpJf#&Fn$o&DAG>8wk zvfU<|x8^ku0w5&Vrj0ilDb0lCWt34->@36TzN>s5&Cy00L&B$Km?&|A130j}$^RY> zHIO$9&h+L!_nSQclB)&xZ(pC|hug}q^yk9v_@W~% z;hIfDrjXF{O=?Ku=UX(Ctk+E_a&{^EWO-}f-EkNw7biBd!F`eDt7Tb_;@m^;nO{aM zd|4fkqIyzr7r(2mQ~9MJLP@7QBXL+P?n}-D*~s(c#YUB9aLoBez$`uE6|58oBO{i6AWxLr52^RVUROsx;%guvkxUI_ zO?>jhMWy$1m_SG!qGro6J$wM+B-m%l6puz<#tyB*Xb_jMw|iLAqEVSIlWzAcRdL@C z_vU`ybW4f>!!(dqjCOH|Ax(Tq17J`^-7pFy8Rio3YxP^BYu&)gJZ1dV3$`X1O*@Ph z$%Juv8uKc%*j7mqNPKWAQ(VSO7$ws3bv$P*0^?Z4vs~k12T57EWH1Nm7m(D zJ;4d==4<@m7q7Q%l9%E;!u{17Q!SS7Fi)ud$cFp7}t|-R`%x?ksYa_%_fTAMj1a^1th6-QoK7yuF*wg$*AqNN$a;s0?Wdqrz&r zGX}vT5Z?QC^mIgyG!3A;6~=@katK}QELPfsOHR2<0?%eAleMNz9(et+^!~a~yTa3d zaou_@hCY3OPbu5&Z%7l&d|obf{>XE)J)_<=oCIF@fxBA@ese%q!Jl#hH2Of<^n88E; ziKPAXy$O5&7;^`C1Wx`!;c0yYpIW}HW1ZwUndjDC-4p_ZJ0zRAfrx%G6VXM-+8w|E zF2*26#cDpt2j4f3Lxw)~i0rzbS;=I!ht<3_u$Yih2VrP9EkETJAv9h5rw>FFMNlJ{ z(s5@~T~*%UD9KSVi@Y6@fc*a5OEQHCE8Q-L00FV3!}9*lBW-7k)_| zm1QEPZCZc>_0_H2AE9$6Twh$_Wdf4;AM=E1tSA+HaNxFKP=$y%imT;?1v#kxNz;6* zxL*q?@L@M)4R7{rYBky#h9HCm-61x%w=6673}=iRVZ#Gi1sEuCY^CBVG0j3ByAGXE zMHea;QzXJ+;?6<6NnmZQ+hNIr%UDzXH0pH)@Rm*Ej1@K}DGifnz1fonzzUVOuJf4| ziE``RRnW-k4+b5^?PlHT>xc7FY*^7R3lV53XSJH@00W2IBMrgK0y7d54ngOIRnVR; ze)#d(1*eDUPbI-=J@>o9q#ih@`YcKbtasRIRAudxCBbd`y>}T*;kf~>W*L`{El?uk zvxgntolcF}k$!ec!Lorh&*U;U=E&Y(4@B(R@oe{+pC-%*_0Erk!S)V(F&$qwjmc>| zRhz=X5g8WkGpbRMtIG*E6ju;=Qa4OfWv5J2jte}Q06O9e;i9QPCFta`#v(6arwD3! ze^j_=-nuf#I-F#Wo;j?#F20t(xQ_SnP5xBL2*>S!kuUh{hD=_6%@>-4Wq+|NfVlc7 z;c;dZc=D4~OgKT*L03N{7^1J<60OwwIctj(U1R|#N1TYC)ndGEdL@TncS;&ZFqk{N z4F>l3Y+s0W-zvCUzJ!8xt#}##LhK33f3X*Q#pTA=$-|u?H0<=N3LuVHZ`8EkXb45V zL)jjHo+G@n?XFr@*-N}JF~c#SB=^K3!ymE)22 zd$y=DQ6Y_Z5OkIL>KURWz0n4%C=Tf$7nbUuOk~TN-7#xjwknst9@qkXnO$tl4K=d` zY5*&3*aA^K9;otW{4!MjPz&=9D8?pKW)K+{-nSSXJ;(Q5P2cKm!5tJAIV!UXX?~GV z%(hU%)L7U&2S53>PxRc@%$8wUQ-xy^e+wF>s4)&r-}VV2Cdi@Ysf&m@)%zTVlt{0v zCc#Ykex*v3osS&oi!no62}PY7u#} z#IL`s0*eeWtB2X<(Z4Quu7CE{rQl^f|0VlC_ z6?Pp9oaw%xTI=yKoR~JXek;FHnQqZ;Wy7$BX2NcUTDvO?rpR&4>Gad5iOc(d&rg-u zN2Ass1+jMgaDfAF*0GjUSGb3hQl7VTkXL6sIXXW**&)h&J6qBH=rEi8X}VhQ-oYr7 zhuPe9K0J83Ca!QA0yw(IYz zs+c8FnO_E#5*ZOW)6-8Hg5Bp;6W$%DJ?L?HVaAoV)dW?#MumO#vCIzAn-rog&IL?s z$n_~0C3pv+x)1Gwf?p6^CKAA|a^23?3Uq9ZxhtKJ~y+%>ecjHwSI8m%u-KdCdl~-g*oqQqugTa3 zBS$irA^VDy{C&ELU{K*N5=#D1TKMH6-<)s`nyG4a4EbeWz$P-C54$d#5Enrp!%2uW z{rd5s_lEnK$ZqY*yn|+xyB{?BS*zX5LlPf=Xr?Ro1lLaM!;;*HEd*-VaK$ayH%>#Busr)DK2oWZn zst9`Vn6TlM0&pd3i*ZRMKXwR7>G=W=jA@##heGK3#&&S3cR*#~kIW!+-C(r}f^cO4 z0M2Bx`W>*ix^BFSga*#ON)jF}WEAO;b@y5%F#GM~JWNkYf)21P04xg$(qkVKyssW+ z>f>(@tp2*PMMouCj27)7<$%;@2Shu5N)e(-Y?*?)q z8kx04PV*QJluQNqIH-!VRGg*cOMJ_>!q{AiX64uT4}IhxzsW5DoS6F7m_S#`)!C2G zeRX>YcV3k?tpVFSJ?@DVmR$ZnKJpsb)no`POV)i8mFzpTiTG75REEsg^61nVY=z)iBEXBMqy$QH(LNg?u*EfO92)*DW{317$QllOAP1SOxQJC zsGeHff8!Hc-S!TT0H*^>mLinNaJ39P1PH0p=lY+A?|;xnWTVKiE=Bv?d49~mG%||2 zf-f^tf>JI314nxV&YGdHl9_lZZB{wcm)rD`AgCpU3ydLDq~NR4Q}nlkr~?-)Z4(Sj zRK1=kVnV<-2`WSZS>|&JCp{M*Ms!>ok(}iE^0)OS_PF=yg9e7QdDG-*x%G4T10d6g zH9>*wOK~&xyDa(nC21sf_S@a2w&kZqPZB=^kZ9aG3C-;XUrR}GIz_+M8&zHI5QLm| zf0UHd%}||ekXD@tKA~vOBjN4qxU0PTlH{?L$AKAJKv~Lr<}fiP?3vVwW!FFAhPZ_w zQT^TDC(s^U1>dVg4=y#lh5)*tI0P~u_H*v{T-Z2p2IEzeV!ng(DtYA7{yFceGNVL{ z(w(eCjH}~MBe(Adspa#~8^SK{mNUkGWwXw60}s!z13ta%Wis!8O98HR+1i;M{Q@%p zRs~xiV{$IP7>M_Bc!kcC*6C$dn3GM6m_c_&SpO?NLev#g`@KwZ%3p>(qXh8{jfdrt zJ*j2-NsoXpztTXTE4(NzdZm&OWk?E~1ef~QSb(9#w}};_{wItbs#+y>75H3DNNIj9 z1^6np1|!M9^un%6qW^LtPC4^svVqI#qbJXg`P^>c(Nxp#!@n(mNl?_gQXi}R>JSzf zQLpxflqP^owTQnnWb-n-Q$dQ%e9DPO=o3cmIm1)6*F!7nN-%x42fFv0#5_Pq)Dgr|i z@0b=5z%CH}?d(iIHhBFF9j#;nM%Q0vRkVikoOtl1BRswc+keaYzfjR1qJOHD?18ZZ zKI!w#Pg*ITHmR5y z6@j`^ELsn_W^LIZSK?p(CyZ74-D=Ta=ZdNq*prosoJ&vd+DB)WDEQ`xMF)X1+Vg`r z2zo~D8`^^;16eCNJVH{sQ__haTNyO3Z8=Wed5H6zYw;OeD0}?rPU%0!=VNoqLiY^% ze;an?KQYsPc<+JQvO|{d5X*hD!sRbxL|ShVkZfZkpX{l zi$i)6`hgP>_%!SXui5CSmV7sm7PNsBfHgbsa@`ho+?68Wo_ilY)_G?NDhv*;sWH9G zpt-azkmjqCd!ugnFKdJ6LUzgK&Gpw5|6RR#-=$G$Ho&bX@Ny`tC*#eEL%+$`C5N-o zz*F(1c?xV%!?({Tr|yQ_o&TcV&Z%mFY@3NsJ0NGsDoiGwSgUzuU5y2)wk4A*=F$~> z=KQ5{$|ex%dugs4gD}KR)r?WMbMc+tG&%BMfuw_(e@rGG`Gv2DaQ)F`U0Fs-^VRgG zOXhH6_2(M;uCn{; zO47@1>G3bOnkV3wb&b>Cvw7YKMSQ15(uWH63yUE>5uS7zmLmrY0nY<@*f!x7&9|ty_vn*l$7@l4FYkljQ_@DybKfH%nh&$7hqkf8^YC)?F~u<*Uo>&*Z9rh4L8R0m*g=A(Js44!e7AjsTbymI0%Zi~ z(N|Hx?~$n*{iJey;ozph47!0RjXeVJq5=Y_(UhbOWYz{}qJk02N3NBqYlTS&TU zV3_tpfU)?^XRRp$4nZ(d{cej*a(W{>V0D9*&M!)-S{Q~e%kWVmhx)vigCjPtfd;*E zP4(SV&G(;E#&6p~vMU`B9_u_j)L?z@+cQ7h)8&qY&nbWDh(`>Rur~ucEsF!{QR!VA zs7!f{c97n@hO_@P+BQ5F5UtdcDca20giaUL}sCjeCV<#yTV-V7XQ1y^wYg&zC>G4oH8<-tA1njRtSn}uer%H@ShWJIVssDw&nPzMwMtyITpyf zbq154@nuxxg9J2AuoPO1Z%Rty&x$Ta8?B+IFZ4ZC59N7T0>b{MXhB*NYF;ssRein+ zmA;>Y13i}Afa?wEgF)&yb(GUf$;{ZLs3xx5XEoV%#lmaXHvLPUpdIB>tt>*BLlIIb zqkFfRjGKjdxPl2!2u#Y16bt>hto}7MUiPd6>a}Nb>}sl*NS+5K)OX+OxlNG8#fnD$ z$$D>^L%??BUm5@KyUpsYF_}9rXUNY6WI{{N?wzjH=nAVU)br-@+saS$#P4mO9==R= zkx0~a)e9o$^JF$aYbJF$IejG$m@FJPpIyFp|8M018{ISSLra5?O~W9^Mq(hvs-W;P z(JGBouqEc6Jm$xLRoT2Ke+_PJN9yr)ekkr^{e~>+ZzL9}oakmm~k%k+6=x z*YUcV_io|gGbU4y5YbOT8DLC&70Js=idN0~%h@N}DwSx$W|4CCe;l26Jk|dn#m#G8 zl6~zIqO5yym6;JjWRn%S_ZpcAk*$c3tn0>=y|PzEMAwMxy7tJ7^ets25`J&Lf9mn* z(bVU@Kd<+Bo%1|ok8ale?F*Vp(UF8*Ya}^F^=)oJ@^2lL_b*VT)yIEj6Gb#9WQqRt zE^7Y{p0W&P{m0v&n?p6+EFwKYvCkgNg9j~Eo8Yd)%xW2RS;R`Pk^ZF#;4 z`yG9)8c4+Y$EnW!HmSGm?kXL`qmgWX!VBJq$Iz*}wHxiV1>P`(kMOB_QzSJVi_Jm* zo|S!~ubCOP2Nta)Pz%Q0Vun0@t<<<1Mk;zPZeuiM3_m}$BG%4hoPvC8EGp>dtMB-` zGm~R9q2_a0mJ)nEOMg1UzCWpG)NfYu#iypjQ|!w>exnDG;r+x2my;_zH!Iga-)kd@GKf076AYWp^=<($;GI8 z;QllRm5jPDCU@<*w3)q&v$+%)A3^Jk4}vil#ps#`eniH&E_^^x*NwY|oXZNUmv|41 zcQ>(7=QAu#2PCZ;-&y;WlV^qoKf!Msw52hck9j_LSb?#$EI$2L{z)eH#{0##5C|(Q z)Oe-6*AbJY|IAXkVCfQsyfKxf3_oyjP<0UjYr+HszpK+*V0w-LcwKrxL2~YLKC>TE zpnAQGLsIp0YtO33m;j=BPu6L%otGc+ShrbGlLBS(8*tUQG3SU|TqW*pevs;kxL`OJ zNw~1A7syM+g|@vjq%V9l{O!#(lJ|uVo@^~>>kQ?Y>aCXHF|~HtXAg)QlDu?;-e<<# z_j4OI!HsIL7rJPjV+QZ0exQ{BbnHdav~0aj`22k5^6e>yN2@)1f58*YiI9yh7DByy z9LFpW@-ymw_G!*NL+gXPSgP<(0BXX7R^dbdwc|nf;N_}Kd6Gtx&?`OmFKg8uUn!#; zSO~nZyOEO@u?_Vg`b$ggdq|vV-DeLbZAn9QxZbxUMZW#s^u9kE)u>!>lKaY%m&2r ztwTgmN{wgm&b_3vLgj$H)^HxxkfFo9YroV>PI+aWy72L<)x*+yj$2F-Tv-ZfjX!GN zKlyUf#`@X+>($Ns%D2LA$`LaEmK#h?zkB=qYznzJt}VcCxIX$!VcxBcJsHBsX=YPU zjtTmr;oQEh59M5sj=ePbjDlp+Qkz;_zO&u{blTM zAQr-dNOO6Wk2PKT?hjxvffPn-B?p3o4Ay##aJgf?VenqRhSI z!u!7XOOB{snR=|;moujFBq2nnyh-dpLmHkFFS!( z14b!t<1D+%6b`M*U>o`Nd&ZQG^06ccC(n8c%n~^u;DC=Ryy?o(kM9RJnAeIFQ1cOv z`n!!c_`K0~fJxKS^NuWa^C62W5VoT6#q zrjcM);Xs?*N{a*DG`+0a*&GR?$t%q=vu1aKA$XaKwnsrCbnh`mB))yQoDS!+HY>4L z6}82lBUMsmb)N;HMFp8UCxv9Lx7y+U-hMRldd%&I;lO28O*t`@Pi-ohK%mu*hI!K( z@x#$R;Ak#rPk=xmJ**8J0%|Gw$$6F2oRa7DTz@1(iP9 zAW8PBTI@1p6FgW&(37n73g*CfL8-bL!%bHopD;EFjDBA?M7oR!C_I>1h3{8;^`8jD z@}@Tq)0Vhu$o58NOK6PQ7v}Sl=gA$>_gOQ)>lgR~NC zagoYeNv5M;_vRk#*`K>gKi@Gw-jaEMdASv(<*X~7b6;!_%&W9=p*%ha+_o^Z`qhBT z3?u5mOYN);IzgTTMFxTiof|W0sY#3jJSvfKz{Qb$m;a8!YFA?UnZy$OJF)DI++0q% zPJ&0k|D!xS%y*wPD~=9>vCK)f2BXF0Wi-q}dNod8SSyM8&($uC|3nHx@pLH>NEr(& z95Dc9w+ps$PIyXSVD726oWF+$j>b3&I||Y0U%SbmGrWtJ8G$fDzh!Qax1o-_4uT<7 z70oeX2gk=JT1pXm43y z@_X|XLN^okWoC(P)f0qF0njE;A&HR|xEJ0~LEVGptzF(Is?Jojgz1Ui zVd(~nR8kUx#Q4!SPNnZ?s!Eb?l!~_Jg|kylV=Z|91Kf+sBd|`Of{o68@$jyT1kBf^ z!~|WKxqiW1&Kpn?6e#`(=x=^}jf$$PLgx%42|8G-fOda$<$u|-rH72Hxmuv&J2#_5 zoK^5>3M};UOpD0TQ67&!B(1Jn+|2mbZ>11j|K?q2StOBni*$B}D|vqd8f z8=G>r*r|0Rml}W+6Fhh>jqz={{;CNaE|RYLGItd)vta3$V!;+7pGYkxuKfC{XRvdW zVBk=ym{5vaeDvk8bZpe6%6hRLtkKw=jGd`W`_L!Nli!Rx!v13i))Yl}(G`Q^%@yTa zPt-gJKdKk~zjo05!Up`w_-5wDZ-21y;k~gV_E5aST~`De2fF=8gW&X}!MI*e!+3m1 zhts=lxQX#6%7bPH5~#nRj#Qn)YLnV|ZIz>abYn%05LwHcAoRNDzDZSE75~&~WW0u+ zm$6duZ2FpjPp*qKg07OCsjEg8WO=L$fb(msarSDRyRP=~S&BYY_bqu+Hu{Z;Zb_Nh zn?&0@C{RJcpW|y1x0sL(zu+od6AR}H;2znX^{mNBfaNl z_FG0qlw!F~g)>J(Ox>)DLh;TGmdrz>KI2Q%*4<88c}LPz{3HI8-+ky80%SPuzI*wL z3EY7S$h0`QWV16BnmQ>Kp*Xa4RGL6YhUXdpHil^}q5c~%WQ{cQ7ao?^uQ3dlqy`_q zW;NDM$n-9ldUUF+IuiW#MW^p5j@R2<=e&9miTrt-qo|%x9LR8%IA#K#YYI2SI4E7Y zmR4*=(Bb35T)Q#lD^NtRx81VI;8KMMYmRk&@-kpMc(3ZTO4 zz^=(61q(&2{SUfo9bfBfz(dBBGo`asy*^?8R-V4$S-s`;(7Ac3K#7VcO~PL?((TN} zi_Q3$s;dR1fF|?uSJKgcpF!~c=>8JGrjn^kEUuMw&&YPFiDVSG_DGBwjVG7+-{+ls zSCwA1(Ed{4tzEbKWDrGBvRP~0i}dxOdc`}GWC|Q^$N;8irhj2>{AFL@qlBgs!plM- z$I#_q_Kk;Z-&OohMSt1A-CViU>NdQ8c7_eUsE`INc0(I-t52B)<^M8;@?rtY847!H z63lJbx!csHC`P>fmzxe9K!K9z4Y~oL^uXtXi(O&9Nt)#n#0m01Rkom60m$7tVGLWy#mE+Yp>|>W%SZD!;h1Z6zsQ=WPXlKW4gR!`Nv=9g!rCy zJ1uo3#Z$$bF)Eoxi0y4VF#Qu~sdo)wM6e9u!6lB4)Xo%71?G95LSQWus&DqalthEA z-lfNHvqHH>Ef5RtFj}Q$J(s?!%55kcm&vZt{@?4r!uO~D#p>+Mf}?pVvip6S*u2Rd zT89IZD zU~h?{My+=-<|O}y1j2JfcNn^8wmrBySD~QX&1Y>$5b;P?cz8?@A3VF1h*bx>ABQS| zIE09XR*G0jpL6!pNzZ;n&-gMmGwdO}r|siT-|T+V1Au z^!Jf~ny;+Qbf*ptwT*U`b(2u3+lvR#EAi( z&Ebp_=^FJFle%>KW&=ES81$zg1VKzp6zII!fEC4$XF~!D2`%E&{Xy#o4^mXvDB)`o ze(Q$XL~QrvN>|!gi%L8_6%zdX0XtK+6;aIrw7<_%cR_Riq&dKwY zTkXp|(V{1uTNm%+P3zrMgjZ=4l|IJ91AiwzmzO5?hu&HSt5}2t@UtISikle$ zWk<~OSq&pI`??e8wvU9(?tjt5PAxn+O}qSO{(7Fn-0{~v<;=T53$OK=1W)SA^;S^Q zZ}*J<^YE}X+tSr6Vq58k+3Kub7>2RHf6McDXn)8jU>@GkqxQ!*J(Cr>Xh?#HCh2Cu z>NoY55|8<-icKvPsoXu=F~6ogDU)FI?WpGI=@?(|MmgKl2X!=6=7M+X{+YR68YsB& zB?*wK*~v|#QolH>k)`tNAmBn91sb31YPJ^m>b{{&dN#K{ezg#w#J!{}-`}b(8r#Id z?@b>j6Wi-M>J?WPFL!A(37xwe>JFi)0EIQF#V8Hxd||EKAWOl=2-TayM&}X{$zVNr zr8dq^2YOytqX6v2TTG&B#a^rC3M^MNTn5#E(0Q3>g*DiykDmUwSRSwXz>f&^0zZz0 zfARlvatteu?(k`OEigYvRP=Hju=KPZ_;2c67kTWJ)p`q3)GW0*0yred&O{!(C_&X4Xc;JYMc zB^j+L-`=8#76HM`OJWHi463+ke4(&T*K*2w^R|3#iY_zTgPU;o-mq&W zx((N>mZVyBwC^WPP{pPY;zR47rb67-JQo8sfRIcb83yEdQdT~QI`NWc8%|rE#qfFz zD{7DAaEuh)IReJ1Va zO_;qYc*DT>6Cw21P14XPW8JsWa?ag)X`BOO;ZcX|4-V7zpB5fBMQcG>RQ4wd1b(cE zZvG%GC^p@{$>%ZG@^YeTbKPgzqN=jIAl{;BvZf9^qHcqJ>mX-zaT2)GEX}{xO_uYQ zy850gsy1V{8JaC8PwzLqSz0X;%2Nv5YutO6kLphmae28ee#%ENT);YX=yb5fmPwil z_{uD(;yQl(M`f%1ffpHALXp%S4XPl51}+&%bYN&G1-Sz+BcA)r#8RYeT9S(iVTrjc z7yJ+vsxo~RY~rYr9LkccFlV`>f=P^>hMD+ThZE&1Fb+c@lNw_eeT%cVmEl`L#-W>r zTS8#4*xD~%;u^_i@bGqLq{E`4Bb7-`0I+W)r2=>R0Qk6K9B6bAGmY1SJJI3Fgvytk z^00dN$`5I$sisG=+;^6Jy)ol^yym5oDXZH516%E~Z|GMb#>b=&|{P6t;U&30BjeS0? zYJ&Vpc?bbWRc{hwf$sfJ5A+03!OT@xKO{mCqZQ~72KO5^V81!`cMtXBAk*<^VtSYO zJzYuRxWt>7H7Z)2t+v+mF!mc$xW02yN!evXH;?c2GeqL~{oZ0uu!*w;$u|pxvtB_# zKEz@IbO%!>y)CQ-B3gzx+dsL5zcG>?7s;j2+bZr^vQe-TG2_ncXh}YMO!QXVDYx=r zQ1Dh<&HaxdYEK~%ajZ0fDY^{`%M-IEay?QglZhe9QY_Guk&I{xR|Khlxr+*&3s=54 zx!Jqs3=1bG>ht zzp%DzJ&5k;uN?lW6zgZ3LM#_;Kf+)J)>;?U*&WNCQ^V3EUzr+CzW&+;Q$l&c+7eQD`bSSCvg{%+LgP!jq3y|0N(Krhl z5vnF2I1Jez)hq183g+`ZN?e(Dy)T3k%1lSlitLFXbTKp2Wq{?lCk`C4+`yU`Lp2=2 z2KvL%dx^ZLNyAqrG4Wi?2%7uo;)TcImpXKfqy3#z9!KvrI~)?XmPMrC19!Qwe7f?z>^yjVkN?6*OV2q<(}3eDQQYDt1cpy-=d}SyI@1Z5Qx7jTLhR4}7f^*!X6@I68}AYh<(}>IJ@> z_mOPP=M@fi49);H|5MwIq@q=hLXd#+ga-@J8bxtda!|z?V2evUeQJ4|-G(>VZbJt= z-nXQ$dEeWwn{iy2#{Ibojt~9&_j@T5)4-~Fo5JXJD&$Rsn;ZldgD8HfD@NlE_LUS# z2^26o&zI!G??4|>rf26$guAm0@BE`-62-4!JUpZy@9I6LhL7${juRU_MwGmn1|f=(qyy`rmBvzxY59TC`SCL!j;>q-+H1&wmh0F zitAPqgN48*inz9S?GEaTvS^=bz+#VgKV?_P6N<3)VTUbICUn5jOS=1^$by$J-xRUu z9}>%Rx2d4IutfNU0AeC5N*leFXqX#Mf%Qubote~*)V+{&hQvO9Hb}(6(LW7E-sYxm z8mi$hgVsWeHSop;fDca($!hPfwU+J$`(hscX|eDM>-1PSn2mcs@N#zXa*ocLFG5l& z3QXcw438jVvmmAC9pE;M+;2|N>6;J-G*Rho)F)rMFEkIs8@=a-VI z&e6wn(dn3M_+L2ipC3sU{PX8#UZ3OGq5p5;2>2U6F@6-16hICB$E`gYy$a8sU*K_w z1n=OzV?hz<%ucWO@M@5o5zlx`vpR2~O^5HNDLQ5zWQxNW7@Uy>x_OURUz?%S8YSeu zhG)=t|Kp;wVZ1b!o$VRyz*zC@;`NR5-q=rMo2}>zbMx4dz(9^VtNn=@t3OjUGMi;6 zzNtWhg+92*U4Q~2=s^kr6TH)KeYv~a{gTpBV#ndY+lI0`BG$m-F{kH3SMI4@1g)x* zV@vM-T5aE)HjSowQ?X=Z%tc0OjJ4?%M7Wtg5y{EP{v`Nm$k|_5uu!fZ!#v(q zEdEFgJV%rYh+TiigZXUhdQ>P z3^$(t;F+V8XWQM`P#v$@*ci8IYfqSL=BV9&7b-IwQ`CAPO@a2*akNDxN#RxT)*u!{ zr7f*q^}9bmZ*8=E2V$XIQ_km9q@-EWiHy8|Y3PafUO!vrs0SkvuNke&EO4#i_8h-% z68}S^4^f5TEB@$>P+ms3GcxTw8%WKjiLJaP?{^#0gNfHS668Zfa03IJzCL0?ZX={k zupN-wMeR_c7^CxQgMJ$(wcW{KhA3*Rt{5_$fm=zlG0lqk!$$cU>^j zS&v#mG}Y}=Z!|nfYU*?!;ZO_J^S>NcbK39!jnhi?D3)hUbxrw- z5Fp%N|3seu`*#5(LXqq&z*_~Vq2A9;Ud3~x#$6a)5VPk%Xu#!jG8JMWP&~vjnmKHU z8p%SQc4CJpOhAWkZv37PH$LW74DG$dF8;YAaN%X5ql`Wgb%6@)b7AHiOM5S4gTli} zH{Y!8;1GY_qrnr~ecKf90jRa-o3s98fXEc1!31#-kv^*|=O^`|+ zUD71}KSQ`}R@%T+vA|14clA~ql;T_Fa#VneHclAo<(&X%S|saq#Bx14SN&vAeCn?M z=gmFrHH)w9{x|JkBf{6yzUTOz;-8+ zqF&_Q>}wMwdD^5v3IhsY4-t|ByxrBQCBDUN8q@IOYRCw5* z%3~qCGc9cEpXA9l7++>`Zd%rG?<4AZaw=wC5brd-ZA~c{9>m_AWb^@_<#381?Mo~} z)tIuOmCZZDYm5PRE^S=&C6!&Zg-}P>7nCc-a)9 z<1B|a8fQ&?Kz$BagUb>T4ZEOIXnP1>Yl&HP!ehEMqCwO*0sM-K=TTSAVgav}#@yV9 z^bs@twywxtibs|0019-MRj2E*ynLf)naf&)l5^SfXd$sr`=gMwDK;( z-kig2cZdPMXqeYYtJq%ag2BHDc;H9oYAo1hssX*b6$!G?d?;q}w6F_93v8HzB7#C+ zThrWvtcUMTS2#oFE+t?O%0194)#W1o7-QEjUmlXax1QqOQTH%Z3#r%ssExgR+JXo& zqqBK)zMX+XFReOKOi8MTGONa%7IVdD?fBS^o~WVN_@y4mXUe2f{@F?Q;i7E|a@Ozp z{oT(xu+Eoux|Lro(-n(XbcK^XvlN;AYEqAPhgpway$Ak-_?aG9`VHk*Ki!wqfT=## zWua}Fa+d;3M9~PbP>(cCn2mBz1rjjsipo(lk$ z#ElN20f7MeahmtP79B&kFUip*?*9fDj-{pe)xP0sDZ>N(jo>MFd`E?FHc2yB zCy_S5#;C_O7r2l_f%aqcs>_4IYXMmo)lo`voA7&~=+zi3`0AStMS!hj{cV+NN6X3L zM!7qK0*{QsHs4-0doO=~wn3@*GkmjRtYqrVpzzM2b!OpTuldHuT5|5!oE)$O8NxTK{!JHFNj?1n*k{72p-M1=f*8TXit zil14RUHv*@?Td2@;~*Wfx3fJ;Q9?jTnwpw(|oWnC=Y zxjpcvy8wiYxcL#_x%e@a<$&qM53;}3NU(&^?&Gz&3bvyw;KE1eCQC}u?2>iS{T$*8 z>7#}inGlz9R!N|4WzHKr--s)0I5LY_Y+OOzIl zx6JqxzS!MCADgORqmt8K$~VF|K~DDY|GB7xU`0-`2vt~1##ACLiZO{oE) z*5g2SSy7Nu0d3S={#Jxjao=N>c6$8nE4})gtIRCIN!DdX5pL=>6`Pu{ipF?~;WRm* z{hal8ko&8QN39;Lw!#C?0587zgsGJ;Vh;*6y^NhrcE5D5z8Ac{-)?5Rqq2ir<|gJS zJX{4^okbI;Zy4UYa|+@Y^4LltGN=MA%V{*0QZYLcyvxH>51`h55K^m!JbC1PXrM5ILh(V>`X z17{gE(@%6XkGRnigx*2AQu6v|m(3po!xoiAl6{&P4*l`1$*Mci+s%eg9{lSa=<~(} z^^Nk0&7YX3h)#w3lJmcN=LRhO&GDXl^x3HSXX}2kU7)?vNru4Gi@cW2zuWB1x#6Ql zOmr;#0fTYjw>vlA{stpmTP3Bnj(1F9{Z=Ez2u`Kk2Qdl1=uZ%vll@VCeHWllVMB?6`)T9MW9LGRvG9v zqF1=Rl4w9r+!!{JnhbJ|TVd9PJ?8NVGG|JQmP0f&Viaab9PB7pdLp8!>S&mj+aZ*_ zgX`}IZvgTA)=C>Yoat1EHe*50eT(&0$dgtkxUaC0n4SzJmi#xpV`06pF8Eg(KZ*il z=@lFm9=f#gJamEX<5P!Q2;q1L{By8?e)U^Y(@xmFT1-^p+pKsx)H_DtH0yP8`s({a zuHhpCB_JQRBtULb8uH8^2u*P+`gSLE@i|%y^ZjZE?X}{DINj>C6aO7z1SK^Da{Ber zNFtrkW0bGoLJ5ys=mZ>TqM4SR`ccY7g0R#jyrl4ZhJ~R0=|vOOe$i(O7{+1NZbY#% z)gN)bX!NS=WIg0!(UDg#k*G4s)dxB&2OM z$BYW|IT52NZc{I)!`1KgK2zg`!M=C>4&AiKG?p30o(?ZmV!O+#U)1#8;J#`c$U!Q- z__qd>m--auJF44eKpas|jMW_LufF`Wet(UI;X!@$(afQz!;3C1N@=!*^F>{>5M~*c zPQuG2k8kLh_>5c-Q%ib7?|IYDG_E)w8EJ*+^yg?+3Dy8f>Ccof&Vy^!LJ!<-KafoJ z&^3Bghwh%wOMJgZatX$h%+a!L{+xJ!Gey-ZFs3m)=B;xkBP3g$DQvD zlqgq;GhTZvLK$mxoE zAk51O45N(B-*~-G@>WDYP`Ql37cLY@5E$AOLeeC2+<-W zDHJN2e>flIJ?Zq$Cu9bZigJ)+s6*nPV2MGnZCD@frGfp~Ho-5C#3x@Zto6~&Pi*xb z&hJJ7<%h#Vf_RWCYF)6>mDt5w@diRUT;bjEXED?M$>GC2TcCk_O@xL0JZSqByp*jI z-x_X>JukY($&j;;Jh^>!1?20JfiwXrawlO+|?(cNCK6G z!1W}F0Zn~FVcP(mEQrrfM}*>Q61hDCE*Z5sj8-k_SWHupxB3p5`Q-W_4xhfxY-KAJ z{|AwLr0C71=dwP+pRVEm>Lx3Lt_6Yv6Xe1EAv;$XqyZmW*Fa#`p6YfpW4scQ5MZT) z56UKN;NK@KuS)}bBa1BvWjLFT?5d?y;d+RM zE{z)3AI?GgXQ0B)6jI`~893SW;ChbFr$U+#=w2RtYaZcy$HFggpoGIR1a4}VivS4K zfkc{9{Hqxa>M};@hO@OfSX3QEKi`~FlOv3 zZkswu6J~o^R7okn&ohhRRy%U+^#Mg+60IWF{ItpL-mc7X9-F9cV*Zrx>9;w5V!x@? zVqo9+)!j_De@{zaQR3Ku<-!M_uP17YyF>P~E_#$^R)@y8`+{{)aLBHoz5cFkO3$3_ z%-|CA=5E4o6)Mzt6)OZp6YXp-bO7%W;u3jya73&Tl!_ z4ogD0pb#vu8X zZU;JCWPW9V~sX3DsS^G0jD zFh3_B*_-^VM2(jj(g%lUPwIUp%!BNIKa$wRh1%8$@pjTJ2X&Vs=xN!Kk#FBW)6V^bHe29GL576lY<_(^hNQ2VSw zP=omfZ@gUjHONycXkmNP+ArYr2s9`+J-RKEHwyj%&KUQF>dWPOfli#w(QpwxYCHT+ zR5%BSdeNK;SI)lcqXZzm?r%>-a_4=3=MkH^i^Yto!XC@FI66)Zm{p&!cYxr|h4YQ^dY!~#t`n5iBk$#+fr z9AV1sswLe+N3xvHCjWK5=5^@;`uK~ zHD4laG=WmUn-|Hw^Ya`~%m+!#2Rj^2vzui+Kmh%YN&)(?s(Q@hmn(=Iw%uEvjr-v+ zGtR-)^2B-W#b3?lcNg-CxL#i?)R#>BysoXa4eIN_y?~Y6#gEkRTg*8K&cWkP$O$81?T7}N{Y`>h-WLLm-x3t z4&UAi%gJciIGqoj`&_M882qi+?pG+=ESA`|w9*>=lv(+dsYJ8Lu+smq$ZCkFH+bw4 zfQ#SgV)U|CNMn(Wb^$?B68N-_&&DVzfGwchnf3Sr1U=;B)M;Q>Jw_;VWuy1@x-kKN z*T?{@cG>B(fC*&BK09wNLUq-+h?5@WZmWN5jFB2Fv+v?B-}Gpbf_dU26F`pSH5DMg zZ5=)=?a;3pZE`xZH-WPE)Hq^Jt#4cm^{}p>Dm{-#(hNC95``pmU3Eu&0M-|5)p^YP zWYP2t(M<)}mi=TgZ;ftNd?YRMCzbVb*d&e;E|_~H35>CN?RsgcjsrV`_V~yvtkPeS z+E}jxd)u@Ib#&CRMgh4MqcnH?WqZM9I4q7vM*K;M5f#jiXTjDG%Wcf(`r`^Kt>$?o5|Uv#J9_B)at5l6Rw32uA_AcEMm zU)cSw)YwmT;b|%7ov)ooRmOl4bxA%x^!YJAn^+nc`k}jR?x3RLSLOb?f)3%J9{cXx z&ko&+RTBSQBh#q!{Iszja`=pjqYKB}rk<;DOQ*xoj|<~RF>G>9qEzRot$Rd&J#Era zHW94_Ef<#4|D8Cx#IQkjzlydY)&Mi{L>y_&g-!YxW5sBMuJ@eD7DjqsgINP#TXIW!bTQ4 z$Ith!{rCXe&{OkWuMTO3*f%YQ4Me4m5+T9BVS6(4q962^TW zEz#ARCMaUWdKOTHJYoHqdXdg)g`q*kYuPT>Rx1+FAuB^S%Q$}=+ADAoOMlo}3}Of2 zGXN0FG8k})0!g8i-kq2K78!s4qRhXK!)ZUCKvTr}Kb=G0e={}l?a9xUO`?VLpm0{V zmtk(8n4{tIwAsnR*_?g?_&c+ZU)AC6+GuL|5X#=9UNwe+6eP!Blb8ZW%XA?HAfsg< zskfIv?QUa-{#iScg(@hU<-yxHN5u6oW4z1l2L?qR0(TAsHa^)K9jQymRv$b60?Zhd zNU(u&lOW=Gf&czSGh)C}>>B;FCUD^g@S>V%eXBh%+1BxI*E@7?;dgP3dhDr-ll0Wf|NfH!7y zNeV-OSvpDm>aea}Xx4xf5cQ#z41Z^J+*5J?%hXbI#G&lcL4;Ukh_0v+eeZ!_^HZ8R z+1%@7MO`WF77|5ocf_eBt8>5Sx~aY{oRkm&n_g+S-`9EC@@+jndF*@h=^ioC zIV$sR$j8bfH)3#@zTb%u`yHmN7rnePAWS1C5gk1$mUs2mu*=%vFcCRYnws>WW# z!izf?niMI)L?wq5r9zJNT6u6=B_O{yZksq+mkdWj&U_l?LmPvk3d<_2BXt@P#YV4-`%9HECC;2x89gW^E zs*BU5tal36N8Q!Pyi=F=@8NqGCu{-c>||LRjM0v&3U z(-5ryr+MXm!?iMs@yf;8Jb|N~@BDNU?zjh(=B8aY@}2_}GX!<-D<2oBMRxT8Q z=oczLrDZ~M^lNtmXtVS*MM}(Sq6~2KUq30wCQrW&dm66xU|!*PF6ZwOGfd?G=WFGd zw?h(TQZvvSI5pQaw7!dDgJTSTC&px(PeATd50l4LEG=FUCKc9et_qr)&Ma7VIZR)U zaC_*l{E2>HXyO&;b_T=WS?kE^-#ZS`h`FgoA3Q_Fn`OOK@J(vfZAq3%p2E>8;}kc? z-U#O;M7Ikg+VCIPxYt2CG##a(EVcY zWcad>M*cl~86willlU;DNc>yrCx0K^qE^YwwM>qnrTqEg80knlz1BlnK>NTB`70%%wo?J0RTUk zfkz-ZGsIpo((3@21=uV&6lq0@1r#+Is>V^RfDTHzyXiI2j zOa%0*I*5<1lVKYm-2cv^f^FaJNoag8=>KzC>f4{cU%vp}dVO^ig!t-6P$lc7SxD3k z14l81DRmX3EiJTA`M_;)uUDk$Fg~~Wn&$JdIQys5?>3KU$)39+NuSqaQgt#9m6E6@#1zSTcYN>PK+4XB|nuh*4h{JLr7-OYS;_ zg5&A>O>xD|>Ek3O>Gmzgkm3Ej+}HV9PhUSeK42(HCf@ot7c<_^z$ka2JOMO9baC^c z(H|4TgaCy9R(f1yk;aNsnY8zinsfHHg7jy%g)PtP5ConVU-m768M?- ztu_=!9EAV?5}>LS%LkSS6=Fem^Nl)QL}44x+_d$;m_)CUR9ZOd1HOXI>LMn~obdCu z96*IO{bS+r>I3h|Lz8kW^9h0`ocp`t54Xp8K?a^)*ETGNS}fp#`1m-0vtuTs@!P^l z)C!<*&uTQqxqCEUEL03c@2oeC1WUm#m2n)PQgg4%J)Xo}2npMtINLHSGYPdGss5!d zHF$Uu+VoDkCo}-6&Lvd&UE_s=FzJBK z>c`l`7@Je&<$a7drm%JMr&SzO{VOaa>@@>w9NcP4F1ej9XadKPAa2wGu7)4Db2;#X zX1nn{+XsRjJd@3mqaFTcD$@T>MS!lL01)|iL#mf@gk{UD;aGIiC^G*-_yJrXbx zE=^ojaYM?^&KE}LdU@_F12wg-n}OP>5x`llGGbiUu10~M#eW|;^lWKgthPgcD4$KD zzPm82qfsqq6$}%R;0k98EE;2VusABdlv>OC)ft+}%OHP+Q2E|}EG%W|b!g@nvLKad z@5@Q?@#|q1Gq!&BuHQ^LtN4AcV^*D4oyI(5ZEDcvj)8W@E0cc&zx4Y2>%*<~nU?S8 zs-tQnL1MyGhuuNHfL!a#eTwVpb6nwjBoTlcLUPK`SZ;jpdGr2-JL*4h&mol2{%LCHpJO&$Kj`unsr?88Y)xVw}H!hrP&E;84C<*e&-RtE&bSyKT zf`=YFyCpUsh&o!mMGjw%0`?NmLSIR=$@r2}0x&;aP@zCvosh;KP)XHOq7|DgYKE4Q z_$Z)-g)K2v9tp^5R;C7B)y7ss>fup=-<6GCRk6Ue&@cHDgyd3@Dwha>P3SPxkkd<%2c#Vikrn2g!Sf)q+ZyGEiHUF0)BzRiy~>(%G>4oBmS2r ztCZN9Nf0FQERC;t31T0#u-Vx!#60l!e`7&LmuhYr5%~cZ2`INwBd2?De1zLYQy9nB zcHS^6+n3uLC3|!xxVj&$m5o>AS|0511LTn+6)DJspl>8yQGUhsvW|4+o-T#i-IV-q zA)H2zB1Ya+Mz>SMI)w8qxW(&%ks%oaiuP1P>c6TqQ!WB?R2(vNXFHQHIyk zo@s!RgO)}Nr#9fg!`+tDJiTxH$q&&rCrzJQg3AdfN?Z!z0Fb>!l1+0AF==>Iu! z=_vTzu^`~5kAjn+zrT;`(rFfzf%P5LWSv_LQ%CD(Pp)3!n^c9s2il+&`1-+lu2L-J z^i0in;l&{u0E>2ePmLH|A0-7)jeE|1bgVzk=AP#J^`yT$>OGyXGL>gsIe*gVlqT+TA2FFmV+CP&)>VfI(XvU*+2FEa6##`CdlTF&Z&BP$0J=F zd?&%qJFhNK^Tzu7tGA?_RLa=IVXkDA<&id!bc1##mt!bU=HJbAp#d;j_>IxZ2A9z~{SsMMrh=ilEg5f(L!zvZK7+y5UcOKKNSRH@Rgu?@ntn zM(&LF`Wz_C@4oW3Pz1!$3jtmA%`-FQ)w0~}8%9bgx;LOzxu9Hxbv&pxPIx#~Jnv{z z2T*gN9S%n;iM(ONhcgVUCs8L`ycx4mI-Xuy8Pqb{ZeD5OCy6qfjlq@mjj!&%$^h!& z=POd@WYewyV=EJ)BMG5Oi7hGt4OomjHk==L={=EeNaQq-JO!rAw!T?`tjPA?dj|U- z9-PW9)$lJm3=E1gybt#zR)%NqZd5uFv*F(}lZS&3GI!V2{>khL<^8VE*>yYi`0!!o zy|Gc&@f@!3=IJ^8u)W(l-|lgly~63)sC-}a&JG=U%>FZL|2ISP?PHkh{BNb|;}5(w z9RrU9--YjcP`R0N3?6{=g;Cty3L{@#S}P*O(9$_vZ5-8gFC*7=pkmiW5{B}+zc<+9 zHGvT8c8=742oEvwX$1<|1iZ9rKobihJ)r%U!icY8N%N{PfZFk#ACj^+eay~G^VVIl zJ36uoJT}VV5DVh7LpTNEyUnV>C{g<Ir{>2_ce}rC%!l-i6Tkd;IU<4I3(MHG1L5fF2XvP_)7V)m4d)t;Ozv7B?Ea|t zH2qNh;K+JapD$2wsasDJPcYLjNCn@lc4LXdZOY?aeQm5lF4djC1^bv7g~Qk?LI~6n z_J?66cuHjOYKM1S=KFo=ryPGDDv*2Q!7D7jDP)cc79d3ZELv`_Gfftqk7VC$6#DLX z)9OF`k^KNub;tII+0WKT(j96?xBn28MQ_@xetS{I$1Uc1(iWEuL_$3CAldvG6MQt1 z(3NQ5)e4??{yAG>q}$?OgADd|%}+x*1JO#TwaTiuq(c?Qz(B4#t3S_^jH`cCxKvzs zHra|xkpwaT0+Rfk#@k((-qS~7a(uUP%~T`W%GbXz6=}v-2q9kq&13vHxzXfXXmEa? zQOrD@Kjg`TLwAE$YRiTHDIdcQRI4VMt6tkpzqP;pPJ^8Z*gCuQcBAMa*wQK^d*Bis zN9t+el@Ej&sEus%$tAsi#lAvi$JX&wv|tJ`ru^#>8bMlfgh&{ zg=#xD{~bG~{N2do8VcJuHO>uLyvhEnFz|AM1=0_g{8gAi^IIlIVb2qTf1Q9`Vi(GLpC5bq3i06C%x@+u8;d?;o9!v}Apj zy1Ms{fRkno^&^;jJ|ji&Fo{V*T;_iqU3WYb?jJvnlN};=W{8lCJ1gs?4&_2bC3~Hf z^|iB0$(_usixUaiWmGoVFyr1E(eXwfqA+)T*9>bRIvB&A-l1emtc+DvF=E3o4$3?x4`Ys z5>an#Pp<1{>0F|NFhTWCILh-L1pOpsOd5wShi=aT5W5pmnd z@ZosjY{RBv`}12@-_C4N{jKRyFPIqdL?N1Mel{St)nXFgu zH$}#81P1?{511Oz@@)NFsTs}dsZ=xE^UQN$!B}OzLf+2;OcIn_I72BifbAM4Qa$c3 z;F%q4_H-HI-<{J7>ZH>B-d!{WI)=wM95Fg)c;tq z5;Nof`H>RfIv1rkc-lKB1E=+mbO@DTfKfBso$Ci{y&EBR&+&~ZiDInQHcRyetP!2x_b6Ucf0PJV5Pw4Fe9rrvv#|!)|_8g z5s3nP{-8|#Q>BcuskNiCnmA#Wy=8^nj}?~x zwn^*Hxc>)8LE5NA=|7ywg2^*SESSQ?G-(BmmrOIUW3UY6P^$@TD6ulVu3WPDfVwAPaYc zQ4pTNIoRzuftjA=c|fF2qu4R1eI9At-L|v(Igroq>6C%u!Pc>;sgHR}t1UB>;P68> z(9ZkmBNB~udu!}2+6E-3LuoG<$1nbP(Uvawp#VMfiVDHw5Un}+EBmfD(C*lNjn9)O z(4i#09ol;H{j89>_V;;j^>@{h-&(Au?*PUWzM)aWr@$OSdE%KKJSRcZmFu_jqu6Ob zDqJ5!ld7eVW!U=wJ=e_0qv{K}JDSJPl(1oLAxk(s-P-qtofY&vUHLtID0Nxz{(bnaE7~S~4K>l6mngL4ErOTM83lrb;%r)a zIh2{C>tqzgcUsig{C^_FBtM5>imiTTT@y=Y<&Wv2{42al@1Gz3)W{4{`*remtecA( zN+ymPs5>sF#XC|U6L%A6jQeheAgJvJC+aTHg^wDLQ+RIORiTXb?GA`;mHGONUQdoy7rIqz!2QJ>c@n+8OecBEQsrbmf!%y5Tq z-sb*z)RJEo`3!ZpfHn$cw7@`_+7N<(4r>uJN8V=0`>1mVsWNXOq&NED-#qRa?^(L7 z=x+Cq#C;8Gerb|E{;@2}>3o5WZcT=A@l&#D&4-YL`}1))Vdd|BZ|@^>fGeaRAzFq{ zob3A+jeMX5P1MZ%>wGVTj~55~%FKAzw#R#z%#(HJs^TZ5|AL0bz0RZqPW$=3T_TKb z+g$3_(7pPX<{2vZ&W=2@a>dLsYMM=JM*@!;!G62Us5Yxg>(u-*HfyAK?1?3hcAwV<~J%zkYcj=tH4%$G#JqObOKbQZG z_63rC&(VgOk@tO}QRk?XL6cPx(cP$0;=o5%T!Q6|{k*58aM5P~^y0J*f;5V7)W~f`(xVdbtTH)}$Q_{V~x2{32Gdnw7 zYq34m+YcFS1~=&tQ;;zU?@tyy_MBwSeEZcoC~U1?28rd`U61xYg%)3vL|RnTS~m-31BmGeVAL?Ll^xn`tmed#Bz*J`txHgkAdNs zS45udn*P8J1Cv|MC-%RhKDBL`9?|T4`tdwF=lbjBZ#uq|2M}BX=NwS=T_0QqIGUxf zWA;`{7^)+K?VlMq&*LMudU(~@q%!ld%HW0U_%aJ33@H=d_X76eJu2ls_Gjyj&x#YK z(2oj&TvT_6 zq3K|xrUc_03xCsb&*o0SYv8Cs4;+l$8}ZF4-cBBDz+>IG^W`fz6|!s^j1wcONG4Jw zr9Bl{`A>6v(BILM3q`a^jK)1T&2}yp`BMBV=Qc<05^d{~-6*oR`VIR<*wQv_AgOMN z|6CXN336lF-w}rQvvdOcA(~HlCi$M~(%w3Lt)|&idn7z@gNpBG(@zEqEryBI!TP|u zy&>0FW7RVzzxAPBTHikDmV^Px;E1PNPSeBd2H4=xmPiyQ;1-lvOV8muZQTJ1&ny2} zQgUu%A$?Q9bMd|LnO95AzDh(!aFh5pW%8GeQ%$iE7ww}j<$<&m_=0r(k2n-5bPX%x z_OO9de7AxrTiu=8z*1PJUq;2oI5GN)LhD5Me7OcU&aoqm0XOs8;FAV}oy@~m%P*pC zc)SzLQ2vC}Qse%$4;@0jNIjWfO^+G6a*(KTIlHv5tJW}cXE7NT9U(YJJ$!) z@tz-=?G51{+Vr8d3^(1_d$d1NzA&C%)`CtD2X|n(?iN^QE$e3pYA0_W-oJgh`dP5T z+1X|NEMe!zs!QUW4`2f1q@2-j&ryllrAwT!)SR;AF&@(H=RuZmj2;uZsrRgg->bt`hy3&v)jeEa9~ zn6X6VJ@r@`Vv2`aXSV34n|2*K$*99xS~ihh(%I>hvfXMG7v?pu=l7Q^g0QtirP1HD z@cktxY^dNY@Ev`(0S@PXy!62RnD&uLs;@`le5ryPMjg@mz=axDkPf7<06zyBuxX%y zab(BBx0bd$;2cMX?KcqR`*^5>j=~&Ost_S?y3aeK~= zE3s16w|-0+_BK_>l)8_fH&h(p56MwC?7cFPVuQ3WsDrcPIQuPP8X{S6x1CIak$&3= zzqhRS*{Ytr`$ECTZ6;lm_T)=o;N#RY4F=(hN>V{e{Z%fNkii79h%mp-XRWza%`8F2 z^i?5o!12_Nv16X@v7to#F5C8UQ*)c%JejdyVO5)`weKm3sLnX-H*Qy&KH}AgI{nE| zPh%K^UI4{ED3a*6fHk6pUde)4<3&H1zoNvw<18oiHC~T~Xuch#I$&YK4T@b9Y@6x) zsr;=*x#+Pg&&3Z1$8dEF2~TUc>~eg4pXYB!`G~0xGH9K#c$2&G=?tMyF4_?JYX%inZEaEM?t3Vv%ldr$Cj3 z0js~4J5`LR^PKv5jSSH+P?3ZN6^;i+^&6gjhln#6C(Qib9YtFg;aR5XsYwx&`NSbqpWL}8SGxs{)57K-KYK+x zdNeo`r+d%yz?-N*i*#h*w5G$rRrC^@q%rA9N!HW|`RspXY4biRMEpb@@uiTqCx8cF zsO+ywx*g6RliTXgJ;^0CzYfO@Jc>O$7B8-5tzck~O!AuhoM!AekkH^_FlmHDU|sLUn)kc%@|pR+bIpMBIHo}{IBbh+S$ZL%ueB!L+OQK$bP<~Dj7nZld_0T> zIju7Bl(HQoZluz_)-c3-x^w=&xPAXz^;=vOpZ{V!EmRzI%Co(wWNv+5N=koa&GqSv zw~e+6r(=?Vga#&*V9-i;u4e!mq)LkScPgPmez!*j3)EMl0-90H$Ib&=IBTLaGqyxO-D!zg*2z*;}Rgv7i#|S zd2Zg~_G!q)TP4_~CtcZ~m4*$h8xHooL@Drk?pU{HE+Wo#<75f$1o$g6AjQbJ_farXsjzJOju`oK zyKud-aJHp_pk7Yj<@fioXR;3c^G;iHe^?*y_ji5Mp+P)=$mlr5iDs|1689(6P*34m(KOBH;J@8@vlzfeZeai@H$=iIQp&SefgO1-gLp%-WoCV zf|s}d&*vkBo7R67gp5djb8E#oDQg&l2PnGSZ{WqrGr!;$iTe5&l?^)7FTcItn|alR zv&Rk!fS zC}AoX0EW#FncX0%j@&VUa53D^d&=4GA8Ue-mJBJ=A}Q7=-DDkbA&u#5h%n~kmbs+0 z?qEZoOL5u`R(p`hl&R2f`C9COS)gt4N!FjciP&**&K6|{6k&tLpU(jM2ZEIH9$e;} zD+mL2pgE7$bekG(ePfI=70u#9wuVX{*taMc2wGs$%i8MbPxl+doxS68-X4#=xsuG} zwLH@rE;md0QZNnvNmT)&@WI@6;)Bf|ffhUfvOc8>ZcrOL z{yB$3HUw!Ez!svD#)fz0Fm)rN{+kx?gOFVv?}bpu+{{?bcJ(QX`Ccwh@H}R#Gdn{pafor@9^BNJ z?a_GJ`R00FM;I8kdt;%ky=Aw#+A`Ue+F}hPW9&16vGuPQ!5(h;fE8;N@VgVy_2Az# z)Cghx*7Mb@nB;CY9E&OR)|YhBFGdoL!L3WSgl+fRtM2cNdGfxvm_5tBfRJ_EeYUc% z@}R^)^C-CW{lQoTujbX{(ob)nLv>bx906w&*KI<47fFR^UAQUv@tMPwA$`~qI=+_@ zfkULEtd)Z>JT$20$rNP6#D-laa5T(DTaU>QGI6zte`rrhmZV>a)c()C^`Z|+)bkmX zF{&93htR_ps$TI_m%$*I^znl*{g#J^Kk@!b_N&K<)0(_VBP*4qu2F*Gp;D@fX9Z$C zRWzrkfSRr?QIDNaE&DWger5IgjX!GvZ}vYcKE*&2UMu;EvpZ*nVOmO_(}}tD5d9aL zls2lI^eQYSy$8xao@k3twZ4=Y4Xs6Gb`i3>>QYu+yM*n(X^g*E4DHDKL7n|s`GpWQ z1915MH>PII;SmgyeJvCy8IG1@R$APv7qg0k%31~|ajw<8k z)+pBY`9vkxC5396hl>9l^T#_&*OXIImsiqumaEre1vMX?b*lZYrHR_>8&~C}>8aue zXPvI6N|4YW+>$z(eb@D#o3K)Iqgx9j?yt-rDiKCpf*9Dy^z@An`?^E|mWf-u1sj>F zPz(|19}mUdURf&W_va`K!%!f;e2<*PhoOA4D{cbj533D0_VH;43Lqbx(%z7i7w3@h zL5@5+kqp?Qvv^7rCficQKA{#FB7IHtYVq01!4}&!W4>0r)aem7x>T&#mkp%?+f8ivEk2VW1n7BQI~Vx|p3benWJP4k01ZeUywZIC+4A z?%cUZD%5#uBg2wNI$Xj;D+iC=@>VUhHT`4?D?jbQ92Ctcxeo#jin z$j;f3cNpUe(6pjrSFI*4OSR3QZM%QJh-$Nc%@Mz}pA`2sLXI9Mb}58HfYV;89yt8) z#havgKfKaZA)7fPp~mTAh?l;hQ_h6^<>kn2l1>g>Sr(|vh?bnS5PrO>1{%!ou$WSD zJh2s6vI`vq6g^oLAQT3)7Zo)B=ixjz=?E4)|t}QboFWj6aN2QHhii5XlICZbtky3@#JbCiyzsFj; ztak@XqIw&ieaL?t$BmlNxu6x!Mo(riyo|L0V-zMlWjPk}Q-|^-=sk-Y?4Cg~OHf+8 z&&LSS@Wiir$^k!G>dv$r#IYwMoq9uUdXJNIYkp2OSK;?bj~3hg=yhLnD|#@P8pst* zoc6Y`Oq?$a15_=|J)N&Q3M73ls5P-PR+!$Z5f1GiO+hXks zr-U&2hW0*4GrPH>mPJ9JuzzK{0Y*iIe%yVO7+_H5ISYMCMpo#FlE5;NSiq_Yl;HW>ySJTO}*T4hXHK(j-c6Gkpps2pLaMsq0O<0F0XTRPE8Wuk_{5kMO8a@l{ zl(7sE{vINGn_DVNxE(KDkWw;Rg}(`xb*s+TqJb0FuQMwS#dcO)rs%KM(d82NT;Bg& zd7YwP$Zj!qQjb=#wsT#B?OHJ}AehG!5eO5-t}Ezp^_C0lR>UMfS;F{*(MWn&Hj7(k zdQ!|R6$_UGep%r4&=r%!!8sTyc7KUC&?MezIYSo~wEphV@pbQq>BU17!owwXcaHWS z3*37|bH2sEY}zstM1w%a(eD{Caj%h@%o!_69?Sm~GlUSd_~yx>@qFtm*Z)ooFaA)= z%g6my%8=hECva7iUwu@C;)JUPa3??&gTLJ<`1{HZZ!w6dc0) zlK8_!EA^L$wqx{kV5b3I&sy^ZV32W|Sz-VC=Rc=YfQClyP;0qgIoeuc_p_`}G|g5; z#RwpL8D^&gv$OmM zK?|A=0P3XwOmJ#tv@fHu^Z4=6-jE1(VvpT`BX;sn!1lUC;4XCemvB=43PXvF0lw!* zMFHP5gCYtCXJYI`8pvNq&vBNTS_%>(kX9aS8gNZ2avN|Pw7W_ywK66@sIf;};$gr& zr~{5YF~T4LTYb)%>S`>eo}nmR-@i*iST+TO>yoMHJI>s9m!&fnV+S_*hRgT}1=%T! zRo^%1>T=A27HUl5%Yt9b&RbnhsnxS3Uqqzn90|npunjItg+pg3&t<)1h`Of@_8{yso)L$8r=}B9OJwTNE!NHatpr;X<4R>1_R15`hk6p5yA69;cWi#9>ejv3zR| zoyyi5-z1V@-yLBK3clo%(0r~hrXB3K#(F%Hlw9NTNFGRQ>Us_(_)l>*ohXFY6|>n- zogP(A>*`>O5h`{%RsD6dmpT5v9)7z&xinTHv7km_2C)~QHtu^CMUC98xC%>-WWte_ z@LFYYLOgah&dFN}F*(&}aH^XmD2A6WZvU*Mbow?>yQn;jd+=jDVVyn}Dv_C6p-6G? zbP*@*H>V{HxU>9;yHJ%GhBO?%H5!-%dK|}bbyW#6@`syAWHkYL2B%fmvH(kSdj-VFo6SKLrXwiR>xwe^u-F@lAvYd(C}?7wbL)$I&B&~NS7T)B48n{lw_P^X)9#^fXg)yCXMMjvQj zZw^HYZ~*J}2wA#{RBBJ6WuQIxiM@w5M{{X;q&&?V#!$ZtL`zYjv3H_UFoa821!wsh zJsr_9KJ7LS+WIoz{k|#)LDtITPiAI@pL237*t9TT!#PeUkO#j|5Im#UAdF97z*;)89$x*OHs5aavoO6qQOZD4R~mqxp}ffGocgun ztJx0sLKZ_`*tO2JZhUZ4zXdWv(Cmas$~^~6UZ^Qh@^Y5rz8^_iDSUaLz4eT<15Hgx z)j6VMgFF6*r@aW1EzkvQSs&sS$Ff3G(}w1E1e2UBRfV?tbHXcG8CF|2YR2aEfN;RH zL#TS)mQz?)KDZj5deTcQJ?hH^6PaMs(Eu?(!ZABErwO9uMi-w6v9^LCK-)$^D8sf< zA|eI)poFhp+BIE0)(MfcxWShh8h@*c>-OGHE7$n8$7H0RUrSZ?`}I~=^5L=3#tgkk$aBmM+Gi-#rm)48HDS%L_rdGjT%#E%r@&B+m&)N* z_5CGyuD%Dnmj%tmf?1k`)Dp`>qK~Xlq%^CIPD3R@u4I9hl+*SpboFCzw8Fh_bt_Na z^Q~?>XE&@!_FE)0#7?}`Y2deh6@iL52gq>!^$)hIm0!c8Vkswx9iFTxV(ga(fjFCd zPoHMP$i2T)VLSATUE8xu9eSpoe8JmNG>BLmu!bIi01c51aUcx@6#=`r?vf6;ZIpps zG@CuHj2{@>`(vKC#KorxTq4LkG6@G=giwFNILM&0hNMEC1$qAjGorJL2Sw`RbB5%X zVhFI11`P%a_)BC3i-^`ie$F`^QSgleXY^5=3$!OWq$L8bTCV*aPyu=*uzwWRj^z3v zoHX})N?Pi!-X&R%mA^)*FZ-FBZA}w+Rs3^NJ%KU8TQXB=b`7>o6GST$pUFVi+m9d3 z2;xO93Oejkp9^V`m=#f8ImhOr(3tElJU(-r5L&3O_lAk^((>Jf5JHv*EZ^=AuP0GH zi=po72kaQSNkreP-vE@}3RRv9HUE+`*&UcNo`!NOo(O!z)6&Sgserr@{_d!Z69K>d ziD}Ifd#hUrY8+Xbja*`VO)K2;dttARAzJXs67MdOobh{bNAk?=2p^F7pR4aJGr{$$ z-&4C-cla4k5`y1d)X_=%5kuUEKc(8yCXuVVx z&?{}^=lQ^JYWKrY%R?159)Qn<7C+~eJ@{?|w%FDG-(qVDPzy3ddwol|-<ww>d5P*vOo?z-6(=)o5m z!x5LtsZv>GvPHJ^zi5%tZtYfhx=sWVbW{rQiM`ekgkb*xFqxzRqK7OfmSu}N>hO>7 z=kKCoBui|VxVD};m=|Rz0d9R|g6Osf;76%!X$tK7Fyu9G+6B3wCJNSj=`7aeKmHL- z9w|aO0sQ$}rO9A|Qa_DSTtU!!7H_Iz;Ob(}ssQC|vcNDxx`QH6yFseeJL@ZVHs}5r zd@cIYwSG&mQjrnt!pd57lYLKes&>zsePu>xPwYvLFfZVm57;b0JE6epWSH9kVY_w^ zq!T)^kR%_Mzj&>G&`WD*ofyFv6GgJ!Dz*c%b}u-?Iy=_8v<1lG~* z{|*M}3u2|5tsC{Atu}jjI+Vw^f#0ryDWMUj>TD8#mv7DI(*&0%sq=^T%;f`_J7($y z6A%KBi&rMf_v^nIn|kfJX>MN`PA;7*N=63vZSmxt?l9O7UeU|Syi?F%@^-n@MFy5k zOOI+NyJ9RDZU^Usjb2T5mRwuD&7ehcsk<<4;h=|myK(BgEALZM%!T=_mAih5svh|U zl)z>mPVLm=_2NO+j65#=hiMDOWddytvae*f!@pfmiF`jCA|u0eK7{Uk>?6<~+POh) zKyKdTyT~BTi9`KYx_OHd-?_#Bu`YO*sitXJXvSmxYGMr)qpxum)JUDBlWp-b@)d?}rqZXs~d#9u0qwe5d4 z(O)5PM2%s&Opb4PMJE-Sa6jBv$<{m>Rgvk44>3wOgY z%OVst{Bo^B81(1E93s>Xh9rGWr;iHY(6_*;9f%XD3HfkppyXjeXW<7H6$Dc$#1oMm zJ)ghrrRck1AXv8Uuh5mO7^prg>P5Ux#ys|xV;NSTzY)&TB60Bh9j$X-m|ar|_3bB~Wn5G{E_ZYC;cVnK ziMtS#+pAbi^m2rQE=_uQX2iejhL_GlS2IDtyhV1XLGpR(K!>T*79UvvB2Xi|-+s!V zZvhW94OuHh|C%+aug99Cu4m13cDnI&CqSh^udjA%u2o4D#UQy8Hf1C}>~gHcXm`FJ zHyYRY(ZQ+^0J(2J1AGj?G|>^r7|=WG=*J3Q`k|RBMqx_i%z_mexGz57>eWw0e%ont zdO@cha7#EaEBVGfq{@7X_vm7_0D%(tEt`Tk-1p`*T04_d0{4uD>QxguF%6IQ@Gsc_ zhM=A(?RaoO1Px`kKd2C9w1rsT-25Z__;Qv}8*cgC4E0l{t|M($G8%9QVM76T0GFHqzIv zYXbIpH-6M@jHRC(>+W)s6n#UM&d<+i(~u#nSA9M7D~|jrO-hqg4(s6|7dZ;xO7dC8LB~MHjqc7Lpo%*|bMws3ld>vO=c;NZ>%|h^andRYzT#?D23E7WHCw7Og zY|qMlSIW+wI&PJjcbQl1E_r5{9qqJUym~yArTggc(3<|uS=gf5&C~eBB+v9mTjsjg z9&M$$q#4yN=|;a7mF8#E^;(zvLu}>Cw{9O>r}Xgmd5LukCyucREG?JDf1}sZc8C$8 z`7fa%vU*RO27ZoPH`AP}ZI8TfZN_MO?E;Sbfi)$9+EJ<>T^6o-&onpdj&nQz!k23k z#J>~Tv6`9*4R>$3aVZX^d{p7k88hEF90Fv8h>karCG=+E!-Z3S>)wKWNxwp+ykaWl z+&N;q7X3D7h_FG6-Yswq*4483v2sz2pbTI5H?97q>yb*HwY-l)kQ27FNbN7Cz^yC! zmEtia^nfCj6o$OY(X%<^9cNQOx4_M z;N*BJ!QV?Z@yvMSkAQYqhzxPD^0QfU4lbXQ(QDuj4|nBr@>q^Cz8shtvZl+5JCGBx zXU8gJQzXY~g@*#6Z2Aq0oAQQ3+}GWsUA(N&b0Mk5ZIMgnBNnh18r>gPFKkbK%n)>a zx+OmU)-|=Xg$k8(ip1bqT5Iuc5t;Z9c6KM<+G1{(8V3|)1!u|xIc_`D zOLa@PEC@Yuq|psSgIM#18N%BjJ^U!xw7kYgk z)J7U9pOEk9DnHd7_)+iDa^0Z}(W`^wS?l{|I6|_mgzf{TA2__)-pMvLw~y zg4@sJ1J-}?smQo))hWxkw%7GUbY8s^e03WDgO85}z>hy00-PY_`6?;%aA*$IX0mC;~?|$ol zC~TEPQbH1q_HC-{$fDR1HoN|nz#HaCuWqQ8ea&H5zw-iay}TbA$$=BN)NS-K3<+1~ z%lm3UoXzXd1zl!#o99-gqBfgow?8(@TRCT=Z4dX~{mISSe&knuyo*aQp- z!bKFvqy*<6h-l{53#p#qb5)z3$wcbs8i;VQ{4b2&VJMt zb`*m>j;g1MlJE-Y_#V$X=Giheej(^lypHKaIfw$+|rKU4TBA-Z3B#kL2h?I zo&>k3CI20ZUX}o0A{+eSVVlUfTZ3kz7(Q2`=y7y;yX)cT)coX68$c?q;Q2Kv&fwBh z`$us*rLwN01Y^|UmhFB6G{9Nmk&NQAp)gCrE9o5Thz+RX{x2>d3z{8!B>8OieR1hr zi>Ykz?5m`?fv~`>T>@4aJOY+OD4FYDn_1a$QeV*mf{c703okL;gmeuHom4?>7_^{~ zx;t@S@2P#n`(YxVrC1lLdz6gndXM}fJpbqsuN5mFec|{ge1^E*HAf4Tm0YDS{lzsZ zeBankzXdp@ zdLxN>E>k}YXwVv9doVEM)tsN6qPDTZ@ONCsalWl2e!C@_D|l!3*uL%@|IW)-$elNT z(;%s56XrygL)rQE@8Ut3`VeASsR?-Ng0Xr}j%l^Qh#QG}569=1n1c?oxMMAg_&PmubMqxRrC1kT2yC=SPkGdV;LUoEKV-<*O+AfIk24Olb|3DOU@k2w1b4e zSh3UuCGu!r2uvV0;!<=7H?{4kG!*2l&h7hY`)JfpbqscRX3L_dV}8eHcn^Tb07(+f z4yD!m7vHS!S)`OvEg*bj&G|~EYqbIyO(*_eb_3t|4|iCF%aafk5atfoL7OxCJ9oLzW?{iH5^L5_u#|ao#3!b!sE}NT=FDoOQ1K2L~%P_ zcgc2GUd>u5e6qT_pfxaLGC(ziM0E#nk_XEbLUXcq+?aRs@;*A8Xg*e9b0B0$trP|D zrS1rar+kSDz7iTSi)X_Hg@s_g|J$eh3u4|QelR+XSXfCsQ}LPYm@YD}{3ThNT%oLP z6kq*Ww%X6lXMVAv)n_60=;ty8rGLq@?N9K>&wk&@n#G@+iIyDExJ_5~Ip~_3U$8;Q z$zvBrKcUbmju;F~18)KWxK9-|1%bX_XyEvYH{hUeO|rkhROSOhO+MlmLjK8LS=xz#pbt>ONF)-`pUV#R_5EJJUOD1& z>q{g@zZ9wTgM!1qA{_w?6HjmO0B;z5H{px#AlT1Z272lqVDo_iEHCh1GekYQ6&{k) z6-|vg4@tc}72Kk)k~M>ubyN}~>5JJ5^|!Uu!$^4*Arb!^5Lj#rDxiQB_Q3ixJFy`i zv``qHtZs{l*{-0tmsYi{Zbooj&c?qM#N{`m9H%ec|bxCVE- zl2BOf#oZ*!tj`o?GluEL*4ORO(YhL8-^;TjYWZ^$QNjtKt6{4nmDjbwB?HALHX=jK zMV)c?gXOY-yYOvNLxV+Az;Ly?neQCEv-se}+HLH1Pi1ZE%w++9Qnf-*n3wKK#Z>Ee zCeM_n|2}cmf4JbuCUW;HrP{-Yq}m*vFMrnw6ZeACV>pCBDmVuah`<>gt}!@Hf|n8y zy=uCLFL;)Nk?NtPHK4hoV)Jn}to_y570sGVm7@xtxnsq%cpX!9I*=sG?I7N3K?t)& z<+3bgGIw{v%6Gf(eTtA#*ltp;*Ky~W&c6Wo(?oaFfb7gGr4mTj z6$NP3J1fE^R*MIYm)3e-{+23Zz%5V1sX~NPEn*^tIjtMNQ^_9q5ZqxJAi#kZu<1C- zCHbj4Lwh_ma{X>3OD(X8{`KfzO=VjWD>N{gFEsPE`PyNYvJa)97xmedB_x3M#JT6x6u*i{9yC(3$0B ztMQ-noTY0_U~75zHXrza=z2C!ksTZ&Mz@;Mpm(y}jrt(qCOZJDL`sBmjrNaWA@Ex& zW^`OgH&ZvYpSw!iu=`vxP&;eRg}@D{2`u)5nEF3gT;4>VWPi>%OfrzH<4#=&V!enu zczXw_SM}e%?Zx32cDTaGc;V@4(Q7AaSHYLilnKiMFD!xzTH(9B3YdCIu9gG}c~yx} zvA2!+9Q{`J2LLMq(7C@1(Yi&rdfhuFFF$AsU1U)7Kf2}gm96+$WOcWwGlO1J6AKM_ zaq@SDNb%G4JM-N>wV2w2a@Sa&y1hUunQ#h}8v=#{1Ps^Ug>YK&%r0(7NuAO#3?h@fvudo#Ea2mb!9MF>5w@<FI-= zAQ~p%4s&&RmGA%mde!!G;p1sCOP$za>GT(ek6MB1+=}oV+SSsxU!0FwG0$-K5FG+= zb&>vDJt+41Cy(lEh>NvH=c%wgwI&ezhfTIm+$Zj2O!$=)|aWQXVJlpy|J0qi^|uFO`70vb~_tD2dq$p$F|^+4`pUU zFn`|aTVOI~ge-uD2!=B9oMA=%Tkp_=nR4@AG;D$@DtZme0WNp@^IQdktHKJGNbV?F z4k>G0*E08<^H!-dhAYlYT>~BYxcPZuFaLOlf{JGFrwBYoqYqrpk?{D*;dx4wSK+Q9 z&qs;l-V#+Lr(MG8y%0=xt;_zgk8Yh0b&zvV*su*^In5JU`;L!Z%$l#}>L2|H4WElm zYd%=rSGvqW^AH3JUJROY;iz#wQ<5_ls+IM)=ghZ4-gLE|=0k+(v1uBWQfv$06gy1j z<3L*kl-iDe`c{J%6^-U25BuDgOQ8NA-W6PZx{fU2PV`P&3r+ zQ8^K~d~$;{Kc3clGJ4JhdsS4X8oWTAge-OZb7|GG%i3y8tq>h+QV5 zZ?Iz#9c>ZyoaU2OlyKm5FO9|;Lf9?|<04g*7+bqyr|;0D;H;alC|@=vH>nmdm?9!% zVMP7dmhnH&LUU@fm_s52L0+*&YPusJvNMBUIHs;veQ`0@z2iBen{&73ar7MCvEeg^ zLPKk&!6D$c2ovB+>k)viiLLwj%gK1kZD&ow;XFl&eIN^wkCOZ}>GH1dbRo^vx;E0CC&%(HKc$Q1!^&F%E(hH$Omt1W| z-$S{am|8-+1or*dqw?Na(@Sx0oQmGT0cgNq)#43R~(hMMlzgK&M{lJ;Cb@dtUi04bq(o7m;JehYlIOSTqnzgVRt;P6x=z)*)Mcr)zFMRe^gk`lsJ94( zoZ}~p>LCDO*aO^ldyw(LP8Xa>Zude7Ow0+QPl9iLf_2Te-kz@*Uh9?-^bOncwu8&1ufhI3;JeZF0$~WJY+D;r|&-)7C!Sfx*Q&CF7w5~33U^`YPhg&F<~U#gTDLUd~NVr`AGeXl-XM& z&`-QYGidAAquxL9N?=tFEY;s%B*=cDb#axsLotVjhXxjAR_@NAvZmf_Mh`(yFGfq;yVTEHaqand#GZN4+;lD@sUXbKx7%f5;|6} zys!iCz8p8;G(9g%Y5|`no`7PtyXoEW3qEBJ6c2xtLhJ&p#_0t$qqzxuNl9&~H$J^w z#QgWP0WPqlG?tU-&&#MC)#@u zg^V*$^Ox#w>@2vFJE!?w`>lZl)wqo-Blt!2=62frV2W{DpLOqE1?qn!op&JB|M$l) z*XGj4cI};P_mW6%iO5PwB`fP*TT1o_SN6=7b*;*lossNy?Ug;FY}x!?eSd%EkGfsw z{eHd9InU?gxqbOerEYsgkRv0*=WulV=YQ&$i$^BoFFad++IP(=%6%Mv85Tz@;~<;U z491mG4gmWf3~%_>MIiogG(1PAH1wv^EmPdPN!n;#ffMkfWrfY zQDAk6_>V;JNxT`%rA_Do%QwOxZc=Olb8HC-chCHfll@l7iviq&jwJNbm(matM=>JI z(+zp%kM$QAMfIU7vWq<);)$+*HOug4hO4J`;mS3#v&P(mu zHN>Cn9P0jTm9x;?{(IUA{Lln?BaqJdMuY%BMVC2^a;}OSUv#ji8hA6S4l4FOh}&pj z-{GF#&0?)$G()|Y9t~{8O3I-ybQ8;=?)PL`lvaztqMa@wfnu21S?|wGb2>LYjD4!*VTc>IWy;{ z&9X`D*X3$jH~I@u<~CGc7J-HCUBBcs3n5ynj{&Kb*+sWhwJ(ynph`!AjxU=60Y#a> z-VBB+*59F;)Pd6ERWVp-giC7NsISW1lxV8dSw3MjxD~7`fRiI~Lac2RVdp{jDf2&X zYl{J}W|~mV(XcP~!#di(iX10No3xD@cGbftL1F$`+ZtMCZ8Tto>m+nk8h8~>a?A{H z)b^TwQl($X8#&Vmd4i$v8fu{DY6$m*S*+`m%mPcB)jf|=($-#6sHR*)GoFb^_=M-U zoSRwVB{`Jibn(Dh(|^O!D`<4gRnXfrj{TX=5*BGA4*&eJT~B$5Q2LS4aFJ<$qxEs; zRx5Z0j$fUhj6a2#Nc8@QUo#d6*8bMn?sp_OHvZAgpDnO#F<2`m(unlx#nVT-7t)_^ z%FMX0%}};SaVjz>a$*gZrQN$n*yn4!H*6*Pf%-{MazIN`MdbAbow?8OyCHs`qo}X2*!u!iyewiBnnj*!TIwI;_mS->15*D6ycqDC*{Wm`x?R-!B`{XSOK5y~^g*uxsI>6B;zt>{aD;!hTdVp$2k5m^#h< zCxa3=GrDx=`1Yzjl!$ zt#DxF5u*~6;zt0i(Eh5R+slE#0FU>duBOAy{=fQnDtiBvV?jXA{^ei$TFRBF^9lWX z7W~;F^KNMnA_h!O!qX;x_*+FWFras?+glUE-m$n(m1SIp+c!0CY}jVKTz+i$NE*7c zi?@{V3Ji$76hpBb--*r_TVg;Qg$$#sZnoI-tyA@FB2ud1aXw6QJksSnM1ozIyeGGJ~yEG^Txa3uhitH$#4e)2Y5$dlyVKsF4r( z7EMRoLHpUM^0uinGsvv(ma*g#BRS%M_%$o82kYaUw|ydi%e!S)Hx^&y7Ya>^gG8|1 z`vtMJfjuzA|Nh4>D4Iz*=cVgM8>WrS-+&9t;qR-!iLETYw}g`${WNW_D~d$QeGgQN z1y44K)PJBuSo>xF?G6p5uv4J^212b&d=~x{rkkF5k0ghxzeVNL-%umYkg`PAoAkYf@DWxiyiPR4|2+lb zIz&qLScchI?E2S7q6mo=Q}Z@I$pt!ZeONo3ZXzjK1@QNZvtv-L(RqzZdHLB{75Smu z5zm!}m7~61?Vf^WBh18FESK0YJMV?h%FpSoI>$AoD8-8_LOi5>9R*5NB<#r*dAUvB z#!&^GLEG&Ga@y_}4>A&ysW9_ON5wWJBxFpy_^Z{|iM1XoBq|QjI@5SF=A|_S$4nMy zt^p;AEV;b-rJ~3XnOuL_KSzY*d0%*J$BRzTTZ><}#h+IF&G}$EcGPY^?Q|!)s!%*W z*Sy;_m!~E|^H*zA6lw!ove>cn$VgkEc9{(d2j;5myD5I`pLI$ruEM{ysgc5s6#|^w z$&nu7@OrhS@(U#G|% zpdItCONG6}`VQBZD4+id&N?!!kLhiLq*$C1wlxPel079C$~SvA$TKGE*Y0$Y`|+Ch z-Rat+>yx=i*pn>qX}+xp$>Agoh6BSWkPGDxY8BBaDu$b9QA+(c@~yjC;vSBwD-xP` z?)=#I)=Ve$$w){)I?VrQ{M@HUv|8bg>+cD*V`s&N(`ukG@m;|db@`Ig&C22@27b8# z3&nzyfWCl78h{*_5OEp|Vmk zBOZ0bg|@4aaFr_MmcHpjWhdhymV~Ch78P{r-cg3YzSBF=#v z#d;x#*zsPF%F75M*24zR(In4TD|pD*O+ zK9_S5Dv>nrF!nrrGhEf@Ha}=!dP>*IOb&M8_;Z$Wi<6C}ytYFc%%0TP(3%wqU{f?# z-8!`X`8SBDO6gDGTSrx4C~vjG36M_VI}`Ogmfcj1jb&`_QzRyKwwGbP zg3(`ojCyN}8lJWMY_q+TbL^UmS`~dZ4$Y@bD86tyoO;8_zcqnp)o7A^I;@w5ySO9w z3E>O;d+!&n-e=oxr4a{nRKWdunOt{VDCx&G^5 zxn~8A_FtNScPHB)2=JZn+KaQn1TmKlL-BAEy^IECfBGb$FGOkoIfIyI#BEDyiI;}S z^Llf|OX238!(wCf%z5NfDBgD4u=Zv%aMKt`xSrEagn0Q}7hz{_Gxzp#uw%_~sbhh^ z5~A_3CcL%d>w2C4b37R{YV~7}9a-%4*Y(~ATLl$_VXeq#Yc8ddS1QFp>f>oxwTIvg zu-Kzw#5W%ih3^6vwQ>U#Br{sy-#N?(q#vf?esv%-yJs+T-JZ=!)xxR1_<^aj#R$BoE{4tSwd{p`}W|vbRB5p6tLsX z#s7sR6e%SB66S#*0dwnVP79SLn>XDOnF{QIN~0LUO}eq`BpT|DQQ zPQ=1sY4dwuu3Xkx;4xprfgm;8hPA}^1HnOqsUKKrW}EB>DMsFwH}K7cP_)}q1~3EM zjy$fc06omN~;ZiUsS@TUPkoJZ`)Ll3UfSV1B#X&~o#h zjeQ{0TtMZl73SJ1zNm2U)*gz4Dfm}LtWlDX+lJmw?V7C<>DXR!^X$*a*Z4@q`3ifU z@@6ieZHh=R96=2vR&iKX=q4&o2spyos?#kyRNzEl_Aw7|j6r;<5tC!Wn4g)T@uL9h zN9RQiew%A{20)2zZZN1v3AXI5FCi(RDwJs8OY~E5aIxWT8^tqE6sMWVD(M{1tAAb*z=i@*(*1ZfO~(HBA)2-_c9ZIgzU#Wg;t~9y3ZX`~ za*BT?I%fjNi_J=}?4iobyNBV=b)bn^FI60(;3>A}f#l=ARl6?*eT|8`GPT_hLsZmw z+#nOXqWAYR%KIbxkv)F0eqaw0JT$t0g_ z8dfx^)W0ujEZ<-u?HyTfX?|Bm%-K3lVmU-A503)9+Wu_& z;b+C)jwUI2*+fG#^MY^M27IT&s8xj z1)KmGHtvHCFDQ1mnVg~-FE*KrW2?>*6g1bJ1IKuwudutTLFA#lY=!)GN%c>+qEp2o zCD)l(`}V9zaBmH8!YUVjR0EcHjT-&q5dlO3+AMXnAk zZ7~9!r}zn3bHbDt?}^}(d^M^EAIrcdin1fbShSqY*2IE&LJS&xIHmi0BM zN9x%frY)qupZKYT(^}5cgCG$JM8i);jnB_2UmsRnHiX`RzOsfY}Af%_R4nG9nY3nJ0-JGivb33-cJvzt;0q)l{b5W%v+He=4BKqxo2pl+}?q z7*5x1`hM_HUOO9==pd2#L)v-Lv=<9(Ne_d%+Ngh@s`>1hM~6t8cA-qd?HS8C4~krzRvqU$T*LrK)5g!xes(N zO8Xj>c^s0KDwFu`LjxjgqDi-!dS@TXVyxsX{pZLtw zFZMlZAgiXhVeb>EZd|!15(g3{=EFz%WMOwfFK0oP<`49N2t#FHB<2S1TU?C95|c9l z&>@kf4MvmrwHJk|I5<-z3j>n`8kHkM+RlLV`XN&S5G)UHMS)=fRC3(-*aP+z?YH%Iqsb*$=TH$zXqM$$-v`wYvTU zPqZFp&f;xGxKiXW37QtOwL6c=uL7QpJ`5F3X$1@64&VTyvj61P{dt|z>`?2m+T6Oq z@L4eiC+-w+pj;HvSRg&jRAJ>_7o2XLm|8bs|A}>-(n7&I3+Fg1ydIpqw;|)>i?n<= zFZ+UK4jTR58wN|u7yseiavo~p@H6EgnUoX63GaRSY)y6Z=;C->6ilRV^cf!OycF;@ zGVNMvxj>)#BL)oyf$~?3i+4dKq9z?Cu_ckityvz4e8QkfgllO*=g9nLH7*~mQrjDu z)$`D6R%1zqKTSa**3&=?h&+2zU_fd+2#KKb$~f)jB2S2q*85+r@_hbM$lDkyK>GHEH7dq;J)apN{JwGDDj=+Pv>g^t7xs@JEw3cSNcS6#)~{!Md_#z_8bbNHCB-u!ZF zpj4SKLRK1J9c6~_2lp6@pN>~JFP+XF{D3LAC#RlD)cuI%Ns0VKwfQzWqjBra`2<_2 z?eCYNTtsKz~z(gZ*->!1JNC9N`oV{3BkOV;~CHg)CfY3m!kALKinV7izd4t$7cYH67N-;|dd865M zbV;vWdi)LIHDCQ$jWFv*%){6PVGG%~+hnLEf?83+_z=-qLTcn~5T#;zKTewm-<mR6L&?e3@lb%^@?cl~>nC`MnJ&57s9 z;QjYd^VswYv`D;J$F=V3)e9}-^5TNIo}K*<*>#;VbtDe5z!g{hFMgjE{k$jVbF&WU zPE_vs>&1RZeegK+lj>s~QT3PqJxKk%rxL3^XD1n5xIj)R^%bwj#IE~pka$V`ig2CQ zcE|h0Q#Rj^&jlC3dMAup+N!ce)rI?MfUr%d&GZ0}(@jnW#F-5K)O|iao0`nv<#K*Z zuDfg7lW%{Qrt))1YSo*+=edej*OyT6*?No1p|9JHla+NH8DDrcaP;n^Oc-#r)w5on zML75uYDX{?4q0;%G9X5?kYjK2M95$h)$p?c3&CO@@X{2HwiHcWq$dZ-#*&bTUau5> z;c=fz%l*^Y-^;MI{j(5h;M!S!D$E(uSRr!4*%8hGyI{kf!pm&hP92}2prG-BAecx1 zG%+qBx;r1OlBfKj?uJ4hSm2QO?KYr-G!Y^2_^4fFz(qyD>x%BZ)VN1e?K# zsr(AS*xDLA0B+*n{^CDXP|s|YS`-*rz{^DcXXJ?*tE!fL z^9u#8z625E)_{K1%yN3+_Ad{K?i;S7-kfH(Srn^3^r5e5=)SE`HwQBcWgZ zSDM;aObQp%IK8W*xX0h-)HHUzgt;g8`vP&l9rP3cLC7Y_GA*W?c-s+VXh8q0XO z_dicB4bRQg@gDx^n~rNL#n=v|vQ`T;)?y6z3{$K5eKAX8xaynRs%L+P^iz%NJlnsF z2j18B*$jkdjj6P^P!013$U9%xB+Lie)MQGoI)zk{I*qei;lkv zSXz{~1GuR%Qi!MfaI5TWaDEd=_gkFId0}2x8$40i>v?RL-8j1XcNQk!g5ybV;hS9r zz2vKZf9W*!wq2$dQtiypXmGFP%Po!72m3uf`mxgCgCUQxN6gX6N-WY;==sdJ7xtl|M~bseL&hD z>KN``X%kLVCQ`n6uTghR|znp2e(?CQq{SW4~V6ONL~zh>7CZoEPaojCr*oU1Sa&`+o&eC7hy|8gaH*F+I(6`IWS4VM7jvBT zB8YcJf?92Vu;Y&mkNQ0(HoHW(bGRpOSrVdOg?w%6np(90BR~=)ne~e-k_D-$vqq(_tMeAiWYKaj#c0g*!Hzd0tkn$ZG;@o}1tr_XW{9{S=&VXrnf@#N|qL|*gXysw*M2cP0n=HDJ2f7fqn zy38|FFz<+H`nC7D_?g_F1o^#xlBQq5945y{c2sBI^?jq89F_PZ5>C`V>?6aTIIKUb zHq&){b-uda5-zF}vE?AFp6h#c!r7nVGrbf1pw8jj%HKW-n`w6R&wp#RSx*%uczKO)~y zG}j*l{^O-^NXm^!B)=b!Zx9VVMGXtI+X8PT)Vyk!F+Yzw!3K&Sp~y7*fDmbTmG=Zg zCer%APT0IkG;Oj+1*5cKSU;NquE5hf=Jsx|5}zWLBZcVI9^q|rM!j+h7Pd=^FJrWs z9i-Vzu+JZ}w12am2KHxZqd8>7#fOJ!eb^qUd`s6p$QaCNRl&`dG||Thr0WX>mZZcy ztL5JE)l5U4Se>777`NI2-$9vq{*U}qUqV^lxZi$CM2LghEwb4ydTQ(Mc8(NLh=}0Rie*(5R6CGn{U`Ampg!GJW7D)zQ`pt7l6Vn~iu=q*>Xc`K z%7JRQg->E+ttftKJxHVsxvc151k+5iQk_9SuVc5_gP}mAN;VbpU4L#qh;;;!6+Fn~QP4Eq8i~zm>Fi)f2~D)eCl))J zQ7~x_-6(fzdtP)zm8R8nHJIphDE{rX$9bUITNC%bLtDqji;vy^TRHRYGhX!oE%Z4> zsn+GJ{tlo;GTSfj<|me%p-1Z?6r87TrXS@wZ1oKMysx2&4Fg`tEP?G4=`c=V1K+%? zIswfzFZEaV#z-SoT5b&0JQ*T-iu@<{B*B$c$&zOdMz@#tb>V}-?t%<+zrvKW7$hh0 zdJYmXgGC&$2s2;++W-Qi3}Cs{r53~jA~!^EV8O5DP!4P-@1f|-Z7{@;cZa9xBVXCl zZ7Z7dY8Hk2vCR6CIJJMA!a*aNS^g^k=2xo$QW}N5r&2y?;9WVo{S`f#vSbzCBFo!9 zd~@Vh(C9(eGbOJR2BzDCLSc=n5`H1l65P0E0IkYv(Rm5GJXI%0-#+=kM|Xps#|{%a z$(*lIQjRsxNb__l$Gb^Oxef6a@L}^5vQHdNYeOv-JU>BABYQGF6)f`rE*z z;rN}HX=aTyQ*)@69t!$F<~Zq9Iysta0R;%EiM!qjO!sG3EAz*cfZVFfe-+Yo@O>^L z(e2wL?(4m)DI@)4+zs&%dJk7L8J$>ABT?*sH+Vu0zRG8HlE78jE^ZQMTFHBB25(Ar zv#Mp*MHuuZy)%6W4X%X?+-^U($>#j~Y^=C>#a@waSvBcik zcexe_Z;q0mAMYmEJroF&;X4o|ihh>CWtR80%aZ-uvz_2E?nV_n&E{sNc*N;~ z@kQq4a_m=5hpE!M@x(9CmbQOh@+x9lC3Rn@ZqWQ2V&1L}hJtH1{@U}_Viu~Ul4C2q zHRrsPN?49(`n)W*>W>rcpM!aCiiGoC{8>rkR{I|in&7zE8@%Qda)-l*XI_hQ@=r7C zik#aQ5u>ApJ?TxwsX9w@ZIz+CeLEh#gqixh+coKKv`-q}`C_wb=HH+%ri!kvF`~m& zd8!4M|s1^ERs|C>$&%Y;Y@uoEN1XrNlpKr?+2kPuhHWqMINzb(wX z6Px#nX8OkHqxgr4y+7jaL7VT#q3}wvPdVX&L#p7*;)N!~=@0&p04ZG5OmfZh>!q|x zpLBK(nb?f|b4Xglg_zBGlv`PJ>AyHbSMX3fE!E-Srwn&-*qXX>&19`%$;+$t- zeO~LeHzLf@w3{&P9d&zmaqVU6o6WIHpVrWmjDb*- zlkF20);pb%CWkcU9pN7Xo7Nt^(C#;U-8~o#>I-B?HzG)qoVhfqqn;}RI-?{(L?{4a zUH3-w_2PA-2tX}D|6vDZ`@xTZR5H4q3i;9&OkJP4m_AeH75<0spv)|s2Q*m;d?^Pq zn?|z`0(P(FQ1JI;>qu-W@TvftcdLMGNQmackr<$&0lqpY=Kd86B&BYw_y}7q4J#oq z0pP3#8OgpQB?b$5a+NPMz%L*!1@ErM}PW75?p7H@xZ0 z{#^_PP#O%#Uk;X>C8u7by3I4B)1&Nx5mVm!Tl2vxAdL{Wutm<3xABo{SCefJ}+P~(zkWqmW~0qV)1MP@1Y?$GrgGsmi9j~ zU9xLAd1EZ=IJqN_Q6yl1G9M*o6hAi04N*5ey zxFszZeh}ju^i$W%()XQB!(1{Y(c^6hAK>&-Jy`T9~KvTKCe zeyBZuRJrM=aPUxIOnCoisMAXQujwC!A4hEg>8m6^OZi7ZzU8q>iYn=9p~U_s^S?#y`S=5pgJz$VxVIkQ>&* zG9K`bA@i3(^>iLesSbS`5;39-MObILw3DIvZ~&v@P^MWA_(}e~cxt%N5EZ=E1^avP zHG^h)oU22upGp|$Kk=5DTYf6DWg#$j>f6qLyGw35&V1}s%%4>zZkmo&KxR*d>-$wu*Dy(!vob6_i3Tp$D}mePkC}qNr(!{rtoJx zDJK-8H(8hbJ2E{VMWCK-YP%JAH&lkUaa|{{gJo%2^v(PnA2fQ`-Eplytykzo@i@wr z@9Jq7?bjp*W@h@C-|L>ltJ;`oY~EYKudk_`WtaM-1jU1iHl0*bH28n}9w0QN`ba79Hbx%9MP#$%EqsRCcbZl?=PCU_z{>u~ zNj4{d&FhO%Vvol0X5~VRWtozqiT2ahR#=p@(awpM@jaO&)&Sop!aH+`-`lC7H4o~}`LjGQbltkjEGcn>_+GtrN!G~2Z&37T>t{MgA&AfxxIz0e zdwLdYbfxO>5&;^=-Qo(U5qM^WrODn%t zF!BmUsJ64dauEy~LOR~)a=o&0*^w}$7G1otAluJiq&mJX9+Y35eX zC9z1W?La}V1YR?~nIFgs5n&oMr^+~&+E>pq`;Yac<9U2RTXDhq#GgOM5oIalv>Z0@ zoiHkeUJ#a*ssNP?WDy`?&LQ`?t4vC;KT(c%3qpD^<0J!_w`A%zkD1NFU!@s$%xHn_ zY=THStILeCi|!q7i|^RHGkA1P+q*qsIQh`>uV}#Yaq8aq(>e4T1&urr^@Ka6#7s^` zeA=OWz<|l?teS@77W`FI;1o!D%#EFW*yCAwe{t<=r5N}v_2%|MzdlO=r)NjSbuh@GRWR^i!<~u|`_hZX#R+>#sVi{wkA+ zs?Z>B4@q>G7V4a*z_c#Qj28F&vs!(8@+9KA6e$u^?iw)q+-Ym2m5Wn*{dE7$hDCq= z!3^Tu)RZ?f%g`RgZZ}i)-Sfk8!DiY*l;FIXW_9TBXcbCi&JFy*9x8_irWlN!@8ycH z1r=yz!3c{k0EI`|7tJP$SDm&MPDfx>dEerrEwv2r6VD(ipPy&y$f4J11sSZ6J*n3L z0WhTkE9>&>!`Dq2+}=RWTMWU_mqnV;=ca!YljJ54vfhT{%4WW?Gx7DvQu8?Hs$69l)FupK5p|>}vV$*phqWqu$T%Eobl0BmjLk5HkC-%5 zD;Pd3F{O^GsDjwkXRAmu1c;(X5@AS2R;ZLm43N@w3EfxlG+DN3Z^|MoP~SvnZI7+xHfXHp+VM}uU) zji)M{wnNMy;F&Qwe=?J~beyrS1FEQDrF$`0Y6>g^<7-mELQn9?$uVU8oh;wCTgmXv zLZB+C$X1=O$%;9z2O)S=JT;sJ-T8Owbx2$|^7lDQt&7U@+1Jp%$7woy%yu7&Kpj6Z z3_u_fjkR7>$OQRPhtR$m|7taZ?Tu{Qz3CQcCaDr2g%id;d$2B+LyM2rO(S^aLH%`! zsS|dbc&#nj^&DCpkjSsm)FP>A@dLadDt?5f*{sb*Tk0M&{U@K6M4EUKC}vBT=6v8$ zT}ke0_q^KKh5t$xoUnQyl4@2_Og_*V>Hz~d`-m!L6Fv%!aBz=v{Tu#YFMdVyc6Wgp zDdB*1h;Drk#P#~4R;AEWZ=#g=ymWK85ATGT&=Qmr#f2i-wVR;P2yW65L)LO0q zaUoDk!{w1-302*EfIClBds0Lp`rcR6|MHT&)D8iyXBu(m2RHmYx%db{gV;1^Hfw2 zF;US5=uVq&M(s{i2)s6x#Lwzady($>(hVDTeLahVek)gMpq~E$u?~;HZf0^%+p;c& z-!wvk<5K+1qO;0fxM(lFQWuxillp=n;vJG6E${}#yAb{#9>o+9h@eMLh`|}rWWD$u z6rzwA-b$Uqf*}=*tuWxn4bD>qI+XPFr|TfXS_#2F5+N6W-J0NA(73ml;(fmVAiki! z*w3$-Ox@+IiRDcjK3A=7<)H?Sn#H@L7ZMRJ^|)V+C5{lX==W>B6vmp_8AuS1eq~&1 zq` zC1ZClPJvM=e!<-KQ(~fQS5MjtkvE?{+1`gzUtG)(Lkb25BfEFE^HT1^ z;l0$u*cN`)Oen)6Z(w)u{y zbo9qnhMRDe4QjmL!z)R3rFHmEx0;$y82_X)fqHqJJL=Du)K_|wF({2wirlqnD?7}- zeU6BsG?F;3&9Ke=#YGU$?Z5Ky*qxvY>%emEwiaD;4=!Lu)&_^-xYLnRBb_Lhy7FJ? zGleV}WYm;%->;0XeMK^`(N?iz``{3Nf&BeYhib7Q#-F7XgT0w=XAoP2M$+0JxA`E@ zeJi)5tP|OOx;42sMc5aj3(GgHQ(t{c_Z^{5i7G~6osX94>Q!K2 zNQ$v&>eOc=k-qM=Kj3akVZJRbe<0TLl`KtJE0XP8F2PY59wix1kHj}P44j;tMh=#9 zGc+@5^Ey}pUe6^#|E?ZPby$!)f;bvGJsRRVSgNYa|KL})f2S%Gffr1D0kMhb=RXG`!$KFHnQgz(X1>mE%FsT z-kV--c8}$Vw~h<&71-NxG2vvvq|_kqP3dSs?<>P;DepM?>)wLn%<65xy`CTfMnck* z9vgF&n{+%{Y92IkvBF^hdWCd}f%`NBQx>a?GY*YCS}7k_36ZnrgWMhWl&nWzq&qy= z{x-Dq>Pg=Nj?D*5?Z4~J=IjN|;0lXWBA8DlVrlB*11ZkQOZj2j_??btnf_)2=SxC1 zC!>R{m;u%6t&SCc2ry5R2Dvq>xreT0a)T)K#?S>N>$?t znV_LCTN@~lzp0tYL5x0TLGD>e{iGEX#pA_NT=s?pgov!Ur0@ml2sZqqv}Eu55qC*p z^*=%!%3vr2rI`~p5E3zU3rqrs6!v8=C!!jvoQE09;tfWI^qibjvq#4+bQ#P>t|!8{ zuu;?&s(jHbfw~?avHmO^stsL`OaDI^Bbnwke9 z*(TQOFjPaLIk0q$l2T+>+0xBxrIlU7dwIPL<>Ev{ByBrU71wptjqcP;*`@m)u75qs z9PCmr$eB|X1QmN6Rmad2Q-nxTR9fvvxg~M`dM)pX?N6_jPg=P9L!S@g%)nkQk-50* zy0?~H|M84%{*>Z8ul^?wah>_Yom89kXaW&}_gzB7(OCqUgLws?2o5WMmHoIL5Gki; zWIgzHkXhu74d(IMxLc}^wZbQt*TP0fKcqf;Yv+)>KYVvT&&Tv330%m6F@lX8lgEH7 zT#iw}!bOKPz{3t7(lIBKZY_9^MfF9~zLVDSOCb=Vz!#|MLR6K89+av?Fk<$Qs=P`t zO+DcME5Sjp_m_L?)-Nvrn$pifVwJ=K&e@SaUz4ff??4nq zDQcK>A>o#g3%Y?2Zbd5S?jBeEgWS)G(GRNx@FVe-S{7mUh+o{LUYEl02T37*p;i&B3t67CU(qQU*g;^`kq$O^Z6uKpHv*neCy|MgL{7X_x zYiifA*D?vvI)pnsE#&_OC$AKg8N?1eh|N}6NieH0X?UfiF-hCoi5=CPdlB@7!z%As znbUsynf&l1OnFDqQ~jNnM>(vv;Ot2-HHUqp^M%6t=~wHWfiw4aNR@>wl7ubyU<6e! z^L+R_DGn#AyUeY;G$7E@=2 zeh^M1@?r<7a!b9AhLA_ff}VI0diB!UFPTmT5`6w)>iU{Glad?&C1EKy^~ z@c3&5W`6Au%!H-(b6iYA zep2F?YlNhy39pl#zb!IM;5IM$T{qLyD!ckFDZ6?MLgKU4RLJbx+y}|}`-0k3nLTvW zGxkihjtSCVm$r4xbh3(}?d<(Kb8mB0tA#yCLAFTE-@`)&c|pFOIo2vYuvy=O$@O4*S%@%=2#Eb#McJ!QD} zQ8+c43xdpf!PJ)|2Ut115cKt-9a)4DF9G-xCM>n=j;M%J_Sx{A^*4nE=fiI^KkZ+x zwQZUy7rhnbTm1fcIYs-e&gF#%DLXrzeQ&-Nl{_z+DX=zuNXSSi)?3cUXet|?wfFb;;)>ZtyT3;8RHGT$20d`eHOR3g%tWp z^j6lDSB~5ALy=Hi97%#a!BDe=34pibbQ0vOM|C%KcKw>p|`)zHiNXVii zB17ZQP{-u+nSXO>kgKu(raR(BB^b&zO-fYP6KA?gh@R!&ZQ)Km?$90C`^+00rD#_3 zBV-YrKfL*EhPXk(2te^OVgjY)1X}GpD9^uH^&ccS!e+n`)~PzIoO2iM9zqA3Y*YK5 zYz&v4GWyo!P<;}_X? znQB>8NSJ8@dT#UH zopAmBqSf01NeUU{X+N9+L;$qfA4mAVLpan~_lnL`$5w5jS2@jfvbWwOZ+_t<$@G6w zyGOsl@^KUj%kUAx3$0S4$%dHcslt%AJJ-$fi~uhoe38Q7SXH%^FhX)<=ZGLlsM!94 zWS()bC?)tk_F0}V(;(fC=Nue&Idn}6>0S@fKe6#w34#}fMO#!AOyQboBp* z4pdIj4Npx}|yJoCQMy63ghWg@W=cl~s~M_p3wS!TeWaNABkQ zo(c?5{A-(9Wf$OXo4w^dC)c^(<>_8j4v_!t%;NBR1_`fm{zmkWQl_%L9l$dH z){JYX{e#ie@+VKM)mo!c-1(Bo!;x>rM)iLa6g>VYxZEsO4C6`^SM;yjv&UpQrM3da}wK8n|gI_3jA{*6Jtx;r?$MyW>ZJ9r6$swU(imRO0$ZQ*w6-*hfF;~j09RK3n zyWX6i{RKUXKx5POyUuP8+_4j{$LO_}?%}`1RDm_DYBaMKxfYi|4 z(gM;Th%`fpAdN^j(lvyHba%JZ|M*+a^}_{=8<#MjnRE8p`?cRkzWuq~F}@Mk>HbF0 ztTYAD!_R;3nBxk~MD7}|ZmK)KeAD(o$mR_m4&txM#VhEHM$EUs83Knz9* zEek481ELZYV(m?W0c@*$kO)y(r3ixitfCRa4k?m(Xfb25oq&xGmqSaV`xp(r}e zNDV~+16+XK6OhgY$2n~Hu%ZMb{$o%Q=%5mm6JYclsgQsQ`5k{gr~ZV3Av50^JjKEl z7sh}eIMk`r-v0F1-My3(eYhHS882{*tC%-TabLwj!t+a+@{x(96h4jX;?ulv66Pzc z*Z777rg5vvlG8T|wbY;T>Ioklks~2JRC!+GdYx8tT`sHzjhL#Y)+B@LCXH4o@VTc$ zL5wUWvvS;SsuO;tA3yf~QlfBZ@;Du}`fn&SDlVt2-5VI2Eu4?71X47dH|RR>sOhXJ zOM)a@FtkCyceJ(gLZqcm=s>XgN0`xxmag@&k1iLr?unLTCF1>Am z1uB1?GVG&ednmOY2=j=95l?6dU?tRBW!SajD`ndF$f^GS1>LF&|)zuVDjOUinm79fxQ6R8IyyCW(N-lcig-4EAB5xQ95@ zh>?R9sRqX4pNuco*>4E4<6h||uG3SJ4m{jO`f%Bv|5cGb>dp>F<>UPvdWx2|kj#L_ zAmYX5j-u7wFnCguf+je&`RLSX=_(#PPmjsmz6DG)!2_gaexBUr&q`;XQNbUi5pyNwI zD2ew7;D3$K|K~`BJtan-5su{EYglt}MJVNKI9r+%O9g?G+9(>nFjI=#$dWQKqW&4D z^Cu^{5E#XoQU+;8LXf4?${Z&#@zmaCHc9S*!RWdwie&XFBMPSAYI;<>$(Qjc4{4o zJh!Vlbn1QecM_D_T3yseJ>WOqo_K7B@a@Lw1JYZM%df#AnP$!5g9vIny>oDqo8=wPkxspCkKQGqR0|@YdOTy)Hz$XA`+Xp# zNg11jwwiM8tta&%x`LT~hIoMlLaCs%o{mh%I-vmZ9a~VpiC$u`U}iL||1nbGxn_I; zz4kIi208F3Yr6P!^gfB|=s6KHjNC9VO1%5}D$2BAO3Bh1oQf?4NgbePk+HXB$l6lxIYbj_5`{QIel`|M3YeQ<@58gYN+QEP>a}1o8L+)2^`e>dg z+sL&)6j+isIj@;76o-$Wz73-3>kWuO8)~oK%YKB3QNBvA1olGZXPOG`q3hxz;En;9 zOA`i!%KGYQJ0v4VqH}M<{1J=*;;m4D0}I(9P^AI0VAJSCk#48pRukzwbjTl3bP4Dx zCJ3_=Ffo)KuGNIBQWU^~HZ%>#?K$T~yc<2_^X=b7PD+;*4If0lExsOU_?ET;{VJ92Sp ztkhoB%~Jj%nnwe948;|JVUYC;KZE32nb! zPiZMB`WBYrLaef#p&|NYlMO+Y;jGpmq2u&50x_ZL1hf(7VD3P$Mdf7+=Pl;+QCbV?I~Za&o4l>TBJduT7k>tWK729ueY2F9(Rp ziYBf95cFO=4MbO@gb5^QzyDT0d}Cjeqh!(0s)xm@^!fR%Bfem~s*4X7CJojvN!^T~UIW|RAh`oX5VPvZ4j%Z&wNqJ^ftDBl zVZ+TcG=$+P9BHRhyb5`4NcEJQ1m}XPnqxCm)S!1g9qW2W4RY7bKA!8VtGm0Khr3od zZC1)h*}6^;O7c__9K6^g-fOJ+@rP+e#XtH}V{@*vlML<3#ifK;*)cdjMcSKg%Cj0pjKzBo$YvWT*`2H zJbYgx?`G*NX0zpnw`bEU9B2Nw&N`;zVmF7|+~Ew-quhcPgn#LMle_fwU${3 z2ALM$r~TRiTL{GmF)p^cg#}>0pQ50tYg)P^sv=)&X{5Z8zU39Ep|`k!+u;kZl@&;Gd+!gbNr03;}jti6(g(Ajw9n+k((2{|AS7oDik zWqb-Qe#4uXzF9v@Xmk12G`TRVr!u^lufy+uXyUNF=|L-gKKFM`)Tpv}$^t9w1Jeox ziT~{s$Ifzj@7DAnBh_{5C@{5oSzHx2P?)^(oyc^>elhmHek5chC%mgbf!CfQivn?c zSIn6roVh7Fd_-yHX6M;|%o!RcU(mMecVGG6`4Yw80bB3On@9r$*!M97#u+-JX^KL+ zr77_D5ebcOm@8a2!!#&N7KGM81Zf=PR;+>9z+!hEA=bP zbJfCnc{;$nP5MBTu#eobcrWxzDm)lQJQ$CXREJ8%-UR3D^j5Jv?@7A(Gz>ATa1ICl zy0T4>ib+x~dmUUR=V3w}Qf6N5`<_x#OlEV+)KQ0>># z@b%_Z$K7~2RjMcWK@fiqd};?_2lV`)ryb_;T#d6NwP&yN4<-UwMkep%O~kl*8LL$Q0#o!En_2I<7}kb&ATr#iVU||TfRM}8Ps3S>0rGp zWi~Ivje8!ICTV^B-(JZhT295yLD7y>&3aj(KxY6CT#eJ-Xg>TAf5H_Mpe!S5NJd9q zSya}r-D-rU@`D=*ubF$+$Uj;rAq^xJhzF6q0(mGZ*~cf(sNj!>w;JGH2&z#O6)aRB z3%VJR%J4u;z6?N%MZ;{c@MmQi+XqpCsIaX>&|^q}!QM8Aw}dx5^O9*S&;%V(??kJT zs9<2HG;25hRfYd}Q}8@5=9K}@b&t_R?v#GUO@k7XWJ>(e=Y$CA*EI!Xs^&t&{!peD z91(6~S66MXoCg04^#s~1F$6p?ml`z^;Qg#VTS#uOV#)}r{&|rXv<#JbuIKjD=2bEso1T+gjkkx#>{ryh1CCK_pY6` zG?=I=?2l~t=AE?cde9*fkBQ|0({z>#qf*O+F1QUj^>#20zDFBKL*e&gT3%lBml@Xs zl0$TI?Xw;^-i!A>vx9|y<^mz<5cer|rq2DpW-#=NG*1r}N1N5`#H{|2HF{!lvLEi} z$@`zdQq|tiXw776%d>z|jydnJ8__@-fT8-ajxY37td5!4-Ddv6 zsOFc->~}NbsSFUIEs#?Zr!Bo~V2~Zk>tM(wpjRF7OFhi(<6zC&g-@7;YM4lr6KIih zb9s67>P49FMH5)TB=R2S4){Ej#QM{$HbInJ@oK^M3i|8;h5O;q=(R?|sPIcg+g7vb zSL1`=p!h{0Z$CEyIIwAS`(w`vLge&U^3h^Kevu$49e=9)vq3T8b>I+bon&8wm9La4f@0va><)(R%r~Jjf1*-u!PJ|OvVhJwWf`G-mzfM5+-5D%ami(B{(ea z%6}1UXTE1-v%dcO_wVMWPLqU2L1`)d!|N@U%~@eNmbLM+FPIuRq4qGG+KSb|^Gw-^JT(y&&S%57qys8{@Y zD(7i?6mQf3R&q=l8XDs*dPpvMaL6i}wA5;dR3~vrN5|BoaM=>vh>yxR;L)RDN5#$% zL;zXG;$rb$(e3>^8|9TWn1cD-ck~>MM@GcQJyB<;mxRsVcGF~=4f?H&#%iGE@+_Ee zoT#V`q4YB_Vnj&a64RuujPA_=-V#~>;@d*R`+51V={ZZ9B%KM#hbh7u8$ecH)9k>(E4tAM_GL zy2GT9W)~8FKXSQ7I8#b}kAU<`F){Aa`uZD{Hmc|7OddBVJ3WpWtkr?9zatq!QSfNK zJ$=GB|EA&2BADllCkE|_xgLqzh~YCMZl)7>ki;I@4+@Zh?Y0I%^m$?-|dOMyI@F znzzUAGl`yP9j;X&Qgg35YY&23$M-8~tGBB!6({Zrjf5|g=iZ;q2x7lm7(hhd-*zd* z|k{i&!{?*@=&!$9S+-uw>}54hp0kO}#p%0|TEDTpB2|$0!ZULn-emeKRjd z8Dr9dBYh_3zlX=Kr*PPI6+ic_!KWO``j2^MUJLMYM@Cq&&An(U*4CqjUr_ZcP}!&s zYqm_*9i(f9y6J1beI*s7#!-deH!`?g{CYz}K(1om4=dg~V5U6urGPo@o5W=P<3MX*_#k8wZ7>fE)Zq zJx1!#)A%T8!Q31>ikQyjoDfSf2{W#6x!NcY+`brA0P0knb=nrO+yG}CUW%5~MWh0@ zh$o~Q5rXMtX}2-v_`?Oa91|0>-NjU+%$8S`Z}?qP4UUnsv9MJ>+I#HB*ilMCUf+MX z{k^MoxpBOG-&52-z-?Pg6Q``(N}nv0iWb~)cs=&4#w5i=L*x95He#Da0NuHUFp&d- zUqKl-@E(02k~GCs_4yc4($gB9B}exM=W=IRs-hgfS!|>JVs)Aw_m-_a z#l=0;S{`Z5v0R30>S%v#CHxxzdZz;D1HHL`Mn7Hj)HrMbYH-@nXyzz8E56$+l_VVc z9t-#-LIHA-nIAlmz0!azHx-62`DL{8u%PE_1OmB@0r&Z;@QFNj|3AumV-cASDWZ>#qnPHoT`TZ_*}2UGM*9{w=5( z>FO^1@RcuDgu<;+#9XNrz%#e#Qc`Ab?Dc9lbaOwwSL(AMTxp5{3K4-y)9NR$iD>znoL4YJM%is>A{|)lXYHxH%LUtD_6=E232GHRW7)=5|Y~f{PF>&$LVSS;eqy0kD zkd3{|_km19RPesw2kCac^|B7#(@CNHkJYgm;~RxPB{<71ikf}k)`4a6=p&Awu`L~e&c%ef*D+E9fT4EGY?6QuWjYgx<0kkf1hIwIRj5+;^j2!Xs$@4SKb>E48wW1zAeSMA z+^Sk4Z$D$SGnyNDbhKiB^0HJ&y*}GHj_>`MZXNC41O(Qqixpbkz`)Yc7#lU)o*>zIr5^97=OBOXIif#nWv_E$h3}r^4 zX6q>I;}Ni=p-rO1KyH|;9^30OXd4=OeXFS=YFQAJM`xmMKY4yHhKsE?=_ax(o@=H< zcC=`#k^70yftz1{uhlga1_4h)E*yHx!x9M#gThk?Ao$2LTW65JgPa>3@l+`zg}ugC zDHH)XT*Mr=@(+CjzjImSG$` z!Z?L0KKFaT-3sh+g%=#|Pfvf&x5&U7$Ht3{j*Xa41F~SDO!S7DkVbi5Svb|brm%XW zbECV4lW#`oA?NqZW$ExjWi~-rCNYbCN-4}$fFg%oIhdA z8`KjW+iGz3%Fh8~>aqA53PG9{P~>)@=KT0abzlF>o4WGsML**y7R4luA?YS@H+2t5q@DzGic>{@zW z7KG`cnYL#;VLI?0IyoC`V*{px_Hr!eSmdBmnyMLP@^_F{$-H2!{g|;?Zmi%zuY7~^ zUhVo2&_>m7SjvWKQtZp?u>i}nA^XO4rJuq7**0 z>E51;GF|?UOI~(jg&c-qUJ~zNAyg+Nm4<}_&!4Xj=`a;=>X`KFdTwzMm!#Z$xIZNC z8s4E(wt(T}YAg%~{;-qE&vRinJ(B#Ys%7THzJRQ;t<`_wA`u;3rR80iN~-S#tz94I zcdvzwt-Fn_iLVAE&?_t~G;tZC4W7UuN-^3ladRSUO%xM&H4(@x5;gF94Z*l+aZGxH zSUPwL7i*q*vOJ_dFHCTfPziR#Ssc57O-!zFH4sH6KeaWRUc;nw3TC`$43zRftHO2j zy;mwPw*$jA66CXF?#wp-+dEm~>-CEKCA9*@6w!VzBPb@a3aJnhyz4H&^Dx2v z?fup4us8^lGNzWI|C_5jD9Gt!|AB~1^O>+Qs$y1mO^(cXsO58B?<32#l}loc1D>JT zpN7-6aHwn4W(K}bN=^`a`C);tC1kO-`KKvIBO)3r`Rij7?0{&xZ&TY&>kckwTFdl& zEQfyC0TOM}eBqK4ueFqw=kEK#b*q#N_@PwKO4-J$$Bt-WJ2a4eJcvU?A{vZ%jM9Bn zL86o3ae)LhTBz^jS;Mcs$8bC$0A8n#q2Moq=x-<*4sS0D8!f@z_saFbt{ZZP!eHVIRKnvzOPaDB^I!4_}& z>qO`PXWL%tN`zIwm*4K!zQufp!-)-6$?dP}KCS#IM;R2LjnAo{m`I$WC@#giAdQQN znN9X#^ZPX_cs3s~BfkNf<_Uc>#l&+<4LXv+;1}?)@s3U>>I|(chla ztn<8y6dF@))xprR4)mzv)ia@c%IpTYo_}sU$<<*ac$$?q-`Pe)!6#KP66&<`qGAo( zpAeZ?Z@XG%e@<0L~eFjV)vS>Ozov&Tl-)m4=^I2&yAM<8!bwm z@h*3V?U-VY&A$Fv@HfqEYsEgSFT^(Zi=>wbn*b<%_Qh7W45w$xK1sR?F84DdckPZqCGm;_Dm#9Nb{-qxeA6f;k znbqWEyO@sSA_`?WQ|{!y@S_5vS3M)hY`}v9AScfSV9z}6YR=4(+c}Y?HJWR`ePs9Xx(00n*K$HP^F(1ngKJX|pu2jx$*klGzLs{I#%mMaTTG08 z11lwE6m(7KS=#Q}?ksOlj*`_UnwMo3OLgd>8>02I-nMR z0Hd>*Zu?aD=2j{=TiEO|6knvN4hNm*{4M5UO-YN&LGCh;;YAG3Z=Lgyvo9{4eZ|R* zt_Dt{TGG4mCxCuoWBoQ3=~8T<&_DQQVs0+bXWx>x%`39B>k(|^BbftDwQe_H?4h>>RSzkmY9_KyBRl#IE5R#92k zwIO%zmKNK}5Cxp5<>sMbv@nN%1sj>bFhIG3JQaFE%%UcNE-Y9?3rl=`8I6nBrsY9_ z_+#R4XC>79p@X<$!TxeUf}#1on5|gp4M%VMHLiUb8S;Ly4f`6HV369F=yIXpXIM2_ zC(qjo=uVT8r&rvmTimd)4ojF|s_5F?^1b(a5|Hhw67*J9My6~wxv7|;7I8*ZT)JzE z&iJFXTimYJ2sMUSAPnj(hnCJQk^ZCN*Yvx|O}0Pr=hSk3w@#>(j$>O0dxsY=$9k|F z_6|Q_#?SB&@2fn>J^QKERo$T^*fxrTlirLfW)=tHSQr?;PDbc8a%H@YeLWo@yHy*z zH8ThH&!sf)-q5yqDF%FVFDoo@5p)}>!|kHFsM2{g#CAI$#x7iTeVuATRKTj?seONc zzuf4#PhV7O{kQ(Vv8^BwBVkzSBCO5+_3jvflL{Uj&p$A$odK}LF;#;RPw;;Y-So^(rF4fW#f!N1Pi zWXM9`eVUEdtjM}Rh)&P^f|^irg7%d^Xki@75TCbcxtx?W^*FX%62x&Wto=Q|jOS={ z;8!0PY9y0qVX<{8aAkqMP_0^02?>+4d%y5u-JMx~dpvO8Iow&! zXv6$lDj|}~2;6c=`46Q$089d?VS)UAWH1+1cfq{+R|FdV@R2|iD5z#+@9t$^Sy*e| zv3MTLEK>eQ^)u*!E=r#qgO(QwWHihTd*U7Jzc$-;SjLn4$m`_nK5+paQ@{SAEcq54 zmwV}tYjgB@w|$%bjps6>Zdxndov7_Om0aJ#TFVQ`xEi~sNU5lrO?NLczg83=X9Umo zBT@$r>(C)OL9sN?xu)b|U@0jW=`UZjadCA@qaZ@n?zE;ThC)i!$UQ=LHZXn8A|BElF{ zHj#MWJ2^d?j3@I~@Cey)Rf=X}UHTzzUM}Tm5}n2#aeO{W%X!(_W<p_5t5neW**wiPsRoFZv9j(z&LRMZtyWrY4H6?!=M9RFw@#3ZZNVr!9XdmZo z2U*f~P-4^!A9%oq*U3L8mKHpBX*-(pE24U+^6qI7k2G#>VdoJ#&~k$7@(jlU>!^8I zgWEb{_tRe!b?5%daq+-eR|OZ&)&JoC1S-#c)8)~kxJEAd53r0+(h6pH{HSa{Ho$<_ zaX=1(3UsJQ2hn53t-(x(F{FiR8V3Y$w)2*=)Sv`v_wt9;8lI8_x>7nOD-sa5BFJbc z;Dk5kGV)xPdc0-V>8InX1zA`HbZ^6lLNo$leJ}H8U=@|^El?81K*X)OQDLBIh-xcVjDO@!XpSHHST zmBrlFyvo1!9k2ARg)XXO)`vYI{)N)Sz95X+0+~ zbo2{j0w4VYeqh%)cimuEtAnxP4%b5_F|$qm)Pd2BVwthu-%F8SgZyz~f7$f@PQ*Rb zN$cR#M>Q`-9i(=JQt^GYOp!MmUG8(iS;F&OFsNAmB5pxGc}vhbdVPP81Rx9D+EHRk z8Z-lg7hW{9R4u$w_5FHwrHJ zMLkD*2hzRrp9+jyO-rttCv;PTlzqkn7d&EMD9J+hotCU8IMIhtaA9;p@UZUTg&L5e z*mf7q$xoHd#yjv_cT&4*5Wa06dnS?AwSx!>-bCA@asQXQ+u}Tqj*K?`lHhW%K{zIM zrI&PZKax{Tc*{I&)wi82G>e7a$-vj4a@`o^qWMI>!tc+*UAW!vpOYhJ_(QjsYpKPq z4mn||W~=yo7o#}d`Ugu`bKVP@C3Hs`M{jA!#iD-qimq4j&1$wI zl7QH=sFc!(CeOuDdi>dHu&p);arE5vdb6!YNF#dQQLyjJ@vBtdh>`|UL)H49>x}=- z?(VMfr^E|uatlOW_Zx$&W)k@eF=7gmdIL6gB4(T87Xqv%AXDuQs1O)m)DJGe(s!fm zbRQc0srw?J()aM*3XGrFxW;o|ef8ltR@ZG@ctLEbZkTj% z&XPCxRaB5K z4c4sH@kc1q<*RYdQ?>4R%~^GpMnVsFK&DF;O;6Y5FJvWfiXKnjY&udd z_&b#7t=%e`U~s%kB51++&Em`Lt&`6I|HU`U_ogH5)oS*$pHJ2rRA#ZvbeK1=!avw| zI96}mi5vKS;ul1*5Gq|SU&~g!dpsjHyZC6oA{S`QwaCY~s#U+U?#XartMlhV@uoae z<8N+$_%$Zp+@dG@-;=bd?S22v`>&ze`;WLP66nn05SpG7d(U$iFv)EHug5BTl>JXG z=e^4{yR zSqw7$IPqh$ef{2D^wX|7Ksb?M=+typ)h3~ql$#K1%ka)c)l#z8x?5}wmhc#Z+lI0?DV|x>uahpDm zHGcmdz#eKV<7$UuUbmXU7hnCo24e5{`R!%|fBI{lJT|u&y?=8W7xh5*7E)D}G&_y41i=yV&c zdz6OF8DxnWJ6{ExdAL^Ci74tV+#1R?yT~a=lARhakcPXefv(i9fu;m17IS~$CszF5VOK#QhQH)w{bUoh3Q;*N`Y>}Z}t9>`E_%*p@D4@l@9t7=*Is3 z{`cz^y!_c-dw!l?=Jm58=f7@V(Y0Q`bz9#VFLd-G*XFI+mHb!CGdOrAGS*gktN3!? z@c0FbOTV!}dbK?fQJ48i_`^Bbsh&&(@p_Giou1h)e9({Dso+~ZiprU;8yB!n?UO$R z%vEr3yQbc9))0d0+xkC5+Ba&7`3s0%ehGZ}q8c2$d&i2<<<q@=UFrkcp8o&7`e<-hf?sVU--Nm$r^?s5QQioYazCGsQvP~ z?e6*$@>ne2lqw3K9Clrm>m;!j#4gboI}86l;lC23@~9-o}cvrZ-X{8J^{*^R)@(`{$PK%}=WlI~sI zYQt=ACg0W7)&%ne6jmHgx$cJJeykqCIWI#UOwvo z2($~GJA7ng+rjppW;?6$%Wi{}TqESIl6XS^9~YO&%)NXZaHtfqZ3+C*giN$DxPu`s zS$Gek8Cf?xC~9td-=!*(UQLAPE-(L=PCzf@|J%;tn(9dmos~JF@`u0=6hsaH`W4I` z!AKOn5ZedT0gaXQcfx}8%=CY1{H%=Na7sLPvT`FCZ%qT|DxEoM#PRVtRQ7{RmxY7R zPSK(CCLU@UMN9BX?APpLLcF)NQf^-Ct-;K%uP9d20N7F$_tipmaiI>4ETh6LQTt@P!sf7XKKml>Wo)Wu!`#EVy5_e+?4IV%kQ(kM`dfT(V-*??Tm&Y_)eY1ajdYXP%MXqsp5S*EXa1C1-6xFp<@^Df7DEwJ8{dQ$h zNdWyioindD#=rnXcslJdSH2PYVW9z%VO=aGVimqX(ck8tTmo1A-frbA&>)1R@o!4gdvE-S+v{vnhl^h1~<9)8?3F*#j5JB;nUrjx=}LmOgA zCb2aj|7wPuS#e^Xys_&d{>SU>EUKNthu`hZeYDRKcWI}ReF1xdDJRpF5xC!y)A&r} z#WVINTyT7vO-FzNbZS*lzthqh90vWBb8_-GP4J%{O=YRltFja^)lrF&pj}ZQPY5&e zTXiiRZqdO}`hL&g-Q!@Zt1GZK!MHFOsjtwkZZf@x>4aHj)-~oiQW78djMZ8D)%E#W ztM7lzU@dlT3HoI0<;-EXzVpudKH5uFJRZaLXGm~x9trUj-JhRU0iD|!x#{lsr2(s3 zG`GXZtNO**5fK;pa45?ES~reQ%r{e)_0V9is|ChKg^!1mONDK&N5FiD@FK8Hn^?-d zc?fl#3K$Og2Sd6R9FLeAxl+6+`q`YS<8VDwbQ|eNCzx>FH;?t&v1GRH>vIR~l_F%t zNA~-B)PxrQwV{}+b#}$1LJK|A`vND|SAS}K(r`z$j7jWD{fcwBPSx@lI=cc5HFD`b z;b3E{%vJH$7a=NELX(rr_^WAQ-9{jk0)5(|)E~k(0an)44;9}Fj_D2lG#Goh;oT1Z z89N?7Q5^U}@GVQA)@P_8@#;>E?VJKSu}}+^^-eD&MbA z{3oF@Hm>F;%*w{oH8n-Jq|nqIkb;ve9~vrO5@!1A>Wk%Z4x{y*UcGGG=j18Bl7fYc z>+a;?@}JYb#y0L355>)9N3$qGT&LYLytj832MP2wo^kic8Q!zzX9iQP+UfQWT5qhc z->FJo_l!ebv;TN5^)CIzPd@=!ahH#c#$hD*OC!W89@JIbE$%eWEq8B*+$T4et7{65 z>;I&MS+SoF(Zg-vcM4IzubsCVw&8~lhH6vDDD=BkV_ND|KWodsW0xbD^?ykMv!XWX z?=UikRgLf4dy!`ky9W@ToZpkzMUf|edO(bUb#bUvq~GXq_w@F(aTM$yRmzx_k;LFF z-Sm=`>q$)!&#HJ>hIZk=oAW#S^rO z^Ri{ziD1s7hH&_m1XLzCZocZL$3sC&&bfTo*Wa8pYQpDN!Ynw~6+ zz6C|s#FN#qz2Y-JTjoC(I`n`hh!d!2pA=j!%gc-Nec%f^;1l3PFPBq*7ogMN=rqpw zQYJiH{#nOV literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/spine/fenrir.skel b/tests/cpp-tests/Resources/spine/fenrir.skel new file mode 100644 index 0000000000000000000000000000000000000000..24acd09165f9b476ca19ac6cea0eb27525031ad0 GIT binary patch literal 175486 zcmcG%2V4}#8$Y~v2Z9I)3MfrLx+v{L>doBFs$f@as6+(?yMkS@pax^dnkX788e6a{ z#>VYwjEN-CXi#GkiLphJpRu6P7~k*g-Ki1&@0<7Yd0*DuY0u2gJoC)cX7=<7Yu#;X zJ25gVExUWx_?*-sV%zwZtwzRo8=D+yqYaM>kB>iFZ@j?o)4`d9a~hbV~eVFY*Dq2EvnYBMb$dCs9MJs zRqNQIY8_j2tz(O>b!^eKjxD;@u|?N9w&+^N7G3MuqH7&nbgg5Hu61nMTF0iXb!^&N z$EK}yY}#7Krmb~s+FHk^jkOt?F>I{wc7G1Gdp1xzz zk&L(EnT~JrGkwRQ4q$!9@jB?Z^7I`#VJvU|^%!c4X1)P~>+?px8pZ*m9Qj8(>K z4)9t&?6KxyzmC|98=5hA%p}`!BZiF~@0)23v#rNx3>&E#7gcXi#^@;+Sj4y}&A8}) zrL=ESTFtnYZ&EEa<6_>VVl?Agy-Bs=FBmy8BGMd2nZsyvs5OTz&0&l=wA70=r{m0F zd|gv}QIVENlqC{viD)g6mX=72CDO_giM2%HED=k~(UGIA$Br2@UU=(|<_iM9|NXai z?b=s$roM)a-L$k)X;Vg=!;y5cWQu-7Np)t;RK)mONvwnxNmT@C;klX}1%bJ9o8sb^OM6+h^6~9ZWUs z-!P5ny7HtK_Utd~(i8p=uQL=S*Br^BQNHiKWKgt&JntVBTQtgx7uD$3 zd?#kA@&;XlZRL{O@7P}h$IFr3oodwB)jiC%XtX;Q+Mhu?*lv|Ex)@OBoq6zwd&->iY9phktgUbdzRCMMm06`T!|_MGi; zYR$nKy^%U~Icotn5#RRwy~e{g#nv`%ns-~~fcy`{XX2VJWa}3tv}B!d(tdBvrd4Zx zGeN&$w;8U6xIDG^>~CMmVf?r6wlAe61ixD&(^Y@T*~c*Bn|%4R8%t}{NM1VX-5P^j z^%ov)WD7`~(KY>_8a2jGF{A%YuLips#2;s{U+8vY`;Iqi)EGWss_7kyOx748o@Yrp z6Yie+Xj;uN+b>Nq!J34g2U|C{O0p>&DlhzM^1BVQ>mRo=0Rx?odeNR@laXtY8^UvI zK)(b_r_W7Xzg;BmfkyC)l1(a`tR^`!Dc#KRLc>M>Z_}SGmWXjWxhqwOC*RuWQ14RHPr<_R%EPd$un-ceZg2_^yTE zO&swS_$XgiC+7xRG@+W6FV3$4zx+s%3Erf9d9eE=Kx*2n%Gg46y#{dqjh=#_$Z|!+ z^e|YT3X>ATdl*y3&3zYGTwSlg49wNmXb*Yq@Jo{YxGTowUd!JFWGKW*u#~cw|IA z8+AUX);hu$qfK@Af}N73ZN@t)e%4e^f@;b|US=A#MXB{*pG|UQ_ZI2pF~8LmB^3*9 z0KUb@R}Km{P&8%VOi%WG>@GI@;XD?$Jg3IM7mt5}4&mRwwP;UvY<*)k_2Ypob9ha% z+ho^S5Z*(jx76?qPj*Wk$Sw`o$gIk4y!#&U%3g!%JrQHS3xw7@Rum-vyU6 z8Sk6GA>x$Th>qd7Fy+@|5o}NMz5j;SDvZ&TUkiMM1s+NeZ{NdMSIA)hynn;!)z;1&*(# zv`mzV+fcUd$18H`=KLCUx{c4SSto|*Pqo^~x{c3?%dh1 zO$dyh+NyuIX=zjEbQ3W61Rr7>_TdOE&n+#hrRlRp``(7uww32P{=m)_?T_17 z6IyCCTQ)&kkL5!&+KaD@YrosUyynzUFgP6lQ}i|Tqh*TWeqdE8a`;`N*Y0(Q37T7t zFmtoj#wc4Gd4254vU9CcYJj_(7tu8Saa)jsN4MwIB_+RR^X&7i-T#KyDwc*RzZUqm z7I+g9W7;s6%863I#xK~shNIu@4O=?^iXiU|SOSI`qnDe^IV0KJduTW{9e$=TZKE#Q{ju$8_&c4|99x~^}!P2aOj7^O!-QbHRT9UECj95vvb%W0^|AVQ`$uByE&2_wHY&831 zZSv9t%7LM4LteszGd8Q4cxv5okJJmH%Y)ys0u69s5sK&l^{xhrD_0&+O>HrAD_iOW(znWc6wrNAIgwinCBH zf7j8`VBe+8kny)(pDzgf{`a3rdxSeN`ac5K%gWBq8Z`d3@96N{%169OYQAeWuO2su zXO@<>iQwV8edc*4f`AimFptL-UHgoO|96nl{~1#IpCMcRXULfU4B6^GLfT9nIw52D zFa=X>T)!FL#!)5zpT}QEaV09i(h})Nn|4oH>#K$~<~K*&n?F9iwx*_||6|*Un1-x& z2VTv3g}=_R_-7NORn@*Ze~48 zE_*9Cqpl@avYnADOsmW&L+EW|TkSIV+vWw*CL zWeb+=f;dYS5#HWs$ZTQBkLRxhNA|X4P~i<@7--2%6citchb0{+m^nXp;lIx9#d`~R z5NQGHsWd(%E6kFi|5q=v6D|1(g2e!dv1D}-%sVDNmYi7O-`0@UQqY~(R-{UlC98+h zm5i~TmW-|fSR{wx8x@(+mh9BGvol&+vbzayEF4Q-7oKO@HfdnV8)U%)mw>%3xz0S- zG}XQnoGrPXc&@3wZ}h)gFvE_24cn1-AGr-Jl{*N~mbj#Hwd4%sbF9d&es8i&i+H5Z zt4bwrI)9~EU=4P+fc58Nw&X?+c$57Gcu-?YZu(omgQEMt$$kTz*~pUH_buSe==a`a zzX8s0v*f0|1)LF`{w7{}$%+OIKvOG<_M{TjZQAy-w8C2#gajv*lc0teef6p(X}oDY&(jS*H-gwL@zr(9 z_8>EM@7Bes&yk~9>vX-QJg1HmPwQ6yZx@aGz)|;Gixk><>>*u?9~#j~-FK3fOU}}~ z9hb@a?*{X?kbi8}^N?DnZ=?e@S<@y@N6>-Hmd31!r31h1OS|6ujrKX1PRG2QLz(Ib z9Y6Xeb-Fx~PJir4h3|9djOUJ|d_ilatu;fo)8Y4alIV(|l>OdAH{=f|+VIH%-d|G1 z{FQL;>KjTp?H>GScyIj4j^xOKugSizrqNK_JhI$t19|`SdfMs>9c}q_75QxA5^^p0 z8tvBSW9n*?PSrbpCW+4nQ&+)@y5DO{z5Pa$FM6yYbB=vQd&f4V5kX@}vO@`p(S*=? zg%il5JCCS#$Q+t|EQfqo?LnRoOCviTj3ze@r_wrgJW0{QTe>p?4wIm9ZOHkpZZ!UL zcdAZ#LCR;fr)dkDk>PGLXwp(&nl>kitk_eRI@6J~b^g~R;luZIF9Um%rwupKb_va? zXT68CgNyC2DxsO+E;JUn=hGceccl3=MhU(`Bf(7w!0n2stKfnhp7ugnGa&*o7d%~r zhJb5^7Cex{b3*{v6rl&6Aqdrg=XF4bLKvQ2f(Fkp)bd3=U!uJVTHU1XL5j3T=ns8HThI;G6{?zy%}jgQp*0 zo8sA2sp|=tP~1&~AcTH`H}2+mHV15d+)jw|SR~5*@Z=DVxa$iJf)*i9IS8Jp8zflc zoq<9)!a(GN;~9Et@wy5DR*x+d^)J3cXLVv{U5UYocAU7?YU%#AY$>}mHPL!s zfktX@vqIXnrGn0!+8IS>y>q33>7hw`Dz9nSuI<&*N8PIE)cikDw0UKo1ox5d*mzfs z__<4-G)I*}hc26rqIMZ6QtK}1ZZdQW6KIVmQ~=BwCh~5N-a+esg?pO6}E!Zgpg{s z{X!M*JyPRCs`W|d%S~gETNS3uS9G~_#>%!Dqf?VoV|#0##6#CVNBgeHCGyXBb>F{( zH1a~N))?5ol(^I%f}+TfYGc^;Y8t$MmqxC4zTDWWOdxxUcA_Y`GQ~J>do_7{e7L4; zfiBlLt7RUw-t-lU*7#Q#m;5iC9Q(RJ!^FaL=O6MncW)cspk+ATB}u%sFA*ODwgWMP917m zC?#()p<5$uY?&wJ+g6()mwcQneN?7c4S4sds&Zpej4`p&`-DdNV1-tGe`+P2p*y2e zOFr4zVnlkVX%_YOhxi9vo%t{d=d*lne5VuT(%W`obmW$6io&~<}58Hc9A_bQc^;tvGwyx`rf$v z7}}D~F6`n0o%zja+p^_nb~+NjsJ1Dg zO%^+A^qLAgV?&obBH#K6wH`04lDxwT;^%c;r;*xR%99GWWz(5|RHN2GEWpheW*h%% zjoj#df&5EcDjAUzgrZX;3XGm%1=MYRQ;oh!X{s?IUmzEMKjx7jVBEN@aMe-Rnk|@_ z9ax<`*s3F#uM?Pk1Be$F2ptay04@TWKrC?K!o^Dfm}U@Ie+a}!GcfJuV4&e(w2@$* zP;OAGu_Bb*gu%G7aW!u3RwlIe%NKl9v3NDtPbPBwzrM#9E-Uc?b9O3Wmo_t$klJ*o zQ|JFfgHGns2@PLR#|edW^sHp^_xy)+$R8`n^^nhLwyu&K*wc;UPqE~$O(Epil6BPnQ3yHsAc*>G@*w*T^rNvY-Y5Gyl+lha zGRWbehjj4MG35Bh`E=5e@5$LG-T0i6GyhAaqYKB8FTb2a2XqW3m-27X)NMP-t$Y`y z-qXYOJfv#h3$)X8`{u_8#@9d_u?CFQEPz3+SYjC>lO{E}g*!(YUyK3QZ;Mm_;WJy+`A>%%&q|{Y7J) zy3>qB{xtHDhW4`Rtfc!TZl`42Nt*RwGi}>v9Uap)j<$^#=zu;qX!mbM(h&FR+~KiYuZ-ok^QcKT4Z@a+NyUyVANNi^;~8zmps5 z2GWS~GCI2G8%mN#(l+;gB=<-CN(U^`lb8D*kf-`y)OSKSbzB`tp6;$gJ=Y4fYquP7 z;`Aj_67d`L(hneabK8=O)BmPc`$}o>7dL72v!Cejwbrz;VG(WnkWjYp8Wld=M}^3P zbl{e5G~v4}+Wp}Q+Hw3R#Tuc%APK{T)_C?8+92#NjKrOTIFF?wHV9!3V(o;s$W6wx zozNb!kqFx$)&ciOp(8>L-x1FgK(!M(A)bn7s?ZJ3ZbDa~Gs3Py7ld8GK*r#`@z|%z z#=DvF%tlVOkbqnfA;U8PVIrQQphqYQNqFkv-%G+%hbP683Iwdo8!XKSA%A*7_wz;Q z305}>F%R6HLIy&2Ayd)Av%t(6K|AK!cqSO5GvW=9YN%-DZir`^bw)dAj`bAX)DF6; zBbe$?Fw^?b5{D_z`p6lElr5gN&?$!^cbJfi+Xi}b2pDN7!e)4K&ASECAz-X6lxGOE z=m?~O!DfTOez~R|3Ee&j8ZXzAqoAz@D4J~`!f4!Du3C41^;PW+8Vp;07ZcisxvA!P}FeL z>W^z2%5xP>d=T=73IlKt!;@ohkdhvcR4#P=A<8os!fiZaLvV2`VJx5q2orFRN1Vro zAXg)F2h|NiPIo-}qHG9C#v|4XIb-o0i*&ls5Ba@>9?0vBZ~~qa0Mi$_{ZKkYv8>YZ z?19pr$l*3u8ld{(*;nX;J@a(ryoXy*seI&#(B*!GQ2>UBRL7iRvA0>X^O2iQtvvOe zNp6Vu26MI_K?g%%7Zk z+UfxZ1Ki}w6nXXfQr(3kjWj;24vc_FfD1pD?r+T8UVU2gYn}NZu!M<#P*k z3BRo$<133=t&Hv1#15eY0@w%7E5*4}D|MR=eGw>Hoi7)^e`2J=9`6s5KL9c>FVH2r zc+Ex&4cC{-YwD-#X6&8dE5`#bQ*^nyc?(hkSZH#IxF6boTtsA`0h*>b3!3EBuWf?l zPoW3z%Sh41?|NkABgNQ23(OaED^I8R8dd>gTcDhezoZUev!_<|hw8(T7tj6DN3l=`RODIsRm&Le4?r zPg^QP7$CH(I6qjKF92yneA`*2bSuG zn-ppZVlA~=)+;@fY$q&O4nS8I>2gWulQ+;p*q{n|UbqWcG5?UCejJEpKH!>rEc7>g zJGIidV1=^EgV?|)M)py5Hfg+KLa^ZyR%i;Q=1ZRrXrU8G2fKRuqEB9SVcxkQps^Kxa_iAXxIkYOPklt%2&!hWR&x}RV6g87vNtu z5ax0JAe`9{gdle4b~bzZpg10;ZLl~=t1bHn%XQ|N-Kt<_U*b~sA@GVxQ~QfAbBc|f zO|J@Oy-{@2Z080u4@|%~EHDn}$4ao~yP&r{?7s*WS7Qn61!l*dYKfvX-Kyk>(o{0H zXL_*yl$}oe7~Cc4a;nCUeOuxpTVZAQi%Rl0l){{EHoK7bFj$-q(@F;ovSFf=m7gS} zhZ@!wrqij_`lg0uTCL&3%9JF{uR;C>%(}6DdZ?+A47+m$CXp;Oppq-dF91z^+xSjX zeHJhi47S_o;Vpl|4PCDMAlyZ%#DpfL>{LcdET|8aqH~JNMwg~0fZ&=k^%G;+Uhd90 zImzE}0;}!N0cGBTdDqy(`U*c*HD$Abn2kVtK2Xt=mEA8e)CUilekIcXlrE>(@O)}z zQr*XPD7uRjx=v0m6a2-I;5AdgxP6c0qv#=0PfA>LuCW{a#p{LXhM`zF6L-%=(Pdz% z4*ImxYqr1mO^J))F7MN!hiX45$GOUIr8Jd~#9!QuVFjC}PUX+QJY_prvFH?1UBE;8 z;AKc@{G?UaLuHj627ziUp<9)xhoC`Gu+*r;MM`>J$xAp~c6OOgHd;OMtaSpH+&jO>j*m+o_fMwFN$8%)F!ir{uzPF%s5uYwwG}4CE&oyaq(wQJ0(4qqz>mS_H{`8&o}b$FLB2KA7O&=gW21RzaLw%K*#2R5iI%hpAf^Jpqb+sew^=_P6MEGaeT?pi+p}uIL#KqXbSs~&OF)+D=g=2s%rk@IB zJ0V-)X(OE?hoc1tv~UwCP5wMTLr`HlyA4qto^sFM*nUyDabTPYnfeQ8VGh{J`A^eA z*=z{Bhj73BaP}z#&)@aaS*4v$_w0=1XZRW{;x@d$H$VBo-`F)S)i`>pvaCY%>)`d; zlrNC%5nDr97a;F2km4IY4=wz1zkvNR!KfP^*2qt8T$#e|K@xiAJ@hyB8dPDNGQo)T zCWPoeNe^Y8fmy6s*)Nm@Lya1T`RsQbqKj372fp;LNDMvx($8=mu3yz?m-z3WwDITM z-#GkbuF`_|A^Nbrw_RfXIE-R2=)(;XU`E0W;K3T6G5ZNd&Jg_!v(J}Hjzg=^z3s}1!BCJNJE)VNVQmEa$2i>B)1r&jH;>v}AzA(LN0l|7m- zu#pCJ=xgYNsd_oVnDD!9Zm2u}=$wP@4*LB$;J!VeWnV4O5r-w`e9JZg?k>a? zv@f&=vg!d5+IRX+z&(TLISUv5VmGa?7zfnA6wtM-Y!WK#pjp%dD+>?047e-TL)odb zCA41Sp1x(X))cX8rKvifRzaciP>@IhX!i2m<$(J%JDZ*I2dgmj^fequ(eK-_X+@xKy^Sw;jp)J|1u% z!fE_5(AjDHa$h+RjbDW-`_qhVq4EL16@bS}Ndtj0Uvzy5gv;2URH5?Ca2IwAiy+nK zk=jSU1#)~k<~Z+g+fZZOWmW9K0$tMl*p6x+3TeQiIIHdYAk^sjO**@|r6Os>>AGqk zaV5~{1zMQyP!eivZ0*Agf{>K7GDq!W=!selxcsYn6>4l|Q^Kn2r^m0Z7ohSnti`I( znD{>otu(yZ#-yLr@sawX_i}|@qRO+0FFSFzgiU}x_WPAcKY2VhOA5}GBn3X}1hxq# zw{%L8vPR@2lw99lts`IV4lQ$slBx#=AA4$nnLXGyS&CQ9RF(S5GXUqJ%jNoOsIei) z7#&IEvcN|Y!IZ(66F|7W;$fI1Ut^g`$G-~@XWHr5DbUj1JFkM|#bC)IY^g@`8esXf z*p#9_Yo|**ksa(OCKveVw*t3QuiJ&lXCdMKx27nm)%%M=nHqep?zZg2E{#=K_lrgp z$QmHpulrPg`8>8{_I5OxMdI%{#gfB=;v~0ap9IPFuq`&og`_mbEm(d5X>!O;myoU< zi@s`tvY9pX7Fy!sYrv)uYXK2d_n!~^jh*)v8&9Vx{4Z4g5*pGR(CHt`yKsX9!Y;DF zNB3lVnlEbvB#Vb;iAaC`wkSJQo^pDEMT++)u$_gwZaBXW)5>`}X+B z*g4?}S<->$qy6P|`GRqkNuLQK>mfVehe^XS&j-uf@&&m)7IQ}WCmcn$v)PX8p}HS( zC;Ex&Ft?vHDJ9+$ehD$`0DTDPgGZ~Ip=>p@`lVAVNxdgmG(KV;uxt(KF>PIEf8)HZ zKE|geUKSwlgAR~X;*ykB^&!UO6qkzc?*y9I`?fDvI1HG3ozDh!0N1ZsSJ+E^f>@CJ z3k(%EknExvA$;v!sFLG>*jWcc{f**BcE&&FDvUC~Fb^$2oKPAx5ytw0OrcgFJD&F+fFY6ebbNi z^*3rDmbZ$E9TXy8g53MNFg-rEc}S?-2Dk(=lInJBjp1SwgL&EMlBzE4^kd!-%Z_Lv zuJqdw`F)sxS3qH-4ts^N#Se<*r%;oZ49v%C10lmU04>q63w@b4Do1<_3NoyJ)+=F$+$IzrIs6_W(H_ zYL_bpxb*g3z#YXZ>;Mke+h)D5?198;m=BA$$f5E@Oig1DUxSEGF$_n)6!9D2D0b;b zeunvSp?DoVZ*oBiIaFM5zFhtWvSXRcQn1C?`vv+Js5CRRN2oDy zQwkdl2GnBL1{6UJV!>bqW4|S#MwN3FgU3ae`gc(O<8T_mq4Zz(Y%KdP|L^y1TEYd` z3RfJi1YAkD2rfM?hO0HMwzyJowa3*FS7*gV+Z9fPjRUfk)`7cQ@K#dS9j zPQFaV>1Wyx8Y&EhTW>hrza!!98x2Qa4%}>G;dUD@OvE)A*Hm27aLvG#k83ur_i@d| zH4oPUT#Ilm!L=0Ea$GBMeTZu{t|DCPaIMF+5!Ys1#kjWN+Ky`{uHCpwaP7slAJ;)# zhjEqS`V5!Q+Dk7;%WytJ6$kY5eXAxUr&Bgfxj>1*yBTdAahuwdr_%1a41r)@&C)FtpY+WS!ts(H_rhvf9hE7W)Qb6wDT0(o%| zA4EWxEE;i#hq`KAnr@{kKk4he`6Ss|IVefCv}mBf{PyQFo=-h@d+2^$oJiwr-yqO6yG;NFxuHQTq)? zsOtu2Dt2(9f$rh7RflUdF84eQ>sUNi;7(F&I8&_=YT!JtgPR|SP{UEK!Of4AXz=t# zTn#sHL+l*#KNmPVxf`@GZWlbctKD63p1UB{7;!H+qPa8PT?x5M+#4}l#hL612p726 z`SBNL+}!bQi&B2{qAo&LxZrs`cQ~Bg5pRTeBb0Gxw5#HFcZGZ15pjN4ghTUV9o&iU zfM-1gwh=-%^dv<{Xc z5~}8G9(-bx%_eno$=Oa<1{bDcM>S`^$EAw*OTTt1?XI3OuCT(Jr!& z$zBFz%I)m37^qSvNEh&@B__Wc#`+yhwODW=rHmV~hWaM02xV|a%Wft*R(XiGpyDiB zulNX%`VO-522@{Dy+sGK^6j`(^BYtNmGVAjd7s$EN51m9FB#WEjm~>5^(x$pj9#Br zn(KK_PBjKySIkTFItId?n0f}h{|OVRJ4P#Ty#JG(ZP*L_3JKuPVRoUh7jVmq#0mEc z%J>eysR(S}5{zqAaU34fD^YjZ%GRa`|3z zW%><{F=D(Qq=ZYS^`|3O6qBS+C(=H_DZ0I<2h#9h#rr}k`*uRt1k&-`RUYcjpS!9% zJ$Rau*V-I@vT3mHpg5AZt7|Eaq%NmE=jBwVUrU^FF3_fWClXlrl+ugO$dMo2Xse4d zG5%3WGZ!o(KdwBc^x;LxUUIYZ4Vu1`k>$@`k-VkH$ez_(X?XfEQgD73G5)oWEXr(7 z=AF7q)qgrr+m|1Zly(ByJh+m0&wET8kM|^x;{wUu%{^$dV~(Vr=bvQY`eW2}-YDI@ zFYG>0DT~%mS;BtGa^_DzEcp7ky}%Ue?Pllk>vU1y8<5$j{}em6!@oHCPEhndgdI zg^RNme)vI!T{O<3yz%6x<@kPIQ-x(UR(Ab3gX0GzI19B#SO)~+fzS%KHDca?_CaWc zCufHmgg9V|r$(h|!Op-=DbeL7?ix5EoHd3ix}jq^9dq?%gct)Oa7%iqZscPhz#WFt zRtR^8kE%3Wya;1#E)=1mJ5EHD;iMK@#R_%!XbEuJV2WlyuWAwaN4Pi~rf47Vp-z6U zA`Ba$LVplao%C>PG2jM4JE@PQNS^*0ZYY3S8miTj*|z;6QsbKA@~TkwNm25zM*WugwA$sbL; zOWlGoaGfA5^(o~8!{s>mMzBeh^mz{l^s1Z{$}#YsQ zVXhInzG2Sya#nqVx$+Y_^GZ6X*jWw?nE&vbvL zieL+#R~j~&d2j@42;A71ee4k|BBxk?%#;EG;G}0d?E87_Oblmm<}zz&xM2&eBSb4q ziw35{CkHnJ?kOu|i+bB7C~$*88yP_8kZElrMEKBIcR0!9yVC*p3p@n7<5J@{e=swg zb%DfM6_-lKdodo5fX0IzKT?95SVgCpcdaEV?m zaY?`tGgS+*S!wDi%q^c+3>gOv4REkgk4w!X%D#hkz8Q}1FMDrSwO}3O!m_()1Au70 z3LBjPnB}JEhIkL|?KMF5G?%RrvO~A3vg6ph*}Hy?Dnh@xF#S|-^M(Ux8D`@$AhC&+ zdw3a)8N4 zvjiyv->+E-g10KcEOEl9u&t}^&VhNU-!RH=5Ibu7MATLb28f!&odiI$jf5g4t_w_uk)V z%O84>4S^RZ&E7<#bH-5DNqebR+wWBbVfW7k}weQrbq>%4nNcFgg8GL(hPAfLj%xK zGlX1{^235nk>Zj`jT0prMOJAL3r5Tup%r3va9g9E57IVDIskQjApJO;Ep8h~MSf<* zbh6qG@wzG%5pn)lmP~>{oyagITv)ZzP6% zEUhw#xYV>RC~^j~RzvI4yKW?Mb2u{=<`k2eJ7%a8^~d0zF9M^P@l#JCuYjPzvChP$ zm$#`B4QG-|%04%Xq(sATu!0uwh~z_DC6=v(^Z93}m`JG;#R7P>u7N?%+}AHj_JyEq zkyD)Tal2H!x)FA_E}@S@r!G!1Yz7l{gk$V@*eXpT%ZD!}4zlJ;W78y23l7o}9K>z* zDqY!H$mAi|>zI?*9&iTuP69#1;qO%@F&`WQsKQWOr-bT6KO}C0XPy!t0`7m%1>i*I zdrV2(fh1mo)4}FWnNGX~xZY5sCrw|a(y=I{{J?hjNOY`CcJ`?Y@VJ;#)<8#rsZ5i^ z=0osog*+X!+E=Fsn>E~p$Zs1wjZhbiWIIj{kIg#(xM=L4Hvu-<&lYtC_$3Wbf#16Q zUJ(%+KdjIF0^OR#1gk{$IW}p3DNRlCZO}JK{1BBI!UnO4Sgn(zF<+V3z}x2VQoCz|l%1I!&=;(aG0>tN(Typ9VS0g6BB8oQ+!ZFcC<&2_%z%kz!?X@~4 zsq7{8KBuEkfg74*mdY>}a4aO8bof0`vnOZxf_T9yP^zg zj_!H?7%Wr1fq2%8s6@RNoZsJ?G#1R@Cvfe498#Sq7xyI00Sdt);CIH zXsrIDBYcSP|DW7^`&4sno-skvL$0C+ja7;02J;MdVB_u`Bwd!ib^=Mwkqt-QLb zBo6g{zMg$L*NoR`O( z$l_x-a|B7(IHI-gP*8{xmzJB(`^s4bJWZYK+;r~8(`e)aE8VhwPiSX-q>`VHvh42< zDji8VdXM&8c7-O}c+!MvuW0M)9@KsD6*|^$3b{KzjlMT(ANll-3(c*3MA}}7=XG>t zPD`6Xum}(;Dm?l5aqjWqrVTfHID^+fWN@Kih0q$e9m=egCpVHD0PhGGwPNULlxIB{ zI`BhOKChHtj4-h&4|WjeTdciI%Q=oYLDTPL@-C?37}wKNu%vP{$?=A}C_+Lv^Q+}3 z!s!V)0sOMqWox|H2kJKxw8fJWO`Oyis=hz```7Evif1jL5h6jyKKnVrP=&)iyabl}G*};aYLqxQp^TXl~Azw%pvrS5a*V#K3*9G{Y}x38&6r zxgkM)9510L0fb%wwv~HoU4j8y$2_4MTqgnjeSy99lh_l9`ut+NSOB#e3EF*0M-&}` zQyDu-bo?));tea|HAg}hbu~;C$7Z4V>kv7Z5+DwK5@QOpIAR)<3C4sj${`9Tt`fXC z<8SeA2v9=a{T9G-{@=2?EWTuXM8>dXB@GvZMk;EiK|3t`z6oI!3aeEpMO3QeIy zRB~*>5&Z`F$L6e7^^o;@pqtkyorOHd9WvdKwhTy zW??WC_k${u7T#|{F~8huBy;bEq6lWLp&a`>u9xmL5si>?D2{PD5@>>uh2U}=6Mj_6_4@+S~oU;c< zm1vnHK3wJQZ@n7MrXOgth+(wu_-E8gvzWS0*o4*u8uaszJmi0*g9Cm62;pNl#h=UT z@;~C!@ei^vx{oJNUk8(;LC6<6cM2RU z8?oi*$5@tGF|cJ3(8zX$D=$Ek+pzoG9fGCvqfU16`yI;-IPF4OM}MiZGt7fyWEm!( z_r#XrNGfY%YO*eO)7YWgPPi>TLnq|$?_^$224ZzyPnwnBC?#TTG!p~|6+8gK$q+=la?hi`O5 z(RmmR3qg9_%YSq%TLFz9v_(7E&sRCJV+XYS7^E^Mj%))E?_>6AIIvMz5o+u@PRRbo zQM?GJ!5(lLwyh&x-OwvkPBN?Vwvu&ZF;}*gMr@^Kqg})tlcEXia$IueZ^0lZWHm6( zvCA>f^#u!-?F1|KH@FPQpq{EVvR@N2S>ToeOg<(*4)7(fwAjYPhe8W~y@c>fUFQpb z&N+4# z46#v}V5l&$R#pA74e(rfo2{_=YzJ8WLoE8dJx)%BKcIn@b*oBR;QhC{KC6I?#lAkt zT^!_8rUyejjvh$sj;NfNZ-t#W*1YDO*nAi{IE~MHhiY?AGo9 z&_NwPq%+j@X-?fKmLZU*yEf9if0k0~7LIiA?T+Nt*@?7YqsL^adIF7z`+G1%gW#|{mA{9$Z^0HW~9)OkIynT z3A)@t|B3{kyF=9?16yNOkU>2bwr1ijn6#bIUJHB+E3$6z)P{kZd^xQjV@<$G(P!#m z_)g8(FY8O0EvQ(JJ!_Fb5p9UGFL;ZZNe&Qdt-$;bXtk|b6FB5ggZ6{6vsJCxEqFLM zwF3~TYWE_8i-}>VTFXB0i@TatY{t%qyBLmQIq^nhmn{|gjbQg^1h4)C#^c9W7yQ-y zjG9;sCplWgmD`&(Bb@Yf2X10W3&3@{TP^Q9pw+qD zJR!29&}x#dV0_B%Ej zTCd%PY0&m5lD&bOq1S#DnHE}q(aJpC(U3}&o=t_aaonUsG=wIFskV^6g%g@Y{2Mjd zq6%BoWs55O_9wCU!bR{^Ry_Zz%pQI}M|kg?pjh)gAS-Djmenu$LaZtUuYCK@vKpjM z@&yUYk+1hSRXYKPE8hC64a!!PjIMKd2i^JJUevAMd|re0+pt#&^AQ(3qLr$)WwU6X ze{O1>L%n#C&eZpTXPfWkXx`(F*RSG<@U6o`#%0N-HpGw<|B{~KX0yt zfcL|KG4U3zh;vn(Z=`bh$QM^VEHxhEW*-0JyKej!61Z;2%|0GNHL;S0_*WPkJ+IUi z|6Ob?x#7UnCOE1_3>=}dmge0Mtx&YZ5*HE$Ip*JXjf3Sp*KQ&xmwnU4sGbBkV~fzrz$X~=EW-E z>=!Q7rFetVM*p+v)YfO9AEuvcpnURG%JgzOj88YbVrD+fy#V#zA`NI0faV%2Hx8@> z`Bb+mV*_j}wgqnD9~84nAWRRD_0c3d`HKrx(wg=T$388)Wiz%nzk-rQWjE zxn*McR zO{HdK$t6Y)_afTJPN&hk%7w=8K1BpBV6~bxuS_upgWHBYF=}L2kaqV=d8EW84@Gux zum7+>N7F;_>jKLzR2c)FR}y?zgQ8OSPB!3W$t5ltxdHY!< z5BWJJ&OG@qEtt+L@fG9D*(09ZD`xVRsj*)8G;KM=vUbU3@^TRGNfoBxV~ zqq5HUc_+TfW72=P*29&4d$j7vJ!-A6S3DOJijk{4^xd$BU(YPyW7t-h9FRG5=Fc}< z$s$x;Boc&iX{s3ZZDG0|x(u(Tj$vn@frCrY>CYawlGQj7j6{-3z6rqIP+g#(DDB6H z9B}Dtr_@pS^yiw(JlIS4_FTiA4>cJ=+WT_@4A9yG_pf&V=-Iqi7`Hm!$ zIs6vKuvnvSehh6d{s17`?3s}Q!4uXCLf~s6t#2X5*Tflc_aEBCP^H@e zg}MEj!JOb|=3`~e^8pi|irq@M!4y(+nmR9~}P6pi0;xd{`ZH&Bp9n}DBf0AZxdBd#G`#E5O5`5}B0>9EzfiYgMb|@R zZqJ3>{Up}V6#GL+kdpBID7pq3(Lvd>{-|@TxF@-UCusko=BijW7`kawGl|5qZs*Gl z7RO&KBQUv}n8~^odjY9F76-{M_Wv=KxkGbDf=(G#7wzNIHRcWq5kul*4fsJAo*;Px zywKtL*i*5^&iq2FU9Ch3YCIA&0p|n$&*YB=kKruz9PHSvDOnz?m$7J&pfk>IQMF?H z^vYS2V+n0MK!+VL=o#tDTNxtYRzV^WA6nZt28#dN*)%SBaoEU0a!plTQI+#W4;p*d zOQChk+R(fML#Us6f$}b^d-G}i_Rq=wqsio8zu#!U`UKjiYCXAq;VNy_DTp>tuSdfg zFQUCCeowmy+2rNvo}?lqlNe8)r>dDr1F`kZ$yJSzE1&!b78m5)LgV6`tCkksgR7jj z*cRu0V^01JLB#fW@-wM6c=Cn7PoOqNenZ6gj}|llK|3JU0P#9d0k}ucO<5+cO0Fw% z+yLVafy{rF%^FX>g!tK1z8%lE=S}BK>m!GsdF7k+{74!+a44fU?3>% zdr8*Is>Tl3wgX`0D1G-6Wop3-%%!VuxhA)rVdz0?hRf zERd`y z^5kE%u*lc!`XW#=&4dJ0E6o=uUrI9){dOAC-AASM2lP zs|@H_X=w2~c-q^TJw={uF;v65;2)Fw=6cCCu-UOGne=$yA1Y6V!%&9y(119`Jw+%i zhA%DSWDnpR3c$ghn}VyCDBx>c9eOor!%Ot)4iK^gZ(KQWrGaH3$G% zzR@~sQ*7SI6gQBM>Bo|4T9tw%LY~0i5uoaZCfQ#ftrCMK>GkZSGDEz-{6BjXub8Yx ze^n}=B&#S}vD$B-K4;u(D7G54mzbb@Royw1^Yjbi^0?*h=4(r{evG3|$p>hMkP`Cq5qBCnK7g$M={&W+B9pX@9m&P1 zCv|t~2xQpeeMv_P%7nN6bcOD=x*v`$ATi_jl3w2ilfC0-lM_D2Y3JWN&=&1yQro~>@@!Qza$&tA74tr%Qg}=1=-7>V;U|64d$ywQ9lS!yCVfm6 zt(s5$!nBkSJ38=_XH-9X23c}+AW1*?18wth0QLKH1le;>O^&QPOnn7M@_nB%6Tk#K z73t=Q1@DP@;Xi`q2A08@gC{P2$egni9&!f5kDr?)EN3K~1#$LcvUTf%4Y&e@t_tJg zjEWygZ={T!|85L+&%l8A5qAxqoFVb^pBm0CUNaB=dyJfM@q_LBHy*7Jb4JKd134=! z#|0_Qiae0!ilE6;;e`}GF3&?Rdo zmEn_X{Tws1iV{8GaPDDN)uLE57Q{s}Q;1^o>ZcnjOsbPQiX8^zk9Imbep*zTp#&%W z@P)E2F6j}9?qVYiUv84+qf*lJ{Ih#}V?$e=OIM|dcW{j0kXeaKW23P%geA@?OqIqC zk0>~`+T6=Dwi{o)U49LjkKfm@c!HxO2b>c5Ik|*0f;5J&LiuhWX9RfnML6WEu%hc# z&rH*2!2iW}W$!jrp$NZ?$LfPej9TuLX6OzTz#9iwR*ac}A`Fd%U`5aDC8Zf2a3d98 zSK<3vRTNu_bDP^tiY)*yJSf)ZqmLbaJCJtjkygt;0VG{}MguSet5a>_^8mybzG5EG zI_=@NX@;-R#ogf0Qb$kB#@6H#z2!tsnuyP)PknAyR-+ic!s4e*6^ulQ_w96Lr@_Ze z`0*-CKk>vYETUL9e1r$JgO}lTFEH%?i@f)Mi|Y9L#&;JGRFq=xfQ61IsHkw~-n-aQ zX&Q|spax6qy=U#%vDYYeL`98_*w}m5-V;q?5B9Fa9%JfFjxXArza0Qi$~FY;?Cc7%y(n1-jMtLt+u?YxlySa8SxQ)%FE~Qsg#d09{DKanU69g*q_6vaz4t?*#5bCFbn)_ znQHkcctHESd^>rzd#*3#3em%RVJ zQNA{PHS=qctEG+DLNunDxc;r3uTmlUFR8A@i+++H_wOs!HKf`g8jYxHiv}??U!`j3 z+w;2i{9r85bF_GT@ZWd=i18;4ubTNPRbAha>N1y{ZLHL@xKu#>yDl25u4#1z=c`nJ zKEY}l|8Lujb=N0aL6%?<8y0{R9rG++AY$>|Y~lF%0Acge=fcW9-I)EA&cg1}f3Y&J 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

    qGp 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%0A@uP1r!~y?%7cVq<RTUcc;I}*C zT$ZFkh9%1+S7KfWJl-EG2=H_@e&lnZ?bth@uuvzhBF#^B3ZN?pZN_X0iU?Doj43HG z;CPyn^uF>gNe^MWYF}7ZW*nUrwWF@?MjKipSDP$Z&n0h-Fo#~U2hqYM3Lhrmllnc! z{-~lAXG2OjKUuDaugPf1wnVkm);iXLT0eh^%Ql}yUz zMhyuv`;d&0^nhxk=`8lbDflVD5#T8_@${Q_I!23JR0!|fiWjh4tstVm7J7+F{sT{G z6chp&qk=30k>c=9YL`IfO7wiq~}Y zPpHLFh|G~fv$7^Fs-tpYK>wugE(gI#cnQsAZa;#k0jcNl?iQ~&Ia3vjSSE@+sFCY> zT|Z}zUDj+xWIVxh<=nID;!K~*-T6bfmRgQtNx4Qwa%gT!Ik6`ZGK##xhXpCJ4{Q*K zej>qZef=(tMkCJeUd6P3i24hit!z*iD3N!SBAGxt3_rh=xup83uj>cY01CN9a8JKH zs*)-{4KDAq$wJYqApoJ3{e48Z1fq_DK$)K6Y(at=Pek?w4GIwhGD6im`FN61vQ6p6VA39UkEQYQvVg~~Y+ zxi88hqgEk`2YGofb5^A}r0dmO+W;&Ws$FJt_ff&vqylHt&!a1~aniU%lPlkpW!28^Go*gImOM|s| zt`{TE4w|f86fQ01$w(&!E;Vx~-X+gq=UC>Me7LBxDd8gSsA*JiiNhTHWz9F6Y~p&E z59L%g_!SqIBm)E2V7FOVEdamwPgGCtsyOV#WG8Z2mf@9QHYYj7Yod>f!EOnY(W(6#r$t8#2~K6p6ftt*vD>7f@9 zO7ls?;txH>N|kbb>~u?U9+8*?!dHFd9;JFnZR>P;8v&A8gK%s8!z8f-?R17TAj*zq zR!a=}`bg=HT$J3PyczWcxW}b2^eftoW;`6dABx!V9F%R0uFUI9Logg(l^g@O*d+0x z;!p@dbou=R8)&Q=YDoYE5b{z|cyyjZn0x{H-CkWt^(UwUw3fjkVcp6~N=$!_gt!z% z6A#Ws6ukw3#ik{(!%3qyHAdRPw9^>Y3&5%rAe>fYXrc<9voV_g(^NnVLp z@`xtldbeSV`Fa5pBWxIaayhMEB71NQOVQJNz(zK7^jMBahMKvk3;)XK54BO;~ZihPGB}mwiI4O$x7`0_{et0)#^N{5*cPUm;OF;F?RMvwe#5asQ!uz4(h_lt^QGzQ#p&@zG zm{4e`dRSgw^Tr(%J0Z4FLsm-3iX^yA-;*zHJ3)vumsdn$0V{jP`3#uZlYOHe`q+(^ zJ^ruP+R5?F{k^sPu}aA8p@}@9%ilk~!6()2k;zv|eH!j6qhL2F;P#SqhUP3i@uJAgI&r!-@7?~j@CHo zEn{>3G1%?oKwAxYa#ywpA8q?>pNU6|EQV{5D@K2{gLd#aMm`KctF2Pqro?jevU6SZ zfsf>QAU&SSHS`-qGauWPS^od}Q8`FY9o}wFjV;}d9}g>3-jnmEU?fhcl!Je>6X?k|$$6?G|$}jZ3NG;shajM*LRJQqdiM45HMB?4AWb^gi+S^)< zy0ih`LvzSR&26go$l;C9^4r+1_-k(tVTv-go4%T8+26|q&FTZ=bA#+l^acuAYuMrOB)lIQgrpm@l7uI?hZ{ac9|iE zc(?rbKZr7UBO0a8aT_6MkJrj4QqI1ixh0{lDX-SwWoN(u?eeSYB#(shNRPLw=qtmQ zLjSg=kf!nFX3vz=+&K~1{I7Sfi$Eda&(N=-gswAT6rWkjF`iBWSk30t@&`l}!dOZT zw*E=Apk@-!Z!hv@!Oi|S+hMFAa{E}}x?ujdmJbVv;$xTGu&VJ$0zQ5f%JJa$xJ@Y6 zU%BI2XgfXAWx5OKWwad94|jGjeR$>&8xv7R+7(kYq6 zUo7!Oxw`WHx09|Bb#Yztv7zsbYC@!+IzvKN7TaiHH~8ELH86_sj&^J1EHyW9whh~E zpghgVM;>+?*;(`Qmxn``o%3;0>OBqsnkPB?L+7%hY`4xrlb&sKR<76Euw~xLrv51F z;F9}HGWz!WkoGP-`qPGuw?jZsLS=vVh~sS^YQ;FGKwzx6jQ2>NkhEesh~O=Nt7LH` zR=hdojM;|QFrV5v?;OG@VdKHX_uV&e{H)Fp&t~A!>~%OM zaqgl@5xh4k&Q~)hd}(kX7(dh75zcbC?T!a>z8-mIM-;@Bq*=r0);DM~{BAUg@sl3> zLo#h7VQzXl(I|FsQFr#Uj|p&pEqyZq;x3M^4wwJokk_8mtu(*`!)P{Z!a8y1(dVeU zu3$!8Gm)6`p))2vRWLJs&0o2u3;Sw_FVjp4QdAb2DTe(5+M~aXO)!@E&R)igGzZ7# zg!(Qx=c%yA_wcwdCZ=FLZcBA2wP$Ruto8NJsDhe~SDs)y(2NH*I{F>Kc2?@fzLg|> zkvj3XLUP>5I>5iE*Y2sZyiKQOrp~;Z^y2J0Hjz3>5>mt4*1(McG@q0)<&WuWU=cfl zX_2e`F2`$>{+6}={Z0N}mybu$m>J4g@PBO`Tn`;~w$^t0we4y*;J_~>%lpH@k7*euKT&9n2=J$JCe zf^@!CvzaMzd-Wh3{QO%zPLuJDXY#Td)?Vj7H@`f+Al_QvRJ}F%v2lk7FEXpnxbWo0 z9_fj@+9m9oTfM=P89r8a%P(@BUnBkN>X+n-JscY)!cW;K5#Z(QSN3;?m#d$w&yppN za6iwPQ~gT%VfEq8R6~Wqj&KtDKMf?X^00miNmHT7KVEb5+Yj@?Qr^{$QVO@WSuyRR z_fNWtjI9%$2UkT_AXR>F9q{f7UC`H%)Md-NGVO;fsSw|$DBg4<$4RjfNMC;1!{pX$ zDB>>$Rz_lY$NIot@sufMr$85r=jq>8P^0mkgEt)_hStJ`JVMgVxUr3OrfXd7iStbF zDf?(Kf)yvy!p_~Rj$M78w3V-rqBRJam&Pe>o_KuFEo6xub%ScqYTfvm$5qyX$yQ`3 z<@0-=uOuc~2NGy}KD8{;xrZmHaouR7A1>;`2I}X`@&Kq$n(fqgIin=uvVr+N+)M?q z_qyj$xL>znn#r7j`nMqHc!Ge}a(fNvPjAwSwV`zwFj zq5Cs`*&+Kof7nU;M*WZZ{pw(9`lbt@I893#a{tLBB-?&z;Y`4Whkua)4 z%yCC_D`487&Z3JRm;I$jVs*kWxThns%cy1Ux9j%<8bMTC#rODO54fYWykiBW`023U zwUs+H*fcx-Aa12d2z~nnW%%GgCkzMGURShO7xnZ(!>8xMf*$bkxhO!FZ)1)9=)W(FW1*#^+C8P&Q=pyG>h_GRyXXe~%)mOV%a=^> z)m`?`576Q^FCBAMW`ya-zH_J2tamkjlpEiw>g}z=?S|TMSN*=w;^lo**Ihw7s%boJ zrz|}Ja10v5SzvOgnVFT0yWqj+{(K=f_O31g^kLDrd@{1iHH&IeXPz}>0Pnhwd+*fg z9m;{~uB>F(`}XWUzqi_)Tc@hQA&nS+Wmj*H&Zjs8tGT^)pNU-$`qVJ`_ev)#E*OoI5v75Q}k(xwUK}c;SNbs_POd zd2`(mx3=Km-`n#?2n6a0=2T$ESWmmn4tdYwjD&V4%4c&*Yvb{?8yjLH*xxSI^Jr>6 zW`RU5tfW55ETzA%R0~1!JzR${s;h1+fN@znzS0b4_s$K!{tgA-u(&jP_-G9b2z`Nd z+doNw*Sg@Pe)nfQ`D)=shRlA}z~OWpGRvY4s5l#kTuRf)cho@!+k(_I`$`&%?#jf# z`|MZYz7V7e9RAc|=31yy34=BvW8EY_podpH!UO*~Uv53PR;Y1kZm4|9`a0JCKe(YJ zeFyly2zg$<`%45mQe(HjOaua6^_0r8qCzKJ{EhI`QT>6$oL-bG1)RmT1>TbQsA&N% z+Bu?)h6MiBz#t!=1?P0B#h(3vX8%6y4((HUy}JY`*o+s~kZqaN!_8f=9ilHazBn3z zW)CrUpKJ=Aao$K?HGCS-sj{|3OlJPVU8e&{n}e~(G&|=9hQ09bQ>+dQ{$0BG+j&=> z>ruazel!mD)wYJ!aj1D$8L57$b%iYRYr*UWt15c{Z)Gya3m8 zHLXR_#ZXB9caiW;LkcUF!0WPH+RoekTujh0D&c#vsLcT5j=kvj;p|nq0tehTxY-cCp`)msnfCMB-DIhQ5RAO+!YN%e_~Is%B34A%^}mjr#kacca=IIkb~ zI|0|0+w@Fy;&`I2La6M2bOQ`IY~o*9bYpDdHUvBiI<_vaM2Z}Arn(iZ<^-B8XOo93pl`fLkN z#Pgxa6S4L9nKv?SIoIki@^pkV^7-3c#$q2fBkQMhHGrFYxC#EM1V8MjoV{8iB*0CI z20gAF|JIIc(Z^R_w0Z3KawB7zwd&^LJkzVxHbSdm8xK?nJzC$IU(c-yo2)in!I{Z@ zV>Kb_L?rln5vkN{!-8AbZ9v(wVZ6^?I@=Zr4?YUt--3@OSQ9}u=MGj_AYwsp>&01? zs|vkj5AR?;&4*&_kSTX*p!$Da$^`g4Jk|Za2md1vsC}dm4>;ExmR*tBZx zSM(Ruf(~w={agr7@#XhV_}Ahsc=*;|$mZh_+(fiHBDMpauAu!&2u?c@)#@o%=q<=B))mU9ZV`H=0EPkO=vcM- zovFL)lm_E){(i#^D`kfI&ojN`T-u^Z?eOTXuL8U1E-9n*#v#qHO0wSVF`G=^j5?u# zxq^$i9J9Mm?k3&v-dm9Fg@!O}uGHPMK{~aD7p(-jd}V2ZPk8NHxj^@?6I^v%uo2x( zknrC(zNvz@Wib4|Rt84g&bKaL;EWYrnPJW!=dBZG8ChkH=*D*6-a(yKEj`)#JRRLV z>-m1@IxKH?k<4KIb`1iXM9VPTQb78%2Zv@aSE<}uTaI`3STO%!S&T2`v>-~;F~_Z@ z=RSxT_X|8Wobm5gczf0~)Uzz{F@TS>Imuc4u1pW9xfrpwsPTL2vR_%hKb;h1J?N(d zeol&2&SX*ST;V^Lp(P!B_4XB>H?RO>db7vzZsPJ^_a{GArJhQZ3jM`rlXsMncdI<1 zC>#4y&nfR9Q+l(?(Ytea7JC>8wk-1GphN7Jh+TqXE#2V#^*rOZ_xt<3*3c$$JtLMo zY?OoITE}=R`;cSrR(?(`s?mN6SvW+~OONZa?j_HDP72CXBhb8>?L-wd9F+NyY8OeJ zs*8u&7K4LbDQE8iO}$zUIJbgY4rKaIXtW(V?40=Tj1O#=s8_EZDf(Yty-NAzCG^%I z{Xtdq*|FkPBRFfyksgOda96V)@FHrw@_xBijC-VMeDI3euR%LZ6&%7>xPp?NnQaCt zp4DjX<;eC0qrQJB89_B;ln}c=35uk?Hw+LsVVf56wo|@DVf2Ga!zC};#DW!df$m2eK=z1VtsPZ56;8pjY zMoM8=FvHaEKfCf5`uZUF(Ea~J)##L;u4Y_a{;Afz+05tTy)c}6zasekp5$(2+24wH zpDyofL;b)vK}I9DaR~Yc_D@ zzo?Up@Kqhpvn^)+u2=L{vx)qTYJ!inEoUyU3hyGPzFN+WP*>g1x9$}0fxT_%P#8=8 z$RPI_f>fuZC5HB5neau|Gmz`A%A!>a^orF$>D$fnVYRhI7d z{caZW)gd26Z2hBmzgs_@WP|rcn0ptSTrDRp-unwZOi^EoTP@ApioU?MfmWC;)H@#i zZ3A_|kFs@VZeB#9D*(Ip716Bm_P(R08R3(T@CtN$<}Zz&9>+OiEBS1r+Wg8KAtvm^ z_4$wKvC$T~fa~>H;RX)Azo~9>R{oZ`&A)(RrCrViIQ-kr)uh+nLfw^w5HN{S zO%snIvHunBD0{GG&=QvQf;=Ht!vVpC12G>u22&UjL&OM@a)N4m$q_8tu`iHB-#Dr~ z%^rq0qEmdkE_7=on}Q|grYa`i z$;Zw&1V*H&%CvcxBa5~Un-)6`sL*jXZCMG7v&r*~#haH$F|P?MqRL-ag2hU!fsex8 zsExzr2VoKz3UM+-QwDuZ4wB!c3Uowk$FI#_qA|Tb+;MV;`Ne?w6Q!{GC`plYOP1dPg47&eWRUDQ zYIX+sdEi3Upl&F#jHCv{O{&2W54qAt7dWCbq=gGwSZ=FtEyz4 z2%8a8YKTj?r5d6?njQpP-k1?v3zzySI?Eo2ka`Ib6Bj~@xDKK%szov}FhozRY9HCp zf!dR^8hK-F=b|#|9GeCCXD#Yr^+%5K;pI1VKWP|k9(6r6B<$3yb?PHv68h@EaQ;yz zsT6U3kDdewv7s3>a4p#57C57(jJ1(38!ANQKP4QiC^>khYcit(gS9wojOR2Fh{4k8 zghbY3U)(h^X zz?72Se+Y6eYZVT23`9)q1=t>N-e3I70}j;Kab3%=}hxxk#nX~>b3 zg@YWU>_UnZSoKNAzBEaRFYyK9B*v)Gus(mi84|Od3nm%)dI3aLpUDyNpUMe!_Si|% z-5UR_Ti*=gdPTAla*vSt>^E{pJ7>?u(;RbSYhMp1K};%~k9OU^uhryf=xsak=k>h~ zM~l%|?yp3|eXl6*_N)V2*(>t@WX1FUD9D-B+`mPkfNXtPs@cjvivehJcbslvMabui zkqRzEIvvU9514M{ADg`4^9n9RDi{s#oIYXD?l(Bxz>YYF&E9dj=ZldFE<`A~5IMWf zGdV|Rq>D&d$~z+;!GZ~+jlQlBC~xlGQ5zWT{n14#eD%Tb=NhGOH7Iu{<}b`|kp5lg z4ZNfC3NA-HT!?pakImTTq1db9bC>VYip#|J!i)?wvthSMqCA zk&9RIUDT0%SMpG8`@DH#pjDeKu0xMIkqH&^)EQ_t~5S-xj# zs(rm@w$QX_;}7-KX?N>B9Z{`Rw@}u%9d-lVrmZKpSQK+)| z#5;Wzsm0Imf>M3x@96EkbJdx{C3xnzXXq>TW^bW7G2hcNUpyM^_&g)6{gnD>=%bf~ zThhmTIyj?dj+o(e+vdNjrVzrGw%}*u_;q)O4Gnf%>b61sosZ7UsA^mV`MCInS8}Lk zi9Y**r_Q%{b@((?^MuD6-6BTqGDp6!F6C_0YC`Z?WwRQfy*t4gxb>6=Z)!3yG114W zkiTU|Q+?*^XjM21jOYHkkgX$g*LXs(Bx8L@Rm$DLcOucXM2Cv9z~%{fRT+M=MJk;q z^PM*jGnc~Vl$GdfKxJK<>7dc7l|C?<19c9UIIAdRA6Mw;#%5VJhY%3$hcmN@6dLZ! zF5otb7~6PMk5HUt+gUsVi0)`emi*yu$(@w}1+MPuDI~rNdo3#pL$w7)8PCzTV-CJ3 zjH)S9XnZ{LHe;RLANSD86u9>IDYZ(^U!|hZ1o-IXpy;E%&i7k=4~O$(*EhRIoG|a| zgp|G^P2v&wZrgF-%P7!fdHY8z(NzhY(l^Q(mZCC>+;`}nha%h1;pE)mx!COy+a@~_^*gu8}97fU4!|etJHb^6EuA*TR>Q@!46pz^ue@{ zbquznn*{9-Yt`YxqijGv?x1K(qVvu|J`;RS)=?h}C3!xSzDKXOAa>{aMyfxuM2Nw) zr-K?*gUCX)-KSH#!mxpE?6@b*e|gGGNUJr9qGWQA;VMjBp z88fV}W$}D6tj|h8Kfd&;KsWly)L(F(IaCNz?M+=NIQ+TXk#4B_dn9A?tXk*L)^g(RDqXYgT~s&y`*2~hPDgJf;OiHFOfL$ua$9=P%FT|rphQM`j91WdCR`(B_f;r2 zso2AZm`7*w3Za7`P_)DtKZ~f>!!aFNF0^CkUHQHNBU!TyngOoY{M4R8!@w^N4ftkq zIg~Yt-#;m4Sah(O8+>HvQ)Z_=p9>I?b9=);tM$u zM>R!N=ynU`kR93JbfbCpm&OMpLrm0!z-3w5ke5+#`8J@I(AVEs-`sb&-Bz-6x90{g zsJm>heMm}P>J_uPRoAloYC=xzsJBt1)h3tLgqLbTA2xe@SDT)r$@z;8Hj1v$bF(h1 zrPS{XX(R$ZjvHo8a)Iy#GVJv5`ak^Q!3|EGg9-S5p5Mb@a=`9Xe>SB z`E>5oHEyD?@maX*y14Z^g670#2jlwcEUSC^=bQ%xKq9=d5+? z@>k4)bcOK=sg`AGqT6>pesU_ko(OY|9aFT;^e^nVSYZW2GrU<@Oh%uVec+ASgre&5 zA*c%px1c2q+zYuEzp}lm*_4-k=Uok28ssxI9M+#owxc$yHE-iYyd>FV;)NHTeHz?o zsND{m`<2y3(ZfJv{9uv}N00dsX&Kd39GV&8);H}q7VC2MqzAi`ch5v0e=D62jSorm zW*d|*1)I_7$<$D{W|HSl%&s|W#CkHKneP|lU-RvVwFy=jv6XJFriXms*eso5UK?L z*oa%lSvj_Oc`zrFtC>|r0rVUeT^4M(-PPV$BPcvBKS>M@qjz3QSoo-Bmb;VetWv%z z8PHTmy&4zt4*2M2_SpX*-aOtazo+Bcv4yzpJPu1pFPYiRH&1K3@!Ma8k8E&?7A)t- zMBvx1H@Cu~U}4+nS=q_vc+hsLBeU|O7ja1yW)w&G$w9L=t6w&Xj!MHlZUfJfvK{H-;h1Z)4pj(QlKS{Qr+?cFx<*O7x9DEv`o! z&Cx@{V)l?rd`Dz?X2-voZLXUBp7D(v1MS}0O~=6C1o+)m59_fr*vK@+FH zgM1XL+Tle6-NB?+)Su?~em^jbA6zRI_b)?kAC=fL;xqml|PZ#m!Z073qZC4Tc`D58%h>-Q86 zvYkXF(3lZ5RIrQ5(W(Km%sv~)Hqx&OhOcW>->!lGeVxwm*p}*h>A{tMYcIYeqAx%5 zel<5nYdhFvJy}Fq({uKdE{wTX8M+yc|Cnl;Im|*r{+CW(a%`B#%r~;YZt4H7YUU^cRAmmT?1UEN9NDm zaqQ|1g(}7y9(U)}M)=sNEgbQz(u3mB0=nrZoh62>P1as8J7-a0TkDbA-9QDk0n+jp zTQa#L^Rer1zo}A@W@qDA)PdId(o(*DczY-+V~i?>p_!cH?`JBsD4PXA(uLcbt$Wzz zh1ql!SfRb%h5H6r6SVYK(B*uu&;nUGZybpK9rd!x1*A(cosd3d1D`^pF_*)?cyU5l z-SLMhSZl@rQ8j}*$w$UJLp*-QT{jL+jI=e_IiuWrT)7=+pQGO8#6M~!r}*;xKmI{fv+pQ`ePiHqkOg3u+I(0TqC zOH1ae){k-Rb0=&~P0F$Q?~t0Z3JxFZ6zF4C_gpTZ+G1L*_SM<{GwH&g^IZkS{);CG zxaR5!lW#6n)!dJL*YH$POIlsqWS($1vz2uhI0ZahaxDDxk{niz7p~FGbi6hPV>_vI z?%XnIfNbF^g+3{r&1aB~E|(OIRrCocrdWhA*L4TF6^duInll(xpUdB`7&~9I z`0u)BF(NuDVn0DWE5nrlzExb7LZ9^9mJL&VU6~|#J_i$Xo3iQli_f&x zpK)gs*H}VdG>!dnC8wsXzw&$(%+oURc<-NIB?-sl^%gQ>V1$nVCukcdK#4kxyEE~8 zG;^M5hcKxKBFaaD8vb|Rwb{nN{7UvZu=g)jKlbagO6O13Z{+n**jp40A3)S&F@+p) zXi)X4sqz!z$e0N-XXIgmPdpT(nM(SW2(hV%Z>Z|cDaGZ-(pgpgc+p;Ex zzS(d@EIFZ1Vw@=p7A9Zr^G?C`%Fwq>9eHwf0wIv1L^o>aYt}C|Gaa!ujLCG3S3B=n z<>z_tM&Fx=n(TGHk=?GDvGK>mM0($zF*g+O_4&P4{5BPu6X)Tk7d**q{n_fiuD&-n zS%-9#2wiL{7mNX#mDk=qXQW+4;FL0EjL~a z9mAHuXwBYM;@CYy1mB0*X^qSn5XVJ)A#f3)=bzJyA4;7><$Fqv{s^YM(lg`?t|0+%*r z{UG)2m=LUTW|bE|7V4&}4~iZoyIkT7@R3{gXdI%+J6F*lZHq-izCG#l{N6XNcMDav zJ+p-V(NO6%xi2g@Yn%H1_}V=89RG$|1S{7&dmTMSm#RcVQsa*6w#d;B%lz7n2FYlo zcq<-T{y2HtUg;74x724H&WSiXdk#|_N##a%*7&=hsE|&yrfEuc{PiUbtHG1mV`jJA z{Q1re1~XbFqJ^tNg{I8}wtG;t<&OA@_h?O|hPIig-SLMhmUqM(j`f}DSb7#II_7ZG zQ9oJR+)X-Y5{Z_~Qu57S;$>&UO-2TC1~wZl-n!8CY=DRXF7}Z`Gozqa1t7i*p^z?@Y-Z=9vM$ zrgjOl4DNj`$9I*bmH#%jVI8d%V9&y799k;DVEM$<`7oQK3C2tC+2>=VBhFm2#jTpi zr@5a8Rst`=uS+_!&c{>d7)I(nR%;d)-sfcclrIZtooA0i@%CeRk${*ub9s$=ImpT& ze218CEK|H>ICFV<>*6A6d-F5YxKZ@YTrgE-U`{;Kb5rPdX~1sJV5Sgy&~9fnSZ$2l z%I+B4!s(G$)?oGKi~bjJ<~4i@8#A;MlxjcYi-RU_jMrq1oSCt3ghvlzu4Ssm8y3!5 za>;S8!&!bC(TCrV~&_vQlW+u1Se`>op=}FcilI45rGDJ-U-P zy;CDEgL!z1LU|#zRY(F&+%=PcXFR?hsMca1mWrcE@EsMNsLu(iFRY#dd}I=C9;Z@j zx?4p~o9nhZi}Q?4too&^7Hcpbv)MJ7BK#5XzWEeL+j>LtC%m1DSjP=azYTG}wNoz2 z)pICCsl2#cWv`y863kEqlSIbROvhj;R+4~jcPVjjyl|Aw95G2B4NTOmIz^b+ows+{ zgEzIaF_+d?VN=G`T0ZN>)1qHwMS8Z$gZ-K-g0l22xp2sF+cY8ds5SJTyMn$Nq>`6- zFB$(aprxXNZ{uKtt)7E-;{F@PhnX4Q!%%S<3kEY))HA&KvUVtzSq+gV@kthn4xs72 z%xf6h%)F8x2t~{=ruf^67d@6z4Dc;0qQdl9;!F+r3wFPb#1 z#;7^FZ@oP41e1wIHv7@JS9B9D5N>ln?i@APX!)XF@@d-9!netyf|xilx*2@CZ^4bu zaBUY1H%ZAX{5aiKi^r{uxow?l^r6fEp9Z?87)Wy90# zl2CTzLI`(BcJ721eN5wv(x>}PGtGMSccqh=ti|xZ3%#j_=XNj?Dfw z%F#^lYIPqEOzsPClJIoSr@4M&S1F;&ChwT86n>MzBhWqg#z?v_-!i( zrka-3TyI{aGTwl@+$}G;woqG%tF`#m?{jJe;u1$?pU4M|Jfq=lK>vx@tHqq2hnsXe z=u8oIt58qk)3b9!=Z$6@4X7{ibkbzAT7y3qT6{}uW``!jhX%aacNWKL5Ss{0M8D$c zycO19Y5irWM~6w0mW%LFc4wa8t~%STI4%QSsDYM|Q=-dW3_6;qhb#Cyj;`%~30Bo) zdg1Om*LUL=yr`#a^?q?Gp4W!5JxoL!-3wL3r35QDwPENi5tkdHOh#W}a7irU)=8)O zqbTX|ZoEnrSe%To@#|bQDGaUy2B z&Wg}(w|B+-MaOdX@Yp`ybu$f#oTVc!0<@ZV6@{GfhHQ%CXQ&v)YOi}u$9WD?`16>@ zrvS0w`F{JkQ7pjh^7VjA)dn=NO#ZIGU79BB&mSjqt^MIimo9=e*5ENqobhe;;4e#z z;e#z;T9+2Rw&NGxoZ&96wE<6N()(coe@-y_?O;rlG2+{B5@YKN01>)%+%T=mOO=TL zO+d20YNgryGR5`#5o)$?HrB{d6AL`Qw#ag~HyKx}gip-dp)bC8bAC7gEcN48y0i;W z{o_nDjQQTwoNQ=(N^D3eoIbtR>rJnTnAa3PUX}My8!KTKWeY$gGjo_iSMf93G?iB| zl{`E|<8sX!cEjTP9T~*}3ZRRqSv+e`Q7$?zJ!bKEPMG z+qU;4o^511m_?o-a0!bedVl!m>#@&T4!d%gM|(m4?DYHMXsiERW+5@N)_5E8aa!)R z;Ks$4JXde2dLg)L0;8rZ|7fr&6cRzhSQOiJrGs+gV_&Y~e6(7lU9Q(j=Thvo1(;_| zTC5?!7U7rZ7rxcg&Fg3yZPOeo+AUKvGDg*?Y02yF?Bh-AkFBWgV;EVmUADJ(Bi!2V zJC`i^?OsGC+%JmAeQ~?rq2Nn0zlJv*k(E8W#bx2H+;eI0zgTYu@~OhhyLebGH|17= z=zkk}!QZ;re8Q}3-x3=YIKA_S z_{UPP1Yx$MBCVN5WLe7jwwDO-s<`v{U~Z*ItGhCd{(R)H?6e;KR~mVpl{d9ehE6qV z#|5yh3iH8Ng-m2IQxS5 z_)7WuWgUxW!}UbV4Leq)ZS47;`IL4W(AfFYRK!-);sa?an`$W`HOiFta+!Uq%ik8^ zJ`m8fjcQ`y!wqdV&_N$1OgmoA7_Do#hC2vNbE@I&)!BS-<6LFK+_hN8%?&I1& zAAww;*~gRklDJ)!Eh#{CxL*x_QXoRS4a#_%5{L$;^H-;jT~lnA!%@R3O((f3FibP28$VWS5_g zRG^yw!4?CDsa*(WJBO)Uf5!=YcYY=`V~NK7CCN`(_8;xG7fqcy(rx>PacTDZ*Bx$f zWihjth_hqG=Q7XWS7Uw_bNDHNmEo;&xUZ=@Ck~BpZ6G#_NyiIcV4_@Ww7LM8Ur_ICvrEBk+c&2 z)NJts_8c)gw&7^RdGlmvo49+Z9i8k?IUTrsaRk<8^C9+{;SxpLhQoIEPu(b#n@8+z zMAl|Bso;sN(Z@!=BOBy1Ymhx1iqi(y&N=Q24Q=10X%%3wlfUj<|VK=s;QnOZ>_u7s4 zIyJ~IN5?C}xs&mKrK>_>Z1`IM!!HYRPhB^iH)WdSotsZx{c9;!#lLrY0gm#baqw7L z_41!upi8eh?nrMbxUUmf<1ofHJCby;ERmS00A`c|7_Y|A50N0J$jX+Ms@IL5PX3Vm4 zBk-Mx?aBZdBxw{~rtL1`3IEI_112UsSV-4Zg!&l$2GE%wU6+%*HUXAt+bl?^w$?vh zERz=-k#$*+UVGouWK?_oVsln=9E;zs*-L24#Q9%6T>Y5GB(KhI4VQ{9*Nbvub6z}+ z&jT^HJn$7cwAAR^W;{QYWXI!&F>}Um4+Uh%#W%Cz+$oEw(CHpL#n7-$4OS5-!X3nO zQKQ_LW4Dt{lzlfe4g58GWkam>Ol~(K?Dx~|X|r?}TxoGL?)b?Mrv73Yxmyh4j&S>Q zpnVXC?$)Z%E2$g&{$qZsgPZcuyH~PUklZcAAnn(&_88Z-RPV$n{9V;8O12Y?w8v{= z@l^O_YjxDD1Z{j+?wN}CU6!Wkw!l`Q1)*9nwI*C8)OT5p79lm7uVxiXJ+l7h%^muE z*4yJmSwCDtgSq*0`&T-H?KE{mc*iYu2%W*KsX796UJ~mDCEJ9AXWzaa1Zk004=lpxh7LWVrj=x*_9UXr= z6Zg^ng}(*Q_kb5)NUF%(+4Sh@#McOaIU}n-^fCwk;5u2bG#jF@UyG?kBX9l^?GKCR z;Z-dZE`tVjaDPK@!SrcaW{l=c?X#hiafJYU3)rTI(_={vNk*&g6r1~eJSl8p;~Jhf zVfW4PFusG2$-76e{Orx<$BQqZ;9>re*BbzSX8LTgqg@!>&~0~T=D-FYCHV2nk5|NQ zSy664Jl{;XR7bDDhT3c5c8*#~vmGA~ZR3z1HDi+H+qm_%l%2Z$CJ$UU1=Fv`;B}K! zYJ5^{*$pmmNafPbdcWU>IbIGkpdt_Gm2Fr1+xQ-5z0aoEJrbgY7LiqEkA0tx?ZpbE zuZbI?4!R|8p1<8(%NhKChQ0~hh<1Ki{uHL_p6^VUF7njCFfST;@#BH)2W56rB)Tog zy|!<|x}|nLNBd{$W&Z)AtN5nrEPx{EzTB|V^D@KT;op~7Rj$=$-#zcXgL?#ZpFXL1 z)BLAxUvb^;(h7_dSQmn9ut2EsXRKE?!`yd1xV@p>wOXJwY0{I+zs?3W<~swl zl(iOkT5qXT7^qjtUvRR)N9Rogk0hP{3m5!rv#?ePtqNV5tQ3S7n%w_EJtv=w;*61f za8TGZ&mp`>vsHC39^6%c>{)qT)m``3l+sXcC9uI`a$&Av{JfY5+2(qv zk0p1EbeOLI^BY3`MGotz?Rir-kijh3BAO43iXa{3Bv;l&7)x(QK{+Rg!aUyO(>>6d zKO%^{84x=SMrinEx@D@oxdH!~6ySvOIpd4?CYy8b=;scy?{53oOI0>RbRre3z%d#meM&?$BN4 z#ZxD62L@I|`uqRy2Vr?y<^#`t5X_#O#UZqT+ENYxS2}QxKL#=C#L2_|Z$UPT2#g=V znotZy=lFp<)hqfIAssZ|>`a;f#H-qTIwIuW;be8#-LQZ=tcNK|y%+FFDlw1YgyiUy z0bSV>_sbJ9fjWy8zrvlG7pS*Ccg-V1It>`t8bnp@9F`H!kNRyQp91Uv6<&m7Up32-4IFL-$T z5z8bqPy-VEQx<6QLu(ABGfn8d*JtmOdmprC>cYUz2V$sVrqCs(w#&Oj!wqhzy^lzz ztG+@qzoWTmSAt}qfHg9NKV z6W7%N)wGoGY=|&^p|W04^wa1d@O`w?%#y!uioeiefQs)Uh}WzhV!PSHqY6hs6!ApI zI$o5RiYYoliz3g4ui+{Lcdkn*oQ*nzg9`a6leA1#URZw~$?K1p0ECsk&e%&4SzC9wrw=qQj@1DfkBJGKUm#48g`B;-&{uKhza=1$PD77g_xmVnF z<`h@Eb=oYd5lJUYZ9Qa~bU>LDraEXB7C3(tG zdO+2N1V#|BQ8*67r=@|!7wvCyuvQyZ3KQK9$tLS)CyR&~Y?vIz9R(5`1r+kI02Nr; zu@{wPY5Bb=0*7lO0fXT$sS?_JrWO&OlKawtc*~{3*{^U-h`ofVR67?MIe7HtVa-WR zJUIbU;>C^!i=JzjOCCTHykgKSY`(BL8;yB075oLrm{t_w87=-oR01dei9URk^TB94 z76l(agqgHsB(Mkd{2lTMAS|tr>8pR#uyN@*zO;i{2vKasH53T351ZCzSELCmpN?<3{<{Xpxo7PR4|66S zlpSo0TWlomRSNL(ny}|kci37{)HEm-WV1Y0N#6j&hJoG*3Ow3ILky47T)d1|sOgJ9 z;7?RP^jEzM2C^uQ|N07jNM0l$adbt>6Tn7XMC|t%Z)o_8S%I%3LqZV<< z1rsd})sBfp>;nXA$ozO!OdUjK#`PhBR~WcMzEY16fMsKxTnob+L&Jm7f#6T5tLW4o zw*?F(MAs)I!GsaAjkH$vBK`~rk&U|s*iEUvE6!J{^jGAYwGVLr;2wj$sL1oAh`+?7 z1Lsh56R{`oQ!D_WSC)MAV2{ro0fRE#&kw$-`_Ycd@Uizc*Fj_MK;gO2L#6m`l zP2UZ`kZAEPFhKoA7&O*VdXWVUuqttaf=c@Cj0LJD*dl`%{37#-q`gdIBg9oUEdwLG zpXEOc-Qt?rfk760i^XqB&@8g_`~!H7TssYl55V%<5zuX;>r^cwNO(OZsPnOqnrtjk z3Txb>P6iL7LA}Gnp%5uXg`(0AEN`aiOcFnZ_+%%59Z~?88$j$js#m6tL(7IRxmGbI zxc(C;(sGqyR8TN0R%a160GCORGl}bxJQmvY6%ol#M+p^S5jIc3C2*`@I~Pue-Y*~u zL%+Dtqk&d{Oq4u<-kCUo)D$j*p;8&aMqw(&ozt2KT29`M)ELK0noln;x-@P zM0!zuuK{4Es`UD+9nKBdQ^;XYIimuXmx*tq4|tD`*)f`mP84Jej7f$b3%(?7o5EFL zipwl3hbl2N*`hH7U=+eYwTdKSQFlfI4oXGk;m>5Wi=;Q{DGILi6Faqi5)>hS@D>{d zH?`;^{bXJs99^YV2`_6Y;*WfYW+?Vh$i%J^BND`7rB9SInYm)t_1#B&kx>+j8-GsS z!AJfb+ArKs;b zp*y9?JNO#aY9;xo`Xfk9H%%WNddfv)$8ep~fS+T~qgmmK#Mj5FN82?su=1T7yS@I-M@f3F%H@5oj3m#ErHz=hgiK&m^tjua{?1SDTrgvD805(Peiywp@1NZ~75d;AuP2LGZ>p9G1^0^8K zFW@q0yhV&iIDy_z3>L;*SWn1*0W-(&@mY$(z=;B{fH7f9L)iR7f!9`qYtTYRtfGZk z4(WwVHPkeJxCj&c>Xa|^sslvj1R@j(pS?HM$}T>6NbMe%I~~BSYX&I5W#*G#!s@Bm z?9h?>SAd$rBJeCgtf4BvHA0Tp!myudMvwwA{XO04#7j4&AjBZFex#XCNCu;+l2K>y z$o8y);2sdjny2hZ;w?}cT1|r2jD_eBAMr^D8a%E@7CZ>{#^$fsbX6sD2JBj8=9?gu zNZ&*97%s>oNT0B-CYY*WH&!ii^WeG=!0b5$c_k)gD)iW>O#TJoyiYGTJ55<1cy*T|fCz?nxLDvm^%J0jWxhR^|e&Qzxa#$`D$@#u-3NMg<+ zItqUE@^({09)m9`0`a zPgJEXdlxf#9arLF#4{VmWTqb{WUO*7nu!z)*Ks@if#?4Ket{BIbwPPmfebkd*qp&P zc6?ouf5m0P>7MQ-Zh9Hz4c(X)wYW^mqVur>_TK9h68jB~tOJ6IZdMa#X<>ThV!lx^ zQy{Ev>b09DuaKPQlvYlYFCV}$DPgo$x|_@%P{eVmyh+AQlNS(!4mD!@9*lsD92tCn z0y)7~OCF{J2~uo%I96W0()RfyCGZC+pp)CA12VCGIj>4qOJ@g=GON@d^GciN^H;4$ zk!Cg1hv-tNFnrdl2U3@qsvhh?4L*kJqHo1EIm9m_Gc4ucT{^5#eR9vh43|^W5yTbV zNb-je!AJE>3fJ5Ofz}#XFuF0J@T0B#3pmm|W!chVAi!WMUPJVs^~Dbm&*6=oKa6Rg z=_4Tpla8{j9m%|Y;WZ}7Wjlg0uZgOCFC5iIK1ogCsX*ZM}iynmODCZ}Z}#rL6`nsLG`FaZ_nVhSE!hAAmtk1kOg98jm=ThvmZlMZJ}07V4g zGKMUaVemV%8j-b}rsIe3-<+JZex6JZK@V2{lj;~Re(uW!9JJ<0HbY4}^m3p^N z;b4WK4#CAY^SchHx^C`S9*6@+k%Hp;k>js}SSa7mks-yQlvzGsB@TELZ9fBQx30(v zr>nye_b&SNiaMcNQhSqs-$ua?o(nAJ76)JvZs{73@dy+V1hT{-{1kzj=!=l>L<011 z$SShsj)c0cjFq2EU!&3^{Dxq{dyj{sAS)IWfK6n=BUhetMnpeh_G_%|C~^7?GLeb2 z#VXyVO$-kcC~}*urG&&9dw{Mk|KjPpe1ZExLsAN4Y>Xr5ciJ*~Y@~X_)(a-#B38j{ zLdimq^2zRE7z%)i;^h1+4k*^7+W^>yggcJb<1J?DN;e~9JuH;#xcp17R#*EU!h#ey zE9VsZ5k;!}5MI%z1j+bP#13)lgsB+|omEJXy@n?EyP+T=c$*Y4s8$p2EJ?kOp<%Ys z+(IHUYV&++^;bM8pqMKCv=Rg78}@ir&u%r zlkhYuW0V6z=&7gukv9(`&oL>^v`8V?Cd!%+C(48q1}f`GbO1EGNi3^2M2Lu%453Rc zDQV3mB!JtF^D)w-)p8gp55>vg=)p-ePWz|384kliQ+eSn%g7tsO4*rv};>g>F@CZzMPCtxL#D(8Q2IREL4LmuNq#EGN5zEXQ|^SL2Qu7$?tkh&wOH-sZC=oIr?i|^ zFxhC#;!JM(kWv$RSn3F_2|FMo%ORVfki-QL#cYEjkNOK=jr|y22%H}o02>98ehox) zpP-f+!9r6A2N4YpMqI)ZIX%i*oPHK$*2)sZp=a~PGB$J;3&Aznl|d!OKlF^g)||SJ zG!7$GWUOjDq@NBdro9Syje`}7#K6P$BalZx6@l7R88;^o8+2mGf&2j@QRQukJ0acv z_Xn(y(bYS7Wzdp-4>ApE#c&%jn-=1KLNyMJ3dltlj5(5k*sBtunli0fm6O=tdK_CH z#7Q)ZKZyICZfO7#xo5N%KGrpC3*d_;6>M#3P9Ws#1#L-$09c?u9FsC1

    fJR1-A% zFqgS5w0U6($C@awMpy(TKPlMLNZ;6#y;95|#N7CiiDyCOaJ#1U40l|c_KiIwMTvQi zS^uzo)r8Qtt42*6%_2=Kvyc61wD?1pV?$ZGKW|DETg(P>j~8Q_g0$O24sN<2P*$6m<;#?68qDbaKv0h_ zJkI4FF2o;2;<tYbSzs!y z&xQc$@(iwX;cz6_EhgObvp(8K8XdIz-_!&Zm)}%dp)ysz8zIkhCiW}EY z46o1D$^V)^0Xf>AVk$3I37qqpzH`U7ia=#x6MLN}uZDdCojHG<9Oe^P2E?c|k6tG^ zFg97K>Z#64;-%xTmmViMFAjQK7gtv2CEL~FqA?l+e<#}KIW9RlOBm?33ZEQ5tVP)D zAL=(awfLlJL>8!^=O{Dz9L|N6bDQW!t=_{L=Qq$Y>en~TkNXs;S4 z2`c%Y^@y!_9P&C$&8RtJR}bNrf<`+q|NP?S!i3?q@;KJ!vv1?>YO(P`FJ6TH(Q`$u zC?2ELbwj~lga5Ex%@I^hLJs6V@P{%+Qh~}nQ(=nN=k8)Ns73IM{?c;+SSSzW`iBCht` z0gQ)iE2T?X20BW18K!?udCGu%t2^(h%H%(z+^!q?Rm!v9r5vbV`eDjgU!Yu~rTPWQ zeIKA)lWF<|$|YatLy+V)A;bAu$w=KGg0RI;4$AcR_@Yxwq=QA##aQH-lGAOKu1S|- zZ%Er#(+UBkMfg{jz#Ad z{NDwXbvFAL{A~6gaps5B1?}$~d6I@Im4Y9C0deE^ej%{!tj=J?LHt{f8hv)IARF@f zaHe4?MjdLT zqpjE{ySF4d{&Kv{isfeb>F1U>dox#^z%&=qhm*B?Te`a%*92Y*y1=DS%G))VR+C;j zWzCBzx!2-w)4!Oi$xA3IY!olJaMP+a>VL13iJCkaj^hhp=b4rY4DTujbXnEbq~?bJ z@T5i^RDlt@1igHWN;k~;s>dC^HwgD%Fa3Jz(S4^*9&z6)f?b8eM=1pqA*;QQPkmrs zC*yFYI=ifCGdl=CZUB&S^ycgVI%x9ayj4sM0H}e+^HDCadHiX*5URw*ga0#bV^6lX zB|q4kjR(4NioZwq*5D8QF5~Er((XHNUYz|Z<9-{DO@5hiqLTFY+nidD<18>9kj%7M_TT?4b@-Tthf_G~<^O_Xr;IjOHKGt$j^Q|^%WQWf?Zi%cj zy0t34WU{5xzD04~EbOIl7`xB}w`BlCf54= z{Je|7HncXT)%s5D=fy$Uq#M(W|K<6$i)H`Wf9w4Mlz_CJ?LD&jp6}}0Ml#6^upK3*}DmgWCWmO+Tzhc(1_DJ02-olUaiNX zNE4Dosetp0va&yl43-zq>s)cMzUih*OtkJaB>MFU#L@{uNlEdU?=XF6hG!%*H6B>l zjhW+gn>Qf|Nuek7!t-hEL_xAUY7rb8RM<$4E>176WFM57v-s`g=75v$OleLDgQT91 zF1>J?E=b##?Nx9PKaYHp=@;d~T7;7#enS<(2BpI#WANzYt)d?yb7V`kl=$sL9KHWf z>hp|Yk1t}F)feFJ@9vFC*sr=A61V?R&0jU@tAUUD^=Vt*{(oA<C9Ag3@{%0D-~C)|DW0xrHFb97{^L5bzF2^+n4Uvc$a*akH5z9eeQep)KeKLp?74-kZHCz2f ziix7Ht2G?e<5$*d_7BX%m>ALdF$23%Te&0x`V7=JY^|&F2f4QF0+g$mffZ3;XwrX*c=wC+U^<16sN- z>vP5XC?m^^J0U3Qq_~@KnPQq7NzR13JLqjAT1&cw$!8J&w;%9qgnP<(1G_IwTPIVG9Bx)qwj}J&D=v#DKnM9!1cYo9*V#(i)weF8_(^!b$jM#ORozy z=W9f9rC`N0p_RdaWp=mWzHf~TuHef3wr+N+jBGiXZ}D#vf0eHZvw?PMlHv#*S_FZa00uv=Qiu< zM|aq(duE`WH(mG@KA4Wg`oH~1m=AO&u-U&BdABGdfD&CSCG5)V&$I@Y}Ewk z3@9N)DB4juI6(3HmRD>L~?nNYEO$4sl7>?dd*LdtOYN91Rrr0;tb3xKm%N=k^Vq?G)3b! z?_tduBEGc&xI4YUY4q;`skGj>$`jBu7D5=ym5OQ=x~PmR_T3Vr8=*mALFYs`I`zwU z4^vkw=b&Nj71-lMeMiaZgI?2iEI&9(4SWl`3pI>G)BoqLu|E&b01V9;dJ4noqI`2f z=X$UodPZf+&XF5*V2p{i409SWp7Bj>r&vc>3eoSM$SkNit8OhhTs4(4ox&Q@{g#Go z#LX!km!ZFC@`@K~NvrM7SX(kHMRsm62G$T8`lX3g@s(~%V6KVX@fIzwS9|&0Xt>fj zc9Te!I+7YGSqyKVm(uk6(y=dkQdfL4LA-07VQ6sV7o0_5rtnD9%7^ia^&BqBr?*oh zn96Cc%cHr%I`33m+1f@63Nz0syR>vavs~@TJleRk4x*?R zbyMn&wyogmeYPoA-}`c^{#I2BU~YOUsCpMsjX`f;+NBzjN)0x*+l$cCE7{2N_=$sd z+ShdDq@NXNk-BU8(Ae5}h1QyY+%N4k7|e0rO+Jfqxb^7k=5=^py9Umr78sT<8ppQW z@P|Nx{7_DEd^cQ~h363v;iXCV@Rd^S?hPG$Dx{F_0GGc#0U&CDfHpLq^6Q|KMjxdy z%5=k-gb`!4SMhcg3fiF0At#0AkG37LSMkkoI;Tl*DykLtV>Eql?5V#?vRLhfOC7IN@SBVF{G`^@aCF2AgxHTJXzGjp!^;RYpJF6^iK{mDMvbc9 zY8uqwJIk?@GPZ1nYZ#6hgRN(hu0M&*xD=~Q=xSUzkK>Wck8EXX_4#RIaw(#Oe#B> ztt6UKq_*6uj^js&EvYgpv?^a^f*d7Y`81@x*0YUQf|;{2+qmHok4;B|L($FfH@i8`e9`ja$H~#4qSL zkwI}|-`qx6_DZjPtGk#sYhdM`aEu3$_KdJ{iVRL(cok1}ttzTV@>!j;If`u(vu2zo zz^bXgSjOWsmDv}_hYUfjIfH;#->XEs3fw@(Tz*H8BP?k7)5A)-E*T1{^r#-;RGuN` zBm49gSj@{WQo(=a^C7hve+CvT?aPvY{j=%TVf*;7oNiwo%`Sz`XOW$zo4cl2RP;8t zM>|XIc6jdIDlF4(8JXCDETzXE%OvDXyRN^)rOx|xl)6c?j|SaOOBA#K1HNp(u}K?i zctdXGVHepISvi<%Et9+B+H$a6_MUmw9#P#KtrHk(k2R_tW{*C`tdnkd?uj7;Q#okk zTGCOb6OhjJ`1JBftkrYC<>)%2VEAqy+!*UG;1{=Cpr}F>u4Pv8dq)_2Pv6Lot2LBD z&&J(Lo%zMflg{TEzR?2TEwsa&^C{k$GO{vQ&P*OA zmdQ66K)EiJQz>KdR!eemHFr}eOPBoY=H;4;pQ4ubn+@fR;>LPox03=})$FL#nw@$a z-Pept&U;XCO6@$Pzb9|n=1Hl2ULau$=ozq>f^aJV+4>B(=s~{UYc2Vuj4bG;b!oM# z-!O^!c@CQqyFFoD&fH7BT}i#$?%>6SsG5RiODdba&Z_T9YG$2Z8S|E1(qo@+$c6r+ zOzY3Cuv>fD_3B)%O0!M9s~{f1#6C2y1Wzi?Lf2D3ogem)jkjhf$jp2v+)J=gM0f~5 zio2TovgE3jkB{m-Hj=DuZ6a85)|Q!#a3vn0-O;lzLXjQ0RWq$LP^H+Y$XhwzSvhTH z-j<3e4YR1b1aCM_s?AAjQ{V9W%EA);)eb+ss*SEzl^T$5?ZWe}qrZ`YQut`)PO1{t zf&r3OsBQ*1F4b?TwbQM_odHMDpeMIqk)Q`5ANEsEAlLGCq{LB}_dfsw_vqu8Q=}iJ z0lt-y|NS|qE46CU`03#_KAqPY=GJr}3uNQE=A9UKXPhds*uF_U`~1mil5&-oY&1D# z=X~*sqTv3Svr6&vE*ih}u;Im=8UHhipwWK_ zEcKmJ9w!bv=GQ44;cjN$rgvcqnwRwakFHbWx&=gknjFRas5oik)J3A(C;t}xsi;D& z023;-Tf$MUy3tqD^Llc9K?ceJ8&pdtE?h8AjWKsKfx|r;2h@N> zqTQbF8-*S@Q~?2jeXUe%zWk_!K1#LD`Eu9~h{cSEPsNUU5pIr*Cy-+~@_~(0yK-bGl>*FRr9f(nuzYmPKT0p7z zsdJ=7dY2pV96;8#)esw*hx zO*EAs0a;W4UD}@geJd(}dSVQ@{25&TC!M_FxzcP9NXmW(<*+Y?E1zhAiOS})xDt5o z&w3Qz?oQp94pmoTU*8n(K;jiH40JnZJL{2BehvgUG0=t=f{eyoJ!W9TI2<*LHPaY| zLp1ZcCV|a4?lg_yzbjLs#x~DnEz=^~XFJC1Ed^*cCRm%mGg>5FX@QuvmVIGa+Oc;( zoVO0A5jKjL?0zxe#fI{^+s+mopn~Yj`7$i?g@rjcR>9Zj{Mmc|NNs2u;49OmF%N!%w7fT$E+M5@5Qn3Vkz?3ivto5j)6m z^XlaNcQ3u7qD*3!J#jL$R7xU$y0p|v`^L}>w208j?-?s7jV!{^URgK-xO0fM+NY?x zU}5m010LsE6>pzPuC3u`xawIOXSs{*0x!=bD=CV%;C@olxKmRZj>R`-D*O_c|L;VM zXU0(B2r!IzK^cZ)#9jX9>-b?KjydJv#EqIGwOn6o$?I!YlhNYLJG^zCXCBgrlJ4%2 z(9dxMKfwYsf)88@T17y3yJn*`O!$vDAYtGM?@N}_JrBumEiEcS&<*@*um;BfrTV+# zs4e9&_r)u^D-mnL48Ye~1U8Ni2}%3+kxXpbk}+k9TTZqAaMbR&RU|Rri2K433)$wY zK#yRER}Mra{}^zmGhOHv-H7owa(+ykd^WB-XsFx#jYy%JcE1qYW)5|;o^@I;XB3Vm ze;8TKsN;d537>GLvG#a%jyJ!BFSW!e2PL9LcC{8Cjjers^!Ii>l-Z(cYJXNez*K^*FZPnkF)s4eTk~EcMIbNEaUl1&Bu6axb$~icT+hJqXK*I zg$0f@cHyYmO?Zs&jLmoz6aL=UEIR%W%;FB7hTWWPcCHe8;Oegf*l0LoylIAjvJJAw zPg1qG<2ry?a{^tM%;TNKm`r^CD2)260RFo~b)v1|lU!OmqrvV8o{8-OGP^0uyS^nE zl;Gph#-FRKWH4zSaEhK=4MRcX0>riO)Ph{uZg9@+1HjMhj3d;Y(0Zx57hi_6wu-49TOA504TeFBW zPZf+>)E5iQA6KVM^Oe;rn4MgdF~KM+B=Wk6ndG|@Q)*50>QWy_ORTwN+43McT86~n z6cBFFIn++-kt9yVwuJ+}nnY1FnK_~|Q`|>4M9#*j`$65vmqLK=l{Q*mFL(9c+`D1b zvz-`bt*dt2$AVkGd;w3iC>VyY0>tcF6R~ZjK&<8fG)?LNJWR&~O~&@m=T)%vJj(?3 zQlB+IOH*bHxS5nfqvK3aqv86+);)NXHgeo8%(2tQM5=UJU@L?TXRWXF5it|GgI5!h zl&=A==u_PS(J!o8`rWkDIp*hvCTAAADN^R(!%Sn(yT(Af{e7^1&C%>UPKvJgy86W_ z7)QeOkVfPIoZBe>X`FiPc}eggGQGHXo^ki?KNA_tBO7kL%6Ch6zv&5QbU{h>;iu;qV00VvSN#%rMnG~tI$ z5nR3<^!nqaDF=Jad9SFNJIL3Qc>Lx6V4<~a*NzDQk}}8w{tsRtwhc?;cdWlwny7G0 z<5WtXGgewY)2|zG!8W`RM8};&f3IyfA|Lny*7oYinc+8*H{XS~-fOx9qBrX6viH-4 zyYn5k+F8n~DbPLny_?%Z@I0%ZgffDlPdhiXb=}OX1K+YUcX}thmo49;+Ba>M%dU-= zQ^XirI}gBZv&Wvs{{53F?UX2*odaL0hGE>3r<~qUxiV+gX6Sgw&xhleM;#GEFIdJg}NPh&L!vI;YS#Ri-)f%;Wm2viVb1MGN|L zpw$~xXvvU)q7ev@V1G9VL-TjKP;arMmVYq!>09G_Q*5UJrBVy1&6pq10|ENvXn3%C z;*RK?2%c!?w+r69YW;msHVzahk9?)U*e3jTPiyj$4BcdrWTpy(B*!NmPMbUNIl+2% zDU7tJob8r0e<@~~bzQh;;)BK0QESAVN(IXpbvWugWEh=LdwNiBitpuYh*30eNR)p+ z0w?Il8P%l#30+=LJ+Rp#(4qjrr3EKSqK=Xn%>Jy1m0_RK=tRaD z{XFhyssDv`ljZp35_EytI%Ib`^wU+NqyeT9g^nn#op7=z;c|CiA?=~1gXtJE`YC!B zyz*&ea?0sHIoyf*6#mmFk?rqE80G27sCQ1}(%~@gz!SE!x5^02A^|Etp^&uZu@(aFtHHLgc|xjZ5i~D4y)?ht zX+|H)_BnUc4k+&4cMdarR5}n9G{985!&MQ5-~}1q;UIb{i9`;o_olA#4q_;Ukr9T= zHTE<|b*LM3!y$-=)5s2y89(AtRhnn|5iLZ6u;y3P{MUXDa^-i6$<%Fq5{)`yCcF@E z%n<@9;f2_$E+8{32!Jr6gwXI|q}u~IcHTZ}X|xzb@d|<$PfCOh#Jp-4T#oAlPtE9% zcWbJCP{vQ?lQd+!L<#8Ic-U}y5{kMN8}TXZ$}b*S;drlsiwp0;+>TOqGRPH6dlMvs%*u_wJOsOVkRtTzhRL=j}nq>8YP+t-lk z>AeEW6jWg>Q#U>ft91D_L#`!85Kq#^YU1wx-b(^ptzjm-3QSd9_@QOJtS??`)UBJ6}j@c1s=JcCt`S5=D(gf`6F5MTO> z-(-mDe=N7-kql|h8Tw5+ygcf)dw_JLdgMX9ffR)%r&VB4Pst7O zcXLn*X?Iz=yW}vml@0EYkf$q*r5w}wMSUqqtjAzD^EOicf+Jnh@TO&zo7D}lAIU0R z30iimTi7Z`&aEETLV@9TC1#_uM@#T*=Z8+>Zz$~rHcs_v{NpBs8FJM`!0bPhwjz6W znp{RiYRM;b2vKBuL_|=TeT%`S#@bLy?~P%meh0Fvwu<>s0tAGkb~+b&hzT2x1Y9EC zEjlev%RUJE!@qCfnbz!;5woQ4hJK{h4wAuwFqW*B2_z~A84*B1P0pBMu(jd*j+RLT+ zD4TMjKQM}>Ac#1TijGLfiP+C`27F?56y$1Gs7++^tBTsC$$` z9CsuppynV8PDgs$nPz3sALu%OM90ZMU?E>t2;%RCCljaw40shw@P8nEe7DxkCs?;YWN> zmY7(R6k0RLSv4f2 zU>$VND02|LowmR$hb$M&0Z){q;WNzy0v4McayQ4-Ps{u(#1_@1#>1?U2GCz3r0j|` zAfL%;_=-`il=vg^K^%xxksbt&9YP^`3T1j@7OkEnJbX*idR}yvv6Mkx5Rgz}L(v7H zC#!Oc&^8o_H|a;s6$`(FF6?&4cqy4pXz64z^m?G6(HXV)Km=ohAZ?tM@w&6@a z`v1@W-}3*b{XhQyC^RdWqJFn1&8x9i15Eqwf+D5z&Mki`~2MM zzo}eJOa65@I-l}q1crYLZ+ z9=H3{xP_w+~T%u5j+p>IV&0{;qKN7w{(z=zrpo!)t%~ zCpc3Z`XBNC_|jOU@GAlX3-O}ofB*!NzvqAeAaZ+U5r88A2{AD-Ff}f4Zf6Pu0w?>g zzmn$H0gq<#L11M>R3ZjuU^WIM!we_DNHCQl!W8%-LV$vN0}>TM3{Qh*0ziO*K$5Bn z0vI49Nd^i^kfaF~AfEt8kU-F|6z6;rTcfH+fS-ZNrx~mV&Ro1Fos^^Vs zo_{wU#>3qx251a;czB_8ab=JX(HOt^Fhrl~mU{~<-~SOK%d0Bh2p0Xx@@P`$PP@pA z^AS?dYXaE;m-gMP_Deq;Z!eGVXB#sZ{VytbZ zTFX?l_rShXd-gkf{hePlnSX4#i2r?CO84!kc`ttE$m=bHn8iS46C<{nGQIALM{>Nm z+|8~LbrwceW@k>?Do6gyY^fDktyZweGO`k?%fZ*Z%1C012~>%5=zp_}N^;rR7AvKd zk}0WY1Zi&knZ*n~ zNNcSxGXLkxI9&x2{77B&+hC%PNx6^;LbLSkX8(EMN6wsx!FoH2>~%#ZJ8z|a{IrnP z$Cp61lTO7u_ln(@2)+xhJj1^!_X{p05T#m!lpo-Up#U>L%)dwLcoO^=s3ZfJ6G9Lg z`xMw=ghhAE_$@6H4tUnN`hMg%j+Y-fM*D{XA*UPromTC?{GtMr7?YlUjFs6N&V9P2 z>e3#x`%qHV(gBpMWnzbT8&8pnpIWTwn7zz5^7kVF3w~X7X{D1J_vBV$p-wU&)JAQtuexFaJU~MPlG8#iYm|U_tUjMQd=Qvp-R$*LwSL>zi;TCch9t?LvXX;UJn!F?*l7@yJMRZY6}5w+?)5XS4_6-C6SFOM;A zY)7`*C-%qAwI5V|?}P6Ad4$gi@07Ej>=vhx!qXCB=UW&rzIngKGMcdPR{S!A3Ch2JuZ}t^bvOrxo4R87ol!N zR&5lNLOWld&mS4@n`!gM$M@9IjIzTvfS!|wV5na$z>q~jkpDRefJ2tW3dh|M@x4k$JZpLW2xZc0TzzTe zh_m*hv@O(BP34}@m2awcpVdF_x>|=Pmn^ZP7!gVVcHQ@Kb#R_Pv0V5k}Y++4_oE8tEQ_l*DV1HLp2max( z{hkcNDN;@L6AeAmXgtM55>8Tth2>V5n;%t5dNcO|IRtb0Vy%>pLy^#E(}Td@+4-}} z#hwLO?d>k|Dt{<$`0w2g`SF%U-PvF}j>OjM-Tu%&WY2z4pA%Q}|7B=A%+Ah9?)^+L zvUkc4W*N{a{GQj6*6h+Rt`-{~gBXbm8};a8Y0(}Q=*~0Ml(4PiHr1NRR&QNI)iLjx zWh=0&DLL!3oai?FXoR}D?#kECOGJBTBvlu0(Nz6Y&CjVwFMud*Y;!;!maHzwC$~!h z6+#}DTeIyeEzKBO4n@Z>d|MZb(A0$H8hOLOQvYh*{I7=qYxY)Hq$uM&?@cPxeS}mW zl0pw`$A-%me{|XsbDd?Tu1+u2pN>Wb0A;ehuRF5gOeyi}DTw3JPfn(u9}sg`6O3QF zQ~~iKKOSK3`e&A~I>ZEW1~E#LB!L(gT`5HAQ2cSe@!s=-c=UX#uRcL7=hNsBth3nV zD+0AtSxK_(DFgEaDDP8eURwGD5k#RA^w}m)lELqa%F7Y0AinVM0xV`g<&E(+P#!bI z6BFy3RcQVUPm7!myCD9I?C>|KLiZi@P$@dG^Q*2C#D2@-r6>$2!?4^!;CjM!!Onqw z%5NWC$B{+wq$`N-Ed~D3Y)Tv-#P!d+l0SLg&%gD22*W7(moRUl(BBl=WGZOAw$m{~ zrKB3rDe5Doww-Z{OVMfG3~0s>giIQ|C~iqg18jpF-KCL>+eT8W3{i#@7ou0z)K#+7 zVJkA+Nq?H?%EbwQm^_N!^_?cesUB5<2A)8rUnUwI{JQrQ~Fj4tg6yhBhE5}3u@x1;PCaSPW7G(NO zLO6Jfelj6Ku+p%l%|7EpdYI@~63mV%vd$NhX1$=GnVaeLnF{}F_g*5%p(|^rz7M)m ztTM+HXJ6Ed{+&OR%zX*YD@FZCWoS}f>JqDX0$X}*x0f8xymdLjN1-j{j`Y*=m*zfj zXG|=5AWJ@wJJeM+EW?Qoui<5=GiRCbD!M;tBXB9LIOO~O*Ew(p0+wDQgWa>VtHWRJ zGzhZ$L%*nH@ArJjta*e75{P1;DZGQJ|5|~yQJ*NR{1Gr3g`>AzQ|H|ULukJ3dj6DL z4eOsV>p^Oe>tcqI(44G!m$^$h_m@iv4kgQefTA4`B&Lf2xhM1HZJia~K@yxF@P9Y7 zux-^OpvXAmJi*G=?#F_m=?9OTq2Lq$7Yf`6Y`jji%Qh}9ct5^TiUJ)wm<7q}g3xju zx+<%}M@C|RQKY5~362bnZtSx_8BgZC9naB=LRpX$`ZGdA@-8tWcBW=pAK842 zH~ZcP%l}WSbMkP@@sV6))?V6II&*1U@Tb~D&Ex*#(aaGR1Q~>YVkfTp43*?7hIxi3 zkwOhvFebzI>6fu+SFlnvnn(uN*2;~?2{`v$Fq69>bi<dHvXw?z)?8#Jz9MT!N|WBb~hK1wq!=c^LDZhUHyZ|&hq+q2Pe$vJUU48 zW;lYmj!3}N2l5vxnTWHWbH-WLZ=kiOw@hXf+*0nD+$Wxy2)%4he`vi=_IVVrWQt#S zKdX4hC|z0kBK~itg$Q@=?%k@E1nFgW^90}!9e&XZAg?V8|8)^@6y^&*GdvnzQIEaf z#OcMgI@d=s-iuk~ikSB$ycPPf+Vh;?)V>v15AN+&8@`NxCU=`^UnkpNfVRC+IBbhn zUftlvT#&%+E{JL&uJ>2a7qRP^W%_NY8s(cj3lD7U^dZcd?d98=V4)e?-5y}xb8Bno zvE}LYi(=OECTEXU2P>H%A;u2g@s82C4`6zUYbriDz?>i19QhzUv3<~*@fI*KZpt-s zXRQkGvs4;{D|IHs%;@@qmPZRU`h7Ux=%mroyF;|KBd8!TIk}2 zG?dqkK2TD;;c3^2oBubSh3~FO8>`c-cwei%L9CDMV;p_j5kg9wa|dFy>Pk`Y$DC8@ zccKcUSg?tuJJb=o?6J8o0K37!4n@Teh_FR0XV{lH$(0DLN_f*jHYrN`0-5o9y*<&~ zAsU;pHW~Mlxu>{L$DO;?!_W@xVU3OW_a`N{6Gzyuc5fNx)KePiF;Y6wS5`5=cw|DS zM)^kk9WBf`!2XFd0ItQj+pn1!mDXf7Ky8)b{#f5zj*^Q3J7%Aq*pSo)dcTT2mOYOK zQD0+&`<~g*k%`pn#1}}>mt1Kcnjrk7r(mXDx__mw>@Ie%_8BxN*J*MtE$zhmbXm{-(qr^;J9M+v~joR#-6g_(YOkJ(tR z$?n7(&i%jc$<9O~WkEU3dzh|k0d1rktb3Lz0h@dI#0h+X0&^o&*LSJ??&)mVHSMhp zSs%Y77kdPo$jKVESGnY9KtmrL`M^G8ZN^z=?a_&kA{Qc94=m`s`&e&oTgy&#)JHIQ zcUe8{{d$rhBZi?Fm#MQg*&m18AdZwi1k_!!U-_1<43Lt`{H9LVoTf}xqM(W$6mpLn z*!ex5^$PL}&|4M3>e-s@@7_NfgAgA>UCcU){qi66uH_rH+a%!H`a|@|r`GW2%0y9g z@ebq9$An3HLa#wi`pr4(O(ss0_WL|Il`Fx_vhj+saZlFJm09x1)9DR7p-CVh5;w9THRwjpzsMf9<8^k~b>?`kAbBWuqNuixk}JuTDADmFu=tcOPuC5<+2@R<_V+o93CiUEquYAqCBaN8zK=TjJl;G?=_gjZaWRZmm?Jc0?HLI_vYteUK! zzwB8I6CiMXHCM6?!->$F_-lfq5tqefxg`mJnI)2fekN_8pdjhi^@zBXGm|O3bMtoo zZU@uRAvw%(^zC?(692qC!U`2dojwbc03``TX;OYiwz)rB1vI|BJ0LI z`M>O^)Ed4Ubai&-#)g?`0fk@PbY3$t<=otf?2v=b7=$|kYy$*$m&Zo!^gV_5?>~Gwp-H626T60xv7P1`#4DA!D4kX z@I%dcY1Cy~nqRD7ogbc6mw6JHHMR9-mD}2pHGCd*RNOW|Y3C&8RGxy|c?nd(Nswc93gVRiX(BMzD?y z>aG@}UcgRsrDIirr{S|KYI|pCwX=l$k~d0k_(+mKIH>yGn%P7A%tR5{U_Q`f+rqkm zR|<}h0bxvBQ*jR`B8M#ePL+hFuui_DFimlp@(`LVJ-1mRo~GeV_dImrpndkE;xT~= zOOG?6UE2OlG^4dd5&1xDCnN1U7X2?xZs@-om6V*^_0zUrcTw7=Giy)R`X#p3E2hb8 zvQ?S#rN1ODn7?*n6U1v2D3x1A z0Lu?!lXXV4O82RO3S}Hmd?|`xtAcmQ5M>qF*FSR^#jcPm3Do6EW}yD_EE7@QCGJrp>m zSDpwPlm~c=^KkwD->c%BG3;taVryAM)T3xju!JF6u}YTj2SYnuwSpIiMHJW+uP8d? zFS+cx%m3#QpOcfdMOO}N{7OT2VaV@CZXqm&=`EfSjnk^4rlV<}=G4uX2TAd(nDAvM z=pC2U{J9E6p*K+p7LtRWTwi%!Gr)0mL;zU769~$TOd2gHvcP6ZBQ=`NaiJRX6p`we z3L*_XezfDnRI+~#JQ|;wI%%xm1&5R}Qt_2ijTt8ehH$liE=ko zfIqm#`Njri2j`}QUA+k{=2S04-kL}adDP5Bc7%Ezw+okNj(L(61iya4MIIle|`8J`3IY_%ZkN zB!EHqprN+pFcbP{P`3A8nlf{4J{3)m(#_}pAFLNG?!r;H;Vj-#Qu(I~sF6MG3r;TL zb+miVl?;zyMv124iLblJsW{$2l)mgTVSBFOOWX9Z%6n6p+Iv+9MS(ev_{g~PbkE0F zCsrUdU;mx2^nByvyj{&`oUWvitXamylqP{KeZrfl#H*cH1Q#w=4qQ34f}gBb+bZRh zSMg@a9r_>%^)-4BdaA^-^lg9SYkQLS6vR-MrZ$=$MvLky%xSXw!9zY)Z;@G9R%_XK z`Ls^?zu8-NOdAix&K?N6#7|*auiGK&I9)$CZKCb?e430n(b4<{3@z6@7U(D0hEX6i z66>lrrrii~1YqBci0&yLu1^4hK}kA#oIt{F^&v%Ayqt`7E;Hc$BBT&YjYBq)ODtrF z4+TLab8CDRfRH^PGek|cs1|-z!~e7M$P()pO43VI=zoU~WzU)!cqKKC+w5zCPxX!Z)POI)vnYsmq+?gSv2 z#$izw)wWh?C@Rd3MaOqnG-sLgHCH#&lT%YqPf0GHxO z>L_fTc*PvURdLe*zs^LEi{?;|9K)f%lk*hDfTZXE`=6Rmp?XOO(?46U>W6-Lb=e^t zIj$imuOmvKN7CgckDgXv@N!j~SRKU5cD5ry8s?MqAQWvjG&bbhYe(k1xVHu+rG%>m z#4k2;$Q=u=(gNZmO=FFi+-a4%60EvxpxzGz(T1%J>!0QCw&CiQkflX~lKHC2S)*Xo zHbbG*_|Jb<6*F*=H$Obl_~OdH%B$%|dvh#@kCXC{($x!w^u~m&27d zGvPk*;@Pr;SbR|a+5Y=>RTS;t#b5U4-EnH}Xa=rcC;pgGGmqrAN`*kv+Y zlI)|#T31TK!A*!ITz9pDYjdS32g0P#vQ^01AVsRL!$hIuPPU;IP*l%oh4;cPAkf&N?BQ9tM%z5BLtGF-`&0NPF zm4cmdl!!>SQ9mK&!@V!99^dEp4bD3(2~0L1DPMBywVB_lg_Uq_1SwL;4*6SfiXYV^ zfA*IU5F07PMFf(uUg03R6WODGW?Z7Db=2AtO9|PJolJwfyrJ1dBzrJLzo@2wleMsG z38nfNApi^IevR(%Jl<7AToXAJvQ5oV!2FBLMb8%8=X%`(A?UuT)A8gv_V?ir+;XrrzyWq%NPv3;%cNDO3EP&iNq5 zcPr9pvHVSi78y_ES8<+0MtW?vmX5~1a9>VBl}j6Ch>UVyK&JR^-?-$xgVgxN(=*~fJl-=2f|gq+ zb+7F-k7NJ|uF+%yexkR)({-pxFUvP&dgKmKCI51@$g)w1MW5^l9txWeQmZzE;~zxk zHN`PK_j(R@PC;ovK zOiKSBG8I?Kw|Vlj?}lxf?(l4(mznq~tFV5a0ct0`r`x$E(%EaR?@sR8IJx%we;sG? zK~eC1^d^;GXJQ;Df1x0~MG_Fp$!o>&V&MP4}{Qp$l1i-YDLZ=NNq3>VDzz{nt zzX&z9E1CrL9DjG(CnJG^r7Uma#1)qs3xPa@YJ3kxuvs9Mu_a1_Nhf%Zt34+*NgtME zfx>_@?gJNpaeUhbrNJZJzsaoG+~cv<1@h#ek3Gqu{-QbeCM*m^u? z4ExJ;TkY!19^{kX7pzTk^ z;KB+T$jH(_HQ0y>bIf*1v7=U!!bO~y-UB9r7@WYz;bhEeIin)Gz4L30nl=(^Lfl^sM*jAsF4=q7tY|BA?ep4oqo)odQ6M!`Da!QKjTDhcjlq%jASOj_X~L@Cee-09}4n z`fyRaAx7${Wmh=ICL6+TK>D%9m~Ue9SGKb|c2ZzkT2zhl6SZ1T^)4=p4+Z4a_BuDGPpCt}&Q4YSfmjxOU*_YL@*&OZ2jtTMox^|Ieqfumt6 zwP(3(H}+kRGb^u!o4vcJiuCgtf}CHi`TVDq7#9~1p;A~R1>R(b?k1O7#%Z#v2r>sbu6zY!X*bsZ58lpB*+S}~0$CozHxKhVtKu~V}0MmxQ<`b`*b`eTkz zV~59m4=cZaXhs_IrLtN)Wbje>D4xUrDg43znHR0VO?k@EAlfrfbSaaXss;|YQ<5fK zAz43fNvlV({wO1d&xFLQCD{gtc3(c^O6`fHdKwBOlZ2g=SdZyx9H(fITq5y4rwkUc zfoefn^EVsxR&A$2JRi=d+h~@ea+dw=3%vnz90HZSY67NE;VdX4h z&}r-Vkv35{heMZIj}DM}cdwR90bcEX^LUMSj^WdSy1;?C7$^WMu;mqAUE5~dynp2X zgSEry#L8-Zu_V)hW%KSVW3!-UC+{igdqj&g|P6x}!s%yM(-f6P;Ryn`MF|?3q z60cmKV5GAW^n4HuQq5XQYY}B&;w`-a6vU7FXj4#!+1oeHvIz6ps2XPPS zDyov4AWqGW_nFpS6u#~hfU0rft(!#}?+8YbkhYWZL0D!-9lTnC1fxG=a=;KRWL ziKa%0ka^AzuIv9e3w>UZT~{U(4GOM?6tP*$A>JE`KSmv_-xec2+~Zd#dZ#ZXF0VDi zEM#r-`l#qS@PeT>i`l{l%VlJn_X?+Oi4R;(R?e;-_)}Ve}33`|wU;5BEsx3}iokBbM6&WcV-Ico>+$MJ%wQ%>du7T|5#vSaxu#E5`RLx}zc zj1gwSH6MW1EJZrqBV~x11@^lvUvp)XO7S}Rfo$1`1EBx|s)Y@kG@0E86y;p7|D z(KJT1{lAN@F=Ad;7C8A&`S{@H^*#5YSt6F_OH7Lpu)g~uy>Ui3F(S7JD6@&3KJMjV zAv_IPWL^Ziuif9#>3i{qi;HZ%Ra}odM00v6#s$_H=fY3PKb4>Kwe5b(Xlg#mKQ>vn z3oQ(+o?EWlW$dH)8Ugkipj%Pd^+uFo`C>p{$K^jrys+4mu^)s8hj`y%{+$IgDd?>Q zVJOULxkdowRcyOO?yf1K#cZC2Lsk%ua)(MN*;a1p#QdzKiveyTW>v(@)zbK1iWuG! zfV*4fQl`l?CC_)@uoIUKYiX@MbUB{jR~$^Qco-oc0WnF^Vc{N)ncqK^4E21iA92K>h;H85Ir;7{nn_FaR;i0YDgRSRgCk4(wOkzYd6=cuOu?LN9UJu6 zmgYn^s*Z{cV3K%HEzmha8QnG9Zwx*uXp&>as3^>&gBnJ(XrWxAhFNibZPd}J)K8(* zF`o>5bgYu;-pAv{?1l-MHY59bfXM@24JhnVO6rI!!A7YzhT#q5i68c(1m}4xlF{EL zC*SYge|mOxDz36dCKrn-j3YrFQx-#V>`im$7^WP8+hdeQT0i~b#jW^HeuSR-y&LP1 zFW6vEr)(wU^i-Avl(FtrqEtOK^uEJtP8VeRN@1DU^BRsk&+Kg^LqY>d4u(PgVZ&gx zpP#X#FxVuI%x{ISF*{Cr65wOrDs#2yo@xOe<)H5j7xKG8rd$!*#x zwcT5eXRO5))1^6FLjgOpm59%F25KW~Cv+L80afC9;AFr-z|6VE>P!jCvx1&w$|a>B z-(NJ2VN>Zkk#Xo;Tu(QqV(42Adkrx{d}@n+UZ%br`AJu?6*yn((OWTLQqhfj18wnn z`_oK6a+Ooo0Qy$IdEMh`rQVB1T0O-#DskEl_HuWe?Jv^ZGcK(lz3@M5@|!u#IscN; zf&l5B_$*OyI>)D*h$v^y)ff6N3`D_ePUkbp=xb_%;mJAZe`z;fzrnF5VG(;hD60$f zGuvUQXShU@Qt?7y>~H}RmAbK}&WbrsB5k%<_I2r+S7bkPrUAi}iDpPV|M>-#SEmP~yRZeknkcCp z6X>KJnPlbX+>=P;JsS7BQ#g3q=QuZi-Ci=KWte-Fx$>i48 zj8Dq;wxVU$dtgpU`0w3A(uWVZQonwjcz+mJMD8ze-#nZv{Xe8n89qP_`!zuUmPWfN z?cQWGM%{t|ZQZlNu#zluX6_9-2TH;+kdVp~Pv=MU+w=UX-^Q2(?p3Ax8LtHL9vctx zxA8p#@kPBRd_uxOKapN{xTf3br2`(f?>;vuIs1CET8g&E=Vod2OnJ$6mM! z+uXmMI>*k_v$o43L@Ch&J+ZGaz#laMi_NR_Gvp;>7*}`(4A=;hp2mDxk1SH>7LbOl zFJOE3qlqIGpi{(lZGR`#1u`SE&t~MoEOP@=lazRc*ia%aRgu2yl&MZORqNe$4DBUI2V#fs) z+Ej!O>WMe^p#>s_*?}vK{|-N0b0l@@?oDrXcb=H2w=sWzu;9xVY#c;Je$hy#EclJ( zN!HRQapC>7qOgP_KYNiu{^>*D_2h;7%~db5>B9-m6X&weuF};~_D4yd==R({H9xbs zdVyz{t)0+2gAH5@$V>Q!^yN{oxHrjD5wcJM#?U^e_>j!dBAjy9iILGa2(I=OgYA0< z2Z*LJ6!ADc_}nZjZ39@a-1DOxplS$(BRc0{|J~eb6CZm+dCA=1pYioJX}+1eH`8W^h)~GGksGevGnav3cm->cdjc0M@0A3Vp8`7 zA^W*5gAR-zm`|#-jR^d#7C~}|DFn0zj6Osp1#9P57MZ6qMTSg8wBy+=Hi+AjWLNQb zdKV)OfH9iBu!bomip2t)6@huh0EqUERryKo)3{}6?gF$2bWYH zZ#kvSFCB#+#(}4bTGHvXmn9J@UjWguGW&2Gbxy~Y!3&DslLj8L*&5LT^aD=Ay%oXp zQ#`+aGXYa5&-$>@E5+6 z+9ar_5~VJu6`ty=D`+LLx%|z_`F6aq6ZDSzHqHa$@u+qh{!brIAvIK_thm-(&9r>I z_HSmIZl6x$2Rh2}KV&44GkoOv6sL5XgWjA)R^gm+8gLRO(NO;vZa;yhNO_A8w@tyz z&5LIP10Jk7!?uZptGGjwRo~w{;8NtvwFGMoA#+=F;Ws=!7HW%LM!QvE}ioRR%#8#ni2UN9RW(#(K z&jbNgca2kw%R6QI&?amK@|^3A)B20-NIn90*i9m0wGSw6f0P~9?RgjzdP$tN4}fOo z{og|jE#7uSq?59!RVf@JN|T=@!)ekR!PzROL|bl`Kyq$WN?Q^#Z&|T+$FOiGK;_^ae{xWrjM`sx;egxKVKez__hCnA5s7o zSIl940*0>#+|fp=+zS7`X}v&hV{|a&_Ok=kIfoJ_!pR}~q5RcY2TC-V?wOpRU1n$z?h`{qRriT{OehKDLMO)_`a+#BQZgs(%KIesX-M)SOgZ1{n5>^%wTrMSS zBT$GE(woAEAJeRR;ZgpP78I&0%){3F6bFFgVM=VL+(3;ci1|dJpuj2kB~uJ(PXNA33wIgx(^;2FfZPOz2zIY0pGwXh&AuZ{rKuq!!XHC5 zYWSK`tb zg1q=#V0`xbq_Vr5?((0vt zl`q$0SM9@mUoZCbxKxBQ60 z$GTn(R6Ta3OfTw;b!g1ExW}1b*aLW#a=73F0H^L(8|nYYhy23;i7B;1H6QHW#=0kd ztLJ!9=&B>~Og*--P1&F>wQ!Cb%2on%VcmUcE}!hg_}Pi~BTj;xl_|KP&$jzFvF?d`TNM zAmh*0Zl+5;KcW7|Y|K~s8pWskbcSx~YbevAwijuFz&gy)jIKqC_eL_lN0Lv*;wTrM z>cK5in5wz2DW!KG#%17n_|bgmHm_FVXV)zZZIA@s)_hUsLic#!N1Q>VJm2 zC{yQaL&fP7&%$4)zT5%4J6`k<$H|gs^|h;?X0aHbL*6;{P0KgRwBo z?@5j0$b(oN=GhmDS`&J?aqZJ|jXWOj(*)yu<}(>ItE;TpW%>k_tCvFIawLdc)wX{l zKfEBar7ra_A#^9i+CW!)WcQD=Nnj;FLT69#b55H8P3zor?i)h6m2j+;+i!?S*v#8m zTHN-dX7@=Uy3Pn3Cyvk*LS+y|h;S?k2-**I$`yFV8)A)uo_NHHht z;PMJRoJu}&SR0Q=A%|{mBBaQPzjTf8pZjuj9{zt)#%= z5rj;u)KJldSr*kJhAif%Z*_`c{%a?Fz)rOxzy&X?Btx^}@2(9H6Oo zu$^nabUM;P>D-DGv5D^pnCtxC4CUPIpXaXRP^+c?3-G`ZB*rL+>kc$aU&c1wc9^+a zx*>@F^Fd`a?Q^$B;YdaDX^x5Le`g>P4d}*tj6iH@DZ-_)rTO0io;L38|Ab?`IgiS^yhueG&;n)ZG_AZpV;eR|v9I{%M6%s5J)=MF z$x249Wg=XRC9&*!BUc@lW7gq(Ii7=L_ZFGZ^kB<)+y=iO&{IGaGM)af_DJ6MO3-(z=E#z@sfl6YNDcpM9F79p~2)>wOGBu~w2}`rgvA);GXCToDP_9A?*W*CkTqjgtV*PX|+-yN+ zCiNm*@kpQugiH-o^_$_wuzlY9=KQ=>;6iHi20V=2r85N)!cL!NwysDv$R}U*sy6u` z*7G~MyMy6y|2uzW)7PG54@mH&tNVA0dLjEfrBoyMn2##6Y3%-z+F6*O@qX+>s5kzt>4VnleF$||buh*> z+0n>}iG+l(4ofZI9b=6b+tfc;F^HwbKJ(3YE~Zi0x4t>c+HVmD&D6~T<{A17?Ghoq*yki-3# zFE)pb@Ecpl5gNjD1#F>2eBIUgOMI7mA@&(%a^vCXba{U6?rBUuZoAeZyvtdup0vn? zGV+iCOc9UTWUUFTgFt#urcUWNO-1nUt7*yILtesw9sRoo3l+c@$Z$*#r}7!|P>NX2 z(sMoU^z%u|gnPwoQ1RCTF+!kMGILr>N-byybdEp7hOig0RVqD>WJxSOAM*HX119s4 zx(13q23SogA%CxaYg-52o4t-JoqNCgqLQ^nHcs^BsTHxcAVHF&_0plFvf zbR~(Hx91ol#d$tum z&y55vmtx*`wyZh!(jnUUji+eBWDelmrvU+)uKGN4$N+N&OVKFX+b`y4mbpxPZe*sl zVRSg6Wl>}vr^+a==w=oV(2BZ zEun(*w?A$8yt{6vG;h)}Y&G1U3G?agaByhoIpqNIIz(ZL#QA%gv%V?IR=ZTWsQkIn z$GMMOx4k-P8H}d3Tnk;ulVCDB(Dc@C<%!c=QX=k|>OsKoszM=uvL_+x6KuY`7NqUX z0!aiyakTOSI^UlC#T?lT14*eUOsn9@q%F#)Nhp++-uyY6g_kzK-Orz%+})n*PU|;v z3R9Pf+h<^3n$F*gYdhh^y_p8*)}&Q0{A{uG|0&%C#S=`&|DbSR@>LH%s07zz=PIP2 z0hFWb(Xw))U_+jS-uIglL%l)8c2t^KTBI77 zPyEKk9xBW##h)0<_olj|5a*`Yh!)QVe=LG+ma~uu%|#6Y3(pOAyvEXQ`crfU_F#k@ zwp612cQzpGR3%5w3}- zZ40(VD)if(r~hng5vD*jhD49q$~qBMeVU&5iWl7#o^F8XXNSE?@>hX=IqlhD0fYP&Vx9R+l+jj83ye3P? zOEP}he0q8R+pf5is>N@1tXv+=VB$mwAM>8)l+ z&&>2?B2(H-qDa=KkPdl^@~^aj-zxv+b?es>gW*v@T0l|pgOl+htB9)fdF*r)Ob5~r zq8{U74_T!p4bxF9B6d0jGU6qi=06ITx$J19p^(Ev zbydujWFPi-Sci@PlrKaxsUOyz)cMcrg_-i*)57l19VCHUKnKHzV*JcE7w(QqD!_}1#{u@kN2E#B#Ss2B$Tus#%A%D{2ecEGHZ5(|Dw z*yBwgOVYK%gZ5kKtm(+-dqI;5u$#=#?=A0H?)?1BURXEA*7gmb-@}!<->0*!VS2W% zt)CUobqu!x0Vtan)P-uF%r>LH?@XI}Ltb3m2I9 zh#p^b))UcJ8&gkTLACFK64%d{P4Nw?hj-AyEv#BL{<^H0ZnyuOK?HD#hpRdH5$>dB(51s|7B;#k`tS4)=<=yU?mCVrzi(k({ zb_GOKB6oLSHFhAxFvEfpWCX%gl@ygu0>DHBhYkq9QZ*FdR0NeL%m5=m+`l176cT&{ zfgwRS2iJecdwu-<_rr&+hVt&N?^-vy-PP8wFgz`Fs=A-9ygwq#D*CyJi($PlQ8_8b5Q?ix6hz{6a4rGnF=&KG$Zr({ z?r7;iSkWj=cVjROIiA-57YE&&EMsud9ASh%F=kgRSVV z0Tr69t#ZxkzIn&@+3|n6s`})$H`}&?U{l16&mzg%xsK(^(> zV_R+VKTXuUM$gf_9z%v^^BwRFF6rugZHqt3e@Xc=?{34lqJ1Tw=i>SME8gT&*rJ6Y zf3@AX$krgu#LWH_%=eWCO@N^s_p9T*W%+$Y5H2SytbZ{qo?a|TeQ{^U|h z!+7dUDKVvp*J&{*YVS8YyS@5Mrp(H*OSY^wif^O>l=sZoHE{8=4?V((qn)=$qG> z#1ji28uj9nV`iwe54~Xdt5(uYT#`e#)risC^k_6YI%uSwq@m{iXmv-~V!1Gtx2ye5 zIZ(6_HZYsM`}ih*IdB!-7<|v19pbEB zw2g?}9W8l&vcf5)Y@4)ElbXLBjG!Ijs-WI)1o2h5rf+ulL>)kOv-R5WmFwaxfP)=c#kaWB(g*L#b6sAp5H z1V(^Vc6+J+hjqS15$K2rQA$)$+h3?K&ee%Iz{FPhhOLA}k|0ZS{k=hQj!!w znVK?C${xl8V7Co{-68cDhBmuBF`xG|a^n-vJb-M$J510KUmzXtGO?KV?xjb1GUn;P zxY+iZSzQQZP(>grb|-Mr6U{3;mK&~LxgjIXSLfR>E~#u!ebf9d7Hg&tCER(uNbwt_ z6i9O=rHIsfP{*HH;^R*k7{!%^U z@~M28fRuvR-YkBOm~5)sH|wb~$8zfHNrnKwbzw#Dns5P-3Bo9*V^s^Fs+7_ZDRVC~JVMK;CoS2qyJr%suI2)Vj`2U})%577QclIi) z>&B`I;UmH(wHeh7n7fdoILo$~nA`8?taSe6Xd`a^;GpP^R-Ipl7jJ4NC_hXJht~`C zk)UkXkZGGE`8eT;MDT*@x$apb{&Kf$G%ku(JDQU6eaaC|3{vR2bztq_TRuPMTeRHONE!@x5=Lk<%t0X%V=EFRI#2|c z4+V#SApld!5NW6gPvy)HPo4bVM5LQwusfy#0|BQNq$`}%9?-GSBFV`r$sMKb%xTm0*hIvXo&dS?gUNcat#^|7vPI2WD` zG24)jyn84Vkbl&H?vGMG5R~0^b|2u&)bzn@HxA$4hJ9I!z|!_gITdxA<1PY)Z9p|c zEU^ChATs(~$P8f*Nw+OTKhYb@&Z>+_fc)19I&W2p3^nYY-$$482y4Z~dvY%L)Ut3f zuDWNh-b)4B_B$|KT7J4{o~(-mBklycR~o()@yN8spk<*o`PK$p)y6cjlkIL5_TJof z`J(>&M5?p0H*f+!=>{>M1>?pmtJSu(7DEN@(X*|i*QYsUN>H{^7V#ud1F2344pO2o zt0ov%2PrF}sBZy70|KGgkR#h73VifFuDDqr!mhMGZ4Mb=hS}_Z*um|ASCN40?wE@; zd%aQck}z??@eD4#ngdB~!i2fWDjE#`4mfG(zb@ES&`IG(G(n0^rlGKd2NvCk&Iq69 z)n9=&nE0CBYeHy*h3TzRW==SX6>BtL3i9$j!>7LaKwB`H&-6DTpAt8MMB8$YTM;2j zoRKM;E4&l+o3f}5OL_;O!*(A+HYD+e)#F=s?gSsU&buqGsgh}(D_yc>U!mY zQj1{+Ll~T^$PUInpNe^5iU(yZfm|C``z{en#L^e|UekJr)b{0YsS$o!C12jFpj_1& z3gPuKM=4K8n?~`{1E0T59w(!u|KWEqXslqBecjlP^ z`HOg~tIwzV;vu<_|73KFQji;Wb@z1K?aqIbpOFRIrcOJZR~dC2z4lsl&KjH;Z9Q5L zTfO$2zULO4>l_#TshrHsH*OgSq1ndrdmmq{`N7I}_+M=CTI-dK)315JdWoNeWpw2U zw(yQ%#mPH$1#zpT2w^+Rz@&9azn#g&s}E+Zs10DSz_76)K9AE{=bwx{s^UsP z&v~b=2YXKQpk$iIShP|N@4p3bmsov{(Advxs~#I&YB)KG^3+wMx&7*%zH875&5UK6 zZz)ubG@)tNmCGMMdtVXG@*kUv9Q(Nn@UkLR+#|oi$grjlROP*zYVXdTW&Jp!}+f67hi8tsd;1#9m6_uqmTqs5#m(wlkli;v+8`~7QH)T0z5 z^Jiwv0!GD1@><^yXQp;ncybN_;hoT%1T9%a_*ftc;Tdxkib0}x%d5Sh>&wp+G*T$zoloJ{d0KPZ^yXTklP{kQadY% zrEi{iZ)u%xFPb9wZfgSTjJ1AA^44b=8FrpfP;K@GZDb_gSsg2#c(1zmDe9tcaGZW$ z`X#gPbc56=xhDSCq|1A&Zlm48I&De_Ik)#v_5#dcd;WdH4m4r$26r&&ew%I50mrWM?D?}(6DvJSL-+} zN}-kp`t>tks{80_Wza8sO-c_%5M>ebfJM0I=;X`>r}X#!Yz*$J0LijTe6og zAqp_V1kQ_Bch4OguR%gqX3O^*LziOUG`l+(M2X+WxGS!ymS*3i(l(Qqe*Y8csZ)<{ ztq?;fv*GNt*2}W0skh&}#aVnYx1eju%*_1u{H!(^xx;W*eRD5XG4!rQFutb!vH2D< z3N^{eN962Ft{Xywg z&h%I`d=syPpsx(5qew48dw_f35^hZmy|FeomN3$H9m+X2zu<T5PH6(k6 zy<$H>WD&|ullybm!Ip+dTZh3307W*b6#luA^g-aQ@u<~D5?cuQeo1tv!rht56;2Qa z%vg*4MtB}z3jZ7AUp)j2jiOaK)wAd(kNqVxYNX|9{Evk&{MY;F=Hu9;%aBfuPw2{A z&8bnKrrNOKKqC=-MObWcqCQafx>EPPhL~_s=7l(8hho-+c&cy>^KCocO&Dieh{*Rf zF+|>QQwEiW+ad^(+e7fKjZph0r5&ZC05)Y`jaPZ6f(f|Fk-y?IKp zxgg&z>~e`n&k%Bwg`%kpQWQY+r{DtPxmt*A={&QRQ!|=JCC0Wz3se*S^Yt%gnyz7Y zyH8fIf+Ju~#&7mB;uL6I>&vipC5laS+`@8?UszTO9a6I*0G8arJJX;WhKkqiJNxR{ zI3pD}3*;$G_&v0)M#f=o@hb>=(5fql{?{ZC!2Pz~zg_EGyvM&ffsfhiv0}1u?WdV~ z0+UX<-L_}s;p^({PSo1Oh7EU9-*HFJIU`q(x{~p;G=_(aG6NqRzB#lCr{bH;qfzj0 z8@CmXxWn6c3I!+1jUfXM=XOMN(E8{G;%nKr_{6Ph^S`uw3n9G>n(dn$q@^%42_}d3 z>ky)`J|$NrCwe4NPAfNI&-!JAwOP2oV7rIoe)mElsW>;5eKOJ8X?ZbQqyHp#Lz|O7 zQ9zy|t&Y`J6WESYhq*fDF8FLMAqHk`9db4uCN1*QQqLK)t>lyIEo-(Op~XXWN-ud4 zj7^Z6lK~&GxxK|I{0-GfuHbwr%v!qZZBMhzuoJvBc%M0TpP3w4OZ(Id_qb23=Qm4>H;sVEE2r2Q~x_< zE2-JA(t2d(QQXkJa=wealxK8=zp(!_F-7n;QVP9oD{M%Oh%N&j z)cgJ1DEDF3v~OV^*{O@c7=(%=CANDGPTN~Jy)}M%ZoEQG0QM;yS1%ZToW_4&bAtXh z%^45l zO)7jNzMOLJ?$W8@@tbxWbHf@ULo*kaa5H#A1QAT5K%7Mo$0D=}J<%H4=n#Uk*bo2e zIL1<@|L)Cx4=l9y6~tEd0rAfHbG?EJnIn_zY6pFP*TAfTBjl6%&#UFRpn2CQ;XICqF=kUUyPl z^?nx22qr{}Mo)5gmzlh3ug~`Fy_x8soK0h6-$*Vo0=(Z`von;BtaEv)u=8)aAYNk@i{VOxLzKp2gmV!-7SqS$W{( zsA>Z1k%GB2cwN4L91Vspk;>a~eP>%<<^qsupKz1AK8TN^y4Hcg2b35BLM4{+Q>rM5 z#K=LM>L^YZSIatHVU_R&WyuSgo}1ooxbNZVhPdsI0Q5MZQ-g7vrk3gN?S`tq3M^-S zZf&K^+*VYX&fH%d@f*uOVwb7j(vs?BAG|9Zvc#tKNXvDT5O;NGsdq+6YM*R9p`oFh z570^JoG)$1rW71gh0-y2kfWlGS088nBV+61MG}Le00~71m{j2)jqpzUP2oS1)K409 zxF#WkwfQ=ZUV#aW%HDh7!`_vY(BR}|Ua({5u{Bb_gM9VGa=eWScj`df^D63|5B^rH zU^)9F`NDW#$#cK5wl=!g$lu*xxGT2QCgQ|qzh(z|TCaIIshvQB{SxN={N{s7(~N?1 zCL|*bo2=p&{==A!vlfhrFQ_{n5QEEku6qOBX#}0!;stikmu=2RLl;&EeeO;TdHJU8Pcxim^sgxVES8wqQ})@Bc8|7yo*PX=A1rDf1!wX_)Y@tj z!ZJ!P36;x5@(AyE7ttqps(*x_0~Boc3a1TT_kl@o`m3`0;(d-7d^|q^jd<%=D#>Zvz#Q1^+~7P8N7<~` zgP-~7&Geq>=~#ywN>NM*JopZA9+)O|345LlDbc|Z?MzC8(<%XoqEx`i(kH&9a?Q_M z=^(i+bF%0}BLzf6NHGd_N<#USz0AmGZb_re`GM@?a=3fAb6!AgMXj=&Dx9!t8T)MG zcpJW6$Ws3I_T#7CxzuI#e$8((dm$~q-xVJAN2)CGofACZlDpLWbn=KA|H&DcRR#AH(0x@k}4`Dyt*9-KGkQy z)Xt`V`u#e4A_XrK&;AkTSGQ(UhqA1!3A0FQ9GKSsZ6j8qe)TPXkVFO_(w_;6TS+O; z%mISh3a2kkbQBsCHWLebzmw~7;NTsO@EWi~qO8b|BJDhkk-D#?y3zD>kdSd7!i#6q zPABE6ekWBJx7kaI`g@kx(O!5#KZbecM{0xQ5#F^+{Up7mQH)D{IXU?KX$Mh|Pxx78xi zbmACEPoIyvKTl;{J2JFg|8otrvSBhjRrPfkP$2llFpG-9F=CyxEnzBjzv|Xm-u}d9 zwKuhEusKvX-y%I4c#IKF=V#O8Qd$^xbKiUHGk$yDFUCdw07TCXpYj;vufhbq%ciJF z9D8QYynQAQ4^0KeHy`XX%pm~g@@r=H^er(tfJ|-SH!q|g%lpUDvsb&PmSKTi0JzR} zU;jk=9{gVo3E@SEg9yGU<@KS6NF)Ns`*I)er3zVM7Fv79M;D4E0=-Y1UTWTr{qJk} z51uyVM%OkUeOxYSHAa2dSZzj!nSK2N&~k1R7Lp5=X~YmsBZDjT`Q5)*hubM~L|=K7 zT4fdCU^c0qUJe!`kNNNPNz34(aOJ>=76b>XM;aAJ`U&^-r^|La#R?iMxh*?pJWm!h zhG&U2HwhXA=0XopU?r3=yk*SPL>D3`q@|@9Sl%NS_@U}{d!?aP?b*9y^BJ`qL7k=K zzA~5#u~t+Dn)l*mus{jc%*?vvGP9@XCw>h~`=mNq`Mk(+T5-uR9#?Zae1z<-&INX` zDhw!g6U!(*r-YaOG2c1Vi4YkZj@?K>m^(N2o24X(q|wv|ub4h6P{e`(FRv z6R2a=LsqWllo4_9=!1*>+m)W2Ue3sX#^uzkq)VTTl(4XUiUnuZHS zFc4nPJ`f;r3w@1ihW@CYvzFf95zIenR@C!M!53~zzuh?5ZYJPsqZO|k8v+)fXibFE zJ>FRNuXYd8+EX4u_GB94h!s8G3N1dctn35&ulC@a(ubR-rjqwhGX6k+pag2WcB!ls zJuq9kkdZ&Of0rV46Nd?x*jQYRMwA4G@nh?3gZBc6&C(QlY0R=WY>b+?s%@)OMOZNA z_<4rX)R)iJk9toXtnR$AIWVSA%LN+l#$>VEv% zG9Wb?xI0{4A3n!qlxV&T6RP+Y6DERQHuo5=d@Ux+ z0k-&}iM(c0>&`(MPmuMzUBNV6Aa664sty$)05i9a5Qu$W3leufciBDiDe(O9-h(>z z4L&`L`#aVeTGM|-v&E+$I=M6@eZV4^`l_B16yw7M=pAjZN8O6Hhc@_jL>o!z>@(gX z63xq`kVq^e4F*9tK3MVK0LfP$w=7La@D*8Ldn9zQ_u#KIZ^+g2 z@^1I(wMdC2r@y+~$S~XH(bH=>2S^y#!i&JTyy&F6JF63NrJ31h>l4gt1LWl%HqZ}K zR5lfl(f73=A2x6$lnMJiS{_$`P)M;@2>b*)KV zd9*JNr*@x}rMC_X8L+uw^Dti121|7bt|obc4( zf3bGG#CR85Z|Z^(|He7$@rF6*Jx|nyno(Z(0fAy)pxH}D;#yc^H?m`Riz@LvaZtO) zyLwEtwI#@2ppnK&#Cygu0(8=3v=*wOz5LG&Rgv;UMo8ZQi5f2T_B+GL>!B?H!F)r< zbA(-dtU5$feY=YI429X(;1AA#M7d||B}=8{ieMw$DI$ryi1_f0bY2YcscFQJ1qZm0 zSvcvuNcR)+ylq@dSsdx{f{DO~^F9&Tqw)^S(ANvG+9$ZltwgsbA$D;Nr?{nOQ`Fl6 z=hvxOKGsH!@!-9`+?&nx-3|C@+pzg+K&+}Md~|&($;z}W*!f`zto$4pDJAPJYn0$h ze1I#fTzq#ap*-o7I;kb<@-^{_wz=XIoM5Y_{4bC}b{23kTs$n8e=*OuoQ}s#KlIIz zkbyJ;lOeB3-#1T4F{QFH`6t3I{HT!P`?pksdGZoo$Al^KmY$3T`+zPfas(v6Bj>!L zlb0y-5Lys9u`nq`m*^Qhzv@_VKB(6f5n}ai_iFuVpPUqAfi z9G^dPQ(FJZ8bqh7*fc1g55?@dDseTns*I&2W;BJ>CL)RO6O?dj?x%}U`?H*g(0~w> z2QaS|A{{hZ zeb{)lQkeD3*Fjw)H<&IU2B855m50g8JDJ=C|8vjLc0Qzqy-67zW5ZXR zX^k5`;d;N?M{i^o8C0HCSi|=$c@naclT1Cego@sqA)2K{KeD(shVnL)<>#mdHip*N z)xT{YXO?6Iu^kr`bhMNJwGXE8pDh=WH{-c zi{?wMTwVKoxWP8~ytfY;40A&f7e0uII!jE%Cwt*&4Nn|cI0g{+5x~RehSqSOVSTop zN8YYDJ6KQ6Bb>U}Xcwn`WG;MYvt-0no!Oaq;(;yUpjg;i!k&#b@4OcFVvy{0?QEhE z1Jc;4do)`!$AjAvgy`2)zTxOTE@$l)2ZBp1w9j%@>n(5AaXc>?wT-*E9|nD4Thzje z$12_8NAY=j*}(-{-x==0ULa#6hNd)QrFRISGXP- z{t=R5nNRuPSw)gt+;hAcvoWu%>*}FFZ@Vs;z@{C!G!&X;DW7hW5EZ*1YwYM)42Bs9 z(tv)j1VG?X1ZvGF3A9X5jSemB?xXlL5@r}!57dN36N^3+cJUm1LRTdKMtjOnsW$rN zYslA-F*U9^q7G}+*_;Nt^AeK%M?v@^O9%(WTn$|0OS>*<9b3vHDua@`>z+0=c87$b^e{% z^8Cj03jte!ULt+Kl*UxLD8O=NJQJn%9sKA6#UCSJPxIWVG>KlecOhwQxfKI1)9H6s z*`qI`g?RM*AAg)W+>FP{k(~- z3>g_UnRTFVr{0vFgTBsKkHn=Vg0wU;(x%~uB@11CklMe8WUY8qz2nk{8DC|p99~3< z>Xp%Tejz*TqP4E@V${>Qbg?t{YK=#RU4(W{g~!BOHve=o)~1i``T*D2UiCfr{l$1c zMH7C4P*}v~b&u+_z%{#;yjle+lnm4vCd)r7dHsLU(qO)zlCaarZXU75qxC-O)sQ;i zi41hV`~+QMK|n|PZ@6*WG?q2m&~^&3SM%6S9qDZv!sCIE^!d`!&-(fj$mcgcW_G-d z1XA~$Y^el`N{&1o0|y#jj}$}r(4Y=WwP99HcDxL*MM?@^)K9g%i<~{kiNv}k zL*Q$9UMz-$4@pQw`70tzr?lD`O^GZ~Ip<`;T)*CQ zFNNi%A+w=tPT*sDAcReW9+BVbD138$8)e-iuHs2@(g2acpJqDBj-BqQFCx}mnVr5B zX03=tgRUJT890S?7F@Eg3jX`q&D66m6^y&tkpI!@d93E>U_n*qqQZl4ddjdNrp~I7 z>MMTVncDJT{QnSrmht!&Q${`Cwu=LPKNq=$au)UHI2>iu@bJF9AZf{ehJ&GFMgBu^ z1~bpI2j|QfMt)RsOY<8Ivt@v7&XWX~-`cNxdP`MCt3~7Ntzw+-yu!!h60d)-pm}!OZIYl^nO* z7((l5%b38wZ_|hWL|S1UW6rldbk1o%ZMGrH9SgVnak8J#{<&sOS>q?&HS$tJj|@zx zhIfEgeJzU%m9if3O`qOi2~z7M_u4V)-q zQYo523pqb3My%AdRe&Beo5-w3=Wnm4yw`V0BqAR`M}(NGJt7fIb&!sCKu;xbL%mcF z8SD)0593C~`%(sl5*HGWntR8I3MNsJ5j;(zQ{Z=oamx4Yv{ej@5}zDMc1m{gMliczQ2-GcoE%1$eJ z@)uwVI$cyJqOPY0Eh3Ji(pM=Q?DLSSXkA}D(6a4M4qG>bleU-J#H!Y^exO2$FngyT z?>nIP?gb?im0iYow+c81XjY$un=!`fprrku=>nM^3zB3Z(6o=V5{nC>@KkI z>_x3>cSqm{%%oDY`HM46!0bMFJ>%fT6va5n7W{)o-l_eSzxdCE_h%Hn7oi`jWY`ic2_}kFCGs^g@YIova4~i)|97 zSg=Vgc+^EABaNG|KbB@<1LYo9uDbo7E9trg1g0^FXcpTP_YzgIPPqcQcicYZ*v20l zAF&DJ+3DOkc%^aNhrI@{wTj_8Ex>bj9u2J`{M?Yk98rfiT?{X8kHmzkJ_fChe6>ub z46B^#cMbZ}#=?47a4h+Qv0XZY6}@&xx=?J z9u&q`_P5TbJ=Y!ox}WNN_QKXHO09vKf&4Q%S?Cerom;lL;~}+w5)CbdK9g?w6Qe6} zCL#fRINlvS-d@041tDkmA1k*@ z+6*2}qb1E;__HUc>^W<=$g`EpS!}s9SL&E7*KKC_=1SrnX+*zQRzbdyV^cYy##2J; z7-DX2Mf;+>E95E0{yO} zU_vjA2XA(WQmy4A|8CnFMsl&w2X(5m0y(1+@57dODZlO1Jyrh|w!pd{rro%~q6V+k59qFh6D` z!mKv0yuxlr%xt4%p8T~i0GI4Jk0>TlLF{zFy}&MES*8%^&i^t=LdNjQ&pRMJrILgv zOSxcHvpTk0u$>?no7H4RfChOwvtiD$Z=n-)%8sfVI^1|GC@3eJw!qy=EVYv(DaI%pW%=A z3ZzfXOFz;7QnhA+2;BAqcKUxq1n_tUMkrB8>qGWSamsC5+2B@Ntx!B_2YG>%c=civ z1I*k{llO-1__VIod_{7G<{x|A8p7_*xiet}BREz_LC4!hv@cNfXjL;Bzd?RpB+$~L zwn~G3BVNk$p$bov-yg9}1w z%tn};%-<>i^8+*C*IjqVLWD1ssOy~Rz(^v4c=6vHw)d#;qnx1iofFQtQaw4yE8<(( zo1p7VGm2h3tw?RH%}R2b_^oZBQgDAP5e!O>RN0VqBxa{6b}j`TIVBQ=<8%#^{{B*y zfFGicrrSG<;F((-^w~S6xm~$U0_f>!oj7p3w!`3JU-|pIoP1KUPz{`V73=-|iB>6@gjmy^kIyUz1X9L75Xk37=kCi|{Ky+FNzu;_dLjI5Q7}sQLTr{X_g*2@k4VWiNPK8*LDFB32N-0&mWo-f;QS&m#J}tP zvd4daLuh{$IGnxnf=TeF5C5Hm@%mXvzlFeHXFOGZS_u|%DEp1|4y+eBn-~)DLiODRFHQ*>L9gpTV%l_a9Wg^Su;uq9uC}sMJb)LH<1WELBJp&e5I0a z8x&Gt3^*Nv?`~Xe&3t9K7%Yf43_;eu& zZQ_=K8rpjqZSQiraI5?BJg-IF?_H8{+j#$FUR3)!%Q6R*c*Oacfxmu#A~D&4bsoht zTfdcfX}{}f5kX*Dlx$C32O6#R)?Cf7S4fzA9v@5<+1Q98-K?fD1f~an*ifukyVS!L z$v#KXE6`D-!-(CTYU{1=c)5>R!s+pV^l%$52tMXC=_()f&V|(i@}hF_myUCDEh#Mf zVvvK#d$Q{-j$Z{0(uK$JsG{h@-bSj7lgTA4q}+_Xu$gui^%OT%Q-B^v0Z)>gMmW&9m1# zuhl3xJ^9Ee-jdApXGiCNDY#T+^>~C6d?W} z{R~uHwMSUl|HtDU`Pc$o`t@pmpF?|*frqF0IG3UHyh%0xb!GB`-;?ADB+`1^B8UO% z?O4h-ksE(R8Yg*uT5{qB(kfz)HOLk{4;_B|IqQpDLF}wF+{jVmr>^pC<}FM?NZhxvthGA zTH$i+k*od;X%M;#%QZrwyPecT_Sl3-)!-iMp!ulldjQ$fE$5nnL9{m)>#|Z8Dxflf zFX5__-p==(33sf9MRPn1Uy-4PXQ1L1%^i{+@&XFjjXAN!!woXC<&2jZRP$EDPu zn4o~h%tjWu?$++g`NpRQfTQk{Ex<0uj_vBZ$2LH@jBNMk7zB+039$0h+%c2P62lYw z++KY&FlRodQC}SV86r;;Vs{inR*Q;c_k?!L6S|lUITDHCS<1IfF$ADgn_a8*#%M-n zdOKoRjuag#;|m+z?IOuRbD~2EOm-L`z!Dd7Ab2lZfoeh{7_6@$?Pg|tD__}iS!r#% z!z7#U|F(6ol9*m68T&edD8+eFa>FIcs<;n5KnL+rCjcm{G^lXS$|*N6C;#ZiX(B_i zv&6$P?-G?m2b^yiz?sL&7F0;T_0_!o`1rOr*L zVHmxKF(>yg$9vnw;QVXY`lV=?IH>!6lD4j8y8CBbj4qz#2CBck-X^N&`SLXl$wA;9 zQ75`O4;!E3L`!*ezf`xiAIW%6Ue;yy-4^t2^w(L$#W{R)(JMHnqH{eFeT6e;+=P!6 zhtpQfEq@B>$n|_`nFV~l)|O{{Y|7PColFCk&;?!66M347XI`ne)vvcyT;wk4*gt>|t1)Mrt$ve1Q@B#-u0DqNtUkk(^_+fuq5?~7)ir&g-1PI)Oae&r466*R z{0~4n7)g~mz;NU`*p9R*XhAxU!SDzlu_ZiYO3c+I-uG_(-!jjO0_PP)5KH~1R_0jb z8mLz}CM%a56Q8uM8C=NjO?SD)E4Rx0S=_&r1`7EZxF>|iIj8$!{A!l9;yt1FAR=t8 zZAc_wdl2e7cG7~t@Q{{f+4FJ{@cpeLcyjhI!^S!J^cB7wnucRSpvH+JxOX-QJuGD9 ztc&rp>i923jF$!osFm1d+V1)vY{K?+^6?}RZ1MwDrXVV917V>0!j<_;BrK#d3~W)R zaGowxevxq@0o4CdHkaADxc3A+=R^2M{w|j?de>vYepY>>!Ig*yeU@A#Zfo-&JYNi@ z5>mk8LYjGFUaFGds@sxK{;1)`iEju&-^-wPSTZusi-3ezu_A_lfzlfOaLDmzy1rBo z1-Qsb6P=YG}Z#>7(7M<;#a!?@56wO`E?&xVr6+l0jGYM z9y?oF=w9jcb-u*|>dt=5XE3SI4o;hAX5TU%;v)Sl)bF=WzJofpO$Y3LKSOcHklX1b zzs33_7AD}ruk)Ufw-dWJOoGx)O)x28HSvk*3~Vxm6ZE00|htT^_GHc`c!i4;aD zIF;h_N=S3URfC#c7J^ep^FA?+cXpC;L*YTGdiT`xc}13cn@V?8YtkJD8^%Vb34&AIMEpiD`RXo{-P#y z9lYOM=wLlJs+B6>maex!ERa;f=8;sviThrVdt>PET-{HK+DcEFp7}?Nh3uE|L?p|0 zllIL09cR9CG9}wRJ^>~lFNsHT++-R#@!{Bw>vLJhc*R^zJN#;4|GKJ9)^qdR-prFU z#)1Bv@Mmhd3I2~s*+Ilma6A;l_{|3jj;Ryc-OgyKDKzHgrIApL4jYsnUip*U-^`Dh zsG@V83ZZb;5{}z?6#+Yhk8)=i_jIVM#Ftz z7O&s7YJZ|qS-~_}RQ(s*b*c5Y^(27OZfnYz4^KVL&JhfBRym7|SfmShn-Vl{K$`{@7D4f_Z7_TZ+ zXVQG22e&cSd$S|sX%~kUwrOEGl)1_V33|e@kQS_FW2^|z z-o<8Etcup$YQOG;$`-^Gf1Ka;v`#WD=b)Oyg>NG7igVw?eiVelY^ZYptHjjZ$e%69 ztaoodL?Illzf}HZKceYF*!$rq4-eAM$9VPlAf<-RteU$Hw#!RjFbHv!zwPkDPnk#w z@kN5Qk?e1l5mHJuh901lApD*#clX`1qUEd?@jhK6!QKrHY3;Mb@jm`X2M7I1fq?Hk zf!ftoOMBr2WdXoqmt(Z0qhHDoftt{McRP^z8GHGAAACozA=TSw0kC?-H=pgbo-QDE zR#J~_BKA#2R=s4JM?Ie45=EjfEXehmy$Rf@aC9MG9Phv;@Zj}0{k{7g{ExrM_kt8|9^lKW{vD9=&1e;(5(+iWteLOtd+Y8CsM1}YOpS{SYYKL$_{IrmE|k7 zAY+4jfDgBtzd*O1)Pb3j{vz>8PVD1QwlL?e@!el>Pc1y1W59X0|3rh~+-|p&JqI}Z6_fjC1R)gnk&!cC0GwSw!)cVGuk_nTc4x=F- zC7bvYyZ}xj4}Z!eJ_De)8Zaq{BAW@T%%j$TMZS=YLZVe*#kXI}LB z&#k|1o<0kZBON)MW0@h1>`0~FzsA>}w>@Q<_mYy%)}Wy#>)L&~IW9dMMWyr_*(<2E zta{_z7w0sJMG0Tb?jtZPfZwy#4$aQyj=)?*NhjHC96^8qm0Tb7=8}?Q@c1E_rlObY zek;u;J$1x>=${7}QhZ3L*iaLm{cA+7a4HB&x@qK!PIXm5C@DX$Jv&0mD=9!sU}p68 zyeg{ll+*k5Tmur27te=bYRyDJx2T}zsiW#`>`B`g5Ra#Ioy~k#koVu{lcM24uuSOe zzEy^H2wru3pK7)$y&$$FS6qWg@lDB=z22LCeMrZjLf3s2DTiUo9|xMN#VxJ4fxY7W z$Vm)=hlgvjIDxWg)vdhL#-sn*(=R;wK z(*xL0WT|zzFr{^aU88kcUHK#9fle9b6#=mnsr3maxjdI5`AXrw@ z&{KR&b<|pv_}NBESx$W?{tYFhrQd_k%=C8TK>|X&EuFCBff*E09s7o_f2?xtH~II~ zw($^Yy^q6PEXcy$M~_6V#2SnK5)F7=g20;+k{qtRUY{`_yOR`S%M2u_Ynmp)6m&Tj z<*mgjbu8-v@#tnjktpJuWimtMu^f9T3R@Od4^g(-ME#3#OA#9o{e4cij=j#nNP*Zj zsGRx}P~{@uyx)US@8Y(N&!e(!X4%T<QsX17KNqQa9{p1-OHt;JwcC_$$=HNs{P17Wc>=)?yU&=jEgs-WWTdqp(N_Q%0f z0&_*xB0JuMt{wK!zektox%|j2*_aw@K^}5+b}!r`bgPRb(j&IK7}tO54Zhf5l`sam zUr4CbWuc77@Qdz#K~@GtWFv5N05b(33?URiXhVn+8$gB--Vib%Ou^)YIET>I5267? z28byT7dM;D`}Y6c>AN#5%VX-Q_km4a@H$@V0rvd!r^qg-T79X{LvXwU-M2BH9J0{8 zrVZNT*>r#X>y~_c8NO_*qkD^3Z%Y!k&3u4U)JFmW2+DrU@E6Hb*ws%EYHYuMie1ke zI2aGrXI3<0Z81Q#LSY7JM2SG+_W>XUc+Qc5a5VLVh+Ju-tcb{QxB)|HT=VtLIp=lG zhI?MJFeO3>cb~#Y;v;#iJMfFmX@v1iW9eC(QpJ_p7FlV=5(t@-hl+>XoJi-{kI=O9 ztvPXP;3fLh{mE&rKJ+(W*W3H$!WEGHiTsUoCEuy5+Sj~M`4OQjwHZ6_;n)d@b2R0G$k{?3MVvy3uIfkU|9xDt%A zlwwjQ3o=E-b~0P5-+IBR!tlVDL>{Mogo7h2*x)_k^-$2^$4SW@BQdcpy9As(`a@mk ziryge9wxFgs^EAFKfBBFCXPU}zTAlnNRAaJTFT~J%XD0&u|(qW=xc zMYm~9=05;Xb*985TJYVi;r?!xh7^`#bMcpN9*K$ zQRIpNJp8)EmXtZ~LtDL$P=tl{6Y_dYPKFM*nhILe1E4cC&O?F>k?Q4Fo(!v8S4&0l z+n6{`)&P6lH>%(C6JISR&P^Mq671o<@-uN#BD;HFS*OhL~Ib1iTWk|4Vs~^tS6YC*q+z@90!1qnWV! z*FPGEbb;FWX{|tl)_~nHsa4d8iPg=O z;aUk_@sDKvQ4s+I=-&_R2pmGnK%ya&H+Plk2ImM`j5N~9W#UJ4t6N>R9cvu%=!^2*t3r5Lah3D{D+qtJLz)PQYEy< zUMJU;!N(=QaS`$wgTnTVyg-MF9q)_Jr3wf6ZzliwiXlR4?0JX^-ZV)dtE_yN+gOHj zYRc0ft^laMKP4la3>+8UQ92q_6}X`Z8Jw{M;pbSZ%#j%wADF`FNZqoyCt!ScQ-Fc) zs5~Z>$YJmLO(%m{l=LV&xWD@;QVq^fh<&95d`KmzmEoIUK24dA*V}vuBl0e+q@CiO z4Nv?0|7M-!wy4sSa(3`6*Z+4-c)#c%Xx(pW5T%LcLHlvlu%P+hngpJoR&aiKR|-x7 z^mWJGjXD_z{=?N`IZAngxgWi0X`j51eqv^04;sfdtlH34TRySdR`i`=18XR;C(M)iso+5ioqUhlYw{1SY)o5{|fpP#4 z>#M`?;RM~1)8$a>w+P}3mox`w=2CML6P?iAsV6Pp{7RoR3`0XTmYEq43=FqDz_X>L zqp#G$)*pI7ujA!qS{o5GVb)>c@eQs1Gv>0_GZ<{h|LVM@gtxQ-u#=shIwwC?2Knv{ z+(Kq$k3>!dkNr;iK_JHe_WoPfR5^}Ao-1s4|7@E==wCHn=-a&xgn!md(oH*_)R9(z zWIG(0_~1=))WJlmjD%q_)RP~}{oq`B4VCxj=ah?Q`FU1{KpS_y?B1mz4Ue*OX!K*vzzd5w&z0Zjw-eB>w*04 zU{Q^-ffSng3l+ejdfDYu1pI3N0CNS;wtKier_bnAR$b5SQUFy?G!z!(xg7D2$E6Ad zRunU>B};#$H7#SH@}YW$Knjf+?>luCQ>v{MUxCKJE?HH{(2attrKEd;%E&yE?Hyb~ zs%OB_sLruO`ECgnGjw8D_oO_Z5SiT2vi3vZ10LfLJ9-cy=an7=laHOu9yroS@hvzQ z?~i;yS}p=HG#ksrVpCipE`{tHngRq7Iaos54_-i7g2L9fZ+()T#~BEtqeg;_y8T+> z-Oc7Gq+W=n;|Ue`kX62NI}>sMX%>m3Atb4alLCjj9etIB2iJmUDk+9@z1o4H?d+xJ z{N>yl;kYG0R=+yvclYfVx_#(S|A!x!sD5?TB8DQMch~{M#SzHl=dUGtJiQ=4!ekwaNsT==!IzT=N@fZ6@YBql=8vURo5{C7aNY-TRp9 zo(^B9EJy7}P@T z=J6}BmLGMh*GPKiurZ?Q&5N9Ak|TLIklc9SR8ze%qCI7Bf;vH7$7RHIrX4rG2Z8L6 zn6}cl#hKlMVBKC`H4=$o-@)(TA33)Zjtrrx!cKl4SsG_V?Pl$?JlZfN@4;#VbJE)X z#xs5W4rd0MQ9T7gm1hk0k@D>jQ z2L`%%;m30FzJevw1R5z0bo#6{$(p>WoVO7;#HXwpy_XY?#Z2krw776v;5a(2gCdlH zLraQ-(W~oekq$NqzEh)QuE%^-W z=|(H`TuHTvpl)P5pM}0E!l+R7k)IE9MnXpodQQ$qQ%F(0bcRVq`{(rJA^RbDidv)rm1rud7Pw>;*J{CE= z8A)U8|8O^mUVaPctB)PWE*-+^<*5DsyT0{W6epN|kAALyEK5%$@Xt5Ut&B9NCv2_lW%;LAx(P}}%1O(f0SomN*Y3~4=+3}F0N*?kuzE#Ac_V;d2v zX>6Le84DU*o`?P00^@MxL8EiKaxQXGI%j0GhF6Y!f!gkM z)59ab-*OEyZ`8r3i$QWuLlt>Ed25?IFXO@;@v~UfdBAUWDA zduD4)Tedt>*O4<(gVlOv;(oo~h+U2>C4TQ$mo?0A=yshhV3BS71=7rrrkuCdL| zCs!7i>ubei=T4&7m@9_6GRjQ_B5=c#{dM+7R?EXI;38|BH#L20zsa5G2rrnq6U{6| z&AN+wCIu1Gl9c4XmV7Pq!{LUYQK^^{tJ5fMr=pmLcYJp!J>FCPu<$xPqmSOWGM(DG zr*3|`qn!R&7aIN)^lIgq@c|{@F$Q!Z3M(e>mmX$sWh_e6KR%*>r8lR)hoj^hn~*GJ zetp43Ry!p*a$sa1sQ?;ZQybgL`Et^o`2KX>#nLokT-i%5<+q2iiSC^9?IPu?1s+aB zx8}y#7LWyu_s&7~Ql;zUAQJBTk4IbexWzoqs^t>X+|;m`rOI)NdbMzErJqUrX!f!l zQG}44(B2osL85j;>=Gx!Ces2bEVhT#EH`stLM5Ux>I!ezzjC2 z5hWv2SCxWuU#jQDO4wkn@Q49FXfBpyiISmn5ZnBhmtn5|H(dQ~rY<=IqQ_h!hz4&MMFY5uC5#&=;^Ou z);)sGd`f)`KTqqaJ*`_MB&3&BR4Ms!Du)tmY?#sL6r=*dHg;scY}J&lwrY(ZN{Q-O z>kB|VxZFBwyPRutc^Sk%fp%2DO+shi->f9UkT4>GV zrZ&gR=h&GZGW88^o57`=kHQ6wnpH_8dFf)Lvht-wKdby#xQ!B;DGG} zS({-uL8PUmbiuC4-I0!y(=IHd+ORPz1yiv;e_*7NkU{vZ@zLv@bRJ{9T3feU@72QD zrIDla1?q@ZGXt+ea_WX?!N0^3URBQ!<%SZZWrfn{zgj*{1>YLihiL8{V;#?n#9BZ0 zo6Ov0@wDk8t#LmAx#r|F%*l7zxW(s_wEC?r2AzjnS^VLM<_Fg*90qGr*IvJ9x9Rvg z5MsbVX&BULeZMwK7q(d_8i>!Yy=z5*!e6tm4?t2mi9+W8iK13}M-JfTewDPZ3d7>l z;{9~|5}zp!pCltEaYbQ%l3*#Rb`uoC+!Mf93Z^CxrU_Y5|6 z%zey<_|6Yv)=$RamRS+P)Zwp;P?F-UNtraz?wE4C?Id@X@fKtZa&aT{O{sumJG4qP zs!g*PvY?AQ3a1=@Pr1Ixe;#vdJBDI|>?*81#-S8nL$(X5gtfk2rF=}bmTOz{*G^I_ znQN;SG_7cT!!4O;CJ7ePw#uu{PW{RHR_CU%#xQ`6?)YvgSs;2397eE4gvsq?RMT7C z!2fIKZ7!7Q!C`tnMoG0YRxj*aD6LEuFqC(}%gM!r^_$&~BDa>GkEBzy~Im(eK{D%VkRE}=87?h=YMT$E{!?dUMCn|@5Mf1td z9RZzE9ah;qyQh9qAo8Xu7t4Q~Il_b`<8{x5U=KM}xy`ti`+h>xB4r^p%96fV?NO*ER*ep@LAcuWu;-tsUY3Be&}S`L!fb%Lxf zoNhN9uA-?1yrG}gf+5?Irxu8xy)=l35x6xR(ATQPv)T0SlIx8FJ5 zzy4nETfuJF7r^!Fe>pHV2NXp!;5smaaF8+LA9-zb!EmcwDKNZrMfm2E?gWB7K@|6j zPRdGoLTpdvjUdgx+NzNhf4b&G-JK%5$bP*)TZvgYxSE-+R!++Ndo|Gg`dnUbGkb5(FTK82^GEfJ^!O#UL% zZQMR3D2E42ITP$L@N+e%a(hpxa!94AYk-uETvQJK6gH;ekf@1cjU)$N#2LN$3BP{} z1DB}jTV`>)JLWLEHHS=A){qsJ$;tdOxu9jbX`ik=A#M*~Q7mMIys2YI$S$Bc(FzL? z%;4AjM6TpvcEdDT2SAi4Mf1Fe)68%Ob)7;D9Xn1s+? zNhbnjlz~cpfWAG9-*0zy&duHijN&e-`?o8NG-0(u5jRbbbrqTuLqXE(%~nx%zHw{hce0Xug& zZ>=*E&NCcte{v4%q*_sm4+S_3s)9SBS&Y-qCEm&<372B3H@2phHAvT)w%Rz0b9D6o zrkjy7H&}7Qwx$>WvzVqUCcbD!D84(R&f>XRn#ga}drK#ER;1>(OxlQ7EX+}!H2Wd&~|B@Ggs`p+EO$w513V!~ecm8+k&kF}@u!9X5|Kc|fRTE6It zKlvgo3>Whax^Xd&6;Rr{E23WE)U|-GRZJ0qA;St@!PV28IXJk5 z=6uujN%<}^LW})R*z{aSwjy~8WQSnK5&Eh=^<^o= zs!e&?LUp*1Gf_l@3G@T>d^Mw5xsWB43=!uwoQ6KCU>jFn z@dEK#Y1t|dyHGk!w<5~@FSzeGz?W`2f%E$vVMphQ9D-laG8#SfvSpW8JA0o!l8dDq z%HI!i9Ju4D(C{|4I+h%y9PK$C+lkyAe_6KvPZ4ow@hMsEpn03`>gC`V>YSZ0Kf6$H zDYPZ{Yy6Khr54rC_UEUXhdZVWfwAM~m$)?9K!e3i(zNF)U z;DQhPLZJb*wc!H%E88@QlZNNznCEztjb$Zo{#E$@1Y>c|^QAov?TdR&A>Q4x4)9AW zMjiL~xq?gde=aupv}IQ-$+tKAnh2<<1^_}5Mz`d*Eel;Rca zyeL$+UQ+(_2+FAy?&Tnxvzy?wA9<;wG;D?0ko9rOnTl_kIbU$5I~#0U_&FXm!?HD~ zr)K{mil0IODMuj@3lsy{mF;EJixQpN9z-E=iA6-HoTGd?YG77&|I05hess(Zu+ah1>y^eSJ_rr z+wS_x?pTM8IKPU!eB)^)?F7Fq87PerhX2vYxc7!)tcE1?5%pd6`eex3(YJEqj&*(~ zNA2qTxl+qQDgWDUPO88| zCQ*Lca8Pmhf94Tdxbeg+@WuW~hteg z2hAF%!LO^RDYLINKIX}fu#z|zf~k5JS=0~WyQz)|;C)eP$x+JzLcYSu8YMYPWCT-_ zf(`$bFX^E*_Z{G&b~+-O71kJ}L5w^5z&46Qsxmr6qF8l`JpECDTYyJ64hHN4?~}*~ zPN%YI{kLL68_y7zdH(^KfHVfeB9fs(|MvsP&|g>?&U2Veg_O%Kg+dbHjHh%uJtOz@H`pT1bH;$2(6#HsNTyoL4 zZ9+@`K4>5h7%zs4z(~l(<*jM&HE*&Pi&xMB4d#L2j5jN?@)RVHwtL$isUp`EG}C}= z%a0nvAjVg^LB!UOvTqdLl#38G0BUy`(0AJILi@O@6ER$1!SmK<_dOD3`~H8P=jJP? zXm!8QfP@ZB>@?@F;B}d2WbpXdQjZd5D@OXye}cqVt5Z_o5~8=G^cWHZ6d;U3oBK7X zJN!~?eVMQbn$KbCvp(+ij9<~)un6-9ukqwJ_-lsS@MFP^Cj;g%uT;T#Oi;>(HkZM zt69j00l#gPG_%ie;`?aiv<_2R!Q%+tV_$#d$926eDVarmyF`{3W&easo_g1X5VX7W zb;xIJb|JWI-G%%@%&EU%g*uDYP_!>?X5|_vDKysT6ka`w@zjiq-$~~AegPte4b-pB zu}vq>98v!eq}7XzJHOidktLv+CYCAsH#17gzjT~zCmVo9P=fIf8I^YWhbg0>2VayN zvrRxZi&-PN4IYgUYx>o^mAR^E^AgUzh=iQiih{Lw zujPZSu*|Stue|vqR5)^EF}PRKSy$&~=PKZI+;bU0xr@Xt`L|4C@pbaBogwW@f4ew3 zPFI=5XZV;|Jcv-`Q89+7w(Rby&>m$=IaCV{zz5NyL7%QI4VqpN;KSy|4$TQ4&HWE! z6bGt!nT#qv5p~>opG!gfWHk>OA^quF@2PqXF7FITGs}3{Y^QVVkF}_MGu~)_2 zc1>8To!L0t$GC6d>HQb;$jD^OAw>)`)!?Mzbuw{%!=?-;>gDAyZ)4qPmkj2R9yWmJTsL1WC#=WBRJ5XnX%XJcU%5GHFl&&qUA`+=MPQ z8qx80?pHRNZ40tK1^c4=+e0fl$wr=Nn{J{_VpLi1@VfE==#R}{oK}mEFfl;;`OA6#C&RjHV}f0&@0OOPgs2YidbT@`tE)SX zZCm+C;+$Ql)_RsRALY8)i4 zJVW)Ssqee~o|GY5mJgYxE)p&fiA0@ZS-u;nJalZiKZMw2h+jPtDnz$XTV_G*p)hZx4vS5%Pymvuo9q z4q4ev3iZsQdvy#K(E$GP9#VzTkC6Ua&g?NY)GX>=7wdM+g(xncq(BVi1wAl zsZ#QWBMS{XZSQl$G;QNmMv~o93}nT3u*u{5{e3_+qf0$ueJ*L};qHcP!xTM7iOZBq zQ{i>aBJ=f5)iCZFhzN#EdQxObd8rH<;m8*m;IKoR%h1q#!Z>!qeDBf*`G!`PWIv$e zKgFfYskMRQXrT4VX={BkS|kopBATyM5PBGM=BS@oGSQj_rr!h&$SSvUCttT>6ruMs!Kvua?dbMeU4uRoB(UEY>}0w{T|Me{v} z6m2_KyDxkEqu~m5=Z5#^)mIz>+}bhkn#sZIuf3t#nqX$G-O+FVa)c4 zz^!i%Dn@?@-$bUL*|h--s%Bvd%tQ6LVkaLExKdAwlu6X$lnC*G$$|vwOya2D(x{`V z>(f)I(UDnXz8BYzKNoK7I5X=RXS&2_NAQ zE7{bGE^Ccm(0IxJ_2lxFJO+d%7V`?naw?T?PPVO5`Vi&=njFmbokf4Wewg?)$(jP- z#b~UW$l2C<@v@x&Xh}4^(iMf$;Jb;BO}Jss&I{iPKu6SWlYkco(;9%m^<6pgL<4VG zanI*`8vd7J?y`P_3tL4e#zE};ij;wMexJGe<8+_NNrGGHS!Lpv^4^st@s)}-jkCccqm+-hA-bK3#zim*^Y`tG6ra^|l7 zis_I(=dD(Mb)k*EofCDq2~OLxeXK%BK^pdPb6eoY-IZ(iGHsiXOfbtIM=Y90#hjbb zHp2ZH!AzJ;TNL4zJNeKrt%D5f==eVUEgz{7l;tC^?+Sd#(y}0(~JLpVR z=o5zhRPa+4qW7Dv^R#DYu-MDKGH+UM!mhEA00f6+(kZtJeJ%&aIgDXE5Aob*6>6uQ8+>L9_!LnBN-)f|kGL3ihl=z27gPs8_( zSpOht<-H4UDE910@I$&|%ic=zA&x?-MV{z;OCd@~GI7p^#7cHm&J9wcR|MqZbM_;e zA?nN8PFB_;!xz*Qtj{QG$a+|44n}Zi{(b<=2#t;sk-W`FT+`3iJEW}U_Ix@&D2P2G zc!P4$2fU^MjA%&ld3NRK6Q9G9>sygS8EE6rWT{R( z!bMDiLP99wBSjQvY)g5eNtc}cfog+5rP70a`3u8P&Rr| zK*)`;2k#sxdBl^(5@HEV))!<+WXScEfk)d+NTlZ>+&u!@-H!=RPyXZ5pfXL2#oyM1 zQ=7>;4+jz}nw;j;&H+?P#O@b180ck176v|O(PO)s<*$USYQlA*+E1^TNjv0sAXj;- zcHhoM(jn(6{}by{*FxrQ-@&9--c5!S<=n8#jhe6INp#{s!y=6Pm}{+GhBKXSG9vLW3^z*gS9#gxvU#3Cw~(k^wk;y{aNFwM_4ZI z8O{c7>P*WP-D@AicG3weA{8vu#x(BN22mQ4pUdk+$=;%$$GcLxE{blp<%RUC7#GTt zrae%D`rkH}gn8SkVQw{Hw-+N>=pp?RAVMnY`;C&-jis@eQzf|UT zM#+8i0OZBf!_36k&4+FL;bnj6rHte?CO>*KY}CuKJK&FsWZ6O@68HPj#2rlrx@Ik( z0i|DQp!z9T>GUz#jd`wdrFzLZPHR%Gb9WIcbPVE?>lz+22t+JW|7LI`L4B@Ba?zfl z(*ayxe8q4tAQ8*B$;w4Ej$uK_zK)zn{b9t(oK@0SgNP{6F08%x`u%J}nHLIo0$r(I zcbmt#1W&htt7xP=rOGiR9`7MOOsl_RpsSalF1g5uXVAvwiTq%1et_B;%+6+xsvW=4 zyh;Uc;19vrIB*<%S~9$++U)LYKUn**_P0kct{i#9YV3!LM@Fwsm9Vbyl_ZNt;&_b7 z?6?W5BO3lGqU-z(lCvRbbZzDRg)^yN3X^&*;+PztO(w2 z2LtIb`&5$1hu@)2L!T}Kv!b5?J*LAVwYHF2_|oKip8+M+`8DE62Q|4 z_#w%4b0Y8V!A)PG_`8;R9KFp`wJ6mqSQu$Y`Sb93+2jG6L)xt!m+XcpwZ1;yE)frB z4f0yJZvJJ z3oZsEYbFX}89NyQT5n)kC5t6aAz~w77d1-^iI&K~00AdERf$s|sKqXPw^R;oSHYGB z5@tzGm;V2gLQB7*DHj_336V^9?&6Yu)U&xj#-Ee$32*EHN4)WW!mvy#rFKh%^>HA8o-8VyvN}p`4To~z)p*$82gV@X5r%Kj5bb~#4GvGn@9l(t z^2Wml*Tm#l>mnN?b+Bl9wGGQzriy{p=WD;EDR~<*1?MKavl2Ir(!NFn$B?>aXOEP| zG^yJuk8VB!bubigx@kqY()ZKpmp1audR}c5J$s$*DBE6MEzi3UVbftfMmZ!+h6jUN zU*}uP)w%Jn)|+;aDo6gidRd$E_-4#v09fxFz&wmk_+#MO0pln2A0Lo*8LadY!9Y~5 z5WdCHop<4`WYd|l*(h@VGj)fFju>m`hPt{DPo=5faJEScUU?U=SZ%_OUUBF|C_%fX z6_Z}rTC*w1+2zj>H-1>WMZY!>5SX7|75>?kCh0$I9DGp(GeFsQscJqZa~)f_-%&yF zKKML=l&t&roR@ssArql@wN`)4&vOSnW(vA2 zS)n0(G>+sh22UI?lhiy$!a?Y5V$z*dA`8X2MR%`>h*>X=sAsC+?bSN4hq!%LTbOfM z9jI#lp}te49fA<3#UZW`NnfgF6EPLN*fx!Lat_%de#w8#@9#v8u(yGS1-> zQS!D93?Z`h^n36Q|98T`?nXtRO6O?d!(bOn{#2ZuR>(?^rAlirDSiR2j`I0?`1$8( zar{Rxy)R))BdpTUd#beaYzVH2IL9y|HKGm2rVe5TedLqVXdxMG zN2N_=V7QujQol`TQfb)t)^H*nH0w7h&qq ztA0y;26Z&Q*m?b?pnrVxQW29K_M%8oZa=O2p`^KlzFJK8(QX)Bcy+UGKe1T5u&x~s zIroM=7a~vd+@}!*8xBb<`iN7Ue#*O|t9DG&E%x>?FOu^%3D2e+7R~&|=-msbQ;woG zjK`GAoA1@dp4CO(>ED%3p)kA=TN&S4pAtkLAX)Ahy1g)+Fn`-=lBlT$C)>sh({#W8 zeJ`iYYZedKUkYdf?(mZyPPE^@b*1bTf-is3FYbU?vPV7lKy3X*8Wpxb#0_{iE~Q^F zlXGy9B&L3F(IhS48? zXL1rhn)*TA)yXKo(xgJRYlmrkKjrhMSQZt%Sl2A|JE$ejQP?yzhS3nRtqt4K*L%)k zA$TO=HAI2y{uLb$=j5ngXa0l$yOr%_{?*pF<=dhk8c~*&cfU6RJ0|PCp!4x45ecfM z`YgD1hJb>Dd>T~L60~w*AmZh47H4M-B_u?>^j`*?rhucev5|GERw88CfYQTnEMDF1 za>|I%aP-GXyt|vPg~apTW++chfm;{}sS-Mbgh#*kHV(}i1b!dYKcc_xcfw(-6zFT9 z!zibqrq0unsbY(>7$ND)Q2p5nU!)|>^>~Cm86-YsU0Er9pSqL_g2e!p_af$@l-Am~ z@h<4r^daxHw@&m%n=R(39Q55mw|vM|CFVGYiOCbbq+Fbz5w=CQ#N$`THSjW^v_%SL z3uY{QgS$$_j>l2lIGY9g;4yqSq*9r-e~)}fQ>G*H#@WJ7I)-CvqWHx@?V9LoN;J8W z{@ICvM(WPPJzgmV%QJ@8~n#1VsR z1D{jQl;x8J3heLlH2~qztU(D_-mlDu6K4mSzc;BLKIY%b9AeHNXc)=(1L6K~yVpv& zDz{_}B%{cu0mRtlbh>&Hx^2qUAfY(^{(NlAk(*(iqr$lDE0x z`R7+%k=_-2L8b}8fEzCeOhar0Y>sW!=ZE+#6AC*9&Zn#sr7ZO;Ll|PR>pcvM7GCg2 z>kFV=WANBj0edf8)BwtMWwNLtlK`w2HkdBstgHdi@-@LtV8#M(h73;{{SlE}+n+e% zv@{hXIbsO*ok%WUfRfK5(0wq=348W!o*%#&^3)AVJxG=Mj39$4lwj{0LG`^(3eH?8>9WC0<3D^%aP7IT&#FUhk59*I}KosxZDem4A2 zQdhTUE4KYsrqhFmkS@T#$*&g0E!gOjF0lI`{{|oQJ75~QIH9<%URq$gKlmZ~%=v;I z3q2)-cvIiPP*Bj5GBjJ`C|vNum{|L(tpi%DzcK2)`@4u8X`l@g6Js6rW@{`@7?C3% z&Myv_bL=BlTIgJIhSORD#$m4`pr$CSbNq+s7IDj2Ho=NSD1SlZF_R&w7$|*XXjk@e*0z>D?b&4ck&ywOgA^8Le`d_Zluy+ zPZ+G%wUj2hw{0puWjeO@-5i>z@L#hmJ!;{ohjHO;w9On$Kth9sTD^(IZopygK?pkH z;7Rrt@l?G5;^eOakvkGbC#~ftFw`#hg{`(Vht@?MSE1~lj>DNAw8K4Clwu)n2B7jf zdlmZ9M;Bc1M+nNsA(|o688sT2SAA;7%c;@z#U0q~Q!lU8PI?AoDxiz=Zr=$C~ML#FS8SfKZCl(r!?RSjT^PuUF;Qf5VY4e6+J zlNdn+ApUHsS)&k*CRPUH=`iU1vR*1y){sWgg+dxFksUj$a9c@j$30q5*ya4tJw)uIcV|V0C_| z9nSx$lH~6CoXHSzPCDI!qFAz}ZB@7z&3D$NQr8vtu^VDZ-5jhgjai8}s|-^`15X$r z`LBEHhR-O#5v@{$`YcNRhunWeYjIm2{5id^n*cfrgYej_Z4|Q|vWSf&@8S8opZi`JAXk|ciW?k&G)-+57Q>l z@p@#;GHJk&X4M?9WaOtEX~WZwoD9@6$G!c9fBpF316Pr{95)LkAu&c(UEXL6OP-;B zpRP2ZHs>GF>aX-JPmlR#ljfs)hiR`6K30?aZ!voHk)UN|-|=Ve2;r4D75l0sCOp{`Qyt5SYZ-(fy;ASV>*Jq$X?1lSscsjk}I(7ARFDq=G!`CeQ0{WXn zbEu+m&LaBeFC{g?S4AENO}Tzq z8`DQ=>Zmcy6@hV9Lb5&B3Y=m*1QYl2hNQ$Clav*@i_37Gdg~4i;Kn(>>V8SGNUzWD z_zV=hm#kS3)b*Xg)~kX^uweDAlU&Zqn;@ov3x1!+fAHAB^Mz7iW8EaRK~9bsfVWF0 zJnLt1--hO(07kneyAD8QhUxUtI@3b!E&fs`%%xNSDF%LeX=o^aeM2k0#SQU*G9_d= zx*_#gQyM6VJ%Bc(&(8$zy0v!BI)#+SDsjC8Oit|mk$i|jysX!Hj!|!YS656J;sEJl z1HXRkh_+LT5rLT-ZeQCu3oJ;y>F!k+Lw@=jIJux|eZ>edI*p>Z(<>1r&`Dg^o$ZP*T=^o+givRp~7IB4%BUkH+jaRODx37|_>nLny&l*65sNpRGvy{MG zb||=yZ8?lC6C(muE6p ze2YUm%Yzi(FeA&@#{aJaC$x(2oKy1qb4#%|l%T7&&l^b$r!UybftUy?|2`9Zq!dN& z)V(w+55bY4Xfc?6ok)|3ga_DLS>Uw#R01Fs%3F+%tHz+}|4M=RJPUAVuBF8!Ghz(9 zEP0AMBg#PRH{Z#0Jb2JJc55H-T{%Tp>E08?t9L3rl)W9PY@FNN1J{C1qz>>%Lxkn< z#KG^|gAMksVeK#;sOhP$$Nx=VcwGr9=JMGGy3RP=XaN#yWR4C@GlwSL6rN7xSpNzx zozK7TtBbwvS?6m4JG{*GC&jgHtcKgm_O4P_8CGmBEA*L*+HJqu!O1e;D&vQKeMnx> zT?g=QL|8>^U0PlVh4vw|wR@b6k|K(B=#Iv;en*Y?HDyg~?ol++K%S!SJo?%u`sU>N zS^Bjz6d5@eT}j>l6hWg80X|8eyxocu$!MUtSt%eH+_iOoNh zbmfhADdS(#o2XosaHtTZuKAy!|9!oMyw+h4`@JGlSEvIe2R~bh92_4@D6?Cdi)&{D0Eyp&wFK99$qrwb`-p&zP37y(-o&E;ody0nGsSsZ(@ zI3?WI?UCxE`cAO&@F%IQX$Ot@20PyhZ}Whi9OWbwgv0tZQa>b;=Q$8w1y4Qw|4Bs= ziRZ!g$&S5wts`LgKMOrfm4dp5dyuVP4qB=bysX@v4Bhr6u*RX!n>pT+6D|zd_DQFH zx)t53=Y?p;6THLAzUSSb_-HK=h%cwaYtYvuHAOA)=KB1F$l=uhL|&3Qa?&_iHEIKym$oKQP{zFb zRoDC?R16G`F3nQ?f|jOvapNbSADj}bpDD`K(>tA+SjWN09^~V-008#5c-vc1OgvpH z9s%3L)#0%*LE(c~#GUG@gB_^u*xh1z&>C`n4;Up){kAYf9e{*1(51pI z&VPE8H;;`>R)ErjLWajpo-ZC7`H$IfX~-$!=;Y98F<@?Rgj(Q^;EnMa7nFy8AA2JY z#}np8lh_`ga=c5tOgv1yO)xT6#aqAS=4r|WPX!LQo0;c}CvrIn zF0Y(h41*R7YyRTs!mfAvHBbh1027Vz2b*9#a(H|L?dhU65SA>j8$r;Nw2bU6p6RWO zR^Icq*b=SEU5*!pETC;&Hi-C)#M6&$C9g0Fd%(9E{6-LP-+TCmzWFjz_rbhoBGNn( z+>Os^1<)R@e?u9DJjGJ_SdQPuie8d&Z@RGH!!}Sa!eZ~iTh4pX%AmxqbcLr6QUpQw zTk@E~y4n|y)&MY0A6Y@xo6TNqvj}m0u&tu59?}AD)s?qdL5KXhT}^7s5vo*G3>*qj z+<2VW{6rhGXw+%0S?>N7bkmQ}AKu;ShU|6>S)k0Cu`|b^C1gI)iD1(EOULK=Ud0}# zXk$i`)_>Bc=fj2s6X&JBIFHdWHu)a8vynhNJHXaL%6Q)!s7#{x$jGGi1p`g8am%lk zlg+Yc_vM3b0QgfYPhL)O%uG+L6eYLg4Y}29}2gt35a1swn6Cz$LroG1sA`D_? zIa%Z5LbVZE^T}h(k^b)qewN9r>A+hZ4Wdoy$e-^cy|+yFo+GJ<6c1NiPR|Z!WxvNA zMhML>wSa`b#g1L(>w$EzT}3z~sf8`=*lRRG_oHf=kMMfm#GLU5;1}@LaA)7}J-+lj5#-#zaTp^wxoeE)2C}{N^`rk4{N;yQl1Uqxa@Li81*Z9&F-{fK7^RmbRa`RK> zJymz?VA7@EfCn|>A6zEsI>_#?llXazEt}D8p8XYOy;Ump1Lf_ajh@ux&HE=)S(6eq zn+yFCqCCfoqcvgT7?(a1o54Ddi@fGXbc^SO=i+F7G!w0J#6BhdCO#`@+t?rU0l%d= zZ(}v@J?m*O_2exrFA}YcLkDN#G*G)t>)FU%_&G23wvc?VzG76-0MDrkVPc1QVTf8& zgL?-K0&aQ3X>tKxa3V1s<9RlnSqq2+F^~E{T5oB{6ZSoOi~!Lv3WB&bD9w!#(L-i1 zT)?h@_kS6$y~fQb5HOK0JoZ_w(iy?Y2KTwBA6ZYfvQUXF%32(9i^P!0;e+gUKx{RP zlpvr_;X*z4jSk<@pC%#}q!2@XKM(pi>`Tcl`G#CVH!^mS;~kEk)aDh6RNlw5odN#1 z1j$pD#9`Z~gM)(r(uR5(Rq$`~G23UJK1G)Vt7(oWLrr;qCVs7Neb`dUtT8tyYSOZ7 zM-S{vw41&Hti~Fv5la*A9A`BG;BXCv# zHFYFJ>5K+Q$ zP&`#JFB!w(Kek|6qj52`-67{Mf(-|^sjC@T!Z5QZ=cKQTJ7#5Op{k1(>#>3Ps^o{I zqX&A!@lZbkmLLA=SbXfjsm`xta@|{NlB@6VkZk?bFe&npweYA=KIQr{>jVkYg!Sh# z`#DS&YjOFZ72#|W1(GUh>6{c#%)>psw?lt3;eZ}FL{pk5A2j_m=gDFEV3lser!`%6 zN55}nHQ_bcA3}l^-4)M54(O1w2^hd5)3{N{<3}?8gWJoB3RE_lU!Bxmx%D$U=a#do zJ*|eSiCslqJp!PibOQ{CqUakxo5hAcN6sruFcj~pezT~T?OITklO=-6=RLuf)$S-Z zu3F^BE)Y}MNATa{ahub`W#V7E959SfYz7g5Q3NBoy!<7op>MlN+U=vMEu90C~=xb9w?gRV94f133xmknbKAM0fW?s}-ys5gE(&sjVRq`=f)!(Y4ZDg(Xg9_s!c>Ie*F3WaJBh`&bZ zLbT}A1){ec_ys=qUG-RygJ$Q90;=7~ni&XC;^fDvUT-VqzLrF_pJgR7A0O?^V5dWS z9YEy_@PF>M+||J^yCu>2?H(Ski|?*&YVmy}*}#azCfSXe< zIJ(@r#f!y(3yx%!b16YBRM%%;oN(+9Cq42$EUaRyMbp=rM1g1Bm~ zask54`*-(hS$<_EpXMg62;!I|rLX;Mp<0@A61;>3Rht$nFfKRsl28DEI`2>PaU5Bj zXdpyj`V=5&ekyHve2Aa!(m0^@K|7po9Uao;E3Kn&ZN1vuIW?IC;P06lRG| zbaPUBWDavn`~2p~e{Y~H52SF`!9oYH3k>bQEVdx?2nvcCQqW6(Ke_*YYQFIA#?`-r z&+nA&`h_s9Y5ra}v)^0#Mp@`m{-m&AhoDm!dUHlQZ1^KW{fl7SSKvEQV2BVv5*?Z| zPGV*)rDOv}e7eDv_hPk5Ev7-%J3r*wX2GCWX~1@MwH|5qio)EdKE3`yKH_`7Z?y4u z(k*)HUOo#x)cgDASzH_$#SpOG$43a)1Wkj8;ycL8KVr(wCN_?E$?o39$Q1T_z0p)b zLVEZ3hrY-u$2b-IePJ;JaFQU+XAWTL&Q!EV=rhZW-4)@WZ?rDMd;mMb# z$(D%LPELTdbvNZ|w!Z-773R)N*70#wXE`fP@d?R7K}71-jAEZ=&t#(G*oXV<>Lk?c z=L%y$Y1h4#TYv?quhxg*$}eFN4L8Eo><0oHdV=IRbvrg4LMt_eb@x!MIE6go(Xw^q z($9|}NYhDfJz3*mV;&?cGlffn_{_PnKo6m3n>WRB>1R8`0FOZfp62V^xc4V%FA$dv zArEj?fjU8Oo>I}nDlfFOaF4iS3{ad7256jqa;LWEQoM6f*(4e*ZlH+G6Xo7tai8YC z6}3l>8{EIwI76lk+(RSr8tPULljydw7HN<$k3l>^hVSZjIyMkcI%vGc<+`oh+_e`rF{jf8OYuZo;TBCpJdxF!ND?Z(epFIo> zUtw$n79ECK6v}asX`+&0r6&OPpxDAEEytBH$_Q^=wC!Ucs$(Byz6!7?r31KGe$V1U z1O&6h3bf!!k$@!>T^=0wdoLZl-iQ=v4S$91hN=R|1aC&Kl-e2G)ZpIiK(GE-&P+H9g4c)Sx1Kcbd~8qbX$qg|G>4j~hoQTWV<-8XUAs1cuYRl>781qzCMkwWxopyH$DFc$AQq0a%S z4N^zda{iNOxW8Y1L=(f~wJ@&NJVvbgY^=HOT2Kx-CaM`2zXfC=F~@JYlOIetLo^s( z6F!9fy)6-W_A@1tevT6IU)M@lG(UeP1D0S(Pj|n5Yw#4)Ua_QsT?4xr0S&y{vBedz zteYM`m~&=IqZ3sct=C-jukkN1#7?08Jyga$)4-4#Yj<(i4wbf9h zz4>rEn9n?FwYfGjWN#HJ5;26Ha%Gg_ORF(L@7R~zL})4W&ME>^D1Cm-wpenX^(#bj zd=09ze3NGO%*G4jVFpWeFV`E#2IhiWHhB!8tZT=>aW+~#-6!)FRMm$S&mh8%QqBpI z@NL^h;1y?YlIatOncFp}f6D#V?T_Ih)BH)3Y1|=Yp2J&Vb9#q> zM%uD7LQ1xtCc6DW!Ffk}|2}WEVS;R1%0@Qo&a%*iXDBiMbzfQYd!PHm3U8__+9?%E zF7m}l+-;*xF{cfu9(ess{wxXg!k=>(b-}4#<+#JNOy{79JKN9MnSKKQg z@kZZh&p3kZ6{37=7(&)<#qGQ+^x=P4GwI6m0)f3`58?5FMu`L^eq3)_U(E~e>2&xl zSj$#BO)oM|ei!z=P9#|syy&hFK$0Vf#5r^A6@T3~2_rO1pg$9H;CoLUyTpX|X`FN$ z`ZnhtL&G7}1WI2-V#jf%BMejjYgxf0t%kDHjN1D1j!y%3IK%pM`d}>iTG+(zpuTIN zK2&UHXKVHXe5i_5pw^(}>J^1c!)$tLN?6rJAgA5~v;ykJKiIfFcXl021mseEE5~8C?H|a)HfQI}$LUvVVi|`=sNQqSXY3N8Flb zc5*3O&`*VZe|I~eT6lDMcD+qWw~J?7s;s|_{k<+d`yNU;dtr~K#yN@yLNB9)M+Bj& zB>*B!WkH#eCFrGCWoh+G#zEr=^x?V(tpN2%|g}& z4Qg+ObKISiiqdB%t5?KQqHH3XckNEltHPfgQ3z;hd3O64`K8><{E7r0KLLzkiMNvF zN2}$u!&Dn$QW?;~5F#5331&|8r+|eLHhB6tzextSJYvg_Lz9T$$mQ_uj0T1M4xM~y zRvbp0GY&aT${|Dk?3mfQjG%OfBNTWovL}}u2mxchw!cyg>BrMih77WI*wl6 z`9r$*59)mz2AV97!#O?%Gqd)f3|0}I!kBzi#H}rkG;daeuqMHbK++CF5bw^F4w?jOpU<^G0V2|`J#tNBWPShM$|HO`kVS^Bk}ai#nlbh8>&Nh zv|VFA*^44y>9N1$^LyX0h0+lC3FH`Yz8de5^kl}2h{Z3{q%)~+<1RgmSD>@|v)gK+ z(7tT@9#J;*ij1#?6^J95|FFNQ)kEKpWM)dLBj$h3-^$g0p?m**EX|U!?y=I>?C@Or zZwl-%laLFavlEfbtWAmv}(xXgs;&Fw$JZsNBd;U zb8J}BR8pL`5Ow6ac=_P4xCi^KDAg4)@EKK|MJsPcSjz!&0$Tb8F>IikmeyKj`JKad zgC$S31GIQIPq9q8z*%yl^^D~^5Ba{PSCRnnz_}n4{t?*mUSm(A8u!dfRf+A(7XN;vHX>UUL#J53BHUvwv3&7>u1wv}_ zpS8{2>I1!k#TWWjUxYsU9-!1MH)H z4q(CLEh#XKcfTH)mz0q}0;b;H$YwmIIiH%n6@AFtPwPh-{|s%Z1==w#mZCThBsG}7V zuQ+-H@KUu4rscfMQ z!Y1`>FaU*bVqmpcUvoupch$;4ucg#9w130Y-PO27amYw}XSdmr)m!!$*`TQuUg%0$&EkLps7;begpA@ zrpN839fShIzZ;VKPWI<)4ZkO_M4^qBtP{d?f=b#6^!=$3+6hjUBedUh+;apIa668v zILXdPuWKh30(Og@&S#huNl4{nISo1nGO8e%f0=gv4p>sg9t9j#}vJyf$nQ4Er`2hGJbG755{h4yJ)tbrYZVDPto+r}Y4$Z~w$` zQ=cebt){Tw0DZfPP7}l=WgM8`4H%}_= zPsvUyJAP@EB{mpG`jK(~S&SN&B;oz@ayk2S=ue;+vDZaaD{@$;ok8&g&-$xsd&p?m zS5iuG@>?UM>84zKPG$AbVQ-4_T+#G~7?a0u?)lIh$4Z z^BI5yeBg(ng6+BA{v4G+|BUBR6Q!c#&sk*-~s0gA@kNH&q(%Na{wXYP3?B0K|C}#*Y7eiLgq?%^e4|D&=tA-d zEj8*Fo7NXC?B0v^d>&8UF?atr=~jKw-`c~SG=w=0?8rveR_}!tUaW__M|Z1)w*1)& zM@}@!|LFQS@n^OHiY>J`&$B)~dgq?>K+oBD`U+X}Ws$3;8LQH#pLJ15*X14UN2}_sxUY;OTw&DUb?*Tn->j+wQQ?*g-B!2QWO(2$8f&b$kyslZV6Alz}#ahetn#W9?;X&Hv6 zv6d68&+U{FSyK|Qc5Pou64{xSR2!tV)bzlguoy|4YQm}iskBN#J=W?AEqPNL85K|y z+>B-VOXbR0JpV6ntq60eHFpj6a3w2S>X3qvmxTyy;CRkCWIh&{S&k(u8J(XW2D7n> zIi^rz(^C)Jq@nn&)wF=-?$IeGSu~?~L!pxpPM$`US~1?rd4KI6`aDXU$8MCVI3TCy ze)CEZ;tTv_tRW|4Qsz=2q&zXWNNG(&S5T_H*{B2c$-xK5UA+Y=Bl7HoXgYxVC;Gk< zCScm(azSEj!O1cSw9n#2!S%NX{rcKV2JRqG-s>g5`m}gZho<&GFU+2^q!|Xo`LD86 z$d5$&OR@g$W3Lk+ald9GQ1fOPvXp!CdrV~f(wCPA%QaDno*}HOd#>XJXDCcY6>z2a z=z0sG>g_#JL?Ib7`?aG7x3c_X<)|?^xlMjqNf^VqH22{W&&Vf|S{Jo8BB7Ur94*EP z5A#vNtE?09BAf#45Ur&vLmM{mn(>5B>*N40iNO7uIvD5Mx4*#VcGPLNTt{8=eOT#*`lsPXSG{FrM} z2oEAYNX}ACeAEzJn&Qf1=+q6(b|7=hE)U9H&uJN zWaTmVugV1?$Wcllw)GMm227#^?Fzm>7jm%;xyI6(WuObs`i3ACAu>WzsNU>SXc=*O z2KlROS^M!5#!>pjBK6uV_&*rR2-mMMhtf=_Pc}U)AJp}g4zg}*X+z($6KHN~L5(EB z$Q4`jkqH1`J;M0bo@A5!fiKgo!7#AnY7W}`KTZf>Pu)$g> zw@O9F_p!%Jp*mPawPHZv_*=D+BYpfZZ&RZ*s{~(d592z0QlB@nq`SrRh5u4)B)(`- zmyUfnf2jJ8Sm31 z?!DI^hABITMZ=E*U}#BfCM!#}14<|dB&D;8^1rsOcCuc|bH}QE#jKf#sSfmrU)=BR zGzy;@Etk9F8;1H%T0;{P%VY}?aimr277J%}-sj=YrR2b8+}ktitUdxc+q068avRgO z#eq@BMq#!9wp9w@R0=2wFzO^LpVJtnZ@_f_`S+TTZjj7JwP(>k+raPrpuC6`X3;Uvh{K&h%#pU>qJk)U(GpB_AgjM4KA`KT%!{nIoy4oEjY zjZ?Og-9%sNba}&^D`{jyF!B?_0X=_5WX08ELd-U@;ipAqX?yRzjB7cLDtIcsZc`dU zV4DWS@V$g$Yus$Ne*9$*fQa-#94%S;JLN289?&sINSx=uNlM&=<@$CG*R17B0(7EX z%AQTxaOOcGFk9&Wn}GOD6rWP-R7z7eRp^SF^Jfp9#)3t$9{ZqJk?d|AgrP7fKv}7Z zivSnRf6>3*Pn`n&)lMFp>TF~L2EqQmz<^8agyK}egU*z?B=f~29mVIz3dFz_2xl0b zJqXt}>wV*8rQdPfFh#U}1dHdKsYD{&+xYvZ3V26}?5CqAuE^XPW(gA53TL5E=tBCb zze|eIyt3M22CJ~q%JK^H6f2I#F-EE=KVss4xx&r@wdTAzY2z?*Q(12&*+#w$X1+C; zE@B=#xjp}W6Yx>7#}@pZFkMeH8{b;aQzbI1`H7_) z8r(Zs>>2Xid_|1nX`PUMOe56yU+>_eTYN%c{jGr#R8cP9)T0PH6Ubw@g@H`aoSqo0 zU!9@bl%-LdLaeQk7fPW`RV#o>eXb;wxR@kvpmH6qOaQm_Gm9Qq_N?9U_-#R;W-&rw zJuzTY_bbpT?R`_L;FI~jhS7tpV8Hp}qDr{C#v0*^nn`Y5s0Hn%W@BDlpM4gH_PSI} zr=zd;USXo&VamF@|@)B_*E1j0zX#&^|kQPIEdqCd?nB{ZYS%J|XFWGznlk z(@%pA!lj1DV92A7AsSgR!I~n9$>#Yw(~#!kQt(mw%%zyC*lz>n^+x2vde$>y)DB<& zw81AMhn^T}p;)?a9SRe!-I>^GVr83Vf2s_%;MnNo#Ni7(xz$AH^AtKt0Qq?(ZK&k( zw57#hD}$)6)nK-Obl6Sjsy!`_rd5?XGoXLMGRqJ~#}OzANkC=T5BpmygC5;4KSu@S z+GokPNn~Sj8d8SO=XmFwpJ6F*hZ;W^3DD9ZoYXlwn8j3cWibnkn;((NM|( zi0T`QA3=#Nj{`{-lCZ7V()SrUm8R^L-uvdl3Ra{C5o17ztjp*%!N28EA0&K@3Fp0V;+V$S!MaR_ zJ&4bh6H>qURX&MGsV8xd)Qgl6HWMVqDVzuA#5w06ZW)Pu73}A_h2y9w(g)X7T9j~t~z_&?;t%>Cu6teF2jH~5~~0`EdQ`$hi;A6M4e^I+F(R`fQ_ z($GM!W7cT#+>u~K21)H7h<-TCG z_jv)675+kulU+3_Z)L(s*L)rPVd<6(oHdlmcy!4n3?N0Tj3B{HP(X}i434&cJ#-b% zw2Mg+iPc24fvzvCEtkhUq8AhuNi_yKuBSl-81{~@3nmW_ikn=C{9qf}n)lfbf-&jt9dd@ysHe59O4)OoEW_Dkgyh z_EyTDGlY%BaYXvx%C(84R+w1lf7^hMhwzC`o6R3;4UfvyEB5zXYF>XK=HT%Y`A@j? zRVZQdS$c?x`>~6=JF&*zw-3iDTmu_g*gt3yKjXEpj%#Wb3h4LVK%8O3NhvZhCSbTy+vdxtzmR(o*2kk|g&=)ihr378>?vRX?HZ9#C z3=?JuQ7Rnk=3s{}7MJ~YLV!B0ZclY?R>dKsGDs^S=0+;CCCbno->Adt-DWCGqAxl( z!ZB^LYuLNoRQ_ym>n5oJssl4(w5mFbNcjm_Bnmd>0KTv^cXsWAsPN}X5STy{($#f8 z+r8nl)x~8`iK#vF=PHWmsfoeNZR$(@i7fa5AE^2pK9lTK!m3A;p@w%@@q&9g2-cYp zvLxKlF-F=j`OwH{(zc}U_qNEa=RnRQHd^Gb?a0YU36JbQiS9InXAB*GsOw?YJLY7n zXHWPaW%O32*B6>Wk9%zpl@qcBqkhFe*G*%~+U&aTdnHt4D(%k35J^DBXtEi}i;Ej)m0v%m@gIRu(>Km^Q>K*QL zhF=%!`e|Wi484BuGK8NT>7~PcW%&K|M#_XbMjbBE&5ft3JzUm%lNI--DrAf7`gOS7l4g^uDECe!49T_yczSw4=T!k>TfPSG$ z$z;qQ8BkIxmnv2$iC&b)=IwXDzw}I2ANj1HJZh-hApzd1P}9jHa&;t-$VmQB`*}Xx z-rL+l!}m{i>L)G-l4bAJp1{jFdqMJIs@H9qu##oCgL(g2y`(GoPxwt=_m5*UEz6s9 zpd^W|zn7*6M5akB$8jkI*$65BvT-UqB;xG^Iezj1UnY`m3kBI>CYqlmLCMk?dz<=J z^m$Kk<~jYcbDGfn>dMSPL7qee%T?*&h9ME;PtmATu@&?L3s?*?{yP0&Jb01qOQG~e zarD#ke8FncW=f}ejaGH|?{h0$JO#H)bL4yEPZWsy{1I6CqMEE;^_OrP{|*dT)j~fN z+5D!#z2}%btgRBesBhLS)Ev*z7cX?5|Nq3P59HnFuGKdN%BP+eCuo?DEzU_ z6ALWo8NRHLo3}tNYLhTuskLxJ^tmoT7C`9&XKx6O8iPdlO>fkh~_RG<(Dwnu)lJqyg z(&KeElK$6}NP9>dswV`a-=$5YA+v`6R5*#u2BtncDS#?v3=+z$TrDcdDj&XOv;|6f zaiWdWi?mT*6(UdfesBLBGR|I(O`M;rZN0<3eVDy0@_L-z5x_e#pJN7*8fHPvi`^-J; z+G1oKKyfHebD_t9E|+KLEF`gZR8F*LHZThofZSOJoW5dQ!v}E!SZIekup`S>dsPSQ zn$L6$;*1kV-)kAH;E*&e%WFQReuoi*M3a1_mmNQH$ZgM2ip?aVya4H~EFs=Oz--cX zT`pTCFAEh`%MunjONyE{Lob4rMWOF;ga=5udlc7sCv{nzWhl!0vKsg;$u%`oYxS4) z!)PV*c~<;{grx%%Gnnc+ICfXZzf>i)jp6mH=ahgHbSM<&I*y?e*Qd*+X)8H6tg1>& z;E}ZbZ;L%Og`sFs^1s82mE|94w-l8WUcpMKq_@7{5c4?%Tj{R5{E9fU-XG4{-Ib)b z`rjV+p`h6z#ayCQQOmX{R|9zyHyMufK{ z_g=`nbC;tDy2W&*ScTyBBWc@Szm7)m?`*S+CdM|DSw(-7&4Kc4oGNg+LK=VXFvch?!w;?yOO!T*KqmKgFpO=JbBXxn*MAc-q-D$y^@whu*ry{e_zLfIl^W$B-lI*aLnCpRZ3 zT_4dK4VP}xUQ5Y z^pgT0G&5J!10e<+B``S<7Q#o7qlY>>HSTz1-m@l@Oj1WaQ}1zc-a)Iie9t8K+DGdI zERlF`Y^ABDhc5VL#G)C^*)J%_th+zW{TxTOKg3f`t(P!M&MFQ?^DwOidBe>P7 zhG_tM-BfIx7aCF>9BL6?V z+RF&?3T-{yWaNTZUHz-2jD!cAB9eo5R1v=L0Tqz@1`zg&9z z{_j$MKzwa-&`Vfu1|_oW!qLM-N3DF%S4Vu zIoy(!EDXiE{vui|THyR@vw3uJn3yf6L_0xbr^AKu{rg^VNG@~8o4ZN{e}+0EwHYIX zG`403k}v&%k|)>1d70nT!lJHbLW%AGDAK!TtYNxJQ*<0^Cfg7hND5j7>oc+*pGtU; zK)Pat#Vv~6(p_bTx|Z*T6~jsA8UX^KCD#!*!zmeZFX+dtY3FZ#>lzYE^umebu$_Ps z!0>>REhT1AW{^3&0YEB4AW%d=j|6GD0%-SwlC;$&;~xP}D${os_AljY)vja~YZryI z!L-mtWRkhC{;End=ORBAA80YDGm&61O_&-1;O*Bg4e7*j*^4s;`f5E*fWespCPL<0 z+54~9q}f$>;2BdIcxvQmL8s_r-l=Fg@ub0|H(R%l;w+c=mg{*?K7N>|1QwYl#feSF zp`WWhW>Ma6xr77u^!yZUPw5f;+v`l_fo2+ zag_oP`N!%(X)1y?r|Y|JUZyNJS|UxjlTD?rBk%wi%lX|3LbkX2kmw^}`W<7pebJWr zo|P1r(8mtb-QnjB)b;8h>lyrXF;F6U_RYu>y=chKPqUGN7$MLSSL8~~eG@Y>(b?Zm zb{4k@L0M#P3>+Gwg(kvg0Fy9=ev$d&=QZrw?Yus|*(z}F*TJ+Y*4^~i!E)lyO56L` zCbw!?Hzv_2Xu8BXWyMRS|E}?7&F9%k`fv`w5h1O1b1*L4a*=~~_Q7j>ZM?{?bt<{` z^Uz-WFZQ-WOwzjh6SOdgV_DJBfTy#zap|^Ypb^et%@>=DU*5}qKPFMibAR%z4uatH z0(kIgVD(tU(b-vv_>F$p6%on9-_A`uo7gGJ8>J}M~v zCsQ8~TUvUuokIt!F?~}F$Mimil+MwDa7qvY6$7+&iqx`~FD>c&x@Fz^*{$a65O}-l z9RJ7aV}y>KCIphhwC)3-9M5Z0a1U2^}A&_X^ukOKN=sA;aq=>t+E6_n2AE z)RXwB+9m77SR;0?-wWa|=FWUmbc5S=>av7N;py*r^5}G1#y(T&sP^j^YJeo&)q+Dz zYP)>@&`ZjXizJDa5dI4GYbn>SipqYPm`}^`)Uy$W>`3zI6v8#*-RMA0ztS9ewvO=)hs5BvZ*^j9leVZMW(7OI}yIa zq0AD@xIXzqJMAMUZdjP$mW!}gn*ou3BUei<;F=P~6W%w>kYN1%F6UsCe-TQ^8Cr$P z5=H|u)pb)n3mvrkMPq0|Nl@$dt_4)v!TLX$N3k}sMx$3z1&sSpc?3_jt_m%h2C-eL zzOl&v^CXqmy<|2dEz(ucM8wNALfoJ|cY&hZhlLYg>0X&}1?E2K10GY^AIStf+!G4c zCZEJrpqBu`a=fFo8FxrFGXq4 zi##qyLO}mcs8@+(P!J+LlHmjddl|{Tj0;(BNO1Kup3`@#fKT_qp$QXev|8O#I!)Y8 zEIZ*7)E6gz#>!i(ZtcH_k-{ax` zre^0PN2agYX;`TY+M$4gyP4UlcQgI2B_QExiI!L??kS!sjr3D>ve2IX%wK^mkMb%c z0ZS0`tBaz;mx?XTyUQ#qPPddH+a8}DTs4iG-QEW;mdNa8CiLLnXg%AIQv!K;G0~90 z>~(>iH~)|+@;OkD7^R_@HYk}{nIvBFOEIx=Oed#jkUZfAwTa2XB>T>)N>BT-d$^>& zyDokrI_L1>;`Z#y86t$-cL{=L(a`Zz`da!G|4)a%JZ-qgz2rJ=?536!&kmt0{3y74 zztb2^0X%3j)lp9yyrL^6N+Ws;F2aKkd_a< zHcIW)+b>N^GT^*)pcMon+$V3iHZKZ65rSvLrL86p1EN(>lRx!Wo)^SU`<|EeI~UXN z5T4H0jcBqOU0Kn0%mEiW*#L1RwGA^QGTsakHkw@hwE`3DBIgUZVHO4%)CrGL3Z;Cv zc*~OJ6Sf^WxhZ$KUOVs|#7|m1BN9Fv1r`bi#4$EhJpKfZ;U35e99q%uqB!esR+`p6 zh(Fb(><}5OR25V#CI~}k3>-z}M-qiEZ4Wn=E+;I-Z7?ZQEnr*nb^@Xkzm`I2OvL%B z#r2pqFjz(?_2mJdft0DkwGXUdq!&-m^pZ^=pZa3EXOlfYfo)lA(h%CnFA1~q$M97< z%kcq5nNvy0aHKehI(QGPh;TdT1JrwX36FPLcUsghxv3wiTZ*- zCFL%&nT2O%X#Ki1?u7Cs(#rDIA%LNr5_&v1H zDOWpYp|i76>@~eQHm)V3l^-!OPI(>aimsIdCSFtsBD6g<=8_LlDAJgVieRW3PM2fdx|1_e;L+|B$A8CEYU! z|I4x2&ty(4z&a78UJtokVUW?Z9?E-2ml8dP-62&aYDoV5Z>@NFXFtsI*e;L?vm3fJG}1{#`CJUSjSA~&x_ z1DIg(G9N>%`$=C|(>tWU2LCH^$FXW?F+xeRYI>PJ?w9u5njJ9OqwXKseot5WbsOo@ zn2n;%w9M+ni#Ms^Y4CDSYBuay=n#1JU*;xG0ZX8hqmI^!HZyeLp#ZurQkBLLO-3xr z83^~%sN7(mXT4bHQH|~V>v1PzuS{fT=OBG5NZ1*@d@SD$erlROq}?XxU#o8Of>#>T z@aO6599jLVCCcO8-uXsNyIXR(y%Y~y=?u!G8u;xE`>*X*y{0`p0f=H&oGN#hw{J`$ z@*el0eIcz6ebewfo`5!1vX)H$4SfFIp`XEo3TcTC;(`usleZk){fXBwA;-Iw#aFwz z=Wq$|0|@!JpFQYe;@Y|Al>*Co?Q`$uV41{9+QVva<1~*ck(+lbR^^Am)M1Pr!l`== z`5pedBgU@G;*&ppAltwJ4&fG}FGH&(P6F?{Awn;~pK1nWs@@n(5DIlFWpaQ-( zVt&aqx~QkqoM@v0s0X4gJGvnOZBK;>1E11=NQtqZao&$0QvU%3{^-XZq-4`hxaud> ze-qq+ZW9zl@W1;BTUv`MgH#l>G>Yj?*t6KH3T@(xJoB9`4)9R>j_}$V-qgzk#P|1H?f>=%z9ypLhCG~VR)dKnkFt(Fp;FZUK8~BvpJF0t=1+`h1ZKDBKX-Z*IQlSrL2(XOzMz(B5 z2P@+^?3wc$U3)zj9)yw4H>Mi%sPA`o$wOrFcN% zDk<|rLl2dX8=ALf>E%#h%^-Kvt0zk1;Ns49{0LdzqAU(O1?8+5X4Y=C!3i&0+dln_e#Uf1cV4+SHCJ+N`)#I6FDqTpY5~^FW;Am&3G% zDakXr*>4Uk!rrS!&mOO4dG?2nl1h{YFvpHCwktiX_E}Q^F>nIo%GR2N(v+HF(bN0$ zF7xWg+?Pl5Q6nu>3RE~0CQ3(9d6aKH>h(7YA|yH8sX%Eg81}}$nLFh_uI5GK&Bp|o zEyI^hbo*#l9Ng%M@&DE$vf1EJVZYQ|1<$AyDM7I>gsBHj5Vh1Gf+Tp%GbX7nJ>#+% z(OL@thN}jHgD;C*XRT|JvRhn$^9&9pi#i8`F_N@NB_LJb8}zfTOz^joImKf=_&yiI z4T6_>qVMXt86_C1qBYcF>f*pOcH8n;C3l}^3Y_*yaRGUnNyfJnBePr4O+ga_#%uYA zk>%rnNd#d_n|<`4P63Kfi%R%8cyNveoi@RNM8P98m4c5lWsbP-jRzI+7p^LcttKHE z!9+NkSseTQSxe%zsumf24P`Z|F+xax?JkB8o(du-o{Qj1`wl~N%(-zE;8N-H_3S_@ zH~CXkT?~dr1Y$A`vE}>RdF~%6q6NYaIt-9nykMM0IOvGhF?IR*y__@Pk83CKwS8nC zG{R6a@D*IM5nhJUaVU!p?W zOyPAUB%B<2q%;nc@Cxs^>)Gc6>Nso37^V{hW>-Whcm}94Z%lO~v@VAgvuCv*LwTma zsh0-9`x_fTU*q<9ZY*ZcK4~L>t#P%ZuKztJ1@_(cp=fD1#uWzMI9d~C2++p~cFgP% z1I$ga@(H?lQIZ@{Cs0F0TqvpOgCpdI4tR=DukAVnxX5$uJW&k>mhI&Ql=?RM+U)P^yEHO* z_Gl=2?Oz4F(9L5#QtxYtW&@VwFlt+FR%<<2E@TINSkGWsPZMfPG@s-|I}<+nmJL+= zuQXq2JzN5bP1SWJ90~-VTBlICpx#m3V%}VBj#<`5*7;4UJ8|n;DoN0L()c-TB9bg+m8G$| zdO(xBHc$o(z^NPe#fL?8Ed$c*)@c$HiV;hW<41E=_=we@lEo`Z7Y59r>4w8=UZQP_H4(H657X;mzkubnG= z?>@zqvAAjr`t}}iS)%t~P`d;3?tbz7}onb+}4OMxj$>*xxnhO^nwr#87 zvHdgrM|S40#M*Aao>XNvdZ&s;d&U=M<*b~%JR6>KpLhCN?DilWh6QwSTt)T8k>l?} z4uDAd5&Jh5Kj_1%#KZf+dW@68pFkniG7@B@|Aw)Oqh{Z9+$tcpr;SlKzg;hS-$kpc zoj5}Zn@s-&QR9sdyYdpxZvB5Ab}D9`UmnE6m(mlv{2Q~UN+NG9uhwGG(cQ~K2iD=a zbn6|Fa=88tOk{m>7v=Z!{0$YxP2wVcVn5M?8J=l^D{fu$9iiw8=qTaQTurjU^UugS zGY*2>d}Lr9WTA)?c(TniGMHf;Ot8s~fwf6lYSZXG49rXtpL^6%`A4+UpnEnJ;c2)9 zWs#C*_iD)pgGwg_5N}pEe`a9=LlJFR=2a$>v$6%#&#YgydX=R?o=L#C>HY?inFNtL z1wjGfhL5kAypJ}UG9!+iALSz!yD}uF16zlc3#Zc}=%Ze>RsOM1deG3tplgzvgB+T` zVMcmsBZ;jg3_$^M*xX~F86K6$kEE+{x|vk+4@*kcDzsz&c4hTh!^Mi*8ixvv>S*j- zXb5~Tr* zqnIayX5(N?Alc!4Hs0~UPQ$tgnZxb&CHT*qK!Hb<596HD86rw-iX<7l&|WcXKp_%d zRxc|+iZirG>2Zg%cfi>8+kFc~wT3&V8?x92b)hC?+5X9F4vzSdGeKrDT9zIaSpDKk z6ACMU-|pslOH=l_eX&XgI=CCuM+P0UZ-Z0TJE-WCHS)C9`_l~UR$Y8Q(v5j@XpTqG z0=9QOKF??MD9KAdhf)3{o1n`@)cl$u-pjpMPNkL$xcR~2h>Ik&K}H2sQzLh86Gl@3 zvLqsA#!7}@Rs&!&1ET=51fXPWY>kpIWUY+AD21{{U?gEG|5fdC_q{x-tu8Kd?)R;H z7WsSDttzF`yN>r3ug^MuDd!GP5H`$kdcsiMApkp$l?Dnibpd}^C3bMIN(n8{%!CRR zUxBrOe1#GEEmpB4icU0uUkBwvS$1L%its?KmR3+Gfb`Lf8?w`L_P>aTdrvj5l8zZs zG?KfedAO%MlVBOm$k;1g|oZ7H+CVGbSFiHNNfJI46>2d3p?ol@*y!fm^uxJ$F0d~??$lI3ldq6FvNR+ySLwL8>cs#N30YCL zbQaw=uzv&(I&}f}b^TVI-)0_Td;>?yiJ}MY88wbNiH?Lmi|=tOgtODxREmZEehLcu zk1d6Vxm|iX>|mDM5>|;(8jxETviVvLLTzqLHGaMXF{9@ARP(LNeCCTyUQFqq=8pnx zH|S7!dSV(fA+_VJ+WzL3$$P6+zlj_nQa_2CMlmW%n|polgn(u12cw!|mjlXwP|uI8 z{)f1Wi@V01)Bup8q~S~?{)$B%8)G)l*A%XAbBZ}r5mC2~R^+`2Qeq$q72JHeA2^q?ooGX%@C{J9k01P|7yRGCrq=r=ugL>Q#+chtpdeP_h3Tet8=tUZvXz zH~X5_j=mx+lUrC1KP#k8CYPSsj&bOZKK=eSZS0?BS4}6!jYafl_A#U;e zf>$on56_!9v0KM2gbQ_ONUeNyUljZJtscmRui&~#y5(JVS!i5dFD02kRzG*QI-BFQ zhQ9OmxbU)i=h|f{^6%76$*E%U=D`9IIs{$s_`_hSXBt&+O{!-}3(n&JErv^p5hBI2 z$ncbFH0eV~BknSC68(&W{d4)TV$EU*1ckmqp72{-eWM%%6X;>hc`((CoJyC4BCJ_) z$V_!ibX55BJnjKG>>|UDzRE=iF0#;rf+~eiJu81M!}MH4rm8?k0@3lqf`Z``D+0k0 zvcDw$!A&tgL*Vi-Q&>=usK2;!cZfr?jpNRTTRGl9Y`k2l8ZcI(2F5PQ#;Fi}GhP28 z%o@jX?RDq^MFF5^96+effHWZT)_gDUD!wWmoFz>)c&k8Y>mOj&m=3T)3Wd|qUU59= z%9YscLs5G|)=M^M29R1huoz8=qC!)vSNTE*wz=dkM0?$(Oe2#aDJU8CCmb-oBp)Pr zoQefsMwU7>n!1OqEe&?E?!WgmI0Kh-?sT8AC&BaEl_kL(9r(!q4Z@d|&Mu68p`E^D z-|h`6b#i2&ZX%~F*Ryw6-Gc=5g>B>OKZS0(qw`K`gr#&+Hg*RS3v5Ba<+Y+!aDQzi zNAJcQ@Lj$lxC1s1KsgMsl5w@z`ZrBbkVCB4o<77tDLw~pkSS`)RyoZS;+6TyDGm!Y zG4@Qe_t~9yQOXFsbfBiIuSUkBJ{Zr~3O?)#?+m+=4fD`~8^lo~ycIH*10Z+4OHK{j{wPXU@~(4N4G`uyftdlAnQBr9cybA%HZrrwF!(YMFt~?Uh+21} zaP%fB(!XgO30YMs%W~HlBq#7Z6`+s62`N( zPOht4Yx0&98(yz-)L&DhJO=Xm-7fORML;Pxd;h8=4kQ^rgQN4WewilpgbAGnd(n3_ z4VUuG$wLjbKboDh5LOqGab*Vn;593s5wiViggI6?iK|Wz6h1u8v$62i4=%z z48}?uRqmVZ_3qpQb6BRZ>BN56#pbKP_)-w% zA#`yH7^#7=s5{*+{P|$+rITj<*wzlHk)TqkJF+2*x<2lDanY^x&>(jNScD`i zBRr@DZ=29DA76~|m8X}mJ(RQG)76m};>> zuCaJyvU5@3JtDi&6(N~F1U`_E9|e5hg)B$+`?`!gpk|i6G_mQ8Qn+R>p4>3Kbs?XcS11`3t$wx+HWi=T6YgA zejA;)ic3--e0|$~)9GO0BV(jVLs|)bMuQXpR*Ad+4FotK3IX|hM4YS?APG~|f*{Bz z{Td*>9Ov~ToOX8!9BIK}TKMQd{dd_QHdW5v+ZLKyW{y?~#B3V*Zfxtqq1nA*Oe2n? z_CiRU;)}m({|X^6AsAPHmWu`|LD`e=8AHPC79W6+m!` zPJ6eBfA8{0ad;LmtecxG-vvi79DolSg`_Ws-r8Le1e=kitc9pZW;)-^Y8J;0t}g=y z?kNFQr!5Y;qiM8O%LN~-iQ%iR;UYIm_bvk8##i=ySA|iR1hdO|Tj+Y=M=4Ec2sIN* zvf-{<5O*K|jt4johD&vN*X6qZp@kCG7xiE3Lxp2V{I&jB)g0)(zu5sVrX+rP2e(m) z0s@oAuHjzLE#0?4<-uYt&rg3Hrv*PQhs15_eXo6U8Vj_^Y6FyAw#Emca9BD2?p&~) zg7T}2>Z>_X1-4jl|H@^OjoZ=7YV*JT<^+s5hwuPYLy1ddTsh~3JJ;h#Q0WRL=6VKm zJT84t36YkVH5NDW!4W2ca+S6%?~PjI_(Kd3L`q%yG{aV3t_qo)?xW1@4L{v0fhF~y z=YPO;`_-3sy=5b1Yy67R@~d$3J?gMK1~qqNgWHZmnDzsZ)|RA0I<5#&4Q3Oszhs)O zd|lHIvO`*6P!+?zs$G(i{i#ck{^E{=c|ulxc$tLZg~y!knl_+f$zrIIstFP0fyD-B z-rqtSezr{Y8XQE0?wa?c{h;YBRx%0)hJ8nX>;AX2MU6~h>K0d`{hX-5LeHVZhm&HC z_h8+C>|1g3Yvr63v7r#?OG&HD;=lBh5#kA$w|&E9 zo&x^OP)g2{(`patSsyv_9nG<--7X39%+Z4#`joqW;J|#nAv3NvA3;x+Knpsr3~wdN zvsjV_HHXeSpM!Q-iS#UyKKS1{AU7{ zT1;2>;+LFB@9Y}Se+{8|FpNvB&DXjU@!F@*j|LQxVTH&+NWcV%xmfV2;FUUKxn~kO z5kNA@F9$-}4`LDdSXZK(mwFL0|WuK-6 zF#m{7AAbGSn>K*DjLXA;*GPi~s$<>-MlZDzhl=lB>fArOrwdU|IailK<-^t?ECGFqyB-Z5oCatDx_6Kw z?Cl=y5@?w508|6c;uJ@2rx0htHbg6{vd04GF+p8@V220;6{4vVc zsU03V`mZO3iWBxWnX|nv7|1xp?0QUC`0dEbj*oY6n8v6^PA1RYkJL679BII3xzwO? zlDal3k#lpICaYg|;kv#(e+Mm2*mu1QK~ju>I5{}^rNR$LuFpk&FU-2)$quiK@Adz6 z?ZC~x+|C!ZzI}SSEO9}>K=sYhNFvEW`C3-;a9AY!*=y-k-g2qidT3R;2DW6M;|rii zqf4Jav1|`RxD6krLe<;}r(&ey)>rFx?c8j`6M6S$W@z+?k^@8Us@KH;)1-Fky1~jH zJPY}(BNcN{=nX7D zCl6QWuqV{OPYcOc@h|Z9-~LN}GL!)TXab)ily0+@uNQr(ZAR~rDIn+A1W%rbhM@jg zCoVRsRwE=deFV`9bR0~_gGyNP(OQInzsDO+WcT36`rswO#4ui^QI)ssA) z9Q;UW2q8h8O3iV(V`a#f`A^tm0p-QHpi!>8rX-E`9T48Lae>(063ccCM(u@)q-KZ*PfqEm~e@#$m4}TrZ>PXBM)`N2NWJs zQ1^SU{lHW;Zl-CXiab@i3&>O;9p28VTl+vH9?tiSVqu%g!GB&&*;mh>6(Zp*W``Uf zUcaY~tF?wU1f<>{Xn|;MkZvy?sD_bYXP)p%H!G;z)Bk{cmJu{WkEpE{Hs7<{dMfVj zLK3#C6Qs>w)A7)H|0RbP*C-2HGP@j7ue(mlib{56#Zlnm&)-%4%iLY5w(%4l!Z17u zVR41eC1vLh(gA6`|NB|mS6rx=7gkk}C!%box4CRH%Zo?}`zI{p5HvGcZ9Ph1fokI~ z{qP$Esl)Yh_0?Noo^3=Yd`%7`$znr7MI5@6{1Pq(SO9q~-vjS^L=>Ztj6geKZ z=eB+-vXZEBg=1Lo#ORJ}&de*aS_TAalBOqaEB_t|F@(Im+~4szI(Zo&W7GPrtl$u! zdF(PN(t$=_0}}SFjE3^jvZ@sDKrlw?3+^J_!G)*46=eO&e93wTlp#9p##v`O^rz6K zUg|U*Zd?RUp1DR;bTm)sv|8BrzCJ(eWaALH%wKRgMvQInr8 zWGh!~QR#i5&$jad?b2_c0?KVX{~(N`dlQgJ9s^2OQ1trzz)1CL&%n;>j-;E-@y*{k zCUWof2jQ;IobQW!Dvj1wDk3?ub*sLY@5QR+p*fd${f6Aq8zV1BSO$e>(NIU5Al z*wWaR*2qCfqZkZ$o>EmPEWuAPx{UpckSQ~UQH1X}1Ikuz5=PE)*T8kM)mN1UN=Hq4 zRlAo-lYCEK1{6>rm&k78{r1vd|0FG6@Zmi9L=otdsWaO6x)eh)@cEtcpkZ~MW@>-H z!lEpl%`2#&(`DUV%azuF@`h^HiNa%SGbGEb1L5fe{qGR4Ix>s+twj#b(elvJO49sF ztT5Wyie`=`%Q{%yBw#o#-JE6Mpp{~FL!!g?N^u^Fc~1fhaw4B3*Tyge8RLa4H&Q z-?>Lgy680bd#FIvWnj#Sh_9o|r-oR9S?2O?i7<0dQ59#jhAnr4XRAyswMAmz!DrFb zTaZ5N{y8IQU54*jX6k?{w&Yk`fb^HC3U17BAm>WM@t9vc=yQfgDgvrkVigHxPQ9Ok z;_Puz;oI;rLAr1BNe7gb>}yzGB4^laU+?P+Vd}-liiE^l+`2(NtiQ5*$-DcoF(}Z^ zt+N-O+X3;UMV)yDe|LPH3g}xSbvKUoC{=u$$UAhL3v!2yTWZ6@TjP9-1$&P}R)v$= zZxYOpy!8`lRVAZGJ^*Ds-$Ar}$~-WSi)H~;h}MPo4v*VHcpH%YY%fBg3nJorGsq^o(D0=Ni1$i>n8q+Mv$EIB#TxgHlT>D@I_ z_SpW6fouNwcB|ITcAlPF-N4nJ9?&8GiF&s26ZL{Yz|`6Dq9PS_WskLdP3`u^2dw~oG$^UTm^56_r-9QO$|=0A!i<<;nc<)7F1 zA&KC};`0127t>~4mW8Yf&nGvxGA+*Hx(}a7tD5sRck1tuc#-KFyVlr3PA!H@5p;wW z7~Ep`&w+{KVNXuig(V8Y2GdjHr*E&%DMT*W;Fu`t?C2z#6?N?g33Q#A<-q6H>b+*) zfBSJ6B~i%(gGF=}&0-Nw@vPo#v(mNO=tll5a$Mb;jxHm|Ko*DaTl6GTv0OnjZ4xS_ zW1ix}ZA>;KY(q@kd6s2jqjQ5xb<5Q97$v5rtG8#zbI@zc=)EVyvyUqHnUcA{@uUAK ze}X=PIoGya4UbZ$#O~39v(whHY~6$lZOZMbYis`b`u+_+0nU{!*_s3%U`Gg_TW<&~ zCF;TKjkBAqn)K;!_IM+l&DV}R{+SSTm zqD&ab1qOjJhR`-q-d=JY%cYPO|&k=i6p<@>s9gGx$XzWIZJX z|KO|_(=&mtI4u3`0AILk}8?v?3}htc#t%{Zne?i zbNW+(byT{_oesdoKUEhdghn_b!?bD~E;Se`9ahokFaRrG|5Xp)8F_5-LRAz1GgZ^B z4}a_>6Sp>wIy;Lr2P1=!7WG3=OI`WyI*eO-tXzCJ6FM6%U#`OanVyGS?L&JNqgrps z#CxBKho-6fclB5P=Jp;VE@D~10PM>@-A2072Q$!e<)Gb#b~37|Fp1i*=_WjyNJ?nC zM$G}faJ7`TK&y>YT98J#)4B_hJ2~Ty+0q zZwJI0*QDj_EI-C%D+&Q8Y@P-u=4UqNRWPf4r?k7df+&gmY!S$DGlz1|jl5~yR*85lIv^_7a<-$y>f5*$dV*A@}rF$NmEED2Su z=~1uRx_$OtdaA^OUv1-JSYA&rK@Gp3pgiPz;w*pCdZ;dc`L->VlS3Q+W5ycl!7f}o zr^M05p-Ztu1tG2Nlb+k;R`yK(Bp7~L6h4wX!-C(2hjWp3e&eHLwjfr7AUli3vc(dH zq6q+Utb}5CL>!Edpd{C{BZ*N@+P*dv20;TnCW!R`=+zTs98hy_mb4G%2~?>sM+Y$; zkT{+OQ|5G@32p$LeTsg6*Jru@Zx{|X`g8O8BmGf)|K9de1?!Yz@OArPUpYOyfWnTV zOJmO{)(P2S6zqC5hzL0JT)4l2wV!_b4Gxo|OduX_5X-ACKw1Naw0a<6b||@m8!Qrs zvLy7{D#W_qrQhABGz-QO!SNw(zH5aw6%bR@iBy}iPfI^ZC*%F@sjkCviu=Al+a{J= z-siQ@@;Go;+xo68M9=cF0qkYgr)&!Y1s@pNN_3>I_y!Z{N>DUwR+rGv1Ur3<^R31d?)+b>O6M!$rl&u&a(!#e`0D$4B z8yjSNCaI6Da?6Ef6bfw2!;{R#l}psfXDyZ}*IfSAy&Sz7_W7La8#NF;(e_fZ6{a;e z$9$zbUGQ`+EcJ+^+v@f|f)Rn%7?AAX_?3SCF|ru*N|m#Ul-tWkA6tdp%I|^ zjtFPBhzo5~diZXF*|GQf@id@)r;mA%wVk$*LrwaYS&TLiFmD=H46LCZ@MIoP?`)Dx z+Gv@*%_fo$WimfeUjw`?2lpTDj}L#-KI6Ac4C3EkKSZM<;!6D7C$Q8Pr1$A#)?RZe zaLEuS`bx`V;MPVhS^Q$@loHgT8^*{pG2A(lX$1V(@_dXLorMLl!>Y|m&FXlBw{eKf@4ZM(t_JaIIO2hVE*fAvMT(?yJbaX~R-Zk*d0& zzsvm+)vwD*a@^_z8o|(IF&>GtJGh960@z-XTCV-$dQCebOakZ;Z(+Ir&V=XI4!v=1 zO;GO{z382CQZ$Ce{Br{;T_Oa7*Neq-_bB0)La8hyV0o9#|2-gA{*$Dss#^=@nBAy{ zX}m0xi`ayT#^NXB)QTmW&c7@|og8*Y-pyvQK@=1X|HHbCY(~o>RoF^8f$5g@8R{D1 zSzI%K%V?E71{8K`Dc=JxdvcG-Rc$e)N7gK$WeU2i4mh`LOC$HzLN#|wEJY!4AIXAl zG})=FprwuS8(IIf9|h@z5BiV3OU+)E15tcXaYzNgU0)?W3(kJGu%`}4PCsu@ z!MdyQwm8J7jaLiVT*UsYr6_H@7_lV*>^<1awlGn)@A;!ci!HFIYG2nTa$i_ZEc29a zZzV4ds_r7s=4UNJEg)2ZSpW~Jvv*KOAQlsbDW6j8N1c$9s41ANP5 zeOrT_p?Y%$xq|k~t#>=Jtdd20_|t9+gJYqd40{+v6$U*6C5{dsh}5KMzt{+m_TbZX zfJkt$H){mDL2PWmSWSg{a32vAPf4Z|M;|hlCO4Yg z?IZlHt#X*mJ`cqd!X6<3`@0GlU5uYG?ms}+Suf7|%0@{u@=F>w6MA|79?SfTp@Nom z`1N;uZUp1kvtPK1+`Q;CD|Y&y&A$GCH15vL^M`Xl$|jTX@N#m6ehigN;GZlt~W>Jj(bTP0pPd zz4&uAQ2$drUvn*(3Sq6AyYkz7|1BczI*#nA{Yd?OQ!eT$W8}@E#$(L`IDPv7yn( zXQI?$+@?}gOqLL?`tOtFN_c8jWufyD^50G5b$TQ7Y9)jalk}4iu8d1$o~+M#jIjQnwGNeeuvo5M{qctnDU(%G327UaeiH0$~BBsCpI+?pwm=&UC z@7ZlFt)!MW{kGjP?_Sgyb;80MIQNk5>)x1n92$H=PgTA+94u~dseSwBwk40}tm6xg z@yjAb#-(n5v78^Tz{?9}73~vHm% z_@axP;4L$2$^n6B$%HncZ!Lt9UmH~p&E3qg3h<@L=8oJ;k-yn}ofn;rpN2Sz)o!GR z6f-wuO)r^|FA>=DD8K+sApR-90^(U~ia4y=ZEUb`i{1P7p9g#Uisnq5P%4)k8rWAt zwdgA~x#%r4wdPEP3W{fd9k@eEmtA*K=jj{<{IXBNMxbwuXDpi|?^DAf_tpY6+`5HnUY^3cij`M{V&@G9bXHWZh zy^PGD9UXe@_;T86o36O8zIZsH2t0-M9P}W3dcG6SnYy$I83$U6F*jF26-XJYwpa*mwT2g6PnbtfdD|r+NI?UU(}(;@17D+p%PI zY{*wvWE9pVEW|x)@du#Fk+%`Aw*K`&_}k8?eJuMol^Y%<%tr`US8UtkMaK!pzvHgE z@y~eB^xAp@im@rYp38JU{w^%Kr855_pX6R3*OCwD-=cGrS-U3EhO@1Y(=n@Cr}u$+ z%)u_hxw{H8- zHhj@zNl_-u`Rxla-5bTo|J&+7!ns1?@ChJ`#~ZVW($8hj`ioBx_lP<-?fPQ2TK_BK!Wj)mw?9U6Rq+-BV#0IRWQSz=dp zS&Rg68^iQK7ahn4tA)vE@N|;p|JGZDasOJuDb?7RZwM##Z`^>IaE&jXx|L{X5T+01 zoe$Mb*zsyP2f~67)wMmJg?Q@~jN5GU0V*u&(Qn>yk^E1)mo0nmxNm&RyVGwFChF9C z_6nzr;RqERf$ivbp2Hp)?O+_NFi8*(qk1np0bw?S z>GkN#)N>EXEL3=#uNVe<(GWrTBi39`E7@S7QTE`1%Qp~lza1hSVA*&q>L)3V|G7eV zTWDy_jL_|Iqsp+{2t-7A(46YmbE z1KFJOCw9qd_f{Mh>XHUf`wq7plZ2%^D|ZiCT919S_DxT-242IkXJ*vM)75PPcx|?K z+H&Ol!sFfHMW4~z*2JU6y%=yiE01fb4X}rTUq<|8lL6Xf!qZge&$U;+gYigK>%Awh zl&f=upypUKq{%qLJ6(Gf)WM>jOpm2o=?8;1S9z|EauZx6*++B4RXqguQV9k$>MOtFY2cmA@0oTcy zH6#_x%|ODu&zUw(k11k5GD^wH7M06176Hu_{dO%4P~OQj`#7D4KZ_Nqau>zoBbH@QRdmun%faVviuv6Bz2-~$c^3MC?86I#x6ua{Z^8;B-`XSRE=rL$ z6M(R%>t`sG0(!+)VOjzy&-L!DBaSTo9W2K^GJi|mp<+-_p+3eH1;pueDPwUDqg6q1 z(?VY^I&G@T53v-URYrfh7TvUuv@a=uIYbg0Z9*C043`$I4B6bnPpVHly2KkyBkTgm z)^msWly>l|Wr=~6mSdTJv^}~(%f$oZ5eAXy#>GDh zRy&x_F|nGk$9t{+!u?jR@4bRV0lED=eBEL7ek3f-9(SM2KMiouR_}XJ?$tG;KO~@f z&W@y+lxI26+cE3R89~yr!g|Al9<3MJ8i}-f9VC7ov2ghb#QqAIrRUEc*kq{7Pga_N z{eF<<5uTyw)kd$Lfl%P+M;zWW_>m4}mu4krSjS@2hSczJegE$0+yA+Hqol#7kJ8b_ z^*GSJnRr!P$jJd-_EIac&6rLfq`yR78u!v*H3}Og)=EMbaTA`w!dv3^*wso(U=ls~ znDA2F`=UO5my4ruNrl$V5z*&Ex6IkP>gcW;WFCim{ODE53f7rdpcR2$dq8Lh1!;~MTfmK?4tRK*6NkG8 zZyod~+n*E*vaeo|lQ#>FyF(9BF*^MLQ+jJ|n73?|gb8mDcW)@I+Z0(HUbfTwKcoQpO zBX;q15+77VqJJK+zF+35NzCZX3sL1fFMaNhGzZ_d@QN*7lieMCN;puOBl-6Sg_W?- zmAFgM_5P|IBtLCuU?HBt)Xw9_J;#*7(-TwqCXVP~_`N~5Xl6f`9A(O}WaO>t$(sFt zJ3Kyu?1&!t5QUp|zZfV<3ckO4Ej25j^XUcgc#Y_P-FA{lWcpLCw>z$pjV7>Y5&N=^ zU=02i1S|RAt3LRfw?DKo)EX-TnB_dPlu5t!c+$(m5FHkF{`v?z)vB_xT}x4I^VLQHvws66EJeaCJ2a0hP~yICz_8FnG zyc^^5C(TdRR6{HCAPY(Yxul%RGu0L1d($jG4J`lpSw)0U03l#~+;>qYL1qYvK|PJB zD}amn(hV)~4~oEx_0g+F7n>~E?=y4dQ0wJxrGH~-0u%j}v%&5sY$a@nr{|?SEiF6F zRpqChlcDIR)bpPo^DDNx3G4^OO2Pv-M}RckoBWiZ2$lwmchF=L07E&)v)SDu@8b&!Mi0fk?eWE-Ip$DON>CKMwL{071WXneMQw zFyLsLE;HCHOd&>u)v-ky9kNCoSwvNY_`;ZIo#OpxECzdBj=FI^WN6`$T+uv)x{(`D zIgjcJ4|CbOo(3+(TmIWlGNPPWL&;{w1~*jXu(VQ1l|P=2m@glD*T1fi`=+3FSLb18 zf(|WEmW}r4`4SW)qEh0{P;wbmNgC&u?!sV_-S3UfN1&wg+1MV2)6AOB1&9ZuZ$y{J zh8;96YY@1J`F*DweNT2yVOy`=Ji^$4z2PE+rdg={_qdm3U^|vjGpwttBBA5@Kwh!i z&_-no2hm)?qTZ5iyB;XVfM&-=)!bMP%kLH%KrgHs|D_Nu(A3=5yCG}z-#9r&^7aV= z(rZf8T!LY#^gW}UZ4qq3q8czZLq{U7kItSj_fqzA;KT>EyL2vA zvHUrRoK^uC@Ea_h1vV%7Yc6|iOtYxn8j`Yi?28eh-^Xke050|PGp>3&AnS~nxwAd+ zNUC=%!lKc>o2FFFOdH?y-+CTqr$kNcu&%KZd?k&AP+iDtzZg)x%;ftw$3lT-QED~o z?9s-gORQ3?KRl#o(~za|_2jmGJ-m2<`?&jYHKa7H6fm@%(2ZdEeu|=rqPXm+1jno; zKbOvulZM($?QP|Qie-j|N7D*t3;>8|qxWqDyPI24pHWjbT4x$$wxqCDZ||NNcKm&b zCgk`?x(CnYD3TTz@^o^wV2csYYT$8XfoVO(7MoLL_%SYiFH(|AvTC4rwJg}iL%hHB zFK)eYL)>|~M_Ujq>3od5V1j#lpk2?*Ut}rQMT45wf=j@{?fIfR-FSh=wduiAz(!M? zOK!jHUo7kO;qYe5A5)5_cAhsqS^<^x3*&NN8{>0w-?VR}dBA*hiP>4aK(Q>HRjD`% z%k$A@=uYe{wxTF6jrsn58)!TXUybFjY!e*w6%cQf*RW}KX-SrHmZ{rhnQR10jcE)) z^?z2-U>Lv~#rDjw9A&LgE>MSWc^F)l`-NYEBb6un>iS1bonWI%cF-Io6>84rD?r95 z#@VJF)BQAZX1SU6Rnrtx1RFfnbZ)uW&=6>2e+>pM$vPS|QM@6HJ+ecS{L4cD;ZF(z z9(qfY*D_%mph-Mzsaj6gR|ImXjZpIXJ?bT~D?Y;Wm~8MV$Fi9=mzkL}fp7oycrZHc*E&Q-l7@dMELUy&sY{sf zk=1b-jU>^k?R_6e87W;|dZB!s@1LyhJ(w9=F$A#->`ZEs9X%b1H}s-p$$oM+-SCn$ z3Vvc^I6+nbxi;NYW6O0|PzNl9#ad-`xHAbn;I)j++4U$N!-wqliT zF5y7%iOmovg>|mvZD99SK%b5h-&1OjL58d@4DQ>eHwfq?84QGi7%AY_ITe4-<__?Z zd<9&RM+SR_>rH};l9!G!=7i7)|*Me;+tswnn3A;uhAt&?l zIjg#tDRSA6rbE;Ww8j9qC{uX6Zb%RS31>aWPy!j&D-q$g9&gB|+0gfAe##TDWDq5S z?I`&FNGx}^VdVua18??znuN^HcG3^-qq$&u$u5xGEfgJjemX~AfBeGXKQ%`URJ)onD*akB81T9L zS#K~$T>~Yp*!lXz2|g!CMqgZg>?N{0-d6E7e1pLfmX1WGtDzFaln#0Z?!vku4-a#p zIP}+!Fuiya8~V+ovb{*>phKRDvDu5G1h(%*o*0-!%EIU_(yZigAcG&)I+-cip zS}+5BL zu9|tuT8N%=U$tMshk*pExf?M`9IwiK@akx*_~=b|HFpjn(#DuWL{L%decu#1kI+lZ*SRi^=6bi5XkXf_cU6}m&7+Mk4tp-~JpL8BBkO$k#%dJGhpBl}R&S(Jzk&=ItWYgBUglF)#6N+I1{51LWP2 zM@_TS&BN{OS!5Q-$oR3rlAs|OsRF6v1D=y5_`sBnb$gC|~p z)05v6W)}<~^Py^R@Y1tD8ktAbmTRru>$E^kU~8f3{)?hqOAiXi2Ut`GmduU?f`xer z=nrod@tLmu(<3x8WyV>d#)8v=SAfy`c|8#r8Y3Qh|jGmW~D@ zr{zN&rwsZ_eKa&niSur4u>$!74-@Zy-FAKRHNP5Wml0Sr7yvIo(7$FJEp&y@OR&Ds zzDQVfHIlUd_};-Ol8AqrpM%Q0iBWLN3)d-j1};Gp=Fv_x_v!v4u{BmxRSV?w)X!}m zOQpIKlGnT@tDDh`#%Kh#KBq)F3lDYI>&ac1YSGj*lkVX{BmP)XRG^y~wgSeMX`& zbBrIM?;!a-K`r+Ts+6AtK=B1qi9|fQDiHIzpLuT!^0P-!~>@PD4^mU0Q|Q29=GF{eUxPT870sU@okp=Q#>90jSk#5 zQ0+OMen)m)y}N(hUqM-U+y@|^Z-av8zB{yTzD;|_n?ttU{I=EaIxx%UGbk@9Y>v#u za9jHOk^8W4;S;b{OTwj?`i_0jz~8=~YQp}}+y0akeajwMR#W_!`>qP~wT&1GPdnPb zEsIW`sCxDSc{zuI|L^h}?|3cpk(h%%eck_hG+c+-c4=s7p=` z4u7i$pywqhvipBSohNEBm=ZA};ce3wzE??vJxjlS(k*IoxxLw#@AWinVad}yD|W>+ zPVY)|PFc2i=n~0}ky&SENfF|4>2EAB8x;~uWX4fBDSR{kep1~`u!fPunSr6iLV_b` ziVjI|SKN$kTRrkcYxG?5D8D$Qp9u#Ft()k(x`7NX5UhYSZHst;A;Z!X4%&E)*WX5> zkTksAZKeeAWUCQ9h2qW*n+UX_;0Yq+<|7sl2ZF~*g3f$lwWJo+v~z|`p?W31%~R8% zI<{ESv&jr%)QG+P1LXfntRKRlBMPd;htHZt(Ia&oXZL9^y6n8Apvdu@A#jG5aTMW$ z8Y4+TNB=@bwDCvJ;-1L^Qd!;S#G=JzQe}#hw=F+kJMxu~!){#rp^gNfPtI<$=SdtiGwC& ztPwK?43Utq7|9sGWQihH$XNpcfPiESg&YT4{;T}^b-tX+78=afuJ!Guit_K<%v7m# zrNyg*UftiGborV9vq%F{jz zgp3?K-2sy0;%fN8f6k@G#Ow8cyuC586aox8HDPGW1h#^||28H^2?QjofH@-si8DBG3#(%{ma?RK{tKs@?NVCd+v-l3HYohlGTlXq=mk zw_rKKX?gL2q!)VoCBuG0{Z#}Tveul8Y_UXN0%OeDT?^4)bsT8RlOnzxYuqUA|6Hc@ zsx$GZBBeLNW$R8(iFgo>zcJnk*qWhvvibYZ6xrD@fqq8NLp#KT#Xht-mppms8$Jy z7R-L=Efmi-K7wr5dYHVr%&>7tmn%#|;zCgRJMXTcx1xvZVRSz!3+^ylF=G@z;cK`BFGcA{Ym!qS!>G0wZ2zWI2*FlKNdc zbI;!Z)3UHLI&f~%(zUe}mvyfKAAISCaZv0de3?Mfn5e@;MBcgGDN=DIiy#4vXtJ;S z#on%-B?JeQRsNw{hb9E$UtqF?c7IBIY7FnMyhNf+nK1a5x%XdoFkG=B*_CnItZV3A zXqEGcgw?nX|Js^juHFLk1HZ#;z0}xSJZ)hS-5}Uy6K~Z=O9$rob7S&W(X#c))7K%g zA4f>a&X#pSKS)bm|ARC3(|ZqjwuA}c2L);w%$7{v{)YT z<)A=a^3ksZLs|Li4{{i9z)6q8Kc!tq=$P@ zlPoa=t}Amnm`1-BN+TddPH%UV74;ZH{8yPnH_O(=p!LJq3{|L#7IczEp-HWyghXr9 zM7&1mDt3L;ybAJZ7`Ig}Qv7l2-5Ts5$+av08W?9<$}k1MWYYq(TPkaBrzcgcg&@OQ z$+{W>n#}1{Q-veKf6K;~w}kW)#B|i^cmbB01#2k9JKd#uiOeQ#8m;F7T{xdHk|4Ul(5Uj|kB*-z;PKcER zdFe<6`(J!d{J4@V5>>2aK>o%0_{WtSbDXV7LwSGLv01KBLyeOy{S%1pM?zx43x!e$ zq}rI;aj^6gy!eC2R!hd5l*yLz6dxKtV_68Ks?aYe;A8d!PVPC`#r z&{e>TEQvg~*rpZXtdvUjTeKR7lF46r-nk!Ux1OW*trK!P|D$=b;4UB2-MwjZX-KG| zG<94S8$UWJ9@MzG?-cQ^x^jZ&>6tff-+MFUa^g9928s+1rFW=pP=^j1Wi=0Z1aD3W zhX)603G6q_<@$YhzrJxS{B{`JHg{%6T=#s15PzL*XwZrKG*FkRqlald+bEV}iR_#E zhgfv&RD(Hur=BZ&ubmy-*G{Jgs@X`v-JFqKNHTi|;^fZ`c_&#e)A(BF54DkLKPZ?# zzo*zsS2Wg2Sj1Gpob0=|P(B{V#U$?r2yM7zFnq7go?9vf5+vrFv1G5NmB5}# zI{C+KQ&3Ea;O%`O6~%qASAFS{d;|}-YT;IDALT>On#%Y16*$=d4^XDO^lSM3L<6uy3Uz02gyt@YHIrTwgZQ}7v3QBSdpwis zn>xR92>#h`gjzS`3}hR%`J=JA61;RTe6aQxJ?ndf1KT=Q5r4YjR zs*qzS&YaYDTOhy1&Kz$5h@$cqWENJ2OV-E=W(hE`h>2}o=kGm+Lvc*Ericok{`TdG zH9W;*A=VvyjC8G(ukiJPgHAdf3;>~{$x;6M|C<9i1#2vlCuq<9V-vDvTbB81vlH1& z*1O=bTI{poQ&4#K)d|UHo>H9IqK^`!Pc6>ni0Bh|B$sqt3a}9j2|#3BaU&QJ8;#JM z+Y>x-j7j8Dd=Pmhp+Kh%%<5N#r)MiSA(OSns8^YjnozMJ+o$-U2MFDO>H6zp_m9r? zQ?S~$?v{MG6+^!mNAgMZ6}$UU>;^&1%qdS!ax>rsyd&P=$Do5 z34V=mY4g%fU4@j`{ybf{ZbDFepk$m+j9dNbw5l)z5bu zvyZa()lQoXq>7c&@xrmkv=U;OJdWO%nDeJ%2BRhEz3vliH<=)q2Y z!T5@#@&{>{RTI`|vSt))+6R&%{8%)5GcnCYDovLYYwgddAGp4(-$~4eg#V0zqbzT2-7_1P6kBd6Z4 z8^I>Dw<_t&kC%C6D4bV*d>Y=s5*GvI%p#rGeH?d#RBl=rBgrLN`dan?LXsywvc$rh zI5vu6NI(E!nNO#AP&OArU&rCCP=Nboh)M-C&Op8x1d=TbM33#6O~sx)zUPD&&7b1l z%VZvwNJW+)0z*A*ZiPgow=3a*a6{NuO73G2L!0L|Fd~C9`}b;`xH>?ACHCWq$=Xy# z@vZ1h+-5r&VyYPCi?6f8D}$f2HLS|uoi`bD@d4D-*L?i}NH!{}^xR?w24Q_9L_Ea( zG3#~*V*y}sZ=N>$=|X575?QJ>)Al>zUW~#+g-%6?ObrCx?zR7kagLzL8jM9%{04zd%JG z(8sZjt_OuA5f&2Mrewa_^xx|cG-sn5x*GZ$3aZ#raD<>Np^C|417hHxMsInYs@PP5 z0y6bwi>T9VsI50T^pYY@`tP1Bo4i+FmwsyQj;^FyN1nIRCC)YP66^vZ2!a(2Mkp-= z-je!%%4rFJ10SvATViwwsL@&2{9>;TR7ZBDHZyfr@p|Iw7JQltBg}{Y;-XOVh{+*;6QO$jO z9bgK$4DCdHLkeTIelMfnkUyiaxiVnSHkDPeHL+D%T(3p;{vD~V%jPTnSWUS94_zKD zL~m7Upvx~PdaL2X{yJ=UJ`0{f)zVHCX!%+HsXJ?Kz^|=YVLc4^Ecsfk{ecL`>Wf6OdBVenRnQ+5WJayhqqq0h6qFy^0*U6h{V@%)V}1D;cw zy-bqpXjKaY*GN(AbHX!UMPRc)WfOOFMJ-;V-!of@|C=TC%@9PCrGboFF&;x43~+_{ z5VsOdDmeUZv)|7K^^o|?{6zK_F|UatCU7N7LBr;sU{)G|e^_GRnk@?i?xYzyZKQNh zKQBohYq!%v=H~%#*~^{~9Sfs!c?@XoC+Hkz%a$6xkspIgAm|yeG9fAjW=G`v2#kQl zmLi!&TCg!g%dxm!`LH$UCLBGI&!^-9PtXZXfXH84x&TO*3(-yk*(^}1Kn=lxAS6F2 zQExd-`R7|XNmmif$Ohi&d3=eR@?k<^=c+Unne*q*{4bc!@LusOv^wcHUj|UFM+xZV zTk?@NMGhzZ*gZGm9#Il@7chPkEfYx?;3f80LD%XcLau}@FwK$eVG{vyPk`jadnI!e zNRMh@#&aZ9hzAo3XWuuJXwPUL^F}=!i4?e-QqqP`4a1@jtE)75KE2=gX zX+cW!YtoonB*vy)s?s!E&4kN8|Dab)lv1b4lvbtCS*A!@=u0w}UdqQ$|4#rdUq?wR zgj3qk^1xTLsaaZIN(j{*6o(H((F|$_GugV!6G<+qpvH*jfrd?24(wVU`7N1$waQFH zULKV;f*`lgraISn)H48u0M7&CA@FLaKo}B}Uh0|zZZ9IyMs+g>;1vin%{McK`2?yo1l8J75_G60*2jkfa4nirD3{%&~61Q*bUJV22no>x1TSSPfnW#WNa~2 zb^%nJx9uDNuxDY(RVMnx`d2<@_Frd5;q2JB>n>ZJ?{#k)i1g}GCl-iV#n&DRe(Nk7 zn_s2$^bs}js&tfi!N;U?3Ih@N-kOnnX8xnMr&_~-gq#?}$+}wuCaQj3mpi9_t$7Of-GtYk&%4pE>^zw3`S5tDtD{4P9T!g2 zyN>wJ&2D4`T<8@&yJuzFKkttnrr5ud-n4z#?&Xu{7QYRy=xrSy|G*Bmt+e*1Qj;Zx zI=0vs*DsQhUYl78qoPFtBA?4Dvf#@HGfD8*`YXejag+8(Dtq*=+Zi0WB}lA!-jP?n z*#vy9{!g?4{T_Fyb{5F94FK!KV|I7;BS2IneX_Np!;}+zbXDccn+Qdq4lU>V)#BQ% zL2LTfXeuJv&R;e25E+!&PM{#48mtj{j0$j7`-#TxFeRRSrkAlT-T`vS?8=eJ==kZm z+Gs*RRd@kx1qs9tnjwK8mt?%gWUuGPB>Utb6Z;<^!mN9bfBpaL561+CNXwp5BY)I_ z^w|KuUj9A8Jf~vKyp6n1JBk{wS1gy_Zx~m!D?kK-?e6Q+`ZgS^eN9ei$Q%%V)x^@T zkXUZv3!xt=0PuI%z+78l#y8_)K#-J=Q};CVL5sQ%H%3#Xv0l@EyoZtZbDq za_7Hy1T}BbS8DTPg8b{S9wg=Lq1u~b(tuByVh&R3k^%3L){$mbY=vaIdOzAmb`Qk0 zpw#uh{DX{v>q4ZK-Ugs8gCc~C6p#kd7A~`WGf%O?gA8CTs9HrLP$!I(N$R%m&(BnON&2|_5bZbb>HLN>panR1SLs(DO|3} z1&nn@yq+TXodW%_=(4`-ZIVjt90zTs_R)X9${+6hKX|l{0!W41xuS}bmIVnK8f%_Z zx~tSa3&2$5(|kW1w?mM0&}mofQ(6|ZLuy`LyCK}ES=|hs z=sEXFA{mtK)X>G;i}TinknT6+cEqR^dJIl`*!JNOS$-{vi+lkf6xeAqiy~tr`XPgx|y1jd*gwRV8G8d?B(1sevpRBoKYmom24C08#2m)Vl z@x3z&5LwweDE(xINyobAXQ5yc!gBF;~WmFO3F>6{PzWQA7iR z&#)7uzdR3hMjYzE`M+rlCIF|lxoj)0Um*%@fFtr7+rpzr6|D8v)HVi;TcVyukLcwk z#OUcNM6g3?JwHpk6KI^Gg^x-TO+?9Yd&ZGuL7W-&6U^%Z!N=6td{fvGPf)nM%f~|& zJ?@g1aPXyVXMRj{$Q_Po`MKk88&LLsykMg^zY|Iq(>v3D78$MckIl>+d?)q5Y_EQM3dl7> z7BR$xnN}Akc|fEoK>)8|B^v?8-DP-l9`pyTB_`H?E+p`XtuK3pTW@4Q)=!b5$IQxu zg*yAtg^ctI1uYKBYk=L#^~&H+QS&+3ZWiEKTM4h zz6k$nW0sVLHUg<}3VUjJ$HKNhKWAKigOnl9m~H8>_epR!GO?$2Z{?~V%t2}j|2j}4 z7~6BnvUQ&L!Q-hiH2p(Ts)H`-oHi>%M887YdYlmWrsRTnt~-^Zj12`}hc5B?U6Zz% zDAj!u3X>oS+{Eex_wp%S^4J=L`=ykX&6ht(>aP%!L9}ig8LqKfWxtnQFVq_c_i*-C zt_nWd%4k5yf8Zbr>`(v^8nSqyB#K~R?k$XqJV5q~7gHA+99y0uVph)WG&)~=|J!Hg zJiJ!ctQhl zLag)^%Agge^)`V>Q>dwQ*YJ?TMVa=kp9-k9H+p%)qn$N~@!U0LcTcy5-D5P6$H zQ`I6Oggh+n!a)t5MaCT&x8iZOK&p6-5S3zSZ;0C*7`*+xw6P!AX@^libcfBDoBDwH zo9MZUjj%2!Uu`$UHu zpLLawec-$3;VCU}peykGEIca)25sJZ-Uf2s7(TWM4)lr%v_ekx_}=1HtbBDsDxJcr zYTb!SUPPr;d|>VU*gwueBe=xh>kMGAqC9T|dY-}VXfI)(cgYjJQtqZ@sdnG|p3J~R z=?dXQMK*Ko5g2F82kbL@%Svw~ytsC4OgKJLHYj}%+#*;#A^4@eOz#bLsIeiJd z0gS)nMjm@Z-xdj&%P=1%B@!m$WuN!*75ULvIF^RtLNGG}qRYHQDC-t0KrY#=i{;3@FfMvC@~$ebbJu4wxDg~`}Jviq(M zx#=Cf4OYq0KqdL;RzT>k@KyebfQ1!#9510~4abGi`?n%ul*2(nO;kC^ZM|H@8DMa- zRwG@`vAh2kB?V}4$@`~>@oR4JDsF4Az92Pcsd8;$v;hx^x+Nuw(1Y-T^}%Mm!iTW) z&4w6Tj_@&zdyJmp_<@1nK!###ek!K1B;)%$hIYfC|L=+E5xj1`s|LP+_4GGZkKlEC z!r;a@^s=0c{rEaRx(TDKW4hh225FI!xPU3m%(bu{O}>{h|A zQx{UV6(uplq&3Gv3MtXQ@ug$yam$^-xDCPELn{wI*t^6Dp>s78R;95t5&3_f)tY{v3DZrX73G!{;*G+WhQgA+m)7?B3=VV z&!^He^jNTK1CTczA?}PGSS^UFRUvd~L;#87M+GzNSsB7?=kSN|Z2ej0s|Znh7W?Du zD@ZjEj@%CroEA4ewxo?5uKp?H68$c&h5B#bN6}rZY@oXuGch;2dk@Tqaqo$ax$XX= zVOfq4Um?9hNq))h+SGKhzHPmj+@rF6(8W1eDbsrX9ThEyefeKMit1lKav@;H2B&e7 z4EhCVj(Y`)Gu69M8aB>@uRWq@{EO`e!O!KeY~`=T-VdTBe+SZBKrXl_IFZ9fj3aEh z>LI8-+=&`<2reIorj&wlP?;h@eN<6vi~`@CEMq5|A6xqCch?lS^M&e%NrtD&tTbeu?NfZ(?H^$-l6 z=QEQtV(UI~Y1!^x<`3fE!N2LQBu|<9O@M-);1S&0Jqhmm30=%ZPHc~VXpVDNP8I!n! z#8l#tWsL&p;AT9SP_Fse=*5-&q=a`<9DRfeIED9pQ@7n#V(`FI?j95^UA3_Bwn)jAAcpzcC1DR z?u4Y4C#U?>YDLCXelO01^j^_{C?i42Ray2FrKbb>SJh$Z9F%(AHCt|&z#O!T+|`%m zA*;iHEmnmmUPqSKM!l7Z`lK8`UwM3I>rp~mq+P+qCD~HgeFOb~(tVdh_1jVs7*#d? zZ{YcA`fZiOh&=Q_>vPYmF1<8duaV|^aS*}*WE}KQt7<)_7&1WPWcqO`dm*q0YJ)<% zpOZ+eK&4gzFt)}dLW7%dlk=OARX)th!i3I$Ekp++%*GI$mr3G}t-m>gk8vJzO*l$$ zS{?)K+a!&%pFcD;v(5SjLQAWvr0#|x*S7|_%-W|vnG|$0gfF4wY-s{G&LDtF(Aqb& zK<4qB0Mi#zKJWC>ZZ)iC}^My-$Cu zlk>kul+t0(7H`n1l7>=;;n?AON~a79V<8xX+ofe@Dx!={oc9EwoO-c_C}M%T0Fknk z&X69Uo!K96exmn44Rcw{aFZNsr>3sGX+^~{w-ymmq|1S^Gg|0xao`hkS2`_u;1yxJ z>hj1mz7~C*lTwUxzh=kWsTU?60$a{1^&$$@I9Z44FvY-EDH1Oa*I`x|CL){&_ngVi~ zW>)q`#nrSjz**w8ciIiXT`)FQcs`kAYvgNiOXMCmEn%Vjr^^JXc^TwMypm)?lgfxtIN28bxiH(7(Wv!~c7eot*lPJu!`rTe!n zeQ)rW{Jw)$2J>ML^WE>3mU~oaX7Mu5&LG1w>o-coOi&=Z7~bvHi#pIftT;JvETyFq zuCFKTUuOQP1Y13{fbRSUd7Q`|&1=ULooOU+ zPuzhh_>t!X%1>njHl837oOd(E>zStX}mT}w_1C%*TKTZ5C%j6OxFGsuKr}W zRTx`5U_gE@7P%>=OzXtEx>-X`fTjaQPl4ClIf2Ga4jDQCYAsJJN>D7VWR#hmXQqE& zWnz)CL@M=9!xgTa+lQy5<2U+puEv72mU{8(5vP~)bI{QFmcMfztJ|@ei0%-`V^+^^ zA7vh#43?yeN*lrx*w9NE@wcP@c;|5|y|pbYdP~;2%JiSlwARuqO0izJ`LWJvN)PX! zDfjEcaKV#3Un~08^b@G99ARmmfZZB{7x)Fp|3YWDY2fsl#e60Su_ipyhl?1wSp9f!(ZdMK(*9%QHK6RUzgI< zkv?zr*Pg1=>8?RA8j%i{>#!g~F1>6f^#?W|7T6H9-)B-^@Ik#*;$41@Uj*JeZV3Mv+idzE@H-bcgUHsH5r05m)#vA?r4 z{pPbvySuWOR-K#PtQ9*mJXSFVlk4nDWw??tz*iOeRq!K;4PFW( zwS+|(K8eilXX8(Z)z@%>93d|q=H(1rA>ipK?WgvU({A2P3O?dIIKKDr9P~jV5%vBMynz@mluX5@ed#$O&{wlYNtPpmhJ1EkIC0KDMY zh{*mI70E7^JY9I~36;4B14ie)aa(?qXnC(WuKYPs+0-zRb)h14jb~0tb_qN>F`kWA zl;Z*!s`#p-0^L!T7mqI|@!}g1z--9$kj~%D0eAm@kN8R?1jN5-LUp6e0fpM0R)7^d zkDp%m;#p^eenTYxD_0(_f&W`nHslq}klMK;HV>x}k%_Or8thZ^j6;Gis#6)PGPbe4Ddl%DI^gDL-RGxp z-BPHGGy;RwhxbHJ7Zl?(8?;sarJh6Pk9a?Ac|2RSTKglFjd>2k%zP+t3-`myn9E|M z$lFy9Gy|WVsZZ6%0?(SD-1x^vy~iTcpeE0Slm`naB;0g0(!AV2%pdsSDZFb)6Rveg zp<`_+V}YP-zACj#6o zw$nkDeD9>p3ZhNj2ieWZ!Hj^Py^1O1DG@gzXR$Ncz^3PyFtFYA@;g3Ep=bGz&v;in znysm&ks}oNUWgFcYxO7~XB^ORDzMHC`~ib*0(EOdU;|l{UruaSgoKEycWw5DnxpO6 zuSVlKjHB+&z?KSlVeJjzB3SG^pJ}CXtT)=>>bEfXuQaaJnv}=IAS|JpNQ~!{5TxH) z%-S=*-OcQODuK&>9mXE>T<%W&s*#~9ne8LkNG6^%hsyx7W6VxqKVwqZWfCLr222vW zI6foZw)y;f*I8gV!aO7pLQW<3P9uckVCTS|(we2nFisms)PXG^g!%NPxa(oaUu~(T z#}grdJFORP90F#+lb+TaznKI;T`1nr7-wY#%;ULoFtMiUywZO2isU&BdumK617#t0 zI5JQQ4l8teAA?f>QjXnVzy1ZwNRyddX|d1<&qz3}?2SBs)=e)!5B2nvYmnAdJwV`qbZemS1hPvzf* zpVqU1d_#oarNsKt+aL9#*4gk4IF<;cscedCz0@=Xuy+zvK}Nfg}$I`5m2HJ$tOa^u?ad+1F^^X2CQ5IdC=qA^8Clak630l?T33oN6RnFEZCt1Z}G zfDHgwu$}~6mtb`qVn}t)kb59E{5*a3&5wVtk@?!5njGO@3a-Y!*KQ^>|36?DHE#cR z#3y-VZQ&SWEJ3-vX<%rEvE>IdF6U}myG@3KtOURuy!Dnb0W=J_t};@wwUAWS3T`ZJcy=0nNMhhNfC2A4I)c^vu7--^Q6>1z3?e{?Hvdg4Dj*U#BwH{fdNw z?!jMPBP?{#Q+W|5i{rDK{rsWeDM#9SXk*A?qV%@gLHbZqDG6EHK9a$Hz+JRgy} zIbti4Qh~Op&2r7diQ+Tv4D^gs^7%wCXYK?B$CUWNR-k=ZQS2<3(9>VstMmW{BdFWw z`pwWtw@9QV6KvNtlg0VDAldf*!^hEhhzD5gdK6zubK!|(Wz|>?8F{c#`Hf$IJ9JJ) zgu2|74<5KU!+pE%?|iI}enOxzF(<<7%@8UH$y387f{kDyl>0`3TVqrW?m%~usLnO7 z%S)%t@l z?bezgAvtStuo*>Obw+d42*G04Su|7z>Y~y~y8}Txhf7GUG-FLh^Ee8{*S)}T1N!Dp z+?+ljL0@r@jtK`Ar&w+fio^lq-e;T)gjWfhbjEoRvKj-3R09YN*G=u?lkMkW z+-~+MpW@O7Z*0HYaTmYBpZ9IVrd_ah^bH3dVGs;D(;GnbIsZIMo;H%=)E_o46Rw(j zLQk{njV5V6wOVkogj+1LXF+Qu>p^oj_CZ`Y=E+s0+eezk?G(A;0-hQ&K6g>8LkM1C zEsXU^|HHXAAT-PaF?Mm+i9nm7h_^?qOs{(|kok?M6VTd_;Cyl#`_cyxCNHjb(MSwS zhWQR}m|7~*=;R5KE+sc)*btwrzOs0z`s-PL(l0SyZ$-4Ef*?ljJ3Nx3q}IXp(yY+v zi0JT?BE%j1b(fLC*iMZ_3W%@^(23E@OmaRybNk}@j9vx??@_e~d%3{TK)|<5lzF&V z4@n*r@@uYnWmd+@^1?PuC~OOm=`}}1yZGJ%#~!>3voR}5g}}uImClqEfHiyHB6hFh zx0*cMM+lkkZqMCV&U=A#IbQR7CVrkTJfQms@i5qo<0zTpwMiimz=?bfUJfE#Cj7BN zdc&u(e)3~x1oNIw+XMxPw~d|9PDqKUWby8S)W9E8k}MA3-W4f;yoC^!P@Xf;zJrRp zoK62iiF(2$T6EnCkOPz<3o=kBE<9HnXh39Kt(?@jBpgRdX>-0rhq!*Phf3$oZaE|1 zlxxFcj%5sXaG$#rr5r}CH+n#AaSoaMnK~Vhi%yb9k^lgpDcwfRf8EiL5T;KwkXb8M zz(EYI8+tw!Ww70NB@sE&BRcb-)2m@+8TDPRJLKLXI|HE;W881u*LUkmD|h_pa%~Q$ z?D@Z;-m046;pN{s_u=+W_}d)Zd_{9JSmjpD5~ttLaaIuTGz;WRw!gA-63+(Th0cia zi9&+lXo-WzDqU2aOo!WB{bRdL$L0C_?wufd5i9bg{JFEadUj6?-0#gw+kEZ|PTF>T zo9JX8$U5j&b~j)H5G&aIS_gdmNpX3%Jw>d&`QSDDLi0QXuXjj9Ua0E_|FJ|p)JH`R zTzQP5W9i+jCTWx2R{Zj+#+wwj|EhL}1^b-46#ER!bI0)MnC>aIy^i;?P99Ug5;P3$V8R92>eU;O+n`0yp!*%{h+HC zfq>cf`rAZ&G#v^fCMlIU&)_%OSOa|Y$j|*p+smv?<8f>R*W8eQOvY*@SBB+TD@hag zWb?|q39$|Jkw~uxKV)qBEHb8KM_*=wY3HfUBh%??^hg)~ua`Hz0X9)=f`nVl@Yq7$ z+e(r5w?~AF?O_rbJ&|1_RlKqY9) z1S(#AZ)Jk35j|xH?;;B4RGB0(xdQY8ZXzWedK$?be{g1HT8m2AFaXrQ1xm(D|7Q&* zx=WGO?buUvU4r!aftkKSqN)##yLi1Wh?aovDlSL~wiDqZubqwWO$;Q2g{jOaP%GHy zBx^mA-YLrC`zaeBolZ1U4Cgh#-ELL@m{^d*p@Fdwn~^t6SKo|jv;3ZZK7oF`%U8_T zJsJoB6PL)0lu6E~eA|k**XTc41RV>pALh)%p)!IM41?EP5iG&hkNGw#eRrR3dDPsF zagJn+_L9`=Q^RyG$3L}C9u&o0aK(SD3D+@WQiG@Tp-GIXS?`;&DQBb3R|hD9ELcHS zUj0Mpz7$I_@NtkMN@aJ*pyR6) zISf!UlTpfwASS`vEe%KXzjs-h4|Yp+ge8%YPhwxb?l?hj@9FtpO^)S}D2aJ_8+JM! z>r|4xqdYJNdse4_c=Pw9w*0WTxwpfwu93u)(%`H|{cOXYC7A5}AsS;?B>$9L zL(#QBxsBdvyvk1jM|GFuuQyW+pl`E}+N3o|8y==B(@^lYKgUPjEePw1H9p6?`~%cs z+zr2YtUe$6u;eL>^tKT=(w-nyfou$5T1xXcrd>TsTH|k;l5LNvf0N|ORr24LT9SfY zMS9=HrkA9K_@$(Oo)78oZa(em8@`2a2Sl7~QgpGa(t||U$wE5`vJFtE>o5iv^&yO- zY#ksL=D@J@lO8Ry18P5J_f7L7uU}k|OG}^B)znjh-9j~LOuf)mzKf+O0)Nn(NHNNW zU%MGM1D7i@>!aAS-y<7m?B0js?W>=dm6@9G4;+y$?Z~GuRnwinK(4NyMy#tA-u`Gv zFN}Yk|4Xe|38@|1H}!ib3KHYMJZzs+P|hN}LBV$D8R_Zp=pFmNU&v1c| zoQ&__#;M=np6a%`YxmF)<`~tK3u{Clp~9X3{& zP*c1pg{nP}z~FAoq3>(bOG+W+%7$^p7A=`PCH*TN4UkM>X?-yln_yEKxB z%xk!PKbKq{YrJkM_~yH!)T=yVCy(GK4NX~ida4jLMK(z-5m?z}A}8>)T;7G5hEE%P zd9mFM2YwQJD;MSEkT=;zKk!4aG;QbbkC&J@uGFz8EwLaT6}i==#AI&`JO`Jf7z8x} z8~%f=tH--X{FUEmD=#IneM+nRDQ4dvXvll?%+Ht7jPww6O5Yj}ztQNCMkMiPHlSsH zO?+#KWCFh<@j~rfHX|DLkRSN=_Y>!9hoE8!aPZx47)f%rzT{e> zUdX~UG%f~pFNp1mOPMLCt*{mTIzRjEWa?AtpPG?D&*tu2p)cd)s4!hBaQae?Z^676 z&U)YeLthm{K1Q%sqYT}L`~v;#1Tnta|GTy6;(tWjI-oyrfhH8tDo*tYK89uyNz-u1 z9`-~HR+vTgMT}2oPL05K*Vk98J2z-SIkv{QnZH^OwViRRx5w9=jVE1YLjefUe}T{u z&?oWTe?s)e4859qI>wBAGC#P>G|3tZb&tjTFa@}lce2c98_1B@QAjc54(7Hj0EXYz0ETz z!&&vzAQpsc!4uKiCIFoHN$|DmFd~n#9<0|8>^oe}>*4;CkfxU@a5mxMj4dS&!!FH; z3f6LA>M>qclox;Vd0(|GIzPg#@uCDWbY$A=uJv;GsTr;46?(eYE3|I7(SZr8^Mpj3 zVIDUh;2z^)V-Ewt=4`d0i zb@6IP2#iXFH`^9CHE`q1V<;ny0XKg_jfE2Pw5*Z<9uXE5F?mYQ%`LB7CorI)y}(#G zX;itTU(A`p#tZL`YJESwBwxzk=Z)VZOB(=RZd(Nl{Azh2P%wiKPbYYAZ>k*a1O z3Xjm3h}*;!DRnIXb!`xQk3i%b0Z*=_p>;WPGB0X)RLCpTqL;;t!|F;Sg18a_8bGAN zyE>?sabs(|<)f+S?D6GNj0!(b2VcNl4KQt_&nRb_5?$6irqp^<8~{W>yT1=pV<7I_ zAono9xThg!C`{vs6ZLfcR$ZlBj4sMe&Z&-a=x3K8;((eqMxu7x*Z?!`L#^o3q9N5M z0kj&$J`V$^Noa-b(y!=0C6p2OD*?OI?s%9%?T?VBTZt?ct*pRiYk=m6%@nW{iMX9A z^zsr&D$S(z@1jUZaStqoYh+S@Sc$K@S4RUd&{Cwg9S(2cst@4>=+S3KMAZ-`Ki*CB zI{d=4dCz*WrLeLP>3$^~;x$NBn$FPy0g+OW$I7KQw(X*XGLL~YpxGd8y$rHer7!A^ zHjWjl1IHsQ9Xbdi1^QpYmD95Jh`=4tMKr^$gX8%nmUh)9v(4KLF&4MvX{EtRmY$m3 zs*mKhk89xZ8X1M`S8gS@va~rF}v;_`19EGw>P2x zyVZs=o&C<(#Fn1d?6cvIwq_NZ!vtjhm?|!~ofmxGQy(+7k7uwosQFH=wHCG%KKPDe zinacZQBCr{YI$O&dAtwrfc} z-4He{du;8=<0iE1cm#a;|C}LoVey-ncl|?3&rSnW#Py?c?WV4QxlQ@8c=e_SL+)P| z0G|i$<(2v#L`+)rg8?PW`ki%VQu?-yJxhza{2s^hJU{CmQPgNw8(K=JBC&}&M5=qx z4d}Zd_E&tiasR$~Qt7Cg)`&ONuU{^HlBbYxSQ@Ij96R>CA0MB)IcwQ)T98TUV{>dY z(b;x5hwA(p;NoLlgyJS^M$vgM`ZCzW2(J>-vE`stiVXPSG1i;?Mc)Av8a71xt2{UF8|MzbePxi;5V}1R-ug=LAu~KccQ1%E zKvWhK(-bQp89Q&3@z+\negBK25BK$PZUlacftO1L#;{Cr!XH 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

    >E5xHIiPrY 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Î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

    o^lY=J#L7m~OY~IP9SlRTlUEhl@@3 zkxW*^i@P*NpZdRB;4qNO2U~{`PVfO6AK^7_V>29gghpE7G-ZY{YAJb`|G z=+ne0!q|M>vb%Uj%-F+!-*(v?4wpjHsZC?)FX;)TYxDuPn3wAKAxY{WccI39Z0yQ0 z?Ia&AYXdop!iNCrwp?-kjVt<3!)ar@p_TsBDKY=aq$35BG8`a~-Q|lDBPk5}h>4cz zSFFs}EYO$x9|g7k3t)>DhbLA*^CDu(&!*M$3n1ubdaC1+S8eZE#9pLXlq99yI9efP zbn%iY8rOzmXivUBxsQV}Orm4_yw&~dxq6^e=BLQ7zjvXeS(fR8^b1MrYPHX;RoF3=v z&1oB?%v3*)U)7$0Vv=$5n9={n*Nhz4mYXR6kDofEHB(!TAKO}o&(=K|pv(vv2+d?5 zq*)|k`xFcFYz}|wqu(0YzcYXUR&ScN3qUFdw)m88u=@8-mI;+T`rBF>MZ*@A3e3|rCDc4<7!eui{g434vPbsldfRd!?V zUxTwKiZC-vIe;)GL>j}jtWjSgre3qBIS%n$N4QZjNZ3~1MStcv)JRnd1qZZe1y-{! zwU2L2hpe+RHQby6G@q(c2C0eQd6X*2+ey3J@6}Uq-hYsZy?Kg zpv>zTGDB$|s0n7P zaZ97rlt20fBx%Eh*AGb~96g!vUjWNcHJ+DNGLV<~LTc!MZ2A&iE?{BVG89Jp#>~ft zh3)^lYJEsXi3ITBhh#O({i`QarBl!ekrS_`^4N(aWYcKU1o)OfRV>lKw%)MYN%x6z$OdrA0CWAZ=Qg3h)(TE+Ni6qkUb9S;Y17ugyRXyqWRL6LKBHK z%H3qZzZBhqz)D4NRj0E|5s;BD*HNnX(B(op_rHzN9})mZ($wk|$R*fs74%3cv#TSR z7piIv7aBmvcV#NhrW97CEXiUH`IPHhR>u(S+67!neL{0O`XtD>2v?bm2@9nrO~vNT zB72ghL(LOn{-PzK9d(qf#nD8MrFdJIo*xhZWb{Jo_BjqZ9Z4&WM!ou&-2 ztBV3$nO#kX+afVw6;#(&eoS@sDUni~#Q$xO2$$H#YmI#r=0nFrYO_De8Ke}jG}k}d z6O>HGvGUYKmrzxZ`csj$8}QHn&GCKs2aPJrqUP zbC_W6p5j3wF@KLi*Ac!iXA83)Y^Pm)gfh1}UP@b(>vLL8U7n@?GgaGhTECmt{SaMTKenfbq2PC@1c<#$ z^!;~9&4kzM!;h~0St<3mOt9C2Ae%{`s?6k{flfjeuM3KY`C)&f@5l@yPLkt<>i*{? zEG%8$`o8GnIRpQ{jc?zKn2y4pox@hriC(VX(2obHRr&C=vfYq=C*1XZq0xQXkd|BX zH$|N$7he$%KtjiEUBpuGg_39DsrCY)D@8vf$a=HI=B4)gNU0xz#INhuA@H|qd{_H7 zW-LwWhxech-uvN`&|y~j~5g{;9wz2x>$ z_BPQto;1KmDhIr4cxNe_wM8AB7uO&r#X+DmkJbNl%Nh7J1^XL17RVMs$!~k+(Jm6> z@J1mNz-T!mLB${cJGsVx>1o4LFxpJE{?A!D{WP0QLYVPQ7@Pa}EIaZR6QtHSE!Kd# zQ)U+4+W}a7)}VI-!e<`16RY67NPj&%18wN8K~6N1Pe5~PLR}lG;2(hDXZfN~Bueiq zc|^P=-G)?SkFE*q{jCq>N)iNm;k6X56^vK18!^OD9Kq%#Kr8%u3P;?tD6Y&gB{Jbj zn_d$>gTq@hL$Dp;D0s$1zL*$1tad?U5$Uf@CQ~>0?`2O)5%k3_TdwBwK)2**NDsR> zTY7Ij^-#2nuxLECrUrZrw+0E$@3_x01TjQ!BIc z!XSdFghhA8RQh2!jVm*ePCe#OwKZL2$qJ!v*5d9|;yiFhPGCAqXp()7^QzZd?3lnnx{o7oQq3UPYos;cQi zzY*35U4zT)u&!Y2&>0vam%n2jVXrei27@0VVQ~LDA{-(3AjXJ{*clonEYQ1bi(^x0%td&+&>8TaMJihW>IEBIq&jxGHwCB}R|&Gj9$z9tR@h z*f!pE*7gEN1{1>$)%{)H@hm6UK>Db;9FGyQ!1l-VWxR?GTij|Ktr2m#= zZz%xL>~h%d7!@T%xgs5+hsg$!g-vz$*Dg%J$Xkv(XlS?){vf1|gHash@Qyl#NIllJ zAAxVs=3*M*NNZ;iOo+I!b0OMNPI^>!>NGZ$xIjRZy4xBRis2nzEqrz6cZa$J zi5B#9MB+}`u{A3=KlX@21t7MF^5k?FmnIhYlu+$V7y0CINwnq=&m}wNctT`P6Lsn- zQI@d>N6vL|ySXzV9(DFolo^+cWkby9BI?XhCh{J}`S?IfG%`kf-ZvAf< z;7z3=D?^Jdiq$tk61pNL+}Ow9qqHkFNn)#(w)U-o1UX$y$QH9t8>+!8eZO5;C?7CW zg@ll60Zeo1n4cC|E6iV4zP5*0FXDsDt3pds5PQ7+KfG3^<-X@cZnNUEuCzU5 zC-VLKt*L?~wn_FH#!$D;XoKhUu_!ny3;jMmm|h#PdlBOY&|{o{V*spIKR0h!<-4!V zMhCXd>-!`greu0PJMc#BrPl$*XUYO7ADzGXI0myjIkbo*d05MVPC z%Gw(i;JZpw0JbdK&rF?a2ME4ExiB2RZgH2Z=f|q`@#Q)6wAF50^unS)iFO>P{)kAc z=IT547$-zt$pVIn9?a_5)nS3`+wfkf_4FV3E`vxQOmBK zy;1_Q=r!q_?nQa+ZW0=jLW`RppHoYvwKkWimA?_Br5S+vzXwBlV6x9Zla5KCg>&!# z`^~+=AXJyxUNj}o`ZpDE-*cWJX#&jbcdQVfZbo1zkJ@{ybKuB*C)_fYoNk0nE*G$)A4`#JYp2$en6G_n#H$7!r})1yJ@Z3hFSAd7$LWGxm&^nshv9M3Zz z;T?E{57RzrvfI5$KeYs=UgGjVBneUdfYdv$%VvtgDw-|!=uru%=E)F6f$Lo zya!8(ND1*j`=bsj)BSe#+;H~j)3O=a-N;&$vn*!ebt*U|bw z`2Vb^z@1$>1hHue2jBc>*)0MqYGASd4D0G39-@qVCEe*r!+?g67niQCH-WOy%HhR+ zWH~W^+(L=8XcEgO{~CLpds1xe4Zrqtoyhe0L>3=a4$f2DQE(yx9{00=BL>OqP!HYc zZ~Wu4E&(idase2b6UViyK~oz~&)PYYdaQXSX1y_Ntg~;MF1^NL$blKGrQ@S`5z9bg zGN9R5wW&F*9n|u+m38m{`cDyix#FS%@Z^8Y!9gg^Iogo>L^`i+PrPATB9XsuAho7OJJF&RZ0y%CgW-7x`75Min*S7mXCJuZ7LbYsKPy3!zsb z-TmbkZA6|RQV{%0VabN2=w!Viq;+yoLzb3r1U0%+aYOT97bll40O=8V=xpa|!?R`q z6)2dI`%2dLbL{$P?2xicBc7FWx{mnu$icU^vcH`vu(~N;%faKRlsq9X5`nOZSJmLV z%y*~Erl42-;T}OEjwn)mOi;~+W~-nYuj#-PACj@a7}lXuh;R<=f%vWag1}brCY55? zEtg^uXWGD19%2TZIVKxT8zVh@KrMk5%aTekw?9e!zs~-L)8;VZrS@~BuiIa1H~zig|1G7?yi7sdoMne1A47bvI{EwBUZ9h zoT?8s#YIwPpQCExL4gJjDH+0oY`&Zp&_U@dD-VVK%g08t9AU<28=WZsLMTCc z8(rIOo4tw-@nlqC9i+<4Y|La1QJN(KIOvmMRNs|DQ)kj1XHYy(4|;j#Jz)?-9xx4qc~lY3jbgRY6$(f<-nAIt@FM>B4P*8J`(9GXv+aUDk@DUfC_Bn)3XHF3gbjX zV@w67FAm2zNDqQ@RIX+YResjg8W(GX-85BD3+LCzrvy2etWKQueMEg2e%+c6Di&`G z6H+n%(HClgZG($}26KL0Q%{_hl!0WV!~11UeUI;=ui^Cq_w*Z34%iZ!6ar8@t53}^ zWtG5lqC-fxT?$7S%t*?Ho-0JZ0vJb-k#?p?4tB0B4fr9*3jY%_LtJ<&0`H#FEJeau zKi&{tXdCd6`5EYHAZzU9@+v<*Zb&uo3O)Ku6dhdi?s2@Mb&8VF%r5Rk^dOzv(z^b@ z!lE{UI=q#P>ReCU|7Q^~s@zfbo-DxUAJRG9T(wEB+B<{_#=^j5=sEE=?8tbM zFF^bA6#5IlGx=|rG{jyO;6W6)JVU3huIl@oUz<+k>n(axKms%FmkKvK>`thn=0H;K63j*OzfgTC) z(ETluU$e3W5!dY}6B@*@2x(UNP+D}bRYBNm2#ome8YFcnxyTrmMs|rp8}DL93Ht(j zL@6WBYv^=?U9Iq8R!yRI+&`GfC)w6x7oCpaBEJ$Py#3G?+pH;ZQ18jq-Kh$ADil_& zr(-weWOVVM+9O!!U+MG3j1HA3S1~3l_S!rIxK5uCoaZ!AF}@f6WOa)Ao{sgatf`gWkdzr;xM zciDNlXu)oslmJhNmal0|bmPm)M%iMWkWl+oTJeUM@AFXrzHk)S7c<$s&iS{?vPK(xOVFH9AH3eV_(+a#PLRMJC80lJf{ zl8Fyi?8JF=$H?h82P>;n-a=Idfe8n^1hKHtfw1!zYNjH9f^(|$@jVwF2T5uX87#Px zzP|)n@X^N1UNHb1?$Fy|6~v+Ruj)l((pe&(oXpw+pyj1O$3*8wTQVLYzw|frS;4vy zU+suC3c2ybse{8K%emHs=#lC;nQ)3y_{@=W>A@}o{H0dhnWwc!i9`YaEN)n&Wus$B z@pj}x7Y|jiYv*n73{cS9`7s8_-wlKoXFEarFI+D{txaVB!+w5P*LhhD*0}vvKZjCd zeC4Tg+5d>`iRw@>{)DtT?)(g>GWtv!A5*4{d7WoSW+7{ud$D zFU`Mv(}(C?U!=+Ger#1e$-4`X*sg;e<`yu5;sd36Bi;mKd*NYGy>xa3UCn^*If^J~ zH4rYFyV82`Y;E5+vJ+MM2AVU!Qf5Et3Sej}KC+Rp#?JlT|10$_{o*4h>`;+}$bJnxko27Mnl_-WTo_um{3bxon;a?-CumC>wTF$|yN zmX5!w^UL_tXgV|`c4``rIyYSW*1^*}OlIC?KKjBgE;b?HV1INP)2>|Uq;d$t+o8vndUTen)`Z4|02 zpU20Ep)Q8C*lMjDnG!-r`rxr=Pkpz==r#XBQ|Q(ZzhU)#Hf2!&96koY zJK5oeVBfV1ojP)xqa`-SBHxD=ys_^tKpmuB z%^H=I8oA^lW~67@h{9il|7{p6Q$>5(+3PfIZ5F=mfxDSx9aE3NmaO$`&F-aC zNT`9EZv0An?t>WM&~!9ODJa==1!K{|(~@&eEFyJ92Q{=llBE$^jQ+rp)HXewLe9Y= zH-C-|TiQlXuxn;E+7vMEu45IZNaRI#Vm7}7-%69HOgfsgjV_yM6_Q!sX%<#N8*lu_ zC_sN9$Sj^TVSg^LV#IndSW=1+Qo)rt5NeM2==WHty4;JeOlQst@isb+q-ji` z2~as$gan4Li+`{0>b63Kp+%Ug!;P)zW$9bX+sDHss4{>!53e$l)w%x9Rz`zNg%6*S z2Aqhhg0>_*%CnUSGI+!rty6UjVINe z3M9x_OEQ?OZW(lS8_WJxuZ)zkvpkBFYp(+4o%u%AqFh4?Bh;uzSG!Vhc~ zd+zY>omxewr}_{1kfSx``nmtq_c@!4Re6OB7`Xs$PTo6GF=#T_$@!!ABKn#sP`I?b zCje?edZ+5^M||=7r&jdRz zhVyLTOa?Pe&`SGCRLULAlZszE$y>WL09E~v2XE`h@9G)Fppd5jR|_TbULMO!d6JT_ z%}|@hJ&fRJCUXZkUf=hn7dm__k>-88U0daji?sJ^SG|VTWE&(ZPlx2zkwjS`Lb}mJ zAVC3~)%kBnJo;)56*&hzZ1%Q0p+mh(Z;^evZ~oUptn+#TPNPE2Hrl3(R$XhJDq zeuCA>`($9oMEOByKhqhi_8N zO$m=hq`(k&SJ}bu9t_J4;h4jo!%83bP;=JD`A_>LQB{A*09E3%%zCj|3$kSSWiq2g z!@Zi@RARwWD7_(q%16Y%R#{bX((d^rB2$lr@Zfv*TKQ|q60`2Tl`e!cKh$W|1S1Ps zQ~L1(U#{=>FhdyG@nq43yBoXMG`D@$RsM6?^yGE!kk)4*qr&UwFb-wWzFN^b&J1jF zwY*OpKorG(*2g--9JzjOnX!pPsvK#1)-2A(Cq_e+!$@c)3qCntCG|r`mY#s)V}vdX zo!n+;{tmOyVoJrq8Rg;2t6D$3Mfgai4Af&>3<%7Aqkj@wane;Hw46(rNgh-7H++3?en>#U- z#tABg6JJ!g3^4u@oOL=yPIgfdrLk*qqVHhF;1or!qKRF-xN#?cpUlLn*iTm}qpy!% zts*(;=)_TA_-_PVBx%{J)lbLEn6tln=ck#8qfEy)3yL8EAB}^FH?co%=H_qJ*QP_g zV5^|afPs1C6-6i(6r#9=_UL8Sk#OUV#6?)cD6WJqy)Q91F%A3gkYl3}BMJ%3f7p>fy%N83 zE;H)%mpudSuPPc9{D|^%cFXyP%Wyl z^#5neU1fcEE5*VS9<{?e1OeQjz7@au7!V@2IR)p9M_QZ}I&7+KT1>?`kf}miT;)?f zY?4}R`kU7bgOl|4h!`BGM7pgO!u$Uv+Tlx06baR@y>e>rL1s!}7+FVuS;|O0fEl+~ zw_-6lKNY_KmK3MPasknh!K!zRgyxFVOS-~E6xy8l-aKx8pQj~c;y>JtZtOXqOLY$}L+Ma+4U+C$2~1ccEk^`KyO>p% zrRwO@#2BM-9`<;6Qo>QPTs^(3hk|mUh?P*m1AL$A#9F^YTb2u@K(oT%Jewzemo{O( z4y0XxS15v+%^48w9;C+s`45nf1VE+j!V5JrFRA+eHLCHhyR6UIA)aV|8Aw`w#YjuO z9R)){Ai8}(?+kO}wGoY9w`ZjQQt5Y!bI}(5=IZH3Kxd`==jThw;GnIQ`pQnHL4vctYwNrXL*oq1*SS+bM6LsQqvAmOT`^R2Mi2n5VTnyiOm6z9JKLb9d2_sfr{sn2} zS?prSca)7hujfqq!m=NQgf?8A5x2w7SJVTQ{_@B&)T}0)#;E)^EK%_mk~g#2HWe6v z7(3lf5gFvvA;V9QUxh83mP71-TDgo{2>VVi9QC9RP!7pg+j=KFUN~sEcAuP)!Nf z(liFLCA07xzv^LK8nXA^u9sI;!q35XV6L#YPZvlzJ{D{i)<|V_&R;=yQ^%7Obdhz#31;5o~W#cV|M54Zd5>2>z1I+$_b< zg8g_O&{|op6bJUwc>kUAZuSCR#-6~I$L?ctT}IWWBiMV|@q^rA{^mj-=$Y6`yl2!f zckw$WM~lgSf9?qyBFiL|b$WKZG|KC)@KR(9QD^8J%b6vq*Qh(eXb_nfiiY=a8f|@* zzD=Et`jalZIOn~d@7Y%R2NgT{+ms853K{=sN4slM8Ofd~YN+nJ&MHy56}+)RaV393 zJ>>ay(cA9_e0Ao3m#AKIuv=TO+80bIzaeo~DK3iNllMpW;>0s>g)Xg5prKSUGnHsJucA$>&7g)0gyP?Tn1yr=LitcP*x zp0=LoFBk63I5UDokd>~@CkBBl>o!g)MN81Q@KwV*3@v?4h8P{lOi7=_>e%2ANzNR( zJ*-*N_5ufX1Co$|K2Q;H3kmk1XE)JVmzd`^j)bJ+0XCe_ahZvytfDe&<%R?R;WGcg z61eIZYZNpoh;K6ftW*?f^G%?ofA)JEQE}8X@aO|TLB#XLx%)aRi0AX#?e^RBw|z$8 zwd&QIoc(h{NbP|UC&1W1aBiqz@{#X4KY^#c4pFz1$;&RA)*y4ILy!mpR#~1s3HX^l znjbS?i}3VG|d@?OxW1cw&}WXcN~r zl6dO&`AY>)OAj)BF9B%1Pg3{(XiDOp%5dy|?wFW^YVe+U@+7IX=0c2)x|v$>=Koi= zsCF^Vx_PvuA{X6c0O0U(X; zctK_bL{lSRUlT@FU^D_SdN6|lfXNslMhu;@G)T!=fEhCx17-k7WX+N>kh1}^0RDOA z{^vQ`vxCF7?jo873J#|>w8&uJ` z-zA`)>P^lst0%#wF06LBLAtf(T&i|0wBY2=5|uLKaLintZzRm#KPADrW7Gt9^HeG` z^8_U1t+CR9C4e#f%+`6OqCOu}oIg}Nzryg|TWEwE3!260q+rq|2eGxUKv7jrA}BQd zp>rGq{5*uo28VdSX2zhK-lX#Yf$&H;N%aCp_kPz;nq9`mqUM2+#C|F0MV;kCwTTXhQIZ;4l7@&1(X}a#6klA@E@w9 zW45Rz8vv?ck>304t5giwltHwQs57&RzId>iN3bSVDN>*Vcxn5CYgm|wWmgh=ScOFI zLA4niN=QLFsl&Qm{760Tlf50Pui{Hm?7# zUhz}4aTV8)ysghT{v~NdSYs|>IQyR+lynbk>eY<=11ccgm!&?n88Rze8w&Q?I}Kkd zBCRiSVxs#2H8x+Fm9W2<}L3fzg8GT-y<^zMWkBShiO=Ot7I852glmXE7HMOzm zSANAITo=6mGoTS%L{tigkW(<$XCt)S;Xa4>(!tXwhr`Ylh%#SZgr>9LGM36p=54QX zXBD6X1Q{|mE}Ex|3d@VU-=PyP3%!iT2Bxu4uIy}N`aW8Zl|0Ezshopw+U{S9i9@#( zx0Lx~u+%k$*!C52L)JxYB`CK1c;cnqy*IkzZuR=mv+*a{rL9eYS3YK5$}2vhN$c%d z5n{3dA((jM1lLqcl-NmD&$TU&V-2W^9=vDs_xuZr zfPIe(+4@_x! z<$A;%?=v^G*3o*{(+{?31Ocbp0_^$~E--&PG=fNh{`>mYjoG78 z6MjNA7=>fw;9I_)Q(9nlb-GW`*#CTXrFOuac1yNcJTkoj?;v~} zaCq^Jp?`K{>!kX;Ynbsz0b}mo+rmf(>`IDifhket?ScbO><-3X6PTCXHe+*`g0!31 zg%J_ngGliA5%~jH8h*MHU^GZjk+MM$P8|AxI=Fbg!g0XsfF5j#4c zaNUc{9zd#xCC$}R-0_-CzrFV^>~zejIG5!HX7{9s1gVVP(+r-{(@{MmsE4inc0 z--W-m%F9mCe`J#?!c^2P)Z=oW2H=G`Tk$+DsSk0n!9NXIU)EM`95WKS>WwxGev;4l{(IOg5)U>J>*3XE1-=A> zw`dk3?Ln`YHZsWW(bDO7^q1XxotEq{KJY(W)7Eewi!(#>c}|!|$HJw>*Nno|nawen zXWmzQeVRQ3O*AD73%0vkJGT1?puwH9+Obh#U7BVq7sdNrs0gyDnE^``kWrPA=xGm9 zbwrDP$cs8)63Rc9Hzp1l30%Jz;WblZZeEVDG+3mNE@T&*96yfFS9eqa*8We7yo51I z;qJqejnCFv54dYLPSriC*K@dd-UjgC1GemC0_X^)Y;KI~9Bb?6#ie_*_u+ZsD1O?T z+FADVZc{{964$3o!=(2obeTHT!LAMNP$OYa=nU`(NYIC6l=mkC;otK9eIiSP`a69& zoU4=X9>;{(z6KqiE=aKW1^x)Y75E(a;RNDFE>XQ2AZlo@q6sbzT0Mfp+9o2Kh31#z zhN~)sEJQa-tuIWRj>v#IBRHeLcDT)FzQqILs)z^W3sIK+?A6v|7@yl&#_d-Xs_{lKZA39g+~nUZXu?uw z&~UEsyYpIyMX1?OR(}R6@YY~@Xh`zfVjA~Sjhz6IEAxCoKwY*y^+R!^NNMzKGN-sU zsnrjvs@lINg)8aT1_@}CU!kkiSW2(%q`gazx01rYxX^JzJS!!^i`LLW#3@G8%taGn$F))(aS+5+1M}0bShDAvy7#DbGJJJ3UUR`QkW`ZUcD8z;)yWQiwW^;c$1$GCzzka9!>BMbv&Wo)!tbxw^3mY& zv;wdyQN(>jR$Fsfn(i-w6_BnBA0%j8vw*8>8|#c2?_Hh&YiVg{=b}0cIv&Cn6GJDH zt^kaae?M=I@X%4v`Hx*nRO|}|C{&;L^8^b4@!uUxOhsq1*bM2TMWeiY*oiKkTvXT_ zDo`6`0zGtee!2e&9N2{rs!m)YxL!bqns@|g8A}VaTb-9f-Za&DrQe1QZKGKSaykYGxQc82QwRPg{*f@K}2EEr}c5! zi+=I`I;YyGFnUqqKLyK)WtNWL-+x|DNjIL4caiq*g~TiyJB{wMOL<8zrUNs1s^7{R z0LXMh>1BadLyz@2nw9zlx8J-lWViAb|2g+2w!LRj-U>~Er>KbHJD$CAFC)Yjvevzo zmh^FYEf)0RrU$r;(;GE^$}A9qUF=+Oem;`TFO*ow{!i76WO}X2zKN{=bd#laNZKyS zr`^W`gt<}~YRs4W;w`M>#4dYhsjQI;?}kTU&@mpKOheH@^F!66{bS*}&VMKJ*Dav4 zdnLSWk0P#Hv?;+KPqmoizum+(%RV>N^x4}ebSkYMOmRr(_t^XlD<08^dGmG~+67Qw2IO<%uDTol9=E{|MeSOCGjtd|g42_TpKRYgOzdsHA*97cj*~U-1Ut07@ z-TJyNb}=2|)1O9Bt&zkyu}qy0ZhqQJJn{PJfbMVeP>Z=28>B&Ur$KH7QaUD_=+oMNCx(;HvK5-bF$^-q!mL9}@gDuF1B zbQuviW_k8}KY6mLus#xK`xWaSQr%d|!56HaE9v)F_uTN~6}d>Kdk?V}tAJljfo3Cp zqz3E36@*fffxB;LtQjZz22EYvDM>P=gYf*@9pKX49497pIFijscr5E3=&iYd3sUS~ zpb`f607nC>_s+b5JSkLt_NA|gQ+HD6LUjr94UBPCWj=DN~!udDGmR%mrFWzeCT}_j7o8zAy}kv7u-~vygj4)4a(MFfCmwo z5if64Z&7AHRe>%PpUMKQjqL>~5LhxZ@Rbbwo*4eQoVcp5`V2lvGNcO&SiT%AiwP&A z>tail!BC;MJ@5JOvL8}#=<}^VYmgsGRg=c%ehVdonlV#v%B1EJj>z7Z5-yp%~UA;EP<7XULSSpca&VjN*9mFDv%$ZGAh&EJvc_}gpYr)1@?4-$dHHHaqq_$fLoU95 z=^_~_F&KnqOn=a@z0ZagPg`{5dTR};tcd@l^$W!)Ed$8cCt%>ec(Rx!BLsLWqH%k~ zEL)(+rF=8-Rww-?iK;JDPo2N(1(X_Rv=hQvoF0H;f*hIhf+N;Rg+t5h4?GzRBA?u4 zzhv?!wkEJG1L&s@wJ26v{n3cB(!Z11q4qJU#}yQ2m!`RsVSpggcC84J=p;rAI`H+BGRP|zgIe>Oi9*){sc zen zf}<5Dikj%W8j(Kzp}?VgTIQFM2n}{}A$w5y6ertHc5ru-!<>318H&PihP}rE{o%!< zXvq8hmh}(s`1y4dKqxBIJ53(4OL#m%e0=YPxQ|Vkzn^aKqXV~gC8F&5B0`6`XwHB~ zrNGkX@deD-C^P4w*~^3e-x^L$f)+EglD|{?Uge60ctRC?q1iw(2NZpJH)bFwhu(IC zHkqdXLg7}wyfA(O*fifRQ2utRENuHb*s4|-e=-{g9%MD}KyLfF(EeR|y9iUQTL`AL ztB7`I9LimHx!kAwZ&eN59$E(>;KEx9=}2&D(jP-5&Dzlp8abXdmMi(T9{qT%uh3W&9(O1 z+RzZe6%mJB_Sbtg)3hN&w9qH_D8@hhfjTT%2j18K3;w)c z!bZ^W?k%%-Xe1DiyaoQn_24M^U8cyO-oU5u$nv?S+r?dLQY!-%;`$74 zsCYRtY^DOs&?;!xwF|c&THNPk?+d5vi-hd{GOMni`sgj1|5zts`2;XvLKGfAwNnDC zS%B}MYwuPF9wCbDO-l(hI`lojuiM_(UV5S{ov8*BF&6d|J8Lbdz%yL1;1NPC8vI~{ z?`4TSDZowaoBdTxs9Qk!>vEZihw@Lbry%dVu>x%)bZ6Y%nz@>Kf|8mIQOb_5g!Fe{ z;0~?|%}3OSP$vqE`2B!474=1lJqp(5Jt0L3j)+eZ$2LFCmgwU|v z(r5-d#i~gbUYL-ECh5$h^kWqY>g5CvSt9YjLbY{jaNRJF5G=GN7Yhub9G*_xvrU-r z!O*x#wT&N-g=*F}a6zS~uw&VH@{#>92rIF?)R1}`4{(F$Q4i??yOr!97zvasmsu)s zg-uRtC8{R>9+92nEjv3r%iRpU8uZQ`yk!OdgD@89vXB88^m@ruwUz`a_ z-E+~K!HGIR><%k+O$)kryz<%N2|#>YYx}Mbv^tz2XT`dE=KZN4cN*HxQ)6Ziy{o5; zg6?hbBIe1SL@AS914n0VBFHN6Rc#WRD?&qM158Rf7kI-Z$BJoum!7b%FT1_r4qw@(p0Yu`=l0yUjX}+o^yD_l+p#)fYt2h`2F3CD6(qbSBBmpG*XP_^`QL%$-F8fDMB>1$R2K$EzXlfONltqjynNReq$l zjdmPABXBL<{2KlV?uh{nQ|ysjP(ChJyfBkz9wJ5$~iLb&=1`lcgckaSXjdL49{4NEg^yN{;0^v_^3+r>Q$B&dhY(~ zhV6|d!bU5fzSk7hsLD0EIEW&&>!d*7Nm`!?fH&E{IGH30Ln)mgmbiZ@U6HT#rkGQz?BUM@3 zAngcdeFx7isK>!nT7V1#lKrhgtJili2t4V+;_lrA*~3emSbPOegg@9kaWJEBk_>x0|&gOzW!ZNa`84<8ynX7l+hngy>)e+ynN=crA*Gr*5g+GZC#$BrkYY(h{VD^ zb3|B^gAtYg!YZ4VRPW4mpvfJ^kr`bQBsx5r={`0$rkYhLT9~A~?pb`3c{^Qr-H;PJ zRQK`cXJv}TIT+!aAWvK^1=tqrQy}{+LUt{irAx9Dq+7LDk&ILErgDtz7{|`Ta`r7m zALT=b8I4)&(-VHR#LuB)a0LHmZHwh><=4k|K8&*HCQ_ zuR})rX=)8Ga41m+M`50w$=S)#`vwEzX~X-6cS_0d8P_QczIOC(?Nay#oFv2~A6`*c zaKv+WobPm1>?aQ73oY01l0vOtV1l(aXhpRI%*;wRE|s}egN15 z4kmv)VZptxjLGDg>neuNKcB$d?vvgCY3DfL@6|Ksd%DD_`QLpvfvB1T9WAuL1+Hdl zm&qn^@J#9J0E#Etb~pqlB#8hAHN=J!3PcErYwPecSvZhZAsit5QqyYgh+}!ba`}P+S-!z`PR|zrU{AT}D&)1=~ z+ZmJY^dIN`$BA7zmtw@xTr=<)&vYnIhQOjO<4i%M~@97K;=Wk+zR{5kppjF zDNP&kA>?2ignAN2QJc?gUxc-q?S*W>3JfxI0%DLKw*To0L`fVZasR>E>OwfH?JeZ98gBJo!V6~g0$D}31)(?<)U#vOWc8Wt5$GJyWsvx{v^`7Fo&5* zqNE=}yfIK4cLtLWd(Q&tcT*bEzej001*!;+>j#!7ZB2dDyT1@Z+kBR37Luk28g zgnyp~_5bsl9#6+mg!dQBy~XP-Figl?r?PRM;`zxebMp{-M~EGti`?Z^*N^1Y<6Ab?3f{ zdghU~PrkDecF&PV&r2Pw!QzcGvxr{>FL!C}khfg~`%02+YjrieZi3b)*eJ`OQvbpwh@!WY_$tJgff_8vOf+Wk;XLjk% zXy1mSuS_T7M^yf&-*Wh~h_`oR9E^N0u&!FjWCSB8iZ>3TMYopG5w`#DuV{}C$Sw!a zv_Zr!Sg>*dc$Z}SdI~b3$eOK*kv&cHR9qrBhb~V~ha1nVMWHdQj+cG(=lAuro62Sx zWN4vYw2wafH?}M3+V6zJTR6k#wTG>4Wr8UU#Ez-{;?$jG8* zACA2M#ee)?_@uHNCyJj=NJ`hXmZrUa%HkW_gdZG<`AQgajr9v);+7Vc&~WT7qdGY^ z3uWtwgR4jEQ}T#1)&2f=G&(np5IHLr?yNJH(%VhoQEEASXo5ujz|Xu|RQvhk{ZYVw zJErbSDnx_38M)r_6szjrRuVxBeONk>+08TA-AHTr!i~i5acCO7@N9PvY7_ny6$fB2 zdjDGdmdS~q)tbX)MslAZV%a~snBj+kuCZ92O`6hU>dx;EvQ7E4~vqgYbElhZX zexR7rl<|p#Cc}mcL`l;@&ih)%X6?R_lX-F3MGe?R`3uS4!RV5R(|~mNk!%D5c%W#~ zw;jZ}d8z*$Nw2PrJ_RJ%#@clSTV->!OSTc`1QD|lIyx|nts?DD*ETc~tsQI1RC2?a zhpJ%2^-mc?TJ^;;Cic-hDyNwIipd|qVcn3wha0z5$1zLd0CCgaU@RR%+ zb#9wEy!d?#-Lo`iNcc z1FhYw68j{@=jMV#Zbdi@Kp?Vbf0*#{rGXG5Q2WrgeMWW(^nWTc-W|!%Rq$;k`M7IK zyjVbgz_STjDJUjj1$x@V!|Q6sEb#S6O;bWD^pF37(S5kmu#&`hkeMe2YX6bQm`0e9 zuU%+$I=6$ccXZnlnmCut@{ts^7$sj9pI&&XIM~b1$=NwB(ahhSz&*Gn!GXNC<)*ns z$FVV}@Gq2IkMg>j3SEbXkVK0!GX%KQ3qS3=Y~5It+pNyq(?6?FIYoo28I75ChWE7@ z%(3VmPtUn^8qx-YB|~V;g%qCC0TnmF3l9vlNT`RJPvRyNfcbIvP8(rCL9MY`otNDw z@-m%yz*{B`>yF>F*y;`KF6U*h zGP_3y@mW}!Z#P+?{6_TKzWbRoyE67EP(my8nDu>o2JSQA1fzP#Z}dJv^3KT$?1pp) zdE%ktQhYd@B{lMHa8+2oW?@N5SX~54aa341ekOD+_RwYiJ7wk+K!gt^h5X>h&9RRs zdEl*R^ocHh@4Fn4bO)mx3bNJI3AMX3mS5eureE7Ki%!bB%}sYJRT15bcI28y4XFiY ziaQVGlPd@F()UOz@bm8w2k^V53QBu4?~H5AYq2PH3xB%r>9m|ZO6hLn-f z1IXF01qRxjm-ZHGWq#|3SsOR4-3Q?)1VXhA5APO**R;8pZ|!27|F9oVK_igKXz`vN zuC=|kBjjLtN;=3ShT}JANB*f7<K#4w*)d|epl=a8!Z!5g+!RpvttO<83fBsW5F!iTexi$T5 zSTO#*z)^5Ffq;P(d=*~+`eavA&)4-0ctB%r?Dky&3wv*GhHiGvDx!f(a!Nba!t9q@ z^G;*BeLNNqO9Pf_y=d60dHl}K-?;+ALPLa{>tqC6lMPM%?bu&M(*5#xd|OC zuba$Xf0aCC2*ro6a%2_$m1x@}+v0-+%DM?C;guG}Vg?K)NrfdAqs-X{)-(OhdX)rv zDj{p1Uhu*?&rIG5#48s05g zM4Lf-{I`x8XU%1<(W?=1J{4mT0sFQVQgA-feG*B*M&csN5KM$7ShquR{&S&j)i^0T z%6^+xPOU;cf8@nOtk@{_9j>B_l!&;I3Wtqy5CD18DLk+}pwx@oAnPi#&Ex_JI%f?~ zVgJW`1N>woJ$ocqY||XKML5ZEi#?uO9O%A{d(KPt5-f9L7gJIbR@Ly1hbvg!(*!XJ z`XHBrR=f=;(vC!+?IbR-i$<=GMw^pLp40>aq>?5~;NThVQ)tCyQvA|HLDLz0^GftP zzwM20RMQ&@YhoCOQ_8=jf+~*aj^xK+AYbSWY0GGg*>jF_|9y(0{X%4x_E|Gu`d{Bt zP>UKZftb{v4DOu3H*h;3v)`eRd%HqgcJY373bLWFgU~=C6W!`Bt-@koFIsu{|D!GI z<1o4E)ttLc@|oIH$yW{xmRuNFapt7aeXCVYnfeRbGFuA0i`#CibpbD&bV&W3*(0d8^cVnTSPit{miiv{pYl}c?!n&KS6=I{s zsaUS)BclzTm>;{2#x;2sDpEx3uZ!~OTbW#3z_qZB&PgBLck&$x;+E`1zX^uCXJ zcb^9Q@&?G>)53+w_<;@-V{~d8NVH*~Ss!d4>sM);VXN-LHOo6{Vg}oG<{6D28j;$1 z3T!IiK_eu`zIDId7*Y?|AR?UU)3(O)WG=IKs}g)#NnBi%_F4GP$f#Pmx& z&Ftrclm*Q2PbQyvpT@+K`qF;4Ze3+7-ani``-B=(zF*n6KdGlGR{W7(_ z&yi~$fy9wyIMl5(i#B{W#izm*413&fBFGpel7qZ?7*x|Ty-efy&b*aI`7yW^!$G@Q z3YC}wPWC6psfV#i&y%0#YVZ`bTS|0f0t1Y+p|&5PD@DW6aa|~vjosgUri~Zx;bnA# z@&uUD@KdDVTYe9xnqfRe>Hr&L-rANr4h+O0^5ZETCV=M685=Q7TB9d&eUvs0;PQJY_?avrKNyknD;Yl(^S&tSQ$IV8a-WaJPa+q{iXtK`S zzuzcrX*O!q`7Y@G|2Ys&++`U(S*f=3&_fGsU3cBv=!|~Gya7>b{aZ$`MTbeZBI+7< z&t+{CID4iDTnRUXJ3b82`Pb7*inZ&#kVN56qO7QtaXnPkWensx1Gu11 zSJQbc8?XQUfD}{LUV2w{JPy$W`Z;i9&0xe9FGwDXC7fJ(HxXEf>q?z9eq4~G;tfm7 zJLxOoX{&dXMhN#pjA9`Tc5B)?RAtS@XlF%94==-|QF&AZrR$8(a25*%!u!zSPa3kl z9;SzSj!m4v!A?&rZYNyW$%ptA7I#!y+C4)qnL$(I?>@#VGEzonsiW4z-}djw6X?45 zH%Nk8y)vPm1q4_vWlj8v`a+9{Dw%13*>>VLJg~&`7cx94E4*n{{AD=QS(_0x|!uRvPLXND7e6x z=_zCzUywJb#hAV*83!{!(6@PNY;2JK4^FU)ncvXZzI~f57HI3q9+LA{L_;p!_+m$M zaT{H4bJ4E9|E5iyi<{Es3qj`w#)}?_fW!x9-TIoEpD9#SgZFu8en>b=i#w~J6J@c} z;D@vDdQjj{=k4LU$60B&+djw_i#z&I+^ng9WxZly6%%};Xfa+9|76>$N_7RZ^~3wG zHazBPPGi+Htt^)AJqrY1T9SL_P7BNH3LoZg224+oUK_GLW*};87x>&6FYquQ5*BMj zgX1&IU@EwPGh?C*$5QY%viCe4d){E%_QNZXlHJ51r(I+DD$j@Y;T{x=a9*yC@Bvg? zzpfxVQ03!Mn9j+)QEZkagn-ZV){@)aK5OZqsQpsgINimXu1(~qe|v_q@0&WZ&x~f# zC%fO3nf?+jEM!BG3O3$pE3-tR!NsYDRf9 zE8ep(u$`=ay1rVYiI0@a<8anY?3j!NOOzxs?3K)K#M1FWOP*rNl-?mVE;nq*-fN@M zdOtn25q;qksf3_Fts0j6#l@ui+w}Ng5JJs930z-dX_1e?r@M_twSa#;1c|<|t!GjG zlo~>j;tCrnRx=NU&(>{57{9*GIvIV`PicA$EP&9XDl}|`6KfMpMKXF5_|19rP!?D` zC)88{j>l;(GDdDfdne{oIaSzc={-@ij+9=mlvp1Uq+pFFyVn{!2h}CA&_Nupcad7s zIUngvA}66g$4N8Ji_FdG8pt{|$_zvt==Z-b(fiY@xA+~-_RcS^tKXyT6@C%hk$(*V z816Vz^80)(@N9NT4C^SNMqYj_fAAO2x8|ITeuwf>_Rd=L#{YT#hBb&`DYKFYXHAHMtsGL zk}@!J+o)3O^-K_+)8kKcx7_Q2kSBmLp{nuWL*6_8&O%u~Ry%tcV=Lxw!&GpZ36^(C z*y^vUs-3><{+uJ;rOO)@xVODPTLa=vN%W>Hb8}4(xaNIC*}yEV4&Gw+q$Trc2CdOC z4Z(mhp1v~&7y;Yz%bCkDNcpZ7KVRw{|9PzlnE6T#lz3e=vlVLYK5S@;Bs@|=?9ipa zm4>lC&64e_cKDN}2XbcEI@Jd6X>BalRvrF7jw?2-*KpaZ`E%F6~MjX;#w1YdUK7 z5Ye~a0tEm_K)1gG#|@1FeRVH}t+GY4PNuNTL-E$Un!J4HdQ7pZ`U>{aET}P`q-BUy z;_FE+5zx&|`qDST_I0Q;LBj8p=ORy87Vi2JUXNlZ2{5FYW3ll^;hfPvUj0c8X|!MO z=g5zMh&voxo`F=UFL!6pK|hJIC&>S#5HU{! zNHWXiBgy5L$V2J{-)|^J2k)>DuUarr8e|%DX&_Ot)52(cD=iCFJw@ejyCXDbtuj(0 z;oRKJyL7D;cOA5!dyxyk+TCe=tmU`!#k!*K5#gJFY^pw1|W&T91*OB9{8&#_QS{XkzzdYj@u@0hTu)E3&8i zgpgcgR`wopPTn1cT3?0}p}60@6xQE1b(|qL>F;hY0@vsB$@dlT*CV8U{E}SryclzG zo3xq>I6+Dik4|>Eg$gA6(z&6b`)b+3lvX1DG8?*be???|sI@q##;D?6z%9WZKZ#+S z^ABW~moe#RHE4cl(MKuQ6AER4z!@VX4&PX7jK&Uzo%)PVBc8jqmWag8C9zXkA)J&F zS=&t8GRFjQDF=RZd*h9X`yzcG>UVv5ihh$mDl$KTuP~0Ybat-s|5}x41LVbaSIgWW z5*y%DRZ1BKiFJP;S&A=PTlMzjT5V?TVPSGj*mMdY$mA3d%Mqx?GGK&2`#~9$c~OrP zSm{QN=L{(fx@DI1&ojKS5D2vsSUf+a4K z(7Y^7NyM`)g&T@E21~q+65I=b54FV|dbXIfSKZfLLksNG$E4#T-Z#1HPH0_;GlmTK zH9Knn*b@X$28#e&pDH%IWhr?VRO~vQV{*hXFJ8ppN;iz?AiTcsZ3o7logTK4j=H(1 zutgv98QP~{2}XRqgQ5L6nMt7h-jw0FL)AAn`yP+#jwP&%)J_P&7NW}ecFGvCZ|ylY zY`=wh zY3j4ptTH#|j#kF{hd6@#@eOqBU%*99yP$@JBKS7V0oi+rjwzjtPhri`5A|)7ToTxY5G9oHW6q{YaNAqikKAFuFXP_ z?HoD-aLz25iHeAL5&3vv=(T5OG{dSNaNeWh9^rBky+t401e#T|{c9!N>E3ivgz7f#7zwPj zbT2=t5e%zmeZ#=`#fj%W2S5hOb>{O&p!A60~^^7h)HF?SKX zKgAF>8t5OkT#b58oEc09B`MCfH+?a%SQu%-s=1|V@LVYf&(v9m z{{5>Jt4l+5wmxTSE@%EbQqXF`Wm>wqMnP?mY6!Awas(uTD7dJ4PTtj!sH!^EFy1M| z0V^1o!EX&)ob5f=Fm|?r=yGli25)gLVnZZl00v zbqmO(>Lpra5Xocv~0fBMgi~d0o&+hMPY@J#;8u;Au6l9~r9o?_P zO>~#Tcs8}g^H+@y-l+i2uBoI7ZnB`OW3_*zbM4(9>KvpRaIPc$&qxahX`cH}KmV%H zmyKMy*D_N#NeG@(8#}m5H9WNwSs65o&QHl-WO})JIbtlX2QigrA@(-}xhwq_^v2d8 z0G(3{PSBRtw*(y=jmJ!|nHQo;-4|o|(+{-y{(T*Sy|>Z30%Pw*-FnI0P<(K774|=B zFHY>51(_`M@1YR1JmNrO!^cr|HCB(iY3Rg2xr&^aztuRpX_{z7_MXCqT~;n2*A@z{ zPzz)z)GLTK)!vZ$&~K(L_BysK6AiDpq;Sm%6g<585B;Ue%8)IXSe+FlB_3Q&NF5fZ z=l#CXlm9P)x&MfHao-oSGxu8~RUW_Gwf7^w7P04-hz^gA`cCiPX6_%^hHDjANZa{X zL!(`q4%M7l;a0jS4vO#IQE3%rT-7ZETO}jeg}m`(KZHf2Si&>#Ed!Pm|)~ zGE@+@GlKH+Q+P=cMN_T%qfnfmI(@W$9x9_>OyI(ssi2!;^R!dS4)}|BS9K#A5mQ55 z^64Kv5GG5>&!?zEifCf1{=BJbnR~GJ(dnBskq+QpcB@tp8=VKr8flF7F*a#X7?txk zz3NhCwN(TrC=Umq2|3UTzQaw+5spO`3I}T9 z*B%>=JZGw%now*WPNzVAeDQ{4gLBv4v&)XyXusiqX_nS^Yve3cEAjcpte4D-2)gOk zQ!rt7V<)&Q_OkA0T^Mkz_U z)Hbi<#r$6yR^BJ>6OVy}ce($h(=UozN=crrBUuR2+vLsog0@cMMS@{KRf0LbT#t=M zI_1Z+vPQJrRe|vM8xP%k#Hemy%Fmi+`MFAy`#T(vwip+-Mj~c(2Bn1iNV4bsL?dQ5&T%brZ zWqUy?u$d#V#WAg2r9YS^NzVrwm)pvtHQ)PLN21ZctnXDzxi`n>f!5r|xFK@v8NljYcq0h}OU_ zwbK=cPn!upw?|&79O(qYs{Ez}8q1$$za~n?7hoKMX z547UET+%DtF~Y~JPz-vQ&&Z&Z&Hg^`CrOTvl+4cG2}gc*hD+6=EC`4z&fm730>0%6 zW>d`k_W?=Mrp^)o@jsI0WwI)EMdpssI5nALF9yaaK33wA&(OON*l(@i@a4aRPqif~ z?^Z|9HxpDPyNKXkn)l%0)yYSk5d?9qyOC*#x;J5GR@6{!e7<<~vdA}_=vww280l2J zZgVzI=$xseT)(Y309q5oss-D{+FX1QufG|3>)krZebvNV_=obiEE(jt7Kj|{UE)vu zP$lHA?gh=}*roo?yDNDC&D}e@^whUm(-#5v(S7;k7!hw=7u`IhxSQ9W_&(=MK^xMh zVWs)!z-{d9zO;tc7>T}wD;d=wx3FD23CcS&@HVn`J}#ilVzzc2WX)XuZ_pn7wqMAs)Arn>o4Q zt0uZiQYwl=x+Gp3vT1(FDa*b^rK`&tdgi1L^+g%js2+KHfRq5k_(ltl4(n1`X4ay^ zM2sJoyJMf(l#aOx$VGopMxNGct~s%z7)4@`hPsT+un##=S$3cxuz+KEX0J^Pta9|x z5rKeOiYI&t9=k-mZzH&*_+*hKCiSN=M>d1Ac})G6|Lp}ws%+hWI=&xM`F+jntDGAQ zkdvRp$0Lrg5k7A$s5WjF;gXnHoytnuanBC5ev7F=}=U-;$W%i3`B=H3G z=&D?PnRT|0XD2vQ;D2;#YdvH^eg@>we<}9&F{?~^ex@KYW!qMxLofvA@ei2Ry@U0D zS~XoRmp|N~w}~W$>{_Q4Ih<0E=Q2ym>5#&Vu?hTxJ zf=GO;!sk!GiMviC+#xdDTpcP}+eDRVX%JHae~gkouzP$qhZGHk3tp_T_Ko#Fj{n)T z+A%J;n~oxg{{MG>3a%=LUbncXcLA1|$6964pi;Ba8q}v^rp@K&X9Ro8!&ydcbgKW1 zYk8q-_C+L6H6CMG!9p#SKI%N2qzU#sbO%?a>V+B8zD zH#9(G!?H2;?=mW85dRGaffDUY`@Ls86a-5HdI!tdmfrYFbRV^&ugl|TeHyH;Wtp^9 z@|ty6B$k&#o{kLHzu~kw69!Q8yg0~nqg3hg;TNQ7K_vegE9mH*j)BnDoY2qF1&-1- zc@X3^yguQ})$ ze?OWTxKZzU$vIp&o?**1eXJSxu&X?b$525)1w>OLcW)C$V@@HHGB#)iM9CQnL`-C? zg_5H}GeEK?O4tmIA~r(J2!LjeuRSaGpZ+`4msMtGa_^kdCy-Qf2A`BfMhYJ<*}@z#Q+|s{bob>d9fTGA`V0rcCcE5Wqd|R zf39i(pz{6W@B;J1^x*OO#NvA(WmksSZ2t#-&?!E>SMRU#&ohEQwbkmfmJ+64XhZDSg_` z4UlkMVm^pHhe>hY2Ke8BV?g_Qf&8!`+In`|s|Wk9mrTu0rgiYo!g90tTQTa@@cud2 zw`D%%SZ$;J(Z}^<%>8On^~9azGJEq+uC0V}GIyf1=ue(S`9=49ebx7-{NB6bZ;ZNP zcVlS;4^GH86~X&=>OJ|m&~I5sde1A(x8H65Ipy6PYINPRxG#7;TFoNRVUbdiPss027s zR$V_a7m+w7*d7NbgW~54g|>Df9~uYx{_&F#K&_M07cpDhfFMeIv(ruTRN5yu7ebx2 znL2Tqb*TD%3TJg0hzbgZ9TuG}Uv1&H1iWHA4Ca=$jG03f><^x_Iy%hV2aFT{v<~6S*AP)c?lpN5LO0me>(;)K5_cGF=U}3yT zDmpiBf~-=!Qj!trFwXi(qgl0thSpq9g;^{C%)Goj2dE2`^*r zZy$PZuK!})*qGN0fvs0c(H>vl)X6^U`)UnN2Czo=;sGbS?isJR+|LX9XC_o(aa1-O zgRYG-*IhF>#&uFTomkc&?rE?4H&=BLT-nv_`unMCgHAHdlB>sBc*zFwWy0n&L%!g} zibzc6bP)?}U_+%>wXP%%3HiqR&jWYPhQE;-+m9E_wOVw<(K-a1kBicv!7FR-<^vWK z7ON;C5x9L3h_S+*Hx-otmGkV3O8TK%be|))2HxQT9g;TLL#uz-_Y{9Mi{IUe`A`O2 z(O7jg&=qdO8DIuRq0R^?ikXtiW7ZxJxyU>S7@8TDLq(CdG=&CIQIQojT)H9Nl=B2C zqVb|X(3)d%Veq>EK|X%6s!XqnZsEAWE1XKO*Pm2^#C=y;?1A=*g)~dIl2oP2rxhuT zhNC+F5|Z@j;G7ytV@78ONwf`oNwP=QN;Ixe)f#09y(vpQ2?uI~SY^Ec9s69Cmy z&WuvIA%UX<#L_cC3d{&buyLbhI~%HV^xV+-2JpgA*kl)C9SZGePpAiz_dK4e-)u&= zz2HR94xU{dHP}}AZ*qHsIdMtLiUeC$D!)d%Z$*f>N+TO_$hit?2TvDYxAL3-g6w3h zVu)PH&q0|xC3k!8|_c5XaVV)t&2hMbFgm}}OJ!R+I)pmH}uuJh<~ zP6Ge8at*&3>|dzgg&6FOo02bHXD8ZVbq!%1zQ*IZK60nZvIp;a94WXjk2I94W7OiU zwYXPZj`%KC-N$+neNUhLFJy~fNG2~X_6LM4jesvg>{G^gPmcP&7Rr&1b&!IM#Y(41 z+ItySOF7$!k|BXEM_ny$!y;$=y17L+)|!DCTy#qCq`^w&*i@{Z0wMQ;(D_Epu!eMS zQPjvVB3xL;t;^gY{>%%hht0@%-uu@MgFhAi=$TQHVnL&MIiPD_5{l32StZ?8fOA5T zy{5ZZPGYsynOa<<+6O(pQlwORjN7RX6)li`OgJ(DuI>^~UYb+?VuJ6W$fF^icmLOQDJ6`O%3C60lCM^br%NXP#YfBJ4$!qwm zTshgX<^=2zldQt2`~=j;-PGl$)KX+DFJC=Ci{F}(!Q&n+C?4i#1paIC*sE&sQsQ(p z86J5tVaK$zq#Sz)Oq6*l4~w9oKG8^CuvPA9 z;r>0#KFkz+Yf{=nc6ycMebF7_5ns#8Od%YF1d7lK?(Ge2665oRTk2cmGb4duLCISb zrirs(bmuq{;=Z%st|F7Z=2kg}RdXVFJCBkoIzf^G0TMO)?#J3%hvmjCYxPC4#tl)I zGk~U`Z-Qek`pV$Q;WITN4zd`uv6QeAQ;?1PDvF`W>WnFbev6sWli~bULZeQ7=@l4a za#2aOrxx@-B`=zOUgic|!h#oMD3D@m9$7<{94mr16G)Fm-Z~=U0jCTV#jU8UVmqpg zGBh-9bEEXGvcb5Mf{Jhaxk4VZQi{9MJdj6Aavi0MuQAN{n)?D3D&YBH4NUh}CRUHX zUQe7ui1T7?e>?SU_f(g(rUkT6|JM&}dzz^9>|;7cHr8=Hh`eKl+e3ZhDn37Xz5jwo z8^laB{sl*;t)17?A17Y!kVyPgDulG6z&O1YsCc$CO%-rOMk%2y&j~4rNVnI&Iy1Fp zV^N}>#saJw^_!sc=*mgL+ZB>HjWJ>Se6Jl|?A=Xz6|jCxp;zYgB9I)MR3;PVTSl03 z)*4|Cm+^tr{G4at4aGBrLVRLfVTpz$Xd*4Gs%i>ynctUqv~ z6Ndz-vEPym5&SIYVyu_Yci6D8*Z{>_la0Z|zP>m?pIKvx0&X7elq|)YuoT9X`DNZd zxbh&m4kEtvB(G+nCrz%zUT-fcKZ;-fTQrlsYt_Pr0T(p(g!}ACok=Dm>Gc{C;bHyl zy%;i_FUfrLZ*cP`kN*;UT9&c!5KOmkLUTv$h03bLR!NAy)-@c+$8B3k`3VDT;o;`G zPr04XaKt-7Bx7gt{QQa^VkMOPe^FdVgj$(pplTANOZQUZlL?CdS zLRMEr341oh76fP+9#fz?VTJZ%%uE5g+vjuK?C;)=$ z24^Llm|%^>SG~{0=PNoPOn$QA#=Wbf;rII*#NwM@-SMHG+xu#sdN*7eC_1s}N$_ht z-Mjm`-ylDU3`reg9hV+R$y%?4RfB0jx{{bPoPvG^XAkN4n-_-7sF7b%ZA%JC9h#_? zOU2V!M~6IT5G88#*@CSf(f5Vw`lEtDL*|5yc0;CN{Q=0}9?XrGYPk6yuLpgG46mvY z3+qI!Oe0?VkGpZ6VXPxX0RW>#!*ByfWA}P0*ZfP&HjTppXuyDf;DhF$%{jt+^ZB|J zCLHy=-qX%#I4I<_Y}xM!>7Dx1x?J>q(6RFK{n>5K6>vVBv#a);a$zdgsMb28c3KuG z0`h6TNc#oXNgF&*z1Tp-D_O<#U3SG1Ao)&3M_w66d)Xk_ogd*Lt=6bcn-P#NO@iZ? z7dDFmKKASZTY^X^N%_JEtsoKYdRF4Rz}J=DHUvJ%sVOJYu4(bBPhwu{M>bR@qfPyY zO1v-vWB(IeBe$OInEtuHN`W>F>e4F}G&(=GNX%fo{(fD;)=>i^lOCpj?fuc8R*Orl z$PEP$oLQspX`sIgrzxkEz`_*GnE43e*1d<#&{U*%3BDh2v&=oiUe(0>CONvt!d&+c z8Du&_aKoLL9_HM8|Acs$a`R_J*v9E{DrB>hm;a+z!9?c_6??*kP@mbq3>hG{_rcYR zw|CdVv^lkiW&mEnC@F<6j`0QU{F~d&5L`_*wH6%d zpC#e|wz7CtM@f?D(NuASTYGz^Uc(XU*EcbU`48xZurh>Of7z2X-TlN&Sp<}qHeE$F zmka3c=@SO8UMr(NJ{g524n#3XS= z^RN@N{%_%-K~0;h$0B(AH&2RfuVdzTp3Mx>tPH8C)*}DQMMDbaHOWF8gCd&aqT2P9 zI*`IawX`CI&k2S)Y>k`ELS$moby-*|$NO0=qSMfkKAQdh8UnED#{`wF`_DrRIlnfOH7wPj zyWH!i&7oJLo91F2i0RszS4qk

    {AB&W0(m_97w*YR#4Ab%#OV$IeGsH5;bSGzV$q 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

    *h*V-Vu@a|-vEZlg`N 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 z%0A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
      JuR0(xEK!VtyhH2Q(EeBAXel)N56N$FXZ@?( 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%0DNsdgsDW#ohZjZTjNoQCN(JHvR?( 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

      oG!tYGK3Ef1&w7b!w^_&+F-0#Zan) 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

      (p)...); + } + } diff --git a/thirdparty/jni.hpp/include/jni/method.hpp b/thirdparty/jni.hpp/include/jni/method.hpp new file mode 100644 index 000000000000..2e6b69b2f24e --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/method.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace jni + { + template < class TheTag, class > + class Method; + + template < class TheTag, class R, class... Args > + class Method< TheTag, R (Args...) > + { + private: + jmethodID& method; + + public: + using TagType = TheTag; + using MethodType = R (Args...); + using ReturnType = R; + + Method(JNIEnv& env, const Class& clazz, const char* name) + : method(GetMethodID(env, *clazz, name, TypeSignature()())) + {} + + operator jmethodID&() const { return method; } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/native_method.hpp b/thirdparty/jni.hpp/include/jni/native_method.hpp new file mode 100644 index 000000000000..192e301ca133 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/native_method.hpp @@ -0,0 +1,381 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace jni + { + template < class M, class Enable = void > + struct NativeMethodTraits; + + template < class R, class... Args > + struct NativeMethodTraits< R (Args...) > + { + using Type = R (Args...); + using ResultType = R; + }; + + template < class R, class... Args > + struct NativeMethodTraits< R (*)(Args...) > + : NativeMethodTraits< R (Args...) > {}; + + template < class T, class R, class... Args > + struct NativeMethodTraits< R (T::*)(Args...) const > + : NativeMethodTraits< R (Args...) > {}; + + template < class T, class R, class... Args > + struct NativeMethodTraits< R (T::*)(Args...) > + : NativeMethodTraits< R (Args...) > {}; + + template < class M > + struct NativeMethodTraits< M, std::enable_if_t< std::is_class::value > > + : NativeMethodTraits< decltype(&M::operator()) > {}; + + + /// Low-level, lambda + + template < class M > + auto MakeNativeMethod(const char* name, const char* sig, const M& m, + std::enable_if_t< std::is_class::value >* = nullptr) + { + using FunctionType = typename NativeMethodTraits::Type; + using ResultType = typename NativeMethodTraits::ResultType; + + static FunctionType* method = m; + + auto wrapper = [] (JNIEnv* env, auto... args) + { + try + { + return method(env, args...); + } + catch (...) + { + ThrowJavaError(*env, std::current_exception()); + return ResultType(); + } + }; + + return JNINativeMethod< FunctionType > { name, sig, wrapper }; + } + + + /// Low-level, function pointer + + template < class M, M method > + auto MakeNativeMethod(const char* name, const char* sig) + { + using FunctionType = typename NativeMethodTraits::Type; + using ResultType = typename NativeMethodTraits::ResultType; + + auto wrapper = [] (JNIEnv* env, auto... args) + { + try + { + return method(env, args...); + } + catch (...) + { + ThrowJavaError(*env, std::current_exception()); + return ResultType(); + } + }; + + return JNINativeMethod< FunctionType > { name, sig, wrapper }; + } + + + /// High-level, lambda + + template < class T, T*... > + struct NativeMethodMaker; + + template < class T, class R, class Subject, class... Args > + struct NativeMethodMaker< R (T::*)(JNIEnv&, Subject, Args...) const > + { + template < class M > + auto operator()(const char* name, const M& m) + { + static M method(m); + + auto wrapper = [] (JNIEnv* env, UntaggedType subject, UntaggedType... args) + { + return ReleaseUnique(method(*env, AsLvalue(Tag>(*env, *subject)), AsLvalue(Tag>(*env, args))...)); + }; + + return MakeNativeMethod(name, TypeSignature (std::decay_t...)>()(), wrapper); + } + }; + + template < class T, class Subject, class... Args > + struct NativeMethodMaker< void (T::*)(JNIEnv&, Subject, Args...) const > + { + template < class M > + auto operator()(const char* name, const M& m) + { + static M method(m); + + auto wrapper = [] (JNIEnv* env, UntaggedType subject, UntaggedType... args) + { + method(*env, AsLvalue(Tag>(*env, *subject)), AsLvalue(Tag>(*env, args))...); + }; + + return MakeNativeMethod(name, TypeSignature...)>()(), wrapper); + } + }; + + template < class M > + auto MakeNativeMethod(const char* name, const M& m) + { + return NativeMethodMaker()(name, m); + } + + + /// High-level, function pointer + + template < class R, class Subject, class... Args, R (*method)(JNIEnv&, Subject, Args...) > + struct NativeMethodMaker< R (JNIEnv&, Subject, Args...), method > + { + auto operator()(const char* name) + { + auto wrapper = [] (JNIEnv* env, UntaggedType subject, UntaggedType... args) + { + return ReleaseUnique(method(*env, AsLvalue(Tag>(*env, *subject)), AsLvalue(Tag>(*env, args))...)); + }; + + return MakeNativeMethod(name, TypeSignature (std::decay_t...)>()(), wrapper); + } + }; + + template < class Subject, class... Args, void (*method)(JNIEnv&, Subject, Args...) > + struct NativeMethodMaker< void (JNIEnv&, Subject, Args...), method > + { + auto operator()(const char* name) + { + auto wrapper = [] (JNIEnv* env, UntaggedType subject, UntaggedType... args) + { + method(*env, AsLvalue(Tag>(*env, *subject)), AsLvalue(Tag>(*env, args))...); + }; + + return MakeNativeMethod(name, TypeSignature...)>()(), wrapper); + } + }; + + template < class M, M method > + auto MakeNativeMethod(const char* name) + { + using FunctionType = typename NativeMethodTraits::Type; + return NativeMethodMaker()(name); + } + + + /// High-level peer, lambda + + template < class L, class > + class NativePeerLambdaMethod; + + template < class L, class R, class P, class... Args > + class NativePeerLambdaMethod< L, R (L::*)(JNIEnv&, P&, Args...) const > + { + private: + const char* name; + L lambda; + + public: + NativePeerLambdaMethod(const char* n, const L& l) + : name(n), lambda(l) + {} + + template < class Peer, class TagType, class = std::enable_if_t< std::is_same::value > > + auto operator()(const Field& field) + { + auto wrapper = [field, lambda = lambda] (JNIEnv& env, Object& obj, Args... args) + { + return lambda(env, *reinterpret_cast(obj.Get(env, field)), args...); + }; + + return MakeNativeMethod(name, wrapper); + } + }; + + template < class L > + auto MakeNativePeerMethod(const char* name, const L& lambda, + std::enable_if_t< std::is_class::value >* = nullptr) + { + return NativePeerLambdaMethod(name, lambda); + } + + + /// High-level peer, function pointer + + template < class M, M* > + class NativePeerFunctionPointerMethod; + + template < class R, class P, class... Args, R (*method)(JNIEnv&, P&, Args...) > + class NativePeerFunctionPointerMethod< R (JNIEnv&, P&, Args...), method > + { + private: + const char* name; + + public: + NativePeerFunctionPointerMethod(const char* n) + : name(n) + {} + + template < class Peer, class TagType, class = std::enable_if_t< std::is_same::value > > + auto operator()(const Field& field) + { + auto wrapper = [field] (JNIEnv& env, Object& obj, Args... args) + { + auto ptr = reinterpret_cast(obj.Get(env, field)); + if (ptr) return method(env, *ptr, args...); + ThrowNew(env, jni::FindClass(env, "java/lang/IllegalStateException"), + "invalid native peer"); + }; + + return MakeNativeMethod(name, wrapper); + } + }; + + template < class M, M method > + auto MakeNativePeerMethod(const char* name, + std::enable_if_t< !std::is_member_function_pointer::value >* = nullptr) + { + using FunctionType = typename NativeMethodTraits::Type; + return NativePeerFunctionPointerMethod(name); + } + + /// High-level peer, member function pointer + + template < class M, M> + class NativePeerMemberFunctionMethod; + + template < class R, class P, class... Args, R (P::*method)(JNIEnv&, Args...)> + class NativePeerMemberFunctionMethod< R (P::*)(JNIEnv&, Args...), method> + { + private: + const char* name; + + public: + NativePeerMemberFunctionMethod(const char* n) + : name(n) + {} + + template < class Peer, class TagType, class = std::enable_if_t< std::is_same::value > > + auto operator()(const Field& field) + { + auto wrapper = [field] (JNIEnv& env, Object& obj, Args... args) + { + auto ptr = reinterpret_cast(obj.Get(env, field)); + if (ptr) return (ptr->*method)(env, args...); + ThrowNew(env, jni::FindClass(env, "java/lang/IllegalStateException"), + "invalid native peer"); + }; + return MakeNativeMethod(name, wrapper); + } + }; + + template < class M, M method> + auto MakeNativePeerMethod(const char* name, + std::enable_if_t< std::is_member_function_pointer::value >* = nullptr) + { + return NativePeerMemberFunctionMethod(name); + } + + + /** + * A registration function for native methods on a "native peer": a long-lived native + * object corresponding to a Java object, usually created when the Java object is created + * and destroyed when the Java object's finalizer runs. + * + * It assumes that the Java object has a field, named by `fieldName`, of Java type `long`, + * which is used to hold a pointer to the native peer. + * + * `Methods` must be a sequence of `NativePeerMethod` instances, instantiated with pointer + * to member functions of the native peer class. For each method in `methods`, a native + * method is bound with a signature corresponding to that of the member function. The + * wrapper for that native method obtains the native peer instance from the Java field and + * calls the native peer method on it, passing along any arguments. + * + * An overload is provided that accepts a Callable object with a unique_ptr result type and + * the names for native creation and finalization methods, allowing creation and disposal of + * the native peer from Java. + * + * For an example of all of the above, see the `examples` directory. + */ + + template < class Peer, class TagType, class... Methods > + void RegisterNativePeer(JNIEnv& env, const Class& clazz, const char* fieldName, Methods&&... methods) + { + static Field field { env, clazz, fieldName }; + RegisterNatives(env, *clazz, methods.template operator()(field)...); + } + + template < class Peer, class TagType, class > + struct NativePeerHelper; + + template < class Peer, class TagType, class... Args > + struct NativePeerHelper< Peer, TagType, std::unique_ptr (JNIEnv&, Args...) > + { + using UniquePeer = std::unique_ptr; + using Initializer = UniquePeer (JNIEnv&, Args...); + + auto MakeInitializer(const Field& field, const char* name, Initializer* initializer) const + { + auto wrapper = [field, initializer] (JNIEnv& e, Object& obj, std::decay_t&... args) + { + UniquePeer previous(reinterpret_cast(obj.Get(e, field))); + UniquePeer instance(initializer(e, args...)); + obj.Set(e, field, reinterpret_cast(instance.get())); + instance.release(); + }; + + return MakeNativeMethod(name, wrapper); + } + + auto MakeFinalizer(const Field& field, const char* name) const + { + auto wrapper = [field] (JNIEnv& e, Object& obj) + { + UniquePeer instance(reinterpret_cast(obj.Get(e, field))); + if (instance) obj.Set(e, field, jlong(0)); + instance.reset(); + }; + + return MakeNativeMethod(name, wrapper); + } + }; + + template < class Peer, class TagType, class Initializer, class... Methods > + void RegisterNativePeer(JNIEnv& env, const Class& clazz, const char* fieldName, + Initializer initialize, + const char* initializeMethodName, + const char* finalizeMethodName, + Methods&&... methods) + { + static Field field { env, clazz, fieldName }; + + using InitializerMethodType = typename NativeMethodTraits::Type; + NativePeerHelper helper; + + RegisterNatives(env, *clazz, + helper.MakeInitializer(field, initializeMethodName, initialize), + helper.MakeFinalizer(field, finalizeMethodName), + methods.template operator()(field)...); + } + + // Like std::make_unique, but with non-universal reference arguments, so it can be + // explicitly specialized (jni::MakePeer). + template < class Peer, class... Args > + std::unique_ptr MakePeer(jni::JNIEnv& env, Args... args) + { + return std::make_unique(env, args...); + } + } diff --git a/thirdparty/jni.hpp/include/jni/npe.hpp b/thirdparty/jni.hpp/include/jni/npe.hpp new file mode 100644 index 000000000000..e5fb9e51c698 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/npe.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include + +namespace jni + { + [[noreturn]] inline void ThrowNullPointerException(JNIEnv& env, const char* message = nullptr) + { + ThrowNew(env, FindClass(env, "java/lang/NullPointerException"), message); + } + + template < class T > + void NullCheck(JNIEnv& env, T* ptr, const char* message = nullptr) + { + if (!ptr) ThrowNullPointerException(env, message); + } + + template < class T > + T& SafeDereference(JNIEnv& env, T* ptr, const char* message = nullptr) + { + NullCheck(env, ptr, message); + return *ptr; + } + } diff --git a/thirdparty/jni.hpp/include/jni/object.hpp b/thirdparty/jni.hpp/include/jni/object.hpp new file mode 100644 index 000000000000..575a879f5351 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/object.hpp @@ -0,0 +1,153 @@ +#pragma once + +#include +#include + +#include + +namespace jni + { + template < class TheTag > class Class; + template < class TheTag, class > class Field; + template < class TheTag, class > class Method; + + class ObjectBase + { + protected: + jobject* ptr = nullptr; + + explicit ObjectBase(std::nullptr_t = nullptr) + {} + + explicit ObjectBase(jobject* p) + : ptr(p) + {} + + ~ObjectBase() = default; + + void reset(jobject* p) { ptr = p; } + + public: + explicit operator bool() const { return ptr; } + + friend bool operator==(const ObjectBase& a, const ObjectBase& b) { return a.ptr == b.ptr; } + friend bool operator!=(const ObjectBase& a, const ObjectBase& b) { return !( a == b ); } + + template < class OtherTag > + bool IsInstanceOf(JNIEnv& env, const Class& clazz) const + { + return jni::IsInstanceOf(env, ptr, *clazz); + } + }; + + template < class TheTag = ObjectTag > + class Object : public TagTraits::SuperType + { + public: + using TagType = TheTag; + using SuperType = typename TagTraits::SuperType; + using UntaggedType = typename TagTraits::UntaggedType; + + explicit Object(UntaggedType* p) + : SuperType(p) + {} + + protected: + explicit Object(std::nullptr_t = nullptr) + {} + + Object(const Object&) = delete; + Object& operator=(const Object&) = delete; + + public: + UntaggedType* get() const { return reinterpret_cast(this->ptr); } + UntaggedType& operator*() const { return *get(); } + + template < class T > + auto Get(JNIEnv& env, const Field& field) const + -> std::enable_if_t< IsPrimitive::value, T > + { + return GetField(env, get(), field); + } + + template < class T > + auto Get(JNIEnv& env, const Field& field) const + -> std::enable_if_t< !IsPrimitive::value, Local > + { + return Local(env, reinterpret_cast(GetField(env, get(), field))); + } + + template < class T > + auto Set(JNIEnv& env, const Field& field, T value) const + -> std::enable_if_t< IsPrimitive::value > + { + SetField(env, get(), field, value); + } + + template < class Expected, class Actual > + auto Set(JNIEnv& env, const Field& field, const Actual& value) const + -> std::enable_if_t< !IsPrimitive::value + && std::is_convertible::value > + { + SetField(env, get(), field, value.get()); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< IsPrimitive::value + && Conjunction...>::value, R > + { + return CallMethod(env, get(), method, Untag(args)...); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< !IsPrimitive::value + && !std::is_void::value + && Conjunction...>::value, Local > + { + return Local(env, reinterpret_cast(CallMethod(env, get(), method, Untag(args)...))); + } + + template < class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< Conjunction...>::value > + { + CallMethod(env, get(), method, Untag(args)...); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto CallNonvirtual(JNIEnv& env, const Class& clazz, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< IsPrimitive::value + && Conjunction...>::value, R > + { + return CallNonvirtualMethod(env, get(), clazz, method, Untag(args)...); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto CallNonvirtual(JNIEnv& env, const Class& clazz, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< !IsPrimitive::value + && !std::is_void::value + && Conjunction...>::value, Local > + { + return Local(env, reinterpret_cast(CallNonvirtualMethod(env, get(), clazz, method, Untag(args)...))); + } + + template < class... ExpectedArgs, class... ActualArgs > + auto CallNonvirtual(JNIEnv& env, const Class& clazz, const Method& method, const ActualArgs&... args) const + -> std::enable_if_t< Conjunction...>::value > + { + CallNonvirtualMethod(env, get(), clazz, method, Untag(args)...); + } + }; + + template < class OutTagType, class T > + Local> Cast(JNIEnv& env, const Class& clazz, const T& object) + { + if (!object.IsInstanceOf(env, clazz)) + { + ThrowNew(env, FindClass(env, "java/lang/ClassCastException")); + } + return Local>(env, reinterpret_cast::UntaggedType*>(NewLocal(env, object).release())); + } + } diff --git a/thirdparty/jni.hpp/include/jni/ownership.hpp b/thirdparty/jni.hpp/include/jni/ownership.hpp new file mode 100644 index 000000000000..33a8f2408a1d --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/ownership.hpp @@ -0,0 +1,225 @@ +#pragma once + +#include +#include +#include + +namespace jni + { + struct LocalFrameDeleter + { + void operator()(JNIEnv* env) const + { + if (env) + { + env->PopLocalFrame(nullptr); + } + } + }; + + using UniqueLocalFrame = std::unique_ptr< JNIEnv, LocalFrameDeleter >; + + + using RefDeletionMethod = void (JNIEnv::*)(::jobject); + + template < RefDeletionMethod DeleteRef > + class DefaultRefDeleter + { + private: + JNIEnv* env = nullptr; + + public: + DefaultRefDeleter() = default; + DefaultRefDeleter(JNIEnv& e) : env(&e) {} + + void operator()(jobject* p) const + { + if (p) + { + assert(env); + (env->*DeleteRef)(Unwrap(p)); + } + } + }; + + + template < class T, template < RefDeletionMethod > class Deleter = DefaultRefDeleter > + using UniqueGlobalRef = std::unique_ptr< T, Deleter<&JNIEnv::DeleteGlobalRef> >; + + template < class T, template < RefDeletionMethod > class Deleter = DefaultRefDeleter > + using UniqueWeakGlobalRef = std::unique_ptr< T, Deleter<&JNIEnv::DeleteWeakGlobalRef> >; + + // Not parameterized by Deleter because local references should be short-lived enough + // that DefaultRefDeleter suffices in all cases. + template < class T > + using UniqueLocalRef = std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef> >; + + + class StringCharsDeleter + { + private: + JNIEnv* env = nullptr; + jstring* string = nullptr; + + public: + StringCharsDeleter() = default; + StringCharsDeleter(JNIEnv& e, jstring& s) : env(&e), string(&s) {} + + void operator()(const char16_t* p) const + { + if (p) + { + assert(env); + assert(string); + env->ReleaseStringChars(Unwrap(string), Unwrap(p)); + } + } + }; + + using UniqueStringChars = std::unique_ptr< const char16_t, StringCharsDeleter >; + + + class StringUTFCharsDeleter + { + private: + JNIEnv* env = nullptr; + jstring* string = nullptr; + + public: + StringUTFCharsDeleter() = default; + StringUTFCharsDeleter(JNIEnv& e, jstring& s) : env(&e), string(&s) {} + + void operator()(const char* p) const + { + if (p) + { + assert(env); + assert(string); + env->ReleaseStringUTFChars(Unwrap(string), p); + } + } + }; + + using UniqueStringUTFChars = std::unique_ptr< const char, StringUTFCharsDeleter >; + + + class StringCriticalDeleter + { + private: + JNIEnv* env = nullptr; + jstring* string = nullptr; + + public: + StringCriticalDeleter() = default; + StringCriticalDeleter(JNIEnv& e, jstring& s) : env(&e), string(&s) {} + + void operator()(const char16_t* p) const + { + if (p) + { + assert(env); + assert(string); + env->ReleaseStringCritical(Unwrap(string), Unwrap(p)); + } + } + }; + + using UniqueStringCritical = std::unique_ptr< const char16_t, StringCriticalDeleter >; + + + template < class E > + class ArrayElementsDeleter + { + private: + JNIEnv* env = nullptr; + jarray* array = nullptr; + + public: + ArrayElementsDeleter() = default; + ArrayElementsDeleter(JNIEnv& e, jarray& a) : env(&e), array(&a) {} + + void operator()(E* p) const + { + if (p) + { + assert(env); + assert(array); + (env->*(TypedMethods::ReleaseArrayElements))(Unwrap(array), p, JNI_ABORT); + } + } + }; + + template < class E > + using UniqueArrayElements = std::unique_ptr< E, ArrayElementsDeleter >; + + + template < class E > + class PrimitiveArrayCriticalDeleter + { + private: + JNIEnv* env = nullptr; + jarray* array = nullptr; + + public: + PrimitiveArrayCriticalDeleter() = default; + PrimitiveArrayCriticalDeleter(JNIEnv& e, jarray& a) : env(&e), array(&a) {} + + void operator()(void* p) const + { + if (p) + { + assert(env); + assert(array); + env->ReleasePrimitiveArrayCritical(Unwrap(array), p, JNI_ABORT); + } + } + }; + + template < class E > + using UniquePrimitiveArrayCritical = std::unique_ptr< void, PrimitiveArrayCriticalDeleter >; + + + class MonitorDeleter + { + private: + JNIEnv* env = nullptr; + + public: + MonitorDeleter() = default; + MonitorDeleter(JNIEnv& e) : env(&e) {} + + void operator()(jobject* p) const + { + if (p) + { + assert(env); + env->MonitorExit(Unwrap(p)); + } + } + }; + + using UniqueMonitor = std::unique_ptr< jobject, MonitorDeleter >; + + + class JNIEnvDeleter + { + private: + JavaVM* vm = nullptr; + bool detach = true; + + public: + JNIEnvDeleter() = default; + JNIEnvDeleter(JavaVM& v, bool d = true) : vm(&v), detach{d} {} + + void operator()(JNIEnv* p) const + { + if (p && detach) + { + assert(vm); + vm->DetachCurrentThread(); + } + } + }; + + using UniqueEnv = std::unique_ptr< JNIEnv, JNIEnvDeleter >; + } diff --git a/thirdparty/jni.hpp/include/jni/static_field.hpp b/thirdparty/jni.hpp/include/jni/static_field.hpp new file mode 100644 index 000000000000..137c9f6e1896 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/static_field.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace jni + { + template < class TheTag, class T > + class StaticField + { + private: + jfieldID& field; + + public: + using TagType = TheTag; + using FieldType = T; + + StaticField(JNIEnv& env, const Class& clazz, const char* name) + : field(GetStaticFieldID(env, *clazz, name, TypeSignature()())) + {} + + operator jfieldID&() const { return field; } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/static_method.hpp b/thirdparty/jni.hpp/include/jni/static_method.hpp new file mode 100644 index 000000000000..97d82741aa65 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/static_method.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace jni + { + template < class TheTag, class > + class StaticMethod; + + template < class TheTag, class R, class... Args > + class StaticMethod< TheTag, R (Args...) > + { + private: + jmethodID& method; + + public: + using TagType = TheTag; + using MethodType = R (Args...); + using ReturnType = R; + + StaticMethod(JNIEnv& env, const Class& clazz, const char* name) + : method(GetStaticMethodID(env, *clazz, name, TypeSignature()())) + {} + + operator jmethodID&() const { return method; } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/string.hpp b/thirdparty/jni.hpp/include/jni/string.hpp new file mode 100644 index 000000000000..5be4423e6f0e --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/string.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace jni + { + using String = Object; + + inline std::u16string MakeAnything(ThingToMake, JNIEnv& env, const String& string) + { + NullCheck(env, string.get()); + std::u16string result(jni::GetStringLength(env, *string), char16_t()); + jni::GetStringRegion(env, *string, 0, result); + return result; + } + + inline std::string MakeAnything(ThingToMake, JNIEnv& env, const String& string) + { + return convertUTF16ToUTF8(Make(env, string)); + } + + inline Local MakeAnything(ThingToMake, JNIEnv& env, const std::u16string& string) + { + return Local(env, &NewString(env, string)); + } + + inline Local MakeAnything(ThingToMake, JNIEnv& env, const std::string& string) + { + return Make(env, convertUTF8ToUTF16(string)); + } + } diff --git a/thirdparty/jni.hpp/include/jni/string_conversion.hpp b/thirdparty/jni.hpp/include/jni/string_conversion.hpp new file mode 100644 index 000000000000..78974ef46fc9 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/string_conversion.hpp @@ -0,0 +1,21 @@ +#pragma once + +// If you want to supply your own UTF-8 <-> UTF-16 conversion routines, create a header file +// that can be found at and will be found first in the lookup chain. + +#include +#include +#include + +namespace jni + { + inline std::u16string convertUTF8ToUTF16(const std::string& string) + { + return std::wstring_convert, char16_t>().from_bytes(string); + } + + inline std::string convertUTF16ToUTF8(const std::u16string& string) + { + return std::wstring_convert, char16_t>().to_bytes(string); + } + } diff --git a/thirdparty/jni.hpp/include/jni/tagging.hpp b/thirdparty/jni.hpp/include/jni/tagging.hpp new file mode 100644 index 000000000000..15c911684394 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/tagging.hpp @@ -0,0 +1,131 @@ +#pragma once + +#include +#include + +#include + +namespace jni + { + class ObjectBase; + template < class Tag > class Object; + template < class E, class = void > class Array; + template < class > struct TypeSignature; + + + struct ObjectTag + { + static constexpr auto Name() { return "java/lang/Object"; } + }; + + struct StringTag + { + static constexpr auto Name() { return "java/lang/String"; } + }; + + struct ClassTag + { + static constexpr auto Name() { return "java/lang/Class"; } + }; + + template < class T > + struct ArrayTag + { + static constexpr auto Name() { return TypeSignature>()(); } + }; + + + template < class Tag, class = int > + struct SuperTag + { + using Type = ObjectTag; + }; + + template < class Tag > + struct SuperTag< Tag, decltype(std::declval(), 0) > + { + using Type = typename Tag::SuperTag; + }; + + template < class Tag, class Enable = void > + struct TagTraits + { + using SuperType = Object::Type>; + using UntaggedType = jobject; + }; + + template <> + struct TagTraits< ObjectTag > + { + using SuperType = ObjectBase; + using UntaggedType = jobject; + }; + + template <> + struct TagTraits< StringTag > + { + using SuperType = Object; + using UntaggedType = jstring; + }; + + template <> + struct TagTraits< ClassTag > + { + using SuperType = Object; + using UntaggedType = jclass; + }; + + template < class E > + struct TagTraits< ArrayTag, std::enable_if_t::value> > + { + using SuperType = Object; + using UntaggedType = jarray; + }; + + template < class Tag > + struct TagTraits< ArrayTag> > + { + using SuperType = Object; + using UntaggedType = jarray; + }; + + + template < class T > + auto Tag(JNIEnv&, T primitive) + -> std::enable_if_t< IsPrimitive::value, T > + { + return primitive; + } + + template < class T, class U > + auto Tag(JNIEnv& env, U* u) + -> std::enable_if_t< !IsPrimitive::value, Input > + { + return Input(env, u); + } + + template < class T, class U > + auto Tag(JNIEnv& env, U& u) + -> std::enable_if_t< !IsPrimitive::value, Input > + { + return Input(env, &u); + } + + + template < class T > + auto Untag(T primitive) + -> std::enable_if_t< IsPrimitive::value, T > + { + return primitive; + } + + template < class T > + auto Untag(const T& t) + -> std::enable_if_t< !IsPrimitive::value, decltype(t.get()) > + { + return t.get(); + } + + template < class T > + using UntaggedType = decltype(Untag(std::declval())); + } diff --git a/thirdparty/jni.hpp/include/jni/traits.hpp b/thirdparty/jni.hpp/include/jni/traits.hpp new file mode 100644 index 000000000000..23e0b2fab57d --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/traits.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include + +#include + +namespace jni + { + template < class T > struct IsPrimitive : std::false_type {}; + template <> struct IsPrimitive< jboolean > : std::true_type {}; + template <> struct IsPrimitive< jbyte > : std::true_type {}; + template <> struct IsPrimitive< jchar > : std::true_type {}; + template <> struct IsPrimitive< jshort > : std::true_type {}; + template <> struct IsPrimitive< jint > : std::true_type {}; + template <> struct IsPrimitive< jlong > : std::true_type {}; + template <> struct IsPrimitive< jfloat > : std::true_type {}; + template <> struct IsPrimitive< jdouble > : std::true_type {}; + + template < class T > struct IsReference : std::false_type {}; + template <> struct IsReference< jobject > : std::true_type {}; + template <> struct IsReference< jclass > : std::true_type {}; + template <> struct IsReference< jstring > : std::true_type {}; + template <> struct IsReference< jthrowable > : std::true_type {}; + + template < class T > struct IsArray : std::false_type {}; + template < class E > struct IsArray< jarray > : std::true_type {}; + + template < class... > struct Conjunction : std::true_type {}; + template < class B1 > struct Conjunction : B1 {}; + template < class B1, class... Bn > struct Conjunction + : std::conditional_t, B1> {}; + + template < class T > T& AsLvalue(T&& x) { return x; } + } diff --git a/thirdparty/jni.hpp/include/jni/type_signature.hpp b/thirdparty/jni.hpp/include/jni/type_signature.hpp new file mode 100644 index 000000000000..6c8320f2f41d --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/type_signature.hpp @@ -0,0 +1,89 @@ +#pragma once + +#include +#include +#include + +namespace jni + { + template < char... chars > + struct StringLiteral + { + operator const char *() const + { + static const char result[] = { chars..., 0 }; + return result; + } + }; + + constexpr std::size_t StringLiteralLength(const char * str, std::size_t len = 0) + { + return str[0] ? StringLiteralLength(str + 1, len + 1) : len; + } + + template < class, class > + struct TagLiteralImpl; + + template < class Tag, std::size_t... Is > + struct TagLiteralImpl< Tag, std::index_sequence > + { + using Value = StringLiteral< Tag::Name()[Is]... >; + }; + + template < class Tag > + using TagLiteral = typename TagLiteralImpl< Tag, std::make_index_sequence >::Value; + + template < char... As, char... Bs > + constexpr auto Concat(const StringLiteral&, + const StringLiteral&) + { + return StringLiteral(); + } + + template < class A, class B, class... Rest > + constexpr auto Concat(const A& a, + const B& b, + const Rest&... rest) + { + return Concat(Concat(a, b), rest...); + } + + template < class > struct TypeSignature; + + template <> struct TypeSignature< jboolean > { constexpr auto operator()() const { return StringLiteral<'Z'>(); } }; + template <> struct TypeSignature< jbyte > { constexpr auto operator()() const { return StringLiteral<'B'>(); } }; + template <> struct TypeSignature< jchar > { constexpr auto operator()() const { return StringLiteral<'C'>(); } }; + template <> struct TypeSignature< jshort > { constexpr auto operator()() const { return StringLiteral<'S'>(); } }; + template <> struct TypeSignature< jint > { constexpr auto operator()() const { return StringLiteral<'I'>(); } }; + template <> struct TypeSignature< jlong > { constexpr auto operator()() const { return StringLiteral<'J'>(); } }; + template <> struct TypeSignature< jfloat > { constexpr auto operator()() const { return StringLiteral<'F'>(); } }; + template <> struct TypeSignature< jdouble > { constexpr auto operator()() const { return StringLiteral<'D'>(); } }; + template <> struct TypeSignature< void > { constexpr auto operator()() const { return StringLiteral<'V'>(); } }; + + template < class TheTag > + struct TypeSignature< Object > + { + constexpr auto operator()() const + { + return Concat(StringLiteral<'L'>(), TagLiteral(), StringLiteral<';'>()); + } + }; + + template < class E > + struct TypeSignature< Array > + { + constexpr auto operator()() const + { + return Concat(StringLiteral<'['>(), TypeSignature()()); + } + }; + + template < class R, class... Args > + struct TypeSignature< R (Args...) > + { + constexpr auto operator()() const + { + return Concat(StringLiteral<'('>(), TypeSignature()()..., StringLiteral<')'>(), TypeSignature()()); + } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/typed_methods.hpp b/thirdparty/jni.hpp/include/jni/typed_methods.hpp new file mode 100644 index 000000000000..412c2d785e33 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/typed_methods.hpp @@ -0,0 +1,147 @@ +#pragma once + +#include + +namespace jni + { + template < class R > struct TypedMethods; + + template <> struct TypedMethods< jobject* > + { + static constexpr auto CallMethod = &JNIEnv::CallObjectMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualObjectMethod; + static constexpr auto GetField = &JNIEnv::GetObjectField; + static constexpr auto SetField = &JNIEnv::SetObjectField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticObjectMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticObjectField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticObjectField; + }; + + template <> struct TypedMethods< jboolean > + { + static constexpr auto CallMethod = &JNIEnv::CallBooleanMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualBooleanMethod; + static constexpr auto GetField = &JNIEnv::GetBooleanField; + static constexpr auto SetField = &JNIEnv::SetBooleanField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticBooleanMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticBooleanField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticBooleanField; + static constexpr auto NewArray = &JNIEnv::NewBooleanArray; + static constexpr auto GetArrayElements = &JNIEnv::GetBooleanArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseBooleanArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetBooleanArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetBooleanArrayRegion; + }; + + template <> struct TypedMethods< jbyte > + { + static constexpr auto CallMethod = &JNIEnv::CallByteMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualByteMethod; + static constexpr auto GetField = &JNIEnv::GetByteField; + static constexpr auto SetField = &JNIEnv::SetByteField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticByteMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticByteField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticByteField; + static constexpr auto NewArray = &JNIEnv::NewByteArray; + static constexpr auto GetArrayElements = &JNIEnv::GetByteArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseByteArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetByteArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetByteArrayRegion; + }; + + template <> struct TypedMethods< jchar > + { + static constexpr auto CallMethod = &JNIEnv::CallCharMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualCharMethod; + static constexpr auto GetField = &JNIEnv::GetCharField; + static constexpr auto SetField = &JNIEnv::SetCharField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticCharMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticCharField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticCharField; + static constexpr auto NewArray = &JNIEnv::NewCharArray; + static constexpr auto GetArrayElements = &JNIEnv::GetCharArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseCharArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetCharArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetCharArrayRegion; + }; + + template <> struct TypedMethods< jshort > + { + static constexpr auto CallMethod = &JNIEnv::CallShortMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualShortMethod; + static constexpr auto GetField = &JNIEnv::GetShortField; + static constexpr auto SetField = &JNIEnv::SetShortField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticShortMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticShortField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticShortField; + static constexpr auto NewArray = &JNIEnv::NewShortArray; + static constexpr auto GetArrayElements = &JNIEnv::GetShortArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseShortArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetShortArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetShortArrayRegion; + }; + + template <> struct TypedMethods< jint > + { + static constexpr auto CallMethod = &JNIEnv::CallIntMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualIntMethod; + static constexpr auto GetField = &JNIEnv::GetIntField; + static constexpr auto SetField = &JNIEnv::SetIntField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticIntMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticIntField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticIntField; + static constexpr auto NewArray = &JNIEnv::NewIntArray; + static constexpr auto GetArrayElements = &JNIEnv::GetIntArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseIntArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetIntArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetIntArrayRegion; + }; + + template <> struct TypedMethods< jlong > + { + static constexpr auto CallMethod = &JNIEnv::CallLongMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualLongMethod; + static constexpr auto GetField = &JNIEnv::GetLongField; + static constexpr auto SetField = &JNIEnv::SetLongField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticLongMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticLongField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticLongField; + static constexpr auto NewArray = &JNIEnv::NewLongArray; + static constexpr auto GetArrayElements = &JNIEnv::GetLongArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseLongArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetLongArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetLongArrayRegion; + }; + + template <> struct TypedMethods< jfloat > + { + static constexpr auto CallMethod = &JNIEnv::CallFloatMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualFloatMethod; + static constexpr auto GetField = &JNIEnv::GetFloatField; + static constexpr auto SetField = &JNIEnv::SetFloatField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticFloatMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticFloatField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticFloatField; + static constexpr auto NewArray = &JNIEnv::NewFloatArray; + static constexpr auto GetArrayElements = &JNIEnv::GetFloatArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseFloatArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetFloatArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetFloatArrayRegion; + }; + + template <> struct TypedMethods< jdouble > + { + static constexpr auto CallMethod = &JNIEnv::CallDoubleMethod; + static constexpr auto CallNonvirtualMethod = &JNIEnv::CallNonvirtualDoubleMethod; + static constexpr auto GetField = &JNIEnv::GetDoubleField; + static constexpr auto SetField = &JNIEnv::SetDoubleField; + static constexpr auto CallStaticMethod = &JNIEnv::CallStaticDoubleMethod; + static constexpr auto GetStaticField = &JNIEnv::GetStaticDoubleField; + static constexpr auto SetStaticField = &JNIEnv::SetStaticDoubleField; + static constexpr auto NewArray = &JNIEnv::NewDoubleArray; + static constexpr auto GetArrayElements = &JNIEnv::GetDoubleArrayElements; + static constexpr auto ReleaseArrayElements = &JNIEnv::ReleaseDoubleArrayElements; + static constexpr auto GetArrayRegion = &JNIEnv::GetDoubleArrayRegion; + static constexpr auto SetArrayRegion = &JNIEnv::SetDoubleArrayRegion; + }; + } diff --git a/thirdparty/jni.hpp/include/jni/types.hpp b/thirdparty/jni.hpp/include/jni/types.hpp new file mode 100644 index 000000000000..035155ec03ca --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/types.hpp @@ -0,0 +1,97 @@ +#pragma once + +#include +#include +#include +#include + +#include + +namespace jni + { + // Not using bool because its size is implementation-defined, and a defined size + // is necessary for array operations. + + using ::jboolean; + + const jboolean jni_false = 0; + const jboolean jni_true = 1; + + using ::jbyte; + using ::jchar; + using ::jshort; + using ::jint; + using ::jlong; + using ::jfloat; + using ::jdouble; + + using jsize = std::size_t; + + struct jobject + { + jobject() = delete; + ~jobject() = delete; + jobject(const jobject&) = delete; + jobject& operator=(const jobject&) = delete; + }; + + struct jclass : public jobject {}; + struct jstring : public jobject {}; + struct jthrowable : public jobject {}; + + template < class T > + struct jarray : public jobject {}; + + using jobjectArray = jarray< jobject >; + using jbooleanArray = jarray< jboolean >; + using jbyteArray = jarray< jbyte >; + using jcharArray = jarray< jchar >; + using jshortArray = jarray< jshort >; + using jintArray = jarray< jint >; + using jlongArray = jarray< jlong >; + using jfloatArray = jarray< jfloat >; + using jdoubleArray = jarray< jdouble >; + + using jfieldID = std::pointer_traits< ::jfieldID >::element_type; + using jmethodID = std::pointer_traits< ::jmethodID >::element_type; + + using ::jobjectRefType; + + using ::JavaVM; + using ::JNIEnv; + + template < class T > + struct JNINativeMethod; + + template < class R, class... Args > + struct JNINativeMethod< R (JNIEnv*, jclass*, Args...) > + { + const char* name; + const char* signature; + R (*fnPtr)(JNIEnv*, jclass*, Args...); + }; + + template < class R, class... Args > + struct JNINativeMethod< R (JNIEnv*, jobject*, Args...) > + { + const char* name; + const char* signature; + R (*fnPtr)(JNIEnv*, jobject*, Args...); + }; + + enum version : jint + { + jni_version_1_1 = version(JNI_VERSION_1_1), + jni_version_1_2 = version(JNI_VERSION_1_2), + jni_version_1_4 = version(JNI_VERSION_1_4), + jni_version_1_6 = version(JNI_VERSION_1_6), + }; + + enum error : jint + { + jni_ok = error(JNI_OK), + jni_err = error(JNI_ERR), + jni_edetached = error(JNI_EDETACHED), + jni_eversion = error(JNI_EVERSION), + }; + } diff --git a/thirdparty/jni.hpp/include/jni/unique.hpp b/thirdparty/jni.hpp/include/jni/unique.hpp new file mode 100644 index 000000000000..2abf4909492f --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/unique.hpp @@ -0,0 +1,220 @@ +#pragma once + +namespace jni + { + /* + Ownership type and main interface for high-level references. Client code using the high-level + API will most often work with values of this class template, using the following aliases: + + * Global

      , a.k.a. Unique>, + * Weak

      , a.k.a. Unique>, + * Local

      , a.k.a. Unique, + + where P is Object<>, Class<>, or Array<>. + + `Unique` is an ownership class with a deletion policy that's parameterized both + by the appropriate method to delete the reference (global, weak, or local) and + (for global and weak references), a choice about how to obtain the JNIEnv that's + necessary to call the deletion method. The default policy is to delete the reference + using the same JNIEnv as was passed to the constructor, but in cases where the + object may be deleted on a different thread (commonly, the Java finalizer thread), + EnvGettingDeleter or EnvAttachingDeleter may be needed. + + Object<>, Class<>, or Array<> -- the underlying and inherited types used for + the template parameter T -- are not publicly constructible or destructible. This + is to ensure that code works only with ownership types which release the reference + at an appropriate time. Our experience has shown that this is important even for + local references; the default JVM cleanup behaviors for local references are not + enough to ensure that the local reference table never overflows. + + You may also pass or receive C++ references when you wish to borrow rather than take + ownership. For example, receiving parameters for a native method implementation should be + C++ references, reflecting the fact that JVM implementations prohibit explicitly releasing + this form of local reference. However, if you need to store or copy the reference, you + will need to use a method such as `NewGlobalRef` that copies at the reference level. + `Unique`, `Object<>`, etc., are not themselves copyable. + */ + template < class T, class D > + class Unique : public T + { + private: + D deleter; + + Unique(const Unique&) = delete; + Unique& operator=(const Unique&) = delete; + + public: + using Base = T; + using UntaggedType = typename T::UntaggedType; + + explicit Unique(std::nullptr_t ptr = nullptr) + : T(ptr), + deleter() {} + + explicit Unique(JNIEnv& env, UntaggedType* ptr) + : T(ptr), + deleter(env) {} + + Unique(Unique&& other) + : T(other.release()), + deleter(std::move(other.get_deleter())) {} + + template < class U > + Unique(Unique&& other, std::enable_if_t::value>* = nullptr) + : T(other.release()), + deleter(std::move(other.get_deleter())) {} + + ~Unique() + { + reset(); + } + + Unique& operator=(Unique&& other) + { + reset(other.release()); + deleter = std::move(other.deleter); + return *this; + } + + void reset(UntaggedType* ptr = nullptr) + { + UntaggedType* current = this->get(); + T::reset(ptr); + if (current) + { + get_deleter()(current); + } + } + + UntaggedType* release() + { + UntaggedType* current = this->get(); + T::reset(nullptr); + return current; + } + + D& get_deleter() { return deleter; } + const D& get_deleter() const { return deleter; } + }; + + + template < class T, template < RefDeletionMethod > class Deleter = DefaultRefDeleter > + using Global = Unique< T, Deleter<&JNIEnv::DeleteGlobalRef> >; + + template < class T, template < RefDeletionMethod > class Deleter = DefaultRefDeleter > + using Weak = Unique< T, Deleter<&JNIEnv::DeleteWeakGlobalRef> >; + + // Not parameterized by Deleter because local references should be short-lived enough + // that DefaultRefDeleter suffices in all cases. + template < class T > + using Local = Unique< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef> >; + + + // Special case for JNI-provided input parameters to native methods, which apparently + // should not be explicitly deleted (https://bugs.chromium.org/p/chromium/issues/detail?id=506850). + struct NullDeleter + { + NullDeleter() = default; + NullDeleter(JNIEnv&) {} + void operator()(jobject*) const {} + }; + + template < class T > + using Input = Unique< T, NullDeleter >; + + + template < class T > + struct RemoveUnique + { + using Type = T; + }; + + template < class T, class D > + struct RemoveUnique< Unique > + { + using Type = T; + }; + + template < class T > + using RemoveUniqueType = typename RemoveUnique::Type; + + + template < class T > + auto ReleaseUnique(T primitive) + { + return primitive; + } + + template < class T, class D > + auto ReleaseUnique(Unique&& t) + { + return t.release(); + } + + + template < template < RefDeletionMethod > class Deleter, class T > + auto NewGlobal(JNIEnv& env, const T& t) + { + return Global, Deleter>(env, reinterpret_cast(jni::NewGlobalRef(env, t.get()).release())); + } + + template < class T > + auto NewGlobal(JNIEnv& env, const T& t) + { + return NewGlobal(env, t); + } + + // Attempt to promote a weak reference to a strong one. Returns an empty result + // if the weak reference has expired. + // + // Beware that the semantics of JNI weak references are weaker than is typically + // desired: a JNI weak reference may still be promoted to a non-null strong reference + // even during finalization. Consider using jni::WeakReference instead. + template < template < RefDeletionMethod > class Deleter, class T, template < RefDeletionMethod > class WeakDeleter > + Global NewGlobal(JNIEnv& env, const Weak& t) + { + jobject* obj = Wrap(env.NewGlobalRef(Unwrap(t->get()))); + CheckJavaException(env); + return Global(env, obj); + } + + template < class T > + Global NewGlobal(JNIEnv& env, const Weak& t) + { + return NewGlobal(env, t); + } + + + template < template < RefDeletionMethod > class Deleter, class T > + auto NewWeak(JNIEnv& env, const T& t) + { + return Weak, Deleter>(env, reinterpret_cast(jni::NewWeakGlobalRef(env, t.get()).release())); + } + + template < class T > + auto NewWeak(JNIEnv& env, const T& t) + { + return NewWeak(env, t); + } + + + template < class T > + auto NewLocal(JNIEnv& env, const T& t) + { + return Local>(env, reinterpret_cast(jni::NewLocalRef(env, t.get()).release())); + } + + // Attempt to promote a weak reference to a strong one. Returns an empty result + // if the weak reference has expired. + // + // Beware that the semantics of JNI weak references are weaker than is typically + // desired: a JNI weak reference may still be promoted to a non-null strong reference + // even during finalization. Consider using jni::WeakReference instead. + template < class T, template < RefDeletionMethod > class WeakDeleter > + Local NewLocal(JNIEnv& env, const Weak& t) + { + jobject* obj = Wrap(env.NewLocalRef(Unwrap(t->get()))); + CheckJavaException(env); + return Local(env, obj); + } + } diff --git a/thirdparty/jni.hpp/include/jni/weak_reference.hpp b/thirdparty/jni.hpp/include/jni/weak_reference.hpp new file mode 100644 index 000000000000..2536272a3e0e --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/weak_reference.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include +#include + +namespace jni + { + struct WeakReferenceTag { static constexpr auto Name() { return "java/lang/ref/WeakReference"; } }; + + // Wraps a JNI global reference to a java.lang.ref.WeakReference, producing an ownership class + // similar to jni::Weak (JNI's weak global reference), but with more reliable promotion semantics. + // Whereas a JNI weak global reference may still be promoted to a strong reference even during + // finalization, leading to potential use-after-free errors, a WeakReference cannot. + template < class T, template < RefDeletionMethod > class Deleter = DefaultRefDeleter > + class WeakReference + { + private: + Global, Deleter> reference; + + public: + WeakReference(JNIEnv& env, const T& referent) + { + static auto& klass = Class::Singleton(env); + static auto constructor = klass.GetConstructor>(env); + reference = NewGlobal(env, klass.New(env, constructor, referent)); + } + + Local get(JNIEnv& env) + { + if (!reference) + { + return Local(); + } + + static auto& klass = Class::Singleton(env); + static auto get = klass.template GetMethod ()>(env, "get"); + return Local(env, reinterpret_cast(reference.Call(env, get).release())); + } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/wrapping.hpp b/thirdparty/jni.hpp/include/jni/wrapping.hpp new file mode 100644 index 000000000000..be2989feb2d0 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/wrapping.hpp @@ -0,0 +1,152 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include + +namespace jni + { + template < class W > struct Wrapper; + + template < class W, class U > + auto Wrap(U&& u) + { + return Wrapper().Wrap(std::forward(u)); + } + + template < class W > + auto Unwrap(W&& w) + { + return Wrapper::type>().Unwrap(std::forward(w)); + } + + template < class T > + using UnwrappedType = decltype(Unwrap(std::declval())); + + + template < class T > + struct PrimitiveTypeWrapper + { + T Wrap(T t) const { return t; } + T Unwrap(T t) const { return t; } + }; + + template <> struct Wrapper< jboolean > : PrimitiveTypeWrapper< jboolean > {}; + template <> struct Wrapper< jbyte > : PrimitiveTypeWrapper< jbyte > {}; + template <> struct Wrapper< jchar > : PrimitiveTypeWrapper< jchar > {}; + template <> struct Wrapper< jshort > : PrimitiveTypeWrapper< jshort > {}; + template <> struct Wrapper< jint > : PrimitiveTypeWrapper< jint > {}; + template <> struct Wrapper< jlong > : PrimitiveTypeWrapper< jlong > {}; + template <> struct Wrapper< jfloat > : PrimitiveTypeWrapper< jfloat > {}; + template <> struct Wrapper< jdouble > : PrimitiveTypeWrapper< jdouble > {}; + + + template <> + struct Wrapper + { + const char16_t* Wrap(const jchar* s) const { return reinterpret_cast(s); } + const jchar* Unwrap(const char16_t* s) const { return reinterpret_cast(s); } + }; + + template <> + struct Wrapper + { + char16_t* Wrap(jchar* s) const { return reinterpret_cast(s); } + jchar* Unwrap(char16_t* s) const { return reinterpret_cast(s); } + }; + + + template <> + struct Wrapper + { + jsize Wrap(::jsize s) const + { + if (s < 0) + throw std::range_error("::jsize < 0"); + return static_cast(s); + } + + ::jsize Unwrap(jsize s) const + { + if (s > std::numeric_limits<::jsize>::max()) + throw std::range_error("jsize > max"); + return static_cast<::jsize>(s); + } + }; + + + template < class W, class U > + struct ReferenceTypeWrapper + { + W* Wrap(U u) const { return reinterpret_cast(u); } + U Unwrap(W* w) const { return reinterpret_cast(w); } + }; + + template <> struct Wrapper< jobject* > : ReferenceTypeWrapper< jobject, ::jobject > {}; + template <> struct Wrapper< jclass* > : ReferenceTypeWrapper< jclass, ::jclass > {}; + template <> struct Wrapper< jstring* > : ReferenceTypeWrapper< jstring, ::jstring > {}; + template <> struct Wrapper< jthrowable* > : ReferenceTypeWrapper< jthrowable, ::jthrowable > {}; + + template <> struct Wrapper< jarray< jobject >* > : ReferenceTypeWrapper< jarray< jobject >, ::jobjectArray > {}; + template <> struct Wrapper< jarray< jboolean >* > : ReferenceTypeWrapper< jarray< jboolean >, ::jbooleanArray > {}; + template <> struct Wrapper< jarray< jbyte >* > : ReferenceTypeWrapper< jarray< jbyte >, ::jbyteArray > {}; + template <> struct Wrapper< jarray< jchar >* > : ReferenceTypeWrapper< jarray< jchar >, ::jcharArray > {}; + template <> struct Wrapper< jarray< jshort >* > : ReferenceTypeWrapper< jarray< jshort >, ::jshortArray > {}; + template <> struct Wrapper< jarray< jint >* > : ReferenceTypeWrapper< jarray< jint >, ::jintArray > {}; + template <> struct Wrapper< jarray< jlong >* > : ReferenceTypeWrapper< jarray< jlong >, ::jlongArray > {}; + template <> struct Wrapper< jarray< jfloat >* > : ReferenceTypeWrapper< jarray< jfloat >, ::jfloatArray > {}; + template <> struct Wrapper< jarray< jdouble >* > : ReferenceTypeWrapper< jarray< jdouble >, ::jdoubleArray > {}; + + template <> struct Wrapper< jfieldID* > : ReferenceTypeWrapper< jfieldID, ::jfieldID > {}; + template <> struct Wrapper< jmethodID* > : ReferenceTypeWrapper< jmethodID, ::jmethodID > {}; + + + // Allow references to be unwrapped to pointers to the underlying type, but not the + // reverse, because dereferences should be explicit, with null checks where necessary. + + template < class W, class U > + struct ReferenceTypeUnwrapper + { + U Unwrap(W& w) const { return reinterpret_cast(&w); } + }; + + template <> struct Wrapper< jobject > : ReferenceTypeUnwrapper< jobject, ::jobject > {}; + template <> struct Wrapper< jclass > : ReferenceTypeUnwrapper< jclass, ::jclass > {}; + template <> struct Wrapper< jstring > : ReferenceTypeUnwrapper< jstring, ::jstring > {}; + template <> struct Wrapper< jthrowable > : ReferenceTypeUnwrapper< jthrowable, ::jthrowable > {}; + + template <> struct Wrapper< jarray< jobject > > : ReferenceTypeUnwrapper< jarray< jobject >, ::jobjectArray > {}; + template <> struct Wrapper< jarray< jboolean > > : ReferenceTypeUnwrapper< jarray< jboolean >, ::jbooleanArray > {}; + template <> struct Wrapper< jarray< jbyte > > : ReferenceTypeUnwrapper< jarray< jbyte >, ::jbyteArray > {}; + template <> struct Wrapper< jarray< jchar > > : ReferenceTypeUnwrapper< jarray< jchar >, ::jcharArray > {}; + template <> struct Wrapper< jarray< jshort > > : ReferenceTypeUnwrapper< jarray< jshort >, ::jshortArray > {}; + template <> struct Wrapper< jarray< jint > > : ReferenceTypeUnwrapper< jarray< jint >, ::jintArray > {}; + template <> struct Wrapper< jarray< jlong > > : ReferenceTypeUnwrapper< jarray< jlong >, ::jlongArray > {}; + template <> struct Wrapper< jarray< jfloat > > : ReferenceTypeUnwrapper< jarray< jfloat >, ::jfloatArray > {}; + template <> struct Wrapper< jarray< jdouble > > : ReferenceTypeUnwrapper< jarray< jdouble >, ::jdoubleArray > {}; + + template <> struct Wrapper< jfieldID > : ReferenceTypeUnwrapper< jfieldID, ::jfieldID > {}; + template <> struct Wrapper< jmethodID > : ReferenceTypeUnwrapper< jmethodID, ::jmethodID > {}; + + + template < class T, class R, class... Args > + struct Wrapper< JNINativeMethod< R (JNIEnv*, T*, Args...) > > + { + ::JNINativeMethod Unwrap(JNINativeMethod method) const + { + return { const_cast(method.name), const_cast(method.signature), reinterpret_cast(method.fnPtr) }; + } + }; + + + template <> + struct Wrapper + { + version Wrap(::jint v) const { return static_cast(v); } + ::jint Unwrap(version v) const { return static_cast<::jint>(v); } + }; + } From 96d6cd79651b0c3efc889064e738c458d0cac2f9 Mon Sep 17 00:00:00 2001 From: deal Date: Wed, 29 Dec 2021 16:22:07 +0800 Subject: [PATCH 38/58] Update JNITest.cpp --- tests/cpp-tests/Classes/JNITest/JNITest.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/cpp-tests/Classes/JNITest/JNITest.cpp b/tests/cpp-tests/Classes/JNITest/JNITest.cpp index 1fc516853cf7..feba30d292cf 100644 --- a/tests/cpp-tests/Classes/JNITest/JNITest.cpp +++ b/tests/cpp-tests/Classes/JNITest/JNITest.cpp @@ -1,7 +1,8 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. + Copyright (c) 2021 Bytedance inc. - http://www.cocos2d-x.org + https://adxeproject.github.io/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -47,7 +48,7 @@ JNITest::JNITest() checkLabel->setPosition(VisibleRect::center()); addChild(checkLabel); - const std::string classPath = "org.cocos2dx.cpp_tests.JNITest"; + const char* classPath = "org.cocos2dx.cpp_tests.JNITest"; JniHelper::callStaticVoidMethod(classPath, "voidMethod1"); From 1941a43dc9bc8599776884e461e9783a2d7265bc Mon Sep 17 00:00:00 2001 From: deal Date: Wed, 29 Dec 2021 16:40:30 +0800 Subject: [PATCH 39/58] Update javaactivity-android.cpp --- cocos/platform/android/javaactivity-android.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cocos/platform/android/javaactivity-android.cpp b/cocos/platform/android/javaactivity-android.cpp index de0e05490501..cceffd07fc13 100644 --- a/cocos/platform/android/javaactivity-android.cpp +++ b/cocos/platform/android/javaactivity-android.cpp @@ -1,8 +1,9 @@ /**************************************************************************** Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. +Copyright (c) Bytedance Inc. -http://www.cocos2d-x.org +https://adxeproject.github.io/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -74,8 +75,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { JniHelper::setJavaVM(vm); - const char* signature = jni::TypeSignature{}(); - cocos_android_app_init(JniHelper::getEnv()); return JNI_VERSION_1_4; From c81bb1b4c41690036bb58873d190f246d26bb5a8 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 19:27:27 +0800 Subject: [PATCH 40/58] jni.hpp for android only --- thirdparty/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 2a85d27d8b69..655eb63d834e 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -68,9 +68,14 @@ add_library(thirdparty STATIC empty.cpp) # header only libs target_include_directories(thirdparty INTERFACE "robin-map/include" - INTERFACE "jni.hpp/include" ) +if (ANDROID) + target_include_directories(thirdparty + INTERFACE "jni.hpp/include" + ) +endif() + if(MACOSX OR ANDROID OR WINDOWS) add_subdirectory(zlib) target_link_libraries(thirdparty From b5b4b1e5d89aac573a5257fb57e27de1645e2604 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 11:31:28 +0000 Subject: [PATCH 41/58] Committing clang-format changes --- cocos/network/CCDownloader-curl.cpp | 2 +- cocos/platform/CCFileUtils.cpp | 6 ++-- .../platform/android/CCFileUtils-android.cpp | 3 +- .../Java_org_cocos2dx_lib_Cocos2dxHelper.cpp | 3 +- cocos/platform/android/jni/JniHelper.cpp | 4 +-- cocos/platform/android/jni/JniHelper.h | 29 +++++++++++++++---- cocos/ui/UIWebView/UIWebViewImpl-android.cpp | 4 +-- extensions/cocostudio/CCActionNode.cpp | 2 +- .../Classes/ChipmunkTestBed/demo/Bench.c | 2 +- .../Classes/Physics3DTest/Physics3DTest.cpp | 6 ++-- .../SpriteFrameCacheTest.cpp | 17 ++++++----- tests/cpp-tests/Classes/UnitTest/UnitTest.cpp | 4 +-- .../UserDefaultTest/UserDefaultTest.cpp | 19 +++++++----- 13 files changed, 60 insertions(+), 41 deletions(-) diff --git a/cocos/network/CCDownloader-curl.cpp b/cocos/network/CCDownloader-curl.cpp index 7829de035df4..7a98042eb60c 100644 --- a/cocos/network/CCDownloader-curl.cpp +++ b/cocos/network/CCDownloader-curl.cpp @@ -573,7 +573,7 @@ class DownloaderCURL::Impl : public std::enable_shared_from_thissecond; - _curDict = &curVal.asValueMap(); + ValueMap* preDict = _dictStack.top(); + auto& curVal = hlookup::set_item(*preDict, _curKey, Value(ValueMap()))->second; + _curDict = &curVal.asValueMap(); } // record the dict state diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index 89678cb87ead..e9ca5b5639a5 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -423,8 +423,7 @@ std::string FileUtilsAndroid::getNativeWritableAbsolutePath() const { // Fix for Nexus 10 (Android 4.2 multi-user environment) // the path is retrieved through Java Context.getCacheDir() method - std::string path = - JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper", "getCocos2dxWritablePath"); + std::string path = JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper", "getCocos2dxWritablePath"); if (!path.empty()) path.append("/"); diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp index 945873ac6d78..85bba0fe9097 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp @@ -142,8 +142,7 @@ int getObbAssetFileDescriptorJNI(const char* path, int64_t* startOffset, int64_t JniMethodInfo methodInfo; int fd = 0; - if (JniHelper::getStaticMethodInfo(methodInfo, className, "getObbAssetFileDescriptor", - "(Ljava/lang/String;)[J")) + if (JniHelper::getStaticMethodInfo(methodInfo, className, "getObbAssetFileDescriptor", "(Ljava/lang/String;)[J")) { jstring stringArg = methodInfo.env->NewStringUTF(path); jlongArray newArray = diff --git a/cocos/platform/android/jni/JniHelper.cpp b/cocos/platform/android/jni/JniHelper.cpp index 9580ce3c8c60..66dbf8e90a74 100644 --- a/cocos/platform/android/jni/JniHelper.cpp +++ b/cocos/platform/android/jni/JniHelper.cpp @@ -345,8 +345,8 @@ void JniHelper::deleteLocalRefs(JNIEnv* env, LocalRefMapType& localRefs) void JniHelper::reportError(const char* className, const char* methodName, const char* signature) { - LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className, - methodName, signature); + LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className, methodName, + signature); } } // namespace cocos2d diff --git a/cocos/platform/android/jni/JniHelper.h b/cocos/platform/android/jni/JniHelper.h index 46f98761ef85..60fa77e86d6d 100644 --- a/cocos/platform/android/jni/JniHelper.h +++ b/cocos/platform/android/jni/JniHelper.h @@ -37,12 +37,29 @@ THE SOFTWARE. #include "math/Vec3.h" #include "jni/jni.hpp" -namespace jni { - template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; - template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; - template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; - template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; -} +namespace jni +{ +template <> +struct TypeSignature +{ + constexpr auto operator()() const { return TypeSignature{}(); } +}; +template <> +struct TypeSignature +{ + constexpr auto operator()() const { return TypeSignature{}(); } +}; +template <> +struct TypeSignature +{ + constexpr auto operator()() const { return TypeSignature{}(); } +}; +template <> +struct TypeSignature +{ + constexpr auto operator()() const { return TypeSignature{}(); } +}; +} // namespace jni NS_CC_BEGIN diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp index 13df2a5546ad..b5ec6cac0f9c 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp @@ -219,8 +219,8 @@ void WebViewImpl::loadData(const Data& data, std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, dataString, MIMEType, - encoding, baseURL); + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, dataString, MIMEType, encoding, + baseURL); } void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) diff --git a/extensions/cocostudio/CCActionNode.cpp b/extensions/cocostudio/CCActionNode.cpp index 71d7ea643461..b514296e3e45 100644 --- a/extensions/cocostudio/CCActionNode.cpp +++ b/extensions/cocostudio/CCActionNode.cpp @@ -495,7 +495,7 @@ Spawn* ActionNode::refreshActionProperty() // if (frame->getFrameIndex() > 0) // { // DelayTime* cDelayTime = - //DelayTime::create(frame->getFrameIndex() + // DelayTime::create(frame->getFrameIndex() //* getUnitTime()); if (cDelayTime != nullptr) // cSequenceArray.pushBack(static_cast(cDelayTime)); // } diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c index e869164b9e2a..d85a8d6fe1f4 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c @@ -44,7 +44,7 @@ static void add_circle(cpSpace* space, int index, cpFloat radius) cpFloat mass = radius * radius / 25.0f; cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); // cpBody *body = cpSpaceAddBody(space, cpBodyInit(&bodies[i], mass, cpMomentForCircle(mass, 0.0f, radius, - //cpvzero))); + // cpvzero))); cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); diff --git a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp index 3e3703407da7..b440a48d5ed9 100644 --- a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp +++ b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp @@ -738,9 +738,9 @@ bool Physics3DCollisionCallbackDemo::init() // CCLOG("Collision Point Num: %d", ci.collisionPointList.size()); // for (auto &iter : ci.collisionPointList){ // CCLOG("Collision Position On A: (%.2f, %.2f, %.2f)", iter.worldPositionOnA.x, iter.worldPositionOnA.y, - //iter.worldPositionOnA.z); CCLOG("Collision Position On B: (%.2f, %.2f, %.2f)", iter.worldPositionOnB.x, - //iter.worldPositionOnB.y, iter.worldPositionOnB.z); CCLOG("Collision Normal On B: (%.2f, %.2f, %.2f)", - //iter.worldNormalOnB.x, iter.worldNormalOnB.y, iter.worldNormalOnB.z); + // iter.worldPositionOnA.z); CCLOG("Collision Position On B: (%.2f, %.2f, %.2f)", + // iter.worldPositionOnB.x, iter.worldPositionOnB.y, iter.worldPositionOnB.z); CCLOG("Collision Normal + // On B: (%.2f, %.2f, %.2f)", iter.worldNormalOnB.x, iter.worldNormalOnB.y, iter.worldNormalOnB.z); // } // CCLOG("------------BoxB Collision Info------------"); }); diff --git a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp index 8500905a8a62..7013c6d961e6 100644 --- a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp +++ b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp @@ -86,8 +86,8 @@ void SpriteFrameCachePixelFormatTest::loadSpriteFrames(std::string_view file, #ifndef CC_USE_METAL CC_ASSERT(texture->getPixelFormat() == expectedFormat); #endif - const std::string textureInfo = - StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), texture->getStringForFormat(), memorySize); + const std::string textureInfo = StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), + texture->getStringForFormat(), memorySize); infoLabel->setString(textureInfo); SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(file); @@ -495,16 +495,17 @@ void SpriteFrameCacheJsonAtlasTest::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file, GenericJsonArraySpriteSheetLoader::FORMAT); - SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("sprite_frames_test/grossini.png"sv); - Texture2D* texture = spriteFrame->getTexture(); - const ssize_t bitsPerKB = 8 * 1024; - const double memorySize = 1.0 * texture->getBitsPerPixelForFormat() * texture->getContentSizeInPixels().width * + SpriteFrame* spriteFrame = + SpriteFrameCache::getInstance()->getSpriteFrameByName("sprite_frames_test/grossini.png"sv); + Texture2D* texture = spriteFrame->getTexture(); + const ssize_t bitsPerKB = 8 * 1024; + const double memorySize = 1.0 * texture->getBitsPerPixelForFormat() * texture->getContentSizeInPixels().width * texture->getContentSizeInPixels().height / bitsPerKB; #ifndef CC_USE_METAL CC_ASSERT(texture->getPixelFormat() == expectedFormat); #endif - const std::string textureInfo = - StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), texture->getStringForFormat(), memorySize); + const std::string textureInfo = StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), + texture->getStringForFormat(), memorySize); infoLabel->setString(textureInfo); SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(file); diff --git a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp index 68fc720f33c9..f255c6c44bc4 100644 --- a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp +++ b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp @@ -518,7 +518,7 @@ void TemplateMapTest::onEnter() // clear StringMap mapForClear = createMap(); - auto mapForClearCopy = mapForClear; + auto mapForClearCopy = mapForClear; mapForClear.clear(); for (const auto& e : mapForClearCopy) @@ -540,7 +540,7 @@ void TemplateMapTest::onEnter() // Self assignment StringMap mapForSelfAssign = createMap(); - mapForSelfAssign = mapForSelfAssign; + mapForSelfAssign = mapForSelfAssign; CCASSERT(mapForSelfAssign.size() == 20, "mapForSelfAssign's size is 20."); for (const auto& e : mapForSelfAssign) diff --git a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp index 02536423e608..8d9c62980220 100644 --- a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp +++ b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp @@ -103,8 +103,9 @@ UserDefaultTest::UserDefaultTest() void UserDefaultTest::doTest() { std::string strVal{this->_label->getString()}; - this->_label->setString(strVal.append("\n" - "********************** init value ***********************")); + this->_label->setString( + strVal.append("\n" + "********************** init value ***********************")); // set default value @@ -127,9 +128,10 @@ void UserDefaultTest::doTest() // CCUserDefault::getInstance()->flush(); - strVal = this->_label->getString(); - this->_label->setString(strVal.append("\n" - "********************** after change value ***********************")); + strVal = this->_label->getString(); + this->_label->setString( + strVal.append("\n" + "********************** after change value ***********************")); // change the value @@ -152,9 +154,10 @@ void UserDefaultTest::doTest() // logData("float_data"); // logData("double_data"); - strVal = this->_label->getString(); - this->_label->setString(strVal.append("\n" - "********************** after delete value ***********************")); + strVal = this->_label->getString(); + this->_label->setString( + strVal.append("\n" + "********************** after delete value ***********************")); UserDefault::getInstance()->deleteValueForKey("string"); UserDefault::getInstance()->deleteValueForKey("integer"); From f95ed06187e8c92de3fa610d77d4717807ceb18f Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 09:48:39 +0800 Subject: [PATCH 42/58] Improve string_view for some file --- extensions/cocostudio/ActionTimeline/CCFrame.h | 8 ++++---- .../lua-bindings/auto/lua_cocos2dx_studio_auto.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/cocostudio/ActionTimeline/CCFrame.h b/extensions/cocostudio/ActionTimeline/CCFrame.h index 0c6d450b844a..715972ca554d 100644 --- a/extensions/cocostudio/ActionTimeline/CCFrame.h +++ b/extensions/cocostudio/ActionTimeline/CCFrame.h @@ -119,8 +119,8 @@ class CCS_DLL TextureFrame : public Frame virtual void onEnter(Frame* nextFrame, int currentFrameIndex) override; virtual Frame* clone() override; - inline void setTextureName(std::string textureName) { _textureName = textureName; } - inline std::string getTextureName() const { return _textureName; } + inline void setTextureName(std::string_view textureName) { _textureName = textureName; } + inline std::string_view getTextureName() const { return _textureName; } protected: cocos2d::Sprite* _sprite; @@ -366,8 +366,8 @@ class CCS_DLL EventFrame : public Frame virtual void onEnter(Frame* nextFrame, int currentFrameIndex) override; virtual Frame* clone() override; - inline void setEvent(std::string event) { _event = event; } - inline std::string getEvent() const { return _event; } + inline void setEvent(std::string_view event) { _event = event; } + inline std::string_view getEvent() const { return _event; } protected: std::string _event; diff --git a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp index 5ddb33717abf..1887d9bfb8c1 100644 --- a/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp +++ b/extensions/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp @@ -17029,8 +17029,8 @@ int lua_cocos2dx_studio_TextureFrame_getTextureName(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_TextureFrame_getTextureName'", nullptr); return 0; } - std::string ret = cobj->getTextureName(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getTextureName(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.TextureFrame:getTextureName",argc, 0); @@ -19783,8 +19783,8 @@ int lua_cocos2dx_studio_EventFrame_getEvent(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_EventFrame_getEvent'", nullptr); return 0; } - std::string ret = cobj->getEvent(); - lua_pushlstring(tolua_S,ret.c_str(),ret.length()); + std::string_view ret = cobj->getEvent(); + lua_pushlstring(tolua_S,ret.data(),ret.length()); return 1; } luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.EventFrame:getEvent",argc, 0); From 683aeaf57bd77971800c6c540650497c3414f085 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 10:02:32 +0800 Subject: [PATCH 43/58] Optional windows webview2 with `ADXE_ENABLE_WEBVIEW2` --- cocos/CMakeLists.txt | 27 ++++++++++++-------- cocos/ui/CMakeLists.txt | 29 ++++++++++++++-------- cocos/ui/UIWebView/UIWebViewImpl-win32.cpp | 2 +- cocos/ui/UIWebView/UIWebViewImpl-win32.h | 2 +- 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/cocos/CMakeLists.txt b/cocos/CMakeLists.txt index db93507d5151..a25fe697daa9 100644 --- a/cocos/CMakeLists.txt +++ b/cocos/CMakeLists.txt @@ -40,6 +40,10 @@ if (NOT DEFINED CC_COMPAT_GL) set(CC_COMPAT_GL FALSE CACHE INTERNAL "Enabling CC_COMPAT_GL" ) endif() +if (NOT DEFINED ADXE_ENABLE_WEBVIEW2) + set(ADXE_ENABLE_WEBVIEW2 TRUE CACHE INTERNAL "Enabling windows webview2" ) +endif() + project(adxe_libs) if(XCODE) @@ -161,17 +165,20 @@ if(WINDOWS) # compile c as c++. needed for precompiled header set_source_files_properties(${COCOS_SPINE_SRC} base/ccFPSImages.c PROPERTIES LANGUAGE CXX) - find_program(NUGET_EXE NAMES nuget - PATHS ${ADXE_ROOT_PATH}/tools/external/nuget) - - if(NOT NUGET_EXE) - message("NUGET.EXE not found.") - message(FATAL_ERROR "Please run setup.py again to download NUGET.EXE, and run CMake again.") + if(ADXE_ENABLE_WEBVIEW2) + find_program(NUGET_EXE NAMES nuget + PATHS ${ADXE_ROOT_PATH}/tools/external/nuget) + + if(NOT NUGET_EXE) + message("NUGET.EXE not found.") + message(FATAL_ERROR "Please run setup.py again to download NUGET.EXE, and run CMake again.") + endif() + + exec_program(${NUGET_EXE} + ARGS install "Microsoft.Web.WebView2" -Version 1.0.992.28 -ExcludeVersion -OutputDirectory ${CMAKE_BINARY_DIR}/packages) + target_link_libraries(${ADXE_CORE_LIB} ${CMAKE_BINARY_DIR}/packages/Microsoft.Web.WebView2/build/native/Microsoft.Web.WebView2.targets) + target_compile_definitions(${ADXE_CORE_LIB} PUBLIC ADXE_HAVE_WEBVIEW2) endif() - - exec_program(${NUGET_EXE} - ARGS install "Microsoft.Web.WebView2" -Version 1.0.992.28 -ExcludeVersion -OutputDirectory ${CMAKE_BINARY_DIR}/packages) - target_link_libraries(${ADXE_CORE_LIB} ${CMAKE_BINARY_DIR}/packages/Microsoft.Web.WebView2/build/native/Microsoft.Web.WebView2.targets) endif() # engine extensions diff --git a/cocos/ui/CMakeLists.txt b/cocos/ui/CMakeLists.txt index 607206af8638..af648011fef2 100644 --- a/cocos/ui/CMakeLists.txt +++ b/cocos/ui/CMakeLists.txt @@ -1,14 +1,23 @@ if(WINDOWS) - set(COCOS_UI_SPECIFIC_HEADER - ui/UIEditBox/UIEditBoxImpl-win32.h - ui/UIWebView/UIWebViewImpl-win32.h - ui/UIWebView/UIWebView.h - ) - set(COCOS_UI_SPECIFIC_SRC - ui/UIEditBox/UIEditBoxImpl-win32.cpp - ui/UIWebView/UIWebViewImpl-win32.cpp - ui/UIWebView/UIWebView.cpp - ) + if(ADXE_ENABLE_WEBVIEW2) + set(COCOS_UI_SPECIFIC_HEADER + ui/UIEditBox/UIEditBoxImpl-win32.h + ui/UIWebView/UIWebViewImpl-win32.h + ui/UIWebView/UIWebView.h + ) + set(COCOS_UI_SPECIFIC_SRC + ui/UIEditBox/UIEditBoxImpl-win32.cpp + ui/UIWebView/UIWebViewImpl-win32.cpp + ui/UIWebView/UIWebView.cpp + ) + else() + set(COCOS_UI_SPECIFIC_HEADER + ui/UIEditBox/UIEditBoxImpl-win32.h + ) + set(COCOS_UI_SPECIFIC_SRC + ui/UIEditBox/UIEditBoxImpl-win32.cpp + ) + endif() elseif(APPLE) if(MACOSX) set(COCOS_UI_SPECIFIC_HEADER diff --git a/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp b/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp index aea7857f45b6..4ec42ecfb08d 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-win32.cpp @@ -24,7 +24,7 @@ THE SOFTWARE. ****************************************************************************/ -#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 +#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 && defined(ADXE_HAVE_WEBVIEW2) # include "UIWebViewImpl-win32.h" # include "UIWebView.h" diff --git a/cocos/ui/UIWebView/UIWebViewImpl-win32.h b/cocos/ui/UIWebView/UIWebViewImpl-win32.h index 5dca559a57e0..4f56727d1756 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-win32.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-win32.h @@ -28,7 +28,7 @@ #include "platform/CCPlatformConfig.h" -#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 +#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 && defined(ADXE_HAVE_WEBVIEW2) # include # include "CCStdC.h" From 23d207aacecba39a892d30dd00d36a06da912e3b Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 12:53:37 +0800 Subject: [PATCH 44/58] Update lua bindings config files --- tools/tolua/cocos2dx.ini | 2 +- tools/tolua/cocos2dx_3d.ini | 2 +- tools/tolua/cocos2dx_audioengine.ini | 2 +- tools/tolua/cocos2dx_backend.ini | 2 +- tools/tolua/cocos2dx_controller.ini | 2 +- tools/tolua/cocos2dx_csloader.ini | 2 +- tools/tolua/cocos2dx_extension.ini | 2 +- tools/tolua/cocos2dx_navmesh.ini | 2 +- tools/tolua/cocos2dx_physics.ini | 2 +- tools/tolua/cocos2dx_physics3d.ini | 2 +- tools/tolua/cocos2dx_spine.ini | 2 +- tools/tolua/cocos2dx_studio.ini | 2 +- tools/tolua/cocos2dx_ui.ini | 2 +- tools/tolua/cocos2dx_video.ini | 2 +- tools/tolua/cocos2dx_webview.ini | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/tolua/cocos2dx.ini b/tools/tolua/cocos2dx.ini index 5923e39bae87..6b589fec1f60 100644 --- a/tools/tolua/cocos2dx.ini +++ b/tools/tolua/cocos2dx.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/robin-map/include -I%(cocosdir)s/thirdparty/jni.hpp/include cocos_flags = -DANDROID cxxgenerator_headers = diff --git a/tools/tolua/cocos2dx_3d.ini b/tools/tolua/cocos2dx_3d.ini index cddb3d46052a..6b0b7984b534 100644 --- a/tools/tolua/cocos2dx_3d.ini +++ b/tools/tolua/cocos2dx_3d.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID cxxgenerator_headers = diff --git a/tools/tolua/cocos2dx_audioengine.ini b/tools/tolua/cocos2dx_audioengine.ini index 461aded23d60..30444d4ed3f4 100644 --- a/tools/tolua/cocos2dx_audioengine.ini +++ b/tools/tolua/cocos2dx_audioengine.ini @@ -16,7 +16,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_backend.ini b/tools/tolua/cocos2dx_backend.ini index 68ab0017735c..e667d2415340 100644 --- a/tools/tolua/cocos2dx_backend.ini +++ b/tools/tolua/cocos2dx_backend.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/extensions -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID cxxgenerator_headers = diff --git a/tools/tolua/cocos2dx_controller.ini b/tools/tolua/cocos2dx_controller.ini index 85b2f2c7eff7..d33ed315d793 100644 --- a/tools/tolua/cocos2dx_controller.ini +++ b/tools/tolua/cocos2dx_controller.ini @@ -16,7 +16,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/base -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/base -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID cxxgenerator_headers = diff --git a/tools/tolua/cocos2dx_csloader.ini b/tools/tolua/cocos2dx_csloader.ini index 04f9dfef6985..46c2684735d7 100644 --- a/tools/tolua/cocos2dx_csloader.ini +++ b/tools/tolua/cocos2dx_csloader.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_extension.ini b/tools/tolua/cocos2dx_extension.ini index d2d4e327c8b0..08236ee45481 100644 --- a/tools/tolua/cocos2dx_extension.ini +++ b/tools/tolua/cocos2dx_extension.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/rapidjson -I%(cocosdir)s/thirdparty/box2d/include +cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/rapidjson -I%(cocosdir)s/thirdparty/box2d/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_navmesh.ini b/tools/tolua/cocos2dx_navmesh.ini index 4fba8ce7836e..56c1bb7d8a4b 100644 --- a/tools/tolua/cocos2dx_navmesh.ini +++ b/tools/tolua/cocos2dx_navmesh.ini @@ -18,7 +18,7 @@ clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -DCC_USE_NAVME win32_clang_flags = -U __SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/recast/Detour -I%(cocosdir)s/thirdparty/recast/DetourCrowd -I%(cocosdir)s/thirdparty/recast/DetourTileCache -I%(cocosdir)s/thirdparty/recast/DebugUtils -I%(cocosdir)s/thirdparty/recast/fastlz -I%(cocosdir)s/thirdparty/recast/Recast -I%(cocosdir)s/thirdparty/lua/luajit/include -I%(cocosdir)s/thirdparty/lua/tolua -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/scripting/lua-bindings/manual +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include -I%(cocosdir)s/thirdparty/recast/Detour -I%(cocosdir)s/thirdparty/recast/DetourCrowd -I%(cocosdir)s/thirdparty/recast/DetourTileCache -I%(cocosdir)s/thirdparty/recast/DebugUtils -I%(cocosdir)s/thirdparty/recast/fastlz -I%(cocosdir)s/thirdparty/recast/Recast -I%(cocosdir)s/thirdparty/lua/luajit/include -I%(cocosdir)s/thirdparty/lua/tolua -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/scripting/lua-bindings/manual cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_physics.ini b/tools/tolua/cocos2dx_physics.ini index ffa08072222c..a2daf30d7023 100644 --- a/tools/tolua/cocos2dx_physics.ini +++ b/tools/tolua/cocos2dx_physics.ini @@ -16,7 +16,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_physics3d.ini b/tools/tolua/cocos2dx_physics3d.ini index b7f67b215baa..52399f7de19a 100644 --- a/tools/tolua/cocos2dx_physics3d.ini +++ b/tools/tolua/cocos2dx_physics3d.ini @@ -18,7 +18,7 @@ clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -DCC_ENABLE_BU win32_clang_flags = -U __SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/bullet +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include -I%(cocosdir)s/thirdparty/bullet cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_spine.ini b/tools/tolua/cocos2dx_spine.ini index dc90471b63f2..a7f065c04a21 100644 --- a/tools/tolua/cocos2dx_spine.ini +++ b/tools/tolua/cocos2dx_spine.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/spine -I%(cocosdir)s/extensions/spine/runtime/include -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/spine -I%(cocosdir)s/extensions/spine/runtime/include -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_studio.ini b/tools/tolua/cocos2dx_studio.ini index d1e144b069aa..18535d669141 100644 --- a/tools/tolua/cocos2dx_studio.ini +++ b/tools/tolua/cocos2dx_studio.ini @@ -17,7 +17,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/thirdparty -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty/lua/luajit/include -I%(cocosdir)s/thirdparty/lua/tolua -I%(cocosdir)s/extensions/scripting/lua-bindings/manual +cocos_headers = -I%(cocosdir)s/thirdparty -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/extensions/cocostudio -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty/robin-map/include -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/lua/luajit/include -I%(cocosdir)s/thirdparty/lua/tolua -I%(cocosdir)s/extensions/scripting/lua-bindings/manual cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_ui.ini b/tools/tolua/cocos2dx_ui.ini index b8c18794ff76..1597ab3cfc17 100644 --- a/tools/tolua/cocos2dx_ui.ini +++ b/tools/tolua/cocos2dx_ui.ini @@ -17,7 +17,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_video.ini b/tools/tolua/cocos2dx_video.ini index 66f61a8ddcfc..1f95fa36a4d3 100644 --- a/tools/tolua/cocos2dx_video.ini +++ b/tools/tolua/cocos2dx_video.ini @@ -14,7 +14,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID diff --git a/tools/tolua/cocos2dx_webview.ini b/tools/tolua/cocos2dx_webview.ini index bfa0b1765b6d..cb251c6b1b9d 100644 --- a/tools/tolua/cocos2dx_webview.ini +++ b/tools/tolua/cocos2dx_webview.ini @@ -13,7 +13,7 @@ android_flags = -target armv7-none-linux-androideabi -D_LIBCPP_DISABLE_VISIBILIT clang_headers = clang_flags = -nostdinc -x c++ -std=c++17 -fsigned-char -U__SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/extensions -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/thirdparty -I%(cocosdir)s/thirdparty/jni.hpp/include -I%(cocosdir)s/thirdparty/robin-map/include cocos_flags = -DANDROID From 107dde34221a96d5bd8c2df2b55302793c4f7601 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 14:59:57 +0800 Subject: [PATCH 45/58] Use c++17 stdfs implement listFiles instead tinydir --- cocos/platform/CCFileUtils.cpp | 187 +++-- cocos/platform/win32/CCFileUtils-win32.cpp | 90 --- cocos/platform/win32/CCFileUtils-win32.h | 16 - thirdparty/README.md | 5 - thirdparty/tinydir/COPYING | 26 - thirdparty/tinydir/package.json | 17 - thirdparty/tinydir/tinydir.h | 831 --------------------- 7 files changed, 88 insertions(+), 1084 deletions(-) delete mode 100644 thirdparty/tinydir/COPYING delete mode 100644 thirdparty/tinydir/package.json delete mode 100644 thirdparty/tinydir/tinydir.h diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 7014802332bc..b4b93198309d 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -29,6 +29,7 @@ THE SOFTWARE. #include #include +#include #include "base/CCData.h" #include "base/ccMacros.h" @@ -43,12 +44,31 @@ THE SOFTWARE. # include "unzip.h" #endif #include +#include + +#if defined(_WIN32) +#include "ntcvt/ntcvt.hpp" +#endif #include "pugixml/pugixml.hpp" #define DECLARE_GUARD (void)0 +namespace stdfs = std::filesystem; + NS_CC_BEGIN +#if defined(_WIN32) +inline stdfs::path toFspath(const std::string_view& pathSV) +{ + return stdfs::path{ntcvt::from_chars(pathSV)}; +} +#else +inline stdfs::path toFspath(const std::string_view& pathSV) +{ + return stdfs::path{pathSV}; +} +#endif + // Implement DictMaker typedef enum @@ -1133,6 +1153,74 @@ std::unique_ptr FileUtils::openFileStream(std::string_view filePath, return nullptr; } +std::vector FileUtils::listFiles(std::string_view dirPath) const +{ + const auto fullPath = fullPathForDirectory(dirPath); + auto fsPath = toFspath(fullPath); + if (!std::filesystem::is_directory(fsPath)) + { + return {}; + } + std::vector files = {}; + for (const auto& entry : std::filesystem::directory_iterator(fsPath)) + { + const auto isDir = entry.is_directory(); + if (isDir || entry.is_regular_file()) + { +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +# ifdef __cpp_lib_char8_t + std::u8string u8path = entry.path().u8string(); + std::string pathStr = {u8path.begin(), u8path.end()}; +# else + std::string pathStr = entry.path().u8string(); +# endif + std::replace(pathStr.begin(), pathStr.end(), '\\', '/'); +#else + std::string pathStr = entry.path().string(); +#endif + if (isDir) + { + pathStr += '/'; + } + files.emplace_back(std::move(pathStr)); + } + } + return files; +} + +void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const +{ + const auto fullPath = fullPathForDirectory(dirPath); + auto fsPath = toFspath(fullPath); + if (!std::filesystem::is_directory(fsPath)) + { + return; + } + for (const auto& entry : std::filesystem::recursive_directory_iterator(fsPath)) + { + const auto isDir = entry.is_directory(); + if (isDir || entry.is_regular_file()) + { +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +# ifdef __cpp_lib_char8_t + std::u8string u8path = entry.path().u8string(); + std::string pathStr = {u8path.begin(), u8path.end()}; +# else + std::string pathStr = entry.path().u8string(); +# endif + std::replace(pathStr.begin(), pathStr.end(), '\\', '/'); +#else + std::string pathStr = entry.path().string(); +#endif + if (isDir) + { + pathStr += '/'; + } + files->emplace_back(std::move(pathStr)); + } + } +} + #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) // windows os implement should override in platform specific FileUtiles class bool FileUtils::isDirectoryExistInternal(std::string_view dirPath) const @@ -1177,20 +1265,7 @@ int64_t FileUtils::getFileSize(std::string_view filepath) const return 0; } -std::vector FileUtils::listFiles(std::string_view dirPath) const -{ - CCASSERT(false, "FileUtils not support listFiles"); - return std::vector(); -} - -void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const -{ - CCASSERT(false, "FileUtils not support listFilesRecursively"); - return; -} - #else -# include "tinydir/tinydir.h" // default implements for unix like os # include # include @@ -1383,92 +1458,6 @@ int64_t FileUtils::getFileSize(std::string_view filepath) const } } -std::vector FileUtils::listFiles(std::string_view dirPath) const -{ - std::vector files; - std::string fullpath = fullPathForDirectory(dirPath); - if (!fullpath.empty() && isDirectoryExist(fullpath)) - { - tinydir_dir dir; - std::string fullpathstr = fullpath; - - if (tinydir_open(&dir, &fullpathstr[0]) != -1) - { - while (dir.has_next) - { - tinydir_file file; - if (tinydir_readfile(&dir, &file) == -1) - { - // Error getting file - break; - } - std::string filepath = file.path; - - if (strcmp(file.name, ".") != 0 && strcmp(file.name, "..") != 0) - { - if (file.is_dir) - filepath.push_back('/'); - - files.push_back(std::move(filepath)); - } - - if (tinydir_next(&dir) == -1) - { - // Error getting next file - break; - } - } - } - tinydir_close(&dir); - } - return files; -} - -void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const -{ - std::string fullpath = fullPathForDirectory(dirPath); - if (isDirectoryExist(fullpath)) - { - tinydir_dir dir; - std::string fullpathstr = fullpath; - - if (tinydir_open(&dir, &fullpathstr[0]) != -1) - { - while (dir.has_next) - { - tinydir_file file; - if (tinydir_readfile(&dir, &file) == -1) - { - // Error getting file - break; - } - - if (strcmp(file.name, ".") != 0 && strcmp(file.name, "..") != 0) - { - std::string filepath = file.path; - if (file.is_dir) - { - filepath.push_back('/'); - files->push_back(filepath); - listFilesRecursively(filepath, files); - } - else - { - files->push_back(std::move(filepath)); - } - } - - if (tinydir_next(&dir) == -1) - { - // Error getting next file - break; - } - } - } - tinydir_close(&dir); - } -} - #endif ////////////////////////////////////////////////////////////////////////// diff --git a/cocos/platform/win32/CCFileUtils-win32.cpp b/cocos/platform/win32/CCFileUtils-win32.cpp index 06ff99cb0641..3b70dd413b66 100644 --- a/cocos/platform/win32/CCFileUtils-win32.cpp +++ b/cocos/platform/win32/CCFileUtils-win32.cpp @@ -26,7 +26,6 @@ THE SOFTWARE. ****************************************************************************/ #include "platform/win32/CCFileUtils-win32.h" #include "platform/CCCommon.h" -#include "tinydir/tinydir.h" #include #include #include @@ -230,52 +229,6 @@ std::string FileUtilsWin32::getFullPathForFilenameWithinDirectory(std::string_vi return FileUtils::getFullPathForFilenameWithinDirectory(unixDirectory, unixFilename); } -void FileUtilsWin32::listFilesRecursively(std::string_view dirPath, std::vector* files) const -{ - std::string fullpath = fullPathForDirectory(dirPath); - if (isDirectoryExist(fullpath)) - { - tinydir_dir dir; - std::wstring fullpathstr = ntcvt::from_chars(fullpath); - - if (tinydir_open(&dir, &fullpathstr[0]) != -1) - { - while (dir.has_next) - { - tinydir_file file; - if (tinydir_readfile(&dir, &file) == -1) - { - // Error getting file - break; - } - std::string fileName = ntcvt::from_chars(file.name); - - if (fileName != "." && fileName != "..") - { - std::string filepath = ntcvt::from_chars(file.path); - if (file.is_dir) - { - filepath.push_back('/'); - files->push_back(filepath); - listFilesRecursively(filepath, files); - } - else - { - files->push_back(std::move(filepath)); - } - } - - if (tinydir_next(&dir) == -1) - { - // Error getting next file - break; - } - } - } - tinydir_close(&dir); - } -} - int64_t FileUtilsWin32::getFileSize(std::string_view filepath) const { if (filepath.empty()) @@ -287,49 +240,6 @@ int64_t FileUtilsWin32::getFileSize(std::string_view filepath) const return -1; } -std::vector FileUtilsWin32::listFiles(std::string_view dirPath) const -{ - std::string fullpath = fullPathForDirectory(dirPath); - std::vector files; - if (isDirectoryExist(fullpath)) - { - tinydir_dir dir; - std::wstring fullpathstr = ntcvt::from_chars(fullpath); - - if (tinydir_open(&dir, &fullpathstr[0]) != -1) - { - while (dir.has_next) - { - tinydir_file file; - if (tinydir_readfile(&dir, &file) == -1) - { - // Error getting file - break; - } - - std::string fileName = ntcvt::from_chars(file.name); - if (fileName != "." && fileName != "..") - { - std::string filepath = ntcvt::from_chars(file.path); - if (file.is_dir) - { - filepath.push_back('/'); - } - files.push_back(std::move(filepath)); - } - - if (tinydir_next(&dir) == -1) - { - // Error getting next file - break; - } - } - } - tinydir_close(&dir); - } - return files; -} - std::string FileUtilsWin32::getWritablePath() const { DECLARE_GUARD; diff --git a/cocos/platform/win32/CCFileUtils-win32.h b/cocos/platform/win32/CCFileUtils-win32.h index 48973fd365e2..d68f8c54aa93 100644 --- a/cocos/platform/win32/CCFileUtils-win32.h +++ b/cocos/platform/win32/CCFileUtils-win32.h @@ -134,22 +134,6 @@ class CC_DLL FileUtilsWin32 : public FileUtils virtual std::string getFullPathForFilenameWithinDirectory(std::string_view directory, std::string_view filename) const override; - /** - * List all files in a directory. - * - * @param dirPath The path of the directory, it could be a relative or an absolute path. - * @return File paths in a string vector - */ - virtual std::vector listFiles(std::string_view dirPath) const override; - - /** - * List all files recursively in a directory. - * - * @param dirPath The path of the directory, it could be a relative or an absolute path. - * @return File paths in a string vector - */ - virtual void listFilesRecursively(std::string_view dirPath, std::vector* files) const override; - private: std::wstring_view _defaultResRootPathUtf16; }; diff --git a/thirdparty/README.md b/thirdparty/README.md index 79cd1af021c6..21a8f86053aa 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -198,11 +198,6 @@ - Version: 2.27 - License: MIT -## tinydir -- Upstream: https://github.com/cxong/tinydir -- Version: git 1.2.4-ec6bff2 (168) -- License: BSD-2-Clause - ## unzip (minizip-1.2) - Upstream: https://github.com/simdsoft/mz12 - Version: 1.2 with bugfixs & improvements diff --git a/thirdparty/tinydir/COPYING b/thirdparty/tinydir/COPYING deleted file mode 100644 index 0d313296b498..000000000000 --- a/thirdparty/tinydir/COPYING +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2013-2016, tinydir authors: -- Cong Xu -- Lautis Sun -- Baudouin Feildel -- Andargor -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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER 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. diff --git a/thirdparty/tinydir/package.json b/thirdparty/tinydir/package.json deleted file mode 100644 index 5ad2e9ef289f..000000000000 --- a/thirdparty/tinydir/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "tinydir", - "description": "Lightweight, portable and easy to integrate C directory and file reader", - "license": "BSD-2-Clause", - "keywords": [ - "dir", - "directory", - "file", - "reader", - "filesystem" - ], - "src": [ - "tinydir.h" - ], - "version": "1.2.4", - "repo": "cxong/tinydir" -} diff --git a/thirdparty/tinydir/tinydir.h b/thirdparty/tinydir/tinydir.h deleted file mode 100644 index e08eb84ec97b..000000000000 --- a/thirdparty/tinydir/tinydir.h +++ /dev/null @@ -1,831 +0,0 @@ -/* -Copyright (c) 2013-2019, tinydir authors: -- Cong Xu -- Lautis Sun -- Baudouin Feildel -- Andargor -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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER 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. -*/ -#ifndef TINYDIR_H -#define TINYDIR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#if ((defined _UNICODE) && !(defined UNICODE)) -#define UNICODE -#endif - -#if ((defined UNICODE) && !(defined _UNICODE)) -#define _UNICODE -#endif - -#include -#include -#include -#ifdef _MSC_VER -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# include -# pragma warning(push) -# pragma warning (disable : 4996) -#else -# include -# include -# include -# include -#endif -#ifdef __MINGW32__ -# include -#endif - - -/* types */ - -/* Windows UNICODE wide character support */ -#if defined _MSC_VER || defined __MINGW32__ -# define _tinydir_char_t TCHAR -# define TINYDIR_STRING(s) _TEXT(s) -# define _tinydir_strlen _tcslen -# define _tinydir_strcpy _tcscpy -# define _tinydir_strcat _tcscat -# define _tinydir_strcmp _tcscmp -# define _tinydir_strrchr _tcsrchr -# define _tinydir_strncmp _tcsncmp -#else -# define _tinydir_char_t char -# define TINYDIR_STRING(s) s -# define _tinydir_strlen strlen -# define _tinydir_strcpy strcpy -# define _tinydir_strcat strcat -# define _tinydir_strcmp strcmp -# define _tinydir_strrchr strrchr -# define _tinydir_strncmp strncmp -#endif - -#if (defined _MSC_VER || defined __MINGW32__) -# include -# define _TINYDIR_PATH_MAX MAX_PATH -#elif defined __linux__ -# include -# ifdef PATH_MAX -# define _TINYDIR_PATH_MAX PATH_MAX -# endif -#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) -# include -# if defined(BSD) -# include -# ifdef PATH_MAX -# define _TINYDIR_PATH_MAX PATH_MAX -# endif -# endif -#endif - -#ifndef _TINYDIR_PATH_MAX -#define _TINYDIR_PATH_MAX 4096 -#endif - -#ifdef _MSC_VER -/* extra chars for the "\\*" mask */ -# define _TINYDIR_PATH_EXTRA 2 -#else -# define _TINYDIR_PATH_EXTRA 0 -#endif - -#define _TINYDIR_FILENAME_MAX 256 - -#if (defined _MSC_VER || defined __MINGW32__) -#define _TINYDIR_DRIVE_MAX 3 -#endif - -#ifdef _MSC_VER -# define _TINYDIR_FUNC static __inline -#elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# define _TINYDIR_FUNC static __inline__ -#else -# define _TINYDIR_FUNC static inline -#endif - -/* readdir_r usage; define TINYDIR_USE_READDIR_R to use it (if supported) */ -#ifdef TINYDIR_USE_READDIR_R - -/* readdir_r is a POSIX-only function, and may not be available under various - * environments/settings, e.g. MinGW. Use readdir fallback */ -#if _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE ||\ - _POSIX_SOURCE -# define _TINYDIR_HAS_READDIR_R -#endif -#if _POSIX_C_SOURCE >= 200112L -# define _TINYDIR_HAS_FPATHCONF -# include -#endif -#if _BSD_SOURCE || _SVID_SOURCE || \ - (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700) -# define _TINYDIR_HAS_DIRFD -# include -#endif -#if defined _TINYDIR_HAS_FPATHCONF && defined _TINYDIR_HAS_DIRFD &&\ - defined _PC_NAME_MAX -# define _TINYDIR_USE_FPATHCONF -#endif -#if defined __MINGW32__ || !defined _TINYDIR_HAS_READDIR_R ||\ - !(defined _TINYDIR_USE_FPATHCONF || defined NAME_MAX) -# define _TINYDIR_USE_READDIR -#endif - -/* Use readdir by default */ -#else -# define _TINYDIR_USE_READDIR -#endif - -/* MINGW32 has two versions of dirent, ASCII and UNICODE*/ -#ifndef _MSC_VER -#if (defined __MINGW32__) && (defined _UNICODE) -#define _TINYDIR_DIR _WDIR -#define _tinydir_dirent _wdirent -#define _tinydir_opendir _wopendir -#define _tinydir_readdir _wreaddir -#define _tinydir_closedir _wclosedir -#else -#define _TINYDIR_DIR DIR -#define _tinydir_dirent dirent -#define _tinydir_opendir opendir -#define _tinydir_readdir readdir -#define _tinydir_closedir closedir -#endif -#endif - -/* Allow user to use a custom allocator by defining _TINYDIR_MALLOC and _TINYDIR_FREE. */ -#if defined(_TINYDIR_MALLOC) && defined(_TINYDIR_FREE) -#elif !defined(_TINYDIR_MALLOC) && !defined(_TINYDIR_FREE) -#else -#error "Either define both alloc and free or none of them!" -#endif - -#if !defined(_TINYDIR_MALLOC) - #define _TINYDIR_MALLOC(_size) malloc(_size) - #define _TINYDIR_FREE(_ptr) free(_ptr) -#endif /* !defined(_TINYDIR_MALLOC) */ - -typedef struct tinydir_file -{ - _tinydir_char_t path[_TINYDIR_PATH_MAX]; - _tinydir_char_t name[_TINYDIR_FILENAME_MAX]; - _tinydir_char_t *extension; - int is_dir; - int is_reg; - -#ifndef _MSC_VER -#ifdef __MINGW32__ - struct _stat _s; -#else - struct stat _s; -#endif -#endif -} tinydir_file; - -typedef struct tinydir_dir -{ - _tinydir_char_t path[_TINYDIR_PATH_MAX]; - int has_next; - size_t n_files; - - tinydir_file *_files; -#ifdef _MSC_VER - HANDLE _h; - WIN32_FIND_DATA _f; -#else - _TINYDIR_DIR *_d; - struct _tinydir_dirent *_e; -#ifndef _TINYDIR_USE_READDIR - struct _tinydir_dirent *_ep; -#endif -#endif -} tinydir_dir; - - -/* declarations */ - -_TINYDIR_FUNC -int tinydir_open(tinydir_dir *dir, const _tinydir_char_t *path); -_TINYDIR_FUNC -int tinydir_open_sorted(tinydir_dir *dir, const _tinydir_char_t *path); -_TINYDIR_FUNC -void tinydir_close(tinydir_dir *dir); - -_TINYDIR_FUNC -int tinydir_next(tinydir_dir *dir); -_TINYDIR_FUNC -int tinydir_readfile(const tinydir_dir *dir, tinydir_file *file); -_TINYDIR_FUNC -int tinydir_readfile_n(const tinydir_dir *dir, tinydir_file *file, size_t i); -_TINYDIR_FUNC -int tinydir_open_subdir_n(tinydir_dir *dir, size_t i); - -_TINYDIR_FUNC -int tinydir_file_open(tinydir_file *file, const _tinydir_char_t *path); -_TINYDIR_FUNC -void _tinydir_get_ext(tinydir_file *file); -_TINYDIR_FUNC -int _tinydir_file_cmp(const void *a, const void *b); -#ifndef _MSC_VER -#ifndef _TINYDIR_USE_READDIR -_TINYDIR_FUNC -size_t _tinydir_dirent_buf_size(_TINYDIR_DIR *dirp); -#endif -#endif - - -/* definitions*/ - -_TINYDIR_FUNC -int tinydir_open(tinydir_dir *dir, const _tinydir_char_t *path) -{ -#ifndef _MSC_VER -#ifndef _TINYDIR_USE_READDIR - int error; - int size; /* using int size */ -#endif -#else - _tinydir_char_t path_buf[_TINYDIR_PATH_MAX]; -#endif - _tinydir_char_t *pathp; - - if (dir == NULL || path == NULL || _tinydir_strlen(path) == 0) - { - errno = EINVAL; - return -1; - } - if (_tinydir_strlen(path) + _TINYDIR_PATH_EXTRA >= _TINYDIR_PATH_MAX) - { - errno = ENAMETOOLONG; - return -1; - } - - /* initialise dir */ - dir->_files = NULL; -#ifdef _MSC_VER - dir->_h = INVALID_HANDLE_VALUE; -#else - dir->_d = NULL; -#ifndef _TINYDIR_USE_READDIR - dir->_ep = NULL; -#endif -#endif - tinydir_close(dir); - - _tinydir_strcpy(dir->path, path); - /* Remove trailing slashes */ - pathp = &dir->path[_tinydir_strlen(dir->path) - 1]; - while (pathp != dir->path && (*pathp == TINYDIR_STRING('\\') || *pathp == TINYDIR_STRING('/'))) - { - *pathp = TINYDIR_STRING('\0'); - pathp++; - } -#ifdef _MSC_VER - _tinydir_strcpy(path_buf, dir->path); - _tinydir_strcat(path_buf, TINYDIR_STRING("\\*")); -#if (defined WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) - dir->_h = FindFirstFileEx(path_buf, FindExInfoStandard, &dir->_f, FindExSearchNameMatch, NULL, 0); -#else - dir->_h = FindFirstFile(path_buf, &dir->_f); -#endif - if (dir->_h == INVALID_HANDLE_VALUE) - { - errno = ENOENT; -#else - dir->_d = _tinydir_opendir(path); - if (dir->_d == NULL) - { -#endif - goto bail; - } - - /* read first file */ - dir->has_next = 1; -#ifndef _MSC_VER -#ifdef _TINYDIR_USE_READDIR - dir->_e = _tinydir_readdir(dir->_d); -#else - /* allocate dirent buffer for readdir_r */ - size = _tinydir_dirent_buf_size(dir->_d); /* conversion to int */ - if (size == -1) return -1; - dir->_ep = (struct _tinydir_dirent*)_TINYDIR_MALLOC(size); - if (dir->_ep == NULL) return -1; - - error = readdir_r(dir->_d, dir->_ep, &dir->_e); - if (error != 0) return -1; -#endif - if (dir->_e == NULL) - { - dir->has_next = 0; - } -#endif - - return 0; - -bail: - tinydir_close(dir); - return -1; -} - -_TINYDIR_FUNC -int tinydir_open_sorted(tinydir_dir *dir, const _tinydir_char_t *path) -{ - /* Count the number of files first, to pre-allocate the files array */ - size_t n_files = 0; - if (tinydir_open(dir, path) == -1) - { - return -1; - } - while (dir->has_next) - { - n_files++; - if (tinydir_next(dir) == -1) - { - goto bail; - } - } - tinydir_close(dir); - - if (n_files == 0 || tinydir_open(dir, path) == -1) - { - return -1; - } - - dir->n_files = 0; - dir->_files = (tinydir_file *)_TINYDIR_MALLOC(sizeof *dir->_files * n_files); - if (dir->_files == NULL) - { - goto bail; - } - while (dir->has_next) - { - tinydir_file *p_file; - dir->n_files++; - - p_file = &dir->_files[dir->n_files - 1]; - if (tinydir_readfile(dir, p_file) == -1) - { - goto bail; - } - - if (tinydir_next(dir) == -1) - { - goto bail; - } - - /* Just in case the number of files has changed between the first and - second reads, terminate without writing into unallocated memory */ - if (dir->n_files == n_files) - { - break; - } - } - - qsort(dir->_files, dir->n_files, sizeof(tinydir_file), _tinydir_file_cmp); - - return 0; - -bail: - tinydir_close(dir); - return -1; -} - -_TINYDIR_FUNC -void tinydir_close(tinydir_dir *dir) -{ - if (dir == NULL) - { - return; - } - - memset(dir->path, 0, sizeof(dir->path)); - dir->has_next = 0; - dir->n_files = 0; - _TINYDIR_FREE(dir->_files); - dir->_files = NULL; -#ifdef _MSC_VER - if (dir->_h != INVALID_HANDLE_VALUE) - { - FindClose(dir->_h); - } - dir->_h = INVALID_HANDLE_VALUE; -#else - if (dir->_d) - { - _tinydir_closedir(dir->_d); - } - dir->_d = NULL; - dir->_e = NULL; -#ifndef _TINYDIR_USE_READDIR - _TINYDIR_FREE(dir->_ep); - dir->_ep = NULL; -#endif -#endif -} - -_TINYDIR_FUNC -int tinydir_next(tinydir_dir *dir) -{ - if (dir == NULL) - { - errno = EINVAL; - return -1; - } - if (!dir->has_next) - { - errno = ENOENT; - return -1; - } - -#ifdef _MSC_VER - if (FindNextFile(dir->_h, &dir->_f) == 0) -#else -#ifdef _TINYDIR_USE_READDIR - dir->_e = _tinydir_readdir(dir->_d); -#else - if (dir->_ep == NULL) - { - return -1; - } - if (readdir_r(dir->_d, dir->_ep, &dir->_e) != 0) - { - return -1; - } -#endif - if (dir->_e == NULL) -#endif - { - dir->has_next = 0; -#ifdef _MSC_VER - if (GetLastError() != ERROR_SUCCESS && - GetLastError() != ERROR_NO_MORE_FILES) - { - tinydir_close(dir); - errno = EIO; - return -1; - } -#endif - } - - return 0; -} - -_TINYDIR_FUNC -int tinydir_readfile(const tinydir_dir *dir, tinydir_file *file) -{ - const _tinydir_char_t *filename; - if (dir == NULL || file == NULL) - { - errno = EINVAL; - return -1; - } -#ifdef _MSC_VER - if (dir->_h == INVALID_HANDLE_VALUE) -#else - if (dir->_e == NULL) -#endif - { - errno = ENOENT; - return -1; - } - filename = -#ifdef _MSC_VER - dir->_f.cFileName; -#else - dir->_e->d_name; -#endif - if (_tinydir_strlen(dir->path) + - _tinydir_strlen(filename) + 1 + _TINYDIR_PATH_EXTRA >= - _TINYDIR_PATH_MAX) - { - /* the path for the file will be too long */ - errno = ENAMETOOLONG; - return -1; - } - if (_tinydir_strlen(filename) >= _TINYDIR_FILENAME_MAX) - { - errno = ENAMETOOLONG; - return -1; - } - - _tinydir_strcpy(file->path, dir->path); - if (_tinydir_strcmp(dir->path, TINYDIR_STRING("/")) != 0) - _tinydir_strcat(file->path, TINYDIR_STRING("/")); - _tinydir_strcpy(file->name, filename); - _tinydir_strcat(file->path, filename); -#ifndef _MSC_VER -#ifdef __MINGW32__ - if (_tstat( -#elif (defined _BSD_SOURCE) || (defined _DEFAULT_SOURCE) \ - || ((defined _XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)) \ - || ((defined _POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) - if (lstat( -#else - if (stat( -#endif - file->path, &file->_s) == -1) - { - return -1; - } -#endif - _tinydir_get_ext(file); - - file->is_dir = -#ifdef _MSC_VER - !!(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); -#else - S_ISDIR(file->_s.st_mode); -#endif - file->is_reg = -#ifdef _MSC_VER - !!(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) || - ( - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) && - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_ENCRYPTED) && -#ifdef FILE_ATTRIBUTE_INTEGRITY_STREAM - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_INTEGRITY_STREAM) && -#endif -#ifdef FILE_ATTRIBUTE_NO_SCRUB_DATA - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_NO_SCRUB_DATA) && -#endif - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_OFFLINE) && - !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)); -#else - S_ISREG(file->_s.st_mode); -#endif - - return 0; -} - -_TINYDIR_FUNC -int tinydir_readfile_n(const tinydir_dir *dir, tinydir_file *file, size_t i) -{ - if (dir == NULL || file == NULL) - { - errno = EINVAL; - return -1; - } - if (i >= dir->n_files) - { - errno = ENOENT; - return -1; - } - - memcpy(file, &dir->_files[i], sizeof(tinydir_file)); - _tinydir_get_ext(file); - - return 0; -} - -_TINYDIR_FUNC -int tinydir_open_subdir_n(tinydir_dir *dir, size_t i) -{ - _tinydir_char_t path[_TINYDIR_PATH_MAX]; - if (dir == NULL) - { - errno = EINVAL; - return -1; - } - if (i >= dir->n_files || !dir->_files[i].is_dir) - { - errno = ENOENT; - return -1; - } - - _tinydir_strcpy(path, dir->_files[i].path); - tinydir_close(dir); - if (tinydir_open_sorted(dir, path) == -1) - { - return -1; - } - - return 0; -} - -/* Open a single file given its path */ -_TINYDIR_FUNC -int tinydir_file_open(tinydir_file *file, const _tinydir_char_t *path) -{ - tinydir_dir dir; - int result = 0; - int found = 0; - _tinydir_char_t dir_name_buf[_TINYDIR_PATH_MAX]; - _tinydir_char_t file_name_buf[_TINYDIR_FILENAME_MAX]; - _tinydir_char_t *dir_name; - _tinydir_char_t *base_name; -#if (defined _MSC_VER || defined __MINGW32__) - _tinydir_char_t drive_buf[_TINYDIR_PATH_MAX]; - _tinydir_char_t ext_buf[_TINYDIR_FILENAME_MAX]; -#endif - - if (file == NULL || path == NULL || _tinydir_strlen(path) == 0) - { - errno = EINVAL; - return -1; - } - if (_tinydir_strlen(path) + _TINYDIR_PATH_EXTRA >= _TINYDIR_PATH_MAX) - { - errno = ENAMETOOLONG; - return -1; - } - - /* Get the parent path */ -#if (defined _MSC_VER || defined __MINGW32__) -#if ((defined _MSC_VER) && (_MSC_VER >= 1400)) - errno = _tsplitpath_s( - path, - drive_buf, _TINYDIR_DRIVE_MAX, - dir_name_buf, _TINYDIR_FILENAME_MAX, - file_name_buf, _TINYDIR_FILENAME_MAX, - ext_buf, _TINYDIR_FILENAME_MAX); -#else - _tsplitpath( - path, - drive_buf, - dir_name_buf, - file_name_buf, - ext_buf); -#endif - - if (errno) - { - return -1; - } - -/* _splitpath_s not work fine with only filename and widechar support */ -#ifdef _UNICODE - if (drive_buf[0] == L'\xFEFE') - drive_buf[0] = '\0'; - if (dir_name_buf[0] == L'\xFEFE') - dir_name_buf[0] = '\0'; -#endif - - /* Emulate the behavior of dirname by returning "." for dir name if it's - empty */ - if (drive_buf[0] == '\0' && dir_name_buf[0] == '\0') - { - _tinydir_strcpy(dir_name_buf, TINYDIR_STRING(".")); - } - /* Concatenate the drive letter and dir name to form full dir name */ - _tinydir_strcat(drive_buf, dir_name_buf); - dir_name = drive_buf; - /* Concatenate the file name and extension to form base name */ - _tinydir_strcat(file_name_buf, ext_buf); - base_name = file_name_buf; -#else - _tinydir_strcpy(dir_name_buf, path); - dir_name = dirname(dir_name_buf); - _tinydir_strcpy(file_name_buf, path); - base_name = basename(file_name_buf); -#endif - - /* Special case: if the path is a root dir, open the parent dir as the file */ -#if (defined _MSC_VER || defined __MINGW32__) - if (_tinydir_strlen(base_name) == 0) -#else - if ((_tinydir_strcmp(base_name, TINYDIR_STRING("/"))) == 0) -#endif - { - memset(file, 0, sizeof * file); - file->is_dir = 1; - file->is_reg = 0; - _tinydir_strcpy(file->path, dir_name); - file->extension = file->path + _tinydir_strlen(file->path); - return 0; - } - - /* Open the parent directory */ - if (tinydir_open(&dir, dir_name) == -1) - { - return -1; - } - - /* Read through the parent directory and look for the file */ - while (dir.has_next) - { - if (tinydir_readfile(&dir, file) == -1) - { - result = -1; - goto bail; - } - if (_tinydir_strcmp(file->name, base_name) == 0) - { - /* File found */ - found = 1; - break; - } - tinydir_next(&dir); - } - if (!found) - { - result = -1; - errno = ENOENT; - } - -bail: - tinydir_close(&dir); - return result; -} - -_TINYDIR_FUNC -void _tinydir_get_ext(tinydir_file *file) -{ - _tinydir_char_t *period = _tinydir_strrchr(file->name, TINYDIR_STRING('.')); - if (period == NULL) - { - file->extension = &(file->name[_tinydir_strlen(file->name)]); - } - else - { - file->extension = period + 1; - } -} - -_TINYDIR_FUNC -int _tinydir_file_cmp(const void *a, const void *b) -{ - const tinydir_file *fa = (const tinydir_file *)a; - const tinydir_file *fb = (const tinydir_file *)b; - if (fa->is_dir != fb->is_dir) - { - return -(fa->is_dir - fb->is_dir); - } - return _tinydir_strncmp(fa->name, fb->name, _TINYDIR_FILENAME_MAX); -} - -#ifndef _MSC_VER -#ifndef _TINYDIR_USE_READDIR -/* -The following authored by Ben Hutchings -from https://womble.decadent.org.uk/readdir_r-advisory.html -*/ -/* Calculate the required buffer size (in bytes) for directory * -* entries read from the given directory handle. Return -1 if this * -* this cannot be done. * -* * -* This code does not trust values of NAME_MAX that are less than * -* 255, since some systems (including at least HP-UX) incorrectly * -* define it to be a smaller value. */ -_TINYDIR_FUNC -size_t _tinydir_dirent_buf_size(_TINYDIR_DIR *dirp) -{ - long name_max; - size_t name_end; - /* parameter may be unused */ - (void)dirp; - -#if defined _TINYDIR_USE_FPATHCONF - name_max = fpathconf(dirfd(dirp), _PC_NAME_MAX); - if (name_max == -1) -#if defined(NAME_MAX) - name_max = (NAME_MAX > 255) ? NAME_MAX : 255; -#else - return (size_t)(-1); -#endif -#elif defined(NAME_MAX) - name_max = (NAME_MAX > 255) ? NAME_MAX : 255; -#else -#error "buffer size for readdir_r cannot be determined" -#endif - name_end = (size_t)offsetof(struct _tinydir_dirent, d_name) + name_max + 1; - return (name_end > sizeof(struct _tinydir_dirent) ? - name_end : sizeof(struct _tinydir_dirent)); -} -#endif -#endif - -#ifdef __cplusplus -} -#endif - -# if defined (_MSC_VER) -# pragma warning(pop) -# endif - -#endif From 22d24b816b4ddede7a6afaf698fb005d75ca6e0a Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 15:08:45 +0800 Subject: [PATCH 46/58] [FileUtils] performOperationOffthread needs deep copy std::string_view as std::string --- cocos/platform/CCFileUtils.cpp | 66 ++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index b4b93198309d..5533b3ee6a21 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -47,7 +47,7 @@ THE SOFTWARE. #include #if defined(_WIN32) -#include "ntcvt/ntcvt.hpp" +# include "ntcvt/ntcvt.hpp" #endif #include "pugixml/pugixml.hpp" @@ -490,8 +490,8 @@ void FileUtils::writeStringToFile(std::string dataStr, std::function callback) const { performOperationOffthread( - [fullPath](std::string_view dataStrIn) -> bool { - return FileUtils::getInstance()->writeStringToFile(dataStrIn, fullPath); + [path = std::string{fullPath}](std::string_view dataStrIn) -> bool { + return FileUtils::getInstance()->writeStringToFile(dataStrIn, path); }, std::move(callback), std::move(dataStr)); } @@ -504,7 +504,9 @@ bool FileUtils::writeDataToFile(const Data& data, std::string_view fullPath) con void FileUtils::writeDataToFile(Data data, std::string_view fullPath, std::function callback) const { performOperationOffthread( - [fullPath](const Data& dataIn) -> bool { return FileUtils::getInstance()->writeDataToFile(dataIn, fullPath); }, + [path = std::string{fullPath}](const Data& dataIn) -> bool { + return FileUtils::getInstance()->writeDataToFile(dataIn, path); + }, std::move(callback), std::move(data)); } @@ -554,7 +556,7 @@ void FileUtils::getStringFromFile(std::string_view path, std::function std::string { return FileUtils::getInstance()->getStringFromFile(fullPath); }, + [path = std::string{fullPath}]() -> std::string { return FileUtils::getInstance()->getStringFromFile(path); }, std::move(callback)); } @@ -568,8 +570,9 @@ Data FileUtils::getDataFromFile(std::string_view filename) const void FileUtils::getDataFromFile(std::string_view filename, std::function callback) const { auto fullPath = fullPathForFilename(filename); - performOperationOffthread([fullPath]() -> Data { return FileUtils::getInstance()->getDataFromFile(fullPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{fullPath}]() -> Data { return FileUtils::getInstance()->getDataFromFile(path); }, + std::move(callback)); } FileUtils::Status FileUtils::getContents(std::string_view filename, ResizableBuffer* buffer) const @@ -614,8 +617,8 @@ void FileUtils::writeValueMapToFile(ValueMap dict, std::string_view fullPath, st { performOperationOffthread( - [fullPath](const ValueMap& dictIn) -> bool { - return FileUtils::getInstance()->writeValueMapToFile(dictIn, fullPath); + [path = std::string{fullPath}](const ValueMap& dictIn) -> bool { + return FileUtils::getInstance()->writeValueMapToFile(dictIn, path); }, std::move(callback), std::move(dict)); } @@ -625,8 +628,8 @@ void FileUtils::writeValueVectorToFile(ValueVector vecData, std::function callback) const { performOperationOffthread( - [fullPath](const ValueVector& vecDataIn) -> bool { - return FileUtils::getInstance()->writeValueVectorToFile(vecDataIn, fullPath); + [path = std::string{fullPath}](const ValueVector& vecDataIn) -> bool { + return FileUtils::getInstance()->writeValueVectorToFile(vecDataIn, path); }, std::move(callback), std::move(vecData)); } @@ -1028,8 +1031,9 @@ bool FileUtils::isFileExist(std::string_view filename) const void FileUtils::isFileExist(std::string_view filename, std::function callback) const { auto fullPath = fullPathForFilename(filename); - performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->isFileExist(fullPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{fullPath}]() -> bool { return FileUtils::getInstance()->isFileExist(path); }, + std::move(callback)); } bool FileUtils::isAbsolutePath(std::string_view path) const @@ -1072,27 +1076,31 @@ bool FileUtils::isDirectoryExist(std::string_view dirPath) const void FileUtils::isDirectoryExist(std::string_view fullPath, std::function callback) const { CCASSERT(isAbsolutePath(fullPath), "Async isDirectoryExist only accepts absolute file paths"); - performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->isDirectoryExist(fullPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{fullPath}]() -> bool { return FileUtils::getInstance()->isDirectoryExist(path); }, + std::move(callback)); } void FileUtils::createDirectory(std::string_view dirPath, std::function callback) const { - performOperationOffthread([dirPath]() -> bool { return FileUtils::getInstance()->createDirectory(dirPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{dirPath}]() -> bool { return FileUtils::getInstance()->createDirectory(path); }, + std::move(callback)); } void FileUtils::removeDirectory(std::string_view dirPath, std::function callback) const { - performOperationOffthread([dirPath]() -> bool { return FileUtils::getInstance()->removeDirectory(dirPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{dirPath}]() -> bool { return FileUtils::getInstance()->removeDirectory(path); }, + std::move(callback)); } void FileUtils::removeFile(std::string_view filepath, std::function callback) const { auto fullPath = fullPathForFilename(filepath); - performOperationOffthread([fullPath]() -> bool { return FileUtils::getInstance()->removeFile(fullPath); }, - std::move(callback)); + performOperationOffthread( + [path = std::string{fullPath}]() -> bool { return FileUtils::getInstance()->removeFile(path); }, + std::move(callback)); } void FileUtils::renameFile(std::string_view path, @@ -1101,7 +1109,9 @@ void FileUtils::renameFile(std::string_view path, std::function callback) const { performOperationOffthread( - [path, oldname, name]() -> bool { return FileUtils::getInstance()->renameFile(path, oldname, name); }, + [path = std::string{path}, oldname = std::string{oldname}, name = std::string{name}]() -> bool { + return FileUtils::getInstance()->renameFile(path, oldname, name); + }, std::move(callback)); } @@ -1110,21 +1120,23 @@ void FileUtils::renameFile(std::string_view oldfullpath, std::function callback) const { performOperationOffthread( - [oldfullpath, newfullpath]() { return FileUtils::getInstance()->renameFile(oldfullpath, newfullpath); }, + [oldpath = std::string{oldfullpath}, newpath = std::string{newfullpath}]() { + return FileUtils::getInstance()->renameFile(oldpath, newpath); + }, std::move(callback)); } void FileUtils::getFileSize(std::string_view filepath, std::function callback) const { auto fullPath = fullPathForFilename(filepath); - performOperationOffthread([fullPath]() { return FileUtils::getInstance()->getFileSize(fullPath); }, + performOperationOffthread([path = std::string{fullPath}]() { return FileUtils::getInstance()->getFileSize(path); }, std::move(callback)); } void FileUtils::listFilesAsync(std::string_view dirPath, std::function)> callback) const { auto fullPath = fullPathForDirectory(dirPath); - performOperationOffthread([fullPath]() { return FileUtils::getInstance()->listFiles(fullPath); }, + performOperationOffthread([path = std::string{fullPath}]() { return FileUtils::getInstance()->listFiles(path); }, std::move(callback)); } @@ -1133,9 +1145,9 @@ void FileUtils::listFilesRecursivelyAsync(std::string_view dirPath, { auto fullPath = fullPathForDirectory(dirPath); performOperationOffthread( - [fullPath]() { + [path = std::string{fullPath}]() { std::vector retval; - FileUtils::getInstance()->listFilesRecursively(fullPath, &retval); + FileUtils::getInstance()->listFilesRecursively(path, &retval); return retval; }, std::move(callback)); From a02cfaf5a869a7e691c8388c82c2f1c413437755 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 17:34:37 +0800 Subject: [PATCH 47/58] Fix ios & android build --- cocos/platform/CCFileUtils.cpp | 128 ++++++++++++++++++++++++++++----- thirdparty/README.md | 5 ++ 2 files changed, 117 insertions(+), 16 deletions(-) diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 5533b3ee6a21..6f9e009aa00a 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -50,6 +50,10 @@ THE SOFTWARE. # include "ntcvt/ntcvt.hpp" #endif +#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS +# include "tinydir/tinydir.h" +#endif + #include "pugixml/pugixml.hpp" #define DECLARE_GUARD (void)0 @@ -1165,31 +1169,36 @@ std::unique_ptr FileUtils::openFileStream(std::string_view filePath, return nullptr; } +/* !!!Notes for c++fs + a. ios: require ios 13.0+ + b. android: require ndk-r22+ +*/ +#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS && (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) std::vector FileUtils::listFiles(std::string_view dirPath) const { const auto fullPath = fullPathForDirectory(dirPath); auto fsPath = toFspath(fullPath); - if (!std::filesystem::is_directory(fsPath)) + if (!stdfs::is_directory(fsPath)) { return {}; } std::vector files = {}; - for (const auto& entry : std::filesystem::directory_iterator(fsPath)) + for (const auto& entry : stdfs::directory_iterator(fsPath)) { const auto isDir = entry.is_directory(); if (isDir || entry.is_regular_file()) { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) -# ifdef __cpp_lib_char8_t +# if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +# if defined(__cpp_lib_char8_t) std::u8string u8path = entry.path().u8string(); std::string pathStr = {u8path.begin(), u8path.end()}; -# else +# else std::string pathStr = entry.path().u8string(); -# endif +# endif std::replace(pathStr.begin(), pathStr.end(), '\\', '/'); -#else +# else std::string pathStr = entry.path().string(); -#endif +# endif if (isDir) { pathStr += '/'; @@ -1204,26 +1213,26 @@ void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector FileUtils::listFiles(std::string_view dirPath) const +{ + std::vector files; + std::string fullpath = fullPathForDirectory(dirPath); + if (!fullpath.empty() && isDirectoryExist(fullpath)) + { + tinydir_dir dir; + std::string fullpathstr = fullpath; + + if (tinydir_open(&dir, &fullpathstr[0]) != -1) + { + while (dir.has_next) + { + tinydir_file file; + if (tinydir_readfile(&dir, &file) == -1) + { + // Error getting file + break; + } + std::string filepath = file.path; + + if (strcmp(file.name, ".") != 0 && strcmp(file.name, "..") != 0) + { + if (file.is_dir) + filepath.push_back('/'); + + files.push_back(std::move(filepath)); + } + + if (tinydir_next(&dir) == -1) + { + // Error getting next file + break; + } + } + } + tinydir_close(&dir); + } + return files; +} + +void FileUtils::listFilesRecursively(std::string_view dirPath, std::vector* files) const +{ + std::string fullpath = fullPathForDirectory(dirPath); + if (isDirectoryExist(fullpath)) + { + tinydir_dir dir; + std::string fullpathstr = fullpath; + + if (tinydir_open(&dir, &fullpathstr[0]) != -1) + { + while (dir.has_next) + { + tinydir_file file; + if (tinydir_readfile(&dir, &file) == -1) + { + // Error getting file + break; + } + + if (strcmp(file.name, ".") != 0 && strcmp(file.name, "..") != 0) + { + std::string filepath = file.path; + if (file.is_dir) + { + filepath.push_back('/'); + files->push_back(filepath); + listFilesRecursively(filepath, files); + } + else + { + files->push_back(std::move(filepath)); + } + } + + if (tinydir_next(&dir) == -1) + { + // Error getting next file + break; + } + } + } + tinydir_close(&dir); + } +} +#endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) // windows os implement should override in platform specific FileUtiles class diff --git a/thirdparty/README.md b/thirdparty/README.md index 21a8f86053aa..79cd1af021c6 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -198,6 +198,11 @@ - Version: 2.27 - License: MIT +## tinydir +- Upstream: https://github.com/cxong/tinydir +- Version: git 1.2.4-ec6bff2 (168) +- License: BSD-2-Clause + ## unzip (minizip-1.2) - Upstream: https://github.com/simdsoft/mz12 - Version: 1.2 with bugfixs & improvements From 490199370b2f2066c7ab35d80dcfa425a3dd7d50 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 17:47:01 +0800 Subject: [PATCH 48/58] Optimize ci scripts [skip ci] --- .github/workflows/android-ci.yml | 5 +- .github/workflows/ios-ci.yml | 5 +- .github/workflows/linux-ci.yml | 5 +- .github/workflows/osx-ci.yml | 5 +- .github/workflows/pr-ci.yml | 11 +- tools/travis-scripts/before-install.sh | 66 +------ tools/travis-scripts/run-script.sh | 235 +------------------------ 7 files changed, 18 insertions(+), 314 deletions(-) diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index a6d7a75b0138..070b9c8ba299 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -16,12 +16,9 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - TRAVIS_OS_NAME: linux + GH_OS_NAME: linux BUILD_TARGET: android - # Simple let github action to build all (TODO: optimize in the future) - TRAVIS_PULL_REQUEST: true BUILD_TYPE: Release - GITHUB_CI: true PYENV_VERSION: 2.7.18 jobs: diff --git a/.github/workflows/ios-ci.yml b/.github/workflows/ios-ci.yml index 276438373fc1..107b7d92d9bc 100644 --- a/.github/workflows/ios-ci.yml +++ b/.github/workflows/ios-ci.yml @@ -16,12 +16,9 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - TRAVIS_OS_NAME: osx + GH_OS_NAME: osx BUILD_TARGET: ios - # Simple let github action to build all (TODO: optimize in the future) - TRAVIS_PULL_REQUEST: true BUILD_TYPE: Release - GITHUB_CI: true jobs: build: diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index a8b17e6bb348..bdb33cf34089 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -16,12 +16,9 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - TRAVIS_OS_NAME: linux + GH_OS_NAME: linux BUILD_TARGET: linux - # Simple let github action to build all (TODO: optimize in the future) - TRAVIS_PULL_REQUEST: true BUILD_TYPE: Release - GITHUB_CI: true jobs: build: diff --git a/.github/workflows/osx-ci.yml b/.github/workflows/osx-ci.yml index edd9ff2ca26c..23e6773ec213 100644 --- a/.github/workflows/osx-ci.yml +++ b/.github/workflows/osx-ci.yml @@ -16,12 +16,9 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - TRAVIS_OS_NAME: osx + GH_OS_NAME: osx BUILD_TARGET: osx - # Simple let github action to build all (TODO: optimize in the future) - TRAVIS_PULL_REQUEST: true BUILD_TYPE: Release - GITHUB_CI: true jobs: build: diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index 2a27801caca0..df4103aaf79e 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -8,9 +8,6 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release - # Simple let github action to build all (TODO: optimize in the future) - TRAVIS_PULL_REQUEST: true - GITHUB_CI: true jobs: build-windows: @@ -37,7 +34,7 @@ jobs: name: build-linux runs-on: ubuntu-latest env: - TRAVIS_OS_NAME: linux + GH_OS_NAME: linux BUILD_TARGET: linux steps: - uses: actions/checkout@v2 @@ -59,7 +56,7 @@ jobs: - arm64-v8a - x86 env: - TRAVIS_OS_NAME: linux + GH_OS_NAME: linux BUILD_TARGET: android PYENV_VERSION: 2.7.18 BUILD_ARCH: ${{ matrix.arch }} @@ -77,7 +74,7 @@ jobs: name: build-osx runs-on: macos-latest env: - TRAVIS_OS_NAME: osx + GH_OS_NAME: osx BUILD_TARGET: osx steps: - uses: actions/checkout@v2 @@ -93,7 +90,7 @@ jobs: name: build-ios runs-on: macos-latest env: - TRAVIS_OS_NAME: osx + GH_OS_NAME: osx BUILD_TARGET: ios steps: - uses: actions/checkout@v2 diff --git a/tools/travis-scripts/before-install.sh b/tools/travis-scripts/before-install.sh index 7fcf3d95ae65..35f1b4063a14 100755 --- a/tools/travis-scripts/before-install.sh +++ b/tools/travis-scripts/before-install.sh @@ -46,11 +46,11 @@ function install_python_module_for_osx() } # set up environment according os and target -function install_environement_for_pull_request() +function install_environement() { - echo "Building pull request ..." + echo "Installing environement ..." - if [ "$TRAVIS_OS_NAME" == "linux" ]; then + if [ "$GH_OS_NAME" == "linux" ]; then sudo apt-get update sudo apt-get install ninja-build ninja --version @@ -67,7 +67,7 @@ function install_environement_for_pull_request() fi fi - if [ "$TRAVIS_OS_NAME" == "osx" ]; then + if [ "$GH_OS_NAME" == "osx" ]; then brew install nasm nasm -v @@ -75,67 +75,19 @@ function install_environement_for_pull_request() fi } -# should generate binding codes & cocos_files.json after merging -# function install_environement_for_after_merge() -# { -# if [ "$TRAVIS_OS_NAME" == "osx" ]; then -# install_python_module_for_osx -# fi - -# echo "Building merge commit ..." -# } - # install newer python for android for ssl connection -if [ "$BUILD_TARGET" == "android" ]; then - if [ $GITHUB_CI ]; then - echo "Installing pyenv for github ci..." - curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash - export PATH="/home/runner/.pyenv/bin:$PATH" - else - # upgrade pyenv - cd $(pyenv root) && git checkout master && git pull && cd - - fi +if [ "$GH_OS_NAME" == "linux" ]; then + echo "Installing pyenv for github ci..." + curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash + export PATH="/home/runner/.pyenv/bin:$PATH" pyenv install --list pyenv install $PYENV_VERSION pyenv versions - # pip install pyOpenSSL ndg-httpsclient pyasn1 - # set by PYENV_VERSION environment variable implicit - # pyenv global $PYENV_VERSION fi python -V cmake --version -if [ "$BUILD_TARGET" == "android_cocos_new_test" ]; then - sudo apt-get update - sudo apt-get install ninja-build - ninja --version - sudo pip install retry - python $ADXE_ROOT/tools/appveyor-scripts/setup_android.py - exit 0 -fi - -if [ "$BUILD_TARGET" == "linux_cocos_new_test" ]; then - install_linux_environment - # linux new lua project, so need to install - sudo pip install retry - python $ADXE_ROOT/tools/appveyor-scripts/setup_android.py --ndk_only - exit 0 -fi - -# build pull request -if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then - install_environement_for_pull_request -fi - -# run after merging -# - make cocos robot to send PR to cocos2d-x for new binding codes -# - generate cocos_files.json for template -# if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then -# # only one job need to send PR, linux virtual machine has better performance -# if [ $TRAVIS_OS_NAME == "linux" ] && [ x$GEN_BINDING_AND_COCOSFILE == x"true" ]; then -# install_environement_for_after_merge -# fi -# fi +install_environement echo "before-install.sh execution finished!" diff --git a/tools/travis-scripts/run-script.sh b/tools/travis-scripts/run-script.sh index 758e942633fa..24ef4f541ee1 100755 --- a/tools/travis-scripts/run-script.sh +++ b/tools/travis-scripts/run-script.sh @@ -5,7 +5,6 @@ set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" ADXE_ROOT="$DIR"/../.. -COCOSFILE_PATH="$ADXE_ROOT/templates/cocos2dx_files.json" CPU_CORES=4 function do_retry() @@ -30,7 +29,6 @@ function do_retry() function build_linux() { - echo "Building tests ..." # source ../environment.sh cd $ADXE_ROOT set -x @@ -43,17 +41,11 @@ function build_osx() { NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` - # pushd $ADXE_ROOT - # python -u tools/console/bin/adxe.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - # popd - # cd $ADXE_ROOT/cocos_new_test cd $ADXE_ROOT mkdir -p build cmake -S . -B build -GXcode -DBUILD_EXTENSION_IMGUIEXT=ON -DBUILD_DEP_ALSOFT=ON cmake --build build --config Release --target cpp-tests -- -quiet - #xcodebuild -project adxe.xcodeproj -alltargets -jobs $NUM_OF_CORES build | xcpretty - ##the following commands must not be removed - #xcodebuild -project adxe.xcodeproj -alltargets -jobs $NUM_OF_CORES build + exit 0 } @@ -61,20 +53,12 @@ function build_ios() { NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` - # pushd $ADXE_ROOT - # python -u tools/console/bin/adxe.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - # popd - # cd $ADXE_ROOT/cocos_new_test cd $ADXE_ROOT - # mkdir -p build cmake -S . -B build -GXcode -DCMAKE_TOOLCHAIN_FILE=cmake/ios.mini.cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 -DBUILD_DEP_ALSOFT=ON # cmake .. -GXcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DCMAKE_SYSTEM_NAME=iOS -DPLATFORM=OS -DENABLE_ARC=0 # too much logs on console when "cmake --build ." cmake --build build --config Release --target cpp-tests -- -quiet -jobs $NUM_OF_CORES -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" - #xcodebuild -project adxe.xcodeproj -alltargets -jobs $NUM_OF_CORES -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty - ##the following commands must not be removed - #xcodebuild -project adxe.xcodeproj -alltargets -jobs $NUM_OF_CORES -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build exit 0 } @@ -91,188 +75,17 @@ function build_android() popd } -function build_android_lua() -{ - # Build all samples - echo "Building Android samples lua ..." - source ../environment.sh - - # build lua-tests - pushd $ADXE_ROOT/tests/lua-tests/project/proj.android - do_retry ./gradlew assembleDebug -PPROP_BUILD_TYPE=cmake -PPROP_APP_ABI=arm64-v8a --parallel --info - popd - -} - -function genernate_binding_codes() -{ - if [ $TRAVIS_OS_NAME == "linux" ]; then - # print some log for libstdc++6 - strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC - ls -l /usr/lib/x86_64-linux-gnu/libstdc++* - dpkg-query -W libstdc++6 - ldd $ADXE_ROOT/tools/bindings-generator/libclang/libclang.so - fi - - source ../environment.sh - - # Generate binding glue codes - - echo "Create auto-generated luabinding glue codes." - pushd "$ADXE_ROOT/tools/tolua" - # python ./genbindings.py - popd -} - -# generate cocos_files.json and check diff -function update_cocos_files() -{ - # Don't exit on non-zero return value - set +e - echo "Updates cocos_files.json" - $ADXE_ROOT/tools/travis-scripts/generate-template-files.py - git diff FETCH_HEAD --stat --exit-code "$COCOSFILE_PATH" - COCOSFILE_DIFF_RETVAL=$? - echo $COCOSFILE_DIFF_RETVAL - - # Exit on error - set -e -} - -function generate_pull_request_for_binding_codes_and_cocosfiles() -{ - local COCOS_ROBOT_REMOTE="https://${GH_USER}:${GH_PASSWORD}@github.com/${GH_USER}/adxe.git" - local LUA_AUTO_GENERATE_SCRIPT_PATH="$ADXE_ROOT/extensions/scripting/lua-bindings/auto" - local ELAPSEDSECS=`date +%s` - local COCOS_BRANCH="update_lua_bindings_$ELAPSEDSECS" - local COMMITTAG="[ci skip][AUTO]: updating luabinding & cocos_file.json automatically" - local PULL_REQUEST_REPO="https://api.github.com/repos/cocos2d/cocos2d-x/pulls" - - pushd "$ADXE_ROOT" - #Set git user for cocos2d-lua repo - # git config user.email ${GH_EMAIL} - # git config user.name ${GH_USER}#Set remotes - # git remote add upstream "$COCOS_ROBOT_REMOTE" 2> /dev/null > /dev/null - - # Run status to record the output in the log - git status - - echo - echo Comparing with origin HEAD ... - echo - git fetch origin "$TRAVIS_BRANCH" - - # Don't exit on non-zero return value - set +e - git diff FETCH_HEAD --stat --exit-code "$LUA_AUTO_GENERATE_SCRIPT_PATH" - local lua_binding_codes_diff=$? - - # generate cocos_files.json and check diff - local cocos_file_diff=$(update_cocos_files) - if [ $lua_binding_codes_diff -eq 0 ] && [ $cocos_file_diff -eq 0 ]; then - echo "lua binding codes and cocos file are not differences" - exit 0 - fi - - - # Exit on error - set -e - - # git add -f --all "$LUA_AUTO_GENERATE_SCRIPT_PATH" - # git add -f --all "$COCOSFILE_PATH" - # git checkout -b "$COCOS_BRANCH" - # git commit -m "$COMMITTAG" - - echo "Pushing to Robot's repo ..." - # git fetch --unshallow origin - # git push -f upstream "$COCOS_BRANCH" - - echo "Sending Pull Request to base repo ..." - # curl --user "${GH_USER}:${GH_PASSWORD}" --request POST --data "{ \"title\": \"$COMMITTAG\", \"body\": \"\", \"head\": \"${GH_USER}:${COCOS_BRANCH}\", \"base\": \"${TRAVIS_BRANCH}\"}" "${PULL_REQUEST_REPO}" 2> /dev/null > /dev/null - - popd -} - function run_build() { echo "Building..." - - if [ "$BUILD_TARGET" == "android_cocos_new_test" ]; then - source ../environment.sh - pushd $ADXE_ROOT - update_cocos_files - python -u tools/console/bin/adxe.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - popd - pushd $ADXE_ROOT/cocos_new_test/proj.android - do_retry ./gradlew build - popd - exit 0 - fi - - if [ "$BUILD_TARGET" == "linux_cocos_new_test" ]; then - export PATH=$PATH:$ADXE_ROOT/tools/console/bin - genernate_binding_codes - pushd $ADXE_ROOT - update_cocos_files - python -u tools/console/bin/adxe.py --agreement n new -l lua -p my.pack.qqqq cocos_new_test - popd - echo "Building tests ..." - - set -x - cd $ADXE_ROOT/cocos_new_test - mkdir -p linux-build - cd linux-build - cmake .. -G"Unix Makefiles" - cmake --build . -- -j `nproc` - exit 0 - fi - - if [ "$BUILD_TARGET" == "ios_cocos_new_lua_test" ]; then - export PATH=$PATH:$ADXE_ROOT/tools/console/bin - #NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` - genernate_binding_codes - pushd $ADXE_ROOT - echo "Creating tests ..." - - set -x - cocos --agreement n new -l lua ios_new_lua_proj - cd ios_new_lua_proj - mkdir build - cd build - cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator - cmake --build . --config Release -- -quiet - popd - exit 0 - fi - - if [ "$BUILD_TARGET" == "ios_cocos_new_cpp_test" ]; then - export PATH=$PATH:$ADXE_ROOT/tools/console/bin - #NUM_OF_CORES=`getconf _NPROCESSORS_ONLN` - genernate_binding_codes - pushd $ADXE_ROOT - echo "Creating tests ..." - - set -x - cocos --agreement n new -l cpp ios_new_cpp_proj - cd ios_new_cpp_proj - mkdir build - cd build - echo "Building tests ..." - cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator - cmake --build . --config Release -- -quiet - popd - exit 0 - fi if [ $BUILD_TARGET == 'osx' ]; then - # genernate_binding_codes set -x build_osx exit 0 fi if [ $BUILD_TARGET == 'ios' ]; then - # genernate_binding_codes set -x build_ios exit 0 @@ -280,7 +93,6 @@ function run_build() # linux if [ $BUILD_TARGET == 'linux' ]; then - # genernate_binding_codes build_linux fi @@ -288,52 +100,7 @@ function run_build() if [ $BUILD_TARGET == 'android' ]; then build_android fi - - # android_lua - if [ $BUILD_TARGET == 'android_lua' ]; then - genernate_binding_codes - build_android_lua - fi -} - -function run_after_merge() -{ - echo "Building merge commit ..." - # Re-generation of the javascript bindings can perform push of the new - # version back to github. We don't do this for pull requests, or if - # GH_USER/GH_EMAIL/GH_PASSWORD environment variables are not set correctly - # by the encoded variables in the .travis.yml file. (e.g. if cloned repo's - # want to use travis). - # if [ -z "${GH_EMAIL}" ]; then - # echo "GH_EMAIL not set" - # exit 1 - # fi - # if [ -z "${GH_USER}" ]; then - # echo "GH_USER not set" - # exit 1 - # fi - # if [ -z "${GH_PASSWORD}" ]; then - # echo "GH_USER not set" - # exit 1 - # fi - - genernate_binding_codes - generate_pull_request_for_binding_codes_and_cocosfiles } run_build -# build pull request -# if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then -# run_pull_request -# fi - -# run after merging -# - make cocos robot to send PR to cocos2d-x for new binding codes -# - generate cocos_files.json for template -# if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then -# # only one job need to send PR, linux virtual machine has better performance -# if [ $TRAVIS_OS_NAME == "linux" ] && [ x$GEN_BINDING_AND_COCOSFILE == x"true" ]; then -# run_after_merge -# fi -# fi From 5d5670e83e8dad5b3498c70f5993e96c76343fed Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 17:47:48 +0800 Subject: [PATCH 49/58] Fix ci --- cocos/platform/CCFileUtils.cpp | 20 +- thirdparty/tinydir/COPYING | 26 + thirdparty/tinydir/package.json | 17 + thirdparty/tinydir/tinydir.h | 831 ++++++++++++++++++++++++++++++++ 4 files changed, 887 insertions(+), 7 deletions(-) create mode 100644 thirdparty/tinydir/COPYING create mode 100644 thirdparty/tinydir/package.json create mode 100644 thirdparty/tinydir/tinydir.h diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 6f9e009aa00a..033834a63238 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -44,7 +44,6 @@ THE SOFTWARE. # include "unzip.h" #endif #include -#include #if defined(_WIN32) # include "ntcvt/ntcvt.hpp" @@ -55,24 +54,31 @@ THE SOFTWARE. #endif #include "pugixml/pugixml.hpp" + #define DECLARE_GUARD (void)0 +#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS || (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) +# define ADXE_HAVE_STDFS 1 +# include namespace stdfs = std::filesystem; - -NS_CC_BEGIN - -#if defined(_WIN32) +# if defined(_WIN32) inline stdfs::path toFspath(const std::string_view& pathSV) { return stdfs::path{ntcvt::from_chars(pathSV)}; } -#else +# else inline stdfs::path toFspath(const std::string_view& pathSV) { return stdfs::path{pathSV}; } +# endif +#else +# include "tinydir/tinydir.h" +# define ADXE_HAVE_STDFS 0 #endif +NS_CC_BEGIN + // Implement DictMaker typedef enum @@ -1173,7 +1179,7 @@ std::unique_ptr FileUtils::openFileStream(std::string_view filePath, a. ios: require ios 13.0+ b. android: require ndk-r22+ */ -#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS && (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) +#if ADXE_HAVE_STDFS std::vector FileUtils::listFiles(std::string_view dirPath) const { const auto fullPath = fullPathForDirectory(dirPath); diff --git a/thirdparty/tinydir/COPYING b/thirdparty/tinydir/COPYING new file mode 100644 index 000000000000..0d313296b498 --- /dev/null +++ b/thirdparty/tinydir/COPYING @@ -0,0 +1,26 @@ +Copyright (c) 2013-2016, tinydir authors: +- Cong Xu +- Lautis Sun +- Baudouin Feildel +- Andargor +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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER 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. diff --git a/thirdparty/tinydir/package.json b/thirdparty/tinydir/package.json new file mode 100644 index 000000000000..5ad2e9ef289f --- /dev/null +++ b/thirdparty/tinydir/package.json @@ -0,0 +1,17 @@ +{ + "name": "tinydir", + "description": "Lightweight, portable and easy to integrate C directory and file reader", + "license": "BSD-2-Clause", + "keywords": [ + "dir", + "directory", + "file", + "reader", + "filesystem" + ], + "src": [ + "tinydir.h" + ], + "version": "1.2.4", + "repo": "cxong/tinydir" +} diff --git a/thirdparty/tinydir/tinydir.h b/thirdparty/tinydir/tinydir.h new file mode 100644 index 000000000000..e08eb84ec97b --- /dev/null +++ b/thirdparty/tinydir/tinydir.h @@ -0,0 +1,831 @@ +/* +Copyright (c) 2013-2019, tinydir authors: +- Cong Xu +- Lautis Sun +- Baudouin Feildel +- Andargor +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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER 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. +*/ +#ifndef TINYDIR_H +#define TINYDIR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if ((defined _UNICODE) && !(defined UNICODE)) +#define UNICODE +#endif + +#if ((defined UNICODE) && !(defined _UNICODE)) +#define _UNICODE +#endif + +#include +#include +#include +#ifdef _MSC_VER +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# include +# include +# pragma warning(push) +# pragma warning (disable : 4996) +#else +# include +# include +# include +# include +#endif +#ifdef __MINGW32__ +# include +#endif + + +/* types */ + +/* Windows UNICODE wide character support */ +#if defined _MSC_VER || defined __MINGW32__ +# define _tinydir_char_t TCHAR +# define TINYDIR_STRING(s) _TEXT(s) +# define _tinydir_strlen _tcslen +# define _tinydir_strcpy _tcscpy +# define _tinydir_strcat _tcscat +# define _tinydir_strcmp _tcscmp +# define _tinydir_strrchr _tcsrchr +# define _tinydir_strncmp _tcsncmp +#else +# define _tinydir_char_t char +# define TINYDIR_STRING(s) s +# define _tinydir_strlen strlen +# define _tinydir_strcpy strcpy +# define _tinydir_strcat strcat +# define _tinydir_strcmp strcmp +# define _tinydir_strrchr strrchr +# define _tinydir_strncmp strncmp +#endif + +#if (defined _MSC_VER || defined __MINGW32__) +# include +# define _TINYDIR_PATH_MAX MAX_PATH +#elif defined __linux__ +# include +# ifdef PATH_MAX +# define _TINYDIR_PATH_MAX PATH_MAX +# endif +#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +# include +# if defined(BSD) +# include +# ifdef PATH_MAX +# define _TINYDIR_PATH_MAX PATH_MAX +# endif +# endif +#endif + +#ifndef _TINYDIR_PATH_MAX +#define _TINYDIR_PATH_MAX 4096 +#endif + +#ifdef _MSC_VER +/* extra chars for the "\\*" mask */ +# define _TINYDIR_PATH_EXTRA 2 +#else +# define _TINYDIR_PATH_EXTRA 0 +#endif + +#define _TINYDIR_FILENAME_MAX 256 + +#if (defined _MSC_VER || defined __MINGW32__) +#define _TINYDIR_DRIVE_MAX 3 +#endif + +#ifdef _MSC_VER +# define _TINYDIR_FUNC static __inline +#elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# define _TINYDIR_FUNC static __inline__ +#else +# define _TINYDIR_FUNC static inline +#endif + +/* readdir_r usage; define TINYDIR_USE_READDIR_R to use it (if supported) */ +#ifdef TINYDIR_USE_READDIR_R + +/* readdir_r is a POSIX-only function, and may not be available under various + * environments/settings, e.g. MinGW. Use readdir fallback */ +#if _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE ||\ + _POSIX_SOURCE +# define _TINYDIR_HAS_READDIR_R +#endif +#if _POSIX_C_SOURCE >= 200112L +# define _TINYDIR_HAS_FPATHCONF +# include +#endif +#if _BSD_SOURCE || _SVID_SOURCE || \ + (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700) +# define _TINYDIR_HAS_DIRFD +# include +#endif +#if defined _TINYDIR_HAS_FPATHCONF && defined _TINYDIR_HAS_DIRFD &&\ + defined _PC_NAME_MAX +# define _TINYDIR_USE_FPATHCONF +#endif +#if defined __MINGW32__ || !defined _TINYDIR_HAS_READDIR_R ||\ + !(defined _TINYDIR_USE_FPATHCONF || defined NAME_MAX) +# define _TINYDIR_USE_READDIR +#endif + +/* Use readdir by default */ +#else +# define _TINYDIR_USE_READDIR +#endif + +/* MINGW32 has two versions of dirent, ASCII and UNICODE*/ +#ifndef _MSC_VER +#if (defined __MINGW32__) && (defined _UNICODE) +#define _TINYDIR_DIR _WDIR +#define _tinydir_dirent _wdirent +#define _tinydir_opendir _wopendir +#define _tinydir_readdir _wreaddir +#define _tinydir_closedir _wclosedir +#else +#define _TINYDIR_DIR DIR +#define _tinydir_dirent dirent +#define _tinydir_opendir opendir +#define _tinydir_readdir readdir +#define _tinydir_closedir closedir +#endif +#endif + +/* Allow user to use a custom allocator by defining _TINYDIR_MALLOC and _TINYDIR_FREE. */ +#if defined(_TINYDIR_MALLOC) && defined(_TINYDIR_FREE) +#elif !defined(_TINYDIR_MALLOC) && !defined(_TINYDIR_FREE) +#else +#error "Either define both alloc and free or none of them!" +#endif + +#if !defined(_TINYDIR_MALLOC) + #define _TINYDIR_MALLOC(_size) malloc(_size) + #define _TINYDIR_FREE(_ptr) free(_ptr) +#endif /* !defined(_TINYDIR_MALLOC) */ + +typedef struct tinydir_file +{ + _tinydir_char_t path[_TINYDIR_PATH_MAX]; + _tinydir_char_t name[_TINYDIR_FILENAME_MAX]; + _tinydir_char_t *extension; + int is_dir; + int is_reg; + +#ifndef _MSC_VER +#ifdef __MINGW32__ + struct _stat _s; +#else + struct stat _s; +#endif +#endif +} tinydir_file; + +typedef struct tinydir_dir +{ + _tinydir_char_t path[_TINYDIR_PATH_MAX]; + int has_next; + size_t n_files; + + tinydir_file *_files; +#ifdef _MSC_VER + HANDLE _h; + WIN32_FIND_DATA _f; +#else + _TINYDIR_DIR *_d; + struct _tinydir_dirent *_e; +#ifndef _TINYDIR_USE_READDIR + struct _tinydir_dirent *_ep; +#endif +#endif +} tinydir_dir; + + +/* declarations */ + +_TINYDIR_FUNC +int tinydir_open(tinydir_dir *dir, const _tinydir_char_t *path); +_TINYDIR_FUNC +int tinydir_open_sorted(tinydir_dir *dir, const _tinydir_char_t *path); +_TINYDIR_FUNC +void tinydir_close(tinydir_dir *dir); + +_TINYDIR_FUNC +int tinydir_next(tinydir_dir *dir); +_TINYDIR_FUNC +int tinydir_readfile(const tinydir_dir *dir, tinydir_file *file); +_TINYDIR_FUNC +int tinydir_readfile_n(const tinydir_dir *dir, tinydir_file *file, size_t i); +_TINYDIR_FUNC +int tinydir_open_subdir_n(tinydir_dir *dir, size_t i); + +_TINYDIR_FUNC +int tinydir_file_open(tinydir_file *file, const _tinydir_char_t *path); +_TINYDIR_FUNC +void _tinydir_get_ext(tinydir_file *file); +_TINYDIR_FUNC +int _tinydir_file_cmp(const void *a, const void *b); +#ifndef _MSC_VER +#ifndef _TINYDIR_USE_READDIR +_TINYDIR_FUNC +size_t _tinydir_dirent_buf_size(_TINYDIR_DIR *dirp); +#endif +#endif + + +/* definitions*/ + +_TINYDIR_FUNC +int tinydir_open(tinydir_dir *dir, const _tinydir_char_t *path) +{ +#ifndef _MSC_VER +#ifndef _TINYDIR_USE_READDIR + int error; + int size; /* using int size */ +#endif +#else + _tinydir_char_t path_buf[_TINYDIR_PATH_MAX]; +#endif + _tinydir_char_t *pathp; + + if (dir == NULL || path == NULL || _tinydir_strlen(path) == 0) + { + errno = EINVAL; + return -1; + } + if (_tinydir_strlen(path) + _TINYDIR_PATH_EXTRA >= _TINYDIR_PATH_MAX) + { + errno = ENAMETOOLONG; + return -1; + } + + /* initialise dir */ + dir->_files = NULL; +#ifdef _MSC_VER + dir->_h = INVALID_HANDLE_VALUE; +#else + dir->_d = NULL; +#ifndef _TINYDIR_USE_READDIR + dir->_ep = NULL; +#endif +#endif + tinydir_close(dir); + + _tinydir_strcpy(dir->path, path); + /* Remove trailing slashes */ + pathp = &dir->path[_tinydir_strlen(dir->path) - 1]; + while (pathp != dir->path && (*pathp == TINYDIR_STRING('\\') || *pathp == TINYDIR_STRING('/'))) + { + *pathp = TINYDIR_STRING('\0'); + pathp++; + } +#ifdef _MSC_VER + _tinydir_strcpy(path_buf, dir->path); + _tinydir_strcat(path_buf, TINYDIR_STRING("\\*")); +#if (defined WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP) + dir->_h = FindFirstFileEx(path_buf, FindExInfoStandard, &dir->_f, FindExSearchNameMatch, NULL, 0); +#else + dir->_h = FindFirstFile(path_buf, &dir->_f); +#endif + if (dir->_h == INVALID_HANDLE_VALUE) + { + errno = ENOENT; +#else + dir->_d = _tinydir_opendir(path); + if (dir->_d == NULL) + { +#endif + goto bail; + } + + /* read first file */ + dir->has_next = 1; +#ifndef _MSC_VER +#ifdef _TINYDIR_USE_READDIR + dir->_e = _tinydir_readdir(dir->_d); +#else + /* allocate dirent buffer for readdir_r */ + size = _tinydir_dirent_buf_size(dir->_d); /* conversion to int */ + if (size == -1) return -1; + dir->_ep = (struct _tinydir_dirent*)_TINYDIR_MALLOC(size); + if (dir->_ep == NULL) return -1; + + error = readdir_r(dir->_d, dir->_ep, &dir->_e); + if (error != 0) return -1; +#endif + if (dir->_e == NULL) + { + dir->has_next = 0; + } +#endif + + return 0; + +bail: + tinydir_close(dir); + return -1; +} + +_TINYDIR_FUNC +int tinydir_open_sorted(tinydir_dir *dir, const _tinydir_char_t *path) +{ + /* Count the number of files first, to pre-allocate the files array */ + size_t n_files = 0; + if (tinydir_open(dir, path) == -1) + { + return -1; + } + while (dir->has_next) + { + n_files++; + if (tinydir_next(dir) == -1) + { + goto bail; + } + } + tinydir_close(dir); + + if (n_files == 0 || tinydir_open(dir, path) == -1) + { + return -1; + } + + dir->n_files = 0; + dir->_files = (tinydir_file *)_TINYDIR_MALLOC(sizeof *dir->_files * n_files); + if (dir->_files == NULL) + { + goto bail; + } + while (dir->has_next) + { + tinydir_file *p_file; + dir->n_files++; + + p_file = &dir->_files[dir->n_files - 1]; + if (tinydir_readfile(dir, p_file) == -1) + { + goto bail; + } + + if (tinydir_next(dir) == -1) + { + goto bail; + } + + /* Just in case the number of files has changed between the first and + second reads, terminate without writing into unallocated memory */ + if (dir->n_files == n_files) + { + break; + } + } + + qsort(dir->_files, dir->n_files, sizeof(tinydir_file), _tinydir_file_cmp); + + return 0; + +bail: + tinydir_close(dir); + return -1; +} + +_TINYDIR_FUNC +void tinydir_close(tinydir_dir *dir) +{ + if (dir == NULL) + { + return; + } + + memset(dir->path, 0, sizeof(dir->path)); + dir->has_next = 0; + dir->n_files = 0; + _TINYDIR_FREE(dir->_files); + dir->_files = NULL; +#ifdef _MSC_VER + if (dir->_h != INVALID_HANDLE_VALUE) + { + FindClose(dir->_h); + } + dir->_h = INVALID_HANDLE_VALUE; +#else + if (dir->_d) + { + _tinydir_closedir(dir->_d); + } + dir->_d = NULL; + dir->_e = NULL; +#ifndef _TINYDIR_USE_READDIR + _TINYDIR_FREE(dir->_ep); + dir->_ep = NULL; +#endif +#endif +} + +_TINYDIR_FUNC +int tinydir_next(tinydir_dir *dir) +{ + if (dir == NULL) + { + errno = EINVAL; + return -1; + } + if (!dir->has_next) + { + errno = ENOENT; + return -1; + } + +#ifdef _MSC_VER + if (FindNextFile(dir->_h, &dir->_f) == 0) +#else +#ifdef _TINYDIR_USE_READDIR + dir->_e = _tinydir_readdir(dir->_d); +#else + if (dir->_ep == NULL) + { + return -1; + } + if (readdir_r(dir->_d, dir->_ep, &dir->_e) != 0) + { + return -1; + } +#endif + if (dir->_e == NULL) +#endif + { + dir->has_next = 0; +#ifdef _MSC_VER + if (GetLastError() != ERROR_SUCCESS && + GetLastError() != ERROR_NO_MORE_FILES) + { + tinydir_close(dir); + errno = EIO; + return -1; + } +#endif + } + + return 0; +} + +_TINYDIR_FUNC +int tinydir_readfile(const tinydir_dir *dir, tinydir_file *file) +{ + const _tinydir_char_t *filename; + if (dir == NULL || file == NULL) + { + errno = EINVAL; + return -1; + } +#ifdef _MSC_VER + if (dir->_h == INVALID_HANDLE_VALUE) +#else + if (dir->_e == NULL) +#endif + { + errno = ENOENT; + return -1; + } + filename = +#ifdef _MSC_VER + dir->_f.cFileName; +#else + dir->_e->d_name; +#endif + if (_tinydir_strlen(dir->path) + + _tinydir_strlen(filename) + 1 + _TINYDIR_PATH_EXTRA >= + _TINYDIR_PATH_MAX) + { + /* the path for the file will be too long */ + errno = ENAMETOOLONG; + return -1; + } + if (_tinydir_strlen(filename) >= _TINYDIR_FILENAME_MAX) + { + errno = ENAMETOOLONG; + return -1; + } + + _tinydir_strcpy(file->path, dir->path); + if (_tinydir_strcmp(dir->path, TINYDIR_STRING("/")) != 0) + _tinydir_strcat(file->path, TINYDIR_STRING("/")); + _tinydir_strcpy(file->name, filename); + _tinydir_strcat(file->path, filename); +#ifndef _MSC_VER +#ifdef __MINGW32__ + if (_tstat( +#elif (defined _BSD_SOURCE) || (defined _DEFAULT_SOURCE) \ + || ((defined _XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)) \ + || ((defined _POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L)) + if (lstat( +#else + if (stat( +#endif + file->path, &file->_s) == -1) + { + return -1; + } +#endif + _tinydir_get_ext(file); + + file->is_dir = +#ifdef _MSC_VER + !!(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); +#else + S_ISDIR(file->_s.st_mode); +#endif + file->is_reg = +#ifdef _MSC_VER + !!(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) || + ( + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) && + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_ENCRYPTED) && +#ifdef FILE_ATTRIBUTE_INTEGRITY_STREAM + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_INTEGRITY_STREAM) && +#endif +#ifdef FILE_ATTRIBUTE_NO_SCRUB_DATA + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_NO_SCRUB_DATA) && +#endif + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_OFFLINE) && + !(dir->_f.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)); +#else + S_ISREG(file->_s.st_mode); +#endif + + return 0; +} + +_TINYDIR_FUNC +int tinydir_readfile_n(const tinydir_dir *dir, tinydir_file *file, size_t i) +{ + if (dir == NULL || file == NULL) + { + errno = EINVAL; + return -1; + } + if (i >= dir->n_files) + { + errno = ENOENT; + return -1; + } + + memcpy(file, &dir->_files[i], sizeof(tinydir_file)); + _tinydir_get_ext(file); + + return 0; +} + +_TINYDIR_FUNC +int tinydir_open_subdir_n(tinydir_dir *dir, size_t i) +{ + _tinydir_char_t path[_TINYDIR_PATH_MAX]; + if (dir == NULL) + { + errno = EINVAL; + return -1; + } + if (i >= dir->n_files || !dir->_files[i].is_dir) + { + errno = ENOENT; + return -1; + } + + _tinydir_strcpy(path, dir->_files[i].path); + tinydir_close(dir); + if (tinydir_open_sorted(dir, path) == -1) + { + return -1; + } + + return 0; +} + +/* Open a single file given its path */ +_TINYDIR_FUNC +int tinydir_file_open(tinydir_file *file, const _tinydir_char_t *path) +{ + tinydir_dir dir; + int result = 0; + int found = 0; + _tinydir_char_t dir_name_buf[_TINYDIR_PATH_MAX]; + _tinydir_char_t file_name_buf[_TINYDIR_FILENAME_MAX]; + _tinydir_char_t *dir_name; + _tinydir_char_t *base_name; +#if (defined _MSC_VER || defined __MINGW32__) + _tinydir_char_t drive_buf[_TINYDIR_PATH_MAX]; + _tinydir_char_t ext_buf[_TINYDIR_FILENAME_MAX]; +#endif + + if (file == NULL || path == NULL || _tinydir_strlen(path) == 0) + { + errno = EINVAL; + return -1; + } + if (_tinydir_strlen(path) + _TINYDIR_PATH_EXTRA >= _TINYDIR_PATH_MAX) + { + errno = ENAMETOOLONG; + return -1; + } + + /* Get the parent path */ +#if (defined _MSC_VER || defined __MINGW32__) +#if ((defined _MSC_VER) && (_MSC_VER >= 1400)) + errno = _tsplitpath_s( + path, + drive_buf, _TINYDIR_DRIVE_MAX, + dir_name_buf, _TINYDIR_FILENAME_MAX, + file_name_buf, _TINYDIR_FILENAME_MAX, + ext_buf, _TINYDIR_FILENAME_MAX); +#else + _tsplitpath( + path, + drive_buf, + dir_name_buf, + file_name_buf, + ext_buf); +#endif + + if (errno) + { + return -1; + } + +/* _splitpath_s not work fine with only filename and widechar support */ +#ifdef _UNICODE + if (drive_buf[0] == L'\xFEFE') + drive_buf[0] = '\0'; + if (dir_name_buf[0] == L'\xFEFE') + dir_name_buf[0] = '\0'; +#endif + + /* Emulate the behavior of dirname by returning "." for dir name if it's + empty */ + if (drive_buf[0] == '\0' && dir_name_buf[0] == '\0') + { + _tinydir_strcpy(dir_name_buf, TINYDIR_STRING(".")); + } + /* Concatenate the drive letter and dir name to form full dir name */ + _tinydir_strcat(drive_buf, dir_name_buf); + dir_name = drive_buf; + /* Concatenate the file name and extension to form base name */ + _tinydir_strcat(file_name_buf, ext_buf); + base_name = file_name_buf; +#else + _tinydir_strcpy(dir_name_buf, path); + dir_name = dirname(dir_name_buf); + _tinydir_strcpy(file_name_buf, path); + base_name = basename(file_name_buf); +#endif + + /* Special case: if the path is a root dir, open the parent dir as the file */ +#if (defined _MSC_VER || defined __MINGW32__) + if (_tinydir_strlen(base_name) == 0) +#else + if ((_tinydir_strcmp(base_name, TINYDIR_STRING("/"))) == 0) +#endif + { + memset(file, 0, sizeof * file); + file->is_dir = 1; + file->is_reg = 0; + _tinydir_strcpy(file->path, dir_name); + file->extension = file->path + _tinydir_strlen(file->path); + return 0; + } + + /* Open the parent directory */ + if (tinydir_open(&dir, dir_name) == -1) + { + return -1; + } + + /* Read through the parent directory and look for the file */ + while (dir.has_next) + { + if (tinydir_readfile(&dir, file) == -1) + { + result = -1; + goto bail; + } + if (_tinydir_strcmp(file->name, base_name) == 0) + { + /* File found */ + found = 1; + break; + } + tinydir_next(&dir); + } + if (!found) + { + result = -1; + errno = ENOENT; + } + +bail: + tinydir_close(&dir); + return result; +} + +_TINYDIR_FUNC +void _tinydir_get_ext(tinydir_file *file) +{ + _tinydir_char_t *period = _tinydir_strrchr(file->name, TINYDIR_STRING('.')); + if (period == NULL) + { + file->extension = &(file->name[_tinydir_strlen(file->name)]); + } + else + { + file->extension = period + 1; + } +} + +_TINYDIR_FUNC +int _tinydir_file_cmp(const void *a, const void *b) +{ + const tinydir_file *fa = (const tinydir_file *)a; + const tinydir_file *fb = (const tinydir_file *)b; + if (fa->is_dir != fb->is_dir) + { + return -(fa->is_dir - fb->is_dir); + } + return _tinydir_strncmp(fa->name, fb->name, _TINYDIR_FILENAME_MAX); +} + +#ifndef _MSC_VER +#ifndef _TINYDIR_USE_READDIR +/* +The following authored by Ben Hutchings +from https://womble.decadent.org.uk/readdir_r-advisory.html +*/ +/* Calculate the required buffer size (in bytes) for directory * +* entries read from the given directory handle. Return -1 if this * +* this cannot be done. * +* * +* This code does not trust values of NAME_MAX that are less than * +* 255, since some systems (including at least HP-UX) incorrectly * +* define it to be a smaller value. */ +_TINYDIR_FUNC +size_t _tinydir_dirent_buf_size(_TINYDIR_DIR *dirp) +{ + long name_max; + size_t name_end; + /* parameter may be unused */ + (void)dirp; + +#if defined _TINYDIR_USE_FPATHCONF + name_max = fpathconf(dirfd(dirp), _PC_NAME_MAX); + if (name_max == -1) +#if defined(NAME_MAX) + name_max = (NAME_MAX > 255) ? NAME_MAX : 255; +#else + return (size_t)(-1); +#endif +#elif defined(NAME_MAX) + name_max = (NAME_MAX > 255) ? NAME_MAX : 255; +#else +#error "buffer size for readdir_r cannot be determined" +#endif + name_end = (size_t)offsetof(struct _tinydir_dirent, d_name) + name_max + 1; + return (name_end > sizeof(struct _tinydir_dirent) ? + name_end : sizeof(struct _tinydir_dirent)); +} +#endif +#endif + +#ifdef __cplusplus +} +#endif + +# if defined (_MSC_VER) +# pragma warning(pop) +# endif + +#endif From eff58bb76217a6dcf15df2e2c1a4f3ba8f726eca Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 17:56:35 +0800 Subject: [PATCH 50/58] Fix ci --- .github/workflows/linux-ci.yml | 1 + .github/workflows/pr-ci.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index bdb33cf34089..5c35dfe865ce 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -19,6 +19,7 @@ env: GH_OS_NAME: linux BUILD_TARGET: linux BUILD_TYPE: Release + PYENV_VERSION: 2.7.18 jobs: build: diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index df4103aaf79e..933cd58c2d7d 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -8,6 +8,7 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release + PYENV_VERSION: 2.7.18 jobs: build-windows: @@ -58,7 +59,6 @@ jobs: env: GH_OS_NAME: linux BUILD_TARGET: android - PYENV_VERSION: 2.7.18 BUILD_ARCH: ${{ matrix.arch }} steps: - uses: actions/checkout@v2 From cc43b60beab86ef4f384f2bf41dd3b51ba46b8e3 Mon Sep 17 00:00:00 2001 From: deal Date: Thu, 30 Dec 2021 18:33:14 +0800 Subject: [PATCH 51/58] Fix ADXE_HAV_STDFS check --- cocos/platform/CCFileUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 033834a63238..517cb2fc2e20 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -57,7 +57,7 @@ THE SOFTWARE. #define DECLARE_GUARD (void)0 -#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS || (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) +#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS && (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID || (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) ) # define ADXE_HAVE_STDFS 1 # include namespace stdfs = std::filesystem; From d43e9458ae4285ddaf5f77ae9942a33abd411d08 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 19:40:30 +0800 Subject: [PATCH 52/58] Tidy ci scripts --- .appveyor.yml | 42 ----- .github/workflows/android-ci.yml | 4 +- .github/workflows/genbindings-ci.yml | 36 ++++ .github/workflows/ios-ci.yml | 4 +- .github/workflows/linux-ci.yml | 5 +- .github/workflows/osx-ci.yml | 4 +- .github/workflows/pr-ci.yml | 18 +- tools/appveyor-scripts/before-build.ps1 | 51 ------ tools/appveyor-scripts/build.ps1 | 124 ------------- tools/appveyor-scripts/git_retry.py | 165 ------------------ tools/appveyor-scripts/setup_android.py | 148 ---------------- .../before-install.sh | 0 .../config.gitignore | 0 .../for-each-file-in-dir.sh | 0 .../generate-template-files.py | 0 .../{travis-scripts => unix-ci}/run-script.sh | 0 16 files changed, 53 insertions(+), 548 deletions(-) delete mode 100644 .appveyor.yml create mode 100644 .github/workflows/genbindings-ci.yml delete mode 100644 tools/appveyor-scripts/before-build.ps1 delete mode 100644 tools/appveyor-scripts/build.ps1 delete mode 100644 tools/appveyor-scripts/git_retry.py delete mode 100644 tools/appveyor-scripts/setup_android.py rename tools/{travis-scripts => unix-ci}/before-install.sh (100%) mode change 100755 => 100644 rename tools/{travis-scripts => unix-ci}/config.gitignore (100%) rename tools/{travis-scripts => unix-ci}/for-each-file-in-dir.sh (100%) mode change 100755 => 100644 rename tools/{travis-scripts => unix-ci}/generate-template-files.py (100%) mode change 100755 => 100644 rename tools/{travis-scripts => unix-ci}/run-script.sh (100%) mode change 100755 => 100644 diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 08b58326bd85..000000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,42 +0,0 @@ -version: 1.0.{build} -skip_tags: true -skip_branch_with_pr: true -image: - - Visual Studio 2019 -environment: - PYTHON: "C:\\Python27" - PYTHON_VERSION: "2.7.13" - PYTHON_ARCH: "32" - matrix: - - build_type: windows32_cmake_test -# - build_type: android_cpp_tests -# - build_type: android_lua_tests -# - build_type: android_cocos_new_test -# - build_type: android_cpp_empty_test -# - build_type: android_gen_libs - - -platform: - - x86 - -configuration: - - Release - -before_build: - - ps: ./tools/appveyor-scripts/before-build.ps1 - -build_script: - - ps: ./tools/appveyor-scripts/build.ps1 - -branches: - except: - - v1 - - v2 - - v4-develop - - v3-doc - - v3.11_backup - - v35-for-tizen - -clone_depth: 50 - -test: off diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 070b9c8ba299..30e2da959a43 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -48,8 +48,8 @@ jobs: - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all - run: tools/travis-scripts/before-install.sh + run: tools/unix-ci/before-install.sh - name: Build # Execute the build. You can specify a specific target with "--target " - run: tools/travis-scripts/run-script.sh + run: tools/unix-ci/run-script.sh diff --git a/.github/workflows/genbindings-ci.yml b/.github/workflows/genbindings-ci.yml new file mode 100644 index 000000000000..e79dc8b7d1f3 --- /dev/null +++ b/.github/workflows/genbindings-ci.yml @@ -0,0 +1,36 @@ +name: genbindings + +on: + push: + branches: + - dev + - main + paths: + - cocos/**/* + - extensions/**/* + - .github/workflows/genbindings-ci.yml + +jobs: + build: + if: ${{ !startsWith(github.event.commits[0].message, 'Merge pull request') }} + # The CMake configure and build commands are platform agnostic and should work equally + # well on Windows or Mac. You can convert this to a matrix build if you need + # cross-platform coverage. + # See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + lfs: 'true' + + - name: Setup Python + uses: actions/setup-python@v2 + + - uses: ilammy/msvc-dev-cmd@v1.9.0 + with: + arch: ${{ env.BUILD_ARCH }} + + - name: Build + run: tools\windows-ci\genbindings.ps1 diff --git a/.github/workflows/ios-ci.yml b/.github/workflows/ios-ci.yml index 107b7d92d9bc..ed204106b8a4 100644 --- a/.github/workflows/ios-ci.yml +++ b/.github/workflows/ios-ci.yml @@ -38,8 +38,8 @@ jobs: - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all - run: tools/travis-scripts/before-install.sh + run: tools/unix-ci/before-install.sh - name: Build # Execute the build. You can specify a specific target with "--target " - run: tools/travis-scripts/run-script.sh + run: tools/unix-ci/run-script.sh diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index 5c35dfe865ce..7047d0388641 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -19,7 +19,6 @@ env: GH_OS_NAME: linux BUILD_TARGET: linux BUILD_TYPE: Release - PYENV_VERSION: 2.7.18 jobs: build: @@ -39,8 +38,8 @@ jobs: - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands - run: tools/travis-scripts/before-install.sh + run: tools/unix-ci/before-install.sh - name: Build # Execute the build. You can specify a specific target with "--target " - run: tools/travis-scripts/run-script.sh + run: tools/unix-ci/run-script.sh diff --git a/.github/workflows/osx-ci.yml b/.github/workflows/osx-ci.yml index 23e6773ec213..8c925befa212 100644 --- a/.github/workflows/osx-ci.yml +++ b/.github/workflows/osx-ci.yml @@ -38,8 +38,8 @@ jobs: - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all - run: tools/travis-scripts/before-install.sh + run: tools/unix-ci/before-install.sh - name: Build # Execute the build. You can specify a specific target with "--target " - run: tools/travis-scripts/run-script.sh + run: tools/unix-ci/run-script.sh diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index 933cd58c2d7d..cb0956c9e157 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -8,7 +8,6 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release - PYENV_VERSION: 2.7.18 jobs: build-windows: @@ -44,8 +43,8 @@ jobs: lfs: 'true' - name: Build run: | - tools/travis-scripts/before-install.sh - tools/travis-scripts/run-script.sh + tools/unix-ci/before-install.sh + tools/unix-ci/run-script.sh build-android: name: build-android @@ -59,6 +58,7 @@ jobs: env: GH_OS_NAME: linux BUILD_TARGET: android + PYENV_VERSION: 2.7.18 BUILD_ARCH: ${{ matrix.arch }} steps: - uses: actions/checkout@v2 @@ -67,8 +67,8 @@ jobs: lfs: 'true' - name: Build run: | - tools/travis-scripts/before-install.sh - tools/travis-scripts/run-script.sh + tools/unix-ci/before-install.sh + tools/unix-ci/run-script.sh build-osx: name: build-osx @@ -83,8 +83,8 @@ jobs: lfs: 'true' - name: Build run: | - tools/travis-scripts/before-install.sh - tools/travis-scripts/run-script.sh + tools/unix-ci/before-install.sh + tools/unix-ci/run-script.sh build-ios: name: build-ios @@ -99,5 +99,5 @@ jobs: lfs: 'true' - name: Build run: | - tools/travis-scripts/before-install.sh - tools/travis-scripts/run-script.sh + tools/unix-ci/before-install.sh + tools/unix-ci/run-script.sh diff --git a/tools/appveyor-scripts/before-build.ps1 b/tools/appveyor-scripts/before-build.ps1 deleted file mode 100644 index 93dc6673685f..000000000000 --- a/tools/appveyor-scripts/before-build.ps1 +++ /dev/null @@ -1,51 +0,0 @@ -Set-PSDebug -Trace 1 -$python = "C:\\Python27\\python.exe" -$git_retry = "$pyhon $env:APPVEYOR_BUILD_FOLDER\tools\appveyor-scripts\git_retry.py" - - -function Download-Deps -{ - Write-Host "Download-Deps" - & $python $env:APPVEYOR_BUILD_FOLDER\download-deps.py --remove-download=False -} - -function Generate-Binding-Codes -{ - $env:NDK_ROOT=$env:APPVEYOR_BUILD_FOLDER + "\..\android-ndk-r16b" - - # install python module - & pip install PyYAML Cheetah - Write-Host "generating binding codes" - - Push-Location $env:APPVEYOR_BUILD_FOLDER\tools\tolua - & $python $env:APPVEYOR_BUILD_FOLDER\tools\tolua\genbindings.py - Pop-Location -} - -function Update-SubModule -{ - Push-Location $env:APPVEYOR_BUILD_FOLDER - & $git_retry submodule init - & $git_retry submodule update --recursive --depth=1 - Pop-Location -} - -Update-SubModule - -Download-Deps - -& python -m pip install retry - -If ($env:build_type -eq "windows32_cmake_test" ) { - & $python -u .\tools\appveyor-scripts\setup_android.py --ndk_only - Generate-Binding-Codes -} -elseif ($env:build_type -like "android*") { - & choco install ninja - & ninja --version - & $python -u .\tools\appveyor-scripts\setup_android.py - If ($env:build_type -eq "android_lua_tests") { - Generate-Binding-Codes - } - if ($lastexitcode -ne 0) {throw} -} \ No newline at end of file diff --git a/tools/appveyor-scripts/build.ps1 b/tools/appveyor-scripts/build.ps1 deleted file mode 100644 index c3682f5629db..000000000000 --- a/tools/appveyor-scripts/build.ps1 +++ /dev/null @@ -1,124 +0,0 @@ -Set-PSDebug -Trace 1 -$python = "D:\\Python27\\python.exe" - -Write-Host "Set environment" -# gradlew -$env:ANDROID_HOME=$env:APPVEYOR_BUILD_FOLDER + "\..\android-sdk" -$env:ANDROID_NDK_HOME=$env:APPVEYOR_BUILD_FOLDER + "\..\android-ndk-r16b" -# gen-libs -$env:ANDROID_SDK_ROOT=$env:APPVEYOR_BUILD_FOLDER + "\..\android-sdk" -$env:NDK_ROOT=$env:APPVEYOR_BUILD_FOLDER + "\..\android-ndk-r16b" - -function Retry-Command { - [CmdletBinding()] - Param( - [Parameter(Position=0, Mandatory=$true)] - [scriptblock]$ScriptBlock, - - [Parameter(Position=1, Mandatory=$false)] - [int]$Maximum = 5 - ) - - Begin { - $cnt = 0 - } - - Process { - do { - $cnt++ - try { - $ScriptBlock.Invoke() - return - } catch { - Write-Error $_.Exception.InnerException.Message -ErrorAction Continue - } - } while ($cnt -lt $Maximum) - - # Throw an error after $Maximum unsuccessful invocations. Doesn't need - # a condition, since the function returns upon successful invocation. - throw 'Execution failed.' - } -} - -function PushAndroidArtifacts -{ - # https://www.appveyor.com/docs/packaging-artifacts/ - $root = Resolve-Path app\build\outputs\apk; [IO.Directory]::GetFiles($root.Path, '*.*', 'AllDirectories') | % { Push-AppveyorArtifact $_ -FileName $_.Substring($root.Path.Length + 1) -DeploymentName to-publish } -} - - -If ($env:build_type -eq "android_cpp_tests") { - Write-Host "Build tests\cpp-tests" - Push-Location $env:APPVEYOR_BUILD_FOLDER\tests\cpp-tests\proj.android\ - Retry-Command -ScriptBlock { - & ./gradlew assembleRelease -PPROP_BUILD_TYPE=cmake --parallel --info - } -Maximum 5 - if ($lastexitcode -ne 0) {throw} - PushAndroidArtifacts - Pop-Location - -} elseif ($env:build_type -eq "android_lua_tests") { - Write-Host "Build tests\lua-test" - Push-Location $env:APPVEYOR_BUILD_FOLDER\tests\lua-tests\project\proj.android\ - # tocheck, release mode failed on "LuaTests:mergeReleaseAssets" - Retry-Command -ScriptBlock { - & ./gradlew assembleDebug -PPROP_BUILD_TYPE=cmake --parallel --info - } -Maximum 5 - - if ($lastexitcode -ne 0) {throw} - PushAndroidArtifacts - Pop-Location - -} elseif ($env:build_type -eq "android_cpp_empty_test") { - Write-Host "Build tests\cpp-empty-test" - Push-Location $env:APPVEYOR_BUILD_FOLDER\tests\cpp-empty-test\proj.android\ - Retry-Command -ScriptBlock { - & ./gradlew assembleRelease - } -Maximum 5 - if ($lastexitcode -ne 0) {throw} - PushAndroidArtifacts - Pop-Location - -} elseif ($env:build_type -eq "android_cocos_new_test") { - Write-Host "Create new project cocos_new_test" - & $python -u tools\console\bin\adxe.py --agreement n new -l cpp -p my.pack.qqqq cocos_new_test - if ($lastexitcode -ne 0) {throw} - - Write-Host "Build cocos_new_test" - Push-Location $env:APPVEYOR_BUILD_FOLDER\cocos_new_test\proj.android\ - Retry-Command -ScriptBlock { - & ./gradlew assembleRelease -PPROP_BUILD_TYPE=cmake --parallel --info - } -Maximum 5 - - if ($lastexitcode -ne 0) {throw} - PushAndroidArtifacts - Pop-Location -# TODO: uncomment when fixed -# } elseif ($env:build_type -eq "android_gen_libs") { -# Write-Host "Build cocos gen-libs" -# & $python -u tools\console\bin\adxe.py gen-libs -p android -m release --ap android-15 --app-abi armeabi-v7a --agreement n -# if ($lastexitcode -ne 0) {throw} - -} elseif ($env:build_type -eq "windows32_cmake_test") { - Write-Host "Build tests project by cmake" - - $ENV:PATH="$env:APPVEYOR_BUILD_FOLDER\tools\console\bin;$ENV:PATH" - - & mkdir $env:APPVEYOR_BUILD_FOLDER\win32-build - # if ($lastexitcode -ne 0) {throw} # mkdir return no-zero - - Push-Location $env:APPVEYOR_BUILD_FOLDER\win32-build - & cmake -A Win32 -DCMAKE_BUILD_TYPE=Release .. -DBUILD_EXTENSION_IMGUIEXT=ON - if ($lastexitcode -ne 0) {throw} - - & cmake --build . --config Release --target cpp-tests - if ($lastexitcode -ne 0) {throw} - - # & 7z a release_win32.7z $env:APPVEYOR_BUILD_FOLDER\win32-build\bin\ - # if ($lastexitcode -ne 0) {throw} - - # Push-AppveyorArtifact release_win32.7z - Pop-Location -} -Else { -} diff --git a/tools/appveyor-scripts/git_retry.py b/tools/appveyor-scripts/git_retry.py deleted file mode 100644 index 45694ef9a9d4..000000000000 --- a/tools/appveyor-scripts/git_retry.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -import logging -import optparse -import subprocess -import sys -import threading -import time -import re - -GIT_EXE="git" -GIT_TRANSIENT_ERRORS = ( - # crbug.com/285832 - r'!.*\[remote rejected\].*\(error in hook\)', - # crbug.com/289932 - r'!.*\[remote rejected\].*\(failed to lock\)', - # crbug.com/307156 - r'!.*\[remote rejected\].*\(error in Gerrit backend\)', - # crbug.com/285832 - r'remote error: Internal Server Error', - # crbug.com/294449 - r'fatal: Couldn\'t find remote ref ', - # crbug.com/220543 - r'git fetch_pack: expected ACK/NAK, got', - # crbug.com/189455 - r'protocol error: bad pack header', - # crbug.com/202807 - r'The remote end hung up unexpectedly', - # crbug.com/298189 - r'TLS packet with unexpected length was received', - # crbug.com/187444 - r'RPC failed; result=\d+, HTTP code = \d+', - # crbug.com/388876 - r'Connection timed out', - # crbug.com/430343 - # TODO(dnj): Resync with Chromite. - r'The requested URL returned error: 5\d+', -) -GIT_TRANSIENT_ERRORS_RE = re.compile('|'.join(GIT_TRANSIENT_ERRORS), - re.IGNORECASE) - -class TeeThread(threading.Thread): - def __init__(self, fd, out_fd, name): - super(TeeThread, self).__init__(name='git-retry.tee.%s' % (name,)) - self.data = None - self.fd = fd - self.out_fd = out_fd - def run(self): - chunks = [] - for line in self.fd: - chunks.append(line) - self.out_fd.write(line) - self.data = ''.join(chunks) -class GitRetry(object): - logger = logging.getLogger('git-retry') - DEFAULT_DELAY_SECS = 3.0 - DEFAULT_RETRY_COUNT = 5 - def __init__(self, retry_count=None, delay=None, delay_factor=None): - self.retry_count = retry_count or self.DEFAULT_RETRY_COUNT - self.delay = max(delay, 0) if delay else 0 - self.delay_factor = max(delay_factor, 0) if delay_factor else 0 - def shouldRetry(self, stderr): - m = GIT_TRANSIENT_ERRORS_RE.search(stderr) - if not m: - return False - self.logger.info("Encountered known transient error: [%s]", - stderr[m.start(): m.end()]) - return True - @staticmethod - def execute(*args): - args = (GIT_EXE,) + args - proc = subprocess.Popen( - args, - stderr=subprocess.PIPE, - ) - stderr_tee = TeeThread(proc.stderr, sys.stderr, 'stderr') - # Start our process. Collect/tee 'stdout' and 'stderr'. - stderr_tee.start() - try: - proc.wait() - except KeyboardInterrupt: - proc.kill() - raise - finally: - stderr_tee.join() - return proc.returncode, None, stderr_tee.data - def computeDelay(self, iteration): - """Returns: the delay (in seconds) for a given iteration - The first iteration has a delay of '0'. - Args: - iteration: (int) The iteration index (starting with zero as the first - iteration) - """ - if (not self.delay) or (iteration == 0): - return 0 - if self.delay_factor == 0: - # Linear delay - return iteration * self.delay - # Exponential delay - return (self.delay_factor ** (iteration - 1)) * self.delay - def __call__(self, *args): - returncode = 0 - for i in xrange(self.retry_count): - # If the previous run failed and a delay is configured, delay before the - # next run. - delay = self.computeDelay(i) - if delay > 0: - self.logger.info("Delaying for [%s second(s)] until next retry", delay) - time.sleep(delay) - self.logger.debug("Executing subprocess (%d/%d) with arguments: %s", - (i+1), self.retry_count, args) - returncode, _, stderr = self.execute(*args) - self.logger.debug("Process terminated with return code: %d", returncode) - if returncode == 0: - break - if not self.shouldRetry(stderr): - self.logger.error("Process failure was not known to be transient; " - "terminating with return code %d", returncode) - break - return returncode -def main(args): - parser = optparse.OptionParser() - parser.disable_interspersed_args() - parser.add_option('-v', '--verbose', - action='count', default=0, - help="Increase verbosity; can be specified multiple times") - parser.add_option('-c', '--retry-count', metavar='COUNT', - type=int, default=GitRetry.DEFAULT_RETRY_COUNT, - help="Number of times to retry (default=%default)") - parser.add_option('-d', '--delay', metavar='SECONDS', - type=float, default=GitRetry.DEFAULT_DELAY_SECS, - help="Specifies the amount of time (in seconds) to wait " - "between successive retries (default=%default). This " - "can be zero.") - parser.add_option('-D', '--delay-factor', metavar='FACTOR', - type=int, default=2, - help="The exponential factor to apply to delays in between " - "successive failures (default=%default). If this is " - "zero, delays will increase linearly. Set this to " - "one to have a constant (non-increasing) delay.") - opts, args = parser.parse_args(args) - # Configure logging verbosity - if opts.verbose == 0: - logging.getLogger().setLevel(logging.WARNING) - elif opts.verbose == 1: - logging.getLogger().setLevel(logging.INFO) - else: - logging.getLogger().setLevel(logging.DEBUG) - # Execute retries - retry = GitRetry( - retry_count=opts.retry_count, - delay=opts.delay, - delay_factor=opts.delay_factor, - ) - return retry(*args) -if __name__ == '__main__': - logging.basicConfig() - logging.getLogger().setLevel(logging.WARNING) - try: - sys.exit(main(sys.argv[1:])) - except KeyboardInterrupt: - sys.stderr.write('interrupted\n') - sys.exit(1) \ No newline at end of file diff --git a/tools/appveyor-scripts/setup_android.py b/tools/appveyor-scripts/setup_android.py deleted file mode 100644 index da29209e19f8..000000000000 --- a/tools/appveyor-scripts/setup_android.py +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python -''' -aaa -''' -import os -import urllib -import zipfile -import platform -import sys -import subprocess -import tempfile -import argparse -import ssl -try: - ssl._create_default_https_context = ssl._create_unverified_context - print("==> setup_android.py set ssl context ok") -except Exception: - pass -from retry import retry - -if(sys.version_info.major >= 3): - import urllib.request - -DIR_PATH = os.path.dirname(os.path.realpath(__file__)) - -COCOS2D_X = os.path.abspath(os.path.join(DIR_PATH, "../..")) -# ROOT_DIR/cocos2d-x -ROOT_DIR = os.path.abspath(os.path.join(COCOS2D_X, "..")) - -NDK_VER = "19.2.5345600" # "r19c" - -# ANDROID_NDK = os.path.join(ROOT_DIR, "android-ndk-" + NDK_VER) -ANDROID_SDK = os.path.join(ROOT_DIR, "android-sdk") -ANDROID_NDK = os.path.join(ANDROID_SDK, "ndk/" + NDK_VER) -SDK_MANAGER = os.path.join(ROOT_DIR, "cmdline-tools/bin/sdkmanager") -SYSTEM = platform.system().lower() -if SYSTEM == "windows": - SDK_MANAGER = SDK_MANAGER + ".bat" - - -def run(command): - print("=" * 80) - print(command) - subprocess.check_call(command.split()) - - -def run_with_yes(command): - print("=" * 80) - print("yes|" + command) - f = tempfile.TemporaryFile("w") - repeat_yes = 50 - f.write("y\n" * repeat_yes) - f.seek(0) - subprocess.check_call(command.split(), stdin=f) - - -def unzip(zip_file, directory): - print("=" * 80) - print("Unzip: " + zip_file + " to " + directory) - if SYSTEM == "windows": - zipfile.ZipFile(zip_file).extractall(directory) - else: - # module zipfile ignore priviliges i.e. +x - cmd = "unzip -d " + directory + " " + zip_file - subprocess.check_output(cmd.split()) - -def download(url, zip_file): - print("=" * 80) - print("Download: " + url + ", file: " + zip_file) - try: - os.remove(zip_file) - except OSError: - pass - if(sys.version_info.major >= 3): - urllib.request.urlretrieve(url, zip_file) - else: - urllib.urlretrieve(url, zip_file) - - -@retry(Exception, tries=5, delay=1, backoff=1) -def install_android_ndk(): - file_name = "android-ndk-" + NDK_VER + "-" + SYSTEM + "-x86_64.zip" - url = "https://dl.google.com/android/repository/" + file_name - zip_file = os.path.abspath(os.path.join(ROOT_DIR, file_name)) - - download(url, zip_file) - unzip(zip_file, ROOT_DIR) - -@retry(Exception, tries=5, delay=1, backoff=1) -def install_android_cmdline_tools(): - file_plat = platform.system().lower() - if file_plat == "darwin": - file_plat = "mac" - file_name = "commandlinetools-{system}-7302050_latest.zip".format(system=file_plat) - url = "https://dl.google.com/android/repository/" + file_name - zip_file = os.path.abspath(os.path.join(ROOT_DIR, file_name)) # folder is cmdline-tools - - download(url, zip_file) - unzip(zip_file, os.path.join(ROOT_DIR, "")) - - -@retry(Exception, tries=5, delay=1, backoff=1) -def install_android_sdk(): - # list packages - # run_with_yes(SDK_MANAGER + " --list --sdk_root=" + ANDROID_SDK) - - switches = " --verbose --sdk_root=" + ANDROID_SDK + " " - cmd_base = SDK_MANAGER + switches - packages = [ - 'platform-tools', - 'cmdline-tools;latest', - 'platforms;android-28', - 'build-tools;29.0.2', - 'ndk;' + NDK_VER - ] - - run_with_yes(cmd_base + " ".join(packages)) - # run_with_yes(cmd_base + " --install ndk;" + NDK_VER) - - -def export_environment(ndk_only): - with open(os.path.join(ROOT_DIR, "environment.sh"), "a") as myfile: - if not ndk_only: - myfile.write("export ANDROID_HOME=" + ANDROID_SDK + "\n") - myfile.write("export ANDROID_SDK_ROOT=" + ANDROID_SDK + "\n") - myfile.write("export ANDROID_NDK_HOME=" + ANDROID_NDK + "\n") - myfile.write("export ANDROID_NDK=" + ANDROID_NDK + "\n") - - with open(os.path.join(ROOT_DIR, "environment.ps1"), "a") as myfile: - if not ndk_only: - myfile.write("$env:ANDROID_HOME=\"" + ANDROID_SDK + "\"\n") - myfile.write("$env:ANDROID_SDK_ROOT=\"" + ANDROID_SDK + "\"\n") - myfile.write("$env:ANDROID_NDK_HOME=\"" + ANDROID_NDK + "\"\n") - myfile.write("$env:ANDROID_NDK=\"" + ANDROID_NDK + "\"\n") - -def main(ndk_only): - # if not ndk_only: - install_android_cmdline_tools() - install_android_sdk() - # install_android_ndk() - export_environment(ndk_only) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Install android sdk/ndk') - parser.add_argument("--ndk_only", help="Install ndk only", action="store_true") - args = parser.parse_args() - main(args.ndk_only) diff --git a/tools/travis-scripts/before-install.sh b/tools/unix-ci/before-install.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/travis-scripts/before-install.sh rename to tools/unix-ci/before-install.sh diff --git a/tools/travis-scripts/config.gitignore b/tools/unix-ci/config.gitignore similarity index 100% rename from tools/travis-scripts/config.gitignore rename to tools/unix-ci/config.gitignore diff --git a/tools/travis-scripts/for-each-file-in-dir.sh b/tools/unix-ci/for-each-file-in-dir.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/travis-scripts/for-each-file-in-dir.sh rename to tools/unix-ci/for-each-file-in-dir.sh diff --git a/tools/travis-scripts/generate-template-files.py b/tools/unix-ci/generate-template-files.py old mode 100755 new mode 100644 similarity index 100% rename from tools/travis-scripts/generate-template-files.py rename to tools/unix-ci/generate-template-files.py diff --git a/tools/travis-scripts/run-script.sh b/tools/unix-ci/run-script.sh old mode 100755 new mode 100644 similarity index 100% rename from tools/travis-scripts/run-script.sh rename to tools/unix-ci/run-script.sh From cc534cddd283b0ea80810df79a3e598f1f12fa9c Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 19:43:55 +0800 Subject: [PATCH 53/58] Fix chmod for ci scripts --- tools/unix-ci/before-install.sh | 0 tools/unix-ci/config.gitignore | 0 tools/unix-ci/for-each-file-in-dir.sh | 0 tools/unix-ci/generate-template-files.py | 0 tools/unix-ci/run-script.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tools/unix-ci/before-install.sh mode change 100644 => 100755 tools/unix-ci/config.gitignore mode change 100644 => 100755 tools/unix-ci/for-each-file-in-dir.sh mode change 100644 => 100755 tools/unix-ci/generate-template-files.py mode change 100644 => 100755 tools/unix-ci/run-script.sh diff --git a/tools/unix-ci/before-install.sh b/tools/unix-ci/before-install.sh old mode 100644 new mode 100755 diff --git a/tools/unix-ci/config.gitignore b/tools/unix-ci/config.gitignore old mode 100644 new mode 100755 diff --git a/tools/unix-ci/for-each-file-in-dir.sh b/tools/unix-ci/for-each-file-in-dir.sh old mode 100644 new mode 100755 diff --git a/tools/unix-ci/generate-template-files.py b/tools/unix-ci/generate-template-files.py old mode 100644 new mode 100755 diff --git a/tools/unix-ci/run-script.sh b/tools/unix-ci/run-script.sh old mode 100644 new mode 100755 From 369d84cc3ffd479161ce75727528593e0ffa2d16 Mon Sep 17 00:00:00 2001 From: deal Date: Thu, 30 Dec 2021 19:53:30 +0800 Subject: [PATCH 54/58] Update pr-ci.yml --- .github/workflows/pr-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index cb0956c9e157..6d756d8ecbf1 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -8,6 +8,7 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release + PYENV_VERSION: 2.7.18 jobs: build-windows: @@ -58,7 +59,6 @@ jobs: env: GH_OS_NAME: linux BUILD_TARGET: android - PYENV_VERSION: 2.7.18 BUILD_ARCH: ${{ matrix.arch }} steps: - uses: actions/checkout@v2 From a2ff94facd57ae834ae2b334bec742ba6fe14746 Mon Sep 17 00:00:00 2001 From: deal Date: Thu, 30 Dec 2021 19:56:07 +0800 Subject: [PATCH 55/58] Update linux-ci.yml --- .github/workflows/linux-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux-ci.yml b/.github/workflows/linux-ci.yml index 7047d0388641..086aecbe2026 100644 --- a/.github/workflows/linux-ci.yml +++ b/.github/workflows/linux-ci.yml @@ -19,6 +19,7 @@ env: GH_OS_NAME: linux BUILD_TARGET: linux BUILD_TYPE: Release + PYENV_VERSION: 2.7.18 jobs: build: From afe3865921cd61d79c9e026864ec13e975643cef Mon Sep 17 00:00:00 2001 From: deal Date: Thu, 30 Dec 2021 20:09:25 +0800 Subject: [PATCH 56/58] Update before-install.sh --- tools/unix-ci/before-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/unix-ci/before-install.sh b/tools/unix-ci/before-install.sh index 35f1b4063a14..7145a9de42ad 100755 --- a/tools/unix-ci/before-install.sh +++ b/tools/unix-ci/before-install.sh @@ -26,9 +26,9 @@ function install_android_sdk() # full cmd: echo yes|cmdline-tools/bin/sdkmanager --verbose --sdk_root=sdk platform-tools "cmdline-tools;latest" "platforms;android-28" "build-tools;29.0.2" "ndk;19.2.5345600" if [ "$BUILD_TARGET" == "android" ]\ || [ "$BUILD_TARGET" == "android_lua" ] ; then - python $ADXE_ROOT/tools/appveyor-scripts/setup_android.py + python $ADXE_ROOT/tools/unix-ci/setup_android.py else - python $ADXE_ROOT/tools/appveyor-scripts/setup_android.py --ndk_only + python $ADXE_ROOT/tools/unix-ci/setup_android.py --ndk_only fi } From f9d2c3cb7d8065a78f9095464fd2cad91b4c33fc Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 20:15:42 +0800 Subject: [PATCH 57/58] Tidy ci scripts --- .github/workflows/genbindings-ci.yml | 2 +- .github/workflows/pr-ci.yml | 2 +- .github/workflows/windows-ci.yml | 2 +- tools/unix-ci/setup_android.py | 148 +++++++++++++++++++++++++ tools/{windows-ci => win-ci}/build.ps1 | 0 tools/win-ci/genbindings.ps1 | 37 +++++++ 6 files changed, 188 insertions(+), 3 deletions(-) create mode 100644 tools/unix-ci/setup_android.py rename tools/{windows-ci => win-ci}/build.ps1 (100%) create mode 100644 tools/win-ci/genbindings.ps1 diff --git a/.github/workflows/genbindings-ci.yml b/.github/workflows/genbindings-ci.yml index e79dc8b7d1f3..9e2857817be9 100644 --- a/.github/workflows/genbindings-ci.yml +++ b/.github/workflows/genbindings-ci.yml @@ -33,4 +33,4 @@ jobs: arch: ${{ env.BUILD_ARCH }} - name: Build - run: tools\windows-ci\genbindings.ps1 + run: tools\win-ci\genbindings.ps1 diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index 6d756d8ecbf1..23cc0f8019fa 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -29,7 +29,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v2 - name: Build - run: tools\windows-ci\build.ps1 $env:BUILD_ARCH + run: tools\win-ci\build.ps1 $env:BUILD_ARCH build-linux: name: build-linux diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 6ed0450144f8..0abb5b8b8a69 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -44,4 +44,4 @@ jobs: arch: ${{ env.BUILD_ARCH }} - name: Build - run: tools\windows-ci\build.ps1 $env:BUILD_ARCH + run: tools\win-ci\build.ps1 $env:BUILD_ARCH diff --git a/tools/unix-ci/setup_android.py b/tools/unix-ci/setup_android.py new file mode 100644 index 000000000000..da29209e19f8 --- /dev/null +++ b/tools/unix-ci/setup_android.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python +''' +aaa +''' +import os +import urllib +import zipfile +import platform +import sys +import subprocess +import tempfile +import argparse +import ssl +try: + ssl._create_default_https_context = ssl._create_unverified_context + print("==> setup_android.py set ssl context ok") +except Exception: + pass +from retry import retry + +if(sys.version_info.major >= 3): + import urllib.request + +DIR_PATH = os.path.dirname(os.path.realpath(__file__)) + +COCOS2D_X = os.path.abspath(os.path.join(DIR_PATH, "../..")) +# ROOT_DIR/cocos2d-x +ROOT_DIR = os.path.abspath(os.path.join(COCOS2D_X, "..")) + +NDK_VER = "19.2.5345600" # "r19c" + +# ANDROID_NDK = os.path.join(ROOT_DIR, "android-ndk-" + NDK_VER) +ANDROID_SDK = os.path.join(ROOT_DIR, "android-sdk") +ANDROID_NDK = os.path.join(ANDROID_SDK, "ndk/" + NDK_VER) +SDK_MANAGER = os.path.join(ROOT_DIR, "cmdline-tools/bin/sdkmanager") +SYSTEM = platform.system().lower() +if SYSTEM == "windows": + SDK_MANAGER = SDK_MANAGER + ".bat" + + +def run(command): + print("=" * 80) + print(command) + subprocess.check_call(command.split()) + + +def run_with_yes(command): + print("=" * 80) + print("yes|" + command) + f = tempfile.TemporaryFile("w") + repeat_yes = 50 + f.write("y\n" * repeat_yes) + f.seek(0) + subprocess.check_call(command.split(), stdin=f) + + +def unzip(zip_file, directory): + print("=" * 80) + print("Unzip: " + zip_file + " to " + directory) + if SYSTEM == "windows": + zipfile.ZipFile(zip_file).extractall(directory) + else: + # module zipfile ignore priviliges i.e. +x + cmd = "unzip -d " + directory + " " + zip_file + subprocess.check_output(cmd.split()) + +def download(url, zip_file): + print("=" * 80) + print("Download: " + url + ", file: " + zip_file) + try: + os.remove(zip_file) + except OSError: + pass + if(sys.version_info.major >= 3): + urllib.request.urlretrieve(url, zip_file) + else: + urllib.urlretrieve(url, zip_file) + + +@retry(Exception, tries=5, delay=1, backoff=1) +def install_android_ndk(): + file_name = "android-ndk-" + NDK_VER + "-" + SYSTEM + "-x86_64.zip" + url = "https://dl.google.com/android/repository/" + file_name + zip_file = os.path.abspath(os.path.join(ROOT_DIR, file_name)) + + download(url, zip_file) + unzip(zip_file, ROOT_DIR) + +@retry(Exception, tries=5, delay=1, backoff=1) +def install_android_cmdline_tools(): + file_plat = platform.system().lower() + if file_plat == "darwin": + file_plat = "mac" + file_name = "commandlinetools-{system}-7302050_latest.zip".format(system=file_plat) + url = "https://dl.google.com/android/repository/" + file_name + zip_file = os.path.abspath(os.path.join(ROOT_DIR, file_name)) # folder is cmdline-tools + + download(url, zip_file) + unzip(zip_file, os.path.join(ROOT_DIR, "")) + + +@retry(Exception, tries=5, delay=1, backoff=1) +def install_android_sdk(): + # list packages + # run_with_yes(SDK_MANAGER + " --list --sdk_root=" + ANDROID_SDK) + + switches = " --verbose --sdk_root=" + ANDROID_SDK + " " + cmd_base = SDK_MANAGER + switches + packages = [ + 'platform-tools', + 'cmdline-tools;latest', + 'platforms;android-28', + 'build-tools;29.0.2', + 'ndk;' + NDK_VER + ] + + run_with_yes(cmd_base + " ".join(packages)) + # run_with_yes(cmd_base + " --install ndk;" + NDK_VER) + + +def export_environment(ndk_only): + with open(os.path.join(ROOT_DIR, "environment.sh"), "a") as myfile: + if not ndk_only: + myfile.write("export ANDROID_HOME=" + ANDROID_SDK + "\n") + myfile.write("export ANDROID_SDK_ROOT=" + ANDROID_SDK + "\n") + myfile.write("export ANDROID_NDK_HOME=" + ANDROID_NDK + "\n") + myfile.write("export ANDROID_NDK=" + ANDROID_NDK + "\n") + + with open(os.path.join(ROOT_DIR, "environment.ps1"), "a") as myfile: + if not ndk_only: + myfile.write("$env:ANDROID_HOME=\"" + ANDROID_SDK + "\"\n") + myfile.write("$env:ANDROID_SDK_ROOT=\"" + ANDROID_SDK + "\"\n") + myfile.write("$env:ANDROID_NDK_HOME=\"" + ANDROID_NDK + "\"\n") + myfile.write("$env:ANDROID_NDK=\"" + ANDROID_NDK + "\"\n") + +def main(ndk_only): + # if not ndk_only: + install_android_cmdline_tools() + install_android_sdk() + # install_android_ndk() + export_environment(ndk_only) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Install android sdk/ndk') + parser.add_argument("--ndk_only", help="Install ndk only", action="store_true") + args = parser.parse_args() + main(args.ndk_only) diff --git a/tools/windows-ci/build.ps1 b/tools/win-ci/build.ps1 similarity index 100% rename from tools/windows-ci/build.ps1 rename to tools/win-ci/build.ps1 diff --git a/tools/win-ci/genbindings.ps1 b/tools/win-ci/genbindings.ps1 new file mode 100644 index 000000000000..5a81624d957a --- /dev/null +++ b/tools/win-ci/genbindings.ps1 @@ -0,0 +1,37 @@ +## Installing pyenv +mkdir $HOME/.pyenv/ +mkdir pyenv + +curl -L "https://github.com/pyenv-win/pyenv-win/archive/master.zip" -o "pyenv-win.zip" +Expand-Archive -Path pyenv-win.zip -DestinationPath .\ +$pyenv_root="$HOME\.pyenv" +move "pyenv-win-master\pyenv-win" "$pyenv_root\" +$pyenv_bin="$pyenv_root\pyenv-win\bin" + +$env:Path = "$pyenv_bin;$env:Path" + +## Installing python-2.7.18-win32 and install packages +pyenv install -l +pyenv install 2.7.18-win32 + +$python_root="$pyenv_root\pyenv-win\versions\2.7.18-win32" + +$env:Path = "$python_root\Scripts\;$python_root\;$env:Path" + +(Get-Command python.exe).Path +python -V + +pip install PyYAML Cheetah + +## download ndk +curl -L "https://dl.google.com/android/repository/android-ndk-r19c-windows-x86_64.zip" -o "android-ndk-r19c-windows-x86_64.zip" +Expand-Archive -Path android-ndk-r19c-windows-x86_64.zip -DestinationPath .\ +ls +$ndk_root=(Resolve-Path .\android-ndk-r19c).Path +$env:ANDROID_NDK=$ndk_root + + +## run genbindings.py +pwd +cd tools/tolua +python genbindings.py From 369de318531ebcdd5b168bf8e65b3dfbe4fec927 Mon Sep 17 00:00:00 2001 From: halx99 Date: Thu, 30 Dec 2021 21:24:22 +0800 Subject: [PATCH 58/58] Tidy tools --- tools/console/README.md | 13 - tools/console/config.json | 6 - tools/console/download-bin.py | 308 -------------- tools/jenkins-scripts/configs/autotest.py | 10 - .../configs/cocos-2dx-develop-android.py | 21 - .../configs/cocos-2dx-develop-base-repo.py | 22 - .../configs/cocos-2dx-develop-ios.py | 20 - .../configs/cocos-2dx-develop-win32.py | 24 -- .../configs/cocos-2dx-doxygen.py | 24 -- ...-2dx-pull-request-build-comment-trigger.py | 8 - .../cocos-2dx-pull-request-build-trigger.py | 8 - .../configs/cocos-2dx-pull-request-build.py | 32 -- .../configs/cocos2d-console-test.py | 12 - .../configs/cocostudiox-base-repo.py | 8 - .../configs/cocostudiox-daily-build.py | 30 -- .../configs/jenkins-job-watchdog.py | 2 - .../configs/manual-update-jenkins-scripts.py | 2 - tools/jenkins-scripts/daily-build.py | 148 ------- .../do-pull-request-builder.py | 114 ------ .../master-scripts/autotest.py | 182 --------- .../master-scripts/ci-dailybuild-android.py | 168 -------- .../master-scripts/ci-release-test.py | 188 --------- .../master-scripts/cocos-console-test.py | 379 ------------------ .../cocos2dx-libsize-tracking.py | 88 ---- .../master-scripts/emptytest-post-build.py | 32 -- .../master-scripts/emptytest.py | 354 ---------------- .../master-scripts/github-pr-watchdog.py | 72 ---- .../master-scripts/job-comment-trigger.py | 136 ------- .../master-scripts/job-trigger.py | 125 ------ .../master-scripts/post-build.py | 72 ---- .../master-scripts/watchdog.py | 114 ------ tools/jenkins-scripts/pull-request-builder.py | 149 ------- .../slave-scripts/framework/android-build.sh | 5 - .../slave-scripts/framework/mac-build.sh | 5 - .../slave-scripts/framework/win32-build.bat | 2 - .../jenkins-scripts/slave-scripts/gen_jsb.py | 16 - .../slave-scripts/runtime/android-build.sh | 12 - .../slave-scripts/runtime/ios-build.sh | 25 -- .../slave-scripts/runtime/linux-build.sh | 13 - .../slave-scripts/runtime/mac-build.sh | 19 - .../slave-scripts/runtime/win32-cpp.bat | 2 - .../slave-scripts/runtime/win32-js.bat | 2 - .../slave-scripts/runtime/win32-lua.bat | 2 - .../runtime/windows-universal-cpp.bat | 2 - .../runtime/windows-universal-js.bat | 2 - .../runtime/windows-universal-lua.bat | 2 - .../slave-scripts/templates/android-build.sh | 12 - .../slave-scripts/templates/ios-build.sh | 25 -- .../slave-scripts/templates/linux-build.sh | 13 - .../slave-scripts/templates/mac-build.sh | 25 -- .../slave-scripts/templates/win32-cpp.bat | 2 - .../slave-scripts/templates/win32-js.bat | 2 - .../slave-scripts/templates/win32-lua.bat | 2 - .../templates/windows-universal-cpp.bat | 2 - .../templates/windows-universal-js.bat | 2 - .../templates/windows-universal-lua.bat | 2 - .../slave-scripts/tests/android-build.sh | 5 - .../slave-scripts/tests/ios-build.sh | 7 - .../slave-scripts/tests/linux-build.sh | 12 - .../slave-scripts/tests/mac-build.sh | 22 - .../slave-scripts/tests/tizen-build.sh | 26 -- .../slave-scripts/tests/win32-build.bat | 2 - .../slave-scripts/tests/windows-universal.bat | 2 - tools/jenkins-scripts/utils/create-job.py | 32 -- .../utils/create-template-project.py | 19 - tools/jenkins-scripts/utils/reboot.py | 73 ---- tools/jenkins-scripts/utils/upload_apk.sh | 9 - 67 files changed, 3276 deletions(-) delete mode 100644 tools/console/config.json delete mode 100644 tools/console/download-bin.py delete mode 100644 tools/jenkins-scripts/configs/autotest.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-develop-android.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-develop-base-repo.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-develop-ios.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-develop-win32.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-doxygen.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-comment-trigger.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-trigger.py delete mode 100644 tools/jenkins-scripts/configs/cocos-2dx-pull-request-build.py delete mode 100644 tools/jenkins-scripts/configs/cocos2d-console-test.py delete mode 100644 tools/jenkins-scripts/configs/cocostudiox-base-repo.py delete mode 100644 tools/jenkins-scripts/configs/cocostudiox-daily-build.py delete mode 100644 tools/jenkins-scripts/configs/jenkins-job-watchdog.py delete mode 100644 tools/jenkins-scripts/configs/manual-update-jenkins-scripts.py delete mode 100644 tools/jenkins-scripts/daily-build.py delete mode 100755 tools/jenkins-scripts/do-pull-request-builder.py delete mode 100755 tools/jenkins-scripts/master-scripts/autotest.py delete mode 100644 tools/jenkins-scripts/master-scripts/ci-dailybuild-android.py delete mode 100644 tools/jenkins-scripts/master-scripts/ci-release-test.py delete mode 100755 tools/jenkins-scripts/master-scripts/cocos-console-test.py delete mode 100644 tools/jenkins-scripts/master-scripts/cocos2dx-libsize-tracking.py delete mode 100644 tools/jenkins-scripts/master-scripts/emptytest-post-build.py delete mode 100644 tools/jenkins-scripts/master-scripts/emptytest.py delete mode 100644 tools/jenkins-scripts/master-scripts/github-pr-watchdog.py delete mode 100644 tools/jenkins-scripts/master-scripts/job-comment-trigger.py delete mode 100755 tools/jenkins-scripts/master-scripts/job-trigger.py delete mode 100644 tools/jenkins-scripts/master-scripts/post-build.py delete mode 100644 tools/jenkins-scripts/master-scripts/watchdog.py delete mode 100755 tools/jenkins-scripts/pull-request-builder.py delete mode 100755 tools/jenkins-scripts/slave-scripts/framework/android-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/framework/mac-build.sh delete mode 100644 tools/jenkins-scripts/slave-scripts/framework/win32-build.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/gen_jsb.py delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/android-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/ios-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/linux-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/mac-build.sh delete mode 100644 tools/jenkins-scripts/slave-scripts/runtime/win32-cpp.bat delete mode 100644 tools/jenkins-scripts/slave-scripts/runtime/win32-js.bat delete mode 100644 tools/jenkins-scripts/slave-scripts/runtime/win32-lua.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/windows-universal-cpp.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/windows-universal-js.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/runtime/windows-universal-lua.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/android-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/ios-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/linux-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/mac-build.sh delete mode 100644 tools/jenkins-scripts/slave-scripts/templates/win32-cpp.bat delete mode 100644 tools/jenkins-scripts/slave-scripts/templates/win32-js.bat delete mode 100644 tools/jenkins-scripts/slave-scripts/templates/win32-lua.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/windows-universal-cpp.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/windows-universal-js.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/templates/windows-universal-lua.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/android-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/ios-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/linux-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/mac-build.sh delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/tizen-build.sh delete mode 100644 tools/jenkins-scripts/slave-scripts/tests/win32-build.bat delete mode 100755 tools/jenkins-scripts/slave-scripts/tests/windows-universal.bat delete mode 100644 tools/jenkins-scripts/utils/create-job.py delete mode 100644 tools/jenkins-scripts/utils/create-template-project.py delete mode 100755 tools/jenkins-scripts/utils/reboot.py delete mode 100755 tools/jenkins-scripts/utils/upload_apk.sh diff --git a/tools/console/README.md b/tools/console/README.md index 9e0ac874c934..35230c593aa2 100644 --- a/tools/console/README.md +++ b/tools/console/README.md @@ -1,19 +1,6 @@ # adxe-console - -## Download - -```sh -$ NOT DONE YET -``` - -## Install - -```sh -$ NOT DONE YET -``` - ## Vision of adxe-console diff --git a/tools/console/config.json b/tools/console/config.json deleted file mode 100644 index eb39f24b1fe8..000000000000 --- a/tools/console/config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version":"v3-console-16", - "zip_file_size":"38343506", - "repo_name":"console-binary", - "repo_parent":"https://github.com/cocos2d/" -} diff --git a/tools/console/download-bin.py b/tools/console/download-bin.py deleted file mode 100644 index 65fd58a11029..000000000000 --- a/tools/console/download-bin.py +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env python -#coding=utf-8 -# -# ./download-bin.py -# -# Download adxe-console resources from github (https://github.com/natural-law/console-binary) and extract from ZIP -# -# Helps prevent repo bloat due to large binary files since they can -# be hosted separately. -# - -"""**************************************************************************** -Copyright (c) 2014 cocos2d-x.org -Copyright (c) 2014 Chukong Technologies Inc. - -http://www.cocos2d-x.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -****************************************************************************""" - -import os.path,zipfile -import shutil -import sys -import traceback -import distutils -import fileinput -import json - -from optparse import OptionParser -from time import time -from sys import stdout -from distutils.errors import DistutilsError -from distutils.dir_util import copy_tree, remove_tree - -class UnrecognizedFormat: - def __init__(self, prompt): - self._prompt = prompt - def __str__(self): - return self._prompt - -class CocosZipInstaller(object): - def __init__(self, workpath, config_path, version_path, remote_version_key = None): - self._workpath = workpath - self._config_path = config_path - self._version_path = version_path - - data = self.load_json_file(config_path) - - self._current_version = data["version"] - self._repo_name = data["repo_name"] - self._filename = self._current_version + '.zip' - self._url = data["repo_parent"] + self._repo_name + '/archive/' + self._filename - self._zip_file_size = int(data["zip_file_size"]) - # 'v' letter was swallowed by github, so we need to substring it from the 2nd letter - self._extracted_folder_name = self._repo_name + '-' + self._current_version[1:] - - try: - data = self.load_json_file(version_path) - if remote_version_key == None: - self._remote_version = data["version"] - else: - self._remote_version = data[remote_version_key] - except: - print("==> version file doesn't exist") - - def get_input_value(self, prompt): - ret = "" - if(sys.version_info.major >= 3): - ret = input(prompt) - else: - ret = raw_input(prompt) - ret.rstrip(" \t") - return ret - - def download_file(self): - print("==> Ready to download '%s' from '%s'" % (self._filename, self._url)) - import urllib2 - try: - u = urllib2.urlopen(self._url) - except urllib2.HTTPError as e: - if e.code == 404: - print("==> Error: Could not find the file from url: '%s'" % (self._url)) - print("==> Http request failed, error code: " + str(e.code) + ", reason: " + e.read()) - sys.exit(1) - - f = open(self._filename, 'wb') - meta = u.info() - content_len = meta.getheaders("Content-Length") - file_size = 0 - if content_len and len(content_len) > 0: - file_size = int(content_len[0]) - else: - # github server may not reponse a header information which contains `Content-Length`, - # therefore, the size needs to be written hardcode here. While server doesn't return - # `Content-Length`, use it instead - print("==> WARNING: Couldn't grab the file size from remote, use 'zip_file_size' section in '%s'" % self._config_path) - file_size = self._zip_file_size - - print("==> Starting to download, please wait ...") - - file_size_dl = 0 - block_sz = 8192 - block_size_per_second = 0 - old_time=time() - - while True: - buffer = u.read(block_sz) - if not buffer: - break - - file_size_dl += len(buffer) - block_size_per_second += len(buffer) - f.write(buffer) - new_time = time() - if (new_time - old_time) > 1: - speed = block_size_per_second / (new_time - old_time) / 1000.0 - status = "" - if file_size != 0: - percent = file_size_dl * 100. / file_size - status = r"Downloaded: %6dK / Total: %dK, Percent: %3.2f%%, Speed: %6.2f KB/S " % (file_size_dl / 1000, file_size / 1000, percent, speed) - else: - status = r"Downloaded: %6dK, Speed: %6.2f KB/S " % (file_size_dl / 1000, speed) - - status = status + chr(8)*(len(status)+1) - print(status), - sys.stdout.flush() - block_size_per_second = 0 - old_time = new_time - - print("==> Downloading finished!") - f.close() - - def ensure_directory(self, target): - if not os.path.exists(target): - os.mkdir(target) - - def unpack_zipfile(self, extract_dir): - """Unpack zip `filename` to `extract_dir` - - Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined - by ``zipfile.is_zipfile()``). - """ - - if not zipfile.is_zipfile(self._filename): - raise UnrecognizedFormat("%s is not a zip file" % (self._filename)) - - print("==> Extracting files, please wait ...") - z = zipfile.ZipFile(self._filename) - try: - for info in z.infolist(): - name = info.filename - - # don't extract absolute paths or ones with .. in them - if name.startswith('/') or '..' in name: - continue - - target = os.path.join(extract_dir, *name.split('/')) - if not target: - continue - if name.endswith('/'): - # directory - self.ensure_directory(target) - else: - # file - data = z.read(info.filename) - f = open(target,'wb') - try: - f.write(data) - finally: - f.close() - del data - unix_attributes = info.external_attr >> 16 - if unix_attributes: - os.chmod(target, unix_attributes) - finally: - z.close() - print("==> Extraction done!") - - - def ask_to_delete_downloaded_zip_file(self): - ret = self.get_input_value("==> Delete '%s' file? It may be reused when you execute this script next time! (yes/no): " % self._filename) - ret = ret.strip() - if ret != 'yes' and ret != 'no': - print("==> Invalid answer, please answer 'yes' or 'no'!") - return self.ask_to_delete_downloaded_zip_file() - else: - return True if ret == 'yes' else False - - def download_zip_file(self): - if not os.path.isfile(self._filename): - self.download_file() - try: - if not zipfile.is_zipfile(self._filename): - raise UnrecognizedFormat("%s is not a zip file" % (self._filename)) - except UnrecognizedFormat as e: - print("==> Unrecognized zip format from your local '%s' file!" % (self._filename)) - if os.path.isfile(self._filename): - os.remove(self._filename) - print("==> Download it from internet again, please wait...") - self.download_zip_file() - - def need_to_update(self): - if not os.path.isfile(self._version_path): - return True - - with open(self._version_path) as data_file: - data = json.load(data_file) - - if self._remote_version == self._current_version: - return False - return True - - def load_json_file(self, file_path): - if not os.path.isfile(file_path): - raise Exception("Could not find (%s)" % (file_path)) - - with open(file_path) as data_file: - data = json.load(data_file) - return data - - def run(self, folder_for_extracting, remove_downloaded, force_update, download_only): - if not force_update and not self.need_to_update(): - print("==> No need to update!") - return - - if os.path.exists(self._extracted_folder_name): - shutil.rmtree(self._extracted_folder_name) - - self.download_zip_file() - - if not download_only: - self.unpack_zipfile(self._workpath) - print("==> Copying files...") - dst_folder_path = os.path.join(self._workpath, folder_for_extracting) - if not os.path.exists(dst_folder_path): - os.makedirs(dst_folder_path) - distutils.dir_util.copy_tree(self._extracted_folder_name, dst_folder_path) - print("==> Cleaning...") - if os.path.exists(self._extracted_folder_name): - shutil.rmtree(self._extracted_folder_name) - if os.path.isfile(self._filename): - if remove_downloaded != None: - if remove_downloaded == 'yes': - os.remove(self._filename) - elif self.ask_to_delete_downloaded_zip_file(): - os.remove(self._filename) - else: - print("==> Download (%s) finish!" % self._filename) - - -def _check_python_version(): - major_ver = sys.version_info[0] - if major_ver > 2: - print ("The python version is %d.%d. But python 2.x is required. (Version 2.7 is well tested)\n" - "Download it here: https://www.python.org/" % (major_ver, sys.version_info[1])) - return False - - return True - -def main(): - workpath = os.path.dirname(os.path.realpath(__file__)) - - if not _check_python_version(): - sys.exit(1) - - parser = OptionParser() - parser.add_option('-r', '--remove-download', - action="store", type="string", dest='remove_downloaded', default=None, - help="Whether to remove downloaded zip file, 'yes' or 'no'") - - parser.add_option("-f", "--force-update", - action="store_true", dest="force_update", default=False, - help="Whether to force update the third party libraries") - - parser.add_option("-d", "--download-only", - action="store_true", dest="download_only", default=False, - help="Only download zip file of the third party libraries, will not extract it") - - (opts, args) = parser.parse_args() - - print("=======================================================") - print("==> Preparing to download console binaries!") - installer = CocosZipInstaller(workpath, os.path.join(workpath, 'config.json'), os.path.join(workpath, 'version.json'), "version") - installer.run("", opts.remove_downloaded, opts.force_update, opts.download_only) - -# -------------- main -------------- -if __name__ == '__main__': - try: - main() - except Exception as e: - traceback.print_exc() - sys.exit(1) diff --git a/tools/jenkins-scripts/configs/autotest.py b/tools/jenkins-scripts/configs/autotest.py deleted file mode 100644 index ea57782db70d..000000000000 --- a/tools/jenkins-scripts/configs/autotest.py +++ /dev/null @@ -1,10 +0,0 @@ -import os -os.system('git checkout develop') -os.system('git pull origin develop') -print('in building, run autotest.py.') -ret = os.system('python -u tools/jenkins-scripts/autotest.py') -os.system('git reset --hard') -print ret -if(ret > 0): - ret = 1 -exit(ret) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-develop-android.py b/tools/jenkins-scripts/configs/cocos-2dx-develop-android.py deleted file mode 100644 index 60bdd4a17322..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-develop-android.py +++ /dev/null @@ -1,21 +0,0 @@ -import os -import platform -print 'Build Config:' -print ' Branch:develop' -print ' Target:Android' -print ' build script:python build/android-build.py all' -if(os.path.exists('build/android-build.py') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../cocos-2dx-develop-base-repo/node/' + node_name + "/." - os.system("cp -r" + source_dir + " .") - os.system('git pull origin develop') - -os.system('git submodule update --init --force') -ret = os.system('python build/android-build.py -n -j8 all') -os.system('git clean -xdf -f') -print 'build exit' -print ret -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-develop-base-repo.py b/tools/jenkins-scripts/configs/cocos-2dx-develop-base-repo.py deleted file mode 100644 index c7cd0f2fd3f3..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-develop-base-repo.py +++ /dev/null @@ -1,22 +0,0 @@ -import os -import sys - -def check_ret(ret): - if(ret != 0): - os.system('git checkout -B develop remotes/origin/develop') - os.system('git clean -xdf -f') - sys.exit(1) - -branchs = ['develop', 'master'] -for item in branchs: - os.system('git clean -xdf -f') - os.system('git checkout -B ' + item + ' remotes/origin/' + item) - os.system('git clean -xdf -f') - ret = os.system('git pull origin') - check_ret(ret) - ret = os.system('git submodule update --init --force') - check_ret(ret) - -#back to develop -os.system('git checkout -B develop remotes/origin/develop') -os.system('git clean -xdf -f') diff --git a/tools/jenkins-scripts/configs/cocos-2dx-develop-ios.py b/tools/jenkins-scripts/configs/cocos-2dx-develop-ios.py deleted file mode 100644 index 0dedd56b3c45..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-develop-ios.py +++ /dev/null @@ -1,20 +0,0 @@ -import os -print 'Build Config:' -print ' Host:MAC' -print ' Branch:develop' -print ' Target:iOS' -if(os.path.exists('tools/jenkins-scripts/ios-build.sh') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../cocos-2dx-develop-base-repo/node/' + node_name + "/." - os.system("cp -r " + source_dir + " .") - os.system('git pull origin develop') - -os.system('git submodule update --init --force') -ret = os.system('tools/jenkins-scripts/ios-build.sh') -os.system('git clean -xdf -f') -print 'build exit' -print ret -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-develop-win32.py b/tools/jenkins-scripts/configs/cocos-2dx-develop-win32.py deleted file mode 100644 index 87f867403220..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-develop-win32.py +++ /dev/null @@ -1,24 +0,0 @@ -import os -import subprocess -import sys -print 'Build Config:' -print ' Host:win7 x86' -print ' Branch:develop' -print ' Target:win32' -print ' "%VS110COMNTOOLS%..\IDE\devenv.com" "build\cocos2d-win32.vc2013.sln" /Build "Debug|Win32"' -if(os.path.exists('build/cocos2d-win32.vc2013.sln') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../cocos-2dx-develop-base-repo/node/' + node_name - source_dir = source_dir.replace("/", os.sep) - os.system("xcopy " + source_dir + " . /E /Y /H") - os.system('git pull origin develop') - -os.system('git submodule update --init --force') -ret = subprocess.call('"%VS110COMNTOOLS%..\IDE\devenv.com" "build\cocos2d-win32.vc2013.sln" /Build "Debug|Win32"', shell=True) -os.system('git clean -xdf -f') -print 'build exit' -print ret -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-doxygen.py b/tools/jenkins-scripts/configs/cocos-2dx-doxygen.py deleted file mode 100644 index 2dadb80233e0..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-doxygen.py +++ /dev/null @@ -1,24 +0,0 @@ -import os -import platform -print 'Build Config:' -print ' Branch:develop' -print ' Target:Doxygen' -print ' doxygen doxygen.config' -if(os.path.exists('docs/doxygen.config') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../cocos-2dx-develop-base-repo/node/' + node_name - source_dir = source_dir.replace("/", os.sep) - os.system("xcopy " + source_dir + " . /E /Y /H") - os.system('git pull origin develop') - -os.system('git submodule update --init --force') -os.chdir('docs/') -ret = os.system('doxygen doxygen.config') -os.chdir('../') -os.system('git clean -xdf -f') -print 'build exit' -print ret -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-comment-trigger.py b/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-comment-trigger.py deleted file mode 100644 index 3cc1053ce3cf..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-comment-trigger.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -#os.system('git checkout develop') -#os.system('git pull origin develop') -ret = os.system('python -u tools/jenkins-scripts/job-comment-trigger.py') -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-trigger.py b/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-trigger.py deleted file mode 100644 index fcdca42b3887..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build-trigger.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -#os.system('git checkout develop') -#os.system('git pull origin develop') -ret = os.system('python -u tools/jenkins-scripts/job-trigger.py') -if ret == 0: - exit(0) -else: - exit(1) diff --git a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build.py b/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build.py deleted file mode 100644 index 6783e89cb9d7..000000000000 --- a/tools/jenkins-scripts/configs/cocos-2dx-pull-request-build.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -import platform -if(os.path.exists('tools/jenkins-scripts/pull-request-builder.py') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../../../cocos-2dx-develop-base-repo/node/' + node_name - if(platform.system() == 'Windows'): - source_dir = source_dir.replace("/", os.sep) - os.system("xcopy " + source_dir + ' . /E /Y /H') - else: - os.system("cp -r " + source_dir + "/. .") - -def clean_workspace(): - os.system('git reset --hard') - os.system('git clean -xdf -f') - -clean_workspace() -os.system('git checkout develop') -clean_workspace() -os.system('git pull origin develop') - -for i in range(0, 3): - ret = os.system('python -u tools/jenkins-scripts/pull-request-builder.py') - if(ret > 255): - ret >>= 8 - if(ret == 0) or (ret == 1): - break - -clean_workspace() -print ret -if(ret > 0): - ret = 1 -exit(ret) diff --git a/tools/jenkins-scripts/configs/cocos2d-console-test.py b/tools/jenkins-scripts/configs/cocos2d-console-test.py deleted file mode 100644 index 9e58f9f1ec10..000000000000 --- a/tools/jenkins-scripts/configs/cocos2d-console-test.py +++ /dev/null @@ -1,12 +0,0 @@ -import os -os.system('git checkout develop') -os.system('git pull origin develop') -os.system('git submodule update') -print('in building, run cocos-console-test.py.') -#ret=0 -ret = os.system('python -u tools/jenkins-scripts/cocos-console-test.py') -os.system('git reset --hard') -print ret -if(ret > 0): - ret = 1 -exit(ret) diff --git a/tools/jenkins-scripts/configs/cocostudiox-base-repo.py b/tools/jenkins-scripts/configs/cocostudiox-base-repo.py deleted file mode 100644 index 8c264bc7dfbe..000000000000 --- a/tools/jenkins-scripts/configs/cocostudiox-base-repo.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -import sys -ret = os.system('git pull origin master') -if(ret != 0): - sys.exit(1) -ret = os.system('git submodule update --init --force') -if(ret != 0): - sys.exit(1) diff --git a/tools/jenkins-scripts/configs/cocostudiox-daily-build.py b/tools/jenkins-scripts/configs/cocostudiox-daily-build.py deleted file mode 100644 index b7f0e04a5c6f..000000000000 --- a/tools/jenkins-scripts/configs/cocostudiox-daily-build.py +++ /dev/null @@ -1,30 +0,0 @@ -import os -import platform -if(os.path.exists('CocoStudio/CSX/CSX/CSX.pro') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../../../cocostudiox-base-repo/node/' + node_name - if(platform.system() == 'Windows'): - source_dir = source_dir.replace("/", os.sep) - os.system("xcopy " + source_dir + ' . /E /Y /H') - else: - os.system("cp -r " + source_dir + "/. .") - -os.system('git pull origin') -os.system('git submodule update --init --force') - -node_name = os.environ['NODE_NAME'] -os.chdir('CocoStudio/CSX/CSX') -ret = os.system('qmake -r') -if(ret == 0): - if(node_name == 'android_mac'): - ret = os.system('make -j8') - elif(node_name == 'win32_win7'): - ret = os.system('mingw32-make -j8') -os.chdir('../../..') - -os.system('git clean -xdf') -os.system('git reset --hard') -print ret -if(ret > 0): - ret = 1 -exit(ret) diff --git a/tools/jenkins-scripts/configs/jenkins-job-watchdog.py b/tools/jenkins-scripts/configs/jenkins-job-watchdog.py deleted file mode 100644 index 341cbd6adc05..000000000000 --- a/tools/jenkins-scripts/configs/jenkins-job-watchdog.py +++ /dev/null @@ -1,2 +0,0 @@ -import os -os.system("python -u tools/jenkins-scripts/watchdog.py") diff --git a/tools/jenkins-scripts/configs/manual-update-jenkins-scripts.py b/tools/jenkins-scripts/configs/manual-update-jenkins-scripts.py deleted file mode 100644 index 2b770f56aeea..000000000000 --- a/tools/jenkins-scripts/configs/manual-update-jenkins-scripts.py +++ /dev/null @@ -1,2 +0,0 @@ -import os -os.system("python -u update-jenkins-scripts.py") diff --git a/tools/jenkins-scripts/daily-build.py b/tools/jenkins-scripts/daily-build.py deleted file mode 100644 index 60c48431d287..000000000000 --- a/tools/jenkins-scripts/daily-build.py +++ /dev/null @@ -1,148 +0,0 @@ -#Cocos2D-X test project daily build - -import os -import sys -import traceback - -if('branch' in os.environ): - branch = os.environ['branch'] -else: - branch = 'v4-develop' - -if('WORKSPACE' in os.environ): - workspace = os.environ['WORKSPACE'] -else: - workspace = "." - -if('NODE_NAME' in os.environ): - node_name = os.environ['NODE_NAME'] -else: - node_name = 'ios' - -if('language' in os.environ): - language = os.environ['language'] -else: - language = 'lua' - -if('daily_build_type' in os.environ): - daily_build_type = os.environ['daily_build_type'] -else: - daily_build_type = 'tests' -# for local debugging purpose, you could change the value to 0 and run -# this scripts in your local machine -remote_build = 1 - -def download_3rd_library(): - #run download-deps.py - print("prepare to downloading ...") - os.system('python download-deps.py -r no') - - -def sync_remote_repo(): - #reset path to workspace root - os.system("cd " + workspace) - - #pull latest code - os.system("git fetch origin " + branch) - os.system("git checkout " + branch) - os.system("git merge origin/" + branch) - #clean workspace - print "Before checkout: git clean -xdf -f" - os.system("git clean -xdf -f") - - #update submodule - git_update_submodule = "git submodule update --init --force" - ret = os.system(git_update_submodule) - if(ret != 0): - sys.exit(ret) - - -def gen_scripting_bindings(): - # Generate binding glue codes - if(branch == 'v3' or branch == 'v4-develop'): - ret = os.system("python tools/jenkins-scripts/slave-scripts/gen_jsb.py") - if(ret != 0): - sys.exit(ret) - - -def do_build_slaves(): - jenkins_script_path = "tools" + os.sep + "jenkins-scripts" + os.sep + "slave-scripts" + os.sep + daily_build_type + os.sep - - if(branch == 'v3' or branch == 'v4-develop'): - slave_build_scripts = "" - if(node_name == 'android') or (node_name == 'android_bak'): - slave_build_scripts = jenkins_script_path + "android-build.sh " - elif(node_name == 'win32' or node_name == 'win32_win7' or node_name == 'win32_bak'): - if daily_build_type == "runtime" or daily_build_type == "templates": - slave_build_scripts = jenkins_script_path + "win32-" + language + ".bat " - else: - slave_build_scripts = jenkins_script_path + "win32-build.bat " - elif(node_name == 'windows-universal' or node_name == 'windows-universal_bak'): - if daily_build_type == "runtime" or daily_build_type == "templates": - slave_build_scripts = jenkins_script_path + "windows-universal-" + language + ".bat " - else: - slave_build_scripts = jenkins_script_path + "windows-universal.bat " - elif(node_name == 'ios_mac' or node_name == 'ios' or node_name == 'ios_bak'): - slave_build_scripts = jenkins_script_path + "ios-build.sh " - elif(node_name == 'mac' or node_name == 'mac_bak'): - slave_build_scripts = jenkins_script_path + "mac-build.sh " - elif(node_name == 'tizen_mac'): - slave_build_scripts = jenkins_script_path + "tizen-build.sh " - elif(node_name == 'linux_centos' or node_name == 'linux' or node_name == 'linux_bak'): - slave_build_scripts = jenkins_script_path + "linux-build.sh " - elif(node_name == 'wp8'): - if(branch != 'v4'): - slave_build_scripts = jenkins_script_path + "wp8-v3.bat " - - if daily_build_type == 'templates': - ret = os.system("python tools/console/bin/adxe.py new -l " + language) - elif daily_build_type == 'runtime': - ret = os.system("python tools/console/bin/adxe.py new -l " + language + " -t runtime") - else: - ret = 0 - slave_build_scripts += language - ret = ret + os.system(slave_build_scripts) - - #get build result - print "build finished and return " + str(ret) - return ret - - -def main(): - if remote_build == 1: - #syntronize local git repository with remote and merge the PR - sync_remote_repo() - #copy check_current_3rd_libs - download_3rd_library() - #generate jsb and luabindings - gen_scripting_bindings() - - #start build jobs on each slave - ret = do_build_slaves() - - exit_code = 1 - if ret == 0: - exit_code = 0 - else: - exit_code = 1 - - # #clean workspace, we don't won't clean the repository - # if remote_build == 1: - # os.system("cd " + workspace) - # os.system("git reset --hard") - # os.system("git clean -xdf -f") - # else: - # print "local build, no need to cleanup" - - return(exit_code) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/do-pull-request-builder.py b/tools/jenkins-scripts/do-pull-request-builder.py deleted file mode 100755 index 250af1c7d315..000000000000 --- a/tools/jenkins-scripts/do-pull-request-builder.py +++ /dev/null @@ -1,114 +0,0 @@ -import os -import sys -import traceback -import json - -branch = "v3" -node_name = "ios" - -payload_str = os.environ['payload'] -payload_str = payload_str.decode('utf-8', 'ignore') -#parse to json obj -payload = json.loads(payload_str) -pr_num = payload['number'] - -#get pr target branch -branch = payload['branch'] -workspace = os.environ['WORKSPACE'] -node_name = os.environ['NODE_NAME'] - -def download_3rd_libs(branch): - #run download-deps.py - print("prepare to downloading ...") - os.system('python download-deps.py -r no') - -def lint_include_of_cocos_headers(): - global branch - if(branch != 'v1' and branch != 'v2'): - ret = os.system("python tools/coding-style/include-linter.py") - if(ret != 0): - sys.exit(1) - -def gen_scripting_bindings(): - global branch - # Generate binding glue codes - if(branch != 'v1' and branch != 'v2'): - ret = os.system("python tools/jenkins-scripts/slave-scripts/gen_jsb.py") - if(ret != 0): - sys.exit(1) - - -def do_build_slaves(): - global branch - global node_name - - jenkins_script_path = "tools" + os.sep + "jenkins-scripts" + os.sep + "slave-scripts" + os.sep + "tests" + os.sep - - if(branch != 'v1' and branch != 'v2'): - slave_build_scripts = "" - if(node_name == 'android') or (node_name == 'android_bak'): - slave_build_scripts = jenkins_script_path + "android-build.sh" - elif(node_name == 'win32' or node_name == 'win32_win7' or node_name == 'win32_bak'): - slave_build_scripts = jenkins_script_path + "win32-build.bat" - elif(node_name == 'windows-universal' or node_name == 'windows-universal_bak'): - slave_build_scripts = jenkins_script_path + "windows-universal.bat" - elif(node_name == 'ios_mac' or node_name == 'ios' or node_name == 'ios_bak'): - slave_build_scripts = jenkins_script_path + "ios-build.sh" - elif(node_name == 'mac' or node_name == 'mac_bak'): - slave_build_scripts = jenkins_script_path + "mac-build.sh" - elif(node_name == 'linux_centos' or node_name == 'linux' or node_name == 'linux_bak'): - slave_build_scripts = jenkins_script_path + "linux-build.sh" - elif(node_name == 'wp8'): - if(branch != 'v4'): - slave_build_scripts = jenkins_script_path + "wp8-v3.bat" - - ret = os.system(slave_build_scripts) - - #get build result - print "build finished and return " + str(ret) - return ret - -def cleanup_workspace(): - global workspace - global branch - global pr_num - #clean workspace - os.system("cd " + workspace) - os.system("git reset --hard") - os.system("git clean -xdf -f") - os.system("git checkout " + branch) - os.system("git branch -D pull" + str(pr_num)) - -def main(): - download_3rd_libs(branch) - lint_include_of_cocos_headers() - #generate jsb and luabindings - gen_scripting_bindings() - #start build jobs on each slave - ret = do_build_slaves() - - cleanup_workspace() - - exit_code = 1 - if ret == 0: - exit_code = 0 - else: - exit_code = 1 - - return(exit_code) - - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - print "return value is " + str(sys_ret) - if sys_ret != 0: - sys.exit(1) - else: - sys.exit(0) diff --git a/tools/jenkins-scripts/master-scripts/autotest.py b/tools/jenkins-scripts/master-scripts/autotest.py deleted file mode 100755 index 712d3fb28205..000000000000 --- a/tools/jenkins-scripts/master-scripts/autotest.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/python -import os -import sys -import socket -import time - -HOST_MAC = 'localhost' -HOST_ANDROID = '' -HOST_IOS = '10.10.30.61' -PORT = 5678 - -suc_build_mac = 0 -suc_build_android = 0 - -TYPE_MAC = 0 -TYPE_ANDROID = 1 -TYPE_IOS = 2 - -sleep_time = 1.5 - -# -def getADBDeviceIP(): - output = os.popen("adb shell netcfg") - configs = output.read().split('\r\n') - for l in configs: - items = l.split() - if(items[1] == 'UP'): - if(items[2] != '127.0.0.1'): - return items[2] - -def autotest(type): - soc = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - if type == TYPE_MAC: - soc.connect((HOST_MAC, PORT)) - if type == TYPE_ANDROID: - HOST_ANDROID = getADBDeviceIP() - soc.connect((HOST_ANDROID, PORT)) - if type == TYPE_IOS: - soc.connect((HOST_IOS, PORT)) - time.sleep(1) - print 'autotest run:' - soc.send('autotest run\r\n') - - while True: - data = soc.recv(1024) - print data - if data == 'TestEnd': - lastTestInfo = True - break - global lastTestInfo - if len(data) > len('\n') : - lastTestInfo = data - if not data: break - - soc.send('director end\r\n') - print 'test end and close socket.' - soc.close() - -#----------------autotest build and run----------------# -def MAC_BUILD(): - def cleanProj(): - infoClean = os.system('xcodebuild -project ./build/cocos2d_tests.xcodeproj -target cpp-tests\ Mac clean') - print 'infoClean: ', infoClean - if infoClean != 0: - return False - time.sleep(sleep_time) - return True - def buildProj(): - infoBuild = os.system('xcodebuild -project ./build/cocos2d_tests.xcodeproj -target cpp-tests\ Mac') - print 'infoBuild: ', infoBuild - if infoBuild != 0: - return False - time.sleep(sleep_time) - return True - def openProj(): - cmd = 'open ./build/build/Debug/cpp-tests\ Mac.app' - print 'cmd: ', cmd - infoOpen = os.system(cmd) - print 'infoOpen: ', infoOpen - if infoOpen != 0: - return False - time.sleep(sleep_time) - return True - def buildAndRun(): - if not cleanProj(): - print '**CLEAN FAILED**' - if not buildProj(): - print '**BUILD FAILED**' - return False - if not openProj(): - return False - time.sleep(sleep_time) - return True - return buildAndRun() -#----------------autotest build and run end----------------# - -PATH_ANDROID_SRC = 'tests/cpp-tests/proj.android/' -FILE_ANDROID_DELETE = ['libs','gen','assets','bin','obj'] -#----------------autotest-android build and run----------------# -def ANDROID_BUILD(): - def checkDevice(): - cmd = 'adb devices' - infoDev = os.popen(cmd).readlines() - firstDev = infoDev[1] - if len(firstDev) < 5 or firstDev.find('device') < 0: - print 'no android device.' - return False - else: - print 'device info:', firstDev - return True - def cleanProj(): - for strFile in FILE_ANDROID_DELETE: - infoClean = os.system('rm -rf '+PATH_ANDROID_SRC+strFile) - infoClean = os.system('adb uninstall org.cocos2dx.cpp_tests'); - print 'infoClean: ', infoClean - if infoClean != 0: - print 'clean **CLEAN FAILED**' - time.sleep(sleep_time) - def updateProperty(): - infoUpdate = os.system('android update project -p ./cocos/platform/android/java/ -t 12') - print 'cocos update:', infoUpdate - infoUpdate = os.system('android update project -p '+PATH_ANDROID_SRC+' -t 12') - print 'test update:', infoUpdate - def buildProj(): - infoBuild = os.system('./build/android-build.py -p 13 cpp-tests') - print 'infoBuild cpp_tests: ', infoBuild - infoBuild = os.system('ant -buildfile '+PATH_ANDROID_SRC+' debug') - print 'infoBuild: ', infoBuild - if infoBuild != 0: - print 'build **BUILD FAILED**' - time.sleep(sleep_time) - return infoBuild - def installProj(): - cmd = 'adb install '+PATH_ANDROID_SRC+'bin/CppTests-debug.apk' - infoInstall = os.system(cmd) - print 'infoInstall:', infoInstall - if infoInstall != 0: - print 'install **INSTALL FAILED**' - return infoInstall - def openProj(): - cmd = 'adb shell am start -n org.cocos2dx.cpp_tests/org.cocos2dx.cpp_tests.Cocos2dxActivity' - print 'cmd: ', cmd - infoOpen = os.system(cmd) - print 'infoOpen: ', infoOpen - if infoOpen != 0: - return False - time.sleep(sleep_time) - return True - def buildAndRun(): - if not checkDevice(): - return False - cleanProj() - updateProperty() - buildProj() - installProj() - return openProj() - return buildAndRun() -#----------------autotest-android build and run end----------------# - -def main(): - print 'will build mac project.' - suc_build_mac = MAC_BUILD() - # print 'will build android project.' - # suc_build_android = ANDROID_BUILD() - if suc_build_mac: - autotest(TYPE_MAC) - if suc_build_android: - print 'will run android autotest.' - autotest(TYPE_ANDROID) - - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) - diff --git a/tools/jenkins-scripts/master-scripts/ci-dailybuild-android.py b/tools/jenkins-scripts/master-scripts/ci-dailybuild-android.py deleted file mode 100644 index 2522edd37222..000000000000 --- a/tools/jenkins-scripts/master-scripts/ci-dailybuild-android.py +++ /dev/null @@ -1,168 +0,0 @@ -import os -import json -from shutil import copy -import sys -import traceback -import MySQLdb -from email.mime.text import MIMEText -import smtplib -import datetime -def check_current_3rd_libs(): - #get current_libs config - backup_files = range(2) - current_files = range(2) - config_file_paths = ['external/config.json','templates/lua-template-runtime/runtime/config.json'] - for i, config_file_path in enumerate(config_file_paths): - if not os.path.isfile(config_file_path): - raise Exception("Could not find 'external/config.json'") - - with open(config_file_path) as data_file: - data = json.load(data_file) - - current_3rd_libs_version = data["version"] - filename = current_3rd_libs_version + '.zip' - node_name = os.environ['NODE_NAME'] - backup_file = '../cocos-2dx-external/node/' + node_name + '/' + filename - backup_files[i] = backup_file - current_file = filename - current_files[i] = current_file - if os.path.isfile(backup_file): - copy(backup_file, current_file) - #run download-deps.py - os.system('python download-deps.py -r no') - #backup file - for i, backup_file in enumerate(backup_files): - current_file = current_files[i] - copy(current_file, backup_file) - -def strip_android_libs(): - strip_cmd = os.environ['ndk_strip'] - print strip_cmd - _cmd = strip_cmd + ' ./tests/cpp-tests/proj.android/obj/local/armeabi/*.a' - os.system(_cmd) - -def connect_db(): - db_host = os.environ['db_host'] - db_user = os.environ['db_user'] - db_pw = os.environ['db_pw'] - db = MySQLdb.connect(db_host, db_user, db_pw, "dailybuild" ) - return db - -def close_db(db): - db.close() - -def save_build_stats(db, filename, size): - cursor = db.cursor() - sql = "INSERT INTO %s (size, createdTime) VALUES(%d, now())" % (filename, size) - print sql - cursor.execute(sql) - db.commit() - -def scan_all_libs(db): - stats = {} - _path = 'tests/cpp-empty-test/proj.android/libs/armeabi/libcpp_empty_test.so' - filesize = os.path.getsize(_path)/1024 - stats['libcpp_empty_test'] = filesize - save_build_stats(db, 'libcpp_empty_test', filesize) - _path = 'tests/lua-empty-test/project/proj.android/libs/armeabi/liblua_empty_test.so' - filesize = os.path.getsize(_path)/1024 - stats['liblua_empty_test'] = filesize - save_build_stats(db, 'liblua_empty_test', filesize) - lib_path = './tests/cpp-tests/proj.android/obj/local/armeabi' - for root, dirs, files in os.walk(lib_path): - for _file in files: - if not _file.endswith(".a"): - continue - print _file - libfile = lib_path + '/' + _file - _filename = _file.split('.')[0] - filesize = os.path.getsize(libfile)/1024 - stats[_filename]=filesize - save_build_stats(db, _filename, filesize) - return stats - -def send_mail(sub,title,content): - #to_list = os.environ['EMAIL_LIST'].split(' ') - mail_user = os.environ['EMAIL_USER'] - mail_pass = os.environ['EMAIL_PWD'] - to_list = os.environ['EMAIL_LIST'].split(' ') - mail_postfix = 'gmail.com' - me = mail_user + "<" + mail_user + "@" + mail_postfix + ">" - msg = MIMEText(content, _subtype='plain', _charset='gb2312') - msg['Subject'] = sub - msg['From'] = me - msg['To'] = " ".join(to_list) - print 'to users:', msg['To'] - msg['Content'] = 'test' - try: - s = smtplib.SMTP('smtp.gmail.com', 587) - s.ehlo() - s.starttls() - s.login(mail_user,mail_pass) - s.sendmail(me, to_list, str(msg)) - print 'info:', me, to_list, str(msg) - s.close() - return True - except Exception, e: - print str(e) - return False - -def sendEmail(stats): - now = datetime.datetime.now() - sub = "Cocos2d-x Android dailybuild stats of " + now.strftime("%Y-%m-%d") - title = "Dailybuild stats" - content = "The following list tracks the sizes of Cocos2d-x Android built libraries:\n" - - for key in stats: - content += key - content += " : " - content += str(stats[key]) + "KB" - content += "\n" - - send_mail(sub, title, content) - -def main(): - print 'Build Config:' - print ' Branch:v3' - print ' Target:Android' - print ' build script:python build/android-build.py -b release all' - if(os.path.exists('build/android-build.py') == False): - node_name = os.environ['NODE_NAME'] - source_dir = '../cocos-2dx-develop-base-repo/node/' + node_name + "/." - os.system("cp -r " + source_dir + " .") - - os.system('git pull origin v3') - os.system('git submodule update --init --force') - check_current_3rd_libs() - - ret = os.system("python tools/jenkins-scripts/gen_jsb.py") - if(ret != 0): - return(1) - - ret = os.system('python build/android-build.py -b release all') - if(ret == 0): - strip_android_libs() - db = connect_db() - stats = scan_all_libs(db) - close_db(db) - sendEmail(stats) - os.system('git clean -xdf -f') - print 'build exit' - print ret - if ret == 0: - ret = 0 - else: - ret = 1 - return ret - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) - diff --git a/tools/jenkins-scripts/master-scripts/ci-release-test.py b/tools/jenkins-scripts/master-scripts/ci-release-test.py deleted file mode 100644 index 065fccf131c4..000000000000 --- a/tools/jenkins-scripts/master-scripts/ci-release-test.py +++ /dev/null @@ -1,188 +0,0 @@ -#CI release for Jenkins - -import json -import os -import re -import urllib2 -import urllib -import base64 -import requests -import sys -import traceback -import platform -import subprocess -import codecs -from shutil import copy - -#set Jenkins build description using submitDescription to mock browser behavior -#TODO: need to set parent build description -def set_description(desc, url): - req_data = urllib.urlencode({'description': desc}) - req = urllib2.Request(url + 'submitDescription', req_data) - #print(os.environ['BUILD_URL']) - req.add_header('Content-Type', 'application/x-www-form-urlencoded') - base64string = base64.encodestring(os.environ['JENKINS_ADMIN']+ ":" + os.environ['JENKINS_ADMIN_PW']).replace('\n', '') - req.add_header("Authorization", "Basic " + base64string) - try: - urllib2.urlopen(req) - except: - traceback.print_exc() - -def make_temp_dir(): - #make temp dir - print "current dir is: " + os.environ['WORKSPACE'] - os.system("cd " + os.environ['WORKSPACE']); - os.mkdir("android_build_objs") - #add symbol link - PROJECTS=["cpp-empty-test", "cpp-tests"] - - print platform.system() - if(platform.system() == 'Darwin'): - for item in PROJECTS: - cmd = "ln -s " + os.environ['WORKSPACE']+"/android_build_objs/ " + os.environ['WORKSPACE']+"/tests/"+item+"/proj.android/obj" - os.system(cmd) - elif(platform.system() == 'Windows'): - for item in PROJECTS: - p = item.replace("/", os.sep) - cmd = "mklink /J "+os.environ['WORKSPACE']+os.sep+"tests"+os.sep +p+os.sep+"proj.android"+os.sep+"obj " + os.environ['WORKSPACE']+os.sep+"android_build_objs" - print cmd - os.system(cmd) - -def check_current_3rd_libs(branch): - #get current_libs config - backup_files = range(2) - current_files = range(2) - config_file_paths = ['external/config.json','templates/lua-template-runtime/runtime/config.json'] - if (branch == 'v2'): - config_file_paths = ['external/config.json'] - for i, config_file_path in enumerate(config_file_paths): - if not os.path.isfile(config_file_path): - raise Exception("Could not find 'external/config.json'") - - with open(config_file_path) as data_file: - data = json.load(data_file) - - current_3rd_libs_version = data["version"] - filename = current_3rd_libs_version + '.zip' - node_name = os.environ['NODE_NAME'] - backup_file = '../../../cocos-2dx-external/node/' + node_name + '/' + filename - backup_files[i] = backup_file - current_file = filename - current_files[i] = current_file - if os.path.isfile(backup_file): - copy(backup_file, current_file) - #run download-deps.py - os.system('python download-deps.py -r no') - #backup file - for i, backup_file in enumerate(backup_files): - current_file = current_files[i] - copy(current_file, backup_file) - -def main(): - #get tag - tag = os.environ['tag'] - print 'tag:' + tag - - pr_desc = '

      ' + tag + ' is release' + '

      ' - - #get pr target branch - branch = 'v3' - - #set parent build description - jenkins_url = os.environ['JENKINS_URL'] - job_name = os.environ['JOB_NAME'].split('/')[0] - build_number = os.environ['BUILD_NUMBER'] - target_url = jenkins_url + 'job/' + job_name + '/' + build_number + '/' - - set_description(pr_desc, target_url) - - #pull origin v3 - os.system('git reset --hard') - os.system("git clean -xdf -f") - os.system("git checkout v3") - os.system("git branch -D " + tag) - os.system("git clean -xdf -f") - #fetch tag to local repo - git_fetch_pr = "git fetch origin tag " + tag - ret = os.system(git_fetch_pr) - if(ret != 0): - return(2) - - #checkout - git_checkout = "git checkout -b " + tag + " FETCH_HEAD" - os.system(git_checkout) - - # After checkout a new branch, clean workspace again - print "After checkout: git clean -xdf -f" - os.system("git clean -xdf -f") - - #update submodule - git_update_submodule = "git submodule update --init --force" - ret = os.system(git_update_submodule) - if(ret != 0): - return(2) - - #build - #TODO: add android-linux build - #TODO: add mac build - node_name = os.environ['NODE_NAME'] - build_mode = ['debug', 'release'] - tests_dirs = ['tests/cpp-empty-test/proj.android', - 'tests/cpp-tests/proj.android', - 'tests/lua-empty-test/project/proj.android', - 'tests/lua-tests/project/proj.android'] - tests_names = ['cpp-empty-test', 'cpp-tests', 'lua-empty-test', 'lua-tests'] - remote_home = os.environ['REMOTE_HOME'] - for mode in build_mode: - os.system('git reset --hard') - os.system("git clean -xdf -f") - make_temp_dir() - #copy check_current_3rd_libs - check_current_3rd_libs(branch) - if(branch == 'v3'): - # Generate binding glue codes - ret = os.system("python tools/jenkins-scripts/gen_jsb.py") - if(ret != 0): - return(1) - if(node_name == 'android_mac') or (node_name == 'android_win7'): - print "Start build android..." - ret = os.system("python build/android-build.py -b " + mode + " -n -j10 all") - # create and save apk - if(ret == 0): - os.system('android update project -p cocos/platform/android/java/ -t android-13') - for i, test in enumerate(tests_dirs): - os.system('android update project -p ' + test + ' -t android-13') - local_apk = test + '/' + tests_names[i] + '.apk' - remote_dir = '/data/download/' + tag + '/' - remote_apk = remote_dir + tests_names[i] + '-' + tag + '-' + mode + '.apk' - os.system('ant debug -f ' + test + '/build.xml' + ' -Dout.final.file=$PWD/' + local_apk) - os.system('ssh ' + remote_home + ' "mkdir -p ' + remote_dir + '"') - os.system('scp ' + local_apk + ' ' + remote_home + ':' + remote_apk) - - #get build result - print "build finished and return " + str(ret) - - exit_code = 1 - if ret == 0: - exit_code = 0 - else: - exit_code = 1 - - #clean workspace - os.system("cd " + os.environ['WORKSPACE']) - os.system("git reset --hard") - os.system("git clean -xdf -f") - os.system("git checkout v3") - - return(exit_code) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/master-scripts/cocos-console-test.py b/tools/jenkins-scripts/master-scripts/cocos-console-test.py deleted file mode 100755 index 430f9da61c22..000000000000 --- a/tools/jenkins-scripts/master-scripts/cocos-console-test.py +++ /dev/null @@ -1,379 +0,0 @@ -#!/usr/bin/python -# create new project by adxe-console -# compile, deploy project and run -# perpose: for autotest adxe-console command. -# now support: mac- mac/ios/android -# will add: window-android,linux-android - -import os -import subprocess -import sys -import json -import time -import socket -import threading -import smtplib -from email.mime.text import MIMEText -from os.path import join, getsize - -# default console_param. -console_param = '[console run]' -# get param from commit. -if os.environ.has_key('payload'): - payload_str = os.environ['payload'] - payload = json.loads(payload_str) - if payload.has_key('console'): - console_param = payload['console'] -console_param = console_param[1:len(console_param)-1] -print 'console_param:',console_param - -console_param_arr = console_param.split(' ') - -# enum command type -class ENUM_PARAM: - new = 0 - compile = 1 - deploy = 2 - run = 3 - -# partition different level -LEVEL_COCOS = { - ENUM_PARAM.new : 1, - ENUM_PARAM.compile : 2, - ENUM_PARAM.deploy : 4, - ENUM_PARAM.run : 8 -} - -# level's cocos command -COCOS_CMD = { - ENUM_PARAM.new:'new', - ENUM_PARAM.compile:'compile', - ENUM_PARAM.deploy:'deploy', - ENUM_PARAM.run:'run' -} - -# set cocos_param for run different command -cocos_param = 0 -for level in LEVEL_COCOS: - if console_param_arr.count(COCOS_CMD[level]): - cocos_param = cocos_param + LEVEL_COCOS[level] -if cocos_param < LEVEL_COCOS[ENUM_PARAM.new]: - cocos_param = LEVEL_COCOS[ENUM_PARAM.new] -print 'cocos_param:', cocos_param - -# project types -project_types = ['cpp', 'lua'] -# project suffix -PROJ_SUFFIX = 'Proj' -# different phone platform -phonePlats = ['mac','ios','android'] - -# need use console's position, perhaps should be set an env-param -cocos_console_dir = 'tools/console/bin/' - -# now adxe-console suport different run on Platforms, e.g: only run android on win -runSupport = { - 'darwin' : {'mac':1,'ios':1,'android':1}, - 'win' : {'mac':0,'ios':0,'android':1}, - 'linux' : {'mac':0,'ios':0,'android':1} -} - -# get current running system -curPlat = sys.platform -if curPlat.find('linux') >= 0: - curPlat = 'linux' -elif curPlat.find('darwin') >= 0: - curPlat = 'darwin' -else: - curPlat = 'win' -print 'current platform is:', curPlat - -# delete project.(will use different system command to delete.just mac now.) -def clean_project(): - print 'delete older project.' - for proj in project_types: - cmd = 'rm -rf '+proj+PROJ_SUFFIX - os.system(cmd) - -# file path.(for add console listen command.) -FILE_PATH = '/Classes/AppDelegate.cpp' -FILE_DIR = { - 'cpp':'', - 'lua':'/frameworks/runtime-src' -} -PARSE_WORD = 'director->setDisplayStats(true);' -CONSOLE_COMMAND = 'director->getConsole()->listenOnTCP(5678);' - -# add console listenOnTCP to AppDelegate.cpp. -def addConsoleListenOnTCP(name): - filePath = name+PROJ_SUFFIX+FILE_DIR[name]+FILE_PATH - print 'filePath:',filePath - strCont = '' - if os.path.isfile(filePath): - file_object = open(filePath, 'r') - strLine = file_object.readline() - while strLine: - strCont = strCont + strLine - if strLine.find(PARSE_WORD) > -1: - print 'add console listenOnTCP command.' - strCont = strCont+'\n\t' + CONSOLE_COMMAND + '\n' - strLine = file_object.readline() - - file_object.close() - file_object = open(filePath, 'w') - file_object.write(strCont) - file_object.close() - time.sleep(2) - else: - print 'file is not exist.' - -# console result, for record result -console_result = 'the result of cocos-console-test is:\n\r' - -# get current android devices count. -def getAndroidDevices(): - cmd = 'adb devices' - info_devices = os.popen(cmd).read() - arrDevices = info_devices.split('\n') - del arrDevices[0] - count = 0 - for device in arrDevices: - # e.g: emulator-5554 device, contains 'device', so, min length is len('device') - if len(device) > len('device') and (device.find('device') >= 0): - count += 1 - return count - -# close running app or exe by using console command. -IP_PHONE = { - 'mac':'localhost', - 'ios':'localhost' -} -PORT = 5678 - -def close_proj(proj, phone): - print 'close running project' - # connect socket - strClose = 'close ' + proj + ' on ' + phone - if IP_PHONE.has_key(phone): - soc = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - print proj, phone, IP_PHONE[phone] - try: - soc.connect((IP_PHONE[phone], PORT)) - cmd = 'director end\r\n' - print 'cmd close:', cmd - soc.send(cmd) - time.sleep(2) - strClose = strClose + ' success.' - except Exception, e: - print 'socket is not connect.' - strClose = strClose + ' failed.' + ' socket is not connect.' - else: - strClose = strClose + ' failed.' + ' no ' +phone+ ' type.' - time.sleep(2) - return strClose - -# appendToResult -def appendToResult(content): - global console_result - console_result = console_result + content - -info_of_close_app = {} -cur_test_name = '' -class myThread(threading.Thread): - def __init__(self,threadname): - threading.Thread.__init__(self,name=threadname) - def run(self): - run_name = self.getName() - print 'run_name:', run_name - if run_name == 'close': - while True: - soc = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - try: - soc.connect(('localhost', PORT)) - cmd_close = 'director end\r\n' - print 'cmd close:', cmd_close - soc.send(cmd_close) - time.sleep(2) - global cur_test_name - print 'cur_test_name:', cur_test_name - info_of_close_app[cur_test_name] = True - break - except Exception, e: - time.sleep(5) - -# if any error -ANY_ERROR_IN_RUN = 0 -# excute cocos command -def cocos_project(level): - global ANY_ERROR_IN_RUN - print 'will excute cocos_command: ', COCOS_CMD[level], level - appendToResult('will excute ' + COCOS_CMD[level] + ' command:'+"\n\r\t") - for proj in project_types: - print 'proj: ', proj - if level == ENUM_PARAM.new: - cmd = './'+cocos_console_dir+'cocos new -l '+proj+' '+proj+PROJ_SUFFIX - print proj,'cmd:',cmd - info_create = os.system(cmd) #call cmd on win is diff - if info_create == 0: - time.sleep(12) - addConsoleListenOnTCP(proj) - print 'create project',proj,' is:', not info_create - ANY_ERROR_IN_RUN = ANY_ERROR_IN_RUN + info_create - appendToResult(' '+cmd +': ' + str(not info_create) + ".\n\r\t") - else: - for phone in phonePlats: - print 'platform is: ', phone - cmd = './'+cocos_console_dir+'cocos '+COCOS_CMD[level]+' -s '+proj+PROJ_SUFFIX+' -p '+phone - print 'cmd:',cmd - info_cmd = '' - if level == ENUM_PARAM.compile: - if runSupport[curPlat][phone]: - info_cmd = os.system(cmd) - print 'info '+COCOS_CMD[level]+':', not info_cmd - appendToResult(' '+cmd +': ' + str(not info_cmd) + ".\n\r\t") - else: - if runSupport[curPlat][phone]: - print 'in desploy or run:', phone, getAndroidDevices() - if phone == 'android' and getAndroidDevices() == 0: - strInfo = 'no android device, please checkout the device is running ok.' - print strInfo - else: - if level == ENUM_PARAM.run: - global cur_test_name - cur_test_name = proj+','+phone - thread_close = myThread('close') - thread_close.start() - info_cmd = os.system(cmd) - time.sleep(5) - appendToResult(' '+cmd +': ' + str(not info_cmd) + ".\n\r\t") - -# build and run according to params of provided.(lv_ignore: e.g:ignore new) -def build_run(lv_ignore): - print 'will build and run, in function build_run' - for level in LEVEL_COCOS: - print 'level:', level, cocos_param, LEVEL_COCOS[level] - if cocos_param >= LEVEL_COCOS[level] and level > lv_ignore: - if level == ENUM_PARAM.new: - clean_project() - cocos_project(level) - -# android simulator name. -ANDROID_SIMULATOR_NAME = 'console-test' -# start android simulator if no android devices connected. -def start_android_simulator(): - print 'in function start_android_simulator.' - if getAndroidDevices() > 0: - print 'already connected android device.' - return - if cocos_param >= LEVEL_COCOS[ENUM_PARAM.deploy]: - cmd_start = [ 'emulator -avd '+ANDROID_SIMULATOR_NAME ] - # print 'cmd_start:', cmd_start - # info_start = subprocess.Popen(cmd_start, stdin=subprocess.PIPE, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - # print 'start an android simulator:', not info_start - -# send email -EMAIL_KEYS={ - 0:'EMAIL_HOST', - 1:'EMAIL_USER', - 2:'EMAIL_PWD', - 3:'EMAIL_POSTFIX', - 4:'EMAIL_LIST', - 5:'NEED_SEND_EMAIL' -} - -OBJ_EMAIL_INFO = {} -print 'will get env info.' -for key in EMAIL_KEYS: - if os.environ.has_key(EMAIL_KEYS[key]): - OBJ_EMAIL_INFO[EMAIL_KEYS[key]] = os.environ[EMAIL_KEYS[key]] - if key == 4: - # string to list by ' ', for separate users. - OBJ_EMAIL_INFO[EMAIL_KEYS[4]] = OBJ_EMAIL_INFO[EMAIL_KEYS[4]].split(' ') - -print 'will send email.', OBJ_EMAIL_INFO -def send_mail(to_list,sub,title,content): - mail_user = OBJ_EMAIL_INFO[ EMAIL_KEYS[1] ] - mail_postfix = OBJ_EMAIL_INFO[ EMAIL_KEYS[3] ] - mail_host = OBJ_EMAIL_INFO[ EMAIL_KEYS[0] ] - mail_pass = OBJ_EMAIL_INFO[ EMAIL_KEYS[2] ] - me = mail_user+"<"+mail_user+"@"+mail_postfix+">" - msg = MIMEText(content,_subtype='plain',_charset='gb2312') - msg['Subject'] = sub - msg['From'] = me - msg['To'] = " ".join(to_list) - print 'to users:', msg['To'] - msg['Content'] = 'test' - try: - s = smtplib.SMTP() - s.connect(mail_host) - s.login(mail_user,mail_pass) - s.sendmail(me, to_list, str(msg)) - print 'info:', me, to_list, str(msg) - s.close() - appendToResult( 'send email true:' + str(msg) ) - return True - except Exception, e: - appendToResult( 'send email false:' + str(e) ) - print str(e) - return False - -def sendEmail(msg): - send_mail(OBJ_EMAIL_INFO[EMAIL_KEYS[4]], "cocos-console-test result", 'for error.', msg) - -# get package size -def getdirsize(dir): - size = 0L - for root, dirs, files in os.walk(dir): - size += sum([getsize(join(root, name)) for name in files]) - return size -APP_FILE_DIR = { - 'cpp':'bin/debug/', - 'lua':'runtime/' -} -APP_FILE_SUFFIX = { - 'mac':'.app', - 'ios':'.app', - 'android':'-debug-unaligned.apk' -} -if os.environ.has_key('APP_FILE_SUFFIX'): - str_app_suffix = os.environ['APP_FILE_SUFFIX'] - APP_FILE_SUFFIX = eval(str_app_suffix) - -def getPackageSize(): - for proj in project_types: - for phone in phonePlats: - # if runSupport[curPlat][phone]: - package_path = './'+proj+PROJ_SUFFIX+'/'+APP_FILE_DIR[proj]+phone+'/'+proj+PROJ_SUFFIX+APP_FILE_SUFFIX[phone] - print 'package_path', package_path - package_size = 0 - if os.path.isfile(package_path): - package_size = os.path.getsize(package_path); - else: - package_size = getdirsize(package_path); - strSize = 'size of '+proj+PROJ_SUFFIX+' '+phone+' is:'+str(package_size/(1024))+'KB'+'\n\t' - print 'strSize:', strSize - appendToResult(strSize) - -def main(): - print 'in main:' - # start_android_simulator() - print 'will build_run:' - build_run(-1) - print 'ANY_ERROR_IN_RUN:', ANY_ERROR_IN_RUN - print 'end build run. and get package size.' - getPackageSize() - print 'will send email:' - print 'console_result:', console_result - if OBJ_EMAIL_INFO[ EMAIL_KEYS[5] ] or ANY_ERROR_IN_RUN: - sendEmail(console_result) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/master-scripts/cocos2dx-libsize-tracking.py b/tools/jenkins-scripts/master-scripts/cocos2dx-libsize-tracking.py deleted file mode 100644 index 8047d69d8dc7..000000000000 --- a/tools/jenkins-scripts/master-scripts/cocos2dx-libsize-tracking.py +++ /dev/null @@ -1,88 +0,0 @@ -import os -import MySQLdb -import datetime - -def connect_db(): - db_host = os.environ['db_host'] - db_user = os.environ['db_user'] - db_pw = os.environ['db_pw'] - db_name=os.environ['db_name'] - db = MySQLdb.connect(db_host, db_user, db_pw, db_name) - return db - -def close_db(db): - db.close() - -def list_lib_names(db): - tables=[] - cursor = db.cursor() - #sql = "SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='dailybuild'" - sql = 'show tables' - cursor.execute(sql) - results = cursor.fetchall() - for row in results: - tables.append(row[0]) - return tables - -def today(): - now = datetime.datetime.now() - return now.strftime("%Y-%m-%d") - -def prev_day(aDay, gap): - t = datetime.datetime.strptime(aDay, "%Y-%m-%d") - days = datetime.timedelta(hours=24*gap) - t = t - days - return t.strftime("%Y-%m-%d") - -def next_day(aDay, gap): - t = datetime.datetime.strptime(aDay, "%Y-%m-%d") - days = datetime.timedelta(hours=24*gap) - t = t + days - return t.strftime("%Y-%m-%d") - -def query_lib_size(db, libname, date): - cursor = db.cursor() - t1 = date + ' 00:00:00' - t2 = next_day(date,1) + ' 00:00:00' - sql = "SELECT size FROM %s WHERE createdTime > '%s' AND createdTime < '%s'" % (libname, t1, t2) - cursor.execute(sql) - result = cursor.fetchone() - #print libname + ":" + str(result[0])+'kB' - data = {} - data[libname] = result[0] - return data - -def query_all_libs(db, date): - tables = list_lib_names(db) - result = {} - for t in tables: - data = query_lib_size(db, t, date) - result.update(data) - return result - -db = connect_db() -#print tables -today = today() -Monday = prev_day(today, 4) - -csv = "cocos2d-libsize-tracking-"+today+".csv" -with open(csv, "w") as stats_file: - title = 'date,' - libs = list_lib_names(db) - for name in libs: - title += name - title += ',' - stats_file.write(title) - stats_file.write('\n') - for i in range(0,5): - d = next_day(Monday, i) - stats_file.write(d) - stats_file.write(',') - stats = query_all_libs(db, d) - for name in libs: - size = str(stats[name]) - stats_file.write(size) - stats_file.write(',') - stats_file.write('\n') -close_db(db) -#print yesterday \ No newline at end of file diff --git a/tools/jenkins-scripts/master-scripts/emptytest-post-build.py b/tools/jenkins-scripts/master-scripts/emptytest-post-build.py deleted file mode 100644 index afc92f390ff1..000000000000 --- a/tools/jenkins-scripts/master-scripts/emptytest-post-build.py +++ /dev/null @@ -1,32 +0,0 @@ -import os -import json -import requests -import jenkinsapi -from jenkinsapi.jenkins import Jenkins -from jenkinsapi.constants import STATUS_SUCCESS - -payload_str = os.environ['payload'] -payload_str = payload_str.decode('utf-8','ignore') -#parse to json obj -payload = json.loads(payload_str) -#pr = payload['pull_request'] -url = payload['html_url'] -print "build pr:" + url -#get comments url -comments_url = payload['comments_url'] - -J = Jenkins(os.environ['JENKINS_URL']) -target_url = os.environ['BUILD_URL'] -build_number = int(os.environ['BUILD_NUMBER']) -data = {} -access_token = os.environ['GITHUB_COMMENT_ACCESS_TOKEN'] -Headers = {"Authorization":"token " + access_token} - -result = J[os.environ['JOB_NAME']].get_build(build_number).get_status() - -if(result == STATUS_SUCCESS): - data['body'] = "Emptytest run successfully: " + target_url -else: - data['body'] = "Emptytest failed: " + target_url - -requests.post(comments_url, data=json.dumps(data), headers=Headers) diff --git a/tools/jenkins-scripts/master-scripts/emptytest.py b/tools/jenkins-scripts/master-scripts/emptytest.py deleted file mode 100644 index 86d671981a8f..000000000000 --- a/tools/jenkins-scripts/master-scripts/emptytest.py +++ /dev/null @@ -1,354 +0,0 @@ -#!/usr/bin/python -# check crash of cppemptytest -# install/open/uninstall apk -# perpose: for emptytest. -# now support: android -# will add: autotest-win7 - -import os -import sys -import json -import time -import socket -import platform -import threading -import codecs -import re -import paramiko - -payload = {} -#get payload from os env -if os.environ.has_key('payload'): - payload_str = os.environ['payload'] - #parse to json obj - payload = json.loads(payload_str) -print 'payload:',payload -pr_num = 6326 -#get pull number -if payload.has_key('number'): - pr_num = payload['number'] -print 'pr_num:' + str(pr_num) -run_app_time = 5 -if os.environ.has_key('RUN_APP_TIME'): - run_app_time = os.environ['RUN_APP_TIME'] -print 'run_app_time:', run_app_time - -test_name = ['cpp_empty_test'] -if os.environ.has_key('TESTS_NAME'): - temp_var = os.environ['TESTS_NAME'] - test_name = temp_var.split(', ') -package_name = ['org.cocos2dx.cpp_empty_test'] -if os.environ.has_key('PACKAGE_NAME'): - temp_var = os.environ['PACKAGE_NAME'] - package_name = temp_var.split(', ') -activity_name = ['org.cocos2dx.cpp_empty_test.AppActivity'] -if os.environ.has_key('ACTIVITY_NAME'): - temp_var = os.environ['ACTIVITY_NAME'] - activity_name = temp_var.split(', ') -gIdx = 0 -if os.environ.has_key('TEST_INDEX'): - gIdx = os.environ('TEST_INDEX') - -current_platform = platform.system() -print 'current platform is:', current_platform - -arrDevices = [] -def getDevices(): - cmd = 'adb devices' - info_devices = os.popen(cmd).read() - arr_info = info_devices.split('\n') - del arr_info[0] - count = 0 - for device in arr_info: - if len(device) > 0: - count += 1 - print 'device ', count,device - deviceInfo = device.split(' ') - global arrDevices - obj = {} - obj['name'] = deviceInfo[0] - arrDevices.append(obj) - return count - -def getADBDeviceIP(device_name): - output = os.popen("adb -s "+device_name+" shell netcfg") - configs = output.read().split('\r\n') - output.close() - for l in configs: - items = l.split() - if len(items)>1 and items[1] == 'UP': - if items[2].find('127.0.0.1') < 0 and items[2].find('0.0.0.0') < 0: - return items[2] - return False -def mapIP(): - for device in arrDevices: - ip_d = getADBDeviceIP(device['name']) - device['ip'] = ip_d - -allThreadIsRunning = {} -def setThreadStatus(): - for device in arrDevices: - allThreadIsRunning[device['name']] = 1 - -devices_info = {} -info_list = '{"product":["model","brand","name","cpu.abi","cpu.abi2","manufacturer","locale.language","locale.region"],"build":["id","version.sdk","version.release"]}' -if os.environ.has_key('DEVICE_INFO_LIST'): - info_list = os.environ['DEVICE_INFO_LIST'] -info_list = eval(info_list) -def getDeviceInfoByName(name): - cmd = '' - dev_name = name - if len(name) > 0: - cmd = 'adb -s '+name+' shell cat /system/build.prop' - else: - cmd = 'adb shell cat /system/build.prop' - dev_name = 'device one' - pip_cat = os.popen(cmd) - read_info = pip_cat.read() - read_info_list = read_info.split('\r\n') - device_info_one = {} - def checkProperty(item_str, device_name): - for argv in info_list: - for item in info_list[argv]: - prop = argv+'.'+item - if item_str.find(prop) > -1: - arr_item = item_str.split('=') - device_info_one[prop] = arr_item[1] - break - for item in read_info_list: - checkProperty(item, dev_name) - devices_info[dev_name] = device_info_one - -#getDeviceInfoByName('') -#print 'device_info:',device_info -def getDeviceInfomation(): - for device in arrDevices: - getDeviceInfoByName(device['name']) - -info_empty_test = {} -info_empty_test_pro = ['install','open','socket','uninstall'] -def init_info_empty_test(): - for item in info_empty_test_pro: - info_empty_test[item] = {} -init_info_empty_test() - -apk_name = 'apks/'+test_name[gIdx]+'/'+test_name[gIdx]+'_'+str(pr_num)+'.apk' -def install_apk_on_device(device): - name = device['name'] - cmd = 'adb -s '+name+' install '+apk_name - print 'install on '+name - info_install = os.popen(cmd).read() - print 'infomation of install apk:', info_install - info_install_arr = info_install.split('\r\n') - info_install_result = False - for item in info_install_arr: - if item.find('Success') > -1: - info_install_result = True - info_empty_test['install'][name] = info_install_result - return True - -def open_apk_on_device(device): - print 'will open activity:' - name = device['name'] - cmd = 'adb -s '+name+' shell am start -n '+package_name[gIdx]+'/'+activity_name[gIdx] - # print 'start activity:', cmd - info_start = os.popen(cmd).read() - info_start = info_start.split('\r\n') - # print 'info_start:', info_start - info_start_result = True - for info in info_start: - if info.find('Error:') > -1: - print 'infomation of open activity:',info - info_start_result = False - info_empty_test['open'][name] = info_start_result - return True - -PORT = 5678 -def socket_status_on_device(device): - name = device['name'] - ip = device['ip'] - soc = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - status_socket = False - info_of_socket_result = '' - try: - print 'telnet ', ip, PORT - soc.connect((ip, PORT)) - cmd = 'resolution\r\n' - print 'connected successfully.' - print 'send console command: resolution' - soc.send(cmd) - while True: - data = soc.recv(1024) - if len(data): - print data - if data.find('size:') > -1: - info_of_socket_result = 'OK' - print 'close', test_name[gIdx] - soc.send('director end') - status_socket = True - break - if not data: - info_of_socket_result = test_name[gIdx]+' is crashed!' - break - except Exception, e: - info_of_socket_result = test_name[gIdx]+' is crashed!' - time.sleep(2) - soc.close() - time.sleep(2) - info_empty_test['socket'][name] = info_of_socket_result - return status_socket - -def uninstall_apk_on_device(device): - # adb shell pm uninstall -n org.cocos2dx.hellolua - print 'uninstall ', test_name[gIdx] - name = device['name'] - cmd = 'adb -s '+name+' shell pm uninstall -n '+package_name[gIdx] - info_uninstall = os.popen(cmd).read() - info_uninstall_result = '' - if info_uninstall.find('Success') > -1: - info_uninstall_result = 'OK' - else: - info_uninstall_result = 'uninstall Failed!' - info_empty_test['uninstall'][name] = info_uninstall_result - return True - -def excute_test_on_device(device): - uninstall_apk_on_device(device) - print device - info_install = install_apk_on_device(device) - print 'install:', info_install - info_open = open_apk_on_device(device) - print 'open:', info_open - time.sleep(3) - info_socket = socket_status_on_device(device) - print 'socket:', info_socket - info_uninstall = uninstall_apk_on_device(device) - print 'uninstall:', info_uninstall - allThreadIsRunning[device['name']] = 0 - -address_of_result_html = '' -def send_result_to_master(): - if not os.environ.has_key('REMOTE_IP'): - return false - remote_ip = os.environ['REMOTE_IP'] - remote_port = os.environ['REMOTE_PORT'] - remote_user = os.environ['REMOTE_USER'] - remote_pwd = os.environ['REMOTE_PWD'] - remote_dir = os.environ['REMOTE_DIR'] - remote_dir = remote_dir + str(pr_num)+'/' - print remote_dir - ssh = paramiko.SSHClient() - print 'ssh:',ssh - ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - ssh.connect(remote_ip, int(remote_port), remote_user, remote_pwd) - # create dir - stdin, stdout, stderr = ssh.exec_command("mkdir "+remote_dir) - ssh.close() - trans = paramiko.Transport((remote_ip,int(remote_port))) - trans.connect(username = remote_user, password = remote_pwd) - sftp = paramiko.SFTPClient.from_transport(trans) - remotepath = remote_dir+test_name[gIdx]+'_'+str(pr_num)+'.html' - localpath = 'html/cpp_empty_test/cpp_empty_test_'+str(pr_num)+'.html' - sftp.put(localpath, remotepath) - sftp.close() - result_dir = remote_dir.replace('/data',':9000') - global address_of_result_html - address_of_result_html = 'http://'+remote_ip+result_dir+test_name[gIdx]+'_'+str(pr_num)+'.html' - -def check_thread_is_running(): - while 1: - in_running = 0 - for key in allThreadIsRunning: - in_running = in_running + allThreadIsRunning[key] - # print 'in_running:', in_running - time.sleep(3) - if not in_running: - break - print 'all cpp emptytest is finished.' - log_emptytest_result() - print 'will send result:' - send_result_to_master() - print 'end of check thread is running.' - print 'address of result is:',address_of_result_html - -def generate_html_with_result(result): - target_path = 'html/cpp_empty_test/cpp_empty_test_'+str(pr_num)+'.html' - data = codecs.open('hello.html', encoding='UTF-8').read() - data = re.sub("content", result, data) - codecs.open(target_path, 'wb', encoding='UTF-8').write(data) - -empty_test_result = True -str_result = '' -def log_emptytest_result(): - def appendToResult(one_str): - global str_result - str_result = str_result + one_str + '\r\n' - appendToResult('
      ')
      -    appendToResult('empty test start:')
      -    for device in arrDevices:
      -        name = device['name']
      -        appendToResult('device infomation of : '+name)
      -        for key in devices_info[name]:
      -            appendToResult('\t'+key+':'+devices_info[name][key])
      -        appendToResult('install: ' + str(info_empty_test['install'][name]))
      -        appendToResult('open: ' + str(info_empty_test['open'][name]))
      -        appendToResult('telnet ' + str(device['ip'])+' : ' + str(info_empty_test['socket'][name]))
      -        appendToResult('close: ' + str(info_empty_test['socket'][name]))
      -        appendToResult('uninstall: ' + str(info_empty_test['uninstall'][name]))
      -        if not info_empty_test['install'][name] or not info_empty_test['open'][name] or not info_empty_test['socket'][name] or not info_empty_test['uninstall'][name]:
      -            empty_test_result = False
      -            appendToResult('run failed!')
      -        else: appendToResult('run successfully!')
      -        appendToResult('')
      -    appendToResult('empty test end.
      ') - generate_html_with_result(str_result) - print 'log empty test end' - -class myThread(threading.Thread): - def __init__(self,threadname): - threading.Thread.__init__(self,name=threadname) - def run(self): - time.sleep(2) - device = self.getName() - print type(device) - device = eval(device) - print type(device), device - excute_test_on_device(device) - -def run_emptytest(): - for device in arrDevices: - th = myThread(device) - th.start() - -def main(): - print 'in main:' - getDevices() - if len(arrDevices): - mapIP() - setThreadStatus() - print 'arrDevices:',arrDevices - time.sleep(1) - else: - print 'there is no device for emptytest, please check devices!' - return 1 - if len(arrDevices): - getDeviceInfomation() - run_emptytest() - check_thread_is_running() - print 'info_empty_test:', info_empty_test - print 'empty test end', empty_test_result - if empty_test_result: - return 0 - else: - return 1 - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/master-scripts/github-pr-watchdog.py b/tools/jenkins-scripts/master-scripts/github-pr-watchdog.py deleted file mode 100644 index cb8b30185003..000000000000 --- a/tools/jenkins-scripts/master-scripts/github-pr-watchdog.py +++ /dev/null @@ -1,72 +0,0 @@ -#check latest pull request statuses, it no statuses found after 3 min, rebuild the pr -import os -import requests -import datetime -import re -import json -import sys -import traceback - -url = 'https://api.github.com/repos/cocos2d/cocos2d-x/pulls?state=open&sort=created&direction=desc' -job_trigger_url=os.environ['JOB_PULL_REQUEST_BUILD_TRIGGER_URL'] -access_token = os.environ['GITHUB_ACCESS_TOKEN'] -Headers = {"Authorization":"token " + access_token} -def main(): - r = requests.get(url,headers=Headers) - payload = r.json() - print payload - for pr in payload: - pr_num = pr['number'] - r = requests.get(pr['url']+"/commits",headers=Headers) - commits = r.json() - #print commits - last_commit = commits[len(commits)-1] - message = last_commit['commit']['message'] - - #print message - pattern = re.compile("\[ci(\s+)skip\]", re.I) - result_commit_title = pattern.search(message) - - title = pr['title'] - result_pr_title = pattern.search(title) - if result_commit_title is not None or result_pr_title is not None: - print 'skip build for pull request #' + str(pr_num) - break - #return(0) - s = pr['statuses_url'] - update_time = pr['updated_at'] - print pr_num - print s - print update_time - t = datetime.datetime.strptime(update_time, "%Y-%m-%dT%H:%M:%SZ") - now = datetime.datetime.utcnow() - three_minutes = datetime.timedelta(seconds=3*60) - if (t + three_minutes < now): - #print pr_num - statuses = requests.get(s, headers=Headers) - #print statuses.json() - if(len(statuses.json()) < 1): - print pr_num - payload_forward = {} - payload_forward['number']=pr_num - payload_forward['action']=pr['state'] - payload_forward['html_url']=pr['html_url'] - payload_forward['statuses_url']=pr['statuses_url'] - payload_forward['branch']=pr['base']['ref'] - print payload_forward - post_data = {'payload':""} - post_data['payload']= json.dumps(payload_forward) - - requests.post(job_trigger_url, data=post_data) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) - diff --git a/tools/jenkins-scripts/master-scripts/job-comment-trigger.py b/tools/jenkins-scripts/master-scripts/job-comment-trigger.py deleted file mode 100644 index 748892ae089c..000000000000 --- a/tools/jenkins-scripts/master-scripts/job-comment-trigger.py +++ /dev/null @@ -1,136 +0,0 @@ -import json -import re -import os -import requests -import sys -import traceback -import urllib2 - -http_proxy = '' -if('HTTP_PROXY' in os.environ): - http_proxy = os.environ['HTTP_PROXY'] -proxyDict = {'http': http_proxy, 'https': http_proxy} - -def main(): - #get payload from os env - payload_str = os.environ['payload'] - #parse to json obj - payload = json.loads(payload_str) - - print payload - - issue = payload['issue'] - #get pull number - pr_num = issue['number'] - print 'pr_num:' + str(pr_num) - payload_forword = {"number": pr_num} - - comment = payload['comment'] - #get comment body - comment_body = comment['body'] - print comment_body - #will check 'ci' comment - searchCI = re.search("\[ci.*\]", comment_body) - - #will check console/console create - searchConsole = re.search('\[console.*\]', comment_body) - - if searchCI is None and searchConsole is None: - print 'skip build for pull request #' + str(pr_num) - return(0) - - #build for pull request action 'open' and 'synchronize', skip 'close' - action = issue['state'] - print 'action: ' + action - payload_forword['action'] = action - - pr = issue['pull_request'] - url = pr['html_url'] - print "url:" + url - payload_forword['html_url'] = url - - #get pull request info - req = os.environ['GITHUB_REMOTE'] + str(pr_num) - pr_payload = '' - try: - pr_payload = urllib2.urlopen(req).read() - except: - traceback.print_exc() - - repository = json.loads(pr_payload) - #get statuses url - statuses_url = repository['statuses_url'] - payload_forword['statuses_url'] = statuses_url - print 'statuses_url: ' + statuses_url - #get comments url - comments_url = repository['comments_url'] - payload_forword['comments_url'] = comments_url - print 'comments_url: ' + comments_url - - #get pr target branch - branch = repository['base']['ref'] - payload_forword['branch'] = branch - print 'branch: ' + branch - - #set commit status to pending - target_url = os.environ['JOB_PULL_REQUEST_BUILD_URL'] - - if(action == 'closed' or action == 'assigned' - or branch == 'v2' or branch == 'v3-doc' or action == 'unassigned'): - print 'pull request #' + str(pr_num) + ' is ' + action + ', no build triggered' - return(0) - - data = {"state": "pending", "target_url": target_url, "context": "Jenkins CI", - "description": "Wait available build machine..."} - access_token = os.environ['GITHUB_ACCESS_TOKEN'] - Headers = {"Authorization": "token " + access_token} - - try: - if searchCI: - ciOper = searchCI.group() - if('rebuild' in ciOper): - requests.post(statuses_url, data=json.dumps(data), - headers=Headers, proxies=proxyDict) - except: - traceback.print_exc() - - job_trigger_url = '' - if searchCI: - ciOper = searchCI.group() - if('rebuild' in ciOper): - job_trigger_url = os.environ['JOB_PULL_REQUEST_BUILD_TRIGGER_URL'] - if('emptytest' in ciOper): - job_trigger_url = os.environ['JOB_EMPTYTEST_TRIGGER_URL'] - if('release' in ciOper): - searchTag = re.search('\[ci release (.*)\]', ciOper) - if searchTag: - ci_tag = searchTag.group(1) - payload_forword['tag'] = ci_tag - job_trigger_url = os.environ['JOB_RELEASE_TRIGGER_URL'] - if searchConsole: - consoleOper = searchConsole.group() - job_trigger_url = os.environ['JOB_CONSOLE_TEST_TRIGGER_URL'] - payload_forword['console'] = consoleOper - print 'job_trigger_url is: ', job_trigger_url - - #send trigger and payload - if('tag' in payload_forword): - post_data = {'tag': ""} - post_data['tag'] = payload_forword['tag'] - else: - post_data = {'payload': ""} - post_data['payload'] = json.dumps(payload_forword) - requests.post(job_trigger_url, data=post_data, proxies=proxyDict) - - return(0) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/master-scripts/job-trigger.py b/tools/jenkins-scripts/master-scripts/job-trigger.py deleted file mode 100755 index 424b05d98e7b..000000000000 --- a/tools/jenkins-scripts/master-scripts/job-trigger.py +++ /dev/null @@ -1,125 +0,0 @@ -#Github pull reqest builder for Jenkins - -import json -import re -import os -import requests -import sys -import traceback -from jenkinsapi.jenkins import Jenkins - -access_token = os.environ['GITHUB_ACCESS_TOKEN'] -Headers = {"Authorization": "token " + access_token} - -http_proxy = '' -if('HTTP_PROXY' in os.environ): - http_proxy = os.environ['HTTP_PROXY'] -proxyDict = {'http': http_proxy, 'https': http_proxy} - -def check_queue_build(action, pr_num, statuses_url): - username = os.environ['JENKINS_ADMIN'] - password = os.environ['JENKINS_ADMIN_PW'] - jenkins_url = os.environ['JENKINS_URL'] - J = Jenkins(jenkins_url, username, password) - queues = J.get_queue() - for key, queue in queues.iteritems(): - q_payload_str = queue.get_parameters()['payload'].decode('utf-8', 'ignore') - q_payload = json.loads(q_payload_str) - q_pr_num = q_payload['number'] - q_statuses_url = q_payload['statuses_url'] - if(q_pr_num == pr_num): - if(action == 'closed') or (q_statuses_url != statuses_url): - queues.delete_item(queue) - target_url = os.environ['JOB_PULL_REQUEST_BUILD_URL'] - data = {"state": "error", "target_url": target_url} - try: - requests.post(statuses_url, data=json.dumps(data), - headers=Headers, proxies=proxyDict) - except: - traceback.print_exc() - -def main(): - #get payload from os env - payload_str = os.environ['payload'] - #parse to json obj - payload = json.loads(payload_str) - - #get pull number - pr_num = payload['number'] - print 'pr_num:' + str(pr_num) - payload_forword = {"number": pr_num} - - #build for pull request action 'open' and 'synchronize', skip 'close' - action = payload['action'] - print 'action: ' + action - payload_forword['action'] = action - - pr = payload['pull_request'] - url = pr['html_url'] - print "url:" + url - payload_forword['html_url'] = url - - #get statuses url - statuses_url = pr['statuses_url'] - payload_forword['statuses_url'] = statuses_url - - #get pr target branch - branch = pr['base']['ref'] - payload_forword['branch'] = branch - - #set commit status to pending - target_url = os.environ['JOB_PULL_REQUEST_BUILD_URL'] - - try: - check_queue_build(action, pr_num, statuses_url) - except: - print 'Can not find build in queue' - - if(action == 'closed' or action == 'labeled' or action == 'unassigned' - or action == 'assigned' or action == 'unlabeled' - or branch == 'v2' or branch == 'v3-doc'): - print 'pull request #' + str(pr_num) + ' is ' + action + ', no build triggered' - return(0) - - r = requests.get(pr['url'] + "/commits", headers=Headers, proxies=proxyDict) - commits = r.json() - last_commit = commits[len(commits) - 1] - message = last_commit['commit']['message'] - - pattern = re.compile("\[ci(\s+)skip\]", re.I) - result_commit_title = pattern.search(message) - - title = pr['title'] - result_pr_title = pattern.search(title) - if result_commit_title is not None or result_pr_title is not None: - print 'skip build for pull request #' + str(pr_num) - return(0) - - data = {"state": "pending", "target_url": target_url, - "context": "Jenkins CI", - "description": "Waiting available build machine..."} - - try: - requests.post(statuses_url, data=json.dumps(data), - headers=Headers, proxies=proxyDict) - except: - traceback.print_exc() - - job_trigger_url = os.environ['JOB_TRIGGER_URL'] - #send trigger and payload - post_data = {'payload': ""} - post_data['payload'] = json.dumps(payload_forword) - requests.post(job_trigger_url, data=post_data, proxies=proxyDict) - - return(0) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) diff --git a/tools/jenkins-scripts/master-scripts/post-build.py b/tools/jenkins-scripts/master-scripts/post-build.py deleted file mode 100644 index 2efc346ded2e..000000000000 --- a/tools/jenkins-scripts/master-scripts/post-build.py +++ /dev/null @@ -1,72 +0,0 @@ -import os -import json -import requests -import jenkinsapi -from jenkinsapi.jenkins import Jenkins -from jenkinsapi.constants import STATUS_SUCCESS -from email.mime.text import MIMEText -import smtplib -def send_mail(sub,title,content): - #to_list = os.environ['EMAIL_LIST'].split(' ') - mail_user = os.environ['EMAIL_USER'] - mail_pass = os.environ['EMAIL_PWD'] - to_list = os.environ['EMAIL_LIST'].split(' ') - mail_postfix = 'gmail.com' - me = mail_user + "<" + mail_user + "@" + mail_postfix + ">" - msg = MIMEText(content, _subtype='plain', _charset='gb2312') - msg['Subject'] = sub - msg['From'] = me - msg['To'] = " ".join(to_list) - print 'to users:', msg['To'] - msg['Content'] = 'test' - try: - s = smtplib.SMTP('smtp.gmail.com', 587) - s.ehlo() - s.starttls() - s.login(mail_user,mail_pass) - s.sendmail(me, to_list, str(msg)) - print 'info:', me, to_list, str(msg) - s.close() - return True - except Exception, e: - print str(e) - return False - -def sendEmail(pr, html_url, target_url): - sub = "Pull request #" + str(pr) + " build is failed!" - title = "build failed!" - content = 'to view build result, check:\r\n'+target_url + '\r\nYou can view the failed pr at:\r\n'+html_url - send_mail(sub, title, content) - -payload_str = os.environ['payload'] -payload_str = payload_str.decode('utf-8','ignore') -#parse to json obj -payload = json.loads(payload_str) -#pr = payload['pull_request'] -url = payload['html_url'] -print "build pr:" + url -pr_num = payload['number'] -#get statuses url -statuses_url = payload['statuses_url'] - -J = Jenkins(os.environ['JENKINS_URL']) -target_url = os.environ['BUILD_URL'] -build_number = int(os.environ['BUILD_NUMBER']) -data = {"state":"pending", "target_url":target_url, "context":"Jenkins CI", "description":"Build finished!"} -access_token = os.environ['GITHUB_ACCESS_TOKEN'] -Headers = {"Authorization":"token " + access_token} - -result = J[os.environ['JOB_NAME']].get_build(build_number).get_status() - -if(result == STATUS_SUCCESS): - data['state'] = "success" - data['description'] = "Build successfully!" -else: - data['state'] = "failure" - data['description'] = "Build failed!" - sendEmail(pr_num, url, target_url) -http_proxy = '' -if(os.environ.has_key('HTTP_PROXY')): - http_proxy = os.environ['HTTP_PROXY'] -proxyDict = {'http':http_proxy,'https':http_proxy} -requests.post(statuses_url, data=json.dumps(data), headers=Headers, proxies = proxyDict) diff --git a/tools/jenkins-scripts/master-scripts/watchdog.py b/tools/jenkins-scripts/master-scripts/watchdog.py deleted file mode 100644 index e9fd9b1cbf4e..000000000000 --- a/tools/jenkins-scripts/master-scripts/watchdog.py +++ /dev/null @@ -1,114 +0,0 @@ -import jenkinsapi -from jenkinsapi.jenkins import Jenkins -from jenkinsapi.node import Node -import sys -import time -import os -from email.mime.text import MIMEText -import smtplib -import requests - -def send_mail(sub,title,content): - to_list = os.environ['EMAIL_LIST'].split(' ') - mail_user = os.environ['EMAIL_USER'] - mail_pass = os.environ['EMAIL_PWD'] - mail_postfix = 'gmail.com' - me = mail_user + "<" + mail_user + "@" + mail_postfix + ">" - msg = MIMEText(content, _subtype='plain', _charset='gb2312') - msg['Subject'] = sub - msg['From'] = me - msg['To'] = " ".join(to_list) - print 'to users:', msg['To'] - msg['Content'] = 'test' - try: - s = smtplib.SMTP('smtp.gmail.com', 587) - s.ehlo() - s.starttls() - s.login(mail_user,mail_pass) - s.sendmail(me, to_list, str(msg)) - print 'info:', me, to_list, str(msg) - s.close() - return True - except Exception, e: - print str(e) - return False - -def sendEmail(msg): - send_mail("Jenkins node " + msg + " is offline", 'for offline.', msg + ' is offline') - -def rebuild_jobs(build): - rebuild_jobs = os.environ['REBUILD_JOBS'].split(' ') - trigger_urls = os.environ['JOB_TRIGGER_URLS'].split(' ') - for i, rebuild_job in enumerate(rebuild_jobs): - if rebuild_job in build.__str__(): - payload = build._poll()['actions'][0]['parameters'][0]['value'] - job_trigger_url = trigger_urls[i] - post_data = {'payload': payload} - requests.post(job_trigger_url, data=post_data) - print 'build_job:', rebuild_job, 'rebuild : TRUE' - -#check & kill dead buid -def build_time(_job,_threshold): - #get jenkins-job-watchdog-threshold - #Get last build running - build = _job.get_last_build() - running = build.is_running() - print 'build_job:',_job,'running:',running - if not running: - return False - - #Get numerical ID of the last build. - buildnu = _job.get_last_buildnumber() - print "buildnumber:#",buildnu - #get nowtime - nowtime = int(time.time()) - print 'nowtime:', time.ctime(nowtime) - #get build start time - timestamp = build._poll()['timestamp'] - buildtime = int(timestamp)/1000 - print 'buildtime:', time.ctime(buildtime) - subtime = (nowtime - buildtime)/60 - print 'subtime:', subtime, _threshold - if subtime > _threshold: - rebuild_jobs(build) - #print 'subtime',subtime - #kill dead buid - build.stop() - -def main(): - username = os.environ['JENKINS_ADMIN'] - password = os.environ['JENKINS_ADMIN_PW'] - jenkins_url = os.environ['JENKINS_URL'] - J = Jenkins(jenkins_url,username,password) - #get all jenkins jobs - for key,job in J.iteritems(): - threshold = 0 - if(os.environ.has_key(key+'-threshold')): - threshold = int(os.environ[key+'-threshold']) - else: - threshold = int(os.environ['jenkins-job-watchdog-threshold']) - build_time(job,threshold) - - #check node status - node_names = os.environ['NODE_LIST'].split(' ') - for node_name in node_names: - node = J.get_node(node_name) - if node.is_online(): - print node_name, ' : is online' - else: - sendEmail(node_name) - print node_name, ' : is offline' - return(0) - - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) - diff --git a/tools/jenkins-scripts/pull-request-builder.py b/tools/jenkins-scripts/pull-request-builder.py deleted file mode 100755 index 018ac03b5709..000000000000 --- a/tools/jenkins-scripts/pull-request-builder.py +++ /dev/null @@ -1,149 +0,0 @@ -import os -import sys -import traceback -import urllib -import urllib2 -import base64 -import json -import requests -import subprocess - -#set Jenkins build description using submitDescription to mock browser behavior -http_proxy = '' -if('HTTP_PROXY' in os.environ): - http_proxy = os.environ['HTTP_PROXY'] -proxyDict = {'http': http_proxy, 'https': http_proxy} - -branch = "v3" -pr_num = 0 -workspace = "." -node_name = "ios" - -def set_jenkins_job_description(desc, url): - req_data = urllib.urlencode({'description': desc}) - request = urllib2.Request(url + 'submitDescription', req_data) - #print(os.environ['BUILD_URL']) - request.add_header('Content-Type', 'application/x-www-form-urlencoded') - user_name = os.environ['JENKINS_ADMIN'] - password = os.environ['JENKINS_ADMIN_PW'] - base64string = base64.encodestring(user_name + ":" + password).replace('\n', '') - request.add_header("Authorization", "Basic " + base64string) - try: - urllib2.urlopen(request) - except: - traceback.print_exc() - -def send_notifies_to_github(): - global branch - global pr_num - global workspace - global node_name - # get payload from os env - payload_str = os.environ['payload'] - payload_str = payload_str.decode('utf-8', 'ignore') - #parse to json obj - payload = json.loads(payload_str) - - #get pull number - pr_num = payload['number'] - print 'pr_num:' + str(pr_num) - - #build for pull request action 'open' and 'synchronize', skip 'close' - action = payload['action'] - print 'action: ' + action - - #pr = payload['pull_request'] - - url = payload['html_url'] - print "url:" + url - pr_desc = '

      pr#' + str(pr_num) + ' is ' + action + '

      ' - - #get statuses url - statuses_url = payload['statuses_url'] - - #get pr target branch - branch = payload['branch'] - workspace = os.environ['WORKSPACE'] - node_name = os.environ['NODE_NAME'] - - #set commit status to pending - # target_url = os.environ['BUILD_URL'] - jenkins_url = os.environ['JENKINS_URL'] - job_name = os.environ['JOB_NAME'].split('/')[0] - build_number = os.environ['BUILD_NUMBER'] - target_url = jenkins_url + 'job/' + job_name + '/' + build_number + '/' - - set_jenkins_job_description(pr_desc, target_url) - - data = {"state": "pending", "target_url": target_url, "context": "Jenkins CI", "description": "Build started..."} - access_token = os.environ['GITHUB_ACCESS_TOKEN'] - Headers = {"Authorization": "token " + access_token} - - try: - requests.post(statuses_url, data=json.dumps(data), headers=Headers, proxies=proxyDict) - except: - traceback.print_exc() - -def syntronize_remote_pr(): - global workspace - global branch - global pr_num - #reset path to workspace root - os.system("cd " + workspace) - #pull latest code - os.system("git fetch origin " + branch) - os.system("git --version") - os.system("git checkout " + branch) - os.system("git merge origin/" + branch) - os.system("git branch -D pull" + str(pr_num)) - #clean workspace - print "Before checkout: git clean -xdf -f" - os.system("git clean -xdf -f") - #fetch pull request to local repo - git_fetch_pr = "git fetch origin pull/" + str(pr_num) + "/head" - ret = os.system(git_fetch_pr) - if(ret != 0): - sys.exit(1) - - #checkout a new branch from v3 or v4-develop - git_checkout = "git checkout -b " + "pull" + str(pr_num) - os.system(git_checkout) - #merge pull reqeust head - subprocess.call("git merge --no-edit FETCH_HEAD", shell=True) - - # The follow method is not working for Azure server - # p = os.popen('git merge --no-edit FETCH_HEAD') - # r = p.read() - # #check if merge fail - # if output.find('CONFLICT') > 0: - # print output - # raise Exception('There are conflicts in your PR!') - - # After checkout a new branch, clean workspace again - print "After checkout: git clean -xdf -f" - os.system("git clean -xdf -f") - - #update submodule - git_update_submodule = "git submodule update --init --force" - ret = os.system(git_update_submodule) - if(ret != 0): - sys.exit(1) - - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - send_notifies_to_github() - #syntronize local git repository with remote and merge the PR - syntronize_remote_pr() - jenkins_script_path = "tools" + os.sep + "jenkins-scripts" + os.sep + "do-pull-request-builder.py" - sys_ret = os.system("python " + jenkins_script_path) - except: - traceback.print_exc() - sys_ret = 1 - finally: - if sys_ret != 0: - sys.exit(1) - else: - sys.exit(0) diff --git a/tools/jenkins-scripts/slave-scripts/framework/android-build.sh b/tools/jenkins-scripts/slave-scripts/framework/android-build.sh deleted file mode 100755 index b3179aaf7c1a..000000000000 --- a/tools/jenkins-scripts/slave-scripts/framework/android-build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#put xctool.sh into your PATH -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -cd ${ADXE_ROOT} -python tools/framework-compile/bin/gen_cocos_libs.py -c --android diff --git a/tools/jenkins-scripts/slave-scripts/framework/mac-build.sh b/tools/jenkins-scripts/slave-scripts/framework/mac-build.sh deleted file mode 100755 index 49ddc303c725..000000000000 --- a/tools/jenkins-scripts/slave-scripts/framework/mac-build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#put xctool.sh into your PATH -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -cd ${ADXE_ROOT} -python tools/framework-compile/bin/gen_cocos_libs.py -c --mac | xcpretty diff --git a/tools/jenkins-scripts/slave-scripts/framework/win32-build.bat b/tools/jenkins-scripts/slave-scripts/framework/win32-build.bat deleted file mode 100644 index 54d467aa2773..000000000000 --- a/tools/jenkins-scripts/slave-scripts/framework/win32-build.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -python tools/framework-compile/bin/gen_cocos_libs.py -c --win diff --git a/tools/jenkins-scripts/slave-scripts/gen_jsb.py b/tools/jenkins-scripts/slave-scripts/gen_jsb.py deleted file mode 100755 index 4f69233e0c07..000000000000 --- a/tools/jenkins-scripts/slave-scripts/gen_jsb.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/python - -import os -import sys - -ret = 0 -genbindings_dirs = ['tolua', 'tojs'] -for item in genbindings_dirs: - os.chdir("tools/" + item) - ret = os.system('python genbindings.py') - os.chdir("../..") - if(ret != 0): - ret = 1 - break - -sys.exit(ret) diff --git a/tools/jenkins-scripts/slave-scripts/runtime/android-build.sh b/tools/jenkins-scripts/slave-scripts/runtime/android-build.sh deleted file mode 100755 index f183a97acfd3..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/android-build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 -t runtime -if [ $1 = "cpp" ];then - projectname="MyCppGame" -elif [ $1 = "lua" ];then - projectname="MyLuaGame" -elif [ $1 = "js" ];then - projectname="MyJSGame" -fi - -$adxe_cmd compile -p android -s $projectname --android-studio -j4 --ndk-mode release --compile-script 0 diff --git a/tools/jenkins-scripts/slave-scripts/runtime/ios-build.sh b/tools/jenkins-scripts/slave-scripts/runtime/ios-build.sh deleted file mode 100755 index 51b5be10981b..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/ios-build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 -t runtime - -if [ $1 = "cpp" ];then - schemename="MyCppGame-mobile" - projectpath="MyCppGame/proj.ios_mac/MyCppGame.xcodeproj" - adxe_project_path="MyCppGame" -elif [ $1 = "lua" ];then - schemename="MyLuaGame-mobile" - projectpath="MyLuaGame/frameworks/runtime-src/proj.ios_mac/MyLuaGame.xcodeproj" - adxe_project_path="MyLuaGame" -elif [ $1 = "js" ];then - schemename="MyJSGame-mobile" - projectpath="MyJSGame/frameworks/runtime-src/proj.ios_mac/MyJSGame.xcodeproj" - adxe_project_path="MyJSGame" -fi - -echo "start building..." -adxe compile -p ios -s $adxe_project_path | xcpretty -adxe compile -p ios -s $adxe_project_path -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" clean | xcpretty -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty -# #the following commands must not be removed -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build diff --git a/tools/jenkins-scripts/slave-scripts/runtime/linux-build.sh b/tools/jenkins-scripts/slave-scripts/runtime/linux-build.sh deleted file mode 100755 index 8cf8f10daf5b..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/linux-build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 - -if [ $1 = "cpp" ]; then - projectname="MyCppGame" -elif [ $1 = "lua" ]; then - projectname="MyLuaGame" -elif [ $1 = "js" ]; then - projectname="MyJSGame" -fi - -$adxe_cmd compile -p linux -s $projectname -m release -j4 --compile-script 0 diff --git a/tools/jenkins-scripts/slave-scripts/runtime/mac-build.sh b/tools/jenkins-scripts/slave-scripts/runtime/mac-build.sh deleted file mode 100755 index c20f5d39f0f3..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/mac-build.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 -t runtime - -if [ $1 = "cpp" ];then - schemename="MyCppGame-desktop" - projectpath="MyCppGame/proj.ios_mac/MyCppGame.xcodeproj" -elif [ $1 = "lua" ];then - schemename="MyLuaGame-desktop" - projectpath="MyLuaGame/frameworks/runtime-src/proj.ios_mac/MyLuaGame.xcodeproj" -elif [ $1 = "js" ];then - schemename="MyJSGame-desktop" - projectpath="MyJSGame/frameworks/runtime-src/proj.ios_mac/MyJSGame.xcodeproj" -fi - -xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" clean | xcpretty -xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty -#the following commands must not be removed -xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build diff --git a/tools/jenkins-scripts/slave-scripts/runtime/win32-cpp.bat b/tools/jenkins-scripts/slave-scripts/runtime/win32-cpp.bat deleted file mode 100644 index f1ec3c226772..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/win32-cpp.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyCppGame/proj.win32/MyCppGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/runtime/win32-js.bat b/tools/jenkins-scripts/slave-scripts/runtime/win32-js.bat deleted file mode 100644 index 8e9c3b0da6e6..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/win32-js.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyJSGame/frameworks/runtime-src/proj.win32/MyJSGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/runtime/win32-lua.bat b/tools/jenkins-scripts/slave-scripts/runtime/win32-lua.bat deleted file mode 100644 index 857fd71423b6..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/win32-lua.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyLuaGame/frameworks/runtime-src/proj.win32/MyLuaGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-cpp.bat b/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-cpp.bat deleted file mode 100755 index 54a57c00f836..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-cpp.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyCppGame/proj.win8.1-universal/MyCppGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-js.bat b/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-js.bat deleted file mode 100755 index 8dbfe57b1d12..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-js.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyJSGame/frameworks/runtime-src/proj.win8.1-universal/MyJSGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-lua.bat b/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-lua.bat deleted file mode 100755 index 70212c9be1a8..000000000000 --- a/tools/jenkins-scripts/slave-scripts/runtime/windows-universal-lua.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyLuaGame/frameworks/runtime-src/proj.win8.1-universal/MyLuaGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/android-build.sh b/tools/jenkins-scripts/slave-scripts/templates/android-build.sh deleted file mode 100755 index d90de02c98bd..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/android-build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 -if [ $1 = "cpp" ];then - projectname="MyCppGame" -elif [ $1 = "lua" ];then - projectname="MyLuaGame" -elif [ $1 = "js" ];then - projectname="MyJSGame" -fi - -$adxe_cmd compile -p android -s $projectname --android-studio -j4 --ndk-mode release --compile-script 0 diff --git a/tools/jenkins-scripts/slave-scripts/templates/ios-build.sh b/tools/jenkins-scripts/slave-scripts/templates/ios-build.sh deleted file mode 100755 index 06cdc2a7dd03..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/ios-build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 - -if [ $1 = "cpp" ];then - schemename="MyCppGame-mobile" - projectpath="MyCppGame/proj.ios_mac/MyCppGame.xcodeproj" - cocos_project_path="MyCppGame" -elif [ $1 = "lua" ];then - schemename="MyLuaGame-mobile" - projectpath="MyLuaGame/frameworks/runtime-src/proj.ios_mac/MyLuaGame.xcodeproj" - cocos_project_path="MyLuaGame" -elif [ $1 = "js" ];then - schemename="MyJSGame-mobile" - projectpath="MyJSGame/frameworks/runtime-src/proj.ios_mac/MyJSGame.xcodeproj" - cocos_project_path="MyJSGame" -fi - -echo "start building..." -cocos compile -p ios -s $cocos_project_path | xcpretty -cocos compile -p ios -s $cocos_project_path -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" clean | xcpretty -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty -# #the following commands must not be removed -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build diff --git a/tools/jenkins-scripts/slave-scripts/templates/linux-build.sh b/tools/jenkins-scripts/slave-scripts/templates/linux-build.sh deleted file mode 100755 index 8cf8f10daf5b..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/linux-build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 - -if [ $1 = "cpp" ]; then - projectname="MyCppGame" -elif [ $1 = "lua" ]; then - projectname="MyLuaGame" -elif [ $1 = "js" ]; then - projectname="MyJSGame" -fi - -$adxe_cmd compile -p linux -s $projectname -m release -j4 --compile-script 0 diff --git a/tools/jenkins-scripts/slave-scripts/templates/mac-build.sh b/tools/jenkins-scripts/slave-scripts/templates/mac-build.sh deleted file mode 100755 index fb7f489683e1..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/mac-build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -adxe_cmd=tools/console/bin/adxe -$adxe_cmd new -l $1 - -if [ $1 = "cpp" ];then - schemename="MyCppGame-desktop" - projectpath="MyCppGame/proj.ios_mac/MyCppGame.xcodeproj" - cocos_project_path="MyCppGame" -elif [ $1 = "lua" ];then - schemename="MyLuaGame-desktop" - projectpath="MyLuaGame/frameworks/runtime-src/proj.ios_mac/MyLuaGame.xcodeproj" - cocos_project_path="MyLuaGame" -elif [ $1 = "js" ];then - schemename="MyJSGame-desktop" - projectpath="MyJSGame/frameworks/runtime-src/proj.ios_mac/MyJSGame.xcodeproj" - cocos_project_path="MyJSGame" -fi - -adxe compile -p mac -s $cocos_project_path | xcpretty -adxe compile -p mac -s $cocos_project_path - -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" clean | xcpretty -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty -# #the following commands must not be removed -# xcodebuild -project $projectpath -target "${schemename}" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build diff --git a/tools/jenkins-scripts/slave-scripts/templates/win32-cpp.bat b/tools/jenkins-scripts/slave-scripts/templates/win32-cpp.bat deleted file mode 100644 index 77c26ba29d58..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/win32-cpp.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyCppGame/proj.win32/MyCppGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/win32-js.bat b/tools/jenkins-scripts/slave-scripts/templates/win32-js.bat deleted file mode 100644 index 8e9c3b0da6e6..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/win32-js.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyJSGame/frameworks/runtime-src/proj.win32/MyJSGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/win32-lua.bat b/tools/jenkins-scripts/slave-scripts/templates/win32-lua.bat deleted file mode 100644 index 857fd71423b6..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/win32-lua.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyLuaGame/frameworks/runtime-src/proj.win32/MyLuaGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-cpp.bat b/tools/jenkins-scripts/slave-scripts/templates/windows-universal-cpp.bat deleted file mode 100755 index 54a57c00f836..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-cpp.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyCppGame/proj.win8.1-universal/MyCppGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-js.bat b/tools/jenkins-scripts/slave-scripts/templates/windows-universal-js.bat deleted file mode 100755 index 8dbfe57b1d12..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-js.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyJSGame/frameworks/runtime-src/proj.win8.1-universal/MyJSGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-lua.bat b/tools/jenkins-scripts/slave-scripts/templates/windows-universal-lua.bat deleted file mode 100755 index 70212c9be1a8..000000000000 --- a/tools/jenkins-scripts/slave-scripts/templates/windows-universal-lua.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild MyLuaGame/frameworks/runtime-src/proj.win8.1-universal/MyLuaGame.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/tests/android-build.sh b/tools/jenkins-scripts/slave-scripts/tests/android-build.sh deleted file mode 100755 index 25cdcbf12245..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/android-build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#put xctool.sh into your PATH -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -cd ${ADXE_ROOT} -python build/android-build.py -p 13 cpp-tests lua-tests js-tests diff --git a/tools/jenkins-scripts/slave-scripts/tests/ios-build.sh b/tools/jenkins-scripts/slave-scripts/tests/ios-build.sh deleted file mode 100755 index 3712d2f3b64c..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/ios-build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#put xctool.sh into your PATH -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests iOS" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" clean | xcpretty -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests iOS" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build | xcpretty -#the following commands must not be removed -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests iOS" -destination "platform=iOS Simulator,name=iPhone Retina (4-inch)" build diff --git a/tools/jenkins-scripts/slave-scripts/tests/linux-build.sh b/tools/jenkins-scripts/slave-scripts/tests/linux-build.sh deleted file mode 100755 index b26e390d2be5..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/linux-build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#put xctool.sh into your PATH -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -cd ${ADXE_ROOT} -mkdir linux-build -cd linux-build -cmake .. -if [ ! $? = 0 ]; then - echo "cmake generate error" - exit 1 -fi -make -j4 diff --git a/tools/jenkins-scripts/slave-scripts/tests/mac-build.sh b/tools/jenkins-scripts/slave-scripts/tests/mac-build.sh deleted file mode 100755 index 81a88f9238a6..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/mac-build.sh +++ /dev/null @@ -1,22 +0,0 @@ -#put xctool.sh into your PATH - -####### -# Cmake build -####### -# DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# ADXE_ROOT="$DIR"/../../.. -# cd ${ADXE_ROOT} -# mkdir mac-build -# cd mac-build -# cmake .. -# make -j4 - -####### -# xcode build -####### -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests Mac" clean | xcpretty -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests Mac" build | xcpretty -#xcpretty has a bug, some xcodebuid fails return value would be treated as 0. -xcodebuild -project "$ADXE_ROOT"/build/cocos2d_tests.xcodeproj -scheme "build all tests Mac" build diff --git a/tools/jenkins-scripts/slave-scripts/tests/tizen-build.sh b/tools/jenkins-scripts/slave-scripts/tests/tizen-build.sh deleted file mode 100755 index 12dc5c4585a8..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/tizen-build.sh +++ /dev/null @@ -1,26 +0,0 @@ -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ADXE_ROOT="$DIR"/../../../.. -cd ${ADXE_ROOT} -cocos compile -p tizen --tizen-arch arm -s tests/cpp-tests -if [ ! $? = 0 ]; then - echo "compile cpp-tests error" - exit 1 -fi - -cocos compile -p tizen --tizen-arch arm -s tests/cpp-empty-test -if [ ! $? = 0 ]; then - echo "compile cpp-empty-test error" - exit 1 -fi - -cocos compile -p tizen --tizen-arch arm -s tests/lua-tests -if [ ! $? = 0 ]; then - echo "compile lua-tests error" - exit 1 -fi - -cocos compile -p tizen --tizen-arch arm -s tests/lua-empty-test -if [ ! $? = 0 ]; then - echo "compile lua empty test error" - exit 1 -fi diff --git a/tools/jenkins-scripts/slave-scripts/tests/win32-build.bat b/tools/jenkins-scripts/slave-scripts/tests/win32-build.bat deleted file mode 100644 index 7f29e5337dcb..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/win32-build.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild build\cocos2d-win32.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/slave-scripts/tests/windows-universal.bat b/tools/jenkins-scripts/slave-scripts/tests/windows-universal.bat deleted file mode 100755 index 7959cc3aedc4..000000000000 --- a/tools/jenkins-scripts/slave-scripts/tests/windows-universal.bat +++ /dev/null @@ -1,2 +0,0 @@ -call "%VS120COMNTOOLS%vsvars32.bat" -msbuild build\cocos2d-win8.1-universal.sln /t:Build /p:Platform="Win32" /p:Configuration="Release" /m diff --git a/tools/jenkins-scripts/utils/create-job.py b/tools/jenkins-scripts/utils/create-job.py deleted file mode 100644 index 2cd7ffddda3f..000000000000 --- a/tools/jenkins-scripts/utils/create-job.py +++ /dev/null @@ -1,32 +0,0 @@ -#create ghprb job by pr number - -import sys -import json -import requests - -#get pr number from cmd -pr_num = sys.argv[1] - -#get github access token - - -#get pr data via github api - -api_get_pr = "https://api.github.com/repos/cocos2d/cocos2d-x/pulls/" + str(pr_num) - -r = requests.get(api_get_pr) -pr = r.json() - -#forge a payload -payload = {"action": "opened", "number": "", "pull_request": ""} -payload['number'] = pr_num -payload['pull_request'] = pr - -jenkins_job_url = "http://115.28.134.83:8000/job/ccs-pr" - -jenkins_trigger_url = jenkins_job_url + "/buildWithParameters?token=ced2014" - -#send trigger and payload -post_data = {'payload': ""} -post_data['payload'] = json.dumps(payload) -requests.post(jenkins_trigger_url, data=post_data) diff --git a/tools/jenkins-scripts/utils/create-template-project.py b/tools/jenkins-scripts/utils/create-template-project.py deleted file mode 100644 index 3787e142a2c9..000000000000 --- a/tools/jenkins-scripts/utils/create-template-project.py +++ /dev/null @@ -1,19 +0,0 @@ -import os - -languages = ['cpp', 'lua', 'javascript'] -base_path = 'tools/project-creator/' -create_project = base_path + 'create_project.py' -template_root = base_path + 'templateTest' - -# create project -for item in languages: - ret = os.system('python ' + create_project - + ' -n ' + 'template' + item - + ' -k ' + 'com.test.template.' + item - + ' -l ' + item - + ' -p ' + template_root) - if(ret > 0): - ret = 1 - exit(ret) - -exit(0) diff --git a/tools/jenkins-scripts/utils/reboot.py b/tools/jenkins-scripts/utils/reboot.py deleted file mode 100755 index a35ce631e4e2..000000000000 --- a/tools/jenkins-scripts/utils/reboot.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python -import sys -import os -import paramiko - -remote_machines = os.environ['REMOTE_MACHINES'] -remote_machines = remote_machines.split(', ') -print 'remote_machines', remote_machines - -remote_dir=os.environ['REMOTE_DIR'] -remote_dir=remote_dir.split(', ') -print 'remote_dir',remote_dir - -remote_ip=os.environ['REMOTE_IP'] -remote_ip=remote_ip.split(', ') -print 'remote_ip',remote_ip - -remote_user=os.environ['REMOTE_USER'] -remote_user=remote_user.split(', ') -print 'remote_user',remote_user - -remote_port=os.environ['REMOTE_PORT'] -remote_port=remote_port.split(', ') -print 'remote_port',int(remote_port[0]) - -all_machines = {} -def set_default_value_to_all_machines(): - for idx, item in enumerate(remote_machines): - all_machines[item]={} - all_machines[item]['ip']=remote_ip[idx] - all_machines[item]['dir']=remote_dir[idx] - all_machines[item]['port']=remote_port[idx] - all_machines[item]['user']=remote_user[idx] - all_machines[item]['pwd']=os.environ[item+'_PWD'] - -def reboot_machine(machine, item): - print 'machine:',machine, 'item:', item - remote_ip = machine['ip'] - remote_port = machine['port'] - remote_user = machine['user'] - remote_pwd = machine['pwd'] - remote_dir = os.path.join(machine['dir'],'workspace','reboot', 'reboot.py') - print remote_dir - ssh = paramiko.SSHClient() - print 'ssh:',ssh - ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - ssh.connect(remote_ip, int(remote_port), remote_user, remote_pwd) - # excute reboot.py on machine - cmd = 'python '+remote_dir - if item == 'win32_win7': - cmd = 'cmd.exe /c "python '+remote_dir+'"' - stdin, stdout, stderr = ssh.exec_command(cmd) - print stdout.readlines() - ssh.close() - print 'OK' - -def main(): - print 'in main' - set_default_value_to_all_machines() - for item in all_machines: - reboot_machine( all_machines[item], item ) - -# -------------- main -------------- -if __name__ == '__main__': - sys_ret = 0 - try: - sys_ret = main() - except: - traceback.print_exc() - sys_ret = 1 - finally: - sys.exit(sys_ret) - diff --git a/tools/jenkins-scripts/utils/upload_apk.sh b/tools/jenkins-scripts/utils/upload_apk.sh deleted file mode 100755 index 8c0af6e9a71f..000000000000 --- a/tools/jenkins-scripts/utils/upload_apk.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -localfile=$1 -remotefile=$2 - -sftp $FTP_HOME << EOF -put $localfile $remotefile -bye -EOF -echo "upload finished"

      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�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⪚j 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 C8dU!+uR+-GK@To6}oQHp8|(aJV1C9 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 z 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%0AyeE2Pt7P7(tBNH&`so$h$MtEW<*>WEY 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%0D<7)47LQ)Mc!x{mU9aqA?NT8Bg1%03L%U!(n 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 m|Zc5)eoK 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 Date: Tue, 28 Dec 2021 16:00:18 +0800 Subject: [PATCH 14/58] Update clang-format.yml --- .github/workflows/clang-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml index 0f2511e349d6..741547a48ade 100644 --- a/.github/workflows/clang-format.yml +++ b/.github/workflows/clang-format.yml @@ -21,7 +21,7 @@ jobs: - name: Run clang-format lint uses: DoozyX/clang-format-lint-action@v0.13 with: - source: './cocos ./extensions' + source: './cocos ./extensions ./tests ./templates' exclude: './thidrparty ./extensions/fairygui ./extensions/scripting/lua-bindings/auto ./extensions/spine' extensions: 'h,cpp,c,mm' clangFormatVersion: 13 From 20faef2f678719e70e796ecfd729b64cb6c47ab4 Mon Sep 17 00:00:00 2001 From: deal Date: Tue, 28 Dec 2021 16:03:49 +0800 Subject: [PATCH 15/58] Update clang-format.yml --- .github/workflows/clang-format.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml index 741547a48ade..007d1e0325c8 100644 --- a/.github/workflows/clang-format.yml +++ b/.github/workflows/clang-format.yml @@ -22,7 +22,7 @@ jobs: uses: DoozyX/clang-format-lint-action@v0.13 with: source: './cocos ./extensions ./tests ./templates' - exclude: './thidrparty ./extensions/fairygui ./extensions/scripting/lua-bindings/auto ./extensions/spine' + exclude: './thidrparty ./extensions/fairygui ./extensions/scripting/lua-bindings/auto ./extensions/spine ./tests/fairygui-tests' extensions: 'h,cpp,c,mm' clangFormatVersion: 13 inplace: True From ce5adf35f75ffa7a43995f7abe84e689e2389695 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 08:06:23 +0000 Subject: [PATCH 16/58] Committing clang-format changes --- .../Particle3D/PU/CCPUMeshSurfaceEmitter.cpp | 4 +- extensions/cocostudio/CCActionNode.cpp | 3 +- .../lua-bindings/manual/CCComponentLua.cpp | 14 +- .../lua-bindings/manual/CCLuaStack.cpp | 4 +- .../manual/LuaBasicConversions.cpp | 11 +- .../lua-bindings/manual/LuaBasicConversions.h | 13 +- .../manual/network/lua_downloader.cpp | 35 +- .../Classes/AppDelegate.cpp | 62 +- .../Classes/AppDelegate.h | 15 +- .../Classes/HelloWorldScene.cpp | 4 +- .../Classes/HelloWorldScene.h | 8 +- .../proj.android/app/jni/hellocpp/main.cpp | 18 +- .../proj.ios_mac/ios/AppController.h | 10 +- .../proj.ios_mac/ios/AppController.mm | 87 +- .../proj.ios_mac/ios/RootViewController.h | 4 +- .../proj.ios_mac/ios/RootViewController.mm | 60 +- .../proj.ios_mac/mac/main.cpp | 10 +- .../cpp-template-default/proj.linux/main.cpp | 10 +- .../cpp-template-default/proj.win32/main.cpp | 13 +- .../cpp-template-default/proj.win32/main.h | 12 +- .../proj.win32/resource.h | 28 +- .../runtime-src/Classes/AppDelegate.cpp | 34 +- .../runtime-src/Classes/AppDelegate.h | 8 +- .../proj.android/app/jni/hellolua/main.cpp | 18 +- .../proj.ios_mac/ios/AppController.h | 10 +- .../proj.ios_mac/ios/AppController.mm | 85 +- .../proj.ios_mac/ios/RootViewController.h | 4 +- .../proj.ios_mac/ios/RootViewController.mm | 60 +- .../runtime-src/proj.ios_mac/mac/main.cpp | 3 +- .../runtime-src/proj.linux/main.cpp | 10 +- .../runtime-src/proj.win32/main.cpp | 13 +- .../frameworks/runtime-src/proj.win32/main.h | 11 +- .../ActionManagerTest/ActionManagerTest.cpp | 147 +- .../ActionManagerTest/ActionManagerTest.h | 21 +- .../ActionsEaseTest/ActionsEaseTest.cpp | 665 ++-- .../Classes/ActionsEaseTest/ActionsEaseTest.h | 12 +- .../ActionsProgressTest.cpp | 112 +- .../ActionsProgressTest/ActionsProgressTest.h | 2 +- .../Classes/ActionsTest/ActionsTest.cpp | 1251 ++++--- .../Classes/ActionsTest/ActionsTest.h | 46 +- tests/cpp-tests/Classes/AppDelegate.cpp | 41 +- tests/cpp-tests/Classes/AppDelegate.h | 9 +- tests/cpp-tests/Classes/BaseTest.cpp | 142 +- tests/cpp-tests/Classes/BaseTest.h | 69 +- .../Classes/BillBoardTest/BillBoardTest.cpp | 179 +- .../Classes/BillBoardTest/BillBoardTest.h | 29 +- .../cpp-tests/Classes/Box2DTest/Box2dTest.cpp | 91 +- tests/cpp-tests/Classes/Box2DTest/Box2dTest.h | 11 +- .../Classes/Box2DTestBed/Box2DTestBed.cpp | 305 +- .../Classes/Box2DTestBed/Box2DTestBed.h | 73 +- tests/cpp-tests/Classes/Box2DTestBed/test.cpp | 801 ++--- .../Classes/Box2DTestBed/tests/add_pair.cpp | 72 +- .../Box2DTestBed/tests/apply_force.cpp | 336 +- .../Classes/Box2DTestBed/tests/body_types.cpp | 261 +- .../Classes/Box2DTestBed/tests/box_stack.cpp | 272 +- .../Classes/Box2DTestBed/tests/breakable.cpp | 250 +- .../Classes/Box2DTestBed/tests/bridge.cpp | 192 +- .../Box2DTestBed/tests/bullet_test.cpp | 211 +- .../Classes/Box2DTestBed/tests/cantilever.cpp | 364 +- .../Classes/Box2DTestBed/tests/car.cpp | 506 ++- .../Classes/Box2DTestBed/tests/chain.cpp | 103 +- .../Box2DTestBed/tests/chain_problem.cpp | 15 +- .../tests/character_collision.cpp | 442 ++- .../Box2DTestBed/tests/circle_stack.cpp | 88 +- .../tests/collision_filtering.cpp | 271 +- .../tests/collision_processing.cpp | 312 +- .../Box2DTestBed/tests/compound_shapes.cpp | 389 ++- .../Classes/Box2DTestBed/tests/confined.cpp | 275 +- .../Box2DTestBed/tests/continuous_test.cpp | 246 +- .../Box2DTestBed/tests/convex_hull.cpp | 160 +- .../Box2DTestBed/tests/conveyor_belt.cpp | 135 +- .../Box2DTestBed/tests/distance_joint.cpp | 179 +- .../Box2DTestBed/tests/distance_test.cpp | 211 +- .../Classes/Box2DTestBed/tests/dominos.cpp | 376 ++- .../Box2DTestBed/tests/dump_loader.cpp | 81 +- .../Box2DTestBed/tests/dynamic_tree.cpp | 653 ++-- .../Box2DTestBed/tests/edge_shapes.cpp | 425 ++- .../Classes/Box2DTestBed/tests/edge_test.cpp | 483 ++- .../Classes/Box2DTestBed/tests/friction.cpp | 190 +- .../Classes/Box2DTestBed/tests/gear_joint.cpp | 295 +- .../Classes/Box2DTestBed/tests/heavy1.cpp | 48 +- .../Classes/Box2DTestBed/tests/heavy2.cpp | 70 +- .../Box2DTestBed/tests/mobile_balanced.cpp | 152 +- .../Box2DTestBed/tests/mobile_unbalanced.cpp | 146 +- .../Box2DTestBed/tests/motor_joint.cpp | 165 +- .../Classes/Box2DTestBed/tests/pinball.cpp | 271 +- .../Classes/Box2DTestBed/tests/platformer.cpp | 175 +- .../Box2DTestBed/tests/polygon_collision.cpp | 190 +- .../Box2DTestBed/tests/polygon_shapes.cpp | 440 ++- .../Box2DTestBed/tests/prismatic_joint.cpp | 166 +- .../Box2DTestBed/tests/pulley_joint.cpp | 128 +- .../Classes/Box2DTestBed/tests/pyramid.cpp | 121 +- .../Classes/Box2DTestBed/tests/ray_cast.cpp | 742 ++--- .../Box2DTestBed/tests/restitution.cpp | 88 +- .../Box2DTestBed/tests/revolute_joint.cpp | 255 +- .../Classes/Box2DTestBed/tests/rope.cpp | 490 ++- .../Classes/Box2DTestBed/tests/sensor.cpp | 302 +- .../Classes/Box2DTestBed/tests/settings.h | 103 +- .../Classes/Box2DTestBed/tests/shape_cast.cpp | 310 +- .../Box2DTestBed/tests/shape_editing.cpp | 151 +- .../Classes/Box2DTestBed/tests/skier.cpp | 266 +- .../Box2DTestBed/tests/slider_crank_1.cpp | 145 +- .../Box2DTestBed/tests/slider_crank_2.cpp | 250 +- .../Classes/Box2DTestBed/tests/test.h | 202 +- .../Box2DTestBed/tests/theo_jansen.cpp | 461 ++- .../Classes/Box2DTestBed/tests/tiles.cpp | 240 +- .../Box2DTestBed/tests/time_of_impact.cpp | 169 +- .../Classes/Box2DTestBed/tests/tumbler.cpp | 140 +- .../Classes/Box2DTestBed/tests/web.cpp | 371 ++- .../Box2DTestBed/tests/wheel_joint.cpp | 181 +- .../Box2DTestBed/tests/wrecking_ball.cpp | 248 +- tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp | 23 +- tests/cpp-tests/Classes/BugsTest/Bug-1159.h | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-1174.cpp | 118 +- tests/cpp-tests/Classes/BugsTest/Bug-1174.h | 12 +- .../cpp-tests/Classes/BugsTest/Bug-12847.cpp | 29 +- tests/cpp-tests/Classes/BugsTest/Bug-12847.h | 17 +- .../cpp-tests/Classes/BugsTest/Bug-14327.cpp | 19 +- tests/cpp-tests/Classes/BugsTest/Bug-14327.h | 19 +- .../cpp-tests/Classes/BugsTest/Bug-15594.cpp | 23 +- tests/cpp-tests/Classes/BugsTest/Bug-15594.h | 10 +- .../cpp-tests/Classes/BugsTest/Bug-15776.cpp | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-15776.h | 9 +- tests/cpp-tests/Classes/BugsTest/Bug-350.cpp | 14 +- tests/cpp-tests/Classes/BugsTest/Bug-350.h | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-422.cpp | 25 +- tests/cpp-tests/Classes/BugsTest/Bug-422.h | 12 +- .../Classes/BugsTest/Bug-458/Bug-458.cpp | 28 +- .../Classes/BugsTest/Bug-458/Bug-458.h | 10 +- .../Bug-458/QuestionContainerSprite.cpp | 43 +- .../Bug-458/QuestionContainerSprite.h | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-624.cpp | 39 +- tests/cpp-tests/Classes/BugsTest/Bug-624.h | 14 +- tests/cpp-tests/Classes/BugsTest/Bug-886.cpp | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-886.h | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-899.cpp | 10 +- tests/cpp-tests/Classes/BugsTest/Bug-899.h | 12 +- tests/cpp-tests/Classes/BugsTest/Bug-914.cpp | 34 +- tests/cpp-tests/Classes/BugsTest/Bug-914.h | 12 +- .../Classes/BugsTest/Bug-CCDrawNode.cpp | 10 +- .../Classes/BugsTest/Bug-CCDrawNode.h | 10 +- .../cpp-tests/Classes/BugsTest/Bug-Child.cpp | 75 +- tests/cpp-tests/Classes/BugsTest/Bug-Child.h | 25 +- tests/cpp-tests/Classes/BugsTest/BugsTest.cpp | 14 +- tests/cpp-tests/Classes/BugsTest/BugsTest.h | 10 +- .../Classes/Camera3DTest/Camera3DTest.cpp | 1142 ++++--- .../Classes/Camera3DTest/Camera3DTest.h | 201 +- .../Classes/ChipmunkTest/ChipmunkTest.cpp | 119 +- .../Classes/ChipmunkTest/ChipmunkTest.h | 12 +- .../ChipmunkTestBed/ChipmunkTestBed.cpp | 1366 ++++---- .../Classes/ChipmunkTestBed/ChipmunkTestBed.h | 382 ++- .../Classes/ChipmunkTestBed/demo/Bench.c | 922 +++--- .../Classes/ChipmunkTestBed/demo/Buoyancy.c | 349 +- .../Classes/ChipmunkTestBed/demo/Chains.c | 219 +- .../ChipmunkTestBed/demo/ChipmunkDemo.h | 79 +- .../ChipmunkTestBed/demo/ContactGraph.c | 315 +- .../Classes/ChipmunkTestBed/demo/Convex.c | 156 +- .../Classes/ChipmunkTestBed/demo/Crane.c | 242 +- .../Classes/ChipmunkTestBed/demo/Example.c | 28 +- .../Classes/ChipmunkTestBed/demo/Joints.c | 490 ++- .../Classes/ChipmunkTestBed/demo/LogoSmash.c | 232 +- .../Classes/ChipmunkTestBed/demo/OneWay.c | 163 +- .../Classes/ChipmunkTestBed/demo/Planet.c | 167 +- .../Classes/ChipmunkTestBed/demo/Player.c | 237 +- .../Classes/ChipmunkTestBed/demo/Plink.c | 185 +- .../Classes/ChipmunkTestBed/demo/Pump.c | 301 +- .../ChipmunkTestBed/demo/PyramidStack.c | 22 +- .../ChipmunkTestBed/demo/PyramidTopple.c | 129 +- .../Classes/ChipmunkTestBed/demo/Query.c | 222 +- .../Classes/ChipmunkTestBed/demo/Shatter.c | 114 +- .../Classes/ChipmunkTestBed/demo/Slice.c | 286 +- .../Classes/ChipmunkTestBed/demo/Springies.c | 230 +- .../Classes/ChipmunkTestBed/demo/Sticky.c | 293 +- .../Classes/ChipmunkTestBed/demo/Tank.c | 196 +- .../Classes/ChipmunkTestBed/demo/TheoJansen.c | 239 +- .../Classes/ChipmunkTestBed/demo/Tumble.c | 203 +- .../Classes/ChipmunkTestBed/demo/Unicycle.c | 264 +- .../ClickAndMoveTest/ClickAndMoveTest.cpp | 57 +- .../ClickAndMoveTest/ClickAndMoveTest.h | 8 +- .../ClippingNodeTest/ClippingNodeTest.cpp | 397 ++- .../ClippingNodeTest/ClippingNodeTest.h | 54 +- .../ConfigurationTest/ConfigurationTest.cpp | 61 +- .../ConfigurationTest/ConfigurationTest.h | 12 +- .../Classes/ConsoleTest/ConsoleTest.cpp | 94 +- .../Classes/ConsoleTest/ConsoleTest.h | 6 +- tests/cpp-tests/Classes/CurlTest/CurlTest.cpp | 82 +- tests/cpp-tests/Classes/CurlTest/CurlTest.h | 12 +- .../CurrentLanguageTest.cpp | 19 +- .../CurrentLanguageTest/CurrentLanguageTest.h | 10 +- .../DataVisitorTest/DataVisitorTest.cpp | 70 +- .../Classes/DataVisitorTest/DataVisitorTest.h | 14 +- .../DrawPrimitivesTest/DrawPrimitivesTest.cpp | 213 +- .../DrawPrimitivesTest/DrawPrimitivesTest.h | 11 +- .../EffectsAdvancedTest.cpp | 203 +- .../EffectsAdvancedTest/EffectsAdvancedTest.h | 12 +- .../Classes/EffectsTest/EffectsTest.cpp | 196 +- .../Classes/EffectsTest/EffectsTest.h | 42 +- .../AssetsManagerExTest.cpp | 186 +- .../AssetsManagerExTest/AssetsManagerExTest.h | 12 +- .../Classes/ExtensionsTest/ExtensionsTest.cpp | 12 +- .../Classes/ExtensionsTest/ExtensionsTest.h | 8 +- .../TableViewTest/CustomTableViewCell.cpp | 34 +- .../TableViewTest/CustomTableViewCell.h | 11 +- .../TableViewTest/TableViewTestScene.cpp | 48 +- .../TableViewTest/TableViewTestScene.h | 32 +- .../Classes/FileUtilsTest/FileUtilsTest.cpp | 384 +-- .../Classes/FileUtilsTest/FileUtilsTest.h | 24 +- tests/cpp-tests/Classes/FontTest/FontTest.cpp | 308 +- tests/cpp-tests/Classes/FontTest/FontTest.h | 30 +- .../Classes/ImGuiEXTTest/ImGuiEXTTest.cpp | 17 +- .../Classes/ImGuiEXTTest/ImGuiEXTTest.h | 2 +- .../cpp-tests/Classes/InputTest/MouseTest.cpp | 70 +- tests/cpp-tests/Classes/InputTest/MouseTest.h | 19 +- .../Classes/IntervalTest/IntervalTest.cpp | 130 +- .../Classes/IntervalTest/IntervalTest.h | 22 +- tests/cpp-tests/Classes/JNITest/JNITest.cpp | 28 +- tests/cpp-tests/Classes/JNITest/JNITest.h | 14 +- .../Classes/LabelTest/LabelTestNew.cpp | 1286 ++++---- .../Classes/LabelTest/LabelTestNew.h | 98 +- .../cpp-tests/Classes/LayerTest/LayerTest.cpp | 680 ++-- tests/cpp-tests/Classes/LayerTest/LayerTest.h | 33 +- .../cpp-tests/Classes/LightTest/LightTest.cpp | 135 +- tests/cpp-tests/Classes/LightTest/LightTest.h | 11 +- .../MaterialSystemTest/MaterialSystemTest.cpp | 161 +- .../MaterialSystemTest/MaterialSystemTest.h | 23 +- tests/cpp-tests/Classes/MenuTest/MenuTest.cpp | 437 ++- tests/cpp-tests/Classes/MenuTest/MenuTest.h | 20 +- .../MotionStreakTest/MotionStreakTest.cpp | 118 +- .../MotionStreakTest/MotionStreakTest.h | 20 +- .../Classes/MultiTouchTest/MultiTouchTest.cpp | 65 +- .../Classes/MultiTouchTest/MultiTouchTest.h | 16 +- .../Classes/NavMeshTest/NavMeshTest.cpp | 145 +- .../Classes/NavMeshTest/NavMeshTest.h | 63 +- .../DownloaderTest/DownloaderTest.cpp | 155 +- .../HttpClientTest/HttpClientTest.cpp | 187 +- .../HttpClientTest/HttpClientTest.h | 50 +- .../Classes/NetworkTest/NetworkTest.cpp | 11 +- .../Classes/NetworkTest/NetworkTest.h | 8 +- .../NewAudioEngineTest/NewAudioEngineTest.cpp | 806 ++--- .../NewAudioEngineTest/NewAudioEngineTest.h | 85 +- .../NewEventDispatcherTest.cpp | 908 +++-- .../NewEventDispatcherTest.h | 45 +- .../NewRendererTest/NewRendererTest.cpp | 450 ++- .../Classes/NewRendererTest/NewRendererTest.h | 88 +- tests/cpp-tests/Classes/NodeTest/NodeTest.cpp | 622 ++-- tests/cpp-tests/Classes/NodeTest/NodeTest.h | 11 +- .../Classes/OpenURLTest/OpenURLTest.cpp | 12 +- .../Classes/OpenURLTest/OpenURLTest.h | 13 +- .../Classes/ParallaxTest/ParallaxTest.cpp | 169 +- .../Classes/ParallaxTest/ParallaxTest.h | 28 +- .../Classes/Particle3DTest/Particle3DTest.cpp | 180 +- .../Classes/Particle3DTest/Particle3DTest.h | 40 +- .../Classes/ParticleTest/ParticleTest.cpp | 456 ++- .../Classes/ParticleTest/ParticleTest.h | 22 +- .../Classes/Physics3DTest/Physics3DTest.cpp | 313 +- .../Classes/Physics3DTest/Physics3DTest.h | 60 +- .../Classes/PhysicsTest/PhysicsTest.cpp | 1502 ++++----- .../Classes/PhysicsTest/PhysicsTest.h | 103 +- .../ReleasePoolTest/ReleasePoolTest.cpp | 47 +- .../Classes/ReleasePoolTest/ReleasePoolTest.h | 12 +- .../RenderTextureTest/RenderTextureTest.cpp | 506 +-- .../RenderTextureTest/RenderTextureTest.h | 61 +- .../RotateWorldTest/RotateWorldTest.cpp | 104 +- .../Classes/RotateWorldTest/RotateWorldTest.h | 8 +- .../Classes/Scene3DTest/Scene3DTest.cpp | 495 ++- .../Classes/Scene3DTest/Scene3DTest.h | 8 +- .../cpp-tests/Classes/SceneTest/SceneTest.cpp | 97 +- tests/cpp-tests/Classes/SceneTest/SceneTest.h | 17 +- .../Classes/SchedulerTest/SchedulerTest.cpp | 436 ++- .../Classes/SchedulerTest/SchedulerTest.h | 79 +- .../Classes/ShaderTest/ShaderTest.cpp | 346 +- .../cpp-tests/Classes/ShaderTest/ShaderTest.h | 60 +- .../Classes/ShaderTest/ShaderTest.vsh.h | 19 +- .../Classes/ShaderTest/ShaderTest2.cpp | 281 +- .../Classes/ShaderTest/ShaderTest2.h | 26 +- .../Classes/ShaderTest/shaderTest.psh.h | 857 +++-- .../cpp-tests/Classes/SpineTest/SpineTest.cpp | 197 +- tests/cpp-tests/Classes/SpineTest/SpineTest.h | 54 +- .../Classes/Sprite3DTest/DrawNode3D.cpp | 92 +- .../Classes/Sprite3DTest/DrawNode3D.h | 94 +- .../Classes/Sprite3DTest/Sprite3DTest.cpp | 648 ++-- .../Classes/Sprite3DTest/Sprite3DTest.h | 237 +- .../SpriteFrameCacheTest.cpp | 140 +- .../SpriteFrameCacheTest.h | 30 +- .../SpritePolygonTest/SpritePolygonTest.cpp | 503 +-- .../SpritePolygonTest/SpritePolygonTest.h | 43 +- .../Classes/SpriteTest/SpriteTest.cpp | 2931 ++++++++--------- .../cpp-tests/Classes/SpriteTest/SpriteTest.h | 66 +- .../Classes/TerrainTest/TerrainTest.cpp | 262 +- .../Classes/TerrainTest/TerrainTest.h | 46 +- .../Classes/TextInputTest/TextInputTest.cpp | 156 +- .../Classes/TextInputTest/TextInputTest.h | 38 +- .../Classes/Texture2dTest/Texture2dTest.cpp | 825 +++-- .../Classes/Texture2dTest/Texture2dTest.h | 39 +- .../TextureCacheTest/TextureCacheTest.cpp | 140 +- .../TextureCacheTest/TextureCacheTest.h | 18 +- .../TextureAtlasEncryptionTest.cpp | 34 +- .../TextureAtlasEncryptionTest.h | 10 +- .../Classes/TileMapTest/TileMapTest2.cpp | 597 ++-- .../Classes/TileMapTest/TileMapTest2.h | 27 +- tests/cpp-tests/Classes/TouchesTest/Ball.cpp | 63 +- tests/cpp-tests/Classes/TouchesTest/Ball.h | 18 +- .../cpp-tests/Classes/TouchesTest/Paddle.cpp | 66 +- tests/cpp-tests/Classes/TouchesTest/Paddle.h | 15 +- .../Classes/TouchesTest/TouchesTest.cpp | 115 +- .../Classes/TouchesTest/TouchesTest.h | 24 +- .../TransitionsTest/TransitionsTest.cpp | 127 +- .../Classes/TransitionsTest/TransitionsTest.h | 1 - .../CocoStudioGUITest/CocosGUIScene.cpp | 79 +- .../UITest/CocoStudioGUITest/CocosGUIScene.h | 8 +- .../UIButtonTest/UIButtonTest.cpp | 727 ++-- .../UIButtonTest/UIButtonTest.h | 23 +- .../UICheckBoxTest/UICheckBoxTest.cpp | 152 +- .../UICheckBoxTest/UICheckBoxTest.h | 15 +- .../CocoStudioGUITest/UIEditBoxTest.cpp | 255 +- .../UITest/CocoStudioGUITest/UIEditBoxTest.h | 35 +- .../UIFocusTest/UIFocusTest.cpp | 352 +- .../UIFocusTest/UIFocusTest.h | 24 +- .../UIImageViewTest/UIImageViewTest.cpp | 186 +- .../UIImageViewTest/UIImageViewTest.h | 11 +- .../UILayoutTest/UILayoutTest.cpp | 616 ++-- .../UILayoutTest/UILayoutTest.h | 31 +- .../UIListViewTest/UIListViewTest.cpp | 596 ++-- .../UIListViewTest/UIListViewTest.h | 52 +- .../UILoadingBarTest/UILoadingBarTest.cpp | 318 +- .../UILoadingBarTest/UILoadingBarTest.h | 34 +- .../UIPageViewTest/UIPageViewTest.cpp | 729 ++-- .../UIPageViewTest/UIPageViewTest.h | 40 +- .../UIRadioButtonTest/UIRadioButtonTest.cpp | 190 +- .../UIRadioButtonTest/UIRadioButtonTest.h | 29 +- .../UIRichTextTest/UIRichTextTest.cpp | 619 ++-- .../UIRichTextTest/UIRichTextTest.h | 22 +- .../CocoStudioGUITest/UIScale9SpriteTest.cpp | 936 +++--- .../CocoStudioGUITest/UIScale9SpriteTest.h | 70 +- .../UITest/CocoStudioGUITest/UIScene.cpp | 40 +- .../UITest/CocoStudioGUITest/UIScene.h | 10 +- .../CocoStudioGUITest/UISceneManager.cpp | 9 +- .../UITest/CocoStudioGUITest/UISceneManager.h | 8 +- .../UIScrollViewTest/UIScrollViewTest.cpp | 587 ++-- .../UIScrollViewTest/UIScrollViewTest.h | 45 +- .../UISliderTest/UISliderTest.cpp | 240 +- .../UISliderTest/UISliderTest.h | 21 +- .../UITabControlTest/UITabControlTest.cpp | 40 +- .../UITabControlTest/UITabControlTest.h | 5 +- .../UITextAtlasTest/UITextAtlasTest.cpp | 41 +- .../UITextAtlasTest/UITextAtlasTest.h | 14 +- .../UITextBMFontTest/UITextBMFontTest.cpp | 27 +- .../UITextBMFontTest/UITextBMFontTest.h | 9 +- .../UITextFieldTest/UITextFieldTest.cpp | 673 ++-- .../UITextFieldTest/UITextFieldTest.h | 31 +- .../UITextTest/UITextTest.cpp | 160 +- .../CocoStudioGUITest/UITextTest/UITextTest.h | 10 +- .../UIVideoPlayerTest/UIVideoPlayerTest.cpp | 237 +- .../UIVideoPlayerTest/UIVideoPlayerTest.h | 35 +- .../UIWebViewTest/UIWebViewTest.cpp | 193 +- .../UIWebViewTest/UIWebViewTest.h | 22 +- .../UIWidgetAddNodeTest.cpp | 28 +- .../UIWidgetAddNodeTest/UIWidgetAddNodeTest.h | 8 +- tests/cpp-tests/Classes/UITest/UITest.cpp | 15 +- tests/cpp-tests/Classes/UITest/UITest.h | 10 +- tests/cpp-tests/Classes/UnitTest/RefPtrTest.h | 13 +- tests/cpp-tests/Classes/UnitTest/UnitTest.cpp | 508 ++- tests/cpp-tests/Classes/UnitTest/UnitTest.h | 9 +- .../UserDefaultTest/UserDefaultTest.cpp | 123 +- .../Classes/UserDefaultTest/UserDefaultTest.h | 10 +- tests/cpp-tests/Classes/VRTest/VRTest.cpp | 10 +- tests/cpp-tests/Classes/VRTest/VRTest.h | 3 +- .../Classes/VibrateTest/VibrateTest.cpp | 408 +-- .../Classes/VibrateTest/VibrateTest.h | 20 +- tests/cpp-tests/Classes/VisibleRect.cpp | 19 +- tests/cpp-tests/Classes/VisibleRect.h | 9 +- .../Classes/WindowTest/WindowTest.cpp | 44 +- .../cpp-tests/Classes/WindowTest/WindowTest.h | 13 +- tests/cpp-tests/Classes/ZipTest/ZipTests.cpp | 84 +- tests/cpp-tests/Classes/ZipTest/ZipTests.h | 1 - .../Classes/ZwoptexTest/ZwoptexTest.cpp | 66 +- .../Classes/ZwoptexTest/ZwoptexTest.h | 14 +- tests/cpp-tests/Classes/controller.cpp | 214 +- tests/cpp-tests/Classes/controller.h | 13 +- tests/cpp-tests/Classes/testBasic.h | 27 +- tests/cpp-tests/Classes/testResource.h | 86 +- tests/cpp-tests/Classes/tests.h | 33 +- tests/cpp-tests/proj.android/app/jni/main.cpp | 18 +- .../proj.ios/Classes/RootViewController.h | 2 - .../proj.ios/Classes/RootViewController.mm | 35 +- .../proj.ios/Classes/testsAppDelegate.h | 5 +- .../proj.ios/Classes/testsAppDelegate.mm | 83 +- tests/cpp-tests/proj.linux/main.cpp | 10 +- tests/cpp-tests/proj.mac/main.cpp | 10 +- tests/cpp-tests/proj.win32/main.cpp | 13 +- tests/cpp-tests/proj.win32/main.h | 12 +- .../lua-tests/project/Classes/AppDelegate.cpp | 24 +- tests/lua-tests/project/Classes/AppDelegate.h | 11 +- .../Classes/lua_assetsmanager_test_sample.cpp | 56 +- .../Classes/lua_assetsmanager_test_sample.h | 13 +- .../project/Classes/lua_test_bindings.cpp | 427 +-- .../project/Classes/lua_test_bindings.h | 10 +- .../project/proj.android/app/jni/main.cpp | 18 +- .../project/proj.ios_mac/ios/AppController.h | 13 +- .../project/proj.ios_mac/ios/AppController.mm | 83 +- .../proj.ios_mac/ios/LuaObjectCBridgeTest.h | 24 +- .../proj.ios_mac/ios/LuaObjectCBridgeTest.mm | 37 +- .../proj.ios_mac/ios/RootViewController.h | 10 +- .../proj.ios_mac/ios/RootViewController.mm | 43 +- .../proj.ios_mac/mac/LuaObjectCBridgeTest.h | 24 +- .../proj.ios_mac/mac/LuaObjectCBridgeTest.mm | 37 +- .../project/proj.ios_mac/mac/main.cpp | 10 +- tests/lua-tests/project/proj.linux/main.cpp | 10 +- tests/lua-tests/project/proj.win32/main.cpp | 13 +- tests/lua-tests/project/proj.win32/main.h | 12 +- tests/lua-tests/project/proj.win32/resource.h | 28 +- 411 files changed, 31919 insertions(+), 33199 deletions(-) diff --git a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp index cb86e668bb04..2c787ebd3e71 100644 --- a/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp +++ b/extensions/Particle3D/PU/CCPUMeshSurfaceEmitter.cpp @@ -318,8 +318,8 @@ const PUTriangle::PositionAndNormal MeshInfo::getRandomPositionAndNormal(const s // } // // const Ogre::VertexElement* posElem = -// vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_POSITION); const Ogre::VertexElement* -// normalElem = vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_NORMAL); +// vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_POSITION); const +// Ogre::VertexElement* normalElem = vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_NORMAL); // Ogre::HardwareVertexBufferSharedPtr vbuf = vertex_data->vertexBufferBinding->getBuffer(posElem->getSource()); // unsigned char* vertex = static_cast(vbuf->lock(Ogre::HardwareBuffer::HBL_READ_ONLY)); // float* pReal; diff --git a/extensions/cocostudio/CCActionNode.cpp b/extensions/cocostudio/CCActionNode.cpp index 7b9a5fd6a4d7..71d7ea643461 100644 --- a/extensions/cocostudio/CCActionNode.cpp +++ b/extensions/cocostudio/CCActionNode.cpp @@ -494,7 +494,8 @@ Spawn* ActionNode::refreshActionProperty() // #11173 Fixed every node of UI animation(json) is starting at frame 0. // if (frame->getFrameIndex() > 0) // { - // DelayTime* cDelayTime = DelayTime::create(frame->getFrameIndex() + // DelayTime* cDelayTime = + //DelayTime::create(frame->getFrameIndex() //* getUnitTime()); if (cDelayTime != nullptr) // cSequenceArray.pushBack(static_cast(cDelayTime)); // } diff --git a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp index 28e9761b0249..31560146efa4 100644 --- a/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp +++ b/extensions/scripting/lua-bindings/manual/CCComponentLua.cpp @@ -142,14 +142,14 @@ bool ComponentLua::getLuaFunction(std::string_view functionName) { lua_State* l = LuaEngine::getInstance()->getLuaStack()->getLuaState(); - lua_pushstring(l, KEY_COMPONENT); // stack: "component" - lua_rawget(l, LUA_REGISTRYINDEX); // stack: table_of_component - lua_pushstring(l, _strIndex.c_str()); // stack: table_of_component strIndex - lua_rawget(l, -2); // stack: table_of_component table_of_this + lua_pushstring(l, KEY_COMPONENT); // stack: "component" + lua_rawget(l, LUA_REGISTRYINDEX); // stack: table_of_component + lua_pushstring(l, _strIndex.c_str()); // stack: table_of_component strIndex + lua_rawget(l, -2); // stack: table_of_component table_of_this lua_pushlstring(l, functionName.data(), functionName.length()); // stack: table_of_component table_of_this "update" - lua_rawget(l, -2); // stack: table_of_component table_of_this table_of_this["update"] - lua_remove(l, -2); // stack: table_of_component table_of_this["update"] - lua_remove(l, -2); // stack: table_of_this["update"] + lua_rawget(l, -2); // stack: table_of_component table_of_this table_of_this["update"] + lua_remove(l, -2); // stack: table_of_component table_of_this["update"] + lua_remove(l, -2); // stack: table_of_this["update"] int type = lua_type(l, -1); // if (type != LUA_TFUNCTION) diff --git a/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp b/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp index b7696dd712a5..aef8cb70768b 100644 --- a/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp +++ b/extensions/scripting/lua-bindings/manual/CCLuaStack.cpp @@ -353,8 +353,8 @@ void LuaStack::pushLuaValueDict(const LuaValueDict& dict) for (LuaValueDictIterator it = dict.begin(); it != dict.end(); ++it) { lua_pushlstring(_state, it->first.c_str(), it->first.length()); /* L: table key */ - pushLuaValue(it->second); /* L: table key value */ - lua_rawset(_state, -3); /* table.key = value, L: table */ + pushLuaValue(it->second); /* L: table key value */ + lua_rawset(_state, -3); /* table.key = value, L: table */ } } diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp index b78a6243eb3b..a17f5ee6a7b3 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.cpp @@ -1564,10 +1564,7 @@ bool luaval_to_std_vector_string(lua_State* L, int lo, std::vector* return ok; } -bool luaval_to_std_vector_string_view(lua_State* L, - int lo, - std::vector* ret, - const char* funcName) +bool luaval_to_std_vector_string_view(lua_State* L, int lo, std::vector* ret, const char* funcName) { if (nullptr == L || nullptr == ret || lua_gettop(L) < lo) return false; @@ -1584,7 +1581,7 @@ bool luaval_to_std_vector_string_view(lua_State* L, if (ok) { - size_t len = lua_objlen(L, lo); + size_t len = lua_objlen(L, lo); std::string_view value = ""; for (size_t i = 0; i < len; i++) { @@ -2902,9 +2899,7 @@ void std_map_string_string_to_luaval(lua_State* L, const std::map* ret, - const char* funcName) +bool luaval_to_std_map_string_string(lua_State* L, int lo, hlookup::string_map* ret, const char* funcName) { if (nullptr == L || nullptr == ret || lua_gettop(L) < lo) return false; diff --git a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h index 151fc4315391..d6665b5a7028 100644 --- a/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h +++ b/extensions/scripting/lua-bindings/manual/LuaBasicConversions.h @@ -595,9 +595,9 @@ CC_LUA_DLL bool luaval_to_std_vector_string(lua_State* L, const char* funcName = ""); CC_LUA_DLL bool luaval_to_std_vector_string_view(lua_State* L, - int lo, - std::vector* ret, - const char* funcName = ""); + int lo, + std::vector* ret, + const char* funcName = ""); /** * Get a pointer points to a std::vector from a Lua array table in the stack. @@ -1155,7 +1155,7 @@ void ccmap_string_key_to_luaval(lua_State* L, const cocos2d::StringMap& v) for (auto iter = v.begin(); iter != v.end(); ++iter) { auto& key = iter->first; - T obj = iter->second; + T obj = iter->second; if (nullptr != dynamic_cast(obj)) { auto name = reinterpret_cast(typeid(*obj).name()); @@ -1365,9 +1365,8 @@ CC_LUA_DLL bool luaval_to_uniformLocation(lua_State* L, */ CC_LUA_DLL void uniformLocation_to_luaval(lua_State* L, const cocos2d::backend::UniformLocation& desc); -CC_LUA_DLL void program_activeattrs_to_luaval( - lua_State* L, - const hlookup::string_map& map); +CC_LUA_DLL void program_activeattrs_to_luaval(lua_State* L, + const hlookup::string_map& map); // end group /// @} diff --git a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp index 33722c52291a..ba66c3442b40 100644 --- a/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp +++ b/extensions/scripting/lua-bindings/manual/network/lua_downloader.cpp @@ -270,27 +270,26 @@ static int lua_downloader_setOnTaskError(lua_State* L) luaL_argcheck(L, lua_isfunction(L, 2), 2, "should be a function"); saveCallback(L, d, "setOnTaskError"); - d->setOnTaskError( - [d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorSt) { - int ret = getCallback(L, d, "setOnTaskError"); // stack callbackfn - if (ret) - { - pushTaskTable(L, task); // stack callbackfn, task - lua_pushnumber(L, errorCode); - lua_pushnumber(L, errorCodeInternal); - lua_pushlstring(L, errorSt.data(), errorSt.length()); - if (lua_pcall(L, 4, 0, 0) != 0) - { - lua_pop(L, 1); // remove callback or nil - luaL_error(L, "cc.Downloader.setOnTaskError invoke callback error!"); - return; - } - } - else + d->setOnTaskError([d, L](const DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorSt) { + int ret = getCallback(L, d, "setOnTaskError"); // stack callbackfn + if (ret) + { + pushTaskTable(L, task); // stack callbackfn, task + lua_pushnumber(L, errorCode); + lua_pushnumber(L, errorCodeInternal); + lua_pushlstring(L, errorSt.data(), errorSt.length()); + if (lua_pcall(L, 4, 0, 0) != 0) { lua_pop(L, 1); // remove callback or nil + luaL_error(L, "cc.Downloader.setOnTaskError invoke callback error!"); + return; } - }); + } + else + { + lua_pop(L, 1); // remove callback or nil + } + }); return 0; } diff --git a/templates/cpp-template-default/Classes/AppDelegate.cpp b/templates/cpp-template-default/Classes/AppDelegate.cpp index 9e7d6a6d6823..0119494ae12e 100644 --- a/templates/cpp-template-default/Classes/AppDelegate.cpp +++ b/templates/cpp-template-default/Classes/AppDelegate.cpp @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,23 +29,19 @@ #define USE_AUDIO_ENGINE 1 #if USE_AUDIO_ENGINE -#include "audio/include/AudioEngine.h" +# include "audio/include/AudioEngine.h" #endif USING_NS_CC; static cocos2d::Size designResolutionSize = cocos2d::Size(1280, 720); -static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320); +static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320); static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768); -static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536); +static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536); -AppDelegate::AppDelegate() -{ -} +AppDelegate::AppDelegate() {} -AppDelegate::~AppDelegate() -{ -} +AppDelegate::~AppDelegate() {} // if you want a different context, modify the value of glContextAttrs // it will affect all platforms @@ -57,20 +53,24 @@ void AppDelegate::initGLContextAttrs() GLView::setGLContextAttrs(glContextAttrs); } -// if you want to use the package manager to install more packages, +// if you want to use the package manager to install more packages, // don't modify or remove this function static int register_all_packages() { - return 0; //flag for packages manager + return 0; // flag for packages manager } -bool AppDelegate::applicationDidFinishLaunching() { +bool AppDelegate::applicationDidFinishLaunching() +{ // initialize director auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - if(!glview) { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) - glview = GLViewImpl::createWithRect("HelloCpp", cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height)); + auto glview = director->getOpenGLView(); + if (!glview) + { +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || \ + (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) + glview = GLViewImpl::createWithRect( + "HelloCpp", cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height)); #else glview = GLViewImpl::create("HelloCpp"); #endif @@ -84,22 +84,26 @@ bool AppDelegate::applicationDidFinishLaunching() { director->setAnimationInterval(1.0f / 60); // Set the design resolution - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); + glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, + ResolutionPolicy::NO_BORDER); auto frameSize = glview->getFrameSize(); // if the frame's height is larger than the height of medium size. if (frameSize.height > mediumResolutionSize.height) - { - director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width)); + { + director->setContentScaleFactor(MIN(largeResolutionSize.height / designResolutionSize.height, + largeResolutionSize.width / designResolutionSize.width)); } // if the frame's height is larger than the height of small size. else if (frameSize.height > smallResolutionSize.height) - { - director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width)); + { + director->setContentScaleFactor(MIN(mediumResolutionSize.height / designResolutionSize.height, + mediumResolutionSize.width / designResolutionSize.width)); } // if the frame's height is smaller than the height of medium size. else - { - director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width)); + { + director->setContentScaleFactor(MIN(smallResolutionSize.height / designResolutionSize.height, + smallResolutionSize.width / designResolutionSize.width)); } register_all_packages(); @@ -114,7 +118,8 @@ bool AppDelegate::applicationDidFinishLaunching() { } // This function will be called when the app is inactive. Note, when receiving a phone call it is invoked. -void AppDelegate::applicationDidEnterBackground() { +void AppDelegate::applicationDidEnterBackground() +{ Director::getInstance()->stopAnimation(); #if USE_AUDIO_ENGINE @@ -123,7 +128,8 @@ void AppDelegate::applicationDidEnterBackground() { } // this function will be called when the app is active again -void AppDelegate::applicationWillEnterForeground() { +void AppDelegate::applicationWillEnterForeground() +{ Director::getInstance()->startAnimation(); #if USE_AUDIO_ENGINE diff --git a/templates/cpp-template-default/Classes/AppDelegate.h b/templates/cpp-template-default/Classes/AppDelegate.h index 41d860f5deef..0ce2aaaa5be1 100644 --- a/templates/cpp-template-default/Classes/AppDelegate.h +++ b/templates/cpp-template-default/Classes/AppDelegate.h @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,8 +23,8 @@ THE SOFTWARE. ****************************************************************************/ -#ifndef _APP_DELEGATE_H_ -#define _APP_DELEGATE_H_ +#ifndef _APP_DELEGATE_H_ +#define _APP_DELEGATE_H_ #include "cocos2d.h" @@ -33,7 +33,7 @@ Private inheritance here hides part of interface from Director. */ -class AppDelegate : private cocos2d::Application +class AppDelegate : private cocos2d::Application { public: AppDelegate(); @@ -61,5 +61,4 @@ class AppDelegate : private cocos2d::Application void applicationWillEnterForeground() override; }; -#endif // _APP_DELEGATE_H_ - +#endif // _APP_DELEGATE_H_ diff --git a/templates/cpp-template-default/Classes/HelloWorldScene.cpp b/templates/cpp-template-default/Classes/HelloWorldScene.cpp index 60b791bbde1b..5ad976f9778e 100644 --- a/templates/cpp-template-default/Classes/HelloWorldScene.cpp +++ b/templates/cpp-template-default/Classes/HelloWorldScene.cpp @@ -48,8 +48,8 @@ bool HelloWorld::init() auto visibleSize = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); - auto safeArea = Director::getInstance()->getSafeAreaRect(); - auto safeOrigin = safeArea.origin; + auto safeArea = Director::getInstance()->getSafeAreaRect(); + auto safeOrigin = safeArea.origin; ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program diff --git a/templates/cpp-template-default/Classes/HelloWorldScene.h b/templates/cpp-template-default/Classes/HelloWorldScene.h index c77c79b593ab..894b4e0dd898 100644 --- a/templates/cpp-template-default/Classes/HelloWorldScene.h +++ b/templates/cpp-template-default/Classes/HelloWorldScene.h @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -37,4 +37,4 @@ class HelloWorld : public cocos2d::Scene void menuCloseCallback(Ref* sender); }; -#endif // __HELLOWORLD_SCENE_H__ +#endif // __HELLOWORLD_SCENE_H__ diff --git a/templates/cpp-template-default/proj.android/app/jni/hellocpp/main.cpp b/templates/cpp-template-default/proj.android/app/jni/hellocpp/main.cpp index 6cab47cbb306..ccd4757e4c78 100644 --- a/templates/cpp-template-default/proj.android/app/jni/hellocpp/main.cpp +++ b/templates/cpp-template-default/proj.android/app/jni/hellocpp/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,14 +29,16 @@ #include "AppDelegate.h" -#define LOG_TAG "main" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -namespace { +namespace +{ std::unique_ptr appDelegate; } -void cocos_android_app_init(JNIEnv* env) { +void cocos_android_app_init(JNIEnv* env) +{ LOGD("cocos_android_app_init"); appDelegate.reset(new AppDelegate()); } diff --git a/templates/cpp-template-default/proj.ios_mac/ios/AppController.h b/templates/cpp-template-default/proj.ios_mac/ios/AppController.h index f0e78b77634f..aeb65f50857b 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/AppController.h +++ b/templates/cpp-template-default/proj.ios_mac/ios/AppController.h @@ -2,19 +2,19 @@ Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,10 +29,8 @@ @class RootViewController; @interface AppController : NSObject { - } @property(nonatomic, readonly) RootViewController* viewController; @end - diff --git a/templates/cpp-template-default/proj.ios_mac/ios/AppController.mm b/templates/cpp-template-default/proj.ios_mac/ios/AppController.mm index edcd92178a39..2dafa17d40e3 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/AppController.mm +++ b/templates/cpp-template-default/proj.ios_mac/ios/AppController.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,29 +39,29 @@ @implementation AppController // cocos2d application instance static AppDelegate s_sharedApplication; -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - cocos2d::Application *app = cocos2d::Application::getInstance(); - +- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions +{ + + cocos2d::Application* app = cocos2d::Application::getInstance(); + // Initialize the GLView attributes app->initGLContextAttrs(); cocos2d::GLViewImpl::convertAttrs(); - + // Override point for customization after application launch. // Add the view controller's view to the window and display. - window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; + window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Use RootViewController to manage CCEAGLView - _viewController = [[RootViewController alloc]init]; + _viewController = [[RootViewController alloc] init]; _viewController.wantsFullScreenLayout = YES; - // Set RootViewController to window - if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) + if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 - [window addSubview: _viewController.view]; + [window addSubview:_viewController.view]; } else { @@ -72,82 +72,91 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [window makeKeyAndVisible]; [[UIApplication sharedApplication] setStatusBarHidden:true]; - - //Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. - if ( [[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) + + // Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. + if ([[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) { [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAllowsDefaultLineBreakStrategy"]; } - + // IMPORTANT: Setting the GLView should be done after creating the RootViewController - cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *)_viewController.view); + cocos2d::GLView* glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void*)_viewController.view); cocos2d::Director::getInstance()->setOpenGLView(glview); - - //run the cocos2d-x game scene + + // run the cocos2d-x game scene app->run(); return YES; } - -- (void)applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication*)application +{ /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + Sent when the application is about to move from active to inactive state. This can occur for certain types of + temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and + it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and + throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ // We don't need to call this method any more. It will interrupt user defined game pause&resume logic /* cocos2d::Director::getInstance()->pause(); */ } -- (void)applicationDidBecomeActive:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication*)application +{ /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was + previously in the background, optionally refresh the user interface. */ // We don't need to call this method any more. It will interrupt user defined game pause&resume logic /* cocos2d::Director::getInstance()->resume(); */ } -- (void)applicationDidEnterBackground:(UIApplication *)application { +- (void)applicationDidEnterBackground:(UIApplication*)application +{ /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. + Use this method to release shared resources, save user data, invalidate timers, and store enough application state + information to restore your application to its current state in case it is terminated later. If your application + supports background execution, called instead of applicationWillTerminate: when the user quits. */ cocos2d::Application::getInstance()->applicationDidEnterBackground(); } -- (void)applicationWillEnterForeground:(UIApplication *)application { +- (void)applicationWillEnterForeground:(UIApplication*)application +{ /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. + Called as part of transition from the background to the inactive state: here you can undo many of the changes made + on entering the background. */ cocos2d::Application::getInstance()->applicationWillEnterForeground(); } -- (void)applicationWillTerminate:(UIApplication *)application { +- (void)applicationWillTerminate:(UIApplication*)application +{ /* Called when the application is about to terminate. See also applicationDidEnterBackground:. */ } - #pragma mark - #pragma mark Memory management -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { +- (void)applicationDidReceiveMemoryWarning:(UIApplication*)application +{ /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. + Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) + later. */ } - #if __has_feature(objc_arc) #else -- (void)dealloc { +- (void)dealloc +{ [window release]; [_viewController release]; [super dealloc]; } #endif - @end diff --git a/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.h b/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.h index ed4046d6faaf..06c3b0556216 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.h +++ b/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.h @@ -26,10 +26,8 @@ #import - @interface RootViewController : UIViewController { - } -- (BOOL) prefersStatusBarHidden; +- (BOOL)prefersStatusBarHidden; @end diff --git a/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.mm b/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.mm index a4c37af784ab..8eaf237db900 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.mm +++ b/templates/cpp-template-default/proj.ios_mac/ios/RootViewController.mm @@ -28,11 +28,11 @@ of this software and associated documentation files (the "Software"), to deal #import "cocos2d.h" #import "platform/ios/CCEAGLView-ios.h" - @implementation RootViewController /* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. + // The designated initializer. Override if you create the controller programmatically and want to perform +customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization @@ -42,81 +42,89 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil */ // Implement loadView to create a view hierarchy programmatically, without using a nib. -- (void)loadView { +- (void)loadView +{ // Initialize the CCEAGLView - CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [UIScreen mainScreen].bounds - pixelFormat: (__bridge NSString *)cocos2d::GLViewImpl::_pixelFormat - depthFormat: cocos2d::GLViewImpl::_depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO - numberOfSamples: cocos2d::GLViewImpl::_multisamplingCount ]; - + CCEAGLView* eaglView = [CCEAGLView viewWithFrame:[UIScreen mainScreen].bounds + pixelFormat:(__bridge NSString*)cocos2d::GLViewImpl::_pixelFormat + depthFormat:cocos2d::GLViewImpl::_depthFormat + preserveBackbuffer:NO + sharegroup:nil + multiSampling:cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO + numberOfSamples:cocos2d::GLViewImpl::_multisamplingCount]; + // Enable or disable multiple touches [eaglView setMultipleTouchEnabled:NO]; - + // Set EAGLView as view of RootViewController self.view = eaglView; } // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; } -- (void)viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated +{ [super viewWillAppear:animated]; } -- (void)viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated +{ [super viewDidDisappear:animated]; } - // For ios6, use supportedInterfaceOrientations & shouldAutorotate instead #ifdef __IPHONE_6_0 -- (NSUInteger) supportedInterfaceOrientations{ +- (NSUInteger)supportedInterfaceOrientations +{ return UIInterfaceOrientationMaskAllButUpsideDown; } #endif -- (BOOL) shouldAutorotate { +- (BOOL)shouldAutorotate +{ return YES; } -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation +{ [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; auto glview = cocos2d::Director::getInstance()->getOpenGLView(); if (glview) { - CCEAGLView *eaglview = (__bridge CCEAGLView *)glview->getEAGLView(); + CCEAGLView* eaglview = (__bridge CCEAGLView*)glview->getEAGLView(); if (eaglview) { CGSize s = CGSizeMake([eaglview getWidth], [eaglview getHeight]); - cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width, (int) s.height); + cocos2d::Application::getInstance()->applicationScreenSizeChanged((int)s.width, (int)s.height); } } } -//fix not hide status on ios7 -- (BOOL)prefersStatusBarHidden { +// fix not hide status on ios7 +- (BOOL)prefersStatusBarHidden +{ return YES; } // Controls the application's preferred home indicator auto-hiding when this view controller is shown. -- (BOOL)prefersHomeIndicatorAutoHidden { +- (BOOL)prefersHomeIndicatorAutoHidden +{ return YES; } -- (void)didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning +{ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - @end diff --git a/templates/cpp-template-default/proj.ios_mac/mac/main.cpp b/templates/cpp-template-default/proj.ios_mac/mac/main.cpp index ed8ee7c15c33..44045f8feb1d 100644 --- a/templates/cpp-template-default/proj.ios_mac/mac/main.cpp +++ b/templates/cpp-template-default/proj.ios_mac/mac/main.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2010 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,7 +28,7 @@ USING_NS_CC; -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { AppDelegate app; return Application::getInstance()->run(); diff --git a/templates/cpp-template-default/proj.linux/main.cpp b/templates/cpp-template-default/proj.linux/main.cpp index 2bd3032f78c4..3cbdb2bc35a6 100644 --- a/templates/cpp-template-default/proj.linux/main.cpp +++ b/templates/cpp-template-default/proj.linux/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,7 +31,7 @@ USING_NS_CC; -int main(int argc, char **argv) +int main(int argc, char** argv) { // create the application instance AppDelegate app; diff --git a/templates/cpp-template-default/proj.win32/main.cpp b/templates/cpp-template-default/proj.win32/main.cpp index c3c5dc6fd49c..636fa57f07f2 100644 --- a/templates/cpp-template-default/proj.win32/main.cpp +++ b/templates/cpp-template-default/proj.win32/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,10 +28,7 @@ USING_NS_CC; -int WINAPI _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) +int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); diff --git a/templates/cpp-template-default/proj.win32/main.h b/templates/cpp-template-default/proj.win32/main.h index 13b6f36fd230..64d684e652a4 100644 --- a/templates/cpp-template-default/proj.win32/main.h +++ b/templates/cpp-template-default/proj.win32/main.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,7 +25,7 @@ #ifndef __MAIN_H__ #define __MAIN_H__ -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include @@ -34,4 +34,4 @@ // C RunTime Header Files #include "platform/CCStdC.h" -#endif // __MAIN_H__ +#endif // __MAIN_H__ diff --git a/templates/cpp-template-default/proj.win32/resource.h b/templates/cpp-template-default/proj.win32/resource.h index 6f4e11f03d52..da3599c69cf8 100644 --- a/templates/cpp-template-default/proj.win32/resource.h +++ b/templates/cpp-template-default/proj.win32/resource.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,18 +27,18 @@ // Used by game.RC // -#define IDS_PROJNAME 100 -#define IDR_TESTJS 100 +#define IDS_PROJNAME 100 +#define IDR_TESTJS 100 -#define ID_FILE_NEW_WINDOW 32771 +#define ID_FILE_NEW_WINDOW 32771 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 201 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 32775 -#endif +# ifndef APSTUDIO_READONLY_SYMBOLS +# define _APS_NEXT_RESOURCE_VALUE 201 +# define _APS_NEXT_CONTROL_VALUE 1000 +# define _APS_NEXT_SYMED_VALUE 101 +# define _APS_NEXT_COMMAND_VALUE 32775 +# endif #endif diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp index b0542eff320f..abbab833fd96 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,35 +31,31 @@ #define USE_AUDIO_ENGINE 1 #if USE_AUDIO_ENGINE -#include "audio/include/AudioEngine.h" +# include "audio/include/AudioEngine.h" #endif USING_NS_CC; using namespace std; -AppDelegate::AppDelegate() -{ -} +AppDelegate::AppDelegate() {} -AppDelegate::~AppDelegate() -{ -} +AppDelegate::~AppDelegate() {} // if you want a different context, modify the value of glContextAttrs // it will affect all platforms void AppDelegate::initGLContextAttrs() { // set OpenGL context attributes: red,green,blue,alpha,depth,stencil,multisamplesCount - GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0 }; + GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0}; GLView::setGLContextAttrs(glContextAttrs); } -// if you want to use the package manager to install more packages, +// if you want to use the package manager to install more packages, // don't modify or remove this function static int register_all_packages() { - return 0; //flag for packages manager + return 0; // flag for packages manager } bool AppDelegate::applicationDidFinishLaunching() @@ -76,12 +72,12 @@ bool AppDelegate::applicationDidFinishLaunching() register_all_packages(); LuaStack* stack = engine->getLuaStack(); - - //register custom function - //LuaStack* stack = engine->getLuaStack(); - //register_custom_function(stack->getLuaState()); - - stack->addSearchPath("src"); + + // register custom function + // LuaStack* stack = engine->getLuaStack(); + // register_custom_function(stack->getLuaState()); + + stack->addSearchPath("src"); FileUtils::getInstance()->addSearchPath("res"); if (engine->executeString("require 'main'")) { diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.h b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.h index c5a12ae3d6d1..53d04ceced8c 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.h +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.h @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ Private inheritance here hides part of interface from Director. */ -class AppDelegate : private cocos2d::Application +class AppDelegate : private cocos2d::Application { public: AppDelegate(); diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/hellolua/main.cpp b/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/hellolua/main.cpp index 6cab47cbb306..ccd4757e4c78 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/hellolua/main.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/proj.android/app/jni/hellolua/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,14 +29,16 @@ #include "AppDelegate.h" -#define LOG_TAG "main" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -namespace { +namespace +{ std::unique_ptr appDelegate; } -void cocos_android_app_init(JNIEnv* env) { +void cocos_android_app_init(JNIEnv* env) +{ LOGD("cocos_android_app_init"); appDelegate.reset(new AppDelegate()); } diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.h b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.h index f0e78b77634f..aeb65f50857b 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.h +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.h @@ -2,19 +2,19 @@ Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,10 +29,8 @@ @class RootViewController; @interface AppController : NSObject { - } @property(nonatomic, readonly) RootViewController* viewController; @end - diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm index 8116adeba98d..2dafa17d40e3 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,29 +39,29 @@ @implementation AppController // cocos2d application instance static AppDelegate s_sharedApplication; -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - cocos2d::Application *app = cocos2d::Application::getInstance(); - +- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions +{ + + cocos2d::Application* app = cocos2d::Application::getInstance(); + // Initialize the GLView attributes app->initGLContextAttrs(); cocos2d::GLViewImpl::convertAttrs(); - + // Override point for customization after application launch. // Add the view controller's view to the window and display. - window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; + window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Use RootViewController to manage CCEAGLView - _viewController = [[RootViewController alloc]init]; + _viewController = [[RootViewController alloc] init]; _viewController.wantsFullScreenLayout = YES; - // Set RootViewController to window - if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) + if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 - [window addSubview: _viewController.view]; + [window addSubview:_viewController.view]; } else { @@ -73,81 +73,90 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[UIApplication sharedApplication] setStatusBarHidden:true]; - //Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. - if ( [[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) + // Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. + if ([[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) { [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAllowsDefaultLineBreakStrategy"]; } - + // IMPORTANT: Setting the GLView should be done after creating the RootViewController - cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *)_viewController.view); + cocos2d::GLView* glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void*)_viewController.view); cocos2d::Director::getInstance()->setOpenGLView(glview); - - //run the cocos2d-x game scene + + // run the cocos2d-x game scene app->run(); return YES; } - -- (void)applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication*)application +{ /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + Sent when the application is about to move from active to inactive state. This can occur for certain types of + temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and + it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and + throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ // We don't need to call this method any more. It will interrupt user defined game pause&resume logic /* cocos2d::Director::getInstance()->pause(); */ } -- (void)applicationDidBecomeActive:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication*)application +{ /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was + previously in the background, optionally refresh the user interface. */ // We don't need to call this method any more. It will interrupt user defined game pause&resume logic /* cocos2d::Director::getInstance()->resume(); */ } -- (void)applicationDidEnterBackground:(UIApplication *)application { +- (void)applicationDidEnterBackground:(UIApplication*)application +{ /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. + Use this method to release shared resources, save user data, invalidate timers, and store enough application state + information to restore your application to its current state in case it is terminated later. If your application + supports background execution, called instead of applicationWillTerminate: when the user quits. */ cocos2d::Application::getInstance()->applicationDidEnterBackground(); } -- (void)applicationWillEnterForeground:(UIApplication *)application { +- (void)applicationWillEnterForeground:(UIApplication*)application +{ /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. + Called as part of transition from the background to the inactive state: here you can undo many of the changes made + on entering the background. */ cocos2d::Application::getInstance()->applicationWillEnterForeground(); } -- (void)applicationWillTerminate:(UIApplication *)application { +- (void)applicationWillTerminate:(UIApplication*)application +{ /* Called when the application is about to terminate. See also applicationDidEnterBackground:. */ } - #pragma mark - #pragma mark Memory management -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { +- (void)applicationDidReceiveMemoryWarning:(UIApplication*)application +{ /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. + Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) + later. */ } - #if __has_feature(objc_arc) #else -- (void)dealloc { +- (void)dealloc +{ [window release]; [_viewController release]; [super dealloc]; } #endif - @end diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h index ed4046d6faaf..06c3b0556216 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h @@ -26,10 +26,8 @@ #import - @interface RootViewController : UIViewController { - } -- (BOOL) prefersStatusBarHidden; +- (BOOL)prefersStatusBarHidden; @end diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm index 37144e420fce..1210e485ccdc 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm @@ -28,11 +28,11 @@ of this software and associated documentation files (the "Software"), to deal #import "cocos2d.h" #import "platform/ios/CCEAGLView-ios.h" - @implementation RootViewController /* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. + // The designated initializer. Override if you create the controller programmatically and want to perform +customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization @@ -42,81 +42,89 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil */ // Implement loadView to create a view hierarchy programmatically, without using a nib. -- (void)loadView { +- (void)loadView +{ // Initialize the CCEAGLView - CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [UIScreen mainScreen].bounds - pixelFormat: (__bridge NSString *)cocos2d::GLViewImpl::_pixelFormat - depthFormat: cocos2d::GLViewImpl::_depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: NO - numberOfSamples: 0 ]; - + CCEAGLView* eaglView = [CCEAGLView viewWithFrame:[UIScreen mainScreen].bounds + pixelFormat:(__bridge NSString*)cocos2d::GLViewImpl::_pixelFormat + depthFormat:cocos2d::GLViewImpl::_depthFormat + preserveBackbuffer:NO + sharegroup:nil + multiSampling:NO + numberOfSamples:0]; + // Enable or disable multiple touches [eaglView setMultipleTouchEnabled:NO]; - + // Set EAGLView as view of RootViewController self.view = eaglView; } // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { +- (void)viewDidLoad +{ [super viewDidLoad]; } -- (void)viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated +{ [super viewWillAppear:animated]; } -- (void)viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated +{ [super viewDidDisappear:animated]; } - // For ios6, use supportedInterfaceOrientations & shouldAutorotate instead #ifdef __IPHONE_6_0 -- (NSUInteger) supportedInterfaceOrientations{ +- (NSUInteger)supportedInterfaceOrientations +{ return UIInterfaceOrientationMaskAllButUpsideDown; } #endif -- (BOOL) shouldAutorotate { +- (BOOL)shouldAutorotate +{ return YES; } -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation +{ [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; auto glview = cocos2d::Director::getInstance()->getOpenGLView(); if (glview) { - CCEAGLView *eaglview = (__bridge CCEAGLView *)glview->getEAGLView(); + CCEAGLView* eaglview = (__bridge CCEAGLView*)glview->getEAGLView(); if (eaglview) { CGSize s = CGSizeMake([eaglview getWidth], [eaglview getHeight]); - cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width, (int) s.height); + cocos2d::Application::getInstance()->applicationScreenSizeChanged((int)s.width, (int)s.height); } } } -//fix not hide status on ios7 -- (BOOL)prefersStatusBarHidden { +// fix not hide status on ios7 +- (BOOL)prefersStatusBarHidden +{ return YES; } // Controls the application's preferred home indicator auto-hiding when this view controller is shown. -- (BOOL)prefersHomeIndicatorAutoHidden { +- (BOOL)prefersHomeIndicatorAutoHidden +{ return YES; } -- (void)didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning +{ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } - @end diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/main.cpp b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/main.cpp index cd6c3e8cdc52..371a2b4fcc85 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/main.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/main.cpp @@ -4,9 +4,8 @@ USING_NS_CC; -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { AppDelegate app; return Application::getInstance()->run(); } - diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.linux/main.cpp b/templates/lua-template-default/frameworks/runtime-src/proj.linux/main.cpp index 042c94fef689..c03ce74184e9 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.linux/main.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/proj.linux/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ USING_NS_CC; -int main(int argc, char **argv) +int main(int argc, char** argv) { // create the application instance AppDelegate app; diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.cpp b/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.cpp index 88ab9a2856fb..0aa2a83d78aa 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,10 +30,7 @@ USING_NS_CC; // uncomment below line, open debug console #define USE_WIN32_CONSOLE -int WINAPI _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) +int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.h b/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.h index 7943814d121b..d262f80bb84e 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.h +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/main.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,7 +24,7 @@ #pragma once -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include @@ -32,4 +32,3 @@ // C RunTime Header Files #include "platform/CCStdC.h" - diff --git a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp index e7a86cd63aa5..d4be38fbeec0 100644 --- a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp +++ b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,12 +28,12 @@ USING_NS_CC; -enum +enum { kTagNode, kTagGrossini, kTagSequence, -}; +}; ActionManagerTests::ActionManagerTests() { @@ -53,13 +53,9 @@ ActionManagerTests::ActionManagerTests() // //------------------------------------------------------------------ -ActionManagerTest::ActionManagerTest() -{ -} +ActionManagerTest::ActionManagerTest() {} -ActionManagerTest::~ActionManagerTest() -{ -} +ActionManagerTest::~ActionManagerTest() {} std::string ActionManagerTest::title() const { @@ -81,30 +77,23 @@ void CrashTest::onEnter() ActionManagerTest::onEnter(); auto child = Sprite::create(s_pathGrossini); - child->setPosition( VisibleRect::center() ); + child->setPosition(VisibleRect::center()); addChild(child, 1, kTagGrossini); - //Sum of all action's duration is 1.5 second. + // Sum of all action's duration is 1.5 second. child->runAction(RotateBy::create(1.5f, 90)); - child->runAction(Sequence::create( - DelayTime::create(1.4f), - FadeOut::create(1.1f), - nullptr) - ); - - //After 1.5 second, self will be removed. - child->runAction(Sequence::create( - DelayTime::create(1.4f), - CallFunc::create( CC_CALLBACK_0(CrashTest::removeThis,this)), - nullptr) - ); + child->runAction(Sequence::create(DelayTime::create(1.4f), FadeOut::create(1.1f), nullptr)); + + // After 1.5 second, self will be removed. + child->runAction(Sequence::create(DelayTime::create(1.4f), + CallFunc::create(CC_CALLBACK_0(CrashTest::removeThis, this)), nullptr)); } void CrashTest::removeThis() { auto child = getChildByTag(kTagGrossini); child->removeChild(child, true); - + getTestSuite()->enterNextTest(); } @@ -126,22 +115,19 @@ void LogicTest::onEnter() addChild(grossini, 0, 2); grossini->setPosition(VisibleRect::center()); - grossini->runAction( Sequence::create( - MoveBy::create(1, Vec2(150.0f,0.0f)), - CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe,this)), - nullptr) - ); + grossini->runAction(Sequence::create(MoveBy::create(1, Vec2(150.0f, 0.0f)), + CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe, this)), nullptr)); } void LogicTest::bugMe(Node* node) { - node->stopAllActions(); //After this stop next action not working, if remove this stop everything is working + node->stopAllActions(); // After this stop next action not working, if remove this stop everything is working node->runAction(ScaleTo::create(2, 2)); } std::string LogicTest::subtitle() const { - return "Logic test"; + return "Logic test"; } //------------------------------------------------------------------ @@ -157,32 +143,30 @@ void PauseTest::onEnter() // otherwise the paused action will be resumed at 'onEnter' time // ActionManagerTest::onEnter(); - auto l = Label::createWithTTF("After 5 seconds grossini should move", "fonts/Thonburi.ttf", 16.0f); addChild(l); - l->setPosition(VisibleRect::center().x, VisibleRect::top().y-75); - - + l->setPosition(VisibleRect::center().x, VisibleRect::top().y - 75); + // // Also, this test MUST be done, after [super onEnter] // auto grossini = Sprite::create(s_pathGrossini); addChild(grossini, 0, kTagGrossini); - grossini->setPosition(VisibleRect::center() ); - - auto action = MoveBy::create(1, Vec2(150.0f,0.0f)); + grossini->setPosition(VisibleRect::center()); + + auto action = MoveBy::create(1, Vec2(150.0f, 0.0f)); auto director = Director::getInstance(); director->getActionManager()->addAction(action, grossini, true); - schedule( CC_SCHEDULE_SELECTOR(PauseTest::unpause), 3); + schedule(CC_SCHEDULE_SELECTOR(PauseTest::unpause), 3); } void PauseTest::unpause(float dt) { - unschedule( CC_SCHEDULE_SELECTOR(PauseTest::unpause) ); - auto node = getChildByTag( kTagGrossini ); + unschedule(CC_SCHEDULE_SELECTOR(PauseTest::unpause)); + auto node = getChildByTag(kTagGrossini); auto director = Director::getInstance(); director->getActionManager()->resumeTarget(node); } @@ -205,13 +189,13 @@ void StopActionTest::onEnter() addChild(l); l->setPosition(VisibleRect::center().x, VisibleRect::top().y - 75); - auto pMove = MoveBy::create(2, Vec2(200.0f, 0.0f)); - auto pCallback = CallFunc::create(CC_CALLBACK_0(StopActionTest::stopAction,this)); + auto pMove = MoveBy::create(2, Vec2(200.0f, 0.0f)); + auto pCallback = CallFunc::create(CC_CALLBACK_0(StopActionTest::stopAction, this)); auto pSequence = Sequence::create(pMove, pCallback, nullptr); pSequence->setTag(kTagSequence); auto pChild = Sprite::create(s_pathGrossini); - pChild->setPosition( VisibleRect::center() ); + pChild->setPosition(VisibleRect::center()); addChild(pChild, 1, kTagGrossini); pChild->runAction(pSequence); @@ -236,29 +220,30 @@ std::string StopActionTest::subtitle() const void StopAllActionsTest::onEnter() { ActionManagerTest::onEnter(); - - auto l = Label::createWithTTF("Should stop scale & move after 4 seconds but keep rotate", "fonts/Thonburi.ttf", 16.0f); + + auto l = + Label::createWithTTF("Should stop scale & move after 4 seconds but keep rotate", "fonts/Thonburi.ttf", 16.0f); addChild(l); - l->setPosition( Vec2(VisibleRect::center().x, VisibleRect::top().y - 75) ); - - auto pMove1 = MoveBy::create(2, Vec2(200.0f, 0.0f)); - auto pMove2 = MoveBy::create(2, Vec2(-200.0f, 0.0f)); + l->setPosition(Vec2(VisibleRect::center().x, VisibleRect::top().y - 75)); + + auto pMove1 = MoveBy::create(2, Vec2(200.0f, 0.0f)); + auto pMove2 = MoveBy::create(2, Vec2(-200.0f, 0.0f)); auto pSequenceMove = Sequence::createWithTwoActions(pMove1, pMove2); - auto pRepeatMove = RepeatForever::create(pSequenceMove); + auto pRepeatMove = RepeatForever::create(pSequenceMove); pRepeatMove->setTag(kTagSequence); - - auto pScale1 = ScaleBy::create(2, 1.5f); - auto pScale2 = ScaleBy::create(2, 1.0f/1.5f); + + auto pScale1 = ScaleBy::create(2, 1.5f); + auto pScale2 = ScaleBy::create(2, 1.0f / 1.5f); auto pSequenceScale = Sequence::createWithTwoActions(pScale1, pScale2); - auto pRepeatScale = RepeatForever::create(pSequenceScale); + auto pRepeatScale = RepeatForever::create(pSequenceScale); pRepeatScale->setTag(kTagSequence); - - auto pRotate = RotateBy::create(2, 360); + + auto pRotate = RotateBy::create(2, 360); auto pRepeatRotate = RepeatForever::create(pRotate); - + auto pChild = Sprite::create(s_pathGrossini); - pChild->setPosition( VisibleRect::center() ); - + pChild->setPosition(VisibleRect::center()); + addChild(pChild, 1, kTagGrossini); pChild->runAction(pRepeatMove); pChild->runAction(pRepeatScale); @@ -277,7 +262,6 @@ std::string StopAllActionsTest::subtitle() const return "Stop All Action Test"; } - //------------------------------------------------------------------ // // ResumeTest @@ -314,7 +298,7 @@ void ResumeTest::resumeGrossini(float time) this->unschedule(CC_SCHEDULE_SELECTOR(ResumeTest::resumeGrossini)); auto pGrossini = getChildByTag(kTagGrossini); - auto director = Director::getInstance(); + auto director = Director::getInstance(); director->getActionManager()->resumeTarget(pGrossini); } @@ -327,28 +311,29 @@ void StopActionsByFlagsTest::onEnter() { ActionManagerTest::onEnter(); - auto l = Label::createWithTTF("Should stop scale & move after 4 seconds but keep rotate", "fonts/Thonburi.ttf", 16.0f); + auto l = + Label::createWithTTF("Should stop scale & move after 4 seconds but keep rotate", "fonts/Thonburi.ttf", 16.0f); addChild(l); - l->setPosition( Vec2(VisibleRect::center().x, VisibleRect::top().y - 75) ); + l->setPosition(Vec2(VisibleRect::center().x, VisibleRect::top().y - 75)); - auto pMove1 = MoveBy::create(2, Vec2(200.0f, 0.0f)); - auto pMove2 = MoveBy::create(2, Vec2(-200.0f, 0.0f)); + auto pMove1 = MoveBy::create(2, Vec2(200.0f, 0.0f)); + auto pMove2 = MoveBy::create(2, Vec2(-200.0f, 0.0f)); auto pSequenceMove = Sequence::createWithTwoActions(pMove1, pMove2); - auto pRepeatMove = RepeatForever::create(pSequenceMove); + auto pRepeatMove = RepeatForever::create(pSequenceMove); pRepeatMove->setFlags(kMoveFlag | kRepeatForeverFlag); - auto pScale1 = ScaleBy::create(2, 1.5f); - auto pScale2 = ScaleBy::create(2, 1.0f/1.5f); + auto pScale1 = ScaleBy::create(2, 1.5f); + auto pScale2 = ScaleBy::create(2, 1.0f / 1.5f); auto pSequenceScale = Sequence::createWithTwoActions(pScale1, pScale2); - auto pRepeatScale = RepeatForever::create(pSequenceScale); + auto pRepeatScale = RepeatForever::create(pSequenceScale); pRepeatScale->setFlags(kScaleFlag | kRepeatForeverFlag); - auto pRotate = RotateBy::create(2, 360); + auto pRotate = RotateBy::create(2, 360); auto pRepeatRotate = RepeatForever::create(pRotate); pRepeatRotate->setFlags(kRotateFlag | kRepeatForeverFlag); auto pChild = Sprite::create(s_pathGrossini); - pChild->setPosition( VisibleRect::center() ); + pChild->setPosition(VisibleRect::center()); addChild(pChild, 1, kTagGrossini); pChild->runAction(pRepeatMove); @@ -373,17 +358,11 @@ std::string StopActionsByFlagsTest::subtitle() const // Issue14050Test // //------------------------------------------------------------------ -class SpriteIssue14050: public Sprite +class SpriteIssue14050 : public Sprite { public: - SpriteIssue14050() - { - log("SpriteIssue14050::constructor"); - } - virtual ~SpriteIssue14050() - { - log("SpriteIssue14050::destructor"); - } + SpriteIssue14050() { log("SpriteIssue14050::constructor"); } + virtual ~SpriteIssue14050() { log("SpriteIssue14050::destructor"); } }; void Issue14050Test::onEnter() diff --git a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.h b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.h index eb7f7528c19b..d4fd6b9a6f53 100644 --- a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.h +++ b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,7 @@ class ActionManagerTest : public TestCase protected: cocos2d::TextureAtlas* _atlas; - std::string _title; + std::string _title; public: ActionManagerTest(); @@ -112,11 +112,13 @@ class StopActionsByFlagsTest : public ActionManagerTest virtual std::string subtitle() const override; virtual void onEnter() override; void stopAction(float time); + protected: - const unsigned int kMoveFlag = 0x01; - const unsigned int kScaleFlag = 0x02; - const unsigned int kRotateFlag = 0x04; - const unsigned int kRepeatForeverFlag = 0x08; // You don't need this for the test, but it's for demonstration how to activate several flags on an action. + const unsigned int kMoveFlag = 0x01; + const unsigned int kScaleFlag = 0x02; + const unsigned int kRotateFlag = 0x04; + const unsigned int kRepeatForeverFlag = 0x08; // You don't need this for the test, but it's for demonstration how + // to activate several flags on an action. }; class Issue14050Test : public ActionManagerTest @@ -126,6 +128,7 @@ class Issue14050Test : public ActionManagerTest virtual std::string subtitle() const override; virtual void onEnter() override; + protected: }; diff --git a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp index 29c9bc3d99d8..c10e571f3ec1 100644 --- a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp +++ b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp @@ -29,13 +29,13 @@ USING_NS_CC; -enum { +enum +{ kTagAction1 = 1, kTagAction2 = 2, - kTagSlider = 1, + kTagSlider = 1, }; - //------------------------------------------------------------------ // // SpriteDemo @@ -44,34 +44,33 @@ enum { void EaseSpriteDemo::centerSprites(unsigned int numberOfSprites) { auto s = Director::getInstance()->getWinSize(); - - if( numberOfSprites == 0 ) + + if (numberOfSprites == 0) { _tamara->setVisible(false); _kathia->setVisible(false); _grossini->setVisible(false); } - else if ( numberOfSprites == 1 ) + else if (numberOfSprites == 1) { _tamara->setVisible(false); _kathia->setVisible(false); - _grossini->setPosition(s.width/2, s.height/2); + _grossini->setPosition(s.width / 2, s.height / 2); } - else if( numberOfSprites == 2 ) + else if (numberOfSprites == 2) { - _kathia->setPosition(s.width/3, s.height/2); - _tamara->setPosition(2*s.width/3, s.height/2); + _kathia->setPosition(s.width / 3, s.height / 2); + _tamara->setPosition(2 * s.width / 3, s.height / 2); _grossini->setVisible(false); } - else if( numberOfSprites == 3 ) + else if (numberOfSprites == 3) { - _grossini->setPosition(s.width/2, s.height/2); - _tamara->setPosition(s.width/4, s.height/2); - _kathia->setPosition(3 * s.width/4, s.height/2); + _grossini->setPosition(s.width / 2, s.height / 2); + _tamara->setPosition(s.width / 4, s.height / 2); + _kathia->setPosition(3 * s.width / 4, s.height / 2); } } - //------------------------------------------------------------------ // // SpriteEase @@ -81,23 +80,22 @@ void EaseSpriteDemo::centerSprites(unsigned int numberOfSprites) void SpriteEase::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130,0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseIn::create(move->clone(), 2.5f); + + auto move_ease_in = EaseIn::create(move->clone(), 2.5f); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseOut::create(move->clone(), 2.5f); + + auto move_ease_out = EaseOut::create(move->clone(), 2.5f); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - + auto a2 = _grossini->runAction(RepeatForever::create(seq1)); a2->setTag(1); @@ -110,7 +108,6 @@ void SpriteEase::onEnter() schedule(CC_SCHEDULE_SELECTOR(SpriteEase::testStopAction), 6.25f); } - void SpriteEase::testStopAction(float dt) { unschedule(CC_SCHEDULE_SELECTOR(SpriteEase::testStopAction)); @@ -124,7 +121,6 @@ std::string SpriteEase::subtitle() const return "EaseIn - EaseOut - Stop"; } - //------------------------------------------------------------------ // // SpriteEaseInOut @@ -135,30 +131,29 @@ void SpriteEaseInOut::onEnter() { EaseSpriteDemo::onEnter(); - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); -// id move_back = move->reverse(); - - auto move_ease_inout1 = EaseInOut::create(move->clone(), 0.65f); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); + // id move_back = move->reverse(); + + auto move_ease_inout1 = EaseInOut::create(move->clone(), 0.65f); auto move_ease_inout_back1 = move_ease_inout1->reverse(); - - auto move_ease_inout2 = EaseInOut::create(move->clone(), 1.35f); + + auto move_ease_inout2 = EaseInOut::create(move->clone(), 1.35f); auto move_ease_inout_back2 = move_ease_inout2->reverse(); - auto move_ease_inout3 = EaseInOut::create(move->clone(), 1.0f); + auto move_ease_inout3 = EaseInOut::create(move->clone(), 1.0f); auto move_ease_inout_back3 = move_ease_inout3->reverse(); - + auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create( move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), nullptr); - auto seq2 = Sequence::create( move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), nullptr); - auto seq3 = Sequence::create( move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), nullptr); - + auto seq1 = Sequence::create(move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), nullptr); + _tamara->runAction(RepeatForever::create(seq1)); _kathia->runAction(RepeatForever::create(seq2)); _grossini->runAction(RepeatForever::create(seq3)); } - std::string SpriteEaseInOut::subtitle() const { return "EaseInOut and rates"; @@ -173,29 +168,27 @@ std::string SpriteEaseInOut::subtitle() const void SpriteEaseExponential::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseExponentialIn::create(move->clone()); + + auto move_ease_in = EaseExponentialIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseExponentialOut::create(move->clone()); + + auto move_ease_out = EaseExponentialOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } - std::string SpriteEaseExponential::subtitle() const { return "ExpIn - ExpOut actions"; @@ -210,25 +203,23 @@ void SpriteEaseExponentialInOut::onEnter() { EaseSpriteDemo::onEnter(); - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseExponentialInOut::create(move->clone() ); - auto move_ease_back = move_ease->reverse(); //--> reverse() - + + auto move_ease = EaseExponentialInOut::create(move->clone()); + auto move_ease_back = move_ease->reverse(); //--> reverse() + auto delay = DelayTime::create(0.25f); - - auto seq1 = Sequence::create( move, delay, move_back, delay->clone(), nullptr); - auto seq2 = Sequence::create( move_ease, delay, move_ease_back, delay->clone(), nullptr); - + + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay, move_ease_back, delay->clone(), nullptr); + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } - std::string SpriteEaseExponentialInOut::subtitle() const { return "EaseExponentialInOut action"; @@ -243,29 +234,26 @@ void SpriteEaseSine::onEnter() { EaseSpriteDemo::onEnter(); - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseSineIn::create(move->clone() ); + + auto move_ease_in = EaseSineIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseSineOut::create(move->clone() ); + + auto move_ease_out = EaseSineOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } - std::string SpriteEaseSine::subtitle() const { return "EaseSineIn - EaseSineOut"; @@ -280,24 +268,23 @@ void SpriteEaseSineInOut::onEnter() { EaseSpriteDemo::onEnter(); - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseSineInOut::create(move->clone() ); + + auto move_ease = EaseSineInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } - std::string SpriteEaseSineInOut::subtitle() const { return "EaseSineInOut action"; @@ -311,27 +298,26 @@ std::string SpriteEaseSineInOut::subtitle() const void SpriteEaseElastic::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseElasticIn::create(move->clone() ); + + auto move_ease_in = EaseElasticIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseElasticOut::create(move->clone() ); + + auto move_ease_out = EaseElasticOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); -} + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); +} std::string SpriteEaseElastic::subtitle() const { @@ -347,36 +333,34 @@ std::string SpriteEaseElastic::subtitle() const void SpriteEaseElasticInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); - auto move_ease_inout1 = EaseElasticInOut::create(move->clone(), 0.3f); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); + + auto move_ease_inout1 = EaseElasticInOut::create(move->clone(), 0.3f); auto move_ease_inout_back1 = move_ease_inout1->reverse(); - - auto move_ease_inout2 = EaseElasticInOut::create(move->clone(), 0.45f); + + auto move_ease_inout2 = EaseElasticInOut::create(move->clone(), 0.45f); auto move_ease_inout_back2 = move_ease_inout2->reverse(); - - auto move_ease_inout3 = EaseElasticInOut::create(move->clone(), 0.6f); + + auto move_ease_inout3 = EaseElasticInOut::create(move->clone(), 0.6f); auto move_ease_inout_back3 = move_ease_inout3->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), nullptr); - - _tamara->runAction( RepeatForever::create(seq1)); - _kathia->runAction( RepeatForever::create(seq2)); - _grossini->runAction( RepeatForever::create(seq3)); -} + _tamara->runAction(RepeatForever::create(seq1)); + _kathia->runAction(RepeatForever::create(seq2)); + _grossini->runAction(RepeatForever::create(seq3)); +} std::string SpriteEaseElasticInOut::subtitle() const { return "EaseElasticInOut action"; } - //------------------------------------------------------------------ // // SpriteEaseBounce @@ -386,34 +370,32 @@ std::string SpriteEaseElasticInOut::subtitle() const void SpriteEaseBounce::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseBounceIn::create(move->clone() ); + + auto move_ease_in = EaseBounceIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseBounceOut::create(move->clone() ); + + auto move_ease_out = EaseBounceOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); -} + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); +} std::string SpriteEaseBounce::subtitle() const { return "Bounce In - Out actions"; } - //------------------------------------------------------------------ // // SpriteEaseBounceInOut @@ -424,23 +406,22 @@ void SpriteEaseBounceInOut::onEnter() { EaseSpriteDemo::onEnter(); - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseBounceInOut::create(move->clone() ); + + auto move_ease = EaseBounceInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); -} + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); +} std::string SpriteEaseBounceInOut::subtitle() const { @@ -456,28 +437,27 @@ std::string SpriteEaseBounceInOut::subtitle() const void SpriteEaseBack::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseBackIn::create(move->clone()); + + auto move_ease_in = EaseBackIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseBackOut::create( move->clone()); + + auto move_ease_out = EaseBackOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - + _grossini->runAction(RepeatForever::create(seq1)); _tamara->runAction(RepeatForever::create(seq2)); - _kathia->runAction(RepeatForever::create(seq3)); + _kathia->runAction(RepeatForever::create(seq3)); } - std::string SpriteEaseBack::subtitle() const { return "Back In - Out actions"; @@ -492,24 +472,23 @@ std::string SpriteEaseBack::subtitle() const void SpriteEaseBackInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseBackInOut::create(move->clone() ); + + auto move_ease = EaseBackInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); -} + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); +} std::string SpriteEaseBackInOut::subtitle() const { @@ -525,55 +504,52 @@ std::string SpriteEaseBackInOut::subtitle() const void SpriteEaseBezier::onEnter() { EaseSpriteDemo::onEnter(); - + auto s = Director::getInstance()->getWinSize(); - + // // startPosition can be any coordinate, but since the movement // is relative to the Bezier curve, make it (0,0) // - + centerSprites(3); - + // sprite 1 ccBezierConfig bezier; - bezier.controlPoint_1 = Vec2(0.0f, s.height/2); - bezier.controlPoint_2 = Vec2(300.0f, -s.height/2); - bezier.endPosition = Vec2(300.0f,100.0f); - - auto bezierForward = BezierBy::create(3, bezier); + bezier.controlPoint_1 = Vec2(0.0f, s.height / 2); + bezier.controlPoint_2 = Vec2(300.0f, -s.height / 2); + bezier.endPosition = Vec2(300.0f, 100.0f); + + auto bezierForward = BezierBy::create(3, bezier); auto bezierEaseForward = EaseBezierAction::create(bezierForward); bezierEaseForward->setBezierParamer(0.5f, 0.5f, 1.0f, 1.0f); - + auto bezierEaseBack = bezierEaseForward->reverse(); - auto rep = RepeatForever::create(Sequence::create( bezierEaseForward, bezierEaseBack, nullptr)); - - + auto rep = RepeatForever::create(Sequence::create(bezierEaseForward, bezierEaseBack, nullptr)); + // sprite 2 - _tamara->setPosition(80,160); - ccBezierConfig bezier2; - bezier2.controlPoint_1 = Vec2(100.0f, s.height/2); - bezier2.controlPoint_2 = Vec2(200.0f, -s.height/2); - bezier2.endPosition = Vec2(240.0f,160.0f); - - auto bezierTo1 = BezierTo::create(2, bezier2); + _tamara->setPosition(80, 160); + ccBezierConfig bezier2; + bezier2.controlPoint_1 = Vec2(100.0f, s.height / 2); + bezier2.controlPoint_2 = Vec2(200.0f, -s.height / 2); + bezier2.endPosition = Vec2(240.0f, 160.0f); + + auto bezierTo1 = BezierTo::create(2, bezier2); auto bezierEaseTo1 = EaseBezierAction::create(bezierTo1); bezierEaseTo1->setBezierParamer(0.5f, 0.5f, 1.0f, 1.0f); - + // sprite 3 - _kathia->setPosition(400.0f,160.0f); - auto bezierTo2 = BezierTo::create(2, bezier2); + _kathia->setPosition(400.0f, 160.0f); + auto bezierTo2 = BezierTo::create(2, bezier2); auto bezierEaseTo2 = EaseBezierAction::create(bezierTo2); bezierEaseTo2->setBezierParamer(0.0f, 0.5f, -5.0f, 1.0f); - - _grossini->runAction( rep); + _grossini->runAction(rep); _tamara->runAction(bezierEaseTo1); _kathia->runAction(bezierEaseTo2); - } -std::string SpriteEaseBezier::subtitle()const +std::string SpriteEaseBezier::subtitle() const { return "SpriteEaseBezier action"; } @@ -587,25 +563,25 @@ std::string SpriteEaseBezier::subtitle()const void SpriteEaseQuadratic::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseQuadraticActionIn::create(move->clone() ); + + auto move_ease_in = EaseQuadraticActionIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseQuadraticActionOut::create(move->clone() ); + + auto move_ease_out = EaseQuadraticActionOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } std::string SpriteEaseQuadratic::subtitle() const @@ -622,30 +598,29 @@ std::string SpriteEaseQuadratic::subtitle() const void SpriteEaseQuadraticInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseQuadraticActionInOut::create(move->clone() ); + + auto move_ease = EaseQuadraticActionInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } -std::string SpriteEaseQuadraticInOut::subtitle()const +std::string SpriteEaseQuadraticInOut::subtitle() const { return "SpriteEaseQuadraticInOut action"; } - //------------------------------------------------------------------ // // SpriteEaseQuartic @@ -655,28 +630,28 @@ std::string SpriteEaseQuadraticInOut::subtitle()const void SpriteEaseQuartic::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseQuarticActionIn::create(move->clone() ); + + auto move_ease_in = EaseQuarticActionIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseQuarticActionOut::create(move->clone() ); + + auto move_ease_out = EaseQuarticActionOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } -std::string SpriteEaseQuartic::subtitle()const +std::string SpriteEaseQuartic::subtitle() const { return "SpriteEaseQuartic action"; } @@ -690,25 +665,25 @@ std::string SpriteEaseQuartic::subtitle()const void SpriteEaseQuarticInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseQuarticActionInOut::create(move->clone() ); + + auto move_ease = EaseQuarticActionInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } -std::string SpriteEaseQuarticInOut::subtitle()const +std::string SpriteEaseQuarticInOut::subtitle() const { return "SpriteEaseQuarticInOut action"; } @@ -722,33 +697,32 @@ std::string SpriteEaseQuarticInOut::subtitle()const void SpriteEaseQuintic::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseQuinticActionIn::create(move->clone() ); + + auto move_ease_in = EaseQuinticActionIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseQuinticActionOut::create(move->clone() ); + + auto move_ease_out = EaseQuinticActionOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } -std::string SpriteEaseQuintic::subtitle()const +std::string SpriteEaseQuintic::subtitle() const { return "SpriteEaseQuintic action"; } - //------------------------------------------------------------------ // // SpriteEaseQuinticInOut @@ -758,25 +732,25 @@ std::string SpriteEaseQuintic::subtitle()const void SpriteEaseQuinticInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseQuinticActionInOut::create(move->clone() ); + + auto move_ease = EaseQuinticActionInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } -std::string SpriteEaseQuinticInOut::subtitle()const +std::string SpriteEaseQuinticInOut::subtitle() const { return "SpriteEaseQuinticInOut action"; } @@ -790,33 +764,32 @@ std::string SpriteEaseQuinticInOut::subtitle()const void SpriteEaseCircle::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseCircleActionIn::create(move->clone() ); + + auto move_ease_in = EaseCircleActionIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseCircleActionOut::create(move->clone() ); + + auto move_ease_out = EaseCircleActionOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } -std::string SpriteEaseCircle::subtitle()const +std::string SpriteEaseCircle::subtitle() const { return "SpriteEaseCircle action"; } - //------------------------------------------------------------------ // // SpriteEaseCircleInOut @@ -826,25 +799,25 @@ std::string SpriteEaseCircle::subtitle()const void SpriteEaseCircleInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseCircleActionInOut::create(move->clone() ); + + auto move_ease = EaseCircleActionInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } -std::string SpriteEaseCircleInOut::subtitle()const +std::string SpriteEaseCircleInOut::subtitle() const { return "SpriteEaseCircleInOut action"; } @@ -858,33 +831,32 @@ std::string SpriteEaseCircleInOut::subtitle()const void SpriteEaseCubic::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease_in = EaseCubicActionIn::create(move->clone() ); + + auto move_ease_in = EaseCubicActionIn::create(move->clone()); auto move_ease_in_back = move_ease_in->reverse(); - - auto move_ease_out = EaseCubicActionOut::create(move->clone() ); + + auto move_ease_out = EaseCubicActionOut::create(move->clone()); auto move_ease_out_back = move_ease_out->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); - _kathia->runAction( RepeatForever::create(seq3)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); + _kathia->runAction(RepeatForever::create(seq3)); } -std::string SpriteEaseCubic::subtitle()const +std::string SpriteEaseCubic::subtitle() const { return "SpriteEaseCubic action"; } - //------------------------------------------------------------------ // // SpriteEaseCubicInOut @@ -894,25 +866,25 @@ std::string SpriteEaseCubic::subtitle()const void SpriteEaseCubicInOut::onEnter() { EaseSpriteDemo::onEnter(); - - auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130, 0.0f)); + + auto move = MoveBy::create(3, Vec2(VisibleRect::right().x - 130, 0.0f)); auto move_back = move->reverse(); - - auto move_ease = EaseCubicActionInOut::create(move->clone() ); + + auto move_ease = EaseCubicActionInOut::create(move->clone()); auto move_ease_back = move_ease->reverse(); - + auto delay = DelayTime::create(0.25f); - + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); - + this->positionForTwo(); - - _grossini->runAction( RepeatForever::create(seq1)); - _tamara->runAction( RepeatForever::create(seq2)); + + _grossini->runAction(RepeatForever::create(seq1)); + _tamara->runAction(RepeatForever::create(seq2)); } -std::string SpriteEaseCubicInOut::title()const +std::string SpriteEaseCubicInOut::title() const { return "SpriteEaseCubicInOut action"; } @@ -925,43 +897,43 @@ std::string SpriteEaseCubicInOut::title()const void SpeedTest::onEnter() { EaseSpriteDemo::onEnter(); - + auto s = Director::getInstance()->getWinSize(); // rotate and jump - auto jump1 = JumpBy::create(4.0f, Vec2(-s.width+80, 0.0f), 100.0f, 4); + auto jump1 = JumpBy::create(4.0f, Vec2(-s.width + 80, 0.0f), 100.0f, 4); auto jump2 = jump1->reverse(); - auto rot1 = RotateBy::create(4.0f, 360*2.0f); - auto rot2 = rot1->reverse(); - + auto rot1 = RotateBy::create(4.0f, 360 * 2.0f); + auto rot2 = rot1->reverse(); + auto seq3_1 = Sequence::create(jump2, jump1, nullptr); - auto seq3_2 = Sequence::create( rot1, rot2, nullptr); - auto spawn = Spawn::create(seq3_1, seq3_2, nullptr); + auto seq3_2 = Sequence::create(rot1, rot2, nullptr); + auto spawn = Spawn::create(seq3_1, seq3_2, nullptr); auto action = Speed::create(RepeatForever::create(spawn), 1.0f); action->setTag(kTagAction1); - + auto action2 = action->clone(); auto action3 = action->clone(); action2->setTag(kTagAction1); action3->setTag(kTagAction1); - + _grossini->runAction(action2); _tamara->runAction(action3); _kathia->runAction(action); - - this->schedule(CC_SCHEDULE_SELECTOR(SpeedTest::altertime), 1.0f);//:@selector(altertime:) interval:1.0f]; + + this->schedule(CC_SCHEDULE_SELECTOR(SpeedTest::altertime), 1.0f); //:@selector(altertime:) interval:1.0f]; } void SpeedTest::altertime(float dt) -{ +{ auto action1 = static_cast(_grossini->getActionByTag(kTagAction1)); auto action2 = static_cast(_tamara->getActionByTag(kTagAction1)); auto action3 = static_cast(_kathia->getActionByTag(kTagAction1)); - - action1->setSpeed( CCRANDOM_MINUS1_1() * 2 ); - action2->setSpeed( CCRANDOM_MINUS1_1() * 2 ); - action3->setSpeed( CCRANDOM_MINUS1_1() * 2 ); + + action1->setSpeed(CCRANDOM_MINUS1_1() * 2); + action2->setSpeed(CCRANDOM_MINUS1_1() * 2); + action3->setSpeed(CCRANDOM_MINUS1_1() * 2); } std::string SpeedTest::subtitle() const @@ -1003,9 +975,7 @@ ActionsEaseTests::ActionsEaseTests() ADD_TEST_CASE(SpeedTest); } -EaseSpriteDemo::EaseSpriteDemo() -{ -} +EaseSpriteDemo::EaseSpriteDemo() {} EaseSpriteDemo::~EaseSpriteDemo() { @@ -1015,13 +985,14 @@ EaseSpriteDemo::~EaseSpriteDemo() } void EaseSpriteDemo::positionForTwo() -{ - _grossini->setPosition(VisibleRect::left().x+60, VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height*1/5); - _tamara->setPosition(VisibleRect::left().x+60, VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height*4/5); +{ + _grossini->setPosition(VisibleRect::left().x + 60, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 1 / 5); + _tamara->setPosition(VisibleRect::left().x + 60, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 4 / 5); _kathia->setVisible(false); } - std::string EaseSpriteDemo::subtitle() const { return "No title"; @@ -1032,15 +1003,21 @@ void EaseSpriteDemo::onEnter() TestCase::onEnter(); // Or you can create an sprite using a filename. PNG and BMP files are supported. - _grossini = Sprite::create(s_pathGrossini); _grossini->retain(); - _tamara = Sprite::create(s_pathSister1); _tamara->retain(); - _kathia = Sprite::create(s_pathSister2); _kathia->retain(); - - addChild( _grossini, 3); - addChild( _kathia, 2); - addChild( _tamara, 1); - - _grossini->setPosition(VisibleRect::left().x + 60, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height*1/5); - _kathia->setPosition(VisibleRect::left().x + 60, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height*2.5f/5); - _tamara->setPosition(VisibleRect::left().x + 60, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height*4/5); + _grossini = Sprite::create(s_pathGrossini); + _grossini->retain(); + _tamara = Sprite::create(s_pathSister1); + _tamara->retain(); + _kathia = Sprite::create(s_pathSister2); + _kathia->retain(); + + addChild(_grossini, 3); + addChild(_kathia, 2); + addChild(_tamara, 1); + + _grossini->setPosition(VisibleRect::left().x + 60, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 1 / 5); + _kathia->setPosition(VisibleRect::left().x + 60, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 2.5f / 5); + _tamara->setPosition(VisibleRect::left().x + 60, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 4 / 5); } diff --git a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.h b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.h index 1fe1f577f2c5..2676595bb027 100644 --- a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.h +++ b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.h @@ -34,11 +34,11 @@ DEFINE_TEST_SUITE(ActionsEaseTests); class EaseSpriteDemo : public TestCase { protected: - cocos2d::Sprite* _grossini; - cocos2d::Sprite* _tamara; - cocos2d::Sprite* _kathia; + cocos2d::Sprite* _grossini; + cocos2d::Sprite* _tamara; + cocos2d::Sprite* _kathia; - std::string _title; + std::string _title; public: EaseSpriteDemo(); @@ -46,7 +46,7 @@ class EaseSpriteDemo : public TestCase virtual std::string subtitle() const override; virtual void onEnter() override; - + void centerSprites(unsigned int numberOfSprites); void positionForTwo(); @@ -225,7 +225,6 @@ class SpriteEaseQuinticInOut : public EaseSpriteDemo virtual std::string subtitle() const override; }; - class SpriteEaseCircle : public EaseSpriteDemo { public: @@ -272,5 +271,4 @@ class SpeedTest : public EaseSpriteDemo void altertime(float dt); }; - #endif diff --git a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp index f1f2f2cba037..6d570773260a 100644 --- a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp +++ b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp @@ -45,13 +45,9 @@ ActionsProgressTests::ActionsProgressTests() // SpriteDemo // //------------------------------------------------------------------ -SpriteDemo::SpriteDemo() -{ -} +SpriteDemo::SpriteDemo() {} -SpriteDemo::~SpriteDemo() -{ -} +SpriteDemo::~SpriteDemo() {} std::string SpriteDemo::title() const { @@ -62,7 +58,7 @@ void SpriteDemo::onEnter() { TestCase::onEnter(); - auto background = LayerColor::create(Color4B(255,0,0,255)); + auto background = LayerColor::create(Color4B(255, 0, 0, 255)); addChild(background, -10); } @@ -74,25 +70,25 @@ void SpriteDemo::onEnter() void SpriteProgressToRadial::onEnter() { SpriteDemo::onEnter(); - + auto s = Director::getInstance()->getWinSize(); auto to1 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); auto to2 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); auto left = ProgressTimer::create(Sprite::create(s_pathSister1)); - left->setType( ProgressTimer::Type::RADIAL ); + left->setType(ProgressTimer::Type::RADIAL); addChild(left); - left->setPosition(100, s.height/2); - left->runAction( RepeatForever::create(to1)); - + left->setPosition(100, s.height / 2); + left->runAction(RepeatForever::create(to1)); + auto right = ProgressTimer::create(Sprite::create(s_pathBlock)); right->setType(ProgressTimer::Type::RADIAL); // Makes the ridial CCW right->setReverseDirection(true); addChild(right); - right->setPosition(s.width-100, s.height/2); - right->runAction( RepeatForever::create(to2)); + right->setPosition(s.width - 100, s.height / 2); + right->runAction(RepeatForever::create(to2)); } std::string SpriteProgressToRadial::subtitle() const @@ -109,22 +105,22 @@ std::string SpriteProgressToRadial::subtitle() const void SpriteProgressToHorizontal::onEnter() { SpriteDemo::onEnter(); - + auto s = Director::getInstance()->getWinSize(); - + auto to1 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); auto to2 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); - + auto left = ProgressTimer::create(Sprite::create(s_pathSister1)); left->setType(ProgressTimer::Type::BAR); // Setup for a bar starting from the left since the midpoint is 0 for the x - left->setMidpoint(Vec2(0.0f,0.0f)); + left->setMidpoint(Vec2(0.0f, 0.0f)); // Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change left->setBarChangeRate(Vec2(1.0f, 0.0f)); addChild(left); - left->setPosition(100, s.height/2); - left->runAction( RepeatForever::create(to1)); - + left->setPosition(100, s.height / 2); + left->runAction(RepeatForever::create(to1)); + auto right = ProgressTimer::create(Sprite::create(s_pathSister2)); right->setType(ProgressTimer::Type::BAR); // Setup for a bar starting from the left since the midpoint is 1 for the x @@ -132,8 +128,8 @@ void SpriteProgressToHorizontal::onEnter() // Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change right->setBarChangeRate(Vec2(1.0f, 0.0f)); addChild(right); - right->setPosition(s.width-100, s.height/2); - right->runAction( RepeatForever::create(to2)); + right->setPosition(s.width - 100, s.height / 2); + right->runAction(RepeatForever::create(to2)); } std::string SpriteProgressToHorizontal::subtitle() const @@ -149,23 +145,23 @@ std::string SpriteProgressToHorizontal::subtitle() const void SpriteProgressToVertical::onEnter() { SpriteDemo::onEnter(); - + auto s = Director::getInstance()->getWinSize(); - + auto to1 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); auto to2 = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); - + auto left = ProgressTimer::create(Sprite::create(s_pathSister1)); left->setType(ProgressTimer::Type::BAR); // Setup for a bar starting from the bottom since the midpoint is 0 for the y - left->setMidpoint(Vec2(0.0f,0.0f)); + left->setMidpoint(Vec2(0.0f, 0.0f)); // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change left->setBarChangeRate(Vec2(0.0f, 1.0f)); addChild(left); - left->setPosition(100, s.height/2); - left->runAction( RepeatForever::create(to1)); - + left->setPosition(100, s.height / 2); + left->runAction(RepeatForever::create(to1)); + auto right = ProgressTimer::create(Sprite::create(s_pathSister2)); right->setType(ProgressTimer::Type::BAR); // Setup for a bar starting from the bottom since the midpoint is 0 for the y @@ -173,8 +169,8 @@ void SpriteProgressToVertical::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change right->setBarChangeRate(Vec2(0, 1)); addChild(right); - right->setPosition(s.width-100, s.height/2); - right->runAction( RepeatForever::create(to2)); + right->setPosition(s.width - 100, s.height / 2); + right->runAction(RepeatForever::create(to2)); } std::string SpriteProgressToVertical::subtitle() const @@ -196,28 +192,28 @@ void SpriteProgressToRadialMidpointChanged::onEnter() auto action = Sequence::createWithTwoActions(ProgressTo::create(2, 100), ProgressTo::create(0, 0)); /** - * Our image on the left should be a radial progress indicator, clockwise - */ + * Our image on the left should be a radial progress indicator, clockwise + */ auto left = ProgressTimer::create(Sprite::create(s_pathBlock)); left->setType(ProgressTimer::Type::RADIAL); addChild(left); left->setMidpoint(Vec2(0.25f, 0.75f)); - left->setPosition(100, s.height/2); + left->setPosition(100, s.height / 2); left->runAction(RepeatForever::create(action->clone())); /** - * Our image on the left should be a radial progress indicator, counter clockwise - */ + * Our image on the left should be a radial progress indicator, counter clockwise + */ auto right = ProgressTimer::create(Sprite::create(s_pathBlock)); right->setType(ProgressTimer::Type::RADIAL); right->setMidpoint(Vec2(0.75f, 0.25f)); /** - * Note the reverse property (default=NO) is only added to the right image. That's how - * we get a counter clockwise progress. - */ + * Note the reverse property (default=NO) is only added to the right image. That's how + * we get a counter clockwise progress. + */ addChild(right); - right->setPosition(s.width-100, s.height/2); + right->setPosition(s.width - 100, s.height / 2); right->runAction(RepeatForever::create(action->clone())); } @@ -247,7 +243,7 @@ void SpriteProgressBarVarious::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change left->setBarChangeRate(Vec2(1.0f, 0.0f)); addChild(left); - left->setPosition(100, s.height/2); + left->setPosition(100, s.height / 2); left->runAction(RepeatForever::create(to->clone())); auto middle = ProgressTimer::create(Sprite::create(s_pathSister2)); @@ -255,9 +251,9 @@ void SpriteProgressBarVarious::onEnter() // Setup for a bar starting from the bottom since the midpoint is 0 for the y middle->setMidpoint(Vec2(0.5f, 0.5f)); // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change - middle->setBarChangeRate(Vec2(1,1)); + middle->setBarChangeRate(Vec2(1, 1)); addChild(middle); - middle->setPosition(s.width/2, s.height/2); + middle->setPosition(s.width / 2, s.height / 2); middle->runAction(RepeatForever::create(to->clone())); auto right = ProgressTimer::create(Sprite::create(s_pathSister2)); @@ -267,7 +263,7 @@ void SpriteProgressBarVarious::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change right->setBarChangeRate(Vec2(0, 1)); addChild(right); - right->setPosition(s.width-100, s.height/2); + right->setPosition(s.width - 100, s.height / 2); right->runAction(RepeatForever::create(to->clone())); } @@ -287,14 +283,10 @@ void SpriteProgressBarTintAndFade::onEnter() auto s = Director::getInstance()->getWinSize(); - auto to = Sequence::createWithTwoActions(ProgressTo::create(6, 100), ProgressTo::create(0, 0)); - auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), - TintTo::create(1, 0, 255, 0), - TintTo::create(1, 0, 0, 255), - nullptr); - auto fade = Sequence::create(FadeTo::create(1.0f, 0), - FadeTo::create(1.0f, 255), - nullptr); + auto to = Sequence::createWithTwoActions(ProgressTo::create(6, 100), ProgressTo::create(0, 0)); + auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), TintTo::create(1, 0, 255, 0), + TintTo::create(1, 0, 0, 255), nullptr); + auto fade = Sequence::create(FadeTo::create(1.0f, 0), FadeTo::create(1.0f, 255), nullptr); auto left = ProgressTimer::create(Sprite::create(s_pathSister1)); left->setType(ProgressTimer::Type::BAR); @@ -304,7 +296,7 @@ void SpriteProgressBarTintAndFade::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change left->setBarChangeRate(Vec2(1.0f, 0.0f)); addChild(left); - left->setPosition(100, s.height/2); + left->setPosition(100, s.height / 2); left->runAction(RepeatForever::create(to->clone())); left->runAction(RepeatForever::create(tint->clone())); @@ -317,7 +309,7 @@ void SpriteProgressBarTintAndFade::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change middle->setBarChangeRate(Vec2(1, 1)); addChild(middle); - middle->setPosition(s.width/2, s.height/2); + middle->setPosition(s.width / 2, s.height / 2); middle->runAction(RepeatForever::create(to->clone())); middle->runAction(RepeatForever::create(fade->clone())); @@ -330,9 +322,9 @@ void SpriteProgressBarTintAndFade::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change right->setBarChangeRate(Vec2(0, 1)); addChild(right); - right->setPosition(s.width-100, s.height/2); + right->setPosition(s.width - 100, s.height / 2); right->runAction(RepeatForever::create(to->clone())); - right->runAction(RepeatForever::create(tint->clone())); + right->runAction(RepeatForever::create(tint->clone())); right->runAction(RepeatForever::create(fade->clone())); right->addChild(Label::createWithTTF("Tint and Fade", "fonts/Marker Felt.ttf", 20.0f)); @@ -365,7 +357,7 @@ void SpriteProgressWithSpriteFrame::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change left->setBarChangeRate(Vec2(1.0f, 0.0f)); addChild(left); - left->setPosition(100, s.height/2); + left->setPosition(100, s.height / 2); left->runAction(RepeatForever::create(to->clone())); auto middle = ProgressTimer::create(Sprite::createWithSpriteFrameName("grossini_dance_02.png")); @@ -375,7 +367,7 @@ void SpriteProgressWithSpriteFrame::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change middle->setBarChangeRate(Vec2(1, 1)); addChild(middle); - middle->setPosition(s.width/2, s.height/2); + middle->setPosition(s.width / 2, s.height / 2); middle->runAction(RepeatForever::create(to->clone())); auto right = ProgressTimer::create(Sprite::createWithSpriteFrameName("grossini_dance_03.png")); @@ -385,7 +377,7 @@ void SpriteProgressWithSpriteFrame::onEnter() // Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change right->setBarChangeRate(Vec2(0, 1)); addChild(right); - right->setPosition(s.width-100, s.height/2); + right->setPosition(s.width - 100, s.height / 2); right->runAction(RepeatForever::create(to->clone())); } diff --git a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.h b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.h index 336fabd2f3e2..5fffe2bb32a4 100644 --- a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.h +++ b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.h @@ -104,4 +104,4 @@ class SpriteProgressWithSpriteFrame : public SpriteDemo virtual std::string subtitle() const override; }; -#endif // _ACTIONS__PROGRESS_TEST_H_ +#endif // _ACTIONS__PROGRESS_TEST_H_ diff --git a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp index 03a32b70bea0..23f6b817cd42 100644 --- a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp +++ b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp @@ -1,28 +1,28 @@ - /**************************************************************************** - Copyright (c) 2012 cocos2d-x.org - Copyright (c) 2013-2016 Chukong Technologies Inc. - Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ +/**************************************************************************** +Copyright (c) 2012 cocos2d-x.org +Copyright (c) 2013-2016 Chukong Technologies Inc. +Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ #include "ActionsTest.h" #include "../testResource.h" @@ -110,7 +110,7 @@ void ActionsDemo::onEnter() _grossini = Sprite::create(s_pathGrossini); _grossini->retain(); - _tamara = Sprite::create(s_pathSister1); + _tamara = Sprite::create(s_pathSister1); _tamara->retain(); _kathia = Sprite::create(s_pathSister2); @@ -120,9 +120,12 @@ void ActionsDemo::onEnter() addChild(_tamara, 2); addChild(_kathia, 3); - _grossini->setPosition(VisibleRect::center().x, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height/3); - _tamara->setPosition(VisibleRect::center().x, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height*2/3); - _kathia->setPosition(VisibleRect::center().x, VisibleRect::bottom().y+VisibleRect::getVisibleRect().size.height/2); + _grossini->setPosition(VisibleRect::center().x, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height / 3); + _tamara->setPosition(VisibleRect::center().x, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height * 2 / 3); + _kathia->setPosition(VisibleRect::center().x, + VisibleRect::bottom().y + VisibleRect::getVisibleRect().size.height / 2); } void ActionsDemo::onExit() @@ -138,29 +141,29 @@ void ActionsDemo::centerSprites(unsigned int numberOfSprites) { auto s = Director::getInstance()->getWinSize(); - if( numberOfSprites == 0 ) + if (numberOfSprites == 0) { _tamara->setVisible(false); _kathia->setVisible(false); _grossini->setVisible(false); - } - else if ( numberOfSprites == 1 ) + } + else if (numberOfSprites == 1) { _tamara->setVisible(false); _kathia->setVisible(false); - _grossini->setPosition(s.width/2, s.height/2); + _grossini->setPosition(s.width / 2, s.height / 2); } - else if( numberOfSprites == 2 ) - { - _kathia->setPosition(s.width/3, s.height/2); - _tamara->setPosition(2*s.width/3, s.height/2); + else if (numberOfSprites == 2) + { + _kathia->setPosition(s.width / 3, s.height / 2); + _tamara->setPosition(2 * s.width / 3, s.height / 2); _grossini->setVisible(false); - } - else if( numberOfSprites == 3 ) + } + else if (numberOfSprites == 3) { - _grossini->setPosition(s.width/2, s.height/2); - _tamara->setPosition(s.width/4, s.height/2); - _kathia->setPosition(3 * s.width/4, s.height/2); + _grossini->setPosition(s.width / 2, s.height / 2); + _tamara->setPosition(s.width / 4, s.height / 2); + _kathia->setPosition(3 * s.width / 4, s.height / 2); } } @@ -168,23 +171,23 @@ void ActionsDemo::alignSpritesLeft(unsigned int numberOfSprites) { auto s = Director::getInstance()->getWinSize(); - if( numberOfSprites == 1 ) + if (numberOfSprites == 1) { _tamara->setVisible(false); _kathia->setVisible(false); - _grossini->setPosition(60, s.height/2); - } - else if( numberOfSprites == 2 ) - { - _kathia->setPosition(60, s.height/3); - _tamara->setPosition(60, 2*s.height/3); - _grossini->setVisible( false ); - } - else if( numberOfSprites == 3 ) + _grossini->setPosition(60, s.height / 2); + } + else if (numberOfSprites == 2) { - _grossini->setPosition(60, s.height/2); - _tamara->setPosition(60, 2*s.height/3); - _kathia->setPosition(60, s.height/3); + _kathia->setPosition(60, s.height / 3); + _tamara->setPosition(60, 2 * s.height / 3); + _grossini->setVisible(false); + } + else if (numberOfSprites == 3) + { + _grossini->setPosition(60, s.height / 2); + _tamara->setPosition(60, 2 * s.height / 3); + _kathia->setPosition(60, s.height / 3); } } @@ -201,13 +204,13 @@ void ActionMove::onEnter() auto s = Director::getInstance()->getWinSize(); - auto actionTo = MoveTo::create(2, Vec2(s.width-40, s.height-40)); - auto actionBy = MoveBy::create(2, Vec2(80.0f,80.0f)); + auto actionTo = MoveTo::create(2, Vec2(s.width - 40, s.height - 40)); + auto actionBy = MoveBy::create(2, Vec2(80.0f, 80.0f)); auto actionByBack = actionBy->reverse(); - _tamara->runAction( actionTo); - _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); - _kathia->runAction(MoveTo::create(1, Vec2(40.0f,40.0f))); + _tamara->runAction(actionTo); + _grossini->runAction(Sequence::create(actionBy, actionByBack, nullptr)); + _kathia->runAction(MoveTo::create(1, Vec2(40.0f, 40.0f))); } std::string ActionMove::subtitle() const @@ -223,18 +226,18 @@ std::string ActionMove::subtitle() const void ActionMove3D::onEnter() { ActionsDemo::onEnter(); - + centerSprites(3); - + auto s = Director::getInstance()->getWinSize(); - - _tamara->setPosition3D(Vec3(s.width-40, s.height-40, 0.0f)); + + _tamara->setPosition3D(Vec3(s.width - 40, s.height - 40, 0.0f)); _kathia->setPosition3D(Vec3(40.0f, 40.0f, 0.0f)); - - auto actionTo = MoveTo::create(2, Vec3(s.width-40, s.height-40, -100.0f)); - auto actionBy = MoveBy::create(2, Vec3(80.0f, 80.0f, -100.0f)); + + auto actionTo = MoveTo::create(2, Vec3(s.width - 40, s.height - 40, -100.0f)); + auto actionBy = MoveBy::create(2, Vec3(80.0f, 80.0f, -100.0f)); auto actionByBack = actionBy->reverse(); - + _tamara->runAction(actionTo); _grossini->runAction(Sequence::create(actionBy, actionByBack, nullptr)); _kathia->runAction(MoveTo::create(1, Vec3(40.0f, 40.0f, -100.0f))); @@ -256,13 +259,13 @@ void ActionScale::onEnter() centerSprites(3); - auto actionTo = ScaleTo::create(2.0f, 0.5f); - auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f); + auto actionTo = ScaleTo::create(2.0f, 0.5f); + auto actionBy = ScaleBy::create(2.0f, 1.0f, 10.0f); auto actionBy2 = ScaleBy::create(2.0f, 5.0f, 1.0f); - _grossini->runAction( actionTo); - _tamara->runAction( Sequence::create(actionBy, actionBy->reverse(), nullptr)); - _kathia->runAction( Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); + _grossini->runAction(actionTo); + _tamara->runAction(Sequence::create(actionBy, actionBy->reverse(), nullptr)); + _kathia->runAction(Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); } std::string ActionScale::subtitle() const @@ -281,10 +284,10 @@ void ActionSkew::onEnter() centerSprites(3); - auto actionTo = SkewTo::create(2, 37.2f, -37.2f); + auto actionTo = SkewTo::create(2, 37.2f, -37.2f); auto actionToBack = SkewTo::create(2, 0, 0); - auto actionBy = SkewBy::create(2, 0.0f, -90.0f); - auto actionBy2 = SkewBy::create(2, 45.0f, 45.0f); + auto actionBy = SkewBy::create(2, 0.0f, -90.0f); + auto actionBy2 = SkewBy::create(2, 45.0f, 45.0f); auto actionByBack = actionBy->reverse(); _tamara->runAction(Sequence::create(actionTo, actionToBack, nullptr)); @@ -305,17 +308,17 @@ void ActionRotationalSkew::onEnter() this->centerSprites(3); - auto actionTo = RotateTo::create(2, 180, 180); + auto actionTo = RotateTo::create(2, 180, 180); auto actionToBack = RotateTo::create(2, 0, 0); - auto actionBy = RotateBy::create(2, 0.0f, 360); + auto actionBy = RotateBy::create(2, 0.0f, 360); auto actionByBack = actionBy->reverse(); - auto actionBy2 = RotateBy::create(2, 360, 0); + auto actionBy2 = RotateBy::create(2, 360, 0); auto actionBy2Back = actionBy2->reverse(); - _tamara->runAction( Sequence::create(actionBy, actionByBack, nullptr) ); - _grossini->runAction( Sequence::create(actionTo, actionToBack, nullptr) ); - _kathia->runAction( Sequence::create(actionBy2, actionBy2Back, nullptr) ); + _tamara->runAction(Sequence::create(actionBy, actionByBack, nullptr)); + _grossini->runAction(Sequence::create(actionTo, actionToBack, nullptr)); + _kathia->runAction(Sequence::create(actionBy2, actionBy2Back, nullptr)); } std::string ActionRotationalSkew::subtitle() const @@ -323,9 +326,7 @@ std::string ActionRotationalSkew::subtitle() const return "RotationalSkewTo / RotationalSkewBy"; } - - -//ActionRotationalSkewVSStandardSkew +// ActionRotationalSkewVSStandardSkew void ActionRotationalSkewVSStandardSkew::onEnter() { ActionsDemo::onEnter(); @@ -338,33 +339,33 @@ void ActionRotationalSkewVSStandardSkew::onEnter() Size boxSize(100.0f, 100.0f); - auto box = LayerColor::create(Color4B(255,255,0,255)); - box->setAnchorPoint(Vec2(0.5f,0.5f)); - box->setContentSize( boxSize ); + auto box = LayerColor::create(Color4B(255, 255, 0, 255)); + box->setAnchorPoint(Vec2(0.5f, 0.5f)); + box->setContentSize(boxSize); box->setIgnoreAnchorPointForPosition(false); - box->setPosition(s.width/2, s.height - 100 - box->getContentSize().height/2); + box->setPosition(s.width / 2, s.height - 100 - box->getContentSize().height / 2); this->addChild(box); auto label = Label::createWithTTF("Standard cocos2d Skew", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/2, s.height - 100 + label->getContentSize().height); + label->setPosition(s.width / 2, s.height - 100 + label->getContentSize().height); this->addChild(label); - auto actionTo = SkewBy::create(2, 360, 0); + auto actionTo = SkewBy::create(2, 360, 0); auto actionToBack = SkewBy::create(2, -360, 0); box->runAction(Sequence::create(actionTo, actionToBack, nullptr)); - box = LayerColor::create(Color4B(255,255,0,255)); - box->setAnchorPoint(Vec2(0.5f,0.5f)); + box = LayerColor::create(Color4B(255, 255, 0, 255)); + box->setAnchorPoint(Vec2(0.5f, 0.5f)); box->setContentSize(boxSize); box->setIgnoreAnchorPointForPosition(false); - box->setPosition(s.width/2, s.height - 250 - box->getContentSize().height/2); + box->setPosition(s.width / 2, s.height - 250 - box->getContentSize().height / 2); this->addChild(box); label = Label::createWithTTF("Rotational Skew", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/2, s.height - 250 + label->getContentSize().height/2); + label->setPosition(s.width / 2, s.height - 250 + label->getContentSize().height / 2); this->addChild(label); - auto actionTo2 = RotateBy::create(2, 360, 0); + auto actionTo2 = RotateBy::create(2, 360, 0); auto actionToBack2 = RotateBy::create(2, -360, 0); box->runAction(Sequence::create(actionTo2, actionToBack2, nullptr)); } @@ -390,7 +391,7 @@ void ActionSkewRotateScale::onEnter() box->setContentSize(boxSize); static float markrside = 10.0f; - auto uL = LayerColor::create(Color4B(255, 0, 0, 255)); + auto uL = LayerColor::create(Color4B(255, 0, 0, 255)); box->addChild(uL); uL->setContentSize(Size(markrside, markrside)); uL->setPosition(0.f, boxSize.height - markrside); @@ -403,13 +404,13 @@ void ActionSkewRotateScale::onEnter() uR->setAnchorPoint(Vec2(0.0f, 0.0f)); addChild(box); - auto actionTo = SkewTo::create(2, 0.f, 2.f); - auto rotateTo = RotateTo::create(2, 61.0f); + auto actionTo = SkewTo::create(2, 0.f, 2.f); + auto rotateTo = RotateTo::create(2, 61.0f); auto actionScaleTo = ScaleTo::create(2, -0.44f, 0.47f); auto actionScaleToBack = ScaleTo::create(2, 1.0f, 1.0f); - auto rotateToBack = RotateTo::create(2, 0); - auto actionToBack = SkewTo::create(2, 0, 0); + auto rotateToBack = RotateTo::create(2, 0); + auto actionToBack = SkewTo::create(2, 0, 0); box->runAction(Sequence::create(actionTo, actionToBack, nullptr)); box->runAction(Sequence::create(rotateTo, rotateToBack, nullptr)); @@ -432,16 +433,16 @@ void ActionRotate::onEnter() centerSprites(3); - auto actionTo = RotateTo::create( 2, 45); - auto actionTo2 = RotateTo::create( 2, -45); - auto actionTo0 = RotateTo::create(2 , 0); - _tamara->runAction( Sequence::create(actionTo, actionTo0, nullptr)); + auto actionTo = RotateTo::create(2, 45); + auto actionTo2 = RotateTo::create(2, -45); + auto actionTo0 = RotateTo::create(2, 0); + _tamara->runAction(Sequence::create(actionTo, actionTo0, nullptr)); - auto actionBy = RotateBy::create(2 , 360); + auto actionBy = RotateBy::create(2, 360); auto actionByBack = actionBy->reverse(); - _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); + _grossini->runAction(Sequence::create(actionBy, actionByBack, nullptr)); - _kathia->runAction( Sequence::create(actionTo2, actionTo0->clone(), nullptr)); + _kathia->runAction(Sequence::create(actionTo2, actionTo0->clone(), nullptr)); } std::string ActionRotate::subtitle() const @@ -462,11 +463,11 @@ void ActionRotateBy3D::onEnter() auto actionBy1 = RotateBy::create(4, Vec3(360.0f, 0.0f, 0.0f)); auto actionBy2 = RotateBy::create(4, Vec3(0.0f, 360.0f, 0.0f)); - auto actionBy3 = RotateBy::create(4 ,Vec3(0.0f, 0.0f, 360.0f)); + auto actionBy3 = RotateBy::create(4, Vec3(0.0f, 0.0f, 360.0f)); - _tamara->runAction( Sequence::create(actionBy1, actionBy1->reverse(), nullptr)); - _grossini->runAction( Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); - _kathia->runAction( Sequence::create(actionBy3, actionBy3->reverse(), nullptr)); + _tamara->runAction(Sequence::create(actionBy1, actionBy1->reverse(), nullptr)); + _grossini->runAction(Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); + _kathia->runAction(Sequence::create(actionBy3, actionBy3->reverse(), nullptr)); } std::string ActionRotateBy3D::subtitle() const @@ -485,14 +486,14 @@ void ActionJump::onEnter() centerSprites(3); - auto actionTo = JumpTo::create(2, Vec2(300,300), 50, 4); - auto actionBy = JumpBy::create(2, Vec2(300,0), 50, 4); - auto actionUp = JumpBy::create(2, Vec2(0,0), 80, 4); + auto actionTo = JumpTo::create(2, Vec2(300, 300), 50, 4); + auto actionBy = JumpBy::create(2, Vec2(300, 0), 50, 4); + auto actionUp = JumpBy::create(2, Vec2(0, 0), 80, 4); auto actionByBack = actionBy->reverse(); - _tamara->runAction( actionTo); - _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); - _kathia->runAction( RepeatForever::create(actionUp)); + _tamara->runAction(actionTo); + _grossini->runAction(Sequence::create(actionBy, actionByBack, nullptr)); + _kathia->runAction(RepeatForever::create(actionUp)); } std::string ActionJump::subtitle() const { @@ -519,32 +520,30 @@ void ActionBezier::onEnter() // sprite 1 ccBezierConfig bezier; - bezier.controlPoint_1 = Vec2(0.0f, s.height/2); - bezier.controlPoint_2 = Vec2(300.0f, -s.height/2); - bezier.endPosition = Vec2(300.0f,100.0f); + bezier.controlPoint_1 = Vec2(0.0f, s.height / 2); + bezier.controlPoint_2 = Vec2(300.0f, -s.height / 2); + bezier.endPosition = Vec2(300.0f, 100.0f); auto bezierForward = BezierBy::create(3, bezier); - auto bezierBack = bezierForward->reverse(); - auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, nullptr)); - + auto bezierBack = bezierForward->reverse(); + auto rep = RepeatForever::create(Sequence::create(bezierForward, bezierBack, nullptr)); // sprite 2 - _tamara->setPosition(80,160); - ccBezierConfig bezier2; - bezier2.controlPoint_1 = Vec2(100.0f, s.height/2); - bezier2.controlPoint_2 = Vec2(200.0f, -s.height/2); - bezier2.endPosition = Vec2(240.0f,160.0f); + _tamara->setPosition(80, 160); + ccBezierConfig bezier2; + bezier2.controlPoint_1 = Vec2(100.0f, s.height / 2); + bezier2.controlPoint_2 = Vec2(200.0f, -s.height / 2); + bezier2.endPosition = Vec2(240.0f, 160.0f); - auto bezierTo1 = BezierTo::create(2, bezier2); + auto bezierTo1 = BezierTo::create(2, bezier2); // sprite 3 - _kathia->setPosition(400,160); + _kathia->setPosition(400, 160); auto bezierTo2 = BezierTo::create(2, bezier2); - _grossini->runAction( rep); + _grossini->runAction(rep); _tamara->runAction(bezierTo1); _kathia->runAction(bezierTo2); - } std::string ActionBezier::subtitle() const @@ -566,11 +565,11 @@ void ActionBlink::onEnter() auto action1 = Blink::create(2, 10); auto action2 = Blink::create(2, 5); - _tamara->runAction( action1); + _tamara->runAction(action1); _kathia->runAction(action2); } -std::string ActionBlink::subtitle() const +std::string ActionBlink::subtitle() const { return "Blink"; } @@ -586,22 +585,22 @@ void ActionFade::onEnter() centerSprites(2); - _tamara->setOpacity( 0 ); - auto action1 = FadeIn::create(1.0f); + _tamara->setOpacity(0); + auto action1 = FadeIn::create(1.0f); auto action1Back = action1->reverse(); - auto action2 = FadeOut::create(1.0f); - auto action2Back = action2->reverse(); - auto action2BackReverse = action2Back->reverse(); + auto action2 = FadeOut::create(1.0f); + auto action2Back = action2->reverse(); + auto action2BackReverse = action2Back->reverse(); auto action2BackReverseReverse = action2BackReverse->reverse(); _tamara->setOpacity(122); - _tamara->runAction( Sequence::create( action1, action1Back, nullptr)); + _tamara->runAction(Sequence::create(action1, action1Back, nullptr)); _kathia->setOpacity(122); - _kathia->runAction( Sequence::create( action2, action2Back,action2BackReverse,action2BackReverseReverse, nullptr)); + _kathia->runAction(Sequence::create(action2, action2Back, action2BackReverse, action2BackReverseReverse, nullptr)); } -std::string ActionFade::subtitle() const +std::string ActionFade::subtitle() const { return "FadeIn / FadeOut"; } @@ -618,15 +617,15 @@ void ActionTint::onEnter() centerSprites(2); - auto action1 = TintTo::create(2, 255, 0, 255); - auto action2 = TintBy::create(2, -127, -255, -127); + auto action1 = TintTo::create(2, 255, 0, 255); + auto action2 = TintBy::create(2, -127, -255, -127); auto action2Back = action2->reverse(); - _tamara->runAction( action1); - _kathia->runAction( Sequence::create( action2, action2Back, nullptr)); + _tamara->runAction(action1); + _kathia->runAction(Sequence::create(action2, action2Back, nullptr)); } -std::string ActionTint::subtitle() const +std::string ActionTint::subtitle() const { return "TintTo / TintBy"; } @@ -646,7 +645,7 @@ void ActionAnimate::onEnter() // Manual animation // auto animation = Animation::create(); - for( int i=1;i<15;i++) + for (int i = 1; i < 15; i++) { char szName[100] = {0}; sprintf(szName, "Images/grossini_dance_%02d.png", i); @@ -658,7 +657,7 @@ void ActionAnimate::onEnter() auto action = Animate::create(animation); _grossini->runAction(Sequence::create(action, action->reverse(), nullptr)); - + // // File animation // @@ -670,10 +669,10 @@ void ActionAnimate::onEnter() auto action2 = Animate::create(animation2); _tamara->runAction(Sequence::create(action2, action2->reverse(), nullptr)); - _frameDisplayedListener = EventListenerCustom::create(AnimationFrameDisplayedNotification, [](EventCustom * event){ + _frameDisplayedListener = EventListenerCustom::create(AnimationFrameDisplayedNotification, [](EventCustom* event) { auto userData = static_cast(event->getUserData()); - - log("target %p with data %s", userData->target, Value(userData->userInfo).getDescription().c_str()); + + log("target %p with data %s", userData->target, Value(userData->userInfo).getDescription().c_str()); }); _eventDispatcher->addEventListenerWithFixedPriority(_frameDisplayedListener, -1); @@ -685,7 +684,6 @@ void ActionAnimate::onEnter() auto animation3 = animation2->clone(); animation3->setLoops(4); - auto action3 = Animate::create(animation3); _kathia->runAction(action3); } @@ -717,10 +715,7 @@ void ActionSequence::onEnter() alignSpritesLeft(1); - auto action = Sequence::create( - MoveBy::create( 2, Vec2(240.0f,0.0f)), - RotateBy::create( 2, 540), - nullptr); + auto action = Sequence::create(MoveBy::create(2, Vec2(240.0f, 0.0f)), RotateBy::create(2, 540), nullptr); _grossini->runAction(action); } @@ -744,40 +739,37 @@ void ActionSequence2::onEnter() _grossini->setVisible(false); auto action = Sequence::create( - Place::create(Vec2(200.0f,200.0f)), - Show::create(), - MoveBy::create(1, Vec2(100.0f,0.0f)), - CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback1,this)), - CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback2,this,_grossini)), - CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback3,this,_grossini,0xbebabeba)), - nullptr); + Place::create(Vec2(200.0f, 200.0f)), Show::create(), MoveBy::create(1, Vec2(100.0f, 0.0f)), + CallFunc::create(CC_CALLBACK_0(ActionSequence2::callback1, this)), + CallFunc::create(CC_CALLBACK_0(ActionSequence2::callback2, this, _grossini)), + CallFunc::create(CC_CALLBACK_0(ActionSequence2::callback3, this, _grossini, 0xbebabeba)), nullptr); _grossini->runAction(action); } void ActionSequence2::callback1() { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 1 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*1,s.height/2); + label->setPosition(s.width / 4 * 1, s.height / 2); addChild(label); } void ActionSequence2::callback2(Node* sender) { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 2 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*2,s.height/2); + label->setPosition(s.width / 4 * 2, s.height / 2); addChild(label); } void ActionSequence2::callback3(Node* sender, int32_t data) { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 3 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*3,s.height/2); + label->setPosition(s.width / 4 * 3, s.height / 2); addChild(label); } @@ -799,7 +791,7 @@ void ActionSequence3::onEnter() alignSpritesLeft(1); // Uses Array API - auto action1 = MoveBy::create(2, Vec2(240.0f,0.0f)); + auto action1 = MoveBy::create(2, Vec2(240.0f, 0.0f)); auto action2 = RotateBy::create(2, 540); auto action3 = action1->reverse(); auto action4 = action2->reverse(); @@ -829,10 +821,8 @@ void ActionCallFuncN::onEnter() centerSprites(1); - auto action = Sequence::create( - MoveBy::create(2.0f, Vec2(150.0f,0.0f)), - CallFuncN::create( CC_CALLBACK_1(ActionCallFuncN::callback, this)), - nullptr); + auto action = Sequence::create(MoveBy::create(2.0f, Vec2(150.0f, 0.0f)), + CallFuncN::create(CC_CALLBACK_1(ActionCallFuncN::callback, this)), nullptr); _grossini->runAction(action); } @@ -847,9 +837,9 @@ std::string ActionCallFuncN::subtitle() const return "Grossini should jump after moving"; } -void ActionCallFuncN::callback(Node* sender ) +void ActionCallFuncN::callback(Node* sender) { - auto a = JumpBy::create(5, Vec2(0,0), 100, 5); + auto a = JumpBy::create(5, Vec2(0, 0), 100, 5); sender->runAction(a); } //------------------------------------------------------------------ @@ -865,9 +855,8 @@ void ActionCallFuncND::onEnter() centerSprites(1); auto action = Sequence::create( - MoveBy::create(2.0f, Vec2(200.0f,0.0f)), - CallFuncN::create( CC_CALLBACK_1(ActionCallFuncND::doRemoveFromParentAndCleanup, this, true)), - nullptr); + MoveBy::create(2.0f, Vec2(200.0f, 0.0f)), + CallFuncN::create(CC_CALLBACK_1(ActionCallFuncND::doRemoveFromParentAndCleanup, this, true)), nullptr); _grossini->runAction(action); } @@ -898,66 +887,59 @@ void ActionCallFunction::onEnter() centerSprites(3); + auto action1 = Sequence::create( + MoveBy::create(2, Vec2(200.0f, 0.0f)), CallFunc::create(std::bind(&ActionCallFunction::callback1, this)), + CallFunc::create( + // lambda + [&]() { + auto s = Director::getInstance()->getWinSize(); + auto label = Label::createWithTTF("called:lambda callback", "fonts/Marker Felt.ttf", 16.0f); + label->setPosition(s.width / 4 * 1, s.height / 2 - 40); + this->addChild(label); + }), + nullptr); + + auto action2 = + Sequence::create(ScaleBy::create(2, 2), FadeOut::create(2), + CallFunc::create(std::bind(&ActionCallFunction::callback2, this, _tamara)), nullptr); - auto action1 = Sequence::create( - MoveBy::create(2, Vec2(200.0f,0.0f)), - CallFunc::create( std::bind(&ActionCallFunction::callback1, this) ), - CallFunc::create( - // lambda - [&](){ - auto s = Director::getInstance()->getWinSize(); - auto label = Label::createWithTTF("called:lambda callback", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*1,s.height/2-40); - this->addChild(label); - } ), - nullptr); - - auto action2 = Sequence::create( - ScaleBy::create(2 , 2), - FadeOut::create(2), - CallFunc::create( std::bind(&ActionCallFunction::callback2, this, _tamara) ), - nullptr); - - auto action3 = Sequence::create( - RotateBy::create(3 , 360), - FadeOut::create(2), - CallFunc::create( std::bind(&ActionCallFunction::callback3, this, _kathia, 42) ), - nullptr); + auto action3 = + Sequence::create(RotateBy::create(3, 360), FadeOut::create(2), + CallFunc::create(std::bind(&ActionCallFunction::callback3, this, _kathia, 42)), nullptr); _grossini->runAction(action1); _tamara->runAction(action2); _kathia->runAction(action3); } - void ActionCallFunction::callback1() { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 1 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*1,s.height/2); + label->setPosition(s.width / 4 * 1, s.height / 2); addChild(label); } void ActionCallFunction::callback2(Node* sender) { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 2 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*2,s.height/2); + label->setPosition(s.width / 4 * 2, s.height / 2); addChild(label); - CCLOG("sender is: %p", sender); + CCLOG("sender is: %p", sender); } void ActionCallFunction::callback3(Node* sender, int32_t data) { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("callback 3 called", "fonts/Marker Felt.ttf", 16.0f); - label->setPosition(s.width/4*3,s.height/2); + label->setPosition(s.width / 4 * 3, s.height / 2); addChild(label); - CCLOG("target is: %p, data is: %d", sender, data); + CCLOG("target is: %p, data is: %d", sender, data); } std::string ActionCallFunction::subtitle() const @@ -976,10 +958,7 @@ void ActionSpawn::onEnter() alignSpritesLeft(1); - auto action = Spawn::create( - JumpBy::create(2, Vec2(300,0), 50, 4), - RotateBy::create( 2, 720), - nullptr); + auto action = Spawn::create(JumpBy::create(2, Vec2(300, 0), 50, 4), RotateBy::create(2, 720), nullptr); _grossini->runAction(action); } @@ -1001,8 +980,8 @@ void ActionSpawn2::onEnter() alignSpritesLeft(1); - auto action1 = JumpBy::create(2, Vec2(300,0), 50, 4); - auto action2 = RotateBy::create( 2, 720); + auto action1 = JumpBy::create(2, Vec2(300, 0), 50, 4); + auto action2 = RotateBy::create(2, 720); Vector array; array.pushBack(action1); @@ -1028,17 +1007,16 @@ void ActionRepeatForever::onEnter() centerSprites(1); - auto action = Sequence::create( - DelayTime::create(1), - CallFunc::create( std::bind( &ActionRepeatForever::repeatForever, this, _grossini) ), - nullptr); + auto action = + Sequence::create(DelayTime::create(1), + CallFunc::create(std::bind(&ActionRepeatForever::repeatForever, this, _grossini)), nullptr); _grossini->runAction(action); } void ActionRepeatForever::repeatForever(Node* sender) { - auto repeat = RepeatForever::create( RotateBy::create(1.0f, 360) ); + auto repeat = RepeatForever::create(RotateBy::create(1.0f, 360)); sender->runAction(repeat); } @@ -1048,7 +1026,6 @@ std::string ActionRepeatForever::subtitle() const return "CallFuncN + RepeatForever"; } - //------------------------------------------------------------------ // // ActionRotateToRepeat @@ -1060,11 +1037,11 @@ void ActionRotateToRepeat::onEnter() centerSprites(2); - auto act1 = RotateTo::create(1, 90); - auto act2 = RotateTo::create(1, 0); - auto seq = Sequence::create(act1, act2, nullptr); - auto rep1 = RepeatForever::create(seq); - auto rep2 = Repeat::create( seq->clone(), 10); + auto act1 = RotateTo::create(1, 90); + auto act2 = RotateTo::create(1, 0); + auto seq = Sequence::create(act1, act2, nullptr); + auto rep1 = RepeatForever::create(seq); + auto rep2 = Repeat::create(seq->clone(), 10); _tamara->runAction(rep1); _kathia->runAction(rep2); @@ -1086,8 +1063,8 @@ void ActionReverse::onEnter() alignSpritesLeft(1); - auto jump = JumpBy::create(2, Vec2(300,0), 50, 4); - auto action = Sequence::create( jump, jump->reverse(), nullptr); + auto jump = JumpBy::create(2, Vec2(300, 0), 50, 4); + auto action = Sequence::create(jump, jump->reverse(), nullptr); _grossini->runAction(action); } @@ -1097,7 +1074,6 @@ std::string ActionReverse::subtitle() const return "Reverse an action"; } - //------------------------------------------------------------------ // // ActionDelayTime @@ -1109,8 +1085,8 @@ void ActionDelayTime::onEnter() alignSpritesLeft(1); - auto move = MoveBy::create(1, Vec2(150.0f,0.0f)); - auto action = Sequence::create( move, DelayTime::create(2), move, nullptr); + auto move = MoveBy::create(1, Vec2(150.0f, 0.0f)); + auto action = Sequence::create(move, DelayTime::create(2), move, nullptr); _grossini->runAction(action); } @@ -1120,7 +1096,6 @@ std::string ActionDelayTime::subtitle() const return "DelayTime: m + delay + m"; } - //------------------------------------------------------------------ // // ActionReverseSequence @@ -1132,10 +1107,10 @@ void ActionReverseSequence::onEnter() alignSpritesLeft(1); - auto move1 = MoveBy::create(1, Vec2(250.0f,0.0f)); - auto move2 = MoveBy::create(1, Vec2(0.0f,50.0f)); - auto seq = Sequence::create( move1, move2, move1->reverse(), nullptr); - auto action = Sequence::create( seq, seq->reverse(), nullptr); + auto move1 = MoveBy::create(1, Vec2(250.0f, 0.0f)); + auto move2 = MoveBy::create(1, Vec2(0.0f, 50.0f)); + auto seq = Sequence::create(move1, move2, move1->reverse(), nullptr); + auto action = Sequence::create(seq, seq->reverse(), nullptr); _grossini->runAction(action); } @@ -1145,7 +1120,6 @@ std::string ActionReverseSequence::subtitle() const return "Reverse a sequence"; } - //------------------------------------------------------------------ // // ActionReverseSequence2 @@ -1157,27 +1131,25 @@ void ActionReverseSequence2::onEnter() alignSpritesLeft(2); - // Test: // Sequence should work both with IntervalAction and InstantActions - auto move1 = MoveBy::create(1, Vec2(250.0f,0.0f)); - auto move2 = MoveBy::create(1, Vec2(0.0f,50.0f)); - auto tog1 = ToggleVisibility::create(); - auto tog2 = ToggleVisibility::create(); - auto seq = Sequence::create( move1, tog1, move2, tog2, move1->reverse(), nullptr); - auto action = Repeat::create(Sequence::create( seq, seq->reverse(), nullptr), 3); - + auto move1 = MoveBy::create(1, Vec2(250.0f, 0.0f)); + auto move2 = MoveBy::create(1, Vec2(0.0f, 50.0f)); + auto tog1 = ToggleVisibility::create(); + auto tog2 = ToggleVisibility::create(); + auto seq = Sequence::create(move1, tog1, move2, tog2, move1->reverse(), nullptr); + auto action = Repeat::create(Sequence::create(seq, seq->reverse(), nullptr), 3); // Test: // Also test that the reverse of Hide is Show, and vice-versa _kathia->runAction(action); - auto move_tamara = MoveBy::create(1, Vec2(100.0f,0.0f)); - auto move_tamara2 = MoveBy::create(1, Vec2(50.0f,0.0f)); - auto hide = Hide::create(); - auto seq_tamara = Sequence::create( move_tamara, hide, move_tamara2, nullptr); - auto seq_back = seq_tamara->reverse(); - _tamara->runAction( Sequence::create( seq_tamara, seq_back, nullptr)); + auto move_tamara = MoveBy::create(1, Vec2(100.0f, 0.0f)); + auto move_tamara2 = MoveBy::create(1, Vec2(50.0f, 0.0f)); + auto hide = Hide::create(); + auto seq_tamara = Sequence::create(move_tamara, hide, move_tamara2, nullptr); + auto seq_back = seq_tamara->reverse(); + _tamara->runAction(Sequence::create(seq_tamara, seq_back, nullptr)); } std::string ActionReverseSequence2::subtitle() const { @@ -1195,14 +1167,9 @@ void ActionRepeat::onEnter() alignSpritesLeft(2); - - auto a1 = MoveBy::create(1, Vec2(150.0f,0.0f)); - auto action1 = Repeat::create( - Sequence::create( Place::create(Vec2(60.0f,60.0f)), a1, nullptr) , - 3); - auto action2 = RepeatForever::create( - Sequence::create(a1->clone(), a1->reverse(), nullptr) - ); + auto a1 = MoveBy::create(1, Vec2(150.0f, 0.0f)); + auto action1 = Repeat::create(Sequence::create(Place::create(Vec2(60.0f, 60.0f)), a1, nullptr), 3); + auto action2 = RepeatForever::create(Sequence::create(a1->clone(), a1->reverse(), nullptr)); _kathia->runAction(action1); _tamara->runAction(action2); @@ -1225,41 +1192,32 @@ void ActionOrbit::onEnter() Director::getInstance()->setProjection(Director::Projection::_2D); centerSprites(3); - auto orbit1 = OrbitCamera::create(2,1, 0, 0, 180, 0, 0); - auto action1 = Sequence::create( - orbit1, - orbit1->reverse(), - nullptr); + auto orbit1 = OrbitCamera::create(2, 1, 0, 0, 180, 0, 0); + auto action1 = Sequence::create(orbit1, orbit1->reverse(), nullptr); - auto orbit2 = OrbitCamera::create(2,1, 0, 0, 180, -45, 0); - auto action2 = Sequence::create( - orbit2, - orbit2->reverse(), - nullptr); + auto orbit2 = OrbitCamera::create(2, 1, 0, 0, 180, -45, 0); + auto action2 = Sequence::create(orbit2, orbit2->reverse(), nullptr); - auto orbit3 = OrbitCamera::create(2,1, 0, 0, 180, 90, 0); - auto action3 = Sequence::create( - orbit3, - orbit3->reverse(), - nullptr); + auto orbit3 = OrbitCamera::create(2, 1, 0, 0, 180, 90, 0); + auto action3 = Sequence::create(orbit3, orbit3->reverse(), nullptr); _kathia->runAction(RepeatForever::create(action1)); _tamara->runAction(RepeatForever::create(action2)); _grossini->runAction(RepeatForever::create(action3)); - auto move = MoveBy::create(3, Vec2(100.0f,-100.0f)); + auto move = MoveBy::create(3, Vec2(100.0f, -100.0f)); auto move_back = move->reverse(); - auto seq = Sequence::create(move, move_back, nullptr); - auto rfe = RepeatForever::create(seq); + auto seq = Sequence::create(move, move_back, nullptr); + auto rfe = RepeatForever::create(seq); _kathia->runAction(rfe); - _tamara->runAction(rfe->clone() ); - _grossini->runAction( rfe->clone() ); + _tamara->runAction(rfe->clone()); + _grossini->runAction(rfe->clone()); } void ActionOrbit::onExit() { ActionsDemo::onExit(); - + Director::getInstance()->setProjection(Director::Projection::DEFAULT); } @@ -1281,19 +1239,19 @@ void ActionFollow::onEnter() auto s = Director::getInstance()->getWinSize(); DrawNode* drawNode = DrawNode::create(); - float x = s.width*2 - 100; - float y = s.height; - - Vec2 vertices[] = { Vec2(5.0f,5.0f), Vec2(x-5,5.0f), Vec2(x-5,y-5), Vec2(5.0f,y-5) }; - drawNode->drawPoly(vertices, 4, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); - + float x = s.width * 2 - 100; + float y = s.height; + + Vec2 vertices[] = {Vec2(5.0f, 5.0f), Vec2(x - 5, 5.0f), Vec2(x - 5, y - 5), Vec2(5.0f, y - 5)}; + drawNode->drawPoly(vertices, 4, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + this->addChild(drawNode); _grossini->setPosition(-200.0f, s.height / 2); - auto move = MoveBy::create(2, Vec2(s.width * 3, 0.0f)); + auto move = MoveBy::create(2, Vec2(s.width * 3, 0.0f)); auto move_back = move->reverse(); - auto seq = Sequence::create(move, move_back, nullptr); - auto rep = RepeatForever::create(seq); + auto seq = Sequence::create(move, move_back, nullptr); + auto rep = RepeatForever::create(seq); _grossini->runAction(rep); @@ -1313,31 +1271,32 @@ std::string ActionFollow::subtitle() const void ActionFollowWithOffset::onEnter() { ActionsDemo::onEnter(); - + centerSprites(1); auto s = Director::getInstance()->getWinSize(); - + DrawNode* drawNode = DrawNode::create(); - float x = s.width*2 - 100; - float y = s.height; - - Vec2 vertices[] = { Vec2(5.0f,5.0f), Vec2(x-5,5.0f), Vec2(x-5,y-5), Vec2(5.0f,y-5) }; - drawNode->drawPoly(vertices, 4, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); - + float x = s.width * 2 - 100; + float y = s.height; + + Vec2 vertices[] = {Vec2(5.0f, 5.0f), Vec2(x - 5, 5.0f), Vec2(x - 5, y - 5), Vec2(5.0f, y - 5)}; + drawNode->drawPoly(vertices, 4, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + this->addChild(drawNode); - + _grossini->setPosition(-200, s.height / 2); - auto move = MoveBy::create(2, Vec2(s.width * 3, 1.0f)); + auto move = MoveBy::create(2, Vec2(s.width * 3, 1.0f)); auto move_back = move->reverse(); - auto seq = Sequence::create(move, move_back, nullptr); - auto rep = RepeatForever::create(seq); - + auto seq = Sequence::create(move, move_back, nullptr); + auto rep = RepeatForever::create(seq); + _grossini->runAction(rep); - - //sample offset values set - float verticalOffset = -900; + + // sample offset values set + float verticalOffset = -900; float horizontalOffset = 200; - this->runAction(Follow::createWithOffset(_grossini, horizontalOffset,verticalOffset,Rect(0.0f, 0.0f, s.width * 2 - 100, s.height))); + this->runAction(Follow::createWithOffset(_grossini, horizontalOffset, verticalOffset, + Rect(0.0f, 0.0f, s.width * 2 - 100, s.height))); } std::string ActionFollowWithOffset::subtitle() const @@ -1345,22 +1304,20 @@ std::string ActionFollowWithOffset::subtitle() const return "Follow action with horizontal and vertical offset"; } - void ActionTargeted::onEnter() { ActionsDemo::onEnter(); centerSprites(2); - - auto jump1 = JumpBy::create(2,Vec2::ZERO,100,3); + auto jump1 = JumpBy::create(2, Vec2::ZERO, 100, 3); auto jump2 = jump1->clone(); - auto rot1 = RotateBy::create(1, 360); - auto rot2 = rot1->clone(); + auto rot1 = RotateBy::create(1, 360); + auto rot2 = rot1->clone(); auto t1 = TargetedAction::create(_kathia, jump2); auto t2 = TargetedAction::create(_kathia, rot2); - auto seq = Sequence::create(jump1, t1, rot1, t2, nullptr); + auto seq = Sequence::create(jump1, t1, rot1, t2, nullptr); auto always = RepeatForever::create(seq); _tamara->runAction(always); @@ -1376,24 +1333,22 @@ std::string ActionTargeted::subtitle() const return "Action that runs on another target. Useful for sequences"; } - void ActionTargetedReverse::onEnter() { ActionsDemo::onEnter(); centerSprites(2); - - - auto jump1 = JumpBy::create(2,Vec2::ZERO,100,3); + + auto jump1 = JumpBy::create(2, Vec2::ZERO, 100, 3); auto jump2 = jump1->clone(); - auto rot1 = RotateBy::create(1, 360); - auto rot2 = rot1->clone(); - + auto rot1 = RotateBy::create(1, 360); + auto rot2 = rot1->clone(); + auto t1 = TargetedAction::create(_kathia, jump2); auto t2 = TargetedAction::create(_kathia, rot2); - - auto seq = Sequence::create(jump1, t1->reverse(), rot1, t2->reverse(), nullptr); + + auto seq = Sequence::create(jump1, t1->reverse(), rot1, t2->reverse(), nullptr); auto always = RepeatForever::create(seq); - + _tamara->runAction(always); } @@ -1412,15 +1367,15 @@ std::string ActionTargetedReverse::subtitle() const void ActionStacked::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(0); - - auto listener = EventListenerTouchAllAtOnce::create(); + + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesEnded = CC_CALLBACK_2(ActionStacked::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + auto s = Director::getInstance()->getWinSize(); - this->addNewSpriteWithCoords(Vec2(s.width/2, s.height/2)); + this->addNewSpriteWithCoords(Vec2(s.width / 2, s.height / 2)); } void ActionStacked::addNewSpriteWithCoords(Vec2 p) @@ -1428,27 +1383,28 @@ void ActionStacked::addNewSpriteWithCoords(Vec2 p) int idx = static_cast(CCRANDOM_0_1() * 1400 / 100); float w = 85.0f; float h = 121.0f; - float x = (idx%5) * w; - float y = (idx/5) * h; - - auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x,y,w,h)); - + float x = (idx % 5) * w; + float y = (idx / 5) * h; + + auto sprite = Sprite::create("Images/grossini_dance_atlas.png", Rect(x, y, w, h)); + sprite->setPosition(p); this->addChild(sprite); - + this->runActionsInSprite(sprite); } -void ActionStacked::runActionsInSprite(Sprite *sprite) +void ActionStacked::runActionsInSprite(Sprite* sprite) { // override me } void ActionStacked::onTouchesEnded(const std::vector& touches, Event* event) { - for ( auto &touch: touches ) { + for (auto& touch : touches) + { auto location = touch->getLocation(); - addNewSpriteWithCoords( location ); + addNewSpriteWithCoords(location); } } @@ -1464,25 +1420,16 @@ std::string ActionStacked::subtitle() const // ActionMoveStacked - -void ActionMoveStacked::runActionsInSprite(Sprite *sprite) +void ActionMoveStacked::runActionsInSprite(Sprite* sprite) { - sprite->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,10.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,-10.0f)), - nullptr))); - - auto action = MoveBy::create(2.0f, Vec2(400.0f,0.0f)); + sprite->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 10.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, -10.0f)), nullptr))); + + auto action = MoveBy::create(2.0f, Vec2(400.0f, 0.0f)); auto action_back = action->reverse(); - - sprite->runAction( - RepeatForever::create( - Sequence::create(action, action_back, nullptr) - )); -} + sprite->runAction(RepeatForever::create(Sequence::create(action, action_back, nullptr))); +} std::string ActionMoveStacked::title() const { @@ -1491,22 +1438,15 @@ std::string ActionMoveStacked::title() const // ActionMoveJumpStacked -void ActionMoveJumpStacked::runActionsInSprite(Sprite *sprite) +void ActionMoveJumpStacked::runActionsInSprite(Sprite* sprite) { - sprite->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10,2)), - MoveBy::create(0.05f, Vec2(-10,-2)), - nullptr))); - - auto jump = JumpBy::create(2.0f, Vec2(400,0), 100, 5); + sprite->runAction(RepeatForever::create( + Sequence::create(MoveBy::create(0.05f, Vec2(10, 2)), MoveBy::create(0.05f, Vec2(-10, -2)), nullptr))); + + auto jump = JumpBy::create(2.0f, Vec2(400, 0), 100, 5); auto jump_back = jump->reverse(); - - sprite->runAction( - RepeatForever::create( - Sequence::create(jump, jump_back, nullptr) - )); + + sprite->runAction(RepeatForever::create(Sequence::create(jump, jump_back, nullptr))); } std::string ActionMoveJumpStacked::title() const @@ -1516,28 +1456,24 @@ std::string ActionMoveJumpStacked::title() const // ActionMoveBezierStacked -void ActionMoveBezierStacked::runActionsInSprite(Sprite *sprite) +void ActionMoveBezierStacked::runActionsInSprite(Sprite* sprite) { auto s = Director::getInstance()->getWinSize(); - + // sprite 1 ccBezierConfig bezier; - bezier.controlPoint_1 = Vec2(0.0f, s.height/2); - bezier.controlPoint_2 = Vec2(300.0f, -s.height/2); - bezier.endPosition = Vec2(300.0f,100.0f); - + bezier.controlPoint_1 = Vec2(0.0f, s.height / 2); + bezier.controlPoint_2 = Vec2(300.0f, -s.height / 2); + bezier.endPosition = Vec2(300.0f, 100.0f); + auto bezierForward = BezierBy::create(3, bezier); - auto bezierBack = bezierForward->reverse(); - auto seq = Sequence::create(bezierForward, bezierBack, nullptr); - auto rep = RepeatForever::create(seq); + auto bezierBack = bezierForward->reverse(); + auto seq = Sequence::create(bezierForward, bezierBack, nullptr); + auto rep = RepeatForever::create(seq); sprite->runAction(rep); - - sprite->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,0.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,0.0f)), - nullptr))); + + sprite->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 0.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, 0.0f)), nullptr))); } std::string ActionMoveBezierStacked::title() const @@ -1545,92 +1481,81 @@ std::string ActionMoveBezierStacked::title() const return "Stacked Move + Bezier actions"; } - // ActionCatmullRomStacked void ActionCatmullRomStacked::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(2); - + auto s = Director::getInstance()->getWinSize(); - + // // sprite 1 (By) // // startPosition can be any coordinate, but since the movement // is relative to the Catmull Rom curve, it is better to start with (0,0). // - - _tamara->setPosition(50,50); - + + _tamara->setPosition(50, 50); + auto array = PointArray::create(20); - - array->addControlPoint(Vec2(0.0f,0.0f)); - array->addControlPoint(Vec2(80.0f,80.0f)); - array->addControlPoint(Vec2(s.width-80,80.0f)); - array->addControlPoint(Vec2(s.width-80,s.height-80.0f)); - array->addControlPoint(Vec2(80.0f,s.height-80.0f)); - array->addControlPoint(Vec2(80.0f,80.0f)); - array->addControlPoint(Vec2(s.width/2, s.height/2)); - - auto action = CatmullRomBy::create(3, array); + + array->addControlPoint(Vec2(0.0f, 0.0f)); + array->addControlPoint(Vec2(80.0f, 80.0f)); + array->addControlPoint(Vec2(s.width - 80, 80.0f)); + array->addControlPoint(Vec2(s.width - 80, s.height - 80.0f)); + array->addControlPoint(Vec2(80.0f, s.height - 80.0f)); + array->addControlPoint(Vec2(80.0f, 80.0f)); + array->addControlPoint(Vec2(s.width / 2, s.height / 2)); + + auto action = CatmullRomBy::create(3, array); auto reverse = action->reverse(); - + auto seq = Sequence::create(action, reverse, nullptr); - + _tamara->runAction(seq); - - _tamara->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,0.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,0.0f)), - nullptr))); - + + _tamara->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 0.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, 0.0f)), nullptr))); + auto drawNode1 = DrawNode::create(); - drawNode1->setPosition(Vec2(50.0f,50.0f)); + drawNode1->setPosition(Vec2(50.0f, 50.0f)); drawNode1->drawCatmullRom(array, 50, Color4F(1.0f, 1.0f, 0.0f, 0.5f)); this->addChild(drawNode1); - + // // sprite 2 (To) // // The startPosition is not important here, because it uses a "To" action. // The initial position will be the 1st point of the Catmull Rom path // - + auto array2 = PointArray::create(20); - - array2->addControlPoint(Vec2(s.width/2, 30.0f)); - array2->addControlPoint(Vec2(s.width-80,30.0f)); - array2->addControlPoint(Vec2(s.width-80.0f,s.height-80.0f)); - array2->addControlPoint(Vec2(s.width/2,s.height-80.0f)); - array2->addControlPoint(Vec2(s.width/2, 30.0f)); - - auto action2 = CatmullRomTo::create(3, array2); + + array2->addControlPoint(Vec2(s.width / 2, 30.0f)); + array2->addControlPoint(Vec2(s.width - 80, 30.0f)); + array2->addControlPoint(Vec2(s.width - 80.0f, s.height - 80.0f)); + array2->addControlPoint(Vec2(s.width / 2, s.height - 80.0f)); + array2->addControlPoint(Vec2(s.width / 2, 30.0f)); + + auto action2 = CatmullRomTo::create(3, array2); auto reverse2 = action2->reverse(); - + auto seq2 = Sequence::create(action2, reverse2, nullptr); - + _kathia->runAction(seq2); - - _kathia->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,0.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,0.0f)), - nullptr))); - + + _kathia->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 0.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, 0.0f)), nullptr))); + auto drawNode2 = DrawNode::create(); drawNode2->drawCatmullRom(array2, 50, Color4F(1.0, 0.0, 0.0, 0.5)); this->addChild(drawNode2); } -ActionCatmullRomStacked::~ActionCatmullRomStacked() -{ -} +ActionCatmullRomStacked::~ActionCatmullRomStacked() {} std::string ActionCatmullRomStacked::title() const { @@ -1642,83 +1567,71 @@ std::string ActionCatmullRomStacked::subtitle() const return "MoveBy + CatmullRom at the same time in the same sprite"; } - // ActionCardinalSplineStacked void ActionCardinalSplineStacked::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(2); - + auto s = Director::getInstance()->getWinSize(); - + auto array = PointArray::create(20); - + array->addControlPoint(Vec2(0.0f, 0.0f)); - array->addControlPoint(Vec2(s.width/2-30,0.0f)); - array->addControlPoint(Vec2(s.width/2-30,s.height-80.0f)); - array->addControlPoint(Vec2(0.0f, s.height-80.0f)); + array->addControlPoint(Vec2(s.width / 2 - 30, 0.0f)); + array->addControlPoint(Vec2(s.width / 2 - 30, s.height - 80.0f)); + array->addControlPoint(Vec2(0.0f, s.height - 80.0f)); array->addControlPoint(Vec2(0.0f, 0.0f)); - - + // // sprite 1 (By) // // Spline with no tension (tension==0) // - auto action = CardinalSplineBy::create(3, array, 0); + auto action = CardinalSplineBy::create(3, array, 0); auto reverse = action->reverse(); - + auto seq = Sequence::create(action, reverse, nullptr); - - _tamara->setPosition(50,50); + + _tamara->setPosition(50, 50); _tamara->runAction(seq); - - _tamara->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,0.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,0.0f)), - nullptr))); - + + _tamara->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 0.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, 0.0f)), nullptr))); + auto drawNode1 = DrawNode::create(); - drawNode1->setPosition(Vec2(50.0f,50.0f)); + drawNode1->setPosition(Vec2(50.0f, 50.0f)); drawNode1->drawCardinalSpline(array, 0, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f)); this->addChild(drawNode1); - + // // sprite 2 (By) // // Spline with high tension (tension==1) // - - auto *action2 = CardinalSplineBy::create(3, array, 1); + + auto* action2 = CardinalSplineBy::create(3, array, 1); auto reverse2 = action2->reverse(); - + auto seq2 = Sequence::create(action2, reverse2, nullptr); - - _kathia->setPosition(s.width/2,50); - + + _kathia->setPosition(s.width / 2, 50); + _kathia->runAction(seq2); - - _kathia->runAction( - RepeatForever::create( - Sequence::create( - MoveBy::create(0.05f, Vec2(10.0f,0.0f)), - MoveBy::create(0.05f, Vec2(-10.0f,0.0f)), - nullptr))); - + + _kathia->runAction(RepeatForever::create(Sequence::create(MoveBy::create(0.05f, Vec2(10.0f, 0.0f)), + MoveBy::create(0.05f, Vec2(-10.0f, 0.0f)), nullptr))); + auto drawNode2 = DrawNode::create(); - drawNode2->setPosition(Vec2(s.width/2,50.0f)); + drawNode2->setPosition(Vec2(s.width / 2, 50.0f)); drawNode2->drawCardinalSpline(array, 1, 100, Color4F(0.0f, 0.0f, 1.0f, 1.0f)); this->addChild(drawNode2); } -ActionCardinalSplineStacked::~ActionCardinalSplineStacked() -{ -} +ActionCardinalSplineStacked::~ActionCardinalSplineStacked() {} std::string ActionCardinalSplineStacked::title() const { @@ -1740,11 +1653,12 @@ void Issue1305::onEnter() _spriteTmp->runAction(CallFunc::create(std::bind(&Issue1305::log, this, _spriteTmp))); _spriteTmp->retain(); - scheduleOnce([&](float dt) { - _spriteTmp->setPosition(250,250); - addChild(_spriteTmp); - },2 ,"update_key"); - + scheduleOnce( + [&](float dt) { + _spriteTmp->setPosition(250, 250); + addChild(_spriteTmp); + }, + 2, "update_key"); } void Issue1305::log(Node* sender) @@ -1775,10 +1689,10 @@ void Issue1305_2::onEnter() centerSprites(0); auto spr = Sprite::create("Images/grossini.png"); - spr->setPosition(200,200); + spr->setPosition(200, 200); addChild(spr); - auto act1 = MoveBy::create(2 ,Vec2(0.0f, 100.0f)); + auto act1 = MoveBy::create(2, Vec2(0.0f, 100.0f)); /* c++ can't support block, so we use CallFuncN instead. id act2 = [CallBlock actionWithBlock:^{ NSLog(@"1st block"); @@ -1797,19 +1711,18 @@ void Issue1305_2::onEnter() }); */ - auto act2 = CallFunc::create( std::bind( &Issue1305_2::printLog1, this)); + auto act2 = CallFunc::create(std::bind(&Issue1305_2::printLog1, this)); auto act3 = MoveBy::create(2, Vec2(0.0f, -100.0f)); - auto act4 = CallFunc::create( std::bind( &Issue1305_2::printLog2, this)); + auto act4 = CallFunc::create(std::bind(&Issue1305_2::printLog2, this)); auto act5 = MoveBy::create(2, Vec2(100.0f, -100.0f)); - auto act6 = CallFunc::create( std::bind( &Issue1305_2::printLog3, this)); + auto act6 = CallFunc::create(std::bind(&Issue1305_2::printLog3, this)); auto act7 = MoveBy::create(2, Vec2(-100.0f, 0.0f)); - auto act8 = CallFunc::create( std::bind( &Issue1305_2::printLog4, this)); + auto act8 = CallFunc::create(std::bind(&Issue1305_2::printLog4, this)); auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, nullptr); // [spr runAction:actF); - Director::getInstance()->getActionManager()->addAction(actF ,spr, false); - + Director::getInstance()->getActionManager()->addAction(actF, spr, false); } void Issue1305_2::printLog1() @@ -1892,7 +1805,6 @@ std::string Issue1288_2::subtitle() const return "Sprite should move 100 pixels, and stay there"; } - void Issue1327::onEnter() { ActionsDemo::onEnter(); @@ -1902,15 +1814,15 @@ void Issue1327::onEnter() spr->setPosition(100, 100); addChild(spr); - auto act1 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); + auto act1 = CallFunc::create(std::bind(&Issue1327::logSprRotation, this, spr)); auto act2 = RotateBy::create(0.25, 45); - auto act3 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); + auto act3 = CallFunc::create(std::bind(&Issue1327::logSprRotation, this, spr)); auto act4 = RotateBy::create(0.25, 45); - auto act5 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); + auto act5 = CallFunc::create(std::bind(&Issue1327::logSprRotation, this, spr)); auto act6 = RotateBy::create(0.25, 45); - auto act7 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); + auto act7 = CallFunc::create(std::bind(&Issue1327::logSprRotation, this, spr)); auto act8 = RotateBy::create(0.25, 45); - auto act9 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); + auto act9 = CallFunc::create(std::bind(&Issue1327::logSprRotation, this, spr)); auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, act9, nullptr); spr->runAction(actF); @@ -1931,7 +1843,7 @@ void Issue1327::logSprRotation(Sprite* sender) log("%f", sender->getRotation()); } -//Issue1398 +// Issue1398 void Issue1398::incrementInteger() { _testInteger++; @@ -1947,16 +1859,14 @@ void Issue1398::onEnter() log("testInt = %d", _testInteger); this->runAction( - Sequence::create( - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"1")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"2")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"3")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"4")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"5")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"6")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"7")), - CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"8")), - nullptr)); + Sequence::create(CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"1")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"2")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"3")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"4")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"5")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"6")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"7")), + CallFunc::create(std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"8")), nullptr)); } void Issue1398::incrementIntegerCallback(void* data) @@ -1979,22 +1889,16 @@ void Issue2599::onEnter() { ActionsDemo::onEnter(); this->centerSprites(0); - + _count = 0; log("before: count = %d", _count); - + log("start count up 50 times using Repeat action"); - auto delay = 1.0f / 50; + auto delay = 1.0f / 50; auto repeatAction = Repeat::create( - Sequence::createWithTwoActions( - CallFunc::create([&](){ this->_count++; }), - DelayTime::create(delay)), - 50); - this->runAction( - Sequence::createWithTwoActions( - repeatAction, - CallFunc::create([&]() { log("after: count = %d", this->_count); }) - )); + Sequence::createWithTwoActions(CallFunc::create([&]() { this->_count++; }), DelayTime::create(delay)), 50); + this->runAction(Sequence::createWithTwoActions( + repeatAction, CallFunc::create([&]() { log("after: count = %d", this->_count); }))); } std::string Issue2599::subtitle() const @@ -2012,22 +1916,22 @@ std::string Issue2599::title() const void ActionCatmullRom::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(2); - + auto s = Director::getInstance()->getWinSize(); - + // // sprite 1 (By) // // startPosition can be any coordinate, but since the movement // is relative to the Catmull Rom curve, it is better to start with (0,0). // - + _tamara->setPosition(50, 50); - + auto array = PointArray::create(20); - + array->addControlPoint(Vec2(0.0f, 0.0f)); array->addControlPoint(Vec2(80.0f, 80.0f)); array->addControlPoint(Vec2(s.width - 80, 80.0f)); @@ -2035,49 +1939,47 @@ void ActionCatmullRom::onEnter() array->addControlPoint(Vec2(80.0f, s.height - 80.0f)); array->addControlPoint(Vec2(80.0f, 80.0f)); array->addControlPoint(Vec2(s.width / 2, s.height / 2)); - - auto action = CatmullRomBy::create(3, array); + + auto action = CatmullRomBy::create(3, array); auto reverse = action->reverse(); - + auto seq = Sequence::create(action, reverse, nullptr); - + _tamara->runAction(seq); - + auto drawNode1 = DrawNode::create(); - drawNode1->setPosition(Vec2(50.0f,50.0f)); + drawNode1->setPosition(Vec2(50.0f, 50.0f)); drawNode1->drawCatmullRom(array, 50, Color4F(1.0f, 0.0f, 1.0f, 1.0f)); this->addChild(drawNode1); - + // // sprite 2 (To) // // The startPosition is not important here, because it uses a "To" action. // The initial position will be the 1st point of the Catmull Rom path - // - + // + auto array2 = PointArray::create(20); - + array2->addControlPoint(Vec2(s.width / 2, 30.0f)); - array2->addControlPoint(Vec2(s.width -80, 30.0f)); + array2->addControlPoint(Vec2(s.width - 80, 30.0f)); array2->addControlPoint(Vec2(s.width - 80, s.height - 80)); array2->addControlPoint(Vec2(s.width / 2, s.height - 80)); array2->addControlPoint(Vec2(s.width / 2, 30.0f)); - - auto action2 = CatmullRomTo::create(3, array2); + + auto action2 = CatmullRomTo::create(3, array2); auto reverse2 = action2->reverse(); - + auto seq2 = Sequence::create(action2, reverse2, nullptr); - + _kathia->runAction(seq2); - + auto drawNode2 = DrawNode::create(); drawNode2->drawCatmullRom(array2, 50, Color4F(0.0f, 1.0f, 1.0f, 1.0f)); this->addChild(drawNode2); } -ActionCatmullRom::~ActionCatmullRom() -{ -} +ActionCatmullRom::~ActionCatmullRom() {} std::string ActionCatmullRom::title() const { @@ -2094,61 +1996,59 @@ std::string ActionCatmullRom::subtitle() const void ActionCardinalSpline::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(2); - + auto s = Director::getInstance()->getWinSize(); - + auto array = PointArray::create(20); - + array->addControlPoint(Vec2(0.0f, 0.0f)); - array->addControlPoint(Vec2(s.width/2-30, 0.0f)); - array->addControlPoint(Vec2(s.width/2-30, s.height-80)); - array->addControlPoint(Vec2(0.0f, s.height-80)); + array->addControlPoint(Vec2(s.width / 2 - 30, 0.0f)); + array->addControlPoint(Vec2(s.width / 2 - 30, s.height - 80)); + array->addControlPoint(Vec2(0.0f, s.height - 80)); array->addControlPoint(Vec2(0.0f, 0.0f)); - + // // sprite 1 (By) // // Spline with no tension (tension==0) // - - auto action = CardinalSplineBy::create(3, array, 0); + + auto action = CardinalSplineBy::create(3, array, 0); auto reverse = action->reverse(); - + auto seq = Sequence::create(action, reverse, nullptr); - + _tamara->setPosition(50, 50); _tamara->runAction(seq); - + auto drawNode1 = DrawNode::create(); - drawNode1->setPosition(Vec2(50.0f,50.0f)); + drawNode1->setPosition(Vec2(50.0f, 50.0f)); drawNode1->drawCardinalSpline(array, 0, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f)); this->addChild(drawNode1); - + // // sprite 2 (By) // // Spline with high tension (tension==1) // - - auto action2 = CardinalSplineBy::create(3, array, 1); + + auto action2 = CardinalSplineBy::create(3, array, 1); auto reverse2 = action2->reverse(); - + auto seq2 = Sequence::create(action2, reverse2, nullptr); - - _kathia->setPosition(s.width/2, 50); + + _kathia->setPosition(s.width / 2, 50); _kathia->runAction(seq2); - + auto drawNode2 = DrawNode::create(); - drawNode2->setPosition(Vec2(s.width/2, 50.0f)); + drawNode2->setPosition(Vec2(s.width / 2, 50.0f)); drawNode2->drawCardinalSpline(array, 1, 100, Color4F(1.0f, 0.0f, 1.0f, 1.0f)); this->addChild(drawNode2); } -ActionCardinalSpline::~ActionCardinalSpline() -{ -} +ActionCardinalSpline::~ActionCardinalSpline() {} std::string ActionCardinalSpline::title() const { @@ -2163,41 +2063,37 @@ std::string ActionCardinalSpline::subtitle() const /** PauseResumeActions */ -PauseResumeActions::PauseResumeActions() -{ +PauseResumeActions::PauseResumeActions() {} -} - -PauseResumeActions::~PauseResumeActions() -{ - -} +PauseResumeActions::~PauseResumeActions() {} void PauseResumeActions::onEnter() { ActionsDemo::onEnter(); - + this->centerSprites(3); - + _tamara->runAction(RepeatForever::create(RotateBy::create(3.0f, 360.0f))); _grossini->runAction(RepeatForever::create(RotateBy::create(3.0f, -360.0f))); _kathia->runAction(RepeatForever::create(RotateBy::create(3.0f, 360.0f))); - - this->schedule([&](float dt){ - log("Pausing"); - auto director = Director::getInstance(); - _pausedTargets = director->getActionManager()->pauseAllRunningActions(); - } - ,3 ,false ,0 ,"pause_key"); + this->schedule( + [&](float dt) { + log("Pausing"); + auto director = Director::getInstance(); - this->schedule([&](float dt) { - log("Resuming"); - auto director = Director::getInstance(); - director->getActionManager()->resumeTargets(_pausedTargets); - _pausedTargets.clear(); - } - ,5 ,false ,0, "resume_key"); + _pausedTargets = director->getActionManager()->pauseAllRunningActions(); + }, + 3, false, 0, "pause_key"); + + this->schedule( + [&](float dt) { + log("Resuming"); + auto director = Director::getInstance(); + director->getActionManager()->resumeTargets(_pausedTargets); + _pausedTargets.clear(); + }, + 5, false, 0, "resume_key"); } std::string PauseResumeActions::title() const @@ -2213,11 +2109,11 @@ std::string PauseResumeActions::subtitle() const //------------------------------------------------------------------ // // ActionResize -// Works on all nodes where setContentSize is effective. +// Works on all nodes where setContentSize is effective. // But it's mostly useful for nodes where 9-slice is enabled // //------------------------------------------------------------------ -void ActionResize::onEnter() +void ActionResize::onEnter() { ActionsDemo::onEnter(); @@ -2227,10 +2123,13 @@ void ActionResize::onEnter() Size widgetSize = getContentSize(); - Text* alert = Text::create("ImageView Content ResizeTo ResizeBy action. \nTop: ResizeTo/ResizeBy on a 9-slice ImageView \nBottom: ScaleTo/ScaleBy on a 9-slice ImageView (for comparison)", "fonts/Marker Felt.ttf", 14); + Text* alert = Text::create( + "ImageView Content ResizeTo ResizeBy action. \nTop: ResizeTo/ResizeBy on a 9-slice ImageView \nBottom: " + "ScaleTo/ScaleBy on a 9-slice ImageView (for comparison)", + "fonts/Marker Felt.ttf", 14); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - alert->getContentSize().height * 1.125f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.125f)); addChild(alert); @@ -2239,14 +2138,13 @@ void ActionResize::onEnter() ImageView* imageViewResize = ImageView::create("cocosui/buttonHighlighted.png"); imageViewResize->setScale9Enabled(true); imageViewResize->setContentSize(Size(50.0f, 40.0f)); - imageViewResize->setPosition(Vec2((widgetSize.width / 2.0f) + offset.x, - (widgetSize.height / 2.0f) + offset.y)); + imageViewResize->setPosition(Vec2((widgetSize.width / 2.0f) + offset.x, (widgetSize.height / 2.0f) + offset.y)); auto resizeDown = cocos2d::ResizeTo::create(2.8f, Size(50.0f, 40.0f)); - auto resizeUp = cocos2d::ResizeTo::create(2.8f, Size(300.0f, 40.0f)); + auto resizeUp = cocos2d::ResizeTo::create(2.8f, Size(300.0f, 40.0f)); auto resizeByDown = cocos2d::ResizeBy::create(1.8f, Size(0.0f, -30.0f)); - auto resizeByUp = cocos2d::ResizeBy::create(1.8f, Size(0.0f, 30.0f)); + auto resizeByUp = cocos2d::ResizeBy::create(1.8f, Size(0.0f, 30.0f)); addChild(imageViewResize); auto rep = RepeatForever::create(Sequence::create(resizeUp, resizeDown, resizeByDown, resizeByUp, nullptr)); imageViewResize->runAction(rep); @@ -2255,20 +2153,20 @@ void ActionResize::onEnter() ImageView* imageViewScale = ImageView::create("cocosui/buttonHighlighted.png"); imageViewScale->setScale9Enabled(true); imageViewScale->setContentSize(Size(50.0f, 40.0f)); - imageViewScale->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f)); + imageViewScale->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); auto scaleDownScale = cocos2d::ScaleTo::create(2.8f, 1.0f); - auto scaleUpScale = cocos2d::ScaleTo::create(2.8f, 6.0f, 1.0f); + auto scaleUpScale = cocos2d::ScaleTo::create(2.8f, 6.0f, 1.0f); auto scaleByDownScale = cocos2d::ScaleBy::create(1.8f, 1.0f, 0.25f); - auto scaleByUpScale = cocos2d::ScaleBy::create(1.8f, 1.0f, 4.0f); + auto scaleByUpScale = cocos2d::ScaleBy::create(1.8f, 1.0f, 4.0f); addChild(imageViewScale); - auto rep2 = RepeatForever::create(Sequence::create(scaleUpScale, scaleDownScale, scaleByDownScale, scaleByUpScale, nullptr)); + auto rep2 = RepeatForever::create( + Sequence::create(scaleUpScale, scaleDownScale, scaleByDownScale, scaleByUpScale, nullptr)); imageViewScale->runAction(rep2); } -std::string ActionResize::subtitle() const +std::string ActionResize::subtitle() const { return "ResizeTo / ResizeBy"; } @@ -2280,23 +2178,19 @@ std::string ActionResize::subtitle() const //------------------------------------------------------------------ void ActionRemoveSelf::onEnter() { - ActionsDemo::onEnter(); + ActionsDemo::onEnter(); - alignSpritesLeft(1); + alignSpritesLeft(1); - auto action = Sequence::create( - MoveBy::create( 2, Vec2(240.0f,0.0f)), - RotateBy::create( 2, 540), - ScaleTo::create(1,0.1f), - RemoveSelf::create(), - nullptr); + auto action = Sequence::create(MoveBy::create(2, Vec2(240.0f, 0.0f)), RotateBy::create(2, 540), + ScaleTo::create(1, 0.1f), RemoveSelf::create(), nullptr); - _grossini->runAction(action); + _grossini->runAction(action); } std::string ActionRemoveSelf::subtitle() const { - return "Sequence: Move + Rotate + Scale + RemoveSelf"; + return "Sequence: Move + Rotate + Scale + RemoveSelf"; } //------------------------------------------------------------------ @@ -2312,31 +2206,28 @@ void ActionFloatTest::onEnter() auto s = Director::getInstance()->getWinSize(); - // create float action with duration and from to value, using lambda function we can easily animate any property of the Node. - auto actionFloat = ActionFloat::create(2.f, 0, 3, [this](float value) { - _tamara->setScale(value); - }); + // create float action with duration and from to value, using lambda function we can easily animate any property of + // the Node. + auto actionFloat = ActionFloat::create(2.f, 0, 3, [this](float value) { _tamara->setScale(value); }); float grossiniY = _grossini->getPositionY(); - auto actionFloat1 = ActionFloat::create(3.f, grossiniY, grossiniY + 50, [this](float value) { - _grossini->setPositionY(value); - }); + auto actionFloat1 = + ActionFloat::create(3.f, grossiniY, grossiniY + 50, [this](float value) { _grossini->setPositionY(value); }); - auto actionFloat2 = ActionFloat::create(3.f, 3, 1, [this] (float value) { - _kathia->setScale(value); - }); + auto actionFloat2 = ActionFloat::create(3.f, 3, 1, [this](float value) { _kathia->setScale(value); }); _tamara->runAction(actionFloat); _grossini->runAction(actionFloat1); _kathia->runAction(actionFloat2); } -void Issue14936_1::onEnter() { +void Issue14936_1::onEnter() +{ ActionsDemo::onEnter(); centerSprites(0); - auto origin = cocos2d::Director::getInstance()->getVisibleOrigin(); + auto origin = cocos2d::Director::getInstance()->getVisibleOrigin(); auto visibleSize = cocos2d::Director::getInstance()->getVisibleSize(); _count = 0; @@ -2345,7 +2236,7 @@ void Issue14936_1::onEnter() { counterLabel->setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2); addChild(counterLabel); - auto func = CallFunc::create([this, counterLabel]{ + auto func = CallFunc::create([this, counterLabel] { _count++; std::ostringstream os; os << _count; @@ -2355,18 +2246,20 @@ void Issue14936_1::onEnter() { runAction(Spawn::create(func, func, nullptr)); } -std::string Issue14936_1::subtitle() const { +std::string Issue14936_1::subtitle() const +{ return "Counter should be equal 2"; } -void Issue14936_2::onEnter() { +void Issue14936_2::onEnter() +{ ActionsDemo::onEnter(); centerSprites(0); - auto origin = cocos2d::Director::getInstance()->getVisibleOrigin(); + auto origin = cocos2d::Director::getInstance()->getVisibleOrigin(); auto visibleSize = cocos2d::Director::getInstance()->getVisibleSize(); - _count = 0; + _count = 0; auto counterLabel = Label::createWithTTF("0", "fonts/Marker Felt.ttf", 16.0f); counterLabel->setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2); addChild(counterLabel); @@ -2381,15 +2274,18 @@ void Issue14936_2::onEnter() { runAction(Sequence::create(TargetedAction::create(this, func), DelayTime::create(0.2f), nullptr)); } -std::string Issue14936_2::subtitle() const { +std::string Issue14936_2::subtitle() const +{ return "Counter should be equal 1"; } -std::string Issue14936_2::title() const { +std::string Issue14936_2::title() const +{ return "Issue 14936 - Sequence"; } -std::string Issue14936_1::title() const { +std::string Issue14936_1::title() const +{ return "Issue 14936 - Action Interval"; } @@ -2398,8 +2294,6 @@ std::string ActionFloatTest::subtitle() const return "ActionFloat"; } - - //------------------------------------------------------------------ // // SequenceWithFinalInstant @@ -2410,36 +2304,31 @@ void SequenceWithFinalInstant::onEnter() TestCase::onEnter(); _manager = new cocos2d::ActionManager(); - + _target = cocos2d::Node::create(); - _target->setActionManager( _manager ); + _target->setActionManager(_manager); _target->retain(); _target->onEnter(); - bool called( false ); - const auto f - ( [ &called ]() -> void - { - cocos2d::log("Callback called."); - called = true; - } ); - + bool called(false); + const auto f([&called]() -> void { + cocos2d::log("Callback called."); + called = true; + }); + const auto action = - cocos2d::Sequence::create - (cocos2d::DelayTime::create(0.05f), - cocos2d::CallFunc::create(f), - nullptr); + cocos2d::Sequence::create(cocos2d::DelayTime::create(0.05f), cocos2d::CallFunc::create(f), nullptr); _target->runAction(action); _manager->update(0); _manager->update(0.05f - FLT_EPSILON); - if ( action->isDone() && !called ) + if (action->isDone() && !called) assert(false); - + _manager->update(FLT_EPSILON); - if ( action->isDone() && !called ) + if (action->isDone() && !called) assert(false); } @@ -2465,54 +2354,46 @@ std::string SequenceWithFinalInstant::subtitle() const void Issue18003::onEnter() { TestCase::onEnter(); - + _manager = new ActionManager(); - + _target = Node::create(); _target->setActionManager(_manager); _target->retain(); _target->onEnter(); - + // instant action + interval action - - const auto f - ( []() -> void - { - // do nothing - }); - - auto action = Sequence::create(CallFunc::create(f), - DelayTime::create(1), - nullptr); - + + const auto f([]() -> void { + // do nothing + }); + + auto action = Sequence::create(CallFunc::create(f), DelayTime::create(1), nullptr); + _target->runAction(action); _manager->update(0); _manager->update(2); - + assert(action->isDone()); - + _target->stopAction(action); - + // instant action + instant action - action = Sequence::create(CallFunc::create(f), - CallFunc::create(f), - nullptr); + action = Sequence::create(CallFunc::create(f), CallFunc::create(f), nullptr); _target->runAction(action); _manager->update(0); _manager->update(1); assert(action->isDone()); _target->stopAction(action); - + // interval action + instant action - action = Sequence::create(DelayTime::create(1), - CallFunc::create(f), - nullptr); + action = Sequence::create(DelayTime::create(1), CallFunc::create(f), nullptr); _target->runAction(action); _manager->update(0); _manager->update(2); assert(action->isDone()); _target->stopAction(action); - + // interval action + interval action action = Sequence::create(DelayTime::create(1), DelayTime::create(1), nullptr); _target->runAction(action); diff --git a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.h b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.h index 12b16ed6a160..1252de4f9d47 100644 --- a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.h +++ b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.h @@ -34,9 +34,10 @@ DEFINE_TEST_SUITE(ActionsTests); class ActionsDemo : public TestCase { protected: - cocos2d::Sprite* _grossini; - cocos2d::Sprite* _tamara; - cocos2d::Sprite* _kathia; + cocos2d::Sprite* _grossini; + cocos2d::Sprite* _tamara; + cocos2d::Sprite* _kathia; + public: virtual void onEnter() override; virtual void onExit() override; @@ -59,7 +60,7 @@ class ActionMove3D : public ActionsDemo { public: CREATE_FUNC(ActionMove3D); - + virtual void onEnter() override; virtual std::string subtitle() const override; }; @@ -181,7 +182,7 @@ class ActionAnimate : public ActionsDemo virtual void onExit() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + private: cocos2d::EventListenerCustom* _frameDisplayedListener; }; @@ -295,8 +296,8 @@ class ActionRemoveSelf : public ActionsDemo public: CREATE_FUNC(ActionRemoveSelf); - virtual void onEnter() override; - virtual std::string subtitle() const override; + virtual void onEnter() override; + virtual std::string subtitle() const override; }; class ActionRepeatForever : public ActionsDemo @@ -354,7 +355,6 @@ class ActionCallFunction : public ActionsDemo void callback3(Node* pTarget, int32_t data); }; - class ActionFollow : public ActionsDemo { public: @@ -366,10 +366,10 @@ class ActionFollow : public ActionsDemo class ActionFollowWithOffset : public ActionsDemo { - + public: CREATE_FUNC(ActionFollowWithOffset); - + virtual void onEnter() override; virtual std::string subtitle() const override; }; @@ -466,6 +466,7 @@ class Issue1305 : public ActionsDemo void log(Node* sender); virtual std::string title() const override; virtual std::string subtitle() const override; + private: cocos2d::Sprite* _spriteTmp; }; @@ -525,6 +526,7 @@ class Issue1398 : public ActionsDemo virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; + private: int _testInteger; }; @@ -533,10 +535,11 @@ class Issue2599 : public ActionsDemo { public: CREATE_FUNC(Issue2599); - + virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; + private: int _count; }; @@ -547,7 +550,7 @@ class ActionCatmullRom : public ActionsDemo CREATE_FUNC(ActionCatmullRom); ~ActionCatmullRom(); - + virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; @@ -559,7 +562,7 @@ class ActionCardinalSpline : public ActionsDemo CREATE_FUNC(ActionCardinalSpline); ~ActionCardinalSpline(); - + virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; @@ -574,12 +577,13 @@ class PauseResumeActions : public ActionsDemo virtual ~PauseResumeActions(); virtual void onEnter() override; virtual std::string subtitle() const override; - virtual std::string title() const override; + virtual std::string title() const override; + private: cocos2d::Vector _pausedTargets; }; -class ActionResize : public ActionsDemo +class ActionResize : public ActionsDemo { public: CREATE_FUNC(ActionResize); @@ -605,6 +609,7 @@ class Issue14936_1 : public ActionsDemo virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; + private: int _count; }; @@ -617,6 +622,7 @@ class Issue14936_2 : public ActionsDemo virtual void onEnter() override; virtual std::string subtitle() const override; virtual std::string title() const override; + private: int _count; }; @@ -625,30 +631,28 @@ class SequenceWithFinalInstant : public ActionsDemo { public: CREATE_FUNC(SequenceWithFinalInstant); - + virtual std::string subtitle() const override; virtual void onEnter() override; virtual void onExit() override; - + private: cocos2d::ActionManager* _manager; cocos2d::Node* _target; - }; class Issue18003 : public ActionsDemo { public: CREATE_FUNC(Issue18003); - + virtual std::string subtitle() const override; virtual void onEnter() override; virtual void onExit() override; - + private: cocos2d::ActionManager* _manager; cocos2d::Node* _target; - }; #endif diff --git a/tests/cpp-tests/Classes/AppDelegate.cpp b/tests/cpp-tests/Classes/AppDelegate.cpp index 6dda03072606..e606394e20aa 100644 --- a/tests/cpp-tests/Classes/AppDelegate.cpp +++ b/tests/cpp-tests/Classes/AppDelegate.cpp @@ -36,21 +36,18 @@ USING_NS_CC; // Enable log on Debug version #ifndef NDEBUG -#define COCOS2D_DEBUG 1 +# define COCOS2D_DEBUG 1 #else -#define COCOS2D_DEBUG 0 +# define COCOS2D_DEBUG 0 #endif -AppDelegate::AppDelegate() -: _testController(nullptr) -{ -} +AppDelegate::AppDelegate() : _testController(nullptr) {} AppDelegate::~AppDelegate() { - //SimpleAudioEngine::end(); - //TODO: minggo - // cocostudio::ArmatureDataManager::destroyInstance(); + // SimpleAudioEngine::end(); + // TODO: minggo + // cocostudio::ArmatureDataManager::destroyInstance(); } // if you want a different context, modify the value of glContextAttrs @@ -75,42 +72,42 @@ bool AppDelegate::applicationDidFinishLaunching() // initialize director auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - if (!glview) { + auto glview = director->getOpenGLView(); + if (!glview) + { std::string title = "Cpp Tests"; #ifndef NDEBUG title += " *Debug*", #endif - glview = GLViewImpl::createWithRect(title, Rect(0, 0, resourceSize.width, resourceSize.height)); + glview = GLViewImpl::createWithRect(title, Rect(0, 0, resourceSize.width, resourceSize.height)); director->setOpenGLView(glview); } - + director->setDisplayStats(true); director->setAnimationInterval(1.0f / 60); auto screenSize = glview->getFrameSize(); - auto fileUtils = FileUtils::getInstance(); std::vector searchPaths; - + if (screenSize.height > 320) { searchPaths.push_back("hd"); searchPaths.push_back("ccs-res/hd"); searchPaths.push_back("ccs-res"); searchPaths.push_back("Manifests"); - director->setContentScaleFactor(resourceSize.height/designSize.height); + director->setContentScaleFactor(resourceSize.height / designSize.height); searchPaths.push_back("hd/ActionTimeline"); } else { searchPaths.push_back("ccs-res"); - + searchPaths.push_back("ActionTimeline"); } - + fileUtils->setSearchPaths(searchPaths); glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::NO_BORDER); @@ -129,9 +126,9 @@ void AppDelegate::applicationDidEnterBackground() { if (_testController) { -// _testController->onEnterBackground(); + // _testController->onEnterBackground(); } - + Director::getInstance()->stopAnimation(); } @@ -140,8 +137,8 @@ void AppDelegate::applicationWillEnterForeground() { if (_testController) { -// _testController->onEnterForeground(); + // _testController->onEnterForeground(); } - + Director::getInstance()->startAnimation(); } diff --git a/tests/cpp-tests/Classes/AppDelegate.h b/tests/cpp-tests/Classes/AppDelegate.h index 6a7ff311ecca..ee34105f56ff 100644 --- a/tests/cpp-tests/Classes/AppDelegate.h +++ b/tests/cpp-tests/Classes/AppDelegate.h @@ -24,8 +24,8 @@ THE SOFTWARE. ****************************************************************************/ -#ifndef _APP_DELEGATE_H_ -#define _APP_DELEGATE_H_ +#ifndef _APP_DELEGATE_H_ +#define _APP_DELEGATE_H_ #include "cocos2d.h" @@ -35,7 +35,7 @@ class TestController; Private inheritance here hides part of interface from Director. */ -class AppDelegate : private cocos2d::Application +class AppDelegate : private cocos2d::Application { public: AppDelegate(); @@ -66,5 +66,4 @@ class AppDelegate : private cocos2d::Application TestController* _testController; }; -#endif // _APP_DELEGATE_H_ - +#endif // _APP_DELEGATE_H_ diff --git a/tests/cpp-tests/Classes/BaseTest.cpp b/tests/cpp-tests/Classes/BaseTest.cpp index 80ff8dc6e356..04856b009b4b 100644 --- a/tests/cpp-tests/Classes/BaseTest.cpp +++ b/tests/cpp-tests/Classes/BaseTest.cpp @@ -32,17 +32,9 @@ USING_NS_CC_EXT; #define TABEL_LABEL_TAG 1024 -TestBase::TestBase() -: _parentTest(nullptr) -, _isTestList(false) -{ - -} - -TestBase::~TestBase() -{ +TestBase::TestBase() : _parentTest(nullptr), _isTestList(false) {} -} +TestBase::~TestBase() {} void TestBase::backsUpOneLevel() { @@ -53,7 +45,7 @@ void TestBase::backsUpOneLevel() } } -//TestList +// TestList class TestCustomTableView : public TableView { public: @@ -68,8 +60,8 @@ class TestCustomTableView : public TableView return table; } - - virtual void onTouchEnded(Touch *touch, Event *event) override + + virtual void onTouchEnded(Touch* touch, Event* event) override { if (!this->isVisible()) { @@ -80,7 +72,7 @@ class TestCustomTableView : public TableView { auto label = (Label*)_touchedCell->getChildByTag(TABEL_LABEL_TAG); - Rect bbox = label->getBoundingBox(); + Rect bbox = label->getBoundingBox(); bbox.origin = _touchedCell->convertToWorldSpace(bbox.origin); if (bbox.containsPoint(touch->getLocation()) && _tableViewDelegate != nullptr) @@ -95,10 +87,10 @@ class TestCustomTableView : public TableView ScrollView::onTouchEnded(touch, event); } - void onMouseScroll(Event *event) + void onMouseScroll(Event* event) { auto mouseEvent = static_cast(event); - float moveY = mouseEvent->getScrollY() * 20; + float moveY = mouseEvent->getScrollY() * 20; auto minOffset = this->minContainerOffset(); auto maxOffset = this->maxContainerOffset(); @@ -120,7 +112,7 @@ class TestCustomTableView : public TableView protected: TestCustomTableView() { - auto mouseListener = EventListenerMouse::create(); + auto mouseListener = EventListenerMouse::create(); mouseListener->onMouseScroll = CC_CALLBACK_1(TestCustomTableView::onMouseScroll, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(mouseListener, this); } @@ -128,15 +120,17 @@ class TestCustomTableView : public TableView TestList::TestList() { - _isTestList = true; + _isTestList = true; _shouldRestoreTableOffset = false; } -TestList::~TestList() { +TestList::~TestList() +{ deatchTableView(); } -void TestList::deatchTableView() { +void TestList::deatchTableView() +{ if (_tableView) _tableView->setDataSource(nullptr); CC_SAFE_RELEASE_NULL(_tableView); @@ -157,24 +151,24 @@ void TestList::runThisTest() _cellTouchEnabled = true; /* Restore default window and design size - * Note: We should change frame and design size before your new scene create - * otherwise, the layout will incorrect - */ - - GLViewImpl* glview = (GLViewImpl*) Director::getInstance()->getOpenGLView(); - #if defined(CC_PLATFORM_PC) + * Note: We should change frame and design size before your new scene create + * otherwise, the layout will incorrect + */ + + GLViewImpl* glview = (GLViewImpl*)Director::getInstance()->getOpenGLView(); +#if defined(CC_PLATFORM_PC) Size resourceSize(960, 640); glview->setWindowed(resourceSize.width, resourceSize.height); - #endif - +#endif + Size designSize(480, 320); glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::NO_BORDER); auto director = Director::getInstance(); - auto scene = Scene::create(); + auto scene = Scene::create(); auto visibleSize = director->getVisibleSize(); - auto origin = director->getVisibleOrigin(); + auto origin = director->getVisibleOrigin(); deatchTableView(); _tableView = TestCustomTableView::create(this, Size(400, visibleSize.height)); _tableView->retain(); @@ -192,12 +186,12 @@ void TestList::runThisTest() if (_parentTest) { - //Add back button. + // Add back button. TTFConfig ttfConfig("fonts/arial.ttf", 20); auto label = Label::createWithTTF(ttfConfig, "Back"); auto menuItem = MenuItemLabel::create(label, std::bind(&TestBase::backsUpOneLevel, this)); - auto menu = Menu::create(menuItem, nullptr); + auto menu = Menu::create(menuItem, nullptr); menu->setPosition(Vec2::ZERO); menuItem->setPosition(Vec2(VisibleRect::right().x - 50, VisibleRect::bottom().y + 25)); @@ -206,18 +200,17 @@ void TestList::runThisTest() } else { - //Add close and "Start AutoTest" button. - auto closeItem = MenuItemImage::create(s_pathClose, s_pathClose, [](Ref* sender){ + // Add close and "Start AutoTest" button. + auto closeItem = MenuItemImage::create(s_pathClose, s_pathClose, [](Ref* sender) { TestController::getInstance()->stopAutoTest(); TestController::destroyInstance(); Director::getInstance()->end(); }); closeItem->setPosition(VisibleRect::right().x - 30, VisibleRect::top().y - 30); - auto autoTestLabel = Label::createWithTTF("Start AutoTest","fonts/arial.ttf",16); - auto autoTestItem = MenuItemLabel::create(autoTestLabel, [&](Ref* sender){ - TestController::getInstance()->startAutoTest(); - }); + auto autoTestLabel = Label::createWithTTF("Start AutoTest", "fonts/arial.ttf", 16); + auto autoTestItem = + MenuItemLabel::create(autoTestLabel, [&](Ref* sender) { TestController::getInstance()->startAutoTest(); }); autoTestItem->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + 50)); auto menu = Menu::create(closeItem, autoTestItem, nullptr); @@ -238,9 +231,9 @@ void TestList::tableCellTouched(TableView* table, TableViewCell* cell) auto test = _testCallbacks[index](); if (test->getChildTestCount() > 0) { - _tableOffset = table->getContentOffset(); + _tableOffset = table->getContentOffset(); _shouldRestoreTableOffset = true; - _cellTouchEnabled = false; + _cellTouchEnabled = false; test->setTestParent(this); test->runThisTest(); } @@ -252,12 +245,12 @@ void TestList::tableCellTouched(TableView* table, TableViewCell* cell) } } -TableViewCell* TestList::tableCellAtIndex(TableView *table, ssize_t idx) +TableViewCell* TestList::tableCellAtIndex(TableView* table, ssize_t idx) { auto cell = table->dequeueCell(); if (!cell) { - cell = TableViewCell::create(); + cell = TableViewCell::create(); auto label = Label::createWithTTF(_childTestNames[idx], "fonts/arial.ttf", 20.0f); label->setTag(TABEL_LABEL_TAG); label->setPosition(200, 15); @@ -272,17 +265,17 @@ TableViewCell* TestList::tableCellAtIndex(TableView *table, ssize_t idx) return cell; } -Size TestList::tableCellSizeForIndex(TableView *table, ssize_t idx) +Size TestList::tableCellSizeForIndex(TableView* table, ssize_t idx) { return Size(400, 30); } -ssize_t TestList::numberOfCellsInTableView(TableView *table) +ssize_t TestList::numberOfCellsInTableView(TableView* table) { return _childTestNames.size(); } -//TestSuite +// TestSuite void TestSuite::addTestCase(std::string_view testName, std::function callback) { if (!testName.empty() && callback) @@ -295,7 +288,7 @@ void TestSuite::addTestCase(std::string_view testName, std::function c static TestCase* getTestCase(Scene* scene) { auto transitionScene = dynamic_cast(scene); - TestCase* testCase = nullptr; + TestCase* testCase = nullptr; if (transitionScene) { testCase = dynamic_cast(transitionScene->getInScene()); @@ -315,8 +308,8 @@ void TestSuite::runThisTest() TestController::getInstance()->setCurrTestSuite(this); _currTestIndex = 0; - auto scene = _testCallbacks[0](); - auto testCase = getTestCase(scene); + auto scene = _testCallbacks[0](); + auto testCase = getTestCase(scene); testCase->setTestSuite(this); testCase->setTestCaseName(_childTestNames[_currTestIndex]); Director::getInstance()->replaceScene(scene); @@ -325,7 +318,7 @@ void TestSuite::runThisTest() void TestSuite::restartCurrTest() { - auto scene = _testCallbacks[_currTestIndex](); + auto scene = _testCallbacks[_currTestIndex](); auto testCase = getTestCase(scene); testCase->setTestSuite(this); testCase->setTestCaseName(_childTestNames[_currTestIndex]); @@ -337,7 +330,7 @@ void TestSuite::enterNextTest() { _currTestIndex = (_currTestIndex + 1) % _childTestNames.size(); - auto scene = _testCallbacks[_currTestIndex](); + auto scene = _testCallbacks[_currTestIndex](); auto testCase = getTestCase(scene); testCase->setTestSuite(this); testCase->setTestCaseName(_childTestNames[_currTestIndex]); @@ -356,7 +349,7 @@ void TestSuite::enterPreviousTest() _currTestIndex = (int)_childTestNames.size() - 1; } - auto scene = _testCallbacks[_currTestIndex](); + auto scene = _testCallbacks[_currTestIndex](); auto testCase = getTestCase(scene); testCase->setTestSuite(this); testCase->setTestCaseName(_childTestNames[_currTestIndex]); @@ -364,22 +357,20 @@ void TestSuite::enterPreviousTest() Director::getInstance()->replaceScene(scene); } -//TestCase +// TestCase TestCase::TestCase() -: _priorTestItem(nullptr) -, _restartTestItem(nullptr) -, _nextTestItem(nullptr) -, _titleLabel(nullptr) -, _subtitleLabel(nullptr) -, _testSuite(nullptr) -, _runTime(0.0f) + : _priorTestItem(nullptr) + , _restartTestItem(nullptr) + , _nextTestItem(nullptr) + , _titleLabel(nullptr) + , _subtitleLabel(nullptr) + , _testSuite(nullptr) + , _runTime(0.0f) { SpriteFrameCache::getInstance()->removeUnusedSpriteFrames(); Director::getInstance()->getTextureCache()->removeUnusedTextures(); - this->schedule([&](float dt){ - _runTime += dt; - }, "AccumulatedTimeUse"); + this->schedule([&](float dt) { _runTime += dt; }, "AccumulatedTimeUse"); } TestCase::~TestCase() @@ -423,27 +414,31 @@ bool TestCase::init() _titleLabel = Label::createWithTTF(ttfConfig, title()); addChild(_titleLabel, 9999); _titleLabel->setPosition(VisibleRect::center().x, VisibleRect::top().y - 30); - + ttfConfig.fontSize = 16; - _subtitleLabel = Label::createWithTTF(ttfConfig, subtitle()); + _subtitleLabel = Label::createWithTTF(ttfConfig, subtitle()); _subtitleLabel->setMaxLineWidth(VisibleRect::getVisibleRect().size.width); addChild(_subtitleLabel, 9999); _subtitleLabel->setPosition(VisibleRect::center().x, VisibleRect::top().y - 60); - + _priorTestItem = MenuItemImage::create(s_pathB1, s_pathB2, CC_CALLBACK_1(TestCase::priorTestCallback, this)); - _restartTestItem = MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(TestCase::restartTestCallback, this)); + _restartTestItem = + MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(TestCase::restartTestCallback, this)); _nextTestItem = MenuItemImage::create(s_pathF1, s_pathF2, CC_CALLBACK_1(TestCase::nextTestCallback, this)); - + ttfConfig.fontSize = 20; - auto backLabel = Label::createWithTTF(ttfConfig, "Back"); - auto backItem = MenuItemLabel::create(backLabel, CC_CALLBACK_1(TestCase::onBackCallback, this)); + auto backLabel = Label::createWithTTF(ttfConfig, "Back"); + auto backItem = MenuItemLabel::create(backLabel, CC_CALLBACK_1(TestCase::onBackCallback, this)); auto menu = Menu::create(_priorTestItem, _restartTestItem, _nextTestItem, backItem, nullptr); menu->setPosition(Vec2::ZERO); - _priorTestItem->setPosition(VisibleRect::center().x - _restartTestItem->getContentSize().width * 2, VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); - _restartTestItem->setPosition(VisibleRect::center().x, VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); - _nextTestItem->setPosition(VisibleRect::center().x + _restartTestItem->getContentSize().width * 2, VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); + _priorTestItem->setPosition(VisibleRect::center().x - _restartTestItem->getContentSize().width * 2, + VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); + _restartTestItem->setPosition(VisibleRect::center().x, + VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); + _nextTestItem->setPosition(VisibleRect::center().x + _restartTestItem->getContentSize().width * 2, + VisibleRect::bottom().y + _restartTestItem->getContentSize().height / 2); backItem->setPosition(Vec2(VisibleRect::right().x - 50, VisibleRect::bottom().y + 25)); addChild(menu, 9999); @@ -465,7 +460,8 @@ void TestCase::onEnter() if (_testSuite) { - _titleLabel->setString(StringUtils::format("%d", static_cast(_testSuite->getCurrTestIndex() + 1)) + ":" + title()); + _titleLabel->setString(StringUtils::format("%d", static_cast(_testSuite->getCurrTestIndex() + 1)) + ":" + + title()); } else { diff --git a/tests/cpp-tests/Classes/BaseTest.h b/tests/cpp-tests/Classes/BaseTest.h index 7f11e24376dc..526b4d16d552 100644 --- a/tests/cpp-tests/Classes/BaseTest.h +++ b/tests/cpp-tests/Classes/BaseTest.h @@ -47,7 +47,7 @@ class TestCase : public cocos2d::Scene /** For testing whether test case not crash.*/ ROBUSTNESS, /** - * For check the correctness of regular test cases. + * For check the correctness of regular test cases. * A test case passes only if the actual output equal to the expected output. */ UNIT, @@ -67,7 +67,6 @@ class TestCase : public cocos2d::Scene /** Returns the time the test case needs.*/ virtual float getDuration() const; - /** Returns the expected output.*/ virtual std::string getExpectedOutput() const { return ""; } /** Returns the actual output.*/ @@ -98,8 +97,7 @@ class TestCase : public cocos2d::Scene const cocos2d::MenuItemImage* getRestartTestItem() const { return _restartTestItem; } virtual void onEnter() override; -CC_CONSTRUCTOR_ACCESS: - virtual bool init() override; + CC_CONSTRUCTOR_ACCESS : virtual bool init() override; protected: cocos2d::MenuItemImage* _priorTestItem; @@ -138,13 +136,14 @@ class TestBase : public cocos2d::Ref ssize_t getChildTestCount() { return _childTestNames.size(); } /** - * You should NEVER call this method. - */ + * You should NEVER call this method. + */ void setTestParent(TestBase* parent) { _parentTest = parent; } TestBase* getTestParent() { return _parentTest; } void setTestName(std::string_view testName) { _testName = testName; } std::string getTestName() const { return _testName; } + protected: TestBase(); @@ -157,9 +156,9 @@ class TestBase : public cocos2d::Ref class TestController; /** -* TestSuite correspond to a group of test cases. -* @note Each test case should add to a TestSuite object. -*/ + * TestSuite correspond to a group of test cases. + * @note Each test case should add to a TestSuite object. + */ class TestSuite : public TestBase { public: @@ -184,7 +183,9 @@ class TestCustomTableView; /** * An instance of TestList is a means for displaying hierarchical lists of TestSuite. */ -class TestList : public TestBase, public cocos2d::extension::TableViewDataSource, public cocos2d::extension::TableViewDelegate +class TestList : public TestBase, + public cocos2d::extension::TableViewDataSource, + public cocos2d::extension::TableViewDelegate { public: TestList(); @@ -194,16 +195,18 @@ class TestList : public TestBase, public cocos2d::extension::TableViewDataSource virtual void runThisTest() override; + virtual void tableCellTouched(cocos2d::extension::TableView* table, + cocos2d::extension::TableViewCell* cell) override; + virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView* table, + ssize_t idx) override; + virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView* table, ssize_t idx) override; + virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView* table) override; - virtual void tableCellTouched(cocos2d::extension::TableView* table, cocos2d::extension::TableViewCell* cell) override; - virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx) override; - virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx) override; - virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView *table) override; - - virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view) override{} - virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view) override{} + virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view) override {} + virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view) override {} void deatchTableView(); + private: std::vector> _testCallbacks; bool _cellTouchEnabled; @@ -213,32 +216,40 @@ class TestList : public TestBase, public cocos2d::extension::TableViewDataSource TestCustomTableView* _tableView{}; }; +#define ADD_TEST(__className__) addTest(#__className__, []() { return new __className__; }); -#define ADD_TEST(__className__) addTest( #__className__, [](){ return new __className__;} ); - -#define ADD_TEST_CASE(__className__) addTestCase( #__className__, [](){ return __className__::create();} ); +#define ADD_TEST_CASE(__className__) addTestCase(#__className__, []() { return __className__::create(); }); -#define DEFINE_TEST_LIST(__className__) class __className__ : public TestList { public: __className__();} - -#define DEFINE_TEST_SUITE(__className__) class __className__ : public TestSuite { public: __className__();} +#define DEFINE_TEST_LIST(__className__) \ + class __className__ : public TestList \ + { \ + public: \ + __className__(); \ + } +#define DEFINE_TEST_SUITE(__className__) \ + class __className__ : public TestSuite \ + { \ + public: \ + __className__(); \ + } /** * BaseTest is retained for compatibility with older versions. - * @warning It should soon be removed. + * @warning It should soon be removed. */ class BaseTest : public cocos2d::Layer { public: virtual std::string title() const { return ""; } - virtual std::string subtitle() const{ return ""; } + virtual std::string subtitle() const { return ""; } virtual void restartCallback(cocos2d::Ref* sender) {} - virtual void nextCallback(cocos2d::Ref* sender){} - virtual void backCallback(cocos2d::Ref* sender){} + virtual void nextCallback(cocos2d::Ref* sender) {} + virtual void backCallback(cocos2d::Ref* sender) {} - virtual void onEnter() override{} - virtual void onExit() override{} + virtual void onEnter() override {} + virtual void onExit() override {} }; #endif /* defined(_CPPTESTS_BASETEST_H__) */ diff --git a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp index 49b908ab2242..0e7953a73541 100644 --- a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp +++ b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp @@ -2,19 +2,19 @@ Copyright (c) 2012 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,6 @@ USING_NS_CC; USING_NS_CC_EXT; using namespace cocos2d::ui; - BillBoardTests::BillBoardTests() { ADD_TEST_CASE(BillBoardRotationTest); @@ -49,51 +48,48 @@ BillBoardTests::BillBoardTests() BillBoardRotationTest::BillBoardRotationTest() { auto root = Sprite3D::create(); - root->setPositionNormalized(Vec2(0.5f,0.25f)); + root->setPositionNormalized(Vec2(0.5f, 0.25f)); addChild(root); - + auto model = Sprite3D::create("Sprite3DTest/orc.c3b"); model->setScale(5); - model->setRotation3D(Vec3(0.0f,180.0f,0.0f)); + model->setRotation3D(Vec3(0.0f, 180.0f, 0.0f)); root->addChild(model); - + auto bill = BillBoard::create(); bill->setPosition(0, 120); root->addChild(bill); - + auto sp = Sprite::create("Images/SpookyPeas.png"); sp->setScale(2); bill->addChild(sp); - + auto lbl = Label::create(); lbl->setPosition(0.0f, 30.0f); lbl->setString("+100"); bill->addChild(lbl); - - auto r = RotateBy::create(10, Vec3(0.0f,360.0f,0.0f)); + + auto r = RotateBy::create(10, Vec3(0.0f, 360.0f, 0.0f)); auto rp = RepeatForever::create(r); root->runAction(rp); - - auto jump = JumpBy::create(1, Vec2(0.0f, 0.0f), 30, 1); + + auto jump = JumpBy::create(1, Vec2(0.0f, 0.0f), 30, 1); auto scale = ScaleBy::create(2.f, 2.f, 2.f, 0.1f); - auto seq = Sequence::create(jump,scale, NULL); - + auto seq = Sequence::create(jump, scale, NULL); + auto rot = RotateBy::create(2, Vec3(-90.0f, 0.0f, 0.0f)); - auto act = Spawn::create(seq, rot,NULL); - + auto act = Spawn::create(seq, rot, NULL); + auto scale2 = scale->reverse(); - auto rot2 = rot->reverse(); - auto act2 = Spawn::create(scale2, rot2, NULL); - - auto seq2 = Sequence::create(act, act2, NULL); + auto rot2 = rot->reverse(); + auto act2 = Spawn::create(scale2, rot2, NULL); + + auto seq2 = Sequence::create(act, act2, NULL); auto repeat = RepeatForever::create(seq2); model->runAction(repeat); } -BillBoardRotationTest::~BillBoardRotationTest() -{ - -} +BillBoardRotationTest::~BillBoardRotationTest() {} std::string BillBoardRotationTest::title() const { @@ -110,38 +106,37 @@ std::string BillBoardRotationTest::subtitle() const // Billboard Rendering Test // //------------------------------------------------------------------ -BillBoardTest::BillBoardTest() -: _camera(nullptr) +BillBoardTest::BillBoardTest() : _camera(nullptr) { - //Create touch listener - auto listener = EventListenerTouchAllAtOnce::create(); + // Create touch listener + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesMoved = CC_CALLBACK_2(BillBoardTest::onTouchesMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - auto layer3D=Layer::create(); - addChild(layer3D,0); + + auto layer3D = Layer::create(); + addChild(layer3D, 0); _layerBillBoard = layer3D; - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); if (_camera == nullptr) { - _camera=Camera::createPerspective(60, (float)s.width/s.height, 1, 500); + _camera = Camera::createPerspective(60, (float)s.width / s.height, 1, 500); _camera->setCameraFlag(CameraFlag::USER1); _layerBillBoard->addChild(_camera); } - //Create rotating billboards + // Create rotating billboards std::string imgs[3] = {"Images/Icon.png", "Images/r2.png"}; for (unsigned int i = 0; i < 4; ++i) { - Layer *layer = Layer::create(); + Layer* layer = Layer::create(); auto billboard = BillBoard::create(imgs[(unsigned int)(CCRANDOM_0_1() * 1 + 0.5f)]); billboard->setScale(0.5f); - billboard->setPosition3D(Vec3(0.0f, 0.0f, CCRANDOM_MINUS1_1() * 150.0f)); + billboard->setPosition3D(Vec3(0.0f, 0.0f, CCRANDOM_MINUS1_1() * 150.0f)); billboard->setOpacity(static_cast(CCRANDOM_0_1() * 128 + 128)); _billboards.push_back(billboard); layer->addChild(billboard); _layerBillBoard->addChild(layer); - layer->runAction( RepeatForever::create( RotateBy::create( CCRANDOM_0_1() * 10, Vec3(0.0f, 45.0f, 0.0f) ) ) ); + layer->runAction(RepeatForever::create(RotateBy::create(CCRANDOM_0_1() * 10, Vec3(0.0f, 45.0f, 0.0f)))); } { @@ -158,62 +153,64 @@ BillBoardTest::BillBoardTest() auto sprite3d = Sprite3D::create("Sprite3DTest/orc.c3t"); sprite3d->setScale(2.0f); sprite3d->addChild(billboard); - sprite3d->runAction( RepeatForever::create( RotateBy::create( 10.0f, Vec3(0.0f, 360.0f, 0.0f) ) ) ); + sprite3d->runAction(RepeatForever::create(RotateBy::create(10.0f, Vec3(0.0f, 360.0f, 0.0f)))); _layerBillBoard->addChild(sprite3d); } - addNewBillBoardWithCoords(Vec3(20.0f,5.0f,0.0f)); - addNewBillBoardWithCoords(Vec3(60.0f,5.0f,0.0f)); - addNewBillBoardWithCoords(Vec3(100.0f,5.0f,0.0f)); - addNewBillBoardWithCoords(Vec3(140.0f,5.0f,0.0f)); - addNewBillBoardWithCoords(Vec3(180.0f,5.0f,0.0f)); - - addNewAniBillBoardWithCoords(Vec3(-20.0f,0.0f,0.0f)); - addNewAniBillBoardWithCoords(Vec3(-60.0f,0.0f,0.0f)); - addNewAniBillBoardWithCoords(Vec3(-100.0f,0.0f,0.0f)); - addNewAniBillBoardWithCoords(Vec3(-140.0f,0.0f,0.0f)); - addNewAniBillBoardWithCoords(Vec3(-180.0f,0.0f,0.0f)); - + addNewBillBoardWithCoords(Vec3(20.0f, 5.0f, 0.0f)); + addNewBillBoardWithCoords(Vec3(60.0f, 5.0f, 0.0f)); + addNewBillBoardWithCoords(Vec3(100.0f, 5.0f, 0.0f)); + addNewBillBoardWithCoords(Vec3(140.0f, 5.0f, 0.0f)); + addNewBillBoardWithCoords(Vec3(180.0f, 5.0f, 0.0f)); + + addNewAniBillBoardWithCoords(Vec3(-20.0f, 0.0f, 0.0f)); + addNewAniBillBoardWithCoords(Vec3(-60.0f, 0.0f, 0.0f)); + addNewAniBillBoardWithCoords(Vec3(-100.0f, 0.0f, 0.0f)); + addNewAniBillBoardWithCoords(Vec3(-140.0f, 0.0f, 0.0f)); + addNewAniBillBoardWithCoords(Vec3(-180.0f, 0.0f, 0.0f)); + _camera->setPosition3D(Vec3(0.0f, 100.0f, 230.0f)); - _camera->lookAt(Vec3(0,0,0), Vec3(0.0f,1.0f,0.0f)); + _camera->lookAt(Vec3(0, 0, 0), Vec3(0.0f, 1.0f, 0.0f)); TTFConfig ttfConfig("fonts/arial.ttf", 16); - auto label1 = Label::createWithTTF(ttfConfig,"rotate+"); - auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback,this,10)); - auto label2 = Label::createWithTTF(ttfConfig,"rotate-"); - auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback,this,-10)); - auto menu = Menu::create(menuItem1, menuItem2, nullptr); + auto label1 = Label::createWithTTF(ttfConfig, "rotate+"); + auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback, this, 10)); + auto label2 = Label::createWithTTF(ttfConfig, "rotate-"); + auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(BillBoardTest::rotateCameraCallback, this, -10)); + auto menu = Menu::create(menuItem1, menuItem2, nullptr); menu->setPosition(Vec2::ZERO); - menuItem1->setPosition( Vec2( s.width-80, VisibleRect::top().y-160) ); - menuItem2->setPosition( Vec2( s.width-80, VisibleRect::top().y-190) ); + menuItem1->setPosition(Vec2(s.width - 80, VisibleRect::top().y - 160)); + menuItem2->setPosition(Vec2(s.width - 80, VisibleRect::top().y - 190)); addChild(menu, 0); _layerBillBoard->setCameraMask(2); - - label1 = Label::createWithTTF(ttfConfig,"Point Oriented"); - menuItem1 = MenuItemLabel::create(label1,CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPoint,this) ); - label2 = Label::createWithTTF(ttfConfig,"Plane Oriented"); - menuItem2 = MenuItemLabel::create(label2,CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPlane,this) ); - menuItem1->setPosition( Vec2( s.width-80, VisibleRect::top().y-100) ); - menuItem2->setPosition( Vec2( s.width-80, VisibleRect::top().y-130) ); - + + label1 = Label::createWithTTF(ttfConfig, "Point Oriented"); + menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPoint, this)); + label2 = Label::createWithTTF(ttfConfig, "Plane Oriented"); + menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(BillBoardTest::menuCallback_orientedPlane, this)); + menuItem1->setPosition(Vec2(s.width - 80, VisibleRect::top().y - 100)); + menuItem2->setPosition(Vec2(s.width - 80, VisibleRect::top().y - 130)); + menu = Menu::create(menuItem1, menuItem2, nullptr); - menu->setPosition(Vec2(0,0)); + menu->setPosition(Vec2(0, 0)); this->addChild(menu, 10); menuCallback_orientedPoint(nullptr); - + schedule(CC_SCHEDULE_SELECTOR(BillBoardTest::update)); } void BillBoardTest::menuCallback_orientedPoint(Ref* sender) { - for (auto& billboard : _billboards) { + for (auto& billboard : _billboards) + { billboard->setMode(BillBoard::Mode::VIEW_POINT_ORIENTED); } } void BillBoardTest::menuCallback_orientedPlane(Ref* sender) { - for (auto& billboard : _billboards) { + for (auto& billboard : _billboards) + { billboard->setMode(BillBoard::Mode::VIEW_PLANE_ORIENTED); } } @@ -242,7 +239,7 @@ void BillBoardTest::addNewBillBoardWithCoords(Vec3 p) billboard->setScale(0.5f); billboard->setPosition3D(Vec3(p.x, p.y, -150.0f + 30 * i)); billboard->setOpacity(static_cast(CCRANDOM_0_1() * 128 + 128)); - + _layerBillBoard->addChild(billboard); _billboards.push_back(billboard); } @@ -253,11 +250,11 @@ void BillBoardTest::addNewAniBillBoardWithCoords(Vec3 p) { auto billboardAni = BillBoard::create("Images/grossini.png"); billboardAni->setScale(0.5f); - billboardAni->setPosition3D(Vec3(p.x, p.y, -150.0f + 30 * i)); + billboardAni->setPosition3D(Vec3(p.x, p.y, -150.0f + 30 * i)); _layerBillBoard->addChild(billboardAni); auto animation = Animation::create(); - for( int i=1;i<15;i++) + for (int i = 1; i < 15; i++) { char szName1[100] = {0}; sprintf(szName1, "Images/grossini_dance_%02d.png", i); @@ -273,37 +270,35 @@ void BillBoardTest::addNewAniBillBoardWithCoords(Vec3 p) _billboards.push_back(billboardAni); } } -void BillBoardTest::update(float dt) -{ -} +void BillBoardTest::update(float dt) {} void BillBoardTest::onTouchesMoved(const std::vector& touches, Event* event) { - if(touches.size()==1) + if (touches.size() == 1) { - auto touch = touches[0]; - auto location = touch->getLocation(); + auto touch = touches[0]; + auto location = touch->getLocation(); auto PreviousLocation = touch->getPreviousLocation(); - Point newPos = PreviousLocation - location; + Point newPos = PreviousLocation - location; Vec3 cameraDir; Vec3 cameraRightDir; _camera->getNodeToWorldTransform().getForwardVector(&cameraDir); cameraDir.normalize(); - cameraDir.y=0; + cameraDir.y = 0; _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir); cameraRightDir.normalize(); - cameraRightDir.y=0; - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos+=cameraDir*newPos.y*0.5; - cameraPos+=cameraRightDir*newPos.x*0.5; - _camera->setPosition3D(cameraPos); + cameraRightDir.y = 0; + Vec3 cameraPos = _camera->getPosition3D(); + cameraPos += cameraDir * newPos.y * 0.5; + cameraPos += cameraRightDir * newPos.x * 0.5; + _camera->setPosition3D(cameraPos); } } -void BillBoardTest::rotateCameraCallback(Ref* sender,float value) +void BillBoardTest::rotateCameraCallback(Ref* sender, float value) { - Vec3 rotation3D= _camera->getRotation3D(); - rotation3D.y+= value; + Vec3 rotation3D = _camera->getRotation3D(); + rotation3D.y += value; _camera->setRotation3D(rotation3D); } diff --git a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.h b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.h index d53779089749..729091065107 100644 --- a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.h +++ b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,10 +29,11 @@ #include "../BaseTest.h" #include -namespace cocos2d { - class BillBoard; - class Camera; -} +namespace cocos2d +{ +class BillBoard; +class Camera; +} // namespace cocos2d class BillBoardRotationTest : public TestCase { @@ -42,7 +43,7 @@ class BillBoardRotationTest : public TestCase virtual ~BillBoardRotationTest(); virtual std::string title() const override; virtual std::string subtitle() const override; - + protected: }; @@ -57,15 +58,15 @@ class BillBoardTest : public TestCase virtual void update(float dt) override; void addNewBillBoardWithCoords(cocos2d::Vec3 p); void addNewAniBillBoardWithCoords(cocos2d::Vec3 p); - void rotateCameraCallback(cocos2d::Ref* sender,float value); + void rotateCameraCallback(cocos2d::Ref* sender, float value); void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); - + void menuCallback_orientedPoint(cocos2d::Ref* sender); void menuCallback_orientedPlane(cocos2d::Ref* sender); - + protected: - cocos2d::Camera* _camera; - cocos2d::Layer* _layerBillBoard; + cocos2d::Camera* _camera; + cocos2d::Layer* _layerBillBoard; std::vector _billboards; }; diff --git a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp index 52f3a16bd400..1461f8505883 100644 --- a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp +++ b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp @@ -29,18 +29,16 @@ #include "renderer/CCRenderer.h" #include "renderer/CCCustomCommand.h" - - USING_NS_CC; USING_NS_CC_EXT; #define PTM_RATIO 32 -enum { +enum +{ kTagParentNode = 1, }; - Box2DTests::Box2DTests() { ADD_TEST_CASE(Box2DTest); @@ -51,7 +49,6 @@ std::string Box2DTest::title() const return "Box2D - Basic"; } - bool Box2DTest::init() { if (!TestCase::init()) @@ -60,35 +57,34 @@ bool Box2DTest::init() } auto dispatcher = Director::getInstance()->getEventDispatcher(); - auto touchListener = EventListenerTouchAllAtOnce::create(); + auto touchListener = EventListenerTouchAllAtOnce::create(); touchListener->onTouchesEnded = CC_CALLBACK_2(Box2DTest::onTouchesEnded, this); dispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); - // init physics this->initPhysics(); // create reset button this->createResetButton(); - //Set up sprite + // Set up sprite #if 1 // Use batch node. Faster - auto parent = SpriteBatchNode::create("Images/blocks.png", 100); + auto parent = SpriteBatchNode::create("Images/blocks.png", 100); _spriteTexture = parent->getTexture(); #else // doesn't use batch node. Slower _spriteTexture = Director::getInstance()->getTextureCache()->addImage("Images/blocks.png"); - auto parent = Node::create(); + auto parent = Node::create(); #endif addChild(parent, 0, kTagParentNode); - addNewSpriteAtPosition(VisibleRect::center()); - auto label = Label::createWithTTF("Tap screen add boxes.\nSome objects be only visible with debug on.", "fonts/Marker Felt.ttf", 12.0f); + auto label = Label::createWithTTF("Tap screen add boxes.\nSome objects be only visible with debug on.", + "fonts/Marker Felt.ttf", 12.0f); addChild(label, 0); label->setColor(Color3B(0, 0, 255)); - label->setPosition(VisibleRect::center().x-50, VisibleRect::top().y - 60); + label->setPosition(VisibleRect::center().x - 50, VisibleRect::top().y - 60); // menu for debug layer MenuItemFont::setFontSize(18); @@ -107,26 +103,19 @@ bool Box2DTest::init() return true; } -Box2DTest::Box2DTest() - : _spriteTexture(nullptr) - , world(nullptr) -{ - -} +Box2DTest::Box2DTest() : _spriteTexture(nullptr), world(nullptr) {} Box2DTest::~Box2DTest() { CC_SAFE_DELETE(world); } - void Box2DTest::toggleDebugCallback(Ref* sender) { showDebugDraw = !showDebugDraw; - drawBox2D->clear(); + drawBox2D->clear(); } - void Box2DTest::initPhysics() { b2Vec2 gravity; @@ -140,7 +129,7 @@ void Box2DTest::initPhysics() // Define the ground body. b2BodyDef groundBodyDef; - groundBodyDef.position.Set(0, 0); // bottom-left corner + groundBodyDef.position.Set(0, 0); // bottom-left corner // Call the body factory which allocates memory for the ground body // from a pool and creates the ground box shape (also from a pool). @@ -151,22 +140,25 @@ void Box2DTest::initPhysics() b2EdgeShape groundBox; // bottom - groundBox.SetTwoSided(b2Vec2(VisibleRect::leftBottom().x / PTM_RATIO, VisibleRect::leftBottom().y / PTM_RATIO), b2Vec2(VisibleRect::rightBottom().x / PTM_RATIO, VisibleRect::rightBottom().y / PTM_RATIO)); + groundBox.SetTwoSided(b2Vec2(VisibleRect::leftBottom().x / PTM_RATIO, VisibleRect::leftBottom().y / PTM_RATIO), + b2Vec2(VisibleRect::rightBottom().x / PTM_RATIO, VisibleRect::rightBottom().y / PTM_RATIO)); groundBody->CreateFixture(&groundBox, 0); // top - groundBox.SetTwoSided(b2Vec2(VisibleRect::leftTop().x / PTM_RATIO, VisibleRect::leftTop().y / PTM_RATIO), b2Vec2(VisibleRect::rightTop().x / PTM_RATIO, VisibleRect::rightTop().y / PTM_RATIO)); + groundBox.SetTwoSided(b2Vec2(VisibleRect::leftTop().x / PTM_RATIO, VisibleRect::leftTop().y / PTM_RATIO), + b2Vec2(VisibleRect::rightTop().x / PTM_RATIO, VisibleRect::rightTop().y / PTM_RATIO)); groundBody->CreateFixture(&groundBox, 0); // left - groundBox.SetTwoSided(b2Vec2(VisibleRect::leftTop().x / PTM_RATIO, VisibleRect::leftTop().y / PTM_RATIO), b2Vec2(VisibleRect::leftBottom().x / PTM_RATIO, VisibleRect::leftBottom().y / PTM_RATIO)); + groundBox.SetTwoSided(b2Vec2(VisibleRect::leftTop().x / PTM_RATIO, VisibleRect::leftTop().y / PTM_RATIO), + b2Vec2(VisibleRect::leftBottom().x / PTM_RATIO, VisibleRect::leftBottom().y / PTM_RATIO)); groundBody->CreateFixture(&groundBox, 0); // right - groundBox.SetTwoSided(b2Vec2(VisibleRect::rightBottom().x / PTM_RATIO, VisibleRect::rightBottom().y / PTM_RATIO), b2Vec2(VisibleRect::rightTop().x / PTM_RATIO, VisibleRect::rightTop().y / PTM_RATIO)); + groundBox.SetTwoSided(b2Vec2(VisibleRect::rightBottom().x / PTM_RATIO, VisibleRect::rightBottom().y / PTM_RATIO), + b2Vec2(VisibleRect::rightTop().x / PTM_RATIO, VisibleRect::rightTop().y / PTM_RATIO)); groundBody->CreateFixture(&groundBox, 0); - // Small triangle b2Vec2 vertices[3]; vertices[0].Set(-1.0f, 0.0f); @@ -177,7 +169,7 @@ void Box2DTest::initPhysics() polygon.Set(vertices, 3); b2FixtureDef triangleShapeDef; - triangleShapeDef.shape = &polygon; + triangleShapeDef.shape = &polygon; triangleShapeDef.density = 1.0f; b2BodyDef triangleBodyDef; @@ -202,7 +194,7 @@ void Box2DTest::initPhysics() polygon.SetAsBox(1.0f, 0.5f); b2FixtureDef boxShapeDef; - boxShapeDef.shape = &polygon; + boxShapeDef.shape = &polygon; boxShapeDef.density = 1.0f; b2BodyDef boxBodyDef; @@ -224,7 +216,7 @@ void Box2DTest::initPhysics() circle.m_radius = 1.0f; b2FixtureDef circleShapeDef; - circleShapeDef.shape = &circle; + circleShapeDef.shape = &circle; circleShapeDef.density = 1.0f; b2BodyDef circleBodyDef; @@ -247,16 +239,15 @@ void Box2DTest::initPhysics() flags += 0 * b2Draw::e_aabbBit; flags += 0 * b2Draw::e_centerOfMassBit; g_debugDraw.SetFlags(flags); - g_debugDraw.mRatio = PTM_RATIO; - g_debugDraw.debugNodeOffset = { 0, 0 }; + g_debugDraw.mRatio = PTM_RATIO; + g_debugDraw.debugNodeOffset = {0, 0}; world->SetDebugDraw(&g_debugDraw); } void Box2DTest::createResetButton() { - auto reset = MenuItemImage::create("Images/r1.png", "Images/r2.png", [&](Ref* sender) { - getTestSuite()->restartCurrTest(); - }); + auto reset = MenuItemImage::create("Images/r1.png", "Images/r2.png", + [&](Ref* sender) { getTestSuite()->restartCurrTest(); }); auto menu = Menu::create(reset, nullptr); @@ -269,7 +260,7 @@ void Box2DTest::addNewSpriteAtPosition(Vec2 p) CCLOG("Add sprite %0.2f x %02.f", p.x, p.y); // Define the dynamic body. - //Set up a 1m squared box in the physics world + // Set up a 1m squared box in the physics world b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; bodyDef.position.Set(p.x / PTM_RATIO, p.y / PTM_RATIO); @@ -280,21 +271,21 @@ void Box2DTest::addNewSpriteAtPosition(Vec2 p) // Define another box shape for our dynamic body. b2PolygonShape dynamicBox; - dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box + dynamicBox.SetAsBox(.5f, .5f); // These are mid points for our 1m box // Define the dynamic body fixture. b2FixtureDef fixtureDef; - fixtureDef.shape = &dynamicBox; - fixtureDef.density = 1.0f; + fixtureDef.shape = &dynamicBox; + fixtureDef.density = 1.0f; fixtureDef.friction = 0.3f; body->CreateFixture(&fixtureDef); auto parent = this->getChildByTag(kTagParentNode); - //We have a 64x64 sprite sheet with 4 different 32x32 images. The following code is - //just randomly picking one of the images - int idx = (CCRANDOM_0_1() > .5 ? 0 : 1); - int idy = (CCRANDOM_0_1() > .5 ? 0 : 1); + // We have a 64x64 sprite sheet with 4 different 32x32 images. The following code is + // just randomly picking one of the images + int idx = (CCRANDOM_0_1() > .5 ? 0 : 1); + int idy = (CCRANDOM_0_1() > .5 ? 0 : 1); auto sprite = PhysicsSpriteBox2D::createWithTexture(_spriteTexture, Rect(32 * idx, 32 * idy, 32, 32)); parent->addChild(sprite); sprite->setB2Body(body); @@ -304,10 +295,10 @@ void Box2DTest::addNewSpriteAtPosition(Vec2 p) void Box2DTest::update(float dt) { - //It is recommended that a fixed time step is used with Box2D for stability - //of the simulation, however, we are using a variable time step here. - //You need to make an informed choice, the following URL is useful - //http://gafferongames.com/game-physics/fix-your-timestep/ + // It is recommended that a fixed time step is used with Box2D for stability + // of the simulation, however, we are using a variable time step here. + // You need to make an informed choice, the following URL is useful + // http://gafferongames.com/game-physics/fix-your-timestep/ int velocityIterations = 8; int positionIterations = 1; @@ -316,19 +307,17 @@ void Box2DTest::update(float dt) // generally best to keep the time step and iterations fixed. world->Step(dt, velocityIterations, positionIterations); - // Debug draw if (showDebugDraw) { drawBox2D->clear(); world->DebugDraw(); } - } void Box2DTest::onTouchesEnded(const std::vector& touches, Event* event) { - //Add a new body/atlas sprite at the touched location + // Add a new body/atlas sprite at the touched location for (auto& touch : touches) { diff --git a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.h b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.h index d98406d746a9..f11f92fe08fc 100644 --- a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.h +++ b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. Copyright (c) 2021 @aismann; Peter Eismann, Germany; dreifrankensoft - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,6 @@ DEFINE_TEST_SUITE(Box2DTests); - class Box2DTest : public TestCase { public: @@ -61,6 +60,6 @@ class Box2DTest : public TestCase cocos2d::DrawNode* drawBox2D; cocos2d::extension::PhysicsDebugNodeBox2D g_debugDraw; bool showDebugDraw = true; -} ; +}; #endif \ No newline at end of file diff --git a/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.cpp b/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.cpp index 1b95100a080d..76c03de9ff3e 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.cpp @@ -34,8 +34,9 @@ USING_NS_CC; USING_NS_CC_EXT; -enum { - kTagParentNode = 1, +enum +{ + kTagParentNode = 1, }; Settings settings; @@ -43,34 +44,31 @@ cocos2d::Label* labelDebugDraw; enum { - kTagBox2DNode, + kTagBox2DNode, }; - -TestEntry g_testEntries[MAX_TESTS] = { {nullptr} }; -int g_testCount = 0; +TestEntry g_testEntries[MAX_TESTS] = {{nullptr}}; +int g_testCount = 0; int RegisterTest(const char* category, const char* name, TestCreateFcn* fcn) { - int index = g_testCount; - if (index < MAX_TESTS) - { - g_testEntries[index] = { category, name, fcn }; - ++g_testCount; - return index; - } - - return -1; + int index = g_testCount; + if (index < MAX_TESTS) + { + g_testEntries[index] = {category, name, fcn}; + ++g_testCount; + return index; + } + + return -1; } Box2DTestBedTests::Box2DTestBedTests() { - for (int entryId = 0; entryId < g_testCount; ++entryId) - { - addTestCase(g_testEntries[entryId].name, [entryId]() { - return Box2DTestBed::createWithEntryID(entryId); - }); - } + for (int entryId = 0; entryId < g_testCount; ++entryId) + { + addTestCase(g_testEntries[entryId].name, [entryId]() { return Box2DTestBed::createWithEntryID(entryId); }); + } } //------------------------------------------------------------------ @@ -79,205 +77,202 @@ Box2DTestBedTests::Box2DTestBedTests() // //------------------------------------------------------------------ -Box2DTestBed::Box2DTestBed() -{ -} +Box2DTestBed::Box2DTestBed() {} Box2DTestBed::~Box2DTestBed() { - Layer::_eventDispatcher->removeEventListener(_touchListener); + Layer::_eventDispatcher->removeEventListener(_touchListener); } Box2DTestBed* Box2DTestBed::createWithEntryID(int entryId) { - auto layer = new Box2DTestBed(); - layer->initWithEntryID(entryId); -// layer->autorelease(); + auto layer = new Box2DTestBed(); + layer->initWithEntryID(entryId); + // layer->autorelease(); - return layer; + return layer; } bool Box2DTestBed::initWithEntryID(int entryId) { - if (!TestCase::init()) - { - return false; - } - auto director = Director::getInstance(); - Vec2 visibleOrigin = director->getVisibleOrigin(); - Size visibleSize = director->getVisibleSize(); - - m_entryID = entryId; - - m_entry = g_testEntries + entryId; - m_test = m_entry->createFcn(); - - debugDrawNode = g_debugDraw.GetDrawNode(); - m_test->debugDrawNode = debugDrawNode; - m_test->g_debugDraw = g_debugDraw; - - TestCase::addChild(debugDrawNode, 100); - - // init physics - this->initPhysics(); - - auto label = Label::createWithTTF(m_entry->name, "fonts/arial.ttf", 28); - TestCase::addChild(label, 1); - label->setPosition(visibleOrigin.x + visibleSize.width / 2, visibleOrigin.y + visibleSize.height - 50); - - // Adds touch event listener - _touchListener = EventListenerTouchOneByOne::create(); - _touchListener->setSwallowTouches(true); - _touchListener->onTouchBegan = CC_CALLBACK_2(Box2DTestBed::onTouchBegan, this); - _touchListener->onTouchMoved = CC_CALLBACK_2(Box2DTestBed::onTouchMoved, this); - _touchListener->onTouchEnded = CC_CALLBACK_2(Box2DTestBed::onTouchEnded, this); - TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_touchListener,10); - - // Adds Keyboard event listener - _keyboardListener = EventListenerKeyboard::create(); - _keyboardListener->onKeyPressed = CC_CALLBACK_2(Box2DTestBed::onKeyPressed, this); - _keyboardListener->onKeyReleased = CC_CALLBACK_2(Box2DTestBed::onKeyReleased, this); - TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_keyboardListener,11); - - auto _mouseListener = EventListenerMouse::create(); - _mouseListener->onMouseMove = CC_CALLBACK_1(Box2DTestBed::onMouseMove, this); - _mouseListener->onMouseUp = CC_CALLBACK_1(Box2DTestBed::onMouseUp, this); - _mouseListener->onMouseDown = CC_CALLBACK_1(Box2DTestBed::onMouseDown, this); - _mouseListener->onMouseScroll = CC_CALLBACK_1(Box2DTestBed::onMouseScroll, this); - TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_mouseListener, 12); - - // Demo messageString - labelDebugDraw = Label::createWithTTF("TEST", "fonts/arial.ttf", 8.0f); - labelDebugDraw->setAnchorPoint(Vec2(0, 1)); - labelDebugDraw->setPosition(VisibleRect::left().x, VisibleRect::top().y - 10); - labelDebugDraw->setColor(Color3B::WHITE); - TestCase::addChild(labelDebugDraw, 100); - - TestCase::scheduleUpdate(); - - return true; + if (!TestCase::init()) + { + return false; + } + auto director = Director::getInstance(); + Vec2 visibleOrigin = director->getVisibleOrigin(); + Size visibleSize = director->getVisibleSize(); + + m_entryID = entryId; + + m_entry = g_testEntries + entryId; + m_test = m_entry->createFcn(); + + debugDrawNode = g_debugDraw.GetDrawNode(); + m_test->debugDrawNode = debugDrawNode; + m_test->g_debugDraw = g_debugDraw; + + TestCase::addChild(debugDrawNode, 100); + + // init physics + this->initPhysics(); + + auto label = Label::createWithTTF(m_entry->name, "fonts/arial.ttf", 28); + TestCase::addChild(label, 1); + label->setPosition(visibleOrigin.x + visibleSize.width / 2, visibleOrigin.y + visibleSize.height - 50); + + // Adds touch event listener + _touchListener = EventListenerTouchOneByOne::create(); + _touchListener->setSwallowTouches(true); + _touchListener->onTouchBegan = CC_CALLBACK_2(Box2DTestBed::onTouchBegan, this); + _touchListener->onTouchMoved = CC_CALLBACK_2(Box2DTestBed::onTouchMoved, this); + _touchListener->onTouchEnded = CC_CALLBACK_2(Box2DTestBed::onTouchEnded, this); + TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_touchListener, 10); + + // Adds Keyboard event listener + _keyboardListener = EventListenerKeyboard::create(); + _keyboardListener->onKeyPressed = CC_CALLBACK_2(Box2DTestBed::onKeyPressed, this); + _keyboardListener->onKeyReleased = CC_CALLBACK_2(Box2DTestBed::onKeyReleased, this); + TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_keyboardListener, 11); + + auto _mouseListener = EventListenerMouse::create(); + _mouseListener->onMouseMove = CC_CALLBACK_1(Box2DTestBed::onMouseMove, this); + _mouseListener->onMouseUp = CC_CALLBACK_1(Box2DTestBed::onMouseUp, this); + _mouseListener->onMouseDown = CC_CALLBACK_1(Box2DTestBed::onMouseDown, this); + _mouseListener->onMouseScroll = CC_CALLBACK_1(Box2DTestBed::onMouseScroll, this); + TestCase::_eventDispatcher->addEventListenerWithFixedPriority(_mouseListener, 12); + + // Demo messageString + labelDebugDraw = Label::createWithTTF("TEST", "fonts/arial.ttf", 8.0f); + labelDebugDraw->setAnchorPoint(Vec2(0, 1)); + labelDebugDraw->setPosition(VisibleRect::left().x, VisibleRect::top().y - 10); + labelDebugDraw->setColor(Color3B::WHITE); + TestCase::addChild(labelDebugDraw, 100); + + TestCase::scheduleUpdate(); + + return true; } bool Box2DTestBed::onTouchBegan(Touch* touch, Event* event) { - auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; - b2Vec2 pos = { location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio }; - return m_test->MouseDown(pos); + auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; + b2Vec2 pos = {location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio}; + return m_test->MouseDown(pos); } void Box2DTestBed::onTouchMoved(Touch* touch, Event* event) { - auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; - b2Vec2 pos = { location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio }; - m_test->MouseMove(pos); + auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; + b2Vec2 pos = {location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio}; + m_test->MouseMove(pos); } void Box2DTestBed::onTouchEnded(Touch* touch, Event* event) { - auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; - b2Vec2 pos = { location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio }; - m_test->MouseUp(pos); + auto location = touch->getLocation() - g_debugDraw.debugNodeOffset; + b2Vec2 pos = {location.x / g_debugDraw.mRatio, location.y / g_debugDraw.mRatio}; + m_test->MouseUp(pos); } void Box2DTestBed::onKeyPressed(EventKeyboard::KeyCode code, Event* event) { - CCLOG("onKeyPressed, keycode: %d", static_cast(code)); - m_test->Keyboard((static_cast(code) - 59)); // its a bad hack! + CCLOG("onKeyPressed, keycode: %d", static_cast(code)); + m_test->Keyboard((static_cast(code) - 59)); // its a bad hack! } void Box2DTestBed::onKeyReleased(EventKeyboard::KeyCode code, Event* event) { - CCLOG("onKeyPressed, keycode: %d", static_cast(code)); - m_test->KeyboardUp((static_cast(code) - 59)); // its a bad hack! - + CCLOG("onKeyPressed, keycode: %d", static_cast(code)); + m_test->KeyboardUp((static_cast(code) - 59)); // its a bad hack! } void Box2DTestBed::onMouseDown(Event* event) { - EventMouse* e = (EventMouse*)event; - switch (e->getMouseButton()) - { - button[(int)EventMouse::MouseButton::BUTTON_LEFT] = false; - button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = false; - button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = false; - case EventMouse::MouseButton::BUTTON_LEFT: - button[(int)EventMouse::MouseButton::BUTTON_LEFT] = true; - break; - case EventMouse::MouseButton::BUTTON_RIGHT: - button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = true; - break; - case EventMouse::MouseButton::BUTTON_MIDDLE: - button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = true; - break; - } + EventMouse* e = (EventMouse*)event; + switch (e->getMouseButton()) + { + button[(int)EventMouse::MouseButton::BUTTON_LEFT] = false; + button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = false; + button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = false; + case EventMouse::MouseButton::BUTTON_LEFT: + button[(int)EventMouse::MouseButton::BUTTON_LEFT] = true; + break; + case EventMouse::MouseButton::BUTTON_RIGHT: + button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = true; + break; + case EventMouse::MouseButton::BUTTON_MIDDLE: + button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = true; + break; + } } void Box2DTestBed::onMouseUp(Event* event) { - button[(int)EventMouse::MouseButton::BUTTON_LEFT] = false; - button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = false; - button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = false; + button[(int)EventMouse::MouseButton::BUTTON_LEFT] = false; + button[(int)EventMouse::MouseButton::BUTTON_RIGHT] = false; + button[(int)EventMouse::MouseButton::BUTTON_MIDDLE] = false; } void Box2DTestBed::onMouseMove(Event* event) { - EventMouse* e = (EventMouse*)event; - pos = { e->getCursorX() / g_debugDraw.mRatio , e->getCursorY() / g_debugDraw.mRatio }; - - if (button[(int)EventMouse::MouseButton::BUTTON_RIGHT]) - { - (pos.x > oldPos.x) ? g_debugDraw.debugNodeOffset.x += 4 : g_debugDraw.debugNodeOffset.x -= 4; - (pos.y < oldPos.y) ? g_debugDraw.debugNodeOffset.y -= 2 : g_debugDraw.debugNodeOffset.y += 2; - } - oldPos = pos; + EventMouse* e = (EventMouse*)event; + pos = {e->getCursorX() / g_debugDraw.mRatio, e->getCursorY() / g_debugDraw.mRatio}; + + if (button[(int)EventMouse::MouseButton::BUTTON_RIGHT]) + { + (pos.x > oldPos.x) ? g_debugDraw.debugNodeOffset.x += 4 : g_debugDraw.debugNodeOffset.x -= 4; + (pos.y < oldPos.y) ? g_debugDraw.debugNodeOffset.y -= 2 : g_debugDraw.debugNodeOffset.y += 2; + } + oldPos = pos; } void Box2DTestBed::onMouseScroll(Event* event) { - EventMouse* e = (EventMouse*)event; - g_debugDraw.mRatio += e->getScrollY(); + EventMouse* e = (EventMouse*)event; + g_debugDraw.mRatio += e->getScrollY(); } void Box2DTestBed::onEnter() { - Scene::onEnter(); - ImGuiEXT::getInstance()->addFont(FileUtils::getInstance()->fullPathForFilename("fonts/arial.ttf")); - ImGuiEXT::getInstance()->addRenderLoop("#im01", CC_CALLBACK_0(Box2DTestBed::onDrawImGui, this), this); + Scene::onEnter(); + ImGuiEXT::getInstance()->addFont(FileUtils::getInstance()->fullPathForFilename("fonts/arial.ttf")); + ImGuiEXT::getInstance()->addRenderLoop("#im01", CC_CALLBACK_0(Box2DTestBed::onDrawImGui, this), this); } void Box2DTestBed::onExit() { - Scene::onExit(); - ImGuiEXT::getInstance()->removeRenderLoop("#im01"); + Scene::onExit(); + ImGuiEXT::getInstance()->removeRenderLoop("#im01"); } void Box2DTestBed::update(float dt) { - // Debug draw - m_test->debugString = ""; - labelDebugDraw->setString(""); - debugDrawNode->clear(); - m_test->Step(settings); - m_test->m_world->DebugDraw(); + // Debug draw + m_test->debugString = ""; + labelDebugDraw->setString(""); + debugDrawNode->clear(); + m_test->Step(settings); + m_test->m_world->DebugDraw(); } void Box2DTestBed::initPhysics() { - uint32 flags = 0; - flags += 1 * b2Draw::e_shapeBit; - flags += 1 * b2Draw::e_jointBit; - flags += 0 * b2Draw::e_aabbBit; - flags += 0 * b2Draw::e_centerOfMassBit; - g_debugDraw.SetFlags(flags); - g_debugDraw.mRatio = 8; - m_test->m_world->SetDebugDraw(&g_debugDraw); - m_test->g_debugDraw = g_debugDraw; - g_debugDraw.debugNodeOffset = { 250, 70 }; - m_test->g_debugDraw.debugNodeOffset = g_debugDraw.debugNodeOffset; - - settings.m_hertz = 60; + uint32 flags = 0; + flags += 1 * b2Draw::e_shapeBit; + flags += 1 * b2Draw::e_jointBit; + flags += 0 * b2Draw::e_aabbBit; + flags += 0 * b2Draw::e_centerOfMassBit; + g_debugDraw.SetFlags(flags); + g_debugDraw.mRatio = 8; + m_test->m_world->SetDebugDraw(&g_debugDraw); + m_test->g_debugDraw = g_debugDraw; + g_debugDraw.debugNodeOffset = {250, 70}; + m_test->g_debugDraw.debugNodeOffset = g_debugDraw.debugNodeOffset; + + settings.m_hertz = 60; } void Box2DTestBed::onDrawImGui() { - m_test->UpdateUI(); + m_test->UpdateUI(); } \ No newline at end of file diff --git a/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.h b/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.h index ef82f8bdf86f..40fd87846750 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.h +++ b/tests/cpp-tests/Classes/Box2DTestBed/Box2DTestBed.h @@ -31,15 +31,14 @@ DEFINE_TEST_SUITE(Box2DTestBedTests); - class Test; typedef Test* TestCreateFcn(); struct TestEntry { - const char* category; - const char* name; - TestCreateFcn* createFcn; + const char* category; + const char* name; + TestCreateFcn* createFcn; }; #define MAX_TESTS 256 @@ -50,55 +49,53 @@ int RegisterTest(const char* category, const char* name, TestCreateFcn* fcn); class Box2DTestBed : public TestCase, cocos2d::Layer { public: - static Box2DTestBed* createWithEntryID(int entryId); + static Box2DTestBed* createWithEntryID(int entryId); - Box2DTestBed(); - virtual ~Box2DTestBed(); + Box2DTestBed(); + virtual ~Box2DTestBed(); - void onEnter() override; - void onExit() override; + void onEnter() override; + void onExit() override; - void onDrawImGui(); + void onDrawImGui(); - void initPhysics(); - void update(float dt) override; + void initPhysics(); + void update(float dt) override; - void createResetButton(); + void createResetButton(); - bool initWithEntryID(int entryId); + bool initWithEntryID(int entryId); - bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event); - void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event); - void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event); + bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event); + void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event); + void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event); - void onKeyPressed(cocos2d::EventKeyboard::KeyCode code, cocos2d::Event* event); - void onKeyReleased(cocos2d::EventKeyboard::KeyCode code, cocos2d::Event* event); + void onKeyPressed(cocos2d::EventKeyboard::KeyCode code, cocos2d::Event* event); + void onKeyReleased(cocos2d::EventKeyboard::KeyCode code, cocos2d::Event* event); - void onMouseDown(cocos2d::Event* event); - void onMouseUp(cocos2d::Event* event); - void onMouseMove(cocos2d::Event* event); - void onMouseScroll(cocos2d::Event* event); + void onMouseDown(cocos2d::Event* event); + void onMouseUp(cocos2d::Event* event); + void onMouseMove(cocos2d::Event* event); + void onMouseScroll(cocos2d::Event* event); - cocos2d::EventListenerTouchOneByOne* _touchListener; - cocos2d::EventListenerKeyboard* _keyboardListener; + cocos2d::EventListenerTouchOneByOne* _touchListener; + cocos2d::EventListenerKeyboard* _keyboardListener; - TestEntry* m_entry; - Test* m_test; - int m_entryID; + TestEntry* m_entry; + Test* m_test; + int m_entryID; private: + b2World* world; + cocos2d::Texture2D* _spriteTexture; - b2World* world; - cocos2d::Texture2D* _spriteTexture; - - b2Vec2 pos; - b2Vec2 oldPos; - bool button[2]; - - // Debug stuff - cocos2d::DrawNode* debugDrawNode; - cocos2d::extension::PhysicsDebugNodeBox2D g_debugDraw; + b2Vec2 pos; + b2Vec2 oldPos; + bool button[2]; + // Debug stuff + cocos2d::DrawNode* debugDrawNode; + cocos2d::extension::PhysicsDebugNodeBox2D g_debugDraw; }; #endif diff --git a/tests/cpp-tests/Classes/Box2DTestBed/test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/test.cpp index 5d88954b276e..1c60abf38593 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/test.cpp @@ -1,20 +1,20 @@ /* -* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ + * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ #include "tests/test.h" #include "tests/settings.h" @@ -31,471 +31,476 @@ USING_NS_CC_EXT; extern cocos2d::Label* labelDebugDraw; #endif -void DestructionListener::SayGoodbye(b2Joint * joint) +void DestructionListener::SayGoodbye(b2Joint* joint) { - if (test->m_mouseJoint == joint) - { - test->m_mouseJoint = NULL; - } - else - { - test->JointDestroyed(joint); - } + if (test->m_mouseJoint == joint) + { + test->m_mouseJoint = NULL; + } + else + { + test->JointDestroyed(joint); + } } Test::Test() { - b2Vec2 gravity; - gravity.Set(0.0f, -10.0f); - m_world = new b2World(gravity); - m_bomb = NULL; - m_textLine = 30; - m_textIncrement = 13; - m_mouseJoint = NULL; - m_pointCount = 0; + b2Vec2 gravity; + gravity.Set(0.0f, -10.0f); + m_world = new b2World(gravity); + m_bomb = NULL; + m_textLine = 30; + m_textIncrement = 13; + m_mouseJoint = NULL; + m_pointCount = 0; - m_destructionListener.test = this; - m_world->SetDestructionListener(&m_destructionListener); - m_world->SetContactListener(this); - m_world->SetDebugDraw(&g_debugDraw); + m_destructionListener.test = this; + m_world->SetDestructionListener(&m_destructionListener); + m_world->SetContactListener(this); + m_world->SetDebugDraw(&g_debugDraw); - m_bombSpawning = false; + m_bombSpawning = false; - m_stepCount = 0; + m_stepCount = 0; - b2BodyDef bodyDef; - m_groundBody = m_world->CreateBody(&bodyDef); + b2BodyDef bodyDef; + m_groundBody = m_world->CreateBody(&bodyDef); - memset(&m_maxProfile, 0, sizeof(b2Profile)); - memset(&m_totalProfile, 0, sizeof(b2Profile)); + memset(&m_maxProfile, 0, sizeof(b2Profile)); + memset(&m_totalProfile, 0, sizeof(b2Profile)); } Test::~Test() { - // By deleting the world, we delete the bomb, mouse joint, etc. - delete m_world; - m_world = NULL; + // By deleting the world, we delete the bomb, mouse joint, etc. + delete m_world; + m_world = NULL; } -void Test::PreSolve(b2Contact * contact, const b2Manifold * oldManifold) +void Test::PreSolve(b2Contact* contact, const b2Manifold* oldManifold) { - const b2Manifold* manifold = contact->GetManifold(); - - if (manifold->pointCount == 0) - { - return; - } - - b2Fixture* fixtureA = contact->GetFixtureA(); - b2Fixture* fixtureB = contact->GetFixtureB(); - - b2PointState state1[b2_maxManifoldPoints], state2[b2_maxManifoldPoints]; - b2GetPointStates(state1, state2, oldManifold, manifold); - - b2WorldManifold worldManifold; - contact->GetWorldManifold(&worldManifold); - - for (int32 i = 0; i < manifold->pointCount && m_pointCount < k_maxContactPoints; ++i) - { - ContactPoint* cp = m_points + m_pointCount; - cp->fixtureA = fixtureA; - cp->fixtureB = fixtureB; - cp->position = worldManifold.points[i]; - cp->normal = worldManifold.normal; - cp->state = state2[i]; - cp->normalImpulse = manifold->points[i].normalImpulse; - cp->tangentImpulse = manifold->points[i].tangentImpulse; - cp->separation = worldManifold.separations[i]; - ++m_pointCount; - } + const b2Manifold* manifold = contact->GetManifold(); + + if (manifold->pointCount == 0) + { + return; + } + + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + b2PointState state1[b2_maxManifoldPoints], state2[b2_maxManifoldPoints]; + b2GetPointStates(state1, state2, oldManifold, manifold); + + b2WorldManifold worldManifold; + contact->GetWorldManifold(&worldManifold); + + for (int32 i = 0; i < manifold->pointCount && m_pointCount < k_maxContactPoints; ++i) + { + ContactPoint* cp = m_points + m_pointCount; + cp->fixtureA = fixtureA; + cp->fixtureB = fixtureB; + cp->position = worldManifold.points[i]; + cp->normal = worldManifold.normal; + cp->state = state2[i]; + cp->normalImpulse = manifold->points[i].normalImpulse; + cp->tangentImpulse = manifold->points[i].tangentImpulse; + cp->separation = worldManifold.separations[i]; + ++m_pointCount; + } } void Test::DrawTitle(const char* string) { - DrawString(5, 5, string); - m_textLine = int32(26.0f); + DrawString(5, 5, string); + m_textLine = int32(26.0f); } class QueryCallback : public b2QueryCallback { public: - QueryCallback(const b2Vec2& point) - { - m_point = point; - m_fixture = NULL; - } - - bool ReportFixture(b2Fixture* fixture) override - { - b2Body* body = fixture->GetBody(); - if (body->GetType() == b2_dynamicBody) - { - bool inside = fixture->TestPoint(m_point); - if (inside) - { - m_fixture = fixture; - - // We are done, terminate the query. - return false; - } - } - - // Continue the query. - return true; - } - - b2Vec2 m_point; - b2Fixture* m_fixture; + QueryCallback(const b2Vec2& point) + { + m_point = point; + m_fixture = NULL; + } + + bool ReportFixture(b2Fixture* fixture) override + { + b2Body* body = fixture->GetBody(); + if (body->GetType() == b2_dynamicBody) + { + bool inside = fixture->TestPoint(m_point); + if (inside) + { + m_fixture = fixture; + + // We are done, terminate the query. + return false; + } + } + + // Continue the query. + return true; + } + + b2Vec2 m_point; + b2Fixture* m_fixture; }; -bool Test::MouseDown(const b2Vec2 & p) +bool Test::MouseDown(const b2Vec2& p) { - m_mouseWorld = p; - - if (m_mouseJoint != NULL) - { - return false; - } - - // Make a small box. - b2AABB aabb; - b2Vec2 d; - d.Set(0.001f, 0.001f); - aabb.lowerBound = p - d; - aabb.upperBound = p + d; - - // Query the world for overlapping shapes. - QueryCallback callback(p); - m_world->QueryAABB(&callback, aabb); - - if (callback.m_fixture) - { - float frequencyHz = 5.0f; - float dampingRatio = 0.7f; - - b2Body* body = callback.m_fixture->GetBody(); - b2MouseJointDef jd; - jd.bodyA = m_groundBody; - jd.bodyB = body; - jd.target = p; - jd.maxForce = 1000.0f * body->GetMass(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - - m_mouseJoint = (b2MouseJoint*)m_world->CreateJoint(&jd); - body->SetAwake(true); - return true; - } - return false; + m_mouseWorld = p; + + if (m_mouseJoint != NULL) + { + return false; + } + + // Make a small box. + b2AABB aabb; + b2Vec2 d; + d.Set(0.001f, 0.001f); + aabb.lowerBound = p - d; + aabb.upperBound = p + d; + + // Query the world for overlapping shapes. + QueryCallback callback(p); + m_world->QueryAABB(&callback, aabb); + + if (callback.m_fixture) + { + float frequencyHz = 5.0f; + float dampingRatio = 0.7f; + + b2Body* body = callback.m_fixture->GetBody(); + b2MouseJointDef jd; + jd.bodyA = m_groundBody; + jd.bodyB = body; + jd.target = p; + jd.maxForce = 1000.0f * body->GetMass(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + + m_mouseJoint = (b2MouseJoint*)m_world->CreateJoint(&jd); + body->SetAwake(true); + return true; + } + return false; } -void Test::SpawnBomb(const b2Vec2 & worldPt) +void Test::SpawnBomb(const b2Vec2& worldPt) { - m_bombSpawnPoint = worldPt; - m_bombSpawning = true; + m_bombSpawnPoint = worldPt; + m_bombSpawning = true; } -void Test::CompleteBombSpawn(const b2Vec2 & p) +void Test::CompleteBombSpawn(const b2Vec2& p) { - if (m_bombSpawning == false) - { - return; - } - - const float multiplier = 30.0f; - b2Vec2 vel = m_bombSpawnPoint - p; - vel *= multiplier; - LaunchBomb(m_bombSpawnPoint, vel); - m_bombSpawning = false; + if (m_bombSpawning == false) + { + return; + } + + const float multiplier = 30.0f; + b2Vec2 vel = m_bombSpawnPoint - p; + vel *= multiplier; + LaunchBomb(m_bombSpawnPoint, vel); + m_bombSpawning = false; } -void Test::ShiftMouseDown(const b2Vec2 & p) +void Test::ShiftMouseDown(const b2Vec2& p) { - m_mouseWorld = p; + m_mouseWorld = p; - if (m_mouseJoint != NULL) - { - return; - } + if (m_mouseJoint != NULL) + { + return; + } - SpawnBomb(p); + SpawnBomb(p); } -void Test::MouseUp(const b2Vec2 & p) +void Test::MouseUp(const b2Vec2& p) { - if (m_mouseJoint) - { - m_world->DestroyJoint(m_mouseJoint); - m_mouseJoint = NULL; - } - - if (m_bombSpawning) - { - CompleteBombSpawn(p); - } + if (m_mouseJoint) + { + m_world->DestroyJoint(m_mouseJoint); + m_mouseJoint = NULL; + } + + if (m_bombSpawning) + { + CompleteBombSpawn(p); + } } -void Test::MouseMove(const b2Vec2 & p) +void Test::MouseMove(const b2Vec2& p) { - m_mouseWorld = p; + m_mouseWorld = p; - if (m_mouseJoint) - { - m_mouseJoint->SetTarget(p); - } + if (m_mouseJoint) + { + m_mouseJoint->SetTarget(p); + } } void Test::LaunchBomb() { - b2Vec2 p(RandomFloat(-15.0f, 15.0f), 30.0f); - b2Vec2 v = -5.0f * p; - LaunchBomb(p, v); + b2Vec2 p(RandomFloat(-15.0f, 15.0f), 30.0f); + b2Vec2 v = -5.0f * p; + LaunchBomb(p, v); } -void Test::LaunchBomb(const b2Vec2 & position, const b2Vec2 & velocity) +void Test::LaunchBomb(const b2Vec2& position, const b2Vec2& velocity) { - if (m_bomb) - { - m_world->DestroyBody(m_bomb); - m_bomb = NULL; - } - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = position; - bd.bullet = true; - m_bomb = m_world->CreateBody(&bd); - m_bomb->SetLinearVelocity(velocity); - - b2CircleShape circle; - circle.m_radius = 0.3f; - - b2FixtureDef fd; - fd.shape = &circle; - fd.density = 20.0f; - fd.restitution = 0.0f; - - b2Vec2 minV = position - b2Vec2(0.3f, 0.3f); - b2Vec2 maxV = position + b2Vec2(0.3f, 0.3f); - - b2AABB aabb; - aabb.lowerBound = minV; - aabb.upperBound = maxV; - - m_bomb->CreateFixture(&fd); + if (m_bomb) + { + m_world->DestroyBody(m_bomb); + m_bomb = NULL; + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = position; + bd.bullet = true; + m_bomb = m_world->CreateBody(&bd); + m_bomb->SetLinearVelocity(velocity); + + b2CircleShape circle; + circle.m_radius = 0.3f; + + b2FixtureDef fd; + fd.shape = &circle; + fd.density = 20.0f; + fd.restitution = 0.0f; + + b2Vec2 minV = position - b2Vec2(0.3f, 0.3f); + b2Vec2 maxV = position + b2Vec2(0.3f, 0.3f); + + b2AABB aabb; + aabb.lowerBound = minV; + aabb.upperBound = maxV; + + m_bomb->CreateFixture(&fd); } void Test::Step(Settings& settings) { - float timeStep = settings.m_hertz > 0.0f ? 1.0f / settings.m_hertz : float(0.0f); - - if (settings.m_pause) - { - if (settings.m_singleStep) - { - settings.m_singleStep = 0; - } - else - { - timeStep = 0.0f; - } - - DrawString(5, m_textLine, "****PAUSED****"); - - } - - uint32 flags = 0; - flags += settings.m_drawShapes * b2Draw::e_shapeBit; - flags += settings.m_drawJoints * b2Draw::e_jointBit; - flags += settings.m_drawAABBs * b2Draw::e_aabbBit; - flags += settings.m_drawCOMs * b2Draw::e_centerOfMassBit; - g_debugDraw.SetFlags(flags); - - m_world->SetAllowSleeping(settings.m_enableSleep); - m_world->SetWarmStarting(settings.m_enableWarmStarting); - m_world->SetContinuousPhysics(settings.m_enableContinuous); - m_world->SetSubStepping(settings.m_enableSubStepping); - - m_pointCount = 0; - - m_world->Step(timeStep, settings.m_velocityIterations, settings.m_positionIterations); - - m_world->DebugDraw(); - - if (timeStep > 0.0f) - { - ++m_stepCount; - } - - if (settings.m_drawStats) - { - int32 bodyCount = m_world->GetBodyCount(); - int32 contactCount = m_world->GetContactCount(); - int32 jointCount = m_world->GetJointCount(); - DrawString(5, m_textLine, "bodies/contacts/joints = %d/%d/%d", bodyCount, contactCount, jointCount); - - - int32 proxyCount = m_world->GetProxyCount(); - int32 height = m_world->GetTreeHeight(); - int32 balance = m_world->GetTreeBalance(); - float quality = m_world->GetTreeQuality(); - DrawString(5, m_textLine, "proxies/height/balance/quality = %d/%d/%d/%g", proxyCount, height, balance, quality); - - } - - // Track maximum profile times - { - const b2Profile& p = m_world->GetProfile(); - m_maxProfile.step = b2Max(m_maxProfile.step, p.step); - m_maxProfile.collide = b2Max(m_maxProfile.collide, p.collide); - m_maxProfile.solve = b2Max(m_maxProfile.solve, p.solve); - m_maxProfile.solveInit = b2Max(m_maxProfile.solveInit, p.solveInit); - m_maxProfile.solveVelocity = b2Max(m_maxProfile.solveVelocity, p.solveVelocity); - m_maxProfile.solvePosition = b2Max(m_maxProfile.solvePosition, p.solvePosition); - m_maxProfile.solveTOI = b2Max(m_maxProfile.solveTOI, p.solveTOI); - m_maxProfile.broadphase = b2Max(m_maxProfile.broadphase, p.broadphase); - - m_totalProfile.step += p.step; - m_totalProfile.collide += p.collide; - m_totalProfile.solve += p.solve; - m_totalProfile.solveInit += p.solveInit; - m_totalProfile.solveVelocity += p.solveVelocity; - m_totalProfile.solvePosition += p.solvePosition; - m_totalProfile.solveTOI += p.solveTOI; - m_totalProfile.broadphase += p.broadphase; - } - - if (settings.m_drawProfile) - { - const b2Profile& p = m_world->GetProfile(); - - b2Profile aveProfile; - memset(&aveProfile, 0, sizeof(b2Profile)); - if (m_stepCount > 0) - { - float scale = 1.0f / m_stepCount; - aveProfile.step = scale * m_totalProfile.step; - aveProfile.collide = scale * m_totalProfile.collide; - aveProfile.solve = scale * m_totalProfile.solve; - aveProfile.solveInit = scale * m_totalProfile.solveInit; - aveProfile.solveVelocity = scale * m_totalProfile.solveVelocity; - aveProfile.solvePosition = scale * m_totalProfile.solvePosition; - aveProfile.solveTOI = scale * m_totalProfile.solveTOI; - aveProfile.broadphase = scale * m_totalProfile.broadphase; - } - - DrawString(5, m_textLine, "step [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.step, aveProfile.step, m_maxProfile.step); - DrawString(5, m_textLine, "collide [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.collide, aveProfile.collide, m_maxProfile.collide); - DrawString(5, m_textLine, "solve [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solve, aveProfile.solve, m_maxProfile.solve); - DrawString(5, m_textLine, "solve init [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveInit, aveProfile.solveInit, m_maxProfile.solveInit); - DrawString(5, m_textLine, "solve velocity [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveVelocity, aveProfile.solveVelocity, m_maxProfile.solveVelocity); - DrawString(5, m_textLine, "solve position [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solvePosition, aveProfile.solvePosition, m_maxProfile.solvePosition); - DrawString(5, m_textLine, "solveTOI [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveTOI, aveProfile.solveTOI, m_maxProfile.solveTOI); - DrawString(5, m_textLine, "broad-phase [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.broadphase, aveProfile.broadphase, m_maxProfile.broadphase); - } - - if (m_bombSpawning) - { - b2Color c; - c.Set(0.0f, 0.0f, 1.0f); - g_debugDraw.DrawPoint(m_bombSpawnPoint, 4.0f, c); - - c.Set(0.8f, 0.8f, 0.8f); - g_debugDraw.DrawSegment(m_mouseWorld, m_bombSpawnPoint, c); - } - - if (settings.m_drawContactPoints) - { - const float k_impulseScale = 0.1f; - const float k_axisScale = 0.3f; - - for (int32 i = 0; i < m_pointCount; ++i) - { - ContactPoint* point = m_points + i; - - if (point->state == b2_addState) - { - // Add - g_debugDraw.DrawPoint(point->position, 10.0f, b2Color(0.3f, 0.95f, 0.3f)); - } - else if (point->state == b2_persistState) - { - // Persist - g_debugDraw.DrawPoint(point->position, 5.0f, b2Color(0.3f, 0.3f, 0.95f)); - } - - if (settings.m_drawContactNormals == 1) - { - b2Vec2 p1 = point->position; - b2Vec2 p2 = p1 + k_axisScale * point->normal; - g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.9f)); - } - else if (settings.m_drawContactImpulse == 1) - { - b2Vec2 p1 = point->position; - b2Vec2 p2 = p1 + k_impulseScale * point->normalImpulse * point->normal; - g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.3f)); - } - - if (settings.m_drawFrictionImpulse == 1) - { - b2Vec2 tangent = b2Cross(point->normal, 1.0f); - b2Vec2 p1 = point->position; - b2Vec2 p2 = p1 + k_impulseScale * point->tangentImpulse * tangent; - g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.3f)); - } - } - } + float timeStep = settings.m_hertz > 0.0f ? 1.0f / settings.m_hertz : float(0.0f); + + if (settings.m_pause) + { + if (settings.m_singleStep) + { + settings.m_singleStep = 0; + } + else + { + timeStep = 0.0f; + } + + DrawString(5, m_textLine, "****PAUSED****"); + } + + uint32 flags = 0; + flags += settings.m_drawShapes * b2Draw::e_shapeBit; + flags += settings.m_drawJoints * b2Draw::e_jointBit; + flags += settings.m_drawAABBs * b2Draw::e_aabbBit; + flags += settings.m_drawCOMs * b2Draw::e_centerOfMassBit; + g_debugDraw.SetFlags(flags); + + m_world->SetAllowSleeping(settings.m_enableSleep); + m_world->SetWarmStarting(settings.m_enableWarmStarting); + m_world->SetContinuousPhysics(settings.m_enableContinuous); + m_world->SetSubStepping(settings.m_enableSubStepping); + + m_pointCount = 0; + + m_world->Step(timeStep, settings.m_velocityIterations, settings.m_positionIterations); + + m_world->DebugDraw(); + + if (timeStep > 0.0f) + { + ++m_stepCount; + } + + if (settings.m_drawStats) + { + int32 bodyCount = m_world->GetBodyCount(); + int32 contactCount = m_world->GetContactCount(); + int32 jointCount = m_world->GetJointCount(); + DrawString(5, m_textLine, "bodies/contacts/joints = %d/%d/%d", bodyCount, contactCount, jointCount); + + int32 proxyCount = m_world->GetProxyCount(); + int32 height = m_world->GetTreeHeight(); + int32 balance = m_world->GetTreeBalance(); + float quality = m_world->GetTreeQuality(); + DrawString(5, m_textLine, "proxies/height/balance/quality = %d/%d/%d/%g", proxyCount, height, balance, quality); + } + + // Track maximum profile times + { + const b2Profile& p = m_world->GetProfile(); + m_maxProfile.step = b2Max(m_maxProfile.step, p.step); + m_maxProfile.collide = b2Max(m_maxProfile.collide, p.collide); + m_maxProfile.solve = b2Max(m_maxProfile.solve, p.solve); + m_maxProfile.solveInit = b2Max(m_maxProfile.solveInit, p.solveInit); + m_maxProfile.solveVelocity = b2Max(m_maxProfile.solveVelocity, p.solveVelocity); + m_maxProfile.solvePosition = b2Max(m_maxProfile.solvePosition, p.solvePosition); + m_maxProfile.solveTOI = b2Max(m_maxProfile.solveTOI, p.solveTOI); + m_maxProfile.broadphase = b2Max(m_maxProfile.broadphase, p.broadphase); + + m_totalProfile.step += p.step; + m_totalProfile.collide += p.collide; + m_totalProfile.solve += p.solve; + m_totalProfile.solveInit += p.solveInit; + m_totalProfile.solveVelocity += p.solveVelocity; + m_totalProfile.solvePosition += p.solvePosition; + m_totalProfile.solveTOI += p.solveTOI; + m_totalProfile.broadphase += p.broadphase; + } + + if (settings.m_drawProfile) + { + const b2Profile& p = m_world->GetProfile(); + + b2Profile aveProfile; + memset(&aveProfile, 0, sizeof(b2Profile)); + if (m_stepCount > 0) + { + float scale = 1.0f / m_stepCount; + aveProfile.step = scale * m_totalProfile.step; + aveProfile.collide = scale * m_totalProfile.collide; + aveProfile.solve = scale * m_totalProfile.solve; + aveProfile.solveInit = scale * m_totalProfile.solveInit; + aveProfile.solveVelocity = scale * m_totalProfile.solveVelocity; + aveProfile.solvePosition = scale * m_totalProfile.solvePosition; + aveProfile.solveTOI = scale * m_totalProfile.solveTOI; + aveProfile.broadphase = scale * m_totalProfile.broadphase; + } + + DrawString(5, m_textLine, "step [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.step, aveProfile.step, + m_maxProfile.step); + DrawString(5, m_textLine, "collide [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.collide, aveProfile.collide, + m_maxProfile.collide); + DrawString(5, m_textLine, "solve [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solve, aveProfile.solve, + m_maxProfile.solve); + DrawString(5, m_textLine, "solve init [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveInit, aveProfile.solveInit, + m_maxProfile.solveInit); + DrawString(5, m_textLine, "solve velocity [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveVelocity, + aveProfile.solveVelocity, m_maxProfile.solveVelocity); + DrawString(5, m_textLine, "solve position [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solvePosition, + aveProfile.solvePosition, m_maxProfile.solvePosition); + DrawString(5, m_textLine, "solveTOI [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.solveTOI, aveProfile.solveTOI, + m_maxProfile.solveTOI); + DrawString(5, m_textLine, "broad-phase [ave] (max) = %5.2f [%6.2f] (%6.2f)", p.broadphase, + aveProfile.broadphase, m_maxProfile.broadphase); + } + + if (m_bombSpawning) + { + b2Color c; + c.Set(0.0f, 0.0f, 1.0f); + g_debugDraw.DrawPoint(m_bombSpawnPoint, 4.0f, c); + + c.Set(0.8f, 0.8f, 0.8f); + g_debugDraw.DrawSegment(m_mouseWorld, m_bombSpawnPoint, c); + } + + if (settings.m_drawContactPoints) + { + const float k_impulseScale = 0.1f; + const float k_axisScale = 0.3f; + + for (int32 i = 0; i < m_pointCount; ++i) + { + ContactPoint* point = m_points + i; + + if (point->state == b2_addState) + { + // Add + g_debugDraw.DrawPoint(point->position, 10.0f, b2Color(0.3f, 0.95f, 0.3f)); + } + else if (point->state == b2_persistState) + { + // Persist + g_debugDraw.DrawPoint(point->position, 5.0f, b2Color(0.3f, 0.3f, 0.95f)); + } + + if (settings.m_drawContactNormals == 1) + { + b2Vec2 p1 = point->position; + b2Vec2 p2 = p1 + k_axisScale * point->normal; + g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.9f)); + } + else if (settings.m_drawContactImpulse == 1) + { + b2Vec2 p1 = point->position; + b2Vec2 p2 = p1 + k_impulseScale * point->normalImpulse * point->normal; + g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.3f)); + } + + if (settings.m_drawFrictionImpulse == 1) + { + b2Vec2 tangent = b2Cross(point->normal, 1.0f); + b2Vec2 p1 = point->position; + b2Vec2 p2 = p1 + k_impulseScale * point->tangentImpulse * tangent; + g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.9f, 0.3f)); + } + } + } } -void Test::ShiftOrigin(const b2Vec2 & newOrigin) +void Test::ShiftOrigin(const b2Vec2& newOrigin) { - m_world->ShiftOrigin(newOrigin); + m_world->ShiftOrigin(newOrigin); } void Test::initShader(void) { - // initShader is unsupported + // initShader is unsupported } void Test::DrawString(int x, int y, const char* fmt, ...) { #if defined(CC_PLATFORM_PC) - debugString.append(std::string(fmt)); - debugString.append("\n"); - labelDebugDraw->setString(debugString); - // labelDebugDraw->setPosition(x, y); + debugString.append(std::string(fmt)); + debugString.append("\n"); + labelDebugDraw->setString(debugString); + // labelDebugDraw->setPosition(x, y); #endif } void Test::DrawString(const b2Vec2& pw, const char* fmt, ...) { #if defined(CC_PLATFORM_PC) - debugString.append(std::string(fmt)); - debugString.append("\n"); - labelDebugDraw->setString(debugString); - // labelDebugDraw->setPosition(pw.x, pw.y); + debugString.append(std::string(fmt)); + debugString.append("\n"); + labelDebugDraw->setString(debugString); + // labelDebugDraw->setPosition(pw.x, pw.y); #endif } - - void Test::DrawAABB(b2AABB* aabb, const b2Color& color) { - b2Vec2 p1 = aabb->lowerBound; - b2Vec2 p2 = b2Vec2(aabb->upperBound.x, aabb->lowerBound.y); - b2Vec2 p3 = aabb->upperBound; - b2Vec2 p4 = b2Vec2(aabb->lowerBound.x, aabb->upperBound.y); - - Vec2 verts[] = { - Vec2(p1.x * g_debugDraw.mRatio, p1.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset , - Vec2(p2.x * g_debugDraw.mRatio, p2.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset , - Vec2(p3.x * g_debugDraw.mRatio, p3.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset , - Vec2(p4.x * g_debugDraw.mRatio, p4.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset , - }; - debugDrawNode->drawPolygon(verts, sizeof(verts) / sizeof(verts[0]), Color4F(color.r / 2, color.g / 2, color.b / 2, 0), 0.4f, Color4F(color.r, color.g, color.b, color.a)); + b2Vec2 p1 = aabb->lowerBound; + b2Vec2 p2 = b2Vec2(aabb->upperBound.x, aabb->lowerBound.y); + b2Vec2 p3 = aabb->upperBound; + b2Vec2 p4 = b2Vec2(aabb->lowerBound.x, aabb->upperBound.y); + + Vec2 verts[] = { + Vec2(p1.x * g_debugDraw.mRatio, p1.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset, + Vec2(p2.x * g_debugDraw.mRatio, p2.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset, + Vec2(p3.x * g_debugDraw.mRatio, p3.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset, + Vec2(p4.x * g_debugDraw.mRatio, p4.y * g_debugDraw.mRatio) + g_debugDraw.debugNodeOffset, + }; + debugDrawNode->drawPolygon(verts, sizeof(verts) / sizeof(verts[0]), + Color4F(color.r / 2, color.g / 2, color.b / 2, 0), 0.4f, + Color4F(color.r, color.g, color.b, color.a)); } void Test::Flush() { - // Flush is unsupported + // Flush is unsupported } \ No newline at end of file diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/add_pair.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/add_pair.cpp index ceccbf8ca2e7..4465d35f3e01 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/add_pair.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/add_pair.cpp @@ -25,47 +25,43 @@ class AddPair : public Test { public: + AddPair() + { + m_world->SetGravity(b2Vec2(0.0f, 0.0f)); + { + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = 0.1f; - AddPair() - { - m_world->SetGravity(b2Vec2(0.0f,0.0f)); - { - b2CircleShape shape; - shape.m_p.SetZero(); - shape.m_radius = 0.1f; + float minX = -6.0f; + float maxX = 0.0f; + float minY = 4.0f; + float maxY = 6.0f; - float minX = -6.0f; - float maxX = 0.0f; - float minY = 4.0f; - float maxY = 6.0f; - - for (int32 i = 0; i < 400; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = b2Vec2(RandomFloat(minX,maxX),RandomFloat(minY,maxY)); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 0.01f); - } - } - - { - b2PolygonShape shape; - shape.SetAsBox(1.5f, 1.5f); - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-40.0f,5.0f); - bd.bullet = true; - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 1.0f); - body->SetLinearVelocity(b2Vec2(10.0f, 0.0f)); - } - } + for (int32 i = 0; i < 400; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(RandomFloat(minX, maxX), RandomFloat(minY, maxY)); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 0.01f); + } + } - static Test* Create() - { - return new AddPair; - } + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-40.0f, 5.0f); + bd.bullet = true; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + body->SetLinearVelocity(b2Vec2(10.0f, 0.0f)); + } + } + + static Test* Create() { return new AddPair; } }; static int testIndex = RegisterTest("Benchmark", "Add Pair", AddPair::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/apply_force.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/apply_force.cpp index 40fc7e1decf4..51239f60e2f3 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/apply_force.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/apply_force.cpp @@ -28,176 +28,172 @@ class ApplyForce : public Test { public: - ApplyForce() - { - m_world->SetGravity(b2Vec2(0.0f, 0.0f)); - - const float k_restitution = 0.4f; - - b2Body* ground; - { - b2BodyDef bd; - bd.position.Set(0.0f, 20.0f); - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - - b2FixtureDef sd; - sd.shape = &shape; - sd.density = 0.0f; - sd.restitution = k_restitution; - - // Left vertical - shape.SetTwoSided(b2Vec2(-20.0f, -20.0f), b2Vec2(-20.0f, 20.0f)); - ground->CreateFixture(&sd); - - // Right vertical - shape.SetTwoSided(b2Vec2(20.0f, -20.0f), b2Vec2(20.0f, 20.0f)); - ground->CreateFixture(&sd); - - // Top horizontal - shape.SetTwoSided(b2Vec2(-20.0f, 20.0f), b2Vec2(20.0f, 20.0f)); - ground->CreateFixture(&sd); - - // Bottom horizontal - shape.SetTwoSided(b2Vec2(-20.0f, -20.0f), b2Vec2(20.0f, -20.0f)); - ground->CreateFixture(&sd); - } - - { - b2Transform xf1; - xf1.q.Set(0.3524f * b2_pi); - xf1.p = xf1.q.GetXAxis(); - - b2Vec2 vertices[3]; - vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); - vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); - vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); - - b2PolygonShape poly1; - poly1.Set(vertices, 3); - - b2FixtureDef sd1; - sd1.shape = &poly1; - sd1.density = 2.0f; - - b2Transform xf2; - xf2.q.Set(-0.3524f * b2_pi); - xf2.p = -xf2.q.GetXAxis(); - - vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); - vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); - vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); - - b2PolygonShape poly2; - poly2.Set(vertices, 3); - - b2FixtureDef sd2; - sd2.shape = &poly2; - sd2.density = 2.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - bd.position.Set(0.0f, 3.0); - bd.angle = b2_pi; - bd.allowSleep = false; - m_body = m_world->CreateBody(&bd); - m_body->CreateFixture(&sd1); - m_body->CreateFixture(&sd2); - - float gravity = 10.0f; - float I = m_body->GetInertia(); - float mass = m_body->GetMass(); - - // Compute an effective radius that can be used to - // set the max torque for a friction joint - // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) - float radius = b2Sqrt(2.0f * I / mass); - - b2FrictionJointDef jd; - jd.bodyA = ground; - jd.bodyB = m_body; - jd.localAnchorA.SetZero(); - jd.localAnchorB = m_body->GetLocalCenter(); - jd.collideConnected = true; - jd.maxForce = 0.5f * mass * gravity; - jd.maxTorque = 0.2f * mass * radius * gravity; - - m_world->CreateJoint(&jd); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - fd.friction = 0.3f; - - for (int i = 0; i < 10; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - - bd.position.Set(0.0f, 7.0f + 1.54f * i); - b2Body* body = m_world->CreateBody(&bd); - - body->CreateFixture(&fd); - - float gravity = 10.0f; - float I = body->GetInertia(); - float mass = body->GetMass(); - - // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) - float radius = b2Sqrt(2.0f * I / mass); - - b2FrictionJointDef jd; - jd.localAnchorA.SetZero(); - jd.localAnchorB.SetZero(); - jd.bodyA = ground; - jd.bodyB = body; - jd.collideConnected = true; - jd.maxForce = mass * gravity; - jd.maxTorque = 0.1f * mass * radius * gravity; - - m_world->CreateJoint(&jd); - } - } - } - - void Step(Settings& settings) override - { - DrawString(5, m_textLine, "Forward (W), Turn (A) and (D)"); - - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_W) == GLFW_PRESS) - //{ - // b2Vec2 f = m_body->GetWorldVector(b2Vec2(0.0f, -50.0f)); - // b2Vec2 p = m_body->GetWorldPoint(b2Vec2(0.0f, 3.0f)); - // m_body->ApplyForce(f, p, true); - //} - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_A) == GLFW_PRESS) - //{ - // m_body->ApplyTorque(10.0f, true); - //} - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_D) == GLFW_PRESS) - //{ - // m_body->ApplyTorque(-10.0f, true); - //} - - Test::Step(settings); - } - - static Test* Create() - { - return new ApplyForce; - } - - b2Body* m_body; + ApplyForce() + { + m_world->SetGravity(b2Vec2(0.0f, 0.0f)); + + const float k_restitution = 0.4f; + + b2Body* ground; + { + b2BodyDef bd; + bd.position.Set(0.0f, 20.0f); + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + b2FixtureDef sd; + sd.shape = &shape; + sd.density = 0.0f; + sd.restitution = k_restitution; + + // Left vertical + shape.SetTwoSided(b2Vec2(-20.0f, -20.0f), b2Vec2(-20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Right vertical + shape.SetTwoSided(b2Vec2(20.0f, -20.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Top horizontal + shape.SetTwoSided(b2Vec2(-20.0f, 20.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Bottom horizontal + shape.SetTwoSided(b2Vec2(-20.0f, -20.0f), b2Vec2(20.0f, -20.0f)); + ground->CreateFixture(&sd); + } + + { + b2Transform xf1; + xf1.q.Set(0.3524f * b2_pi); + xf1.p = xf1.q.GetXAxis(); + + b2Vec2 vertices[3]; + vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); + + b2PolygonShape poly1; + poly1.Set(vertices, 3); + + b2FixtureDef sd1; + sd1.shape = &poly1; + sd1.density = 2.0f; + + b2Transform xf2; + xf2.q.Set(-0.3524f * b2_pi); + xf2.p = -xf2.q.GetXAxis(); + + vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); + + b2PolygonShape poly2; + poly2.Set(vertices, 3); + + b2FixtureDef sd2; + sd2.shape = &poly2; + sd2.density = 2.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(0.0f, 3.0); + bd.angle = b2_pi; + bd.allowSleep = false; + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&sd1); + m_body->CreateFixture(&sd2); + + float gravity = 10.0f; + float I = m_body->GetInertia(); + float mass = m_body->GetMass(); + + // Compute an effective radius that can be used to + // set the max torque for a friction joint + // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) + float radius = b2Sqrt(2.0f * I / mass); + + b2FrictionJointDef jd; + jd.bodyA = ground; + jd.bodyB = m_body; + jd.localAnchorA.SetZero(); + jd.localAnchorB = m_body->GetLocalCenter(); + jd.collideConnected = true; + jd.maxForce = 0.5f * mass * gravity; + jd.maxTorque = 0.2f * mass * radius * gravity; + + m_world->CreateJoint(&jd); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.3f; + + for (int i = 0; i < 10; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(0.0f, 7.0f + 1.54f * i); + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + + float gravity = 10.0f; + float I = body->GetInertia(); + float mass = body->GetMass(); + + // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) + float radius = b2Sqrt(2.0f * I / mass); + + b2FrictionJointDef jd; + jd.localAnchorA.SetZero(); + jd.localAnchorB.SetZero(); + jd.bodyA = ground; + jd.bodyB = body; + jd.collideConnected = true; + jd.maxForce = mass * gravity; + jd.maxTorque = 0.1f * mass * radius * gravity; + + m_world->CreateJoint(&jd); + } + } + } + + void Step(Settings& settings) override + { + DrawString(5, m_textLine, "Forward (W), Turn (A) and (D)"); + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_W) == GLFW_PRESS) + //{ + // b2Vec2 f = m_body->GetWorldVector(b2Vec2(0.0f, -50.0f)); + // b2Vec2 p = m_body->GetWorldPoint(b2Vec2(0.0f, 3.0f)); + // m_body->ApplyForce(f, p, true); + // } + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_A) == GLFW_PRESS) + //{ + // m_body->ApplyTorque(10.0f, true); + // } + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_D) == GLFW_PRESS) + //{ + // m_body->ApplyTorque(-10.0f, true); + // } + + Test::Step(settings); + } + + static Test* Create() { return new ApplyForce; } + + b2Body* m_body; }; static int testIndex = RegisterTest("Forces", "Apply Force", ApplyForce::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/body_types.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/body_types.cpp index 055d27957833..0de1079826f0 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/body_types.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/body_types.cpp @@ -25,139 +25,134 @@ class BodyTypes : public Test { public: - BodyTypes() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - - b2FixtureDef fd; - fd.shape = &shape; - - ground->CreateFixture(&fd); - } - - // Define attachment - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 3.0f); - m_attachment = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 2.0f); - m_attachment->CreateFixture(&shape, 2.0f); - } - - // Define platform - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-4.0f, 5.0f); - m_platform = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 4.0f, b2Vec2(4.0f, 0.0f), 0.5f * b2_pi); - - b2FixtureDef fd; - fd.shape = &shape; - fd.friction = 0.6f; - fd.density = 2.0f; - m_platform->CreateFixture(&fd); - - b2RevoluteJointDef rjd; - rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f)); - rjd.maxMotorTorque = 50.0f; - rjd.enableMotor = true; - m_world->CreateJoint(&rjd); - - b2PrismaticJointDef pjd; - pjd.Initialize(ground, m_platform, b2Vec2(0.0f, 5.0f), b2Vec2(1.0f, 0.0f)); - - pjd.maxMotorForce = 1000.0f; - pjd.enableMotor = true; - pjd.lowerTranslation = -10.0f; - pjd.upperTranslation = 10.0f; - pjd.enableLimit = true; - - m_world->CreateJoint(&pjd); - - m_speed = 3.0f; - } - - // Create a payload - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 8.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.75f, 0.75f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.friction = 0.6f; - fd.density = 2.0f; - - body->CreateFixture(&fd); - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_D: - m_platform->SetType(b2_dynamicBody); - break; - - case GLFW_KEY_S: - m_platform->SetType(b2_staticBody); - break; - - case GLFW_KEY_K: - m_platform->SetType(b2_kinematicBody); - m_platform->SetLinearVelocity(b2Vec2(-m_speed, 0.0f)); - m_platform->SetAngularVelocity(0.0f); - break; - } - } - - void Step(Settings& settings) override - { - // Drive the kinematic body. - if (m_platform->GetType() == b2_kinematicBody) - { - b2Vec2 p = m_platform->GetTransform().p; - b2Vec2 v = m_platform->GetLinearVelocity(); - - if ((p.x < -10.0f && v.x < 0.0f) || - (p.x > 10.0f && v.x > 0.0f)) - { - v.x = -v.x; - m_platform->SetLinearVelocity(v); - } - } - - Test::Step(settings); - - DrawString(5, m_textLine, "Keys: (d) dynamic, (s) static, (k) kinematic"); - - } - - static Test* Create() - { - return new BodyTypes; - } - - b2Body* m_attachment; - b2Body* m_platform; - float m_speed; + BodyTypes() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + + ground->CreateFixture(&fd); + } + + // Define attachment + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 3.0f); + m_attachment = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 2.0f); + m_attachment->CreateFixture(&shape, 2.0f); + } + + // Define platform + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-4.0f, 5.0f); + m_platform = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 4.0f, b2Vec2(4.0f, 0.0f), 0.5f * b2_pi); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.6f; + fd.density = 2.0f; + m_platform->CreateFixture(&fd); + + b2RevoluteJointDef rjd; + rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f)); + rjd.maxMotorTorque = 50.0f; + rjd.enableMotor = true; + m_world->CreateJoint(&rjd); + + b2PrismaticJointDef pjd; + pjd.Initialize(ground, m_platform, b2Vec2(0.0f, 5.0f), b2Vec2(1.0f, 0.0f)); + + pjd.maxMotorForce = 1000.0f; + pjd.enableMotor = true; + pjd.lowerTranslation = -10.0f; + pjd.upperTranslation = 10.0f; + pjd.enableLimit = true; + + m_world->CreateJoint(&pjd); + + m_speed = 3.0f; + } + + // Create a payload + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 8.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.75f, 0.75f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.6f; + fd.density = 2.0f; + + body->CreateFixture(&fd); + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_D: + m_platform->SetType(b2_dynamicBody); + break; + + case GLFW_KEY_S: + m_platform->SetType(b2_staticBody); + break; + + case GLFW_KEY_K: + m_platform->SetType(b2_kinematicBody); + m_platform->SetLinearVelocity(b2Vec2(-m_speed, 0.0f)); + m_platform->SetAngularVelocity(0.0f); + break; + } + } + + void Step(Settings& settings) override + { + // Drive the kinematic body. + if (m_platform->GetType() == b2_kinematicBody) + { + b2Vec2 p = m_platform->GetTransform().p; + b2Vec2 v = m_platform->GetLinearVelocity(); + + if ((p.x < -10.0f && v.x < 0.0f) || (p.x > 10.0f && v.x > 0.0f)) + { + v.x = -v.x; + m_platform->SetLinearVelocity(v); + } + } + + Test::Step(settings); + + DrawString(5, m_textLine, "Keys: (d) dynamic, (s) static, (k) kinematic"); + } + + static Test* Create() { return new BodyTypes; } + + b2Body* m_attachment; + b2Body* m_platform; + float m_speed; }; static int testIndex = RegisterTest("Examples", "Body Types", BodyTypes::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/box_stack.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/box_stack.cpp index 10da577cbcac..463d399b7f8e 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/box_stack.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/box_stack.cpp @@ -27,148 +27,144 @@ extern B2_API bool g_blockSolve; class BoxStack : public Test { public: + enum + { + e_columnCount = 1, + e_rowCount = 15 + // e_columnCount = 1, + // e_rowCount = 1 + }; + + BoxStack() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(b2Vec2(20.0f, 0.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + float xs[5] = {0.0f, -10.0f, -5.0f, 5.0f, 10.0f}; + + for (int32 j = 0; j < e_columnCount; ++j) + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.3f; + + for (int i = 0; i < e_rowCount; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + + int32 n = j * e_rowCount + i; + b2Assert(n < e_rowCount * e_columnCount); + m_indices[n] = n; + bd.userData.pointer = n; + + float x = 0.0f; + // float x = RandomFloat(-0.02f, 0.02f); + // float x = i % 2 == 0 ? -0.01f : 0.01f; + bd.position.Set(xs[j] + x, 0.55f + 1.1f * i); + b2Body* body = m_world->CreateBody(&bd); + + m_bodies[n] = body; + + body->CreateFixture(&fd); + } + } + + m_bullet = NULL; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_COMMA: + if (m_bullet != NULL) + { + m_world->DestroyBody(m_bullet); + m_bullet = NULL; + } + + { + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.restitution = 0.05f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.bullet = true; + bd.position.Set(-31.0f, 5.0f); + + m_bullet = m_world->CreateBody(&bd); + m_bullet->CreateFixture(&fd); + + m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); + } + break; - enum - { - e_columnCount = 1, - e_rowCount = 15 - //e_columnCount = 1, - //e_rowCount = 1 - }; - - BoxStack() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(b2Vec2(20.0f, 0.0f), b2Vec2(20.0f, 20.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - float xs[5] = {0.0f, -10.0f, -5.0f, 5.0f, 10.0f}; - - for (int32 j = 0; j < e_columnCount; ++j) - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - fd.friction = 0.3f; - - for (int i = 0; i < e_rowCount; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - - int32 n = j * e_rowCount + i; - b2Assert(n < e_rowCount * e_columnCount); - m_indices[n] = n; - bd.userData.pointer = n; - - float x = 0.0f; - //float x = RandomFloat(-0.02f, 0.02f); - //float x = i % 2 == 0 ? -0.01f : 0.01f; - bd.position.Set(xs[j] + x, 0.55f + 1.1f * i); - b2Body* body = m_world->CreateBody(&bd); - - m_bodies[n] = body; - - body->CreateFixture(&fd); - } - } - - m_bullet = NULL; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_COMMA: - if (m_bullet != NULL) - { - m_world->DestroyBody(m_bullet); - m_bullet = NULL; - } - - { - b2CircleShape shape; - shape.m_radius = 0.25f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.restitution = 0.05f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.bullet = true; - bd.position.Set(-31.0f, 5.0f); - - m_bullet = m_world->CreateBody(&bd); - m_bullet->CreateFixture(&fd); - - m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); - } - break; - case GLFW_KEY_B: g_blockSolve = !g_blockSolve; break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - DrawString(5, m_textLine, "Press: (,) to launch a bullet."); - - DrawString(5, m_textLine, "Blocksolve = %d", g_blockSolve); - if (m_stepCount == 300) - { - if (m_bullet != NULL) - { - m_world->DestroyBody(m_bullet); - m_bullet = NULL; - } - - { - b2CircleShape shape; - shape.m_radius = 0.25f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.restitution = 0.05f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.bullet = true; - bd.position.Set(-31.0f, 5.0f); - - m_bullet = m_world->CreateBody(&bd); - m_bullet->CreateFixture(&fd); - - m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); - } - } - } - - static Test* Create() - { - return new BoxStack; - } - - b2Body* m_bullet; - b2Body* m_bodies[e_rowCount * e_columnCount]; - int32 m_indices[e_rowCount * e_columnCount]; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + DrawString(5, m_textLine, "Press: (,) to launch a bullet."); + + DrawString(5, m_textLine, "Blocksolve = %d", g_blockSolve); + if (m_stepCount == 300) + { + if (m_bullet != NULL) + { + m_world->DestroyBody(m_bullet); + m_bullet = NULL; + } + + { + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.restitution = 0.05f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.bullet = true; + bd.position.Set(-31.0f, 5.0f); + + m_bullet = m_world->CreateBody(&bd); + m_bullet->CreateFixture(&fd); + + m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); + } + } + } + + static Test* Create() { return new BoxStack; } + + b2Body* m_bullet; + b2Body* m_bodies[e_rowCount * e_columnCount]; + int32 m_indices[e_rowCount * e_columnCount]; }; static int testIndex = RegisterTest("Stacking", "Boxes", BoxStack::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/breakable.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/breakable.cpp index 136244a49d3b..1128a56ef498 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/breakable.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/breakable.cpp @@ -26,133 +26,129 @@ class Breakable : public Test { public: - - enum - { - e_count = 7 - }; - - Breakable() - { - // Ground body - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Breakable dynamic body - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 40.0f); - bd.angle = 0.25f * b2_pi; - m_body1 = m_world->CreateBody(&bd); - - m_shape1.SetAsBox(0.5f, 0.5f, b2Vec2(-0.5f, 0.0f), 0.0f); - m_piece1 = m_body1->CreateFixture(&m_shape1, 1.0f); - - m_shape2.SetAsBox(0.5f, 0.5f, b2Vec2(0.5f, 0.0f), 0.0f); - m_piece2 = m_body1->CreateFixture(&m_shape2, 1.0f); - } - - m_break = false; - m_broke = false; - } - - void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) override - { - if (m_broke) - { - // The body already broke. - return; - } - - // Should the body break? - int32 count = contact->GetManifold()->pointCount; - - float maxImpulse = 0.0f; - for (int32 i = 0; i < count; ++i) - { - maxImpulse = b2Max(maxImpulse, impulse->normalImpulses[i]); - } - - if (maxImpulse > 40.0f) - { - // Flag the body for breaking. - m_break = true; - } - } - - void Break() - { - // Create two bodies from one. - b2Body* body1 = m_piece1->GetBody(); - b2Vec2 center = body1->GetWorldCenter(); - - body1->DestroyFixture(m_piece2); - m_piece2 = NULL; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = body1->GetPosition(); - bd.angle = body1->GetAngle(); - - b2Body* body2 = m_world->CreateBody(&bd); - m_piece2 = body2->CreateFixture(&m_shape2, 1.0f); - - // Compute consistent velocities for new bodies based on - // cached velocity. - b2Vec2 center1 = body1->GetWorldCenter(); - b2Vec2 center2 = body2->GetWorldCenter(); - - b2Vec2 velocity1 = m_velocity + b2Cross(m_angularVelocity, center1 - center); - b2Vec2 velocity2 = m_velocity + b2Cross(m_angularVelocity, center2 - center); - - body1->SetAngularVelocity(m_angularVelocity); - body1->SetLinearVelocity(velocity1); - - body2->SetAngularVelocity(m_angularVelocity); - body2->SetLinearVelocity(velocity2); - } - - void Step(Settings& settings) override - { - if (m_break) - { - Break(); - m_broke = true; - m_break = false; - } - - // Cache velocities to improve movement on breakage. - if (m_broke == false) - { - m_velocity = m_body1->GetLinearVelocity(); - m_angularVelocity = m_body1->GetAngularVelocity(); - } - - Test::Step(settings); - } - - static Test* Create() - { - return new Breakable; - } - - b2Body* m_body1; - b2Vec2 m_velocity; - float m_angularVelocity; - b2PolygonShape m_shape1; - b2PolygonShape m_shape2; - b2Fixture* m_piece1; - b2Fixture* m_piece2; - - bool m_broke; - bool m_break; + enum + { + e_count = 7 + }; + + Breakable() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Breakable dynamic body + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 40.0f); + bd.angle = 0.25f * b2_pi; + m_body1 = m_world->CreateBody(&bd); + + m_shape1.SetAsBox(0.5f, 0.5f, b2Vec2(-0.5f, 0.0f), 0.0f); + m_piece1 = m_body1->CreateFixture(&m_shape1, 1.0f); + + m_shape2.SetAsBox(0.5f, 0.5f, b2Vec2(0.5f, 0.0f), 0.0f); + m_piece2 = m_body1->CreateFixture(&m_shape2, 1.0f); + } + + m_break = false; + m_broke = false; + } + + void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) override + { + if (m_broke) + { + // The body already broke. + return; + } + + // Should the body break? + int32 count = contact->GetManifold()->pointCount; + + float maxImpulse = 0.0f; + for (int32 i = 0; i < count; ++i) + { + maxImpulse = b2Max(maxImpulse, impulse->normalImpulses[i]); + } + + if (maxImpulse > 40.0f) + { + // Flag the body for breaking. + m_break = true; + } + } + + void Break() + { + // Create two bodies from one. + b2Body* body1 = m_piece1->GetBody(); + b2Vec2 center = body1->GetWorldCenter(); + + body1->DestroyFixture(m_piece2); + m_piece2 = NULL; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = body1->GetPosition(); + bd.angle = body1->GetAngle(); + + b2Body* body2 = m_world->CreateBody(&bd); + m_piece2 = body2->CreateFixture(&m_shape2, 1.0f); + + // Compute consistent velocities for new bodies based on + // cached velocity. + b2Vec2 center1 = body1->GetWorldCenter(); + b2Vec2 center2 = body2->GetWorldCenter(); + + b2Vec2 velocity1 = m_velocity + b2Cross(m_angularVelocity, center1 - center); + b2Vec2 velocity2 = m_velocity + b2Cross(m_angularVelocity, center2 - center); + + body1->SetAngularVelocity(m_angularVelocity); + body1->SetLinearVelocity(velocity1); + + body2->SetAngularVelocity(m_angularVelocity); + body2->SetLinearVelocity(velocity2); + } + + void Step(Settings& settings) override + { + if (m_break) + { + Break(); + m_broke = true; + m_break = false; + } + + // Cache velocities to improve movement on breakage. + if (m_broke == false) + { + m_velocity = m_body1->GetLinearVelocity(); + m_angularVelocity = m_body1->GetAngularVelocity(); + } + + Test::Step(settings); + } + + static Test* Create() { return new Breakable; } + + b2Body* m_body1; + b2Vec2 m_velocity; + float m_angularVelocity; + b2PolygonShape m_shape1; + b2PolygonShape m_shape2; + b2Fixture* m_piece1; + b2Fixture* m_piece2; + + bool m_broke; + bool m_break; }; static int testIndex = RegisterTest("Examples", "Breakable", Breakable::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/bridge.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/bridge.cpp index d397a607daa9..69bfab2cf1ea 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/bridge.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/bridge.cpp @@ -25,104 +25,100 @@ class Bridge : public Test { public: - - enum - { - e_count = 30 - }; - - Bridge() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.friction = 0.2f; - - b2RevoluteJointDef jd; - - b2Body* prevBody = ground; - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-14.5f + 1.0f * i, 5.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); - - if (i == (e_count >> 1)) - { - m_middle = body; - } - prevBody = body; - } - - b2Vec2 anchor(-15.0f + 1.0f * e_count, 5.0f); - jd.Initialize(prevBody, ground, anchor); - m_world->CreateJoint(&jd); - } - - for (int32 i = 0; i < 2; ++i) - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.5f, 0.0f); - vertices[1].Set(0.5f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - - b2PolygonShape shape; - shape.Set(vertices, 3); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-8.0f + 8.0f * i, 12.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - } - - for (int32 i = 0; i < 3; ++i) - { - b2CircleShape shape; - shape.m_radius = 0.5f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-6.0f + 6.0f * i, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - } - } - - static Test* Create() - { - return new Bridge; - } - - b2Body* m_middle; + enum + { + e_count = 30 + }; + + Bridge() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + + b2RevoluteJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + if (i == (e_count >> 1)) + { + m_middle = body; + } + prevBody = body; + } + + b2Vec2 anchor(-15.0f + 1.0f * e_count, 5.0f); + jd.Initialize(prevBody, ground, anchor); + m_world->CreateJoint(&jd); + } + + for (int32 i = 0; i < 2; ++i) + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + + b2PolygonShape shape; + shape.Set(vertices, 3); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-8.0f + 8.0f * i, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + + for (int32 i = 0; i < 3; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 6.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + static Test* Create() { return new Bridge; } + + b2Body* m_middle; }; static int testIndex = RegisterTest("Joints", "Bridge", Bridge::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/bullet_test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/bullet_test.cpp index 0ff1800f2834..945887da6f9c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/bullet_test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/bullet_test.cpp @@ -25,115 +25,108 @@ class BulletTest : public Test { public: - - BulletTest() - { - { - b2BodyDef bd; - bd.position.Set(0.0f, 0.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2EdgeShape edge; - - edge.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); - body->CreateFixture(&edge, 0.0f); - - b2PolygonShape shape; - shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); - body->CreateFixture(&shape, 0.0f); - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 4.0f); - - b2PolygonShape box; - box.SetAsBox(2.0f, 0.1f); - - m_body = m_world->CreateBody(&bd); - m_body->CreateFixture(&box, 1.0f); - - box.SetAsBox(0.25f, 0.25f); - - //m_x = RandomFloat(-1.0f, 1.0f); - m_x = 0.20352793f; - bd.position.Set(m_x, 10.0f); - bd.bullet = true; - - m_bullet = m_world->CreateBody(&bd); - m_bullet->CreateFixture(&box, 100.0f); - - m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); - } - } - - void Launch() - { - m_body->SetTransform(b2Vec2(0.0f, 4.0f), 0.0f); - m_body->SetLinearVelocity(b2Vec2_zero); - m_body->SetAngularVelocity(0.0f); - - m_x = RandomFloat(-1.0f, 1.0f); - m_bullet->SetTransform(b2Vec2(m_x, 10.0f), 0.0f); - m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); - m_bullet->SetAngularVelocity(0.0f); - - extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - extern B2_API int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; - extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; - - b2_gjkCalls = 0; - b2_gjkIters = 0; - b2_gjkMaxIters = 0; - - b2_toiCalls = 0; - b2_toiIters = 0; - b2_toiMaxIters = 0; - b2_toiRootIters = 0; - b2_toiMaxRootIters = 0; - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - extern B2_API int32 b2_toiCalls, b2_toiIters; - extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; - - if (b2_gjkCalls > 0) - { - DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", - b2_gjkCalls, b2_gjkIters / float(b2_gjkCalls), b2_gjkMaxIters); - - } - - if (b2_toiCalls > 0) - { - DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", - b2_toiCalls, b2_toiIters / float(b2_toiCalls), b2_toiMaxRootIters); - - - DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", - b2_toiRootIters / float(b2_toiCalls), b2_toiMaxRootIters); - - } - - if (m_stepCount % 60 == 0) - { - Launch(); - } - } - - static Test* Create() - { - return new BulletTest; - } - - b2Body* m_body; - b2Body* m_bullet; - float m_x; + BulletTest() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2EdgeShape edge; + + edge.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + body->CreateFixture(&edge, 0.0f); + + b2PolygonShape shape; + shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); + body->CreateFixture(&shape, 0.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 4.0f); + + b2PolygonShape box; + box.SetAsBox(2.0f, 0.1f); + + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&box, 1.0f); + + box.SetAsBox(0.25f, 0.25f); + + // m_x = RandomFloat(-1.0f, 1.0f); + m_x = 0.20352793f; + bd.position.Set(m_x, 10.0f); + bd.bullet = true; + + m_bullet = m_world->CreateBody(&bd); + m_bullet->CreateFixture(&box, 100.0f); + + m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + } + } + + void Launch() + { + m_body->SetTransform(b2Vec2(0.0f, 4.0f), 0.0f); + m_body->SetLinearVelocity(b2Vec2_zero); + m_body->SetAngularVelocity(0.0f); + + m_x = RandomFloat(-1.0f, 1.0f); + m_bullet->SetTransform(b2Vec2(m_x, 10.0f), 0.0f); + m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + m_bullet->SetAngularVelocity(0.0f); + + extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern B2_API int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; + extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; + + b2_gjkCalls = 0; + b2_gjkIters = 0; + b2_gjkMaxIters = 0; + + b2_toiCalls = 0; + b2_toiIters = 0; + b2_toiMaxIters = 0; + b2_toiRootIters = 0; + b2_toiMaxRootIters = 0; + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern B2_API int32 b2_toiCalls, b2_toiIters; + extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; + + if (b2_gjkCalls > 0) + { + DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", b2_gjkCalls, + b2_gjkIters / float(b2_gjkCalls), b2_gjkMaxIters); + } + + if (b2_toiCalls > 0) + { + DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", b2_toiCalls, + b2_toiIters / float(b2_toiCalls), b2_toiMaxRootIters); + + DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", + b2_toiRootIters / float(b2_toiCalls), b2_toiMaxRootIters); + } + + if (m_stepCount % 60 == 0) + { + Launch(); + } + } + + static Test* Create() { return new BulletTest; } + + b2Body* m_body; + b2Body* m_bullet; + float m_x; }; static int testIndex = RegisterTest("Continuous", "Bullet Test", BulletTest::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/cantilever.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/cantilever.cpp index e54717b76b64..8a9ffce0b7cd 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/cantilever.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/cantilever.cpp @@ -29,190 +29,186 @@ class Cantilever : public Test { public: - - enum - { - e_count = 8 - }; - - Cantilever() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - - b2WeldJointDef jd; - - b2Body* prevBody = ground; - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-14.5f + 1.0f * i, 5.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); - - prevBody = body; - } - } - - { - b2PolygonShape shape; - shape.SetAsBox(1.0f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - - b2WeldJointDef jd; - float frequencyHz = 5.0f; - float dampingRatio = 0.7f; - - b2Body* prevBody = ground; - for (int32 i = 0; i < 3; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-14.0f + 2.0f * i, 15.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - b2Vec2 anchor(-15.0f + 2.0f * i, 15.0f); - jd.Initialize(prevBody, body, anchor); - b2AngularStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_world->CreateJoint(&jd); - - prevBody = body; - } - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - - b2WeldJointDef jd; - - b2Body* prevBody = ground; - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-4.5f + 1.0f * i, 5.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - if (i > 0) - { - b2Vec2 anchor(-5.0f + 1.0f * i, 5.0f); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); - } - - prevBody = body; - } - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - - b2WeldJointDef jd; - float frequencyHz = 8.0f; - float dampingRatio = 0.7f; - - b2Body* prevBody = ground; - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(5.5f + 1.0f * i, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - if (i > 0) - { - b2Vec2 anchor(5.0f + 1.0f * i, 10.0f); - jd.Initialize(prevBody, body, anchor); - - b2AngularStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, prevBody, body); - - m_world->CreateJoint(&jd); - } - - prevBody = body; - } - } - - for (int32 i = 0; i < 2; ++i) - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.5f, 0.0f); - vertices[1].Set(0.5f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - - b2PolygonShape shape; - shape.Set(vertices, 3); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-8.0f + 8.0f * i, 12.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - } - - for (int32 i = 0; i < 2; ++i) - { - b2CircleShape shape; - shape.m_radius = 0.5f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-6.0f + 6.0f * i, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - } - } - - static Test* Create() - { - return new Cantilever; - } - - b2Body* m_middle; + enum + { + e_count = 8 + }; + + Cantilever() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + float frequencyHz = 5.0f; + float dampingRatio = 0.7f; + + b2Body* prevBody = ground; + for (int32 i = 0; i < 3; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.0f + 2.0f * i, 15.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 2.0f * i, 15.0f); + jd.Initialize(prevBody, body, anchor); + b2AngularStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_world->CreateJoint(&jd); + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-4.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + if (i > 0) + { + b2Vec2 anchor(-5.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + } + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + float frequencyHz = 8.0f; + float dampingRatio = 0.7f; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(5.5f + 1.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + if (i > 0) + { + b2Vec2 anchor(5.0f + 1.0f * i, 10.0f); + jd.Initialize(prevBody, body, anchor); + + b2AngularStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, prevBody, body); + + m_world->CreateJoint(&jd); + } + + prevBody = body; + } + } + + for (int32 i = 0; i < 2; ++i) + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + + b2PolygonShape shape; + shape.Set(vertices, 3); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-8.0f + 8.0f * i, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + + for (int32 i = 0; i < 2; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 6.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + static Test* Create() { return new Cantilever; } + + b2Body* m_middle; }; static int testIndex = RegisterTest("Joints", "Cantilever", Cantilever::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/car.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/car.cpp index 63179b052642..c8bd9f087569 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/car.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/car.cpp @@ -30,261 +30,257 @@ USING_NS_CC_EXT; class Car : public Test { public: - Car() - { - m_speed = 50.0f; - - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 0.0f; - fd.friction = 0.6f; - - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - ground->CreateFixture(&fd); - - float hs[10] = {0.25f, 1.0f, 4.0f, 0.0f, 0.0f, -1.0f, -2.0f, -2.0f, -1.25f, 0.0f}; - - float x = 20.0f, y1 = 0.0f, dx = 5.0f; - - for (int32 i = 0; i < 10; ++i) - { - float y2 = hs[i]; - shape.SetTwoSided(b2Vec2(x, y1), b2Vec2(x + dx, y2)); - ground->CreateFixture(&fd); - y1 = y2; - x += dx; - } - - for (int32 i = 0; i < 10; ++i) - { - float y2 = hs[i]; - shape.SetTwoSided(b2Vec2(x, y1), b2Vec2(x + dx, y2)); - ground->CreateFixture(&fd); - y1 = y2; - x += dx; - } - - shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); - ground->CreateFixture(&fd); - - x += 80.0f; - shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); - ground->CreateFixture(&fd); - - x += 40.0f; - shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 10.0f, 5.0f)); - ground->CreateFixture(&fd); - - x += 20.0f; - shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); - ground->CreateFixture(&fd); - - x += 40.0f; - shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x, 20.0f)); - ground->CreateFixture(&fd); - } - - // Teeter - { - b2BodyDef bd; - bd.position.Set(140.0f, 1.0f); - bd.type = b2_dynamicBody; - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape box; - box.SetAsBox(10.0f, 0.25f); - body->CreateFixture(&box, 1.0f); - - b2RevoluteJointDef jd; - jd.Initialize(ground, body, body->GetPosition()); - jd.lowerAngle = -8.0f * b2_pi / 180.0f; - jd.upperAngle = 8.0f * b2_pi / 180.0f; - jd.enableLimit = true; - m_world->CreateJoint(&jd); - - body->ApplyAngularImpulse(100.0f, true); - } - - // Bridge - { - int32 N = 20; - b2PolygonShape shape; - shape.SetAsBox(1.0f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - fd.friction = 0.6f; - - b2RevoluteJointDef jd; - - b2Body* prevBody = ground; - for (int32 i = 0; i < N; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(161.0f + 2.0f * i, -0.125f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - - b2Vec2 anchor(160.0f + 2.0f * i, -0.125f); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); - - prevBody = body; - } - - b2Vec2 anchor(160.0f + 2.0f * N, -0.125f); - jd.Initialize(prevBody, ground, anchor); - m_world->CreateJoint(&jd); - } - - // Boxes - { - b2PolygonShape box; - box.SetAsBox(0.5f, 0.5f); - - b2Body* body = NULL; - b2BodyDef bd; - bd.type = b2_dynamicBody; - - bd.position.Set(230.0f, 0.5f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&box, 0.5f); - - bd.position.Set(230.0f, 1.5f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&box, 0.5f); - - bd.position.Set(230.0f, 2.5f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&box, 0.5f); - - bd.position.Set(230.0f, 3.5f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&box, 0.5f); - - bd.position.Set(230.0f, 4.5f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&box, 0.5f); - } - - // Car - { - b2PolygonShape chassis; - b2Vec2 vertices[8]; - vertices[0].Set(-1.5f, -0.5f); - vertices[1].Set(1.5f, -0.5f); - vertices[2].Set(1.5f, 0.0f); - vertices[3].Set(0.0f, 0.9f); - vertices[4].Set(-1.15f, 0.9f); - vertices[5].Set(-1.5f, 0.2f); - chassis.Set(vertices, 6); - - b2CircleShape circle; - circle.m_radius = 0.4f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 1.0f); - m_car = m_world->CreateBody(&bd); - m_car->CreateFixture(&chassis, 1.0f); - - b2FixtureDef fd; - fd.shape = &circle; - fd.density = 1.0f; - fd.friction = 0.9f; - - bd.position.Set(-1.0f, 0.35f); - m_wheel1 = m_world->CreateBody(&bd); - m_wheel1->CreateFixture(&fd); - - bd.position.Set(1.0f, 0.4f); - m_wheel2 = m_world->CreateBody(&bd); - m_wheel2->CreateFixture(&fd); - - b2WheelJointDef jd; - b2Vec2 axis(0.0f, 1.0f); - - float mass1 = m_wheel1->GetMass(); - float mass2 = m_wheel2->GetMass(); - - float hertz = 4.0f; - float dampingRatio = 0.7f; - float omega = 2.0f * b2_pi * hertz; - - jd.Initialize(m_car, m_wheel1, m_wheel1->GetPosition(), axis); - jd.motorSpeed = 0.0f; - jd.maxMotorTorque = 20.0f; - jd.enableMotor = true; - jd.stiffness = mass1 * omega * omega; - jd.damping = 2.0f * mass1 * dampingRatio * omega; - jd.lowerTranslation = -0.25f; - jd.upperTranslation = 0.25f; - jd.enableLimit = true; - m_spring1 = (b2WheelJoint*)m_world->CreateJoint(&jd); - - jd.Initialize(m_car, m_wheel2, m_wheel2->GetPosition(), axis); - jd.motorSpeed = 0.0f; - jd.maxMotorTorque = 10.0f; - jd.enableMotor = false; - jd.stiffness = mass2 * omega * omega; - jd.damping = 2.0f * mass2 * dampingRatio * omega; - jd.lowerTranslation = -0.25f; - jd.upperTranslation = 0.25f; - jd.enableLimit = true; - m_spring2 = (b2WheelJoint*)m_world->CreateJoint(&jd); - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_spring1->SetMotorSpeed(m_speed); - break; - - case GLFW_KEY_S: - m_spring1->SetMotorSpeed(0.0f); - break; - - case GLFW_KEY_D: - m_spring1->SetMotorSpeed(-m_speed); - break; - } - } - - void Step(Settings& settings) override - { - DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, hz down = q, hz up = e"); - - - //g_camera.m_center.x = m_car->GetPosition().x; - g_debugDraw.debugNodeOffset.x += m_car->GetPosition().x; - - Test::Step(settings); - } - - static Test* Create() - { - return new Car; - } - - b2Body* m_car; - b2Body* m_wheel1; - b2Body* m_wheel2; - - float m_speed; - b2WheelJoint* m_spring1; - b2WheelJoint* m_spring2; + Car() + { + m_speed = 50.0f; + + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 0.0f; + fd.friction = 0.6f; + + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&fd); + + float hs[10] = {0.25f, 1.0f, 4.0f, 0.0f, 0.0f, -1.0f, -2.0f, -2.0f, -1.25f, 0.0f}; + + float x = 20.0f, y1 = 0.0f, dx = 5.0f; + + for (int32 i = 0; i < 10; ++i) + { + float y2 = hs[i]; + shape.SetTwoSided(b2Vec2(x, y1), b2Vec2(x + dx, y2)); + ground->CreateFixture(&fd); + y1 = y2; + x += dx; + } + + for (int32 i = 0; i < 10; ++i) + { + float y2 = hs[i]; + shape.SetTwoSided(b2Vec2(x, y1), b2Vec2(x + dx, y2)); + ground->CreateFixture(&fd); + y1 = y2; + x += dx; + } + + shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 80.0f; + shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 40.0f; + shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 10.0f, 5.0f)); + ground->CreateFixture(&fd); + + x += 20.0f; + shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 40.0f; + shape.SetTwoSided(b2Vec2(x, 0.0f), b2Vec2(x, 20.0f)); + ground->CreateFixture(&fd); + } + + // Teeter + { + b2BodyDef bd; + bd.position.Set(140.0f, 1.0f); + bd.type = b2_dynamicBody; + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(10.0f, 0.25f); + body->CreateFixture(&box, 1.0f); + + b2RevoluteJointDef jd; + jd.Initialize(ground, body, body->GetPosition()); + jd.lowerAngle = -8.0f * b2_pi / 180.0f; + jd.upperAngle = 8.0f * b2_pi / 180.0f; + jd.enableLimit = true; + m_world->CreateJoint(&jd); + + body->ApplyAngularImpulse(100.0f, true); + } + + // Bridge + { + int32 N = 20; + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.6f; + + b2RevoluteJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < N; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(161.0f + 2.0f * i, -0.125f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(160.0f + 2.0f * i, -0.125f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + + b2Vec2 anchor(160.0f + 2.0f * N, -0.125f); + jd.Initialize(prevBody, ground, anchor); + m_world->CreateJoint(&jd); + } + + // Boxes + { + b2PolygonShape box; + box.SetAsBox(0.5f, 0.5f); + + b2Body* body = NULL; + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(230.0f, 0.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 1.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 2.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 3.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 4.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + } + + // Car + { + b2PolygonShape chassis; + b2Vec2 vertices[8]; + vertices[0].Set(-1.5f, -0.5f); + vertices[1].Set(1.5f, -0.5f); + vertices[2].Set(1.5f, 0.0f); + vertices[3].Set(0.0f, 0.9f); + vertices[4].Set(-1.15f, 0.9f); + vertices[5].Set(-1.5f, 0.2f); + chassis.Set(vertices, 6); + + b2CircleShape circle; + circle.m_radius = 0.4f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 1.0f); + m_car = m_world->CreateBody(&bd); + m_car->CreateFixture(&chassis, 1.0f); + + b2FixtureDef fd; + fd.shape = &circle; + fd.density = 1.0f; + fd.friction = 0.9f; + + bd.position.Set(-1.0f, 0.35f); + m_wheel1 = m_world->CreateBody(&bd); + m_wheel1->CreateFixture(&fd); + + bd.position.Set(1.0f, 0.4f); + m_wheel2 = m_world->CreateBody(&bd); + m_wheel2->CreateFixture(&fd); + + b2WheelJointDef jd; + b2Vec2 axis(0.0f, 1.0f); + + float mass1 = m_wheel1->GetMass(); + float mass2 = m_wheel2->GetMass(); + + float hertz = 4.0f; + float dampingRatio = 0.7f; + float omega = 2.0f * b2_pi * hertz; + + jd.Initialize(m_car, m_wheel1, m_wheel1->GetPosition(), axis); + jd.motorSpeed = 0.0f; + jd.maxMotorTorque = 20.0f; + jd.enableMotor = true; + jd.stiffness = mass1 * omega * omega; + jd.damping = 2.0f * mass1 * dampingRatio * omega; + jd.lowerTranslation = -0.25f; + jd.upperTranslation = 0.25f; + jd.enableLimit = true; + m_spring1 = (b2WheelJoint*)m_world->CreateJoint(&jd); + + jd.Initialize(m_car, m_wheel2, m_wheel2->GetPosition(), axis); + jd.motorSpeed = 0.0f; + jd.maxMotorTorque = 10.0f; + jd.enableMotor = false; + jd.stiffness = mass2 * omega * omega; + jd.damping = 2.0f * mass2 * dampingRatio * omega; + jd.lowerTranslation = -0.25f; + jd.upperTranslation = 0.25f; + jd.enableLimit = true; + m_spring2 = (b2WheelJoint*)m_world->CreateJoint(&jd); + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_spring1->SetMotorSpeed(m_speed); + break; + + case GLFW_KEY_S: + m_spring1->SetMotorSpeed(0.0f); + break; + + case GLFW_KEY_D: + m_spring1->SetMotorSpeed(-m_speed); + break; + } + } + + void Step(Settings& settings) override + { + DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, hz down = q, hz up = e"); + + // g_camera.m_center.x = m_car->GetPosition().x; + g_debugDraw.debugNodeOffset.x += m_car->GetPosition().x; + + Test::Step(settings); + } + + static Test* Create() { return new Car; } + + b2Body* m_car; + b2Body* m_wheel1; + b2Body* m_wheel2; + + float m_speed; + b2WheelJoint* m_spring1; + b2WheelJoint* m_spring2; }; static int testIndex = RegisterTest("Examples", "Car", Car::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/chain.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/chain.cpp index e1580355e307..3520b89330ca 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/chain.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/chain.cpp @@ -27,66 +27,63 @@ class Chain : public Test { public: - Chain() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.6f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.friction = 0.2f; - - b2RevoluteJointDef jd; - jd.collideConnected = false; - - const float y = 25.0f; - b2Body* prevBody = ground; - for (int32 i = 0; i < 30; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.5f + i, y); - b2Body* body = m_world->CreateBody(&bd); + Chain() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.6f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + + b2RevoluteJointDef jd; + jd.collideConnected = false; + + const float y = 25.0f; + b2Body* prevBody = ground; + for (int32 i = 0; i < 30; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.5f + i, y); + b2Body* body = m_world->CreateBody(&bd); #if TEST_BAD_BODY == 1 - if (i == 10) - { - // Test zero density dynamic body - fd.density = 0.0f; - } - else - { - fd.density = 20.0f; - } + if (i == 10) + { + // Test zero density dynamic body + fd.density = 0.0f; + } + else + { + fd.density = 20.0f; + } #endif - body->CreateFixture(&fd); + body->CreateFixture(&fd); - b2Vec2 anchor(float(i), y); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); + b2Vec2 anchor(float(i), y); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); - prevBody = body; - } - } - } + prevBody = body; + } + } + } - static Test* Create() - { - return new Chain; - } + static Test* Create() { return new Chain; } }; static int testIndex = RegisterTest("Joints", "Chain", Chain::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/chain_problem.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/chain_problem.cpp index 4b2ab3828db4..a9a48a87301d 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/chain_problem.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/chain_problem.cpp @@ -25,17 +25,16 @@ class ChainProblem : public Test { public: - ChainProblem() { { b2Vec2 g(0.0f, -10.0f); m_world->SetGravity(g); - b2Body** bodies = (b2Body**)b2Alloc(2 * sizeof(b2Body*)); + b2Body** bodies = (b2Body**)b2Alloc(2 * sizeof(b2Body*)); b2Joint** joints = (b2Joint**)b2Alloc(0 * sizeof(b2Joint*)); { b2BodyDef bd; - bd.type = b2BodyType(0); + bd.type = b2BodyType(0); bodies[0] = m_world->CreateBody(&bd); { @@ -56,14 +55,14 @@ class ChainProblem : public Test { b2BodyDef bd; bd.type = b2BodyType(2); - //bd.position.Set(6.033980250358582e-01f, 3.028350114822388e+00f); + // bd.position.Set(6.033980250358582e-01f, 3.028350114822388e+00f); bd.position.Set(1.0f, 3.0f); bodies[1] = m_world->CreateBody(&bd); { b2FixtureDef fd; fd.friction = 0.2f; - fd.density = 10.0f; + fd.density = 10.0f; b2PolygonShape shape; b2Vec2 vs[8]; vs[0].Set(0.5f, -3.0f); @@ -84,11 +83,7 @@ class ChainProblem : public Test } } - static Test* Create() - { - return new ChainProblem; - } - + static Test* Create() { return new ChainProblem; } }; static int testIndex = RegisterTest("Bugs", "Chain Problem", ChainProblem::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/character_collision.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/character_collision.cpp index 42af87aec71f..42f9f81d6f98 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/character_collision.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/character_collision.cpp @@ -28,229 +28,225 @@ class CharacterCollision : public Test { public: - CharacterCollision() - { - // Ground body - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Collinear edges with no adjacency information. - // This shows the problematic case where a box shape can hit - // an internal vertex. - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-8.0f, 1.0f), b2Vec2(-6.0f, 1.0f)); - ground->CreateFixture(&shape, 0.0f); - shape.SetTwoSided(b2Vec2(-6.0f, 1.0f), b2Vec2(-4.0f, 1.0f)); - ground->CreateFixture(&shape, 0.0f); - shape.SetTwoSided(b2Vec2(-4.0f, 1.0f), b2Vec2(-2.0f, 1.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Chain shape - { - b2BodyDef bd; - bd.angle = 0.25f * b2_pi; - b2Body* ground = m_world->CreateBody(&bd); - - b2Vec2 vs[4]; - vs[0].Set(5.0f, 7.0f); - vs[1].Set(6.0f, 8.0f); - vs[2].Set(7.0f, 8.0f); - vs[3].Set(8.0f, 7.0f); - b2ChainShape shape; - shape.CreateLoop(vs, 4); - ground->CreateFixture(&shape, 0.0f); - } - - // Square tiles. This shows that adjacency shapes may - // have non-smooth collision. There is no solution - // to this problem. - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(1.0f, 1.0f, b2Vec2(4.0f, 3.0f), 0.0f); - ground->CreateFixture(&shape, 0.0f); - shape.SetAsBox(1.0f, 1.0f, b2Vec2(6.0f, 3.0f), 0.0f); - ground->CreateFixture(&shape, 0.0f); - shape.SetAsBox(1.0f, 1.0f, b2Vec2(8.0f, 3.0f), 0.0f); - ground->CreateFixture(&shape, 0.0f); - } - - // Square made from an edge loop. Collision should be smooth. - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2Vec2 vs[4]; - vs[0].Set(-1.0f, 3.0f); - vs[1].Set(1.0f, 3.0f); - vs[2].Set(1.0f, 5.0f); - vs[3].Set(-1.0f, 5.0f); - b2ChainShape shape; - shape.CreateLoop(vs, 4); - ground->CreateFixture(&shape, 0.0f); - } - - // Edge loop. Collision should be smooth. - { - b2BodyDef bd; - bd.position.Set(-10.0f, 4.0f); - b2Body* ground = m_world->CreateBody(&bd); - - b2Vec2 vs[10]; - vs[0].Set(0.0f, 0.0f); - vs[1].Set(6.0f, 0.0f); - vs[2].Set(6.0f, 2.0f); - vs[3].Set(4.0f, 1.0f); - vs[4].Set(2.0f, 2.0f); - vs[5].Set(0.0f, 2.0f); - vs[6].Set(-2.0f, 2.0f); - vs[7].Set(-4.0f, 3.0f); - vs[8].Set(-6.0f, 2.0f); - vs[9].Set(-6.0f, 0.0f); - b2ChainShape shape; - shape.CreateLoop(vs, 10); - ground->CreateFixture(&shape, 0.0f); - } - - // Square character 1 - { - b2BodyDef bd; - bd.position.Set(-3.0f, 8.0f); - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.allowSleep = false; - - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - body->CreateFixture(&fd); - } - - // Square character 2 - { - b2BodyDef bd; - bd.position.Set(-5.0f, 5.0f); - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.allowSleep = false; - - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.25f, 0.25f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - body->CreateFixture(&fd); - } - - // Hexagon character - { - b2BodyDef bd; - bd.position.Set(-5.0f, 8.0f); - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.allowSleep = false; - - b2Body* body = m_world->CreateBody(&bd); - - float angle = 0.0f; - float delta = b2_pi / 3.0f; - b2Vec2 vertices[6]; - for (int32 i = 0; i < 6; ++i) - { - vertices[i].Set(0.5f * cosf(angle), 0.5f * sinf(angle)); - angle += delta; - } - - b2PolygonShape shape; - shape.Set(vertices, 6); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - body->CreateFixture(&fd); - } - - // Circle character - { - b2BodyDef bd; - bd.position.Set(3.0f, 5.0f); - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.allowSleep = false; - - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.5f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - body->CreateFixture(&fd); - } - - // Circle character - { - b2BodyDef bd; - bd.position.Set(-7.0f, 6.0f); - bd.type = b2_dynamicBody; - bd.allowSleep = false; - - m_character = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.25f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.friction = 1.0f; - m_character->CreateFixture(&fd); - } - } - - void Step(Settings& settings) override - { - b2Vec2 v = m_character->GetLinearVelocity(); - v.x = -5.0f; - m_character->SetLinearVelocity(v); - - Test::Step(settings); - DrawString(5, m_textLine, "This tests various character collision shapes."); - - DrawString(5, m_textLine, "Limitation: square and hexagon can snag on aligned boxes."); - - DrawString(5, m_textLine, "Feature: edge chains have smooth collision inside and out."); - - } - - static Test* Create() - { - return new CharacterCollision; - } - - b2Body* m_character; + CharacterCollision() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Collinear edges with no adjacency information. + // This shows the problematic case where a box shape can hit + // an internal vertex. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-8.0f, 1.0f), b2Vec2(-6.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + shape.SetTwoSided(b2Vec2(-6.0f, 1.0f), b2Vec2(-4.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + shape.SetTwoSided(b2Vec2(-4.0f, 1.0f), b2Vec2(-2.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Chain shape + { + b2BodyDef bd; + bd.angle = 0.25f * b2_pi; + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[4]; + vs[0].Set(5.0f, 7.0f); + vs[1].Set(6.0f, 8.0f); + vs[2].Set(7.0f, 8.0f); + vs[3].Set(8.0f, 7.0f); + b2ChainShape shape; + shape.CreateLoop(vs, 4); + ground->CreateFixture(&shape, 0.0f); + } + + // Square tiles. This shows that adjacency shapes may + // have non-smooth collision. There is no solution + // to this problem. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(1.0f, 1.0f, b2Vec2(4.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + shape.SetAsBox(1.0f, 1.0f, b2Vec2(6.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + shape.SetAsBox(1.0f, 1.0f, b2Vec2(8.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + } + + // Square made from an edge loop. Collision should be smooth. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[4]; + vs[0].Set(-1.0f, 3.0f); + vs[1].Set(1.0f, 3.0f); + vs[2].Set(1.0f, 5.0f); + vs[3].Set(-1.0f, 5.0f); + b2ChainShape shape; + shape.CreateLoop(vs, 4); + ground->CreateFixture(&shape, 0.0f); + } + + // Edge loop. Collision should be smooth. + { + b2BodyDef bd; + bd.position.Set(-10.0f, 4.0f); + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[10]; + vs[0].Set(0.0f, 0.0f); + vs[1].Set(6.0f, 0.0f); + vs[2].Set(6.0f, 2.0f); + vs[3].Set(4.0f, 1.0f); + vs[4].Set(2.0f, 2.0f); + vs[5].Set(0.0f, 2.0f); + vs[6].Set(-2.0f, 2.0f); + vs[7].Set(-4.0f, 3.0f); + vs[8].Set(-6.0f, 2.0f); + vs[9].Set(-6.0f, 0.0f); + b2ChainShape shape; + shape.CreateLoop(vs, 10); + ground->CreateFixture(&shape, 0.0f); + } + + // Square character 1 + { + b2BodyDef bd; + bd.position.Set(-3.0f, 8.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Square character 2 + { + b2BodyDef bd; + bd.position.Set(-5.0f, 5.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.25f, 0.25f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Hexagon character + { + b2BodyDef bd; + bd.position.Set(-5.0f, 8.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + float angle = 0.0f; + float delta = b2_pi / 3.0f; + b2Vec2 vertices[6]; + for (int32 i = 0; i < 6; ++i) + { + vertices[i].Set(0.5f * cosf(angle), 0.5f * sinf(angle)); + angle += delta; + } + + b2PolygonShape shape; + shape.Set(vertices, 6); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(3.0f, 5.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(-7.0f, 6.0f); + bd.type = b2_dynamicBody; + bd.allowSleep = false; + + m_character = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 1.0f; + m_character->CreateFixture(&fd); + } + } + + void Step(Settings& settings) override + { + b2Vec2 v = m_character->GetLinearVelocity(); + v.x = -5.0f; + m_character->SetLinearVelocity(v); + + Test::Step(settings); + DrawString(5, m_textLine, "This tests various character collision shapes."); + + DrawString(5, m_textLine, "Limitation: square and hexagon can snag on aligned boxes."); + + DrawString(5, m_textLine, "Feature: edge chains have smooth collision inside and out."); + } + + static Test* Create() { return new CharacterCollision; } + + b2Body* m_character; }; static int testIndex = RegisterTest("Examples", "Character Collision", CharacterCollision::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/circle_stack.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/circle_stack.cpp index 62d19ea3feda..d642a12d33e2 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/circle_stack.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/circle_stack.cpp @@ -25,65 +25,61 @@ class CircleStack : public Test { public: + enum + { + e_count = 10 + }; - enum - { - e_count = 10 - }; + CircleStack() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); - CircleStack() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } + { + b2CircleShape shape; + shape.m_radius = 1.0f; - { - b2CircleShape shape; - shape.m_radius = 1.0f; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0, 4.0f + 3.0f * i); - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0, 4.0f + 3.0f * i); + m_bodies[i] = m_world->CreateBody(&bd); - m_bodies[i] = m_world->CreateBody(&bd); + m_bodies[i]->CreateFixture(&shape, 1.0f); - m_bodies[i]->CreateFixture(&shape, 1.0f); + m_bodies[i]->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + } + } + } - m_bodies[i]->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); - } - } - } + void Step(Settings& settings) override + { + Test::Step(settings); - void Step(Settings& settings) override - { - Test::Step(settings); + // for (int32 i = 0; i < e_count; ++i) + //{ + // printf("%g ", m_bodies[i]->GetWorldCenter().y); + // } - //for (int32 i = 0; i < e_count; ++i) - //{ - // printf("%g ", m_bodies[i]->GetWorldCenter().y); - //} + // for (int32 i = 0; i < e_count; ++i) + //{ + // printf("%g ", m_bodies[i]->GetLinearVelocity().y); + // } - //for (int32 i = 0; i < e_count; ++i) - //{ - // printf("%g ", m_bodies[i]->GetLinearVelocity().y); - //} + // printf("\n"); + } - //printf("\n"); - } + static Test* Create() { return new CircleStack; } - static Test* Create() - { - return new CircleStack; - } - - b2Body* m_bodies[e_count]; + b2Body* m_bodies[e_count]; }; static int testIndex = RegisterTest("Stacking", "Circles", CircleStack::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_filtering.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_filtering.cpp index 4903da5f5c64..65acb3866862 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_filtering.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_filtering.cpp @@ -28,152 +28,149 @@ // The 3 small ones always collide. // The 3 large ones never collide. // The boxes don't collide with triangles (except if both are small). -const int16 k_smallGroup = 1; +const int16 k_smallGroup = 1; const int16 k_largeGroup = -1; const uint16 k_triangleCategory = 0x0002; -const uint16 k_boxCategory = 0x0004; -const uint16 k_circleCategory = 0x0008; +const uint16 k_boxCategory = 0x0004; +const uint16 k_circleCategory = 0x0008; const uint16 k_triangleMask = 0xFFFF; -const uint16 k_boxMask = 0xFFFF ^ k_triangleCategory; -const uint16 k_circleMask = 0xFFFF; +const uint16 k_boxMask = 0xFFFF ^ k_triangleCategory; +const uint16 k_circleMask = 0xFFFF; class CollisionFiltering : public Test { public: - CollisionFiltering() - { - // Ground body - { - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - - b2FixtureDef sd; - sd.shape = &shape; - sd.friction = 0.3f; - - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&sd); - } - - // Small triangle - b2Vec2 vertices[3]; - vertices[0].Set(-1.0f, 0.0f); - vertices[1].Set(1.0f, 0.0f); - vertices[2].Set(0.0f, 2.0f); - b2PolygonShape polygon; - polygon.Set(vertices, 3); - - b2FixtureDef triangleShapeDef; - triangleShapeDef.shape = &polygon; - triangleShapeDef.density = 1.0f; - - triangleShapeDef.filter.groupIndex = k_smallGroup; - triangleShapeDef.filter.categoryBits = k_triangleCategory; - triangleShapeDef.filter.maskBits = k_triangleMask; - - b2BodyDef triangleBodyDef; - triangleBodyDef.type = b2_dynamicBody; - triangleBodyDef.position.Set(-5.0f, 2.0f); - - b2Body* body1 = m_world->CreateBody(&triangleBodyDef); - body1->CreateFixture(&triangleShapeDef); - - // Large triangle (recycle definitions) - vertices[0] *= 2.0f; - vertices[1] *= 2.0f; - vertices[2] *= 2.0f; - polygon.Set(vertices, 3); - triangleShapeDef.filter.groupIndex = k_largeGroup; - triangleBodyDef.position.Set(-5.0f, 6.0f); - triangleBodyDef.fixedRotation = true; // look at me! - - b2Body* body2 = m_world->CreateBody(&triangleBodyDef); - body2->CreateFixture(&triangleShapeDef); - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-5.0f, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape p; - p.SetAsBox(0.5f, 1.0f); - body->CreateFixture(&p, 1.0f); - - b2PrismaticJointDef jd; - jd.bodyA = body2; - jd.bodyB = body; - jd.enableLimit = true; - jd.localAnchorA.Set(0.0f, 4.0f); - jd.localAnchorB.SetZero(); - jd.localAxisA.Set(0.0f, 1.0f); - jd.lowerTranslation = -1.0f; - jd.upperTranslation = 1.0f; - - m_world->CreateJoint(&jd); - } - - // Small box - polygon.SetAsBox(1.0f, 0.5f); - b2FixtureDef boxShapeDef; - boxShapeDef.shape = &polygon; - boxShapeDef.density = 1.0f; - boxShapeDef.restitution = 0.1f; - - boxShapeDef.filter.groupIndex = k_smallGroup; - boxShapeDef.filter.categoryBits = k_boxCategory; - boxShapeDef.filter.maskBits = k_boxMask; - - b2BodyDef boxBodyDef; - boxBodyDef.type = b2_dynamicBody; - boxBodyDef.position.Set(0.0f, 2.0f); - - b2Body* body3 = m_world->CreateBody(&boxBodyDef); - body3->CreateFixture(&boxShapeDef); - - // Large box (recycle definitions) - polygon.SetAsBox(2.0f, 1.0f); - boxShapeDef.filter.groupIndex = k_largeGroup; - boxBodyDef.position.Set(0.0f, 6.0f); - - b2Body* body4 = m_world->CreateBody(&boxBodyDef); - body4->CreateFixture(&boxShapeDef); - - // Small circle - b2CircleShape circle; - circle.m_radius = 1.0f; - - b2FixtureDef circleShapeDef; - circleShapeDef.shape = &circle; - circleShapeDef.density = 1.0f; - - circleShapeDef.filter.groupIndex = k_smallGroup; - circleShapeDef.filter.categoryBits = k_circleCategory; - circleShapeDef.filter.maskBits = k_circleMask; - - b2BodyDef circleBodyDef; - circleBodyDef.type = b2_dynamicBody; - circleBodyDef.position.Set(5.0f, 2.0f); - - b2Body* body5 = m_world->CreateBody(&circleBodyDef); - body5->CreateFixture(&circleShapeDef); - - // Large circle - circle.m_radius *= 2.0f; - circleShapeDef.filter.groupIndex = k_largeGroup; - circleBodyDef.position.Set(5.0f, 6.0f); - - b2Body* body6 = m_world->CreateBody(&circleBodyDef); - body6->CreateFixture(&circleShapeDef); - } - - static Test* Create() - { - return new CollisionFiltering; - } + CollisionFiltering() + { + // Ground body + { + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2FixtureDef sd; + sd.shape = &shape; + sd.friction = 0.3f; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&sd); + } + + // Small triangle + b2Vec2 vertices[3]; + vertices[0].Set(-1.0f, 0.0f); + vertices[1].Set(1.0f, 0.0f); + vertices[2].Set(0.0f, 2.0f); + b2PolygonShape polygon; + polygon.Set(vertices, 3); + + b2FixtureDef triangleShapeDef; + triangleShapeDef.shape = &polygon; + triangleShapeDef.density = 1.0f; + + triangleShapeDef.filter.groupIndex = k_smallGroup; + triangleShapeDef.filter.categoryBits = k_triangleCategory; + triangleShapeDef.filter.maskBits = k_triangleMask; + + b2BodyDef triangleBodyDef; + triangleBodyDef.type = b2_dynamicBody; + triangleBodyDef.position.Set(-5.0f, 2.0f); + + b2Body* body1 = m_world->CreateBody(&triangleBodyDef); + body1->CreateFixture(&triangleShapeDef); + + // Large triangle (recycle definitions) + vertices[0] *= 2.0f; + vertices[1] *= 2.0f; + vertices[2] *= 2.0f; + polygon.Set(vertices, 3); + triangleShapeDef.filter.groupIndex = k_largeGroup; + triangleBodyDef.position.Set(-5.0f, 6.0f); + triangleBodyDef.fixedRotation = true; // look at me! + + b2Body* body2 = m_world->CreateBody(&triangleBodyDef); + body2->CreateFixture(&triangleShapeDef); + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-5.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape p; + p.SetAsBox(0.5f, 1.0f); + body->CreateFixture(&p, 1.0f); + + b2PrismaticJointDef jd; + jd.bodyA = body2; + jd.bodyB = body; + jd.enableLimit = true; + jd.localAnchorA.Set(0.0f, 4.0f); + jd.localAnchorB.SetZero(); + jd.localAxisA.Set(0.0f, 1.0f); + jd.lowerTranslation = -1.0f; + jd.upperTranslation = 1.0f; + + m_world->CreateJoint(&jd); + } + + // Small box + polygon.SetAsBox(1.0f, 0.5f); + b2FixtureDef boxShapeDef; + boxShapeDef.shape = &polygon; + boxShapeDef.density = 1.0f; + boxShapeDef.restitution = 0.1f; + + boxShapeDef.filter.groupIndex = k_smallGroup; + boxShapeDef.filter.categoryBits = k_boxCategory; + boxShapeDef.filter.maskBits = k_boxMask; + + b2BodyDef boxBodyDef; + boxBodyDef.type = b2_dynamicBody; + boxBodyDef.position.Set(0.0f, 2.0f); + + b2Body* body3 = m_world->CreateBody(&boxBodyDef); + body3->CreateFixture(&boxShapeDef); + + // Large box (recycle definitions) + polygon.SetAsBox(2.0f, 1.0f); + boxShapeDef.filter.groupIndex = k_largeGroup; + boxBodyDef.position.Set(0.0f, 6.0f); + + b2Body* body4 = m_world->CreateBody(&boxBodyDef); + body4->CreateFixture(&boxShapeDef); + + // Small circle + b2CircleShape circle; + circle.m_radius = 1.0f; + + b2FixtureDef circleShapeDef; + circleShapeDef.shape = &circle; + circleShapeDef.density = 1.0f; + + circleShapeDef.filter.groupIndex = k_smallGroup; + circleShapeDef.filter.categoryBits = k_circleCategory; + circleShapeDef.filter.maskBits = k_circleMask; + + b2BodyDef circleBodyDef; + circleBodyDef.type = b2_dynamicBody; + circleBodyDef.position.Set(5.0f, 2.0f); + + b2Body* body5 = m_world->CreateBody(&circleBodyDef); + body5->CreateFixture(&circleShapeDef); + + // Large circle + circle.m_radius *= 2.0f; + circleShapeDef.filter.groupIndex = k_largeGroup; + circleBodyDef.position.Set(5.0f, 6.0f); + + b2Body* body6 = m_world->CreateBody(&circleBodyDef); + body6->CreateFixture(&circleShapeDef); + } + + static Test* Create() { return new CollisionFiltering; } }; static int testIndex = RegisterTest("Examples", "Collision Filtering", CollisionFiltering::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_processing.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_processing.cpp index 1c684bdaecc1..f31db91a3b7d 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_processing.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/collision_processing.cpp @@ -29,163 +29,161 @@ class CollisionProcessing : public Test { public: - CollisionProcessing() - { - // Ground body - { - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); - - b2FixtureDef sd; - sd.shape = &shape;; - - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&sd); - } - - float xLo = -5.0f, xHi = 5.0f; - float yLo = 2.0f, yHi = 35.0f; - - // Small triangle - b2Vec2 vertices[3]; - vertices[0].Set(-1.0f, 0.0f); - vertices[1].Set(1.0f, 0.0f); - vertices[2].Set(0.0f, 2.0f); - - b2PolygonShape polygon; - polygon.Set(vertices, 3); - - b2FixtureDef triangleShapeDef; - triangleShapeDef.shape = &polygon; - triangleShapeDef.density = 1.0f; - - b2BodyDef triangleBodyDef; - triangleBodyDef.type = b2_dynamicBody; - triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body1 = m_world->CreateBody(&triangleBodyDef); - body1->CreateFixture(&triangleShapeDef); - - // Large triangle (recycle definitions) - vertices[0] *= 2.0f; - vertices[1] *= 2.0f; - vertices[2] *= 2.0f; - polygon.Set(vertices, 3); - - triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body2 = m_world->CreateBody(&triangleBodyDef); - body2->CreateFixture(&triangleShapeDef); - - // Small box - polygon.SetAsBox(1.0f, 0.5f); - - b2FixtureDef boxShapeDef; - boxShapeDef.shape = &polygon; - boxShapeDef.density = 1.0f; - - b2BodyDef boxBodyDef; - boxBodyDef.type = b2_dynamicBody; - boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body3 = m_world->CreateBody(&boxBodyDef); - body3->CreateFixture(&boxShapeDef); - - // Large box (recycle definitions) - polygon.SetAsBox(2.0f, 1.0f); - boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body4 = m_world->CreateBody(&boxBodyDef); - body4->CreateFixture(&boxShapeDef); - - // Small circle - b2CircleShape circle; - circle.m_radius = 1.0f; - - b2FixtureDef circleShapeDef; - circleShapeDef.shape = &circle; - circleShapeDef.density = 1.0f; - - b2BodyDef circleBodyDef; - circleBodyDef.type = b2_dynamicBody; - circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body5 = m_world->CreateBody(&circleBodyDef); - body5->CreateFixture(&circleShapeDef); - - // Large circle - circle.m_radius *= 2.0f; - circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); - - b2Body* body6 = m_world->CreateBody(&circleBodyDef); - body6->CreateFixture(&circleShapeDef); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - // We are going to destroy some bodies according to contact - // points. We must buffer the bodies that should be destroyed - // because they may belong to multiple contact points. - const int32 k_maxNuke = 6; - b2Body* nuke[k_maxNuke]; - int32 nukeCount = 0; - - // Traverse the contact results. Destroy bodies that - // are touching heavier bodies. - for (int32 i = 0; i < m_pointCount; ++i) - { - ContactPoint* point = m_points + i; - - b2Body* body1 = point->fixtureA->GetBody(); - b2Body* body2 = point->fixtureB->GetBody(); - float mass1 = body1->GetMass(); - float mass2 = body2->GetMass(); - - if (mass1 > 0.0f && mass2 > 0.0f) - { - if (mass2 > mass1) - { - nuke[nukeCount++] = body1; - } - else - { - nuke[nukeCount++] = body2; - } - - if (nukeCount == k_maxNuke) - { - break; - } - } - } - - // Sort the nuke array to group duplicates. - std::sort(nuke, nuke + nukeCount); - - // Destroy the bodies, skipping duplicates. - int32 i = 0; - while (i < nukeCount) - { - b2Body* b = nuke[i++]; - while (i < nukeCount && nuke[i] == b) - { - ++i; - } - - if (b != m_bomb) - { - m_world->DestroyBody(b); - } - } - } - - static Test* Create() - { - return new CollisionProcessing; - } + CollisionProcessing() + { + // Ground body + { + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); + + b2FixtureDef sd; + sd.shape = &shape; + ; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&sd); + } + + float xLo = -5.0f, xHi = 5.0f; + float yLo = 2.0f, yHi = 35.0f; + + // Small triangle + b2Vec2 vertices[3]; + vertices[0].Set(-1.0f, 0.0f); + vertices[1].Set(1.0f, 0.0f); + vertices[2].Set(0.0f, 2.0f); + + b2PolygonShape polygon; + polygon.Set(vertices, 3); + + b2FixtureDef triangleShapeDef; + triangleShapeDef.shape = &polygon; + triangleShapeDef.density = 1.0f; + + b2BodyDef triangleBodyDef; + triangleBodyDef.type = b2_dynamicBody; + triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body1 = m_world->CreateBody(&triangleBodyDef); + body1->CreateFixture(&triangleShapeDef); + + // Large triangle (recycle definitions) + vertices[0] *= 2.0f; + vertices[1] *= 2.0f; + vertices[2] *= 2.0f; + polygon.Set(vertices, 3); + + triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body2 = m_world->CreateBody(&triangleBodyDef); + body2->CreateFixture(&triangleShapeDef); + + // Small box + polygon.SetAsBox(1.0f, 0.5f); + + b2FixtureDef boxShapeDef; + boxShapeDef.shape = &polygon; + boxShapeDef.density = 1.0f; + + b2BodyDef boxBodyDef; + boxBodyDef.type = b2_dynamicBody; + boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body3 = m_world->CreateBody(&boxBodyDef); + body3->CreateFixture(&boxShapeDef); + + // Large box (recycle definitions) + polygon.SetAsBox(2.0f, 1.0f); + boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body4 = m_world->CreateBody(&boxBodyDef); + body4->CreateFixture(&boxShapeDef); + + // Small circle + b2CircleShape circle; + circle.m_radius = 1.0f; + + b2FixtureDef circleShapeDef; + circleShapeDef.shape = &circle; + circleShapeDef.density = 1.0f; + + b2BodyDef circleBodyDef; + circleBodyDef.type = b2_dynamicBody; + circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body5 = m_world->CreateBody(&circleBodyDef); + body5->CreateFixture(&circleShapeDef); + + // Large circle + circle.m_radius *= 2.0f; + circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body6 = m_world->CreateBody(&circleBodyDef); + body6->CreateFixture(&circleShapeDef); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + // We are going to destroy some bodies according to contact + // points. We must buffer the bodies that should be destroyed + // because they may belong to multiple contact points. + const int32 k_maxNuke = 6; + b2Body* nuke[k_maxNuke]; + int32 nukeCount = 0; + + // Traverse the contact results. Destroy bodies that + // are touching heavier bodies. + for (int32 i = 0; i < m_pointCount; ++i) + { + ContactPoint* point = m_points + i; + + b2Body* body1 = point->fixtureA->GetBody(); + b2Body* body2 = point->fixtureB->GetBody(); + float mass1 = body1->GetMass(); + float mass2 = body2->GetMass(); + + if (mass1 > 0.0f && mass2 > 0.0f) + { + if (mass2 > mass1) + { + nuke[nukeCount++] = body1; + } + else + { + nuke[nukeCount++] = body2; + } + + if (nukeCount == k_maxNuke) + { + break; + } + } + } + + // Sort the nuke array to group duplicates. + std::sort(nuke, nuke + nukeCount); + + // Destroy the bodies, skipping duplicates. + int32 i = 0; + while (i < nukeCount) + { + b2Body* b = nuke[i++]; + while (i < nukeCount && nuke[i] == b) + { + ++i; + } + + if (b != m_bomb) + { + m_world->DestroyBody(b); + } + } + } + + static Test* Create() { return new CollisionProcessing; } }; static int testIndex = RegisterTest("Examples", "Collision Processing", CollisionProcessing::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/compound_shapes.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/compound_shapes.cpp index 657d8b27b9b5..34d29535110d 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/compound_shapes.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/compound_shapes.cpp @@ -26,202 +26,199 @@ class CompoundShapes : public Test { public: - CompoundShapes() - { - { - b2BodyDef bd; - bd.position.Set(0.0f, 0.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); - - body->CreateFixture(&shape, 0.0f); - } - - // Table 1 - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-15.0f, 1.0f); - m_table1 = m_world->CreateBody(&bd); - - b2PolygonShape top; - top.SetAsBox(3.0f, 0.5f, b2Vec2(0.0f, 3.5f), 0.0f); - - b2PolygonShape leftLeg; - leftLeg.SetAsBox(0.5f, 1.5f, b2Vec2(-2.5f, 1.5f), 0.0f); - - b2PolygonShape rightLeg; - rightLeg.SetAsBox(0.5f, 1.5f, b2Vec2(2.5f, 1.5f), 0.0f); - - m_table1->CreateFixture(&top, 2.0f); - m_table1->CreateFixture(&leftLeg, 2.0f); - m_table1->CreateFixture(&rightLeg, 2.0f); - } - - // Table 2 - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-5.0f, 1.0f); - m_table2 = m_world->CreateBody(&bd); - - b2PolygonShape top; - top.SetAsBox(3.0f, 0.5f, b2Vec2(0.0f, 3.5f), 0.0f); - - b2PolygonShape leftLeg; - leftLeg.SetAsBox(0.5f, 2.0f, b2Vec2(-2.5f, 2.0f), 0.0f); - - b2PolygonShape rightLeg; - rightLeg.SetAsBox(0.5f, 2.0f, b2Vec2(2.5f, 2.0f), 0.0f); - - m_table2->CreateFixture(&top, 2.0f); - m_table2->CreateFixture(&leftLeg, 2.0f); - m_table2->CreateFixture(&rightLeg, 2.0f); - } - - // Spaceship 1 - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(5.0f, 1.0f); - m_ship1 = m_world->CreateBody(&bd); - - b2Vec2 vertices[3]; - - b2PolygonShape left; - vertices[0].Set(-2.0f, 0.0f); - vertices[1].Set(0.0f, 4.0f / 3.0f); - vertices[2].Set(0.0f, 4.0f); - left.Set(vertices, 3); - - b2PolygonShape right; - vertices[0].Set(2.0f, 0.0f); - vertices[1].Set(0.0f, 4.0f / 3.0f); - vertices[2].Set(0.0f, 4.0f); - right.Set(vertices, 3); - - m_ship1->CreateFixture(&left, 2.0f); - m_ship1->CreateFixture(&right, 2.0f); - } - - // Spaceship 2 - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(15.0f, 1.0f); - m_ship2 = m_world->CreateBody(&bd); - - b2Vec2 vertices[3]; - - b2PolygonShape left; - vertices[0].Set(-2.0f, 0.0f); - vertices[1].Set(1.0f, 2.0f); - vertices[2].Set(0.0f, 4.0f); - left.Set(vertices, 3); - - b2PolygonShape right; - vertices[0].Set(2.0f, 0.0f); - vertices[1].Set(-1.0f, 2.0f); - vertices[2].Set(0.0f, 4.0f); - right.Set(vertices, 3); - - m_ship2->CreateFixture(&left, 2.0f); - m_ship2->CreateFixture(&right, 2.0f); - } - } - - void Spawn() - { - // Table 1 obstruction - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = m_table1->GetPosition(); - bd.angle = m_table1->GetAngle(); - - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape box; - box.SetAsBox(4.0f, 0.1f, b2Vec2(0.0f, 3.0f), 0.0f); - - body->CreateFixture(&box, 2.0f); - } - - // Table 2 obstruction - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = m_table2->GetPosition(); - bd.angle = m_table2->GetAngle(); - - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape box; - box.SetAsBox(4.0f, 0.1f, b2Vec2(0.0f, 3.0f), 0.0f); - - body->CreateFixture(&box, 2.0f); - } - - // Ship 1 obstruction - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = m_ship1->GetPosition(); - bd.angle = m_ship1->GetAngle(); - bd.gravityScale = 0.0f; - - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape circle; - circle.m_radius = 0.5f; - circle.m_p.Set(0.0f, 2.0f); - - body->CreateFixture(&circle, 2.0f); - } - - // Ship 2 obstruction - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = m_ship2->GetPosition(); - bd.angle = m_ship2->GetAngle(); - bd.gravityScale = 0.0f; - - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape circle; - circle.m_radius = 0.5f; - circle.m_p.Set(0.0f, 2.0f); - - body->CreateFixture(&circle, 2.0f); - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Button("Spawn")) - { - Spawn(); - } - - ImGui::End(); - } - - static Test* Create() - { - return new CompoundShapes; - } - - b2Body* m_table1; - b2Body* m_table2; - b2Body* m_ship1; - b2Body* m_ship2; + CompoundShapes() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); + + body->CreateFixture(&shape, 0.0f); + } + + // Table 1 + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-15.0f, 1.0f); + m_table1 = m_world->CreateBody(&bd); + + b2PolygonShape top; + top.SetAsBox(3.0f, 0.5f, b2Vec2(0.0f, 3.5f), 0.0f); + + b2PolygonShape leftLeg; + leftLeg.SetAsBox(0.5f, 1.5f, b2Vec2(-2.5f, 1.5f), 0.0f); + + b2PolygonShape rightLeg; + rightLeg.SetAsBox(0.5f, 1.5f, b2Vec2(2.5f, 1.5f), 0.0f); + + m_table1->CreateFixture(&top, 2.0f); + m_table1->CreateFixture(&leftLeg, 2.0f); + m_table1->CreateFixture(&rightLeg, 2.0f); + } + + // Table 2 + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-5.0f, 1.0f); + m_table2 = m_world->CreateBody(&bd); + + b2PolygonShape top; + top.SetAsBox(3.0f, 0.5f, b2Vec2(0.0f, 3.5f), 0.0f); + + b2PolygonShape leftLeg; + leftLeg.SetAsBox(0.5f, 2.0f, b2Vec2(-2.5f, 2.0f), 0.0f); + + b2PolygonShape rightLeg; + rightLeg.SetAsBox(0.5f, 2.0f, b2Vec2(2.5f, 2.0f), 0.0f); + + m_table2->CreateFixture(&top, 2.0f); + m_table2->CreateFixture(&leftLeg, 2.0f); + m_table2->CreateFixture(&rightLeg, 2.0f); + } + + // Spaceship 1 + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(5.0f, 1.0f); + m_ship1 = m_world->CreateBody(&bd); + + b2Vec2 vertices[3]; + + b2PolygonShape left; + vertices[0].Set(-2.0f, 0.0f); + vertices[1].Set(0.0f, 4.0f / 3.0f); + vertices[2].Set(0.0f, 4.0f); + left.Set(vertices, 3); + + b2PolygonShape right; + vertices[0].Set(2.0f, 0.0f); + vertices[1].Set(0.0f, 4.0f / 3.0f); + vertices[2].Set(0.0f, 4.0f); + right.Set(vertices, 3); + + m_ship1->CreateFixture(&left, 2.0f); + m_ship1->CreateFixture(&right, 2.0f); + } + + // Spaceship 2 + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(15.0f, 1.0f); + m_ship2 = m_world->CreateBody(&bd); + + b2Vec2 vertices[3]; + + b2PolygonShape left; + vertices[0].Set(-2.0f, 0.0f); + vertices[1].Set(1.0f, 2.0f); + vertices[2].Set(0.0f, 4.0f); + left.Set(vertices, 3); + + b2PolygonShape right; + vertices[0].Set(2.0f, 0.0f); + vertices[1].Set(-1.0f, 2.0f); + vertices[2].Set(0.0f, 4.0f); + right.Set(vertices, 3); + + m_ship2->CreateFixture(&left, 2.0f); + m_ship2->CreateFixture(&right, 2.0f); + } + } + + void Spawn() + { + // Table 1 obstruction + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = m_table1->GetPosition(); + bd.angle = m_table1->GetAngle(); + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(4.0f, 0.1f, b2Vec2(0.0f, 3.0f), 0.0f); + + body->CreateFixture(&box, 2.0f); + } + + // Table 2 obstruction + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = m_table2->GetPosition(); + bd.angle = m_table2->GetAngle(); + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(4.0f, 0.1f, b2Vec2(0.0f, 3.0f), 0.0f); + + body->CreateFixture(&box, 2.0f); + } + + // Ship 1 obstruction + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = m_ship1->GetPosition(); + bd.angle = m_ship1->GetAngle(); + bd.gravityScale = 0.0f; + + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape circle; + circle.m_radius = 0.5f; + circle.m_p.Set(0.0f, 2.0f); + + body->CreateFixture(&circle, 2.0f); + } + + // Ship 2 obstruction + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = m_ship2->GetPosition(); + bd.angle = m_ship2->GetAngle(); + bd.gravityScale = 0.0f; + + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape circle; + circle.m_radius = 0.5f; + circle.m_p.Set(0.0f, 2.0f); + + body->CreateFixture(&circle, 2.0f); + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Button("Spawn")) + { + Spawn(); + } + + ImGui::End(); + } + + static Test* Create() { return new CompoundShapes; } + + b2Body* m_table1; + b2Body* m_table2; + b2Body* m_ship1; + b2Body* m_ship2; }; static int testIndex = RegisterTest("Examples", "Compound Shapes", CompoundShapes::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/confined.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/confined.cpp index dc0e7cf12208..44e2f6201036 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/confined.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/confined.cpp @@ -25,146 +25,141 @@ class Confined : public Test { public: - - enum - { - e_columnCount = 0, - e_rowCount = 0 - }; - - Confined() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - - // Floor - shape.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - - // Left wall - shape.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(-10.0f, 20.0f)); - ground->CreateFixture(&shape, 0.0f); - - // Right wall - shape.SetTwoSided(b2Vec2(10.0f, 0.0f), b2Vec2(10.0f, 20.0f)); - ground->CreateFixture(&shape, 0.0f); - - // Roof - shape.SetTwoSided(b2Vec2(-10.0f, 20.0f), b2Vec2(10.0f, 20.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - float radius = 0.5f; - b2CircleShape shape; - shape.m_p.SetZero(); - shape.m_radius = radius; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - fd.friction = 0.1f; - - for (int32 j = 0; j < e_columnCount; ++j) - { - for (int i = 0; i < e_rowCount; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f + (2.1f * j + 1.0f + 0.01f * i) * radius, (2.0f * i + 1.0f) * radius); - b2Body* body = m_world->CreateBody(&bd); - - body->CreateFixture(&fd); - } - } - - m_world->SetGravity(b2Vec2(0.0f, 0.0f)); - } - - void CreateCircle() - { - float radius = 2.0f; - b2CircleShape shape; - shape.m_p.SetZero(); - shape.m_radius = radius; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - fd.friction = 0.0f; - - b2Vec2 p(RandomFloat(), 3.0f + RandomFloat()); - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = p; - //bd.allowSleep = false; - b2Body* body = m_world->CreateBody(&bd); - - body->CreateFixture(&fd); - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_C: - CreateCircle(); - break; - } - } - - void Step(Settings& settings) override - { - bool sleeping = true; - for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) - { - if (b->GetType() != b2_dynamicBody) - { - continue; - } - - if (b->IsAwake()) - { - sleeping = false; - } - } - - if (m_stepCount == 180) - { - m_stepCount += 0; - } - - //if (sleeping) - //{ - // CreateCircle(); - //} - - Test::Step(settings); - - for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) - { - if (b->GetType() != b2_dynamicBody) - { - continue; - } - - b2Vec2 p = b->GetPosition(); - if (p.x <= -10.0f || 10.0f <= p.x || p.y <= 0.0f || 20.0f <= p.y) - { - p.x += 0.0f; - } - } - - DrawString(5, m_textLine, "Press 'c' to create a circle."); - - } - - static Test* Create() - { - return new Confined; - } + enum + { + e_columnCount = 0, + e_rowCount = 0 + }; + + Confined() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + // Floor + shape.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Left wall + shape.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(-10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Right wall + shape.SetTwoSided(b2Vec2(10.0f, 0.0f), b2Vec2(10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Roof + shape.SetTwoSided(b2Vec2(-10.0f, 20.0f), b2Vec2(10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + float radius = 0.5f; + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = radius; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.1f; + + for (int32 j = 0; j < e_columnCount; ++j) + { + for (int i = 0; i < e_rowCount; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + (2.1f * j + 1.0f + 0.01f * i) * radius, (2.0f * i + 1.0f) * radius); + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + } + } + + m_world->SetGravity(b2Vec2(0.0f, 0.0f)); + } + + void CreateCircle() + { + float radius = 2.0f; + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = radius; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.0f; + + b2Vec2 p(RandomFloat(), 3.0f + RandomFloat()); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = p; + // bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_C: + CreateCircle(); + break; + } + } + + void Step(Settings& settings) override + { + bool sleeping = true; + for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) + { + if (b->GetType() != b2_dynamicBody) + { + continue; + } + + if (b->IsAwake()) + { + sleeping = false; + } + } + + if (m_stepCount == 180) + { + m_stepCount += 0; + } + + // if (sleeping) + //{ + // CreateCircle(); + // } + + Test::Step(settings); + + for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) + { + if (b->GetType() != b2_dynamicBody) + { + continue; + } + + b2Vec2 p = b->GetPosition(); + if (p.x <= -10.0f || 10.0f <= p.x || p.y <= 0.0f || 20.0f <= p.y) + { + p.x += 0.0f; + } + } + + DrawString(5, m_textLine, "Press 'c' to create a circle."); + } + + static Test* Create() { return new Confined; } }; static int testIndex = RegisterTest("Solver", "Confined", Confined::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/continuous_test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/continuous_test.cpp index d8da4e99c1fb..80187d9daaad 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/continuous_test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/continuous_test.cpp @@ -25,136 +25,138 @@ class ContinuousTest : public Test { public: + ContinuousTest() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); - ContinuousTest() - { - { - b2BodyDef bd; - bd.position.Set(0.0f, 0.0f); - b2Body* body = m_world->CreateBody(&bd); + b2EdgeShape edge; - b2EdgeShape edge; + edge.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + body->CreateFixture(&edge, 0.0f); - edge.SetTwoSided(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); - body->CreateFixture(&edge, 0.0f); - - b2PolygonShape shape; - shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); - body->CreateFixture(&shape, 0.0f); - } + b2PolygonShape shape; + shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); + body->CreateFixture(&shape, 0.0f); + } #if 1 - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 20.0f); - //bd.angle = 0.1f; - - b2PolygonShape shape; - shape.SetAsBox(2.0f, 0.1f); - - m_body = m_world->CreateBody(&bd); - m_body->CreateFixture(&shape, 1.0f); - - m_angularVelocity = RandomFloat(-50.0f, 50.0f); - //m_angularVelocity = 46.661274f; - m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); - m_body->SetAngularVelocity(m_angularVelocity); - } + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 20.0f); + // bd.angle = 0.1f; + + b2PolygonShape shape; + shape.SetAsBox(2.0f, 0.1f); + + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&shape, 1.0f); + + m_angularVelocity = RandomFloat(-50.0f, 50.0f); + // m_angularVelocity = 46.661274f; + m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + m_body->SetAngularVelocity(m_angularVelocity); + } #else - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 2.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_p.SetZero(); - shape.m_radius = 0.5f; - body->CreateFixture(&shape, 1.0f); - - bd.bullet = true; - bd.position.Set(0.0f, 10.0f); - body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 1.0f); - body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); - } + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 2.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = 0.5f; + body->CreateFixture(&shape, 1.0f); + + bd.bullet = true; + bd.position.Set(0.0f, 10.0f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + } #endif - extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - extern B2_API int32 b2_toiCalls, b2_toiIters; - extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; - extern B2_API float b2_toiTime, b2_toiMaxTime; - - b2_gjkCalls = 0; b2_gjkIters = 0; b2_gjkMaxIters = 0; - b2_toiCalls = 0; b2_toiIters = 0; - b2_toiRootIters = 0; b2_toiMaxRootIters = 0; - b2_toiTime = 0.0f; b2_toiMaxTime = 0.0f; - } - - void Launch() - { - extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - extern B2_API int32 b2_toiCalls, b2_toiIters; - extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; - extern B2_API float b2_toiTime, b2_toiMaxTime; - - b2_gjkCalls = 0; b2_gjkIters = 0; b2_gjkMaxIters = 0; - b2_toiCalls = 0; b2_toiIters = 0; - b2_toiRootIters = 0; b2_toiMaxRootIters = 0; - b2_toiTime = 0.0f; b2_toiMaxTime = 0.0f; - - m_body->SetTransform(b2Vec2(0.0f, 20.0f), 0.0f); - m_angularVelocity = RandomFloat(-50.0f, 50.0f); - m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); - m_body->SetAngularVelocity(m_angularVelocity); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; - - if (b2_gjkCalls > 0) - { - DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", - b2_gjkCalls, b2_gjkIters / float(b2_gjkCalls), b2_gjkMaxIters); - - } - - extern B2_API int32 b2_toiCalls, b2_toiIters; - extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; - extern B2_API float b2_toiTime, b2_toiMaxTime; - - if (b2_toiCalls > 0) - { - DrawString(5, m_textLine, "toi calls = %d, ave [max] toi iters = %3.1f [%d]", - b2_toiCalls, b2_toiIters / float(b2_toiCalls), b2_toiMaxRootIters); - - - DrawString(5, m_textLine, "ave [max] toi root iters = %3.1f [%d]", - b2_toiRootIters / float(b2_toiCalls), b2_toiMaxRootIters); - - - DrawString(5, m_textLine, "ave [max] toi time = %.1f [%.1f] (microseconds)", - 1000.0f * b2_toiTime / float(b2_toiCalls), 1000.0f * b2_toiMaxTime); - - } - - if (m_stepCount % 60 == 0) - { - Launch(); - } - } - - static Test* Create() - { - return new ContinuousTest; - } - - b2Body* m_body; - float m_angularVelocity; + extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern B2_API int32 b2_toiCalls, b2_toiIters; + extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; + extern B2_API float b2_toiTime, b2_toiMaxTime; + + b2_gjkCalls = 0; + b2_gjkIters = 0; + b2_gjkMaxIters = 0; + b2_toiCalls = 0; + b2_toiIters = 0; + b2_toiRootIters = 0; + b2_toiMaxRootIters = 0; + b2_toiTime = 0.0f; + b2_toiMaxTime = 0.0f; + } + + void Launch() + { + extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern B2_API int32 b2_toiCalls, b2_toiIters; + extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; + extern B2_API float b2_toiTime, b2_toiMaxTime; + + b2_gjkCalls = 0; + b2_gjkIters = 0; + b2_gjkMaxIters = 0; + b2_toiCalls = 0; + b2_toiIters = 0; + b2_toiRootIters = 0; + b2_toiMaxRootIters = 0; + b2_toiTime = 0.0f; + b2_toiMaxTime = 0.0f; + + m_body->SetTransform(b2Vec2(0.0f, 20.0f), 0.0f); + m_angularVelocity = RandomFloat(-50.0f, 50.0f); + m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + m_body->SetAngularVelocity(m_angularVelocity); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + extern B2_API int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + + if (b2_gjkCalls > 0) + { + DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", b2_gjkCalls, + b2_gjkIters / float(b2_gjkCalls), b2_gjkMaxIters); + } + + extern B2_API int32 b2_toiCalls, b2_toiIters; + extern B2_API int32 b2_toiRootIters, b2_toiMaxRootIters; + extern B2_API float b2_toiTime, b2_toiMaxTime; + + if (b2_toiCalls > 0) + { + DrawString(5, m_textLine, "toi calls = %d, ave [max] toi iters = %3.1f [%d]", b2_toiCalls, + b2_toiIters / float(b2_toiCalls), b2_toiMaxRootIters); + + DrawString(5, m_textLine, "ave [max] toi root iters = %3.1f [%d]", b2_toiRootIters / float(b2_toiCalls), + b2_toiMaxRootIters); + + DrawString(5, m_textLine, "ave [max] toi time = %.1f [%.1f] (microseconds)", + 1000.0f * b2_toiTime / float(b2_toiCalls), 1000.0f * b2_toiMaxTime); + } + + if (m_stepCount % 60 == 0) + { + Launch(); + } + } + + static Test* Create() { return new ContinuousTest; } + + b2Body* m_body; + float m_angularVelocity; }; static int testIndex = RegisterTest("Continuous", "Continuous Test", ContinuousTest::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/convex_hull.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/convex_hull.cpp index ac047b235eea..44f4da8906e5 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/convex_hull.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/convex_hull.cpp @@ -25,88 +25,84 @@ class ConvexHull : public Test { public: - enum - { - e_count = b2_maxPolygonVertices - }; - - ConvexHull() - { - Generate(); - m_auto = false; - } - - void Generate() - { - b2Vec2 lowerBound(-8.0f, -8.0f); - b2Vec2 upperBound(8.0f, 8.0f); - - for (int32 i = 0; i < e_count; ++i) - { - float x = 10.0f * RandomFloat(); - float y = 10.0f * RandomFloat(); - - // Clamp onto a square to help create collinearities. - // This will stress the convex hull algorithm. - b2Vec2 v(x, y); - v = b2Clamp(v, lowerBound, upperBound); - m_points[i] = v; - } - - m_count = e_count; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_auto = !m_auto; - break; - - case GLFW_KEY_G: - Generate(); - break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - b2PolygonShape shape; - shape.Set(m_points, m_count); - - DrawString(5, m_textLine, "Press g to generate a new random convex hull"); - - - g_debugDraw.DrawPolygon(shape.m_vertices, shape.m_count, b2Color(0.9f, 0.9f, 0.9f)); - - for (int32 i = 0; i < m_count; ++i) - { - g_debugDraw.DrawPoint(m_points[i], 3.0f, b2Color(0.3f, 0.9f, 0.3f)); - DrawString(m_points[i] + b2Vec2(0.05f, 0.05f), "%d", i); - } - - if (shape.Validate() == false) - { - m_textLine += 0; - } - - if (m_auto) - { - Generate(); - } - } - - static Test* Create() - { - return new ConvexHull; - } - - b2Vec2 m_points[b2_maxPolygonVertices]; - int32 m_count; - bool m_auto; + enum + { + e_count = b2_maxPolygonVertices + }; + + ConvexHull() + { + Generate(); + m_auto = false; + } + + void Generate() + { + b2Vec2 lowerBound(-8.0f, -8.0f); + b2Vec2 upperBound(8.0f, 8.0f); + + for (int32 i = 0; i < e_count; ++i) + { + float x = 10.0f * RandomFloat(); + float y = 10.0f * RandomFloat(); + + // Clamp onto a square to help create collinearities. + // This will stress the convex hull algorithm. + b2Vec2 v(x, y); + v = b2Clamp(v, lowerBound, upperBound); + m_points[i] = v; + } + + m_count = e_count; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_auto = !m_auto; + break; + + case GLFW_KEY_G: + Generate(); + break; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + b2PolygonShape shape; + shape.Set(m_points, m_count); + + DrawString(5, m_textLine, "Press g to generate a new random convex hull"); + + g_debugDraw.DrawPolygon(shape.m_vertices, shape.m_count, b2Color(0.9f, 0.9f, 0.9f)); + + for (int32 i = 0; i < m_count; ++i) + { + g_debugDraw.DrawPoint(m_points[i], 3.0f, b2Color(0.3f, 0.9f, 0.3f)); + DrawString(m_points[i] + b2Vec2(0.05f, 0.05f), "%d", i); + } + + if (shape.Validate() == false) + { + m_textLine += 0; + } + + if (m_auto) + { + Generate(); + } + } + + static Test* Create() { return new ConvexHull; } + + b2Vec2 m_points[b2_maxPolygonVertices]; + int32 m_count; + bool m_auto; }; static int testIndex = RegisterTest("Geometry", "Convex Hull", ConvexHull::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/conveyor_belt.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/conveyor_belt.cpp index 41d4f2c61c5a..967ff5826369 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/conveyor_belt.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/conveyor_belt.cpp @@ -25,77 +25,70 @@ class ConveyorBelt : public Test { public: - - ConveyorBelt() - { - // Ground - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Platform - { - b2BodyDef bd; - bd.position.Set(-5.0f, 5.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(10.0f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.friction = 0.8f; - m_platform = body->CreateFixture(&fd); - } - - // Boxes - for (int32 i = 0; i < 5; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f + 2.0f * i, 7.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - body->CreateFixture(&shape, 20.0f); - } - } - - void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override - { - Test::PreSolve(contact, oldManifold); - - b2Fixture* fixtureA = contact->GetFixtureA(); - b2Fixture* fixtureB = contact->GetFixtureB(); - - if (fixtureA == m_platform) - { - contact->SetTangentSpeed(5.0f); - } - - if (fixtureB == m_platform) - { - contact->SetTangentSpeed(-5.0f); - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - } - - static Test* Create() - { - return new ConveyorBelt; - } - - b2Fixture* m_platform; + ConveyorBelt() + { + // Ground + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Platform + { + b2BodyDef bd; + bd.position.Set(-5.0f, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(10.0f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.8f; + m_platform = body->CreateFixture(&fd); + } + + // Boxes + for (int32 i = 0; i < 5; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + 2.0f * i, 7.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + body->CreateFixture(&shape, 20.0f); + } + } + + void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override + { + Test::PreSolve(contact, oldManifold); + + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA == m_platform) + { + contact->SetTangentSpeed(5.0f); + } + + if (fixtureB == m_platform) + { + contact->SetTangentSpeed(-5.0f); + } + } + + void Step(Settings& settings) override { Test::Step(settings); } + + static Test* Create() { return new ConveyorBelt; } + + b2Fixture* m_platform; }; static int testIndex = RegisterTest("Examples", "Conveyor Belt", ConveyorBelt::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_joint.cpp index 455a600bf216..087b6fcad1d7 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_joint.cpp @@ -27,97 +27,94 @@ class DistanceJoint : public Test { public: - DistanceJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.angularDamping = 0.1f; - - bd.position.Set(0.0f, 5.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - body->CreateFixture(&shape, 5.0f); - - m_hertz = 1.0f; - m_dampingRatio = 0.7f; - - b2DistanceJointDef jd; - jd.Initialize(ground, body, b2Vec2(0.0f, 15.0f), bd.position); - jd.collideConnected = true; - m_length = jd.length; - m_minLength = m_length; - m_maxLength = m_length; - b2LinearStiffness(jd.stiffness, jd.damping, m_hertz, m_dampingRatio, jd.bodyA, jd.bodyB); - m_joint = (b2DistanceJoint*)m_world->CreateJoint(&jd); - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(260.0f, 150.0f)); - ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::SliderFloat("Length", &m_length, 0.0f, 20.0f, "%.0f")) - { - m_length = m_joint->SetLength(m_length); - } - - if (ImGui::SliderFloat("Min Length", &m_minLength, 0.0f, 20.0f, "%.0f")) - { - m_minLength = m_joint->SetMinLength(m_minLength); - } - - if (ImGui::SliderFloat("Max Length", &m_maxLength, 0.0f, 20.0f, "%.0f")) - { - m_maxLength = m_joint->SetMaxLength(m_maxLength); - } - - if (ImGui::SliderFloat("Hertz", &m_hertz, 0.0f, 10.0f, "%.1f")) - { - float stiffness; - float damping; - b2LinearStiffness(stiffness, damping, m_hertz, m_dampingRatio, m_joint->GetBodyA(), m_joint->GetBodyB()); - m_joint->SetStiffness(stiffness); - m_joint->SetDamping(damping); - } - - if (ImGui::SliderFloat("Damping Ratio", &m_dampingRatio, 0.0f, 2.0f, "%.1f")) - { - float stiffness; - float damping; - b2LinearStiffness(stiffness, damping, m_hertz, m_dampingRatio, m_joint->GetBodyA(), m_joint->GetBodyB()); - m_joint->SetStiffness(stiffness); - m_joint->SetDamping(damping); - } - - ImGui::End(); - } - - static Test* Create() - { - return new DistanceJoint; - } - - b2DistanceJoint* m_joint; - float m_length; - float m_minLength; - float m_maxLength; - float m_hertz; - float m_dampingRatio; + DistanceJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.angularDamping = 0.1f; + + bd.position.Set(0.0f, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + body->CreateFixture(&shape, 5.0f); + + m_hertz = 1.0f; + m_dampingRatio = 0.7f; + + b2DistanceJointDef jd; + jd.Initialize(ground, body, b2Vec2(0.0f, 15.0f), bd.position); + jd.collideConnected = true; + m_length = jd.length; + m_minLength = m_length; + m_maxLength = m_length; + b2LinearStiffness(jd.stiffness, jd.damping, m_hertz, m_dampingRatio, jd.bodyA, jd.bodyB); + m_joint = (b2DistanceJoint*)m_world->CreateJoint(&jd); + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(260.0f, 150.0f)); + ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::SliderFloat("Length", &m_length, 0.0f, 20.0f, "%.0f")) + { + m_length = m_joint->SetLength(m_length); + } + + if (ImGui::SliderFloat("Min Length", &m_minLength, 0.0f, 20.0f, "%.0f")) + { + m_minLength = m_joint->SetMinLength(m_minLength); + } + + if (ImGui::SliderFloat("Max Length", &m_maxLength, 0.0f, 20.0f, "%.0f")) + { + m_maxLength = m_joint->SetMaxLength(m_maxLength); + } + + if (ImGui::SliderFloat("Hertz", &m_hertz, 0.0f, 10.0f, "%.1f")) + { + float stiffness; + float damping; + b2LinearStiffness(stiffness, damping, m_hertz, m_dampingRatio, m_joint->GetBodyA(), m_joint->GetBodyB()); + m_joint->SetStiffness(stiffness); + m_joint->SetDamping(damping); + } + + if (ImGui::SliderFloat("Damping Ratio", &m_dampingRatio, 0.0f, 2.0f, "%.1f")) + { + float stiffness; + float damping; + b2LinearStiffness(stiffness, damping, m_hertz, m_dampingRatio, m_joint->GetBodyA(), m_joint->GetBodyB()); + m_joint->SetStiffness(stiffness); + m_joint->SetDamping(damping); + } + + ImGui::End(); + } + + static Test* Create() { return new DistanceJoint; } + + b2DistanceJoint* m_joint; + float m_length; + float m_minLength; + float m_maxLength; + float m_hertz; + float m_dampingRatio; }; static int testIndex = RegisterTest("Joints", "Distance Joint", DistanceJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_test.cpp index 0f970de658af..6372330426b0 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/distance_test.cpp @@ -26,114 +26,109 @@ class DistanceTest : public Test { public: - DistanceTest() - { - { - m_transformA.SetIdentity(); - m_transformA.p.Set(0.0f, -0.2f); - m_polygonA.SetAsBox(10.0f, 0.2f); - } - - { - m_positionB.Set(12.017401f, 0.13678508f); - m_angleB = -0.0109265f; - m_transformB.Set(m_positionB, m_angleB); - - m_polygonB.SetAsBox(2.0f, 0.1f); - } - } - - static Test* Create() - { - return new DistanceTest; - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - b2DistanceInput input; - input.proxyA.Set(&m_polygonA, 0); - input.proxyB.Set(&m_polygonB, 0); - input.transformA = m_transformA; - input.transformB = m_transformB; - input.useRadii = true; - b2SimplexCache cache; - cache.count = 0; - b2DistanceOutput output; - b2Distance(&output, &cache, &input); - - DrawString(5, m_textLine, "distance = %g", output.distance); - - - DrawString(5, m_textLine, "iterations = %d", output.iterations); - - - { - b2Color color(0.9f, 0.9f, 0.9f); - b2Vec2 v[b2_maxPolygonVertices]; - for (int32 i = 0; i < m_polygonA.m_count; ++i) - { - v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); - } - g_debugDraw.DrawPolygon(v, m_polygonA.m_count, color); - - for (int32 i = 0; i < m_polygonB.m_count; ++i) - { - v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); - } - g_debugDraw.DrawPolygon(v, m_polygonB.m_count, color); - } - - b2Vec2 x1 = output.pointA; - b2Vec2 x2 = output.pointB; - - b2Color c1(1.0f, 0.0f, 0.0f); - g_debugDraw.DrawPoint(x1, 4.0f, c1); - - b2Color c2(1.0f, 1.0f, 0.0f); - g_debugDraw.DrawPoint(x2, 4.0f, c2); - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_positionB.x -= 0.1f; - break; - - case GLFW_KEY_D: - m_positionB.x += 0.1f; - break; - - case GLFW_KEY_S: - m_positionB.y -= 0.1f; - break; - - case GLFW_KEY_W: - m_positionB.y += 0.1f; - break; - - case GLFW_KEY_Q: - m_angleB += 0.1f * b2_pi; - break; - - case GLFW_KEY_E: - m_angleB -= 0.1f * b2_pi; - break; - } - - m_transformB.Set(m_positionB, m_angleB); - } - - b2Vec2 m_positionB; - float m_angleB; - - b2Transform m_transformA; - b2Transform m_transformB; - b2PolygonShape m_polygonA; - b2PolygonShape m_polygonB; + DistanceTest() + { + { + m_transformA.SetIdentity(); + m_transformA.p.Set(0.0f, -0.2f); + m_polygonA.SetAsBox(10.0f, 0.2f); + } + + { + m_positionB.Set(12.017401f, 0.13678508f); + m_angleB = -0.0109265f; + m_transformB.Set(m_positionB, m_angleB); + + m_polygonB.SetAsBox(2.0f, 0.1f); + } + } + + static Test* Create() { return new DistanceTest; } + + void Step(Settings& settings) override + { + Test::Step(settings); + + b2DistanceInput input; + input.proxyA.Set(&m_polygonA, 0); + input.proxyB.Set(&m_polygonB, 0); + input.transformA = m_transformA; + input.transformB = m_transformB; + input.useRadii = true; + b2SimplexCache cache; + cache.count = 0; + b2DistanceOutput output; + b2Distance(&output, &cache, &input); + + DrawString(5, m_textLine, "distance = %g", output.distance); + + DrawString(5, m_textLine, "iterations = %d", output.iterations); + + { + b2Color color(0.9f, 0.9f, 0.9f); + b2Vec2 v[b2_maxPolygonVertices]; + for (int32 i = 0; i < m_polygonA.m_count; ++i) + { + v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); + } + g_debugDraw.DrawPolygon(v, m_polygonA.m_count, color); + + for (int32 i = 0; i < m_polygonB.m_count; ++i) + { + v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); + } + g_debugDraw.DrawPolygon(v, m_polygonB.m_count, color); + } + + b2Vec2 x1 = output.pointA; + b2Vec2 x2 = output.pointB; + + b2Color c1(1.0f, 0.0f, 0.0f); + g_debugDraw.DrawPoint(x1, 4.0f, c1); + + b2Color c2(1.0f, 1.0f, 0.0f); + g_debugDraw.DrawPoint(x2, 4.0f, c2); + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_positionB.x -= 0.1f; + break; + + case GLFW_KEY_D: + m_positionB.x += 0.1f; + break; + + case GLFW_KEY_S: + m_positionB.y -= 0.1f; + break; + + case GLFW_KEY_W: + m_positionB.y += 0.1f; + break; + + case GLFW_KEY_Q: + m_angleB += 0.1f * b2_pi; + break; + + case GLFW_KEY_E: + m_angleB -= 0.1f * b2_pi; + break; + } + + m_transformB.Set(m_positionB, m_angleB); + } + + b2Vec2 m_positionB; + float m_angleB; + + b2Transform m_transformA; + b2Transform m_transformB; + b2PolygonShape m_polygonA; + b2PolygonShape m_polygonB; }; static int testIndex = RegisterTest("Geometry", "Distance Test", DistanceTest::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/dominos.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/dominos.cpp index 739876bf55fd..f64a141bd407 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/dominos.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/dominos.cpp @@ -25,196 +25,192 @@ class Dominos : public Test { public: - - Dominos() - { - b2Body* b1; - { - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - - b2BodyDef bd; - b1 = m_world->CreateBody(&bd); - b1->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(6.0f, 0.25f); - - b2BodyDef bd; - bd.position.Set(-1.5f, 10.0f); - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.1f, 1.0f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.friction = 0.1f; - - for (int i = 0; i < 10; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-6.0f + 1.0f * i, 11.25f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&fd); - } - } - - { - b2PolygonShape shape; - shape.SetAsBox(7.0f, 0.25f, b2Vec2_zero, 0.3f); - - b2BodyDef bd; - bd.position.Set(1.0f, 6.0f); - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - b2Body* b2; - { - b2PolygonShape shape; - shape.SetAsBox(0.25f, 1.5f); - - b2BodyDef bd; - bd.position.Set(-7.0f, 4.0f); - b2 = m_world->CreateBody(&bd); - b2->CreateFixture(&shape, 0.0f); - } - - b2Body* b3; - { - b2PolygonShape shape; - shape.SetAsBox(6.0f, 0.125f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-0.9f, 1.0f); - bd.angle = -0.15f; - - b3 = m_world->CreateBody(&bd); - b3->CreateFixture(&shape, 10.0f); - } - - b2RevoluteJointDef jd; - b2Vec2 anchor; - - anchor.Set(-2.0f, 1.0f); - jd.Initialize(b1, b3, anchor); - jd.collideConnected = true; - m_world->CreateJoint(&jd); - - b2Body* b4; - { - b2PolygonShape shape; - shape.SetAsBox(0.25f, 0.25f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f, 15.0f); - b4 = m_world->CreateBody(&bd); - b4->CreateFixture(&shape, 10.0f); - } - - anchor.Set(-7.0f, 15.0f); - jd.Initialize(b2, b4, anchor); - m_world->CreateJoint(&jd); - - b2Body* b5; - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(6.5f, 3.0f); - b5 = m_world->CreateBody(&bd); - - b2PolygonShape shape; - b2FixtureDef fd; - - fd.shape = &shape; - fd.density = 10.0f; - fd.friction = 0.1f; - - shape.SetAsBox(1.0f, 0.1f, b2Vec2(0.0f, -0.9f), 0.0f); - b5->CreateFixture(&fd); - - shape.SetAsBox(0.1f, 1.0f, b2Vec2(-0.9f, 0.0f), 0.0f); - b5->CreateFixture(&fd); - - shape.SetAsBox(0.1f, 1.0f, b2Vec2(0.9f, 0.0f), 0.0f); - b5->CreateFixture(&fd); - } - - anchor.Set(6.0f, 2.0f); - jd.Initialize(b1, b5, anchor); - m_world->CreateJoint(&jd); - - b2Body* b6; - { - b2PolygonShape shape; - shape.SetAsBox(1.0f, 0.1f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(6.5f, 4.1f); - b6 = m_world->CreateBody(&bd); - b6->CreateFixture(&shape, 30.0f); - } - - anchor.Set(7.5f, 4.0f); - jd.Initialize(b5, b6, anchor); - m_world->CreateJoint(&jd); - - b2Body* b7; - { - b2PolygonShape shape; - shape.SetAsBox(0.1f, 1.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(7.4f, 1.0f); - - b7 = m_world->CreateBody(&bd); - b7->CreateFixture(&shape, 10.0f); - } - - b2DistanceJointDef djd; - djd.bodyA = b3; - djd.bodyB = b7; - djd.localAnchorA.Set(6.0f, 0.0f); - djd.localAnchorB.Set(0.0f, -1.0f); - b2Vec2 d = djd.bodyB->GetWorldPoint(djd.localAnchorB) - djd.bodyA->GetWorldPoint(djd.localAnchorA); - djd.length = d.Length(); - - b2LinearStiffness(djd.stiffness, djd.damping, 1.0f, 1.0f, djd.bodyA, djd.bodyB); - m_world->CreateJoint(&djd); - - { - float radius = 0.2f; - - b2CircleShape shape; - shape.m_radius = radius; - - for (int32 i = 0; i < 4; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(5.9f + 2.0f * radius * i, 2.4f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 10.0f); - } - } - } - - static Test* Create() - { - return new Dominos; - } + Dominos() + { + b2Body* b1; + { + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2BodyDef bd; + b1 = m_world->CreateBody(&bd); + b1->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(6.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-1.5f, 10.0f); + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.1f, 1.0f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.1f; + + for (int i = 0; i < 10; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 1.0f * i, 11.25f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(7.0f, 0.25f, b2Vec2_zero, 0.3f); + + b2BodyDef bd; + bd.position.Set(1.0f, 6.0f); + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + b2Body* b2; + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.5f); + + b2BodyDef bd; + bd.position.Set(-7.0f, 4.0f); + b2 = m_world->CreateBody(&bd); + b2->CreateFixture(&shape, 0.0f); + } + + b2Body* b3; + { + b2PolygonShape shape; + shape.SetAsBox(6.0f, 0.125f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-0.9f, 1.0f); + bd.angle = -0.15f; + + b3 = m_world->CreateBody(&bd); + b3->CreateFixture(&shape, 10.0f); + } + + b2RevoluteJointDef jd; + b2Vec2 anchor; + + anchor.Set(-2.0f, 1.0f); + jd.Initialize(b1, b3, anchor); + jd.collideConnected = true; + m_world->CreateJoint(&jd); + + b2Body* b4; + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 0.25f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f, 15.0f); + b4 = m_world->CreateBody(&bd); + b4->CreateFixture(&shape, 10.0f); + } + + anchor.Set(-7.0f, 15.0f); + jd.Initialize(b2, b4, anchor); + m_world->CreateJoint(&jd); + + b2Body* b5; + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(6.5f, 3.0f); + b5 = m_world->CreateBody(&bd); + + b2PolygonShape shape; + b2FixtureDef fd; + + fd.shape = &shape; + fd.density = 10.0f; + fd.friction = 0.1f; + + shape.SetAsBox(1.0f, 0.1f, b2Vec2(0.0f, -0.9f), 0.0f); + b5->CreateFixture(&fd); + + shape.SetAsBox(0.1f, 1.0f, b2Vec2(-0.9f, 0.0f), 0.0f); + b5->CreateFixture(&fd); + + shape.SetAsBox(0.1f, 1.0f, b2Vec2(0.9f, 0.0f), 0.0f); + b5->CreateFixture(&fd); + } + + anchor.Set(6.0f, 2.0f); + jd.Initialize(b1, b5, anchor); + m_world->CreateJoint(&jd); + + b2Body* b6; + { + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.1f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(6.5f, 4.1f); + b6 = m_world->CreateBody(&bd); + b6->CreateFixture(&shape, 30.0f); + } + + anchor.Set(7.5f, 4.0f); + jd.Initialize(b5, b6, anchor); + m_world->CreateJoint(&jd); + + b2Body* b7; + { + b2PolygonShape shape; + shape.SetAsBox(0.1f, 1.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(7.4f, 1.0f); + + b7 = m_world->CreateBody(&bd); + b7->CreateFixture(&shape, 10.0f); + } + + b2DistanceJointDef djd; + djd.bodyA = b3; + djd.bodyB = b7; + djd.localAnchorA.Set(6.0f, 0.0f); + djd.localAnchorB.Set(0.0f, -1.0f); + b2Vec2 d = djd.bodyB->GetWorldPoint(djd.localAnchorB) - djd.bodyA->GetWorldPoint(djd.localAnchorA); + djd.length = d.Length(); + + b2LinearStiffness(djd.stiffness, djd.damping, 1.0f, 1.0f, djd.bodyA, djd.bodyB); + m_world->CreateJoint(&djd); + + { + float radius = 0.2f; + + b2CircleShape shape; + shape.m_radius = radius; + + for (int32 i = 0; i < 4; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(5.9f + 2.0f * radius * i, 2.4f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 10.0f); + } + } + } + + static Test* Create() { return new Dominos; } }; static int testIndex = RegisterTest("Examples", "Dominos", Dominos::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/dump_loader.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/dump_loader.cpp index 3225113b517d..74e0984b076f 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/dump_loader.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/dump_loader.cpp @@ -26,63 +26,58 @@ class DumpLoader : public Test { public: + DumpLoader() + { + b2ChainShape chainShape; + b2Vec2 vertices[] = {b2Vec2(-5, 0), b2Vec2(5, 0), b2Vec2(5, 5), b2Vec2(4, 1), b2Vec2(-4, 1), b2Vec2(-5, 5)}; + chainShape.CreateLoop(vertices, 6); - DumpLoader() - { - b2ChainShape chainShape; - b2Vec2 vertices[] = {b2Vec2(-5,0), b2Vec2(5,0), b2Vec2(5,5), b2Vec2(4,1), b2Vec2(-4,1), b2Vec2(-5,5)}; - chainShape.CreateLoop(vertices, 6); + b2FixtureDef groundFixtureDef; + groundFixtureDef.density = 0; + groundFixtureDef.shape = &chainShape; - b2FixtureDef groundFixtureDef; - groundFixtureDef.density = 0; - groundFixtureDef.shape = &chainShape; + b2BodyDef groundBodyDef; + groundBodyDef.type = b2_staticBody; - b2BodyDef groundBodyDef; - groundBodyDef.type = b2_staticBody; + b2Body* groundBody = m_world->CreateBody(&groundBodyDef); + b2Fixture* groundBodyFixture = groundBody->CreateFixture(&groundFixtureDef); - b2Body *groundBody = m_world->CreateBody(&groundBodyDef); - b2Fixture *groundBodyFixture = groundBody->CreateFixture(&groundFixtureDef); + b2CircleShape ballShape; + ballShape.m_radius = 1; - b2CircleShape ballShape; - ballShape.m_radius = 1; + b2FixtureDef ballFixtureDef; + ballFixtureDef.restitution = 0.75f; + ballFixtureDef.density = 1; + ballFixtureDef.shape = &ballShape; - b2FixtureDef ballFixtureDef; - ballFixtureDef.restitution = 0.75f; - ballFixtureDef.density = 1; - ballFixtureDef.shape = &ballShape; + b2BodyDef ballBodyDef; + ballBodyDef.type = b2BodyType::b2_dynamicBody; + ballBodyDef.position = b2Vec2(0, 10); + // ballBodyDef.angularDamping = 0.2f; - b2BodyDef ballBodyDef; - ballBodyDef.type = b2BodyType::b2_dynamicBody; - ballBodyDef.position = b2Vec2(0, 10); - // ballBodyDef.angularDamping = 0.2f; + m_ball = m_world->CreateBody(&ballBodyDef); + b2Fixture* ballFixture = m_ball->CreateFixture(&ballFixtureDef); + m_ball->ApplyForceToCenter(b2Vec2(-1000, -400), true); + } - m_ball = m_world->CreateBody(&ballBodyDef); - b2Fixture *ballFixture = m_ball->CreateFixture(&ballFixtureDef); - m_ball->ApplyForceToCenter(b2Vec2(-1000, -400), true); - } + void Step(Settings& settings) override + { + b2Vec2 v = m_ball->GetLinearVelocity(); + float omega = m_ball->GetAngularVelocity(); - void Step(Settings& settings) override - { - b2Vec2 v = m_ball->GetLinearVelocity(); - float omega = m_ball->GetAngularVelocity(); + b2MassData massData; + m_ball->GetMassData(&massData); - b2MassData massData; - m_ball->GetMassData(&massData); + float ke = 0.5f * massData.mass * b2Dot(v, v) + 0.5f * massData.I * omega * omega; - float ke = 0.5f * massData.mass * b2Dot(v, v) + 0.5f * massData.I * omega * omega; + DrawString(5, m_textLine, "kinetic energy = %.6f", ke); - DrawString(5, m_textLine, "kinetic energy = %.6f", ke); - + Test::Step(settings); + } - Test::Step(settings); - } + static Test* Create() { return new DumpLoader; } - static Test* Create() - { - return new DumpLoader; - } - - b2Body* m_ball; + b2Body* m_ball; }; static int testIndex = RegisterTest("Bugs", "Dump Loader", DumpLoader::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/dynamic_tree.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/dynamic_tree.cpp index 4efcf56903bb..bd2de4d80a0f 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/dynamic_tree.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/dynamic_tree.cpp @@ -25,336 +25,333 @@ class DynamicTree : public Test { public: - - enum - { - e_actorCount = 128 - }; - - DynamicTree() - { - m_worldExtent = 15.0f; - m_proxyExtent = 0.5f; - - srand(888); - - for (int32 i = 0; i < e_actorCount; ++i) - { - Actor* actor = m_actors + i; - GetRandomAABB(&actor->aabb); - actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); - } - - m_stepCount = 0; - - float h = m_worldExtent; - m_queryAABB.lowerBound.Set(-3.0f, -4.0f + h); - m_queryAABB.upperBound.Set(5.0f, 6.0f + h); - - m_rayCastInput.p1.Set(-5.0, 5.0f + h); - m_rayCastInput.p2.Set(7.0f, -4.0f + h); - //m_rayCastInput.p1.Set(0.0f, 2.0f + h); - //m_rayCastInput.p2.Set(0.0f, -2.0f + h); - m_rayCastInput.maxFraction = 1.0f; - - m_automated = false; - } - - static Test* Create() - { - return new DynamicTree; - } - - void Step(Settings& settings) override - { - B2_NOT_USED(settings); - - m_rayActor = NULL; - for (int32 i = 0; i < e_actorCount; ++i) - { - m_actors[i].fraction = 1.0f; - m_actors[i].overlap = false; - } - - if (m_automated == true) - { - int32 actionCount = b2Max(1, e_actorCount >> 2); - - for (int32 i = 0; i < actionCount; ++i) - { - Action(); - } - } - - Query(); - RayCast(); - - for (int32 i = 0; i < e_actorCount; ++i) - { - Actor* actor = m_actors + i; - if (actor->proxyId == b2_nullNode) - continue; - - b2Color c(0.9f, 0.9f, 0.9f); - if (actor == m_rayActor && actor->overlap) - { - c.Set(0.9f, 0.6f, 0.6f); - } - else if (actor == m_rayActor) - { - c.Set(0.6f, 0.9f, 0.6f); - } - else if (actor->overlap) - { - c.Set(0.6f, 0.6f, 0.9f); - } - - DrawAABB(&actor->aabb, c); - } - - b2Color c(0.7f, 0.7f, 0.7f); - DrawAABB(&m_queryAABB, c); - - g_debugDraw.DrawSegment(m_rayCastInput.p1, m_rayCastInput.p2, c); - - b2Color c1(0.2f, 0.9f, 0.2f); - b2Color c2(0.9f, 0.2f, 0.2f); - g_debugDraw.DrawPoint(m_rayCastInput.p1, 6.0f, c1); - g_debugDraw.DrawPoint(m_rayCastInput.p2, 6.0f, c2); - - if (m_rayActor) - { - b2Color cr(0.2f, 0.2f, 0.9f); - b2Vec2 p = m_rayCastInput.p1 + m_rayActor->fraction * (m_rayCastInput.p2 - m_rayCastInput.p1); - g_debugDraw.DrawPoint(p, 6.0f, cr); - } - - { - int32 height = m_tree.GetHeight(); - DrawString(5, m_textLine, "dynamic tree height = %d", height); - - } - - ++m_stepCount; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_automated = !m_automated; - break; - - case GLFW_KEY_C: - CreateProxy(); - break; - - case GLFW_KEY_D: - DestroyProxy(); - break; - - case GLFW_KEY_M: - MoveProxy(); - break; - } - } - - bool QueryCallback(int32 proxyId) - { - Actor* actor = (Actor*)m_tree.GetUserData(proxyId); - actor->overlap = b2TestOverlap(m_queryAABB, actor->aabb); - return true; - } - - float RayCastCallback(const b2RayCastInput& input, int32 proxyId) - { - Actor* actor = (Actor*)m_tree.GetUserData(proxyId); - - b2RayCastOutput output; - bool hit = actor->aabb.RayCast(&output, input); - - if (hit) - { - m_rayCastOutput = output; - m_rayActor = actor; - m_rayActor->fraction = output.fraction; - return output.fraction; - } - - return input.maxFraction; - } + enum + { + e_actorCount = 128 + }; + + DynamicTree() + { + m_worldExtent = 15.0f; + m_proxyExtent = 0.5f; + + srand(888); + + for (int32 i = 0; i < e_actorCount; ++i) + { + Actor* actor = m_actors + i; + GetRandomAABB(&actor->aabb); + actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); + } + + m_stepCount = 0; + + float h = m_worldExtent; + m_queryAABB.lowerBound.Set(-3.0f, -4.0f + h); + m_queryAABB.upperBound.Set(5.0f, 6.0f + h); + + m_rayCastInput.p1.Set(-5.0, 5.0f + h); + m_rayCastInput.p2.Set(7.0f, -4.0f + h); + // m_rayCastInput.p1.Set(0.0f, 2.0f + h); + // m_rayCastInput.p2.Set(0.0f, -2.0f + h); + m_rayCastInput.maxFraction = 1.0f; + + m_automated = false; + } + + static Test* Create() { return new DynamicTree; } + + void Step(Settings& settings) override + { + B2_NOT_USED(settings); + + m_rayActor = NULL; + for (int32 i = 0; i < e_actorCount; ++i) + { + m_actors[i].fraction = 1.0f; + m_actors[i].overlap = false; + } + + if (m_automated == true) + { + int32 actionCount = b2Max(1, e_actorCount >> 2); + + for (int32 i = 0; i < actionCount; ++i) + { + Action(); + } + } + + Query(); + RayCast(); + + for (int32 i = 0; i < e_actorCount; ++i) + { + Actor* actor = m_actors + i; + if (actor->proxyId == b2_nullNode) + continue; + + b2Color c(0.9f, 0.9f, 0.9f); + if (actor == m_rayActor && actor->overlap) + { + c.Set(0.9f, 0.6f, 0.6f); + } + else if (actor == m_rayActor) + { + c.Set(0.6f, 0.9f, 0.6f); + } + else if (actor->overlap) + { + c.Set(0.6f, 0.6f, 0.9f); + } + + DrawAABB(&actor->aabb, c); + } + + b2Color c(0.7f, 0.7f, 0.7f); + DrawAABB(&m_queryAABB, c); + + g_debugDraw.DrawSegment(m_rayCastInput.p1, m_rayCastInput.p2, c); + + b2Color c1(0.2f, 0.9f, 0.2f); + b2Color c2(0.9f, 0.2f, 0.2f); + g_debugDraw.DrawPoint(m_rayCastInput.p1, 6.0f, c1); + g_debugDraw.DrawPoint(m_rayCastInput.p2, 6.0f, c2); + + if (m_rayActor) + { + b2Color cr(0.2f, 0.2f, 0.9f); + b2Vec2 p = m_rayCastInput.p1 + m_rayActor->fraction * (m_rayCastInput.p2 - m_rayCastInput.p1); + g_debugDraw.DrawPoint(p, 6.0f, cr); + } + + { + int32 height = m_tree.GetHeight(); + DrawString(5, m_textLine, "dynamic tree height = %d", height); + } + + ++m_stepCount; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_automated = !m_automated; + break; + + case GLFW_KEY_C: + CreateProxy(); + break; + + case GLFW_KEY_D: + DestroyProxy(); + break; + + case GLFW_KEY_M: + MoveProxy(); + break; + } + } + + bool QueryCallback(int32 proxyId) + { + Actor* actor = (Actor*)m_tree.GetUserData(proxyId); + actor->overlap = b2TestOverlap(m_queryAABB, actor->aabb); + return true; + } + + float RayCastCallback(const b2RayCastInput& input, int32 proxyId) + { + Actor* actor = (Actor*)m_tree.GetUserData(proxyId); + + b2RayCastOutput output; + bool hit = actor->aabb.RayCast(&output, input); + + if (hit) + { + m_rayCastOutput = output; + m_rayActor = actor; + m_rayActor->fraction = output.fraction; + return output.fraction; + } + + return input.maxFraction; + } private: - - struct Actor - { - b2AABB aabb; - float fraction; - bool overlap; - int32 proxyId; - }; - - void GetRandomAABB(b2AABB* aabb) - { - b2Vec2 w; w.Set(2.0f * m_proxyExtent, 2.0f * m_proxyExtent); - //aabb->lowerBound.x = -m_proxyExtent; - //aabb->lowerBound.y = -m_proxyExtent + m_worldExtent; - aabb->lowerBound.x = RandomFloat(-m_worldExtent, m_worldExtent); - aabb->lowerBound.y = RandomFloat(0.0f, 2.0f * m_worldExtent); - aabb->upperBound = aabb->lowerBound + w; - } - - void MoveAABB(b2AABB* aabb) - { - b2Vec2 d; - d.x = RandomFloat(-0.5f, 0.5f); - d.y = RandomFloat(-0.5f, 0.5f); - //d.x = 2.0f; - //d.y = 0.0f; - aabb->lowerBound += d; - aabb->upperBound += d; - - b2Vec2 c0 = 0.5f * (aabb->lowerBound + aabb->upperBound); - b2Vec2 min; min.Set(-m_worldExtent, 0.0f); - b2Vec2 max; max.Set(m_worldExtent, 2.0f * m_worldExtent); - b2Vec2 c = b2Clamp(c0, min, max); - - aabb->lowerBound += c - c0; - aabb->upperBound += c - c0; - } - - void CreateProxy() - { - for (int32 i = 0; i < e_actorCount; ++i) - { - int32 j = rand() % e_actorCount; - Actor* actor = m_actors + j; - if (actor->proxyId == b2_nullNode) - { - GetRandomAABB(&actor->aabb); - actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); - return; - } - } - } - - void DestroyProxy() - { - for (int32 i = 0; i < e_actorCount; ++i) - { - int32 j = rand() % e_actorCount; - Actor* actor = m_actors + j; - if (actor->proxyId != b2_nullNode) - { - m_tree.DestroyProxy(actor->proxyId); - actor->proxyId = b2_nullNode; - return; - } - } - } - - void MoveProxy() - { - for (int32 i = 0; i < e_actorCount; ++i) - { - int32 j = rand() % e_actorCount; - Actor* actor = m_actors + j; - if (actor->proxyId == b2_nullNode) - { - continue; - } - - b2AABB aabb0 = actor->aabb; - MoveAABB(&actor->aabb); - b2Vec2 displacement = actor->aabb.GetCenter() - aabb0.GetCenter(); - m_tree.MoveProxy(actor->proxyId, actor->aabb, displacement); - return; - } - } - - void Action() - { - int32 choice = rand() % 20; - - switch (choice) - { - case 0: - CreateProxy(); - break; - - case 1: - DestroyProxy(); - break; - - default: - MoveProxy(); - } - } - - void Query() - { - m_tree.Query(this, m_queryAABB); - - for (int32 i = 0; i < e_actorCount; ++i) - { - if (m_actors[i].proxyId == b2_nullNode) - { - continue; - } - - bool overlap = b2TestOverlap(m_queryAABB, m_actors[i].aabb); - B2_NOT_USED(overlap); - b2Assert(overlap == m_actors[i].overlap); - } - } - - void RayCast() - { - m_rayActor = NULL; - - b2RayCastInput input = m_rayCastInput; - - // Ray cast against the dynamic tree. - m_tree.RayCast(this, input); - - // Brute force ray cast. - Actor* bruteActor = NULL; - b2RayCastOutput bruteOutput; - for (int32 i = 0; i < e_actorCount; ++i) - { - if (m_actors[i].proxyId == b2_nullNode) - { - continue; - } - - b2RayCastOutput output; - bool hit = m_actors[i].aabb.RayCast(&output, input); - if (hit) - { - bruteActor = m_actors + i; - bruteOutput = output; - input.maxFraction = output.fraction; - } - } - - if (bruteActor != NULL) - { - b2Assert(bruteOutput.fraction == m_rayCastOutput.fraction); - } - } - - float m_worldExtent; - float m_proxyExtent; - - b2DynamicTree m_tree; - b2AABB m_queryAABB; - b2RayCastInput m_rayCastInput; - b2RayCastOutput m_rayCastOutput; - Actor* m_rayActor; - Actor m_actors[e_actorCount]; - int32 m_stepCount; - bool m_automated; + struct Actor + { + b2AABB aabb; + float fraction; + bool overlap; + int32 proxyId; + }; + + void GetRandomAABB(b2AABB* aabb) + { + b2Vec2 w; + w.Set(2.0f * m_proxyExtent, 2.0f * m_proxyExtent); + // aabb->lowerBound.x = -m_proxyExtent; + // aabb->lowerBound.y = -m_proxyExtent + m_worldExtent; + aabb->lowerBound.x = RandomFloat(-m_worldExtent, m_worldExtent); + aabb->lowerBound.y = RandomFloat(0.0f, 2.0f * m_worldExtent); + aabb->upperBound = aabb->lowerBound + w; + } + + void MoveAABB(b2AABB* aabb) + { + b2Vec2 d; + d.x = RandomFloat(-0.5f, 0.5f); + d.y = RandomFloat(-0.5f, 0.5f); + // d.x = 2.0f; + // d.y = 0.0f; + aabb->lowerBound += d; + aabb->upperBound += d; + + b2Vec2 c0 = 0.5f * (aabb->lowerBound + aabb->upperBound); + b2Vec2 min; + min.Set(-m_worldExtent, 0.0f); + b2Vec2 max; + max.Set(m_worldExtent, 2.0f * m_worldExtent); + b2Vec2 c = b2Clamp(c0, min, max); + + aabb->lowerBound += c - c0; + aabb->upperBound += c - c0; + } + + void CreateProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId == b2_nullNode) + { + GetRandomAABB(&actor->aabb); + actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); + return; + } + } + } + + void DestroyProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId != b2_nullNode) + { + m_tree.DestroyProxy(actor->proxyId); + actor->proxyId = b2_nullNode; + return; + } + } + } + + void MoveProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId == b2_nullNode) + { + continue; + } + + b2AABB aabb0 = actor->aabb; + MoveAABB(&actor->aabb); + b2Vec2 displacement = actor->aabb.GetCenter() - aabb0.GetCenter(); + m_tree.MoveProxy(actor->proxyId, actor->aabb, displacement); + return; + } + } + + void Action() + { + int32 choice = rand() % 20; + + switch (choice) + { + case 0: + CreateProxy(); + break; + + case 1: + DestroyProxy(); + break; + + default: + MoveProxy(); + } + } + + void Query() + { + m_tree.Query(this, m_queryAABB); + + for (int32 i = 0; i < e_actorCount; ++i) + { + if (m_actors[i].proxyId == b2_nullNode) + { + continue; + } + + bool overlap = b2TestOverlap(m_queryAABB, m_actors[i].aabb); + B2_NOT_USED(overlap); + b2Assert(overlap == m_actors[i].overlap); + } + } + + void RayCast() + { + m_rayActor = NULL; + + b2RayCastInput input = m_rayCastInput; + + // Ray cast against the dynamic tree. + m_tree.RayCast(this, input); + + // Brute force ray cast. + Actor* bruteActor = NULL; + b2RayCastOutput bruteOutput; + for (int32 i = 0; i < e_actorCount; ++i) + { + if (m_actors[i].proxyId == b2_nullNode) + { + continue; + } + + b2RayCastOutput output; + bool hit = m_actors[i].aabb.RayCast(&output, input); + if (hit) + { + bruteActor = m_actors + i; + bruteOutput = output; + input.maxFraction = output.fraction; + } + } + + if (bruteActor != NULL) + { + b2Assert(bruteOutput.fraction == m_rayCastOutput.fraction); + } + } + + float m_worldExtent; + float m_proxyExtent; + + b2DynamicTree m_tree; + b2AABB m_queryAABB; + b2RayCastInput m_rayCastInput; + b2RayCastOutput m_rayCastOutput; + Actor* m_rayActor; + Actor m_actors[e_actorCount]; + int32 m_stepCount; + bool m_automated; }; static int testIndex = RegisterTest("Collision", "Dynamic Tree", DynamicTree::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_shapes.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_shapes.cpp index 37923549694a..f7416dc4373d 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_shapes.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_shapes.cpp @@ -26,228 +26,219 @@ class EdgeShapesCallback : public b2RayCastCallback { public: - EdgeShapesCallback() - { - m_fixture = NULL; - } - - float ReportFixture(b2Fixture* fixture, const b2Vec2& point, - const b2Vec2& normal, float fraction) override - { - m_fixture = fixture; - m_point = point; - m_normal = normal; - - return fraction; - } - - b2Fixture* m_fixture; - b2Vec2 m_point; - b2Vec2 m_normal; + EdgeShapesCallback() { m_fixture = NULL; } + + float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float fraction) override + { + m_fixture = fixture; + m_point = point; + m_normal = normal; + + return fraction; + } + + b2Fixture* m_fixture; + b2Vec2 m_point; + b2Vec2 m_normal; }; class EdgeShapes : public Test { public: - - enum - { - e_maxBodies = 256 - }; - - EdgeShapes() - { - // Ground body - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - float x1 = -20.0f; - float y1 = 2.0f * cosf(x1 / 10.0f * b2_pi); - for (int32 i = 0; i < 80; ++i) - { - float x2 = x1 + 0.5f; - float y2 = 2.0f * cosf(x2 / 10.0f * b2_pi); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(x1, y1), b2Vec2(x2, y2)); - ground->CreateFixture(&shape, 0.0f); - - x1 = x2; - y1 = y2; - } - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.5f, 0.0f); - vertices[1].Set(0.5f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[0].Set(vertices, 3); - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.1f, 0.0f); - vertices[1].Set(0.1f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[1].Set(vertices, 3); - } - - { - float w = 1.0f; - float b = w / (2.0f + b2Sqrt(2.0f)); - float s = b2Sqrt(2.0f) * b; - - b2Vec2 vertices[8]; - vertices[0].Set(0.5f * s, 0.0f); - vertices[1].Set(0.5f * w, b); - vertices[2].Set(0.5f * w, b + s); - vertices[3].Set(0.5f * s, w); - vertices[4].Set(-0.5f * s, w); - vertices[5].Set(-0.5f * w, b + s); - vertices[6].Set(-0.5f * w, b); - vertices[7].Set(-0.5f * s, 0.0f); - - m_polygons[2].Set(vertices, 8); - } - - { - m_polygons[3].SetAsBox(0.5f, 0.5f); - } - - { - m_circle.m_radius = 0.5f; - } - - m_bodyIndex = 0; - memset(m_bodies, 0, sizeof(m_bodies)); - - m_angle = 0.0f; - } - - void Create(int32 index) - { - if (m_bodies[m_bodyIndex] != NULL) - { - m_world->DestroyBody(m_bodies[m_bodyIndex]); - m_bodies[m_bodyIndex] = NULL; - } - - b2BodyDef bd; - - float x = RandomFloat(-10.0f, 10.0f); - float y = RandomFloat(10.0f, 20.0f); - bd.position.Set(x, y); - bd.angle = RandomFloat(-b2_pi, b2_pi); - bd.type = b2_dynamicBody; - - if (index == 4) - { - bd.angularDamping = 0.02f; - } - - m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); - - if (index < 4) - { - b2FixtureDef fd; - fd.shape = m_polygons + index; - fd.friction = 0.3f; - fd.density = 20.0f; - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - else - { - b2FixtureDef fd; - fd.shape = &m_circle; - fd.friction = 0.3f; - fd.density = 20.0f; - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - - m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; - } - - void DestroyBody() - { - for (int32 i = 0; i < e_maxBodies; ++i) - { - if (m_bodies[i] != NULL) - { - m_world->DestroyBody(m_bodies[i]); - m_bodies[i] = NULL; - return; - } - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_1: - case GLFW_KEY_2: - case GLFW_KEY_3: - case GLFW_KEY_4: - case GLFW_KEY_5: - Create(key - GLFW_KEY_1); - break; - - case GLFW_KEY_D: - DestroyBody(); - break; - } - } - - void Step(Settings& settings) override - { - bool advanceRay = settings.m_pause == 0 || settings.m_singleStep; - - Test::Step(settings); - DrawString(5, m_textLine, "Press 1-5 to drop stuff"); - - - float L = 25.0f; - b2Vec2 point1(0.0f, 10.0f); - b2Vec2 d(L * cosf(m_angle), -L * b2Abs(sinf(m_angle))); - b2Vec2 point2 = point1 + d; - - EdgeShapesCallback callback; - - m_world->RayCast(&callback, point1, point2); - - if (callback.m_fixture) - { - g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); - - g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); - - b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; - g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); - } - else - { - g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); - } - - if (advanceRay) - { - m_angle += 0.25f * b2_pi / 180.0f; - } - } - - static Test* Create() - { - return new EdgeShapes; - } - - int32 m_bodyIndex; - b2Body* m_bodies[e_maxBodies]; - b2PolygonShape m_polygons[4]; - b2CircleShape m_circle; - - float m_angle; + enum + { + e_maxBodies = 256 + }; + + EdgeShapes() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + float x1 = -20.0f; + float y1 = 2.0f * cosf(x1 / 10.0f * b2_pi); + for (int32 i = 0; i < 80; ++i) + { + float x2 = x1 + 0.5f; + float y2 = 2.0f * cosf(x2 / 10.0f * b2_pi); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(x1, y1), b2Vec2(x2, y2)); + ground->CreateFixture(&shape, 0.0f); + + x1 = x2; + y1 = y2; + } + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float w = 1.0f; + float b = w / (2.0f + b2Sqrt(2.0f)); + float s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + + m_angle = 0.0f; + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + + float x = RandomFloat(-10.0f, 10.0f); + float y = RandomFloat(10.0f, 20.0f); + bd.position.Set(x, y); + bd.angle = RandomFloat(-b2_pi, b2_pi); + bd.type = b2_dynamicBody; + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.friction = 0.3f; + fd.density = 20.0f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.friction = 0.3f; + fd.density = 20.0f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < e_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_1: + case GLFW_KEY_2: + case GLFW_KEY_3: + case GLFW_KEY_4: + case GLFW_KEY_5: + Create(key - GLFW_KEY_1); + break; + + case GLFW_KEY_D: + DestroyBody(); + break; + } + } + + void Step(Settings& settings) override + { + bool advanceRay = settings.m_pause == 0 || settings.m_singleStep; + + Test::Step(settings); + DrawString(5, m_textLine, "Press 1-5 to drop stuff"); + + float L = 25.0f; + b2Vec2 point1(0.0f, 10.0f); + b2Vec2 d(L * cosf(m_angle), -L * b2Abs(sinf(m_angle))); + b2Vec2 point2 = point1 + d; + + EdgeShapesCallback callback; + + m_world->RayCast(&callback, point1, point2); + + if (callback.m_fixture) + { + g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + + g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + + if (advanceRay) + { + m_angle += 0.25f * b2_pi / 180.0f; + } + } + + static Test* Create() { return new EdgeShapes; } + + int32 m_bodyIndex; + b2Body* m_bodies[e_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; + + float m_angle; }; static int testIndex = RegisterTest("Geometry", "Edge Shapes", EdgeShapes::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_test.cpp index 7f53a86f1cb8..e9c4bf4dc55c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/edge_test.cpp @@ -26,257 +26,242 @@ class EdgeTest : public Test { public: + EdgeTest() + { + b2Vec2 vertices[10] = {{10.0f, -4.0f}, {10.0f, 0.0f}, {6.0f, 0.0f}, {4.0f, 2.0f}, {2.0f, 0.0f}, + {-2.0f, 0.0f}, {-6.0f, 0.0f}, {-8.0f, -3.0f}, {-10.0f, 0.0f}, {-10.0f, -4.0f}}; - EdgeTest() - { - b2Vec2 vertices[10] = - { - {10.0f, -4.0f}, - {10.0f, 0.0f}, - {6.0f, 0.0f}, - {4.0f, 2.0f}, - {2.0f, 0.0f}, - {-2.0f, 0.0f}, - {-6.0f, 0.0f}, - {-8.0f, -3.0f}, - {-10.0f, 0.0f}, - {-10.0f, -4.0f} - }; + m_offset1.Set(0.0f, 8.0f); + m_offset2.Set(0.0f, 16.0f); - m_offset1.Set(0.0f, 8.0f); - m_offset2.Set(0.0f, 16.0f); - - { - b2Vec2 v1 = vertices[0] + m_offset1; - b2Vec2 v2 = vertices[1] + m_offset1; - b2Vec2 v3 = vertices[2] + m_offset1; - b2Vec2 v4 = vertices[3] + m_offset1; - b2Vec2 v5 = vertices[4] + m_offset1; - b2Vec2 v6 = vertices[5] + m_offset1; - b2Vec2 v7 = vertices[6] + m_offset1; - b2Vec2 v8 = vertices[7] + m_offset1; - b2Vec2 v9 = vertices[8] + m_offset1; - b2Vec2 v10 = vertices[9] + m_offset1; - - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - - shape.SetOneSided(v10, v1, v2, v3); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v1, v2, v3, v4); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v2, v3, v4, v5); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v3, v4, v5, v6); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v4, v5, v6, v7); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v5, v6, v7, v8); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v6, v7, v8, v9); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v7, v8, v9, v10); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v8, v9, v10, v1); - ground->CreateFixture(&shape, 0.0f); - - shape.SetOneSided(v9, v10, v1, v2); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2Vec2 v1 = vertices[0] + m_offset2; - b2Vec2 v2 = vertices[1] + m_offset2; - b2Vec2 v3 = vertices[2] + m_offset2; - b2Vec2 v4 = vertices[3] + m_offset2; - b2Vec2 v5 = vertices[4] + m_offset2; - b2Vec2 v6 = vertices[5] + m_offset2; - b2Vec2 v7 = vertices[6] + m_offset2; - b2Vec2 v8 = vertices[7] + m_offset2; - b2Vec2 v9 = vertices[8] + m_offset2; - b2Vec2 v10 = vertices[9] + m_offset2; - - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - - shape.SetTwoSided(v1, v2); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v2, v3); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v3, v4); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v4, v5); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v5, v6); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v6, v7); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v7, v8); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v8, v9); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v9, v10); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(v10, v1); - ground->CreateFixture(&shape, 0.0f); - } - - m_body1 = nullptr; - m_body2 = nullptr; - CreateBoxes(); - m_boxes = true; - } - - void CreateBoxes() - { - if (m_body1) - { - m_world->DestroyBody(m_body1); - m_body1 = nullptr; - } - - if (m_body2) - { - m_world->DestroyBody(m_body2); - m_body2 = nullptr; - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = b2Vec2(8.0f, 2.6f) + m_offset1; - bd.allowSleep = false; - m_body1 = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 1.0f); - - m_body1->CreateFixture(&shape, 1.0f); - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = b2Vec2(8.0f, 2.6f) + m_offset2; - bd.allowSleep = false; - m_body2 = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 1.0f); - - m_body2->CreateFixture(&shape, 1.0f); - } - } - - void CreateCircles() - { - if (m_body1) - { - m_world->DestroyBody(m_body1); - m_body1 = nullptr; - } - - if (m_body2) - { - m_world->DestroyBody(m_body2); - m_body2 = nullptr; - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = b2Vec2(-0.5f, 0.6f) + m_offset1; - bd.allowSleep = false; - m_body1 = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.5f; - - m_body1->CreateFixture(&shape, 1.0f); - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = b2Vec2(-0.5f, 0.6f) + m_offset2; - bd.allowSleep = false; - m_body2 = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.5f; - - m_body2->CreateFixture(&shape, 1.0f); - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Custom Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::RadioButton("Boxes", m_boxes == true)) - { - CreateBoxes(); - m_boxes = true; - } - - if (ImGui::RadioButton("Circles", m_boxes == false)) - { - CreateCircles(); - m_boxes = false; - } - - ImGui::End(); - } - - void Step(Settings& settings) override - { - //if (glfwGetKey(g_mainWindow, GLFW_KEY_A) == GLFW_PRESS) - //{ - // m_body1->ApplyForceToCenter(b2Vec2(-10.0f, 0.0f), true); - // m_body2->ApplyForceToCenter(b2Vec2(-10.0f, 0.0f), true); - //} - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_D) == GLFW_PRESS) - //{ - // m_body1->ApplyForceToCenter(b2Vec2(10.0f, 0.0f), true); - // m_body2->ApplyForceToCenter(b2Vec2(10.0f, 0.0f), true); - //} - - Test::Step(settings); - } - - static Test* Create() - { - return new EdgeTest; - } - - b2Vec2 m_offset1, m_offset2; - b2Body* m_body1; - b2Body* m_body2; - bool m_boxes; + { + b2Vec2 v1 = vertices[0] + m_offset1; + b2Vec2 v2 = vertices[1] + m_offset1; + b2Vec2 v3 = vertices[2] + m_offset1; + b2Vec2 v4 = vertices[3] + m_offset1; + b2Vec2 v5 = vertices[4] + m_offset1; + b2Vec2 v6 = vertices[5] + m_offset1; + b2Vec2 v7 = vertices[6] + m_offset1; + b2Vec2 v8 = vertices[7] + m_offset1; + b2Vec2 v9 = vertices[8] + m_offset1; + b2Vec2 v10 = vertices[9] + m_offset1; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + shape.SetOneSided(v10, v1, v2, v3); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v1, v2, v3, v4); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v2, v3, v4, v5); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v3, v4, v5, v6); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v4, v5, v6, v7); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v5, v6, v7, v8); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v6, v7, v8, v9); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v7, v8, v9, v10); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v8, v9, v10, v1); + ground->CreateFixture(&shape, 0.0f); + + shape.SetOneSided(v9, v10, v1, v2); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Vec2 v1 = vertices[0] + m_offset2; + b2Vec2 v2 = vertices[1] + m_offset2; + b2Vec2 v3 = vertices[2] + m_offset2; + b2Vec2 v4 = vertices[3] + m_offset2; + b2Vec2 v5 = vertices[4] + m_offset2; + b2Vec2 v6 = vertices[5] + m_offset2; + b2Vec2 v7 = vertices[6] + m_offset2; + b2Vec2 v8 = vertices[7] + m_offset2; + b2Vec2 v9 = vertices[8] + m_offset2; + b2Vec2 v10 = vertices[9] + m_offset2; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + shape.SetTwoSided(v1, v2); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v2, v3); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v3, v4); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v4, v5); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v5, v6); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v6, v7); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v7, v8); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v8, v9); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v9, v10); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(v10, v1); + ground->CreateFixture(&shape, 0.0f); + } + + m_body1 = nullptr; + m_body2 = nullptr; + CreateBoxes(); + m_boxes = true; + } + + void CreateBoxes() + { + if (m_body1) + { + m_world->DestroyBody(m_body1); + m_body1 = nullptr; + } + + if (m_body2) + { + m_world->DestroyBody(m_body2); + m_body2 = nullptr; + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(8.0f, 2.6f) + m_offset1; + bd.allowSleep = false; + m_body1 = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 1.0f); + + m_body1->CreateFixture(&shape, 1.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(8.0f, 2.6f) + m_offset2; + bd.allowSleep = false; + m_body2 = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 1.0f); + + m_body2->CreateFixture(&shape, 1.0f); + } + } + + void CreateCircles() + { + if (m_body1) + { + m_world->DestroyBody(m_body1); + m_body1 = nullptr; + } + + if (m_body2) + { + m_world->DestroyBody(m_body2); + m_body2 = nullptr; + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(-0.5f, 0.6f) + m_offset1; + bd.allowSleep = false; + m_body1 = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; + + m_body1->CreateFixture(&shape, 1.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(-0.5f, 0.6f) + m_offset2; + bd.allowSleep = false; + m_body2 = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; + + m_body2->CreateFixture(&shape, 1.0f); + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Custom Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::RadioButton("Boxes", m_boxes == true)) + { + CreateBoxes(); + m_boxes = true; + } + + if (ImGui::RadioButton("Circles", m_boxes == false)) + { + CreateCircles(); + m_boxes = false; + } + + ImGui::End(); + } + + void Step(Settings& settings) override + { + // if (glfwGetKey(g_mainWindow, GLFW_KEY_A) == GLFW_PRESS) + //{ + // m_body1->ApplyForceToCenter(b2Vec2(-10.0f, 0.0f), true); + // m_body2->ApplyForceToCenter(b2Vec2(-10.0f, 0.0f), true); + // } + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_D) == GLFW_PRESS) + //{ + // m_body1->ApplyForceToCenter(b2Vec2(10.0f, 0.0f), true); + // m_body2->ApplyForceToCenter(b2Vec2(10.0f, 0.0f), true); + // } + + Test::Step(settings); + } + + static Test* Create() { return new EdgeTest; } + + b2Vec2 m_offset1, m_offset2; + b2Body* m_body1; + b2Body* m_body2; + bool m_boxes; }; static int testIndex = RegisterTest("Geometry", "Edge Test", EdgeTest::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/friction.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/friction.cpp index 9f1c06e93206..b935e0459c64 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/friction.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/friction.cpp @@ -25,103 +25,99 @@ class Friction : public Test { public: - - Friction() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(13.0f, 0.25f); - - b2BodyDef bd; - bd.position.Set(-4.0f, 22.0f); - bd.angle = -0.25f; - - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.25f, 1.0f); - - b2BodyDef bd; - bd.position.Set(10.5f, 19.0f); - - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(13.0f, 0.25f); - - b2BodyDef bd; - bd.position.Set(4.0f, 14.0f); - bd.angle = 0.25f; - - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.25f, 1.0f); - - b2BodyDef bd; - bd.position.Set(-10.5f, 11.0f); - - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(13.0f, 0.25f); - - b2BodyDef bd; - bd.position.Set(-4.0f, 6.0f); - bd.angle = -0.25f; - - b2Body* ground = m_world->CreateBody(&bd); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 25.0f; - - float friction[5] = {0.75f, 0.5f, 0.35f, 0.1f, 0.0f}; - - for (int i = 0; i < 5; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-15.0f + 4.0f * i, 28.0f); - b2Body* body = m_world->CreateBody(&bd); - - fd.friction = friction[i]; - body->CreateFixture(&fd); - } - } - } - - static Test* Create() - { - return new Friction; - } + Friction() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-4.0f, 22.0f); + bd.angle = -0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.0f); + + b2BodyDef bd; + bd.position.Set(10.5f, 19.0f); + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(4.0f, 14.0f); + bd.angle = 0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.0f); + + b2BodyDef bd; + bd.position.Set(-10.5f, 11.0f); + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-4.0f, 6.0f); + bd.angle = -0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 25.0f; + + float friction[5] = {0.75f, 0.5f, 0.35f, 0.1f, 0.0f}; + + for (int i = 0; i < 5; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-15.0f + 4.0f * i, 28.0f); + b2Body* body = m_world->CreateBody(&bd); + + fd.friction = friction[i]; + body->CreateFixture(&fd); + } + } + } + + static Test* Create() { return new Friction; } }; static int testIndex = RegisterTest("Forces", "Friction", Friction::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/gear_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/gear_joint.cpp index ddde2cfb8d7e..d7e1b15771e2 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/gear_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/gear_joint.cpp @@ -25,156 +25,151 @@ class GearJoint : public Test { public: - GearJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2CircleShape circle1; - circle1.m_radius = 1.0f; - - b2PolygonShape box; - box.SetAsBox(0.5f, 5.0f); - - b2CircleShape circle2; - circle2.m_radius = 2.0f; - - b2BodyDef bd1; - bd1.type = b2_staticBody; - bd1.position.Set(10.0f, 9.0f); - b2Body* body1 = m_world->CreateBody(&bd1); - body1->CreateFixture(&circle1, 5.0f); - - b2BodyDef bd2; - bd2.type = b2_dynamicBody; - bd2.position.Set(10.0f, 8.0f); - b2Body* body2 = m_world->CreateBody(&bd2); - body2->CreateFixture(&box, 5.0f); - - b2BodyDef bd3; - bd3.type = b2_dynamicBody; - bd3.position.Set(10.0f, 6.0f); - b2Body* body3 = m_world->CreateBody(&bd3); - body3->CreateFixture(&circle2, 5.0f); - - b2RevoluteJointDef jd1; - jd1.Initialize(body1, body2, bd1.position); - b2Joint* joint1 = m_world->CreateJoint(&jd1); - - b2RevoluteJointDef jd2; - jd2.Initialize(body2, body3, bd3.position); - b2Joint* joint2 = m_world->CreateJoint(&jd2); - - b2GearJointDef jd4; - jd4.bodyA = body1; - jd4.bodyB = body3; - jd4.joint1 = joint1; - jd4.joint2 = joint2; - jd4.ratio = circle2.m_radius / circle1.m_radius; - m_world->CreateJoint(&jd4); - } - - { - b2CircleShape circle1; - circle1.m_radius = 1.0f; - - b2CircleShape circle2; - circle2.m_radius = 2.0f; - - b2PolygonShape box; - box.SetAsBox(0.5f, 5.0f); - - b2BodyDef bd1; - bd1.type = b2_dynamicBody; - bd1.position.Set(-3.0f, 12.0f); - b2Body* body1 = m_world->CreateBody(&bd1); - body1->CreateFixture(&circle1, 5.0f); - - b2RevoluteJointDef jd1; - jd1.bodyA = ground; - jd1.bodyB = body1; - jd1.localAnchorA = ground->GetLocalPoint(bd1.position); - jd1.localAnchorB = body1->GetLocalPoint(bd1.position); - jd1.referenceAngle = body1->GetAngle() - ground->GetAngle(); - m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd1); - - b2BodyDef bd2; - bd2.type = b2_dynamicBody; - bd2.position.Set(0.0f, 12.0f); - b2Body* body2 = m_world->CreateBody(&bd2); - body2->CreateFixture(&circle2, 5.0f); - - b2RevoluteJointDef jd2; - jd2.Initialize(ground, body2, bd2.position); - m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd2); - - b2BodyDef bd3; - bd3.type = b2_dynamicBody; - bd3.position.Set(2.5f, 12.0f); - b2Body* body3 = m_world->CreateBody(&bd3); - body3->CreateFixture(&box, 5.0f); - - b2PrismaticJointDef jd3; - jd3.Initialize(ground, body3, bd3.position, b2Vec2(0.0f, 1.0f)); - jd3.lowerTranslation = -5.0f; - jd3.upperTranslation = 5.0f; - jd3.enableLimit = true; - - m_joint3 = (b2PrismaticJoint*)m_world->CreateJoint(&jd3); - - b2GearJointDef jd4; - jd4.bodyA = body1; - jd4.bodyB = body2; - jd4.joint1 = m_joint1; - jd4.joint2 = m_joint2; - jd4.ratio = circle2.m_radius / circle1.m_radius; - m_joint4 = (b2GearJoint*)m_world->CreateJoint(&jd4); - - b2GearJointDef jd5; - jd5.bodyA = body2; - jd5.bodyB = body3; - jd5.joint1 = m_joint2; - jd5.joint2 = m_joint3; - jd5.ratio = -1.0f / circle2.m_radius; - m_joint5 = (b2GearJoint*)m_world->CreateJoint(&jd5); - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - float ratio, value; - - ratio = m_joint4->GetRatio(); - value = m_joint1->GetJointAngle() + ratio * m_joint2->GetJointAngle(); - DrawString(5, m_textLine, "theta1 + %4.2f * theta2 = %4.2f", (float) ratio, (float) value); - - - ratio = m_joint5->GetRatio(); - value = m_joint2->GetJointAngle() + ratio * m_joint3->GetJointTranslation(); - DrawString(5, m_textLine, "theta2 + %4.2f * delta = %4.2f", (float) ratio, (float) value); - - } - - static Test* Create() - { - return new GearJoint; - } - - b2RevoluteJoint* m_joint1; - b2RevoluteJoint* m_joint2; - b2PrismaticJoint* m_joint3; - b2GearJoint* m_joint4; - b2GearJoint* m_joint5; + GearJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2CircleShape circle1; + circle1.m_radius = 1.0f; + + b2PolygonShape box; + box.SetAsBox(0.5f, 5.0f); + + b2CircleShape circle2; + circle2.m_radius = 2.0f; + + b2BodyDef bd1; + bd1.type = b2_staticBody; + bd1.position.Set(10.0f, 9.0f); + b2Body* body1 = m_world->CreateBody(&bd1); + body1->CreateFixture(&circle1, 5.0f); + + b2BodyDef bd2; + bd2.type = b2_dynamicBody; + bd2.position.Set(10.0f, 8.0f); + b2Body* body2 = m_world->CreateBody(&bd2); + body2->CreateFixture(&box, 5.0f); + + b2BodyDef bd3; + bd3.type = b2_dynamicBody; + bd3.position.Set(10.0f, 6.0f); + b2Body* body3 = m_world->CreateBody(&bd3); + body3->CreateFixture(&circle2, 5.0f); + + b2RevoluteJointDef jd1; + jd1.Initialize(body1, body2, bd1.position); + b2Joint* joint1 = m_world->CreateJoint(&jd1); + + b2RevoluteJointDef jd2; + jd2.Initialize(body2, body3, bd3.position); + b2Joint* joint2 = m_world->CreateJoint(&jd2); + + b2GearJointDef jd4; + jd4.bodyA = body1; + jd4.bodyB = body3; + jd4.joint1 = joint1; + jd4.joint2 = joint2; + jd4.ratio = circle2.m_radius / circle1.m_radius; + m_world->CreateJoint(&jd4); + } + + { + b2CircleShape circle1; + circle1.m_radius = 1.0f; + + b2CircleShape circle2; + circle2.m_radius = 2.0f; + + b2PolygonShape box; + box.SetAsBox(0.5f, 5.0f); + + b2BodyDef bd1; + bd1.type = b2_dynamicBody; + bd1.position.Set(-3.0f, 12.0f); + b2Body* body1 = m_world->CreateBody(&bd1); + body1->CreateFixture(&circle1, 5.0f); + + b2RevoluteJointDef jd1; + jd1.bodyA = ground; + jd1.bodyB = body1; + jd1.localAnchorA = ground->GetLocalPoint(bd1.position); + jd1.localAnchorB = body1->GetLocalPoint(bd1.position); + jd1.referenceAngle = body1->GetAngle() - ground->GetAngle(); + m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd1); + + b2BodyDef bd2; + bd2.type = b2_dynamicBody; + bd2.position.Set(0.0f, 12.0f); + b2Body* body2 = m_world->CreateBody(&bd2); + body2->CreateFixture(&circle2, 5.0f); + + b2RevoluteJointDef jd2; + jd2.Initialize(ground, body2, bd2.position); + m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd2); + + b2BodyDef bd3; + bd3.type = b2_dynamicBody; + bd3.position.Set(2.5f, 12.0f); + b2Body* body3 = m_world->CreateBody(&bd3); + body3->CreateFixture(&box, 5.0f); + + b2PrismaticJointDef jd3; + jd3.Initialize(ground, body3, bd3.position, b2Vec2(0.0f, 1.0f)); + jd3.lowerTranslation = -5.0f; + jd3.upperTranslation = 5.0f; + jd3.enableLimit = true; + + m_joint3 = (b2PrismaticJoint*)m_world->CreateJoint(&jd3); + + b2GearJointDef jd4; + jd4.bodyA = body1; + jd4.bodyB = body2; + jd4.joint1 = m_joint1; + jd4.joint2 = m_joint2; + jd4.ratio = circle2.m_radius / circle1.m_radius; + m_joint4 = (b2GearJoint*)m_world->CreateJoint(&jd4); + + b2GearJointDef jd5; + jd5.bodyA = body2; + jd5.bodyB = body3; + jd5.joint1 = m_joint2; + jd5.joint2 = m_joint3; + jd5.ratio = -1.0f / circle2.m_radius; + m_joint5 = (b2GearJoint*)m_world->CreateJoint(&jd5); + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + float ratio, value; + + ratio = m_joint4->GetRatio(); + value = m_joint1->GetJointAngle() + ratio * m_joint2->GetJointAngle(); + DrawString(5, m_textLine, "theta1 + %4.2f * theta2 = %4.2f", (float)ratio, (float)value); + + ratio = m_joint5->GetRatio(); + value = m_joint2->GetJointAngle() + ratio * m_joint3->GetJointTranslation(); + DrawString(5, m_textLine, "theta2 + %4.2f * delta = %4.2f", (float)ratio, (float)value); + } + + static Test* Create() { return new GearJoint; } + + b2RevoluteJoint* m_joint1; + b2RevoluteJoint* m_joint2; + b2PrismaticJoint* m_joint3; + b2GearJoint* m_joint4; + b2GearJoint* m_joint5; }; static int testIndex = RegisterTest("Joints", "Gear", GearJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy1.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy1.cpp index d302808aad4d..17ba6d183f23 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy1.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy1.cpp @@ -25,37 +25,33 @@ class Heavy1 : public Test { public: - Heavy1() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 0.5f); - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.5f; + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 0.5f); + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; body->CreateFixture(&shape, 10.0f); - + bd.position.Set(0.0f, 6.0f); - body = m_world->CreateBody(&bd); + body = m_world->CreateBody(&bd); shape.m_radius = 5.0f; body->CreateFixture(&shape, 10.0f); - } - - static Test* Create() - { - return new Heavy1; - } + } + + static Test* Create() { return new Heavy1; } }; static int testIndex = RegisterTest("Solver", "Heavy 1", Heavy1::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy2.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy2.cpp index 271c089b3d7c..c34a36995eb8 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy2.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/heavy2.cpp @@ -25,34 +25,33 @@ class Heavy2 : public Test { public: - Heavy2() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 2.5f); - b2Body* body = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.5f; + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 2.5f); + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; body->CreateFixture(&shape, 10.0f); - + bd.position.Set(0.0f, 3.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 10.0f); - + m_heavy = NULL; - } - + } + void ToggleHeavy() { if (m_heavy) @@ -66,29 +65,26 @@ class Heavy2 : public Test bd.type = b2_dynamicBody; bd.position.Set(0.0f, 9.0f); m_heavy = m_world->CreateBody(&bd); - + b2CircleShape shape; shape.m_radius = 5.0f; m_heavy->CreateFixture(&shape, 10.0f); } } - - void Keyboard(int key) override - { - switch (key) - { + + void Keyboard(int key) override + { + switch (key) + { case GLFW_KEY_H: ToggleHeavy(); break; - } - } - - static Test* Create() - { - return new Heavy2; - } - - b2Body* m_heavy; + } + } + + static Test* Create() { return new Heavy2; } + + b2Body* m_heavy; }; static int testIndex = RegisterTest("Solver", "Heavy 2", Heavy2::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_balanced.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_balanced.cpp index ee5af37831d5..8b68edd0b7c7 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_balanced.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_balanced.cpp @@ -25,84 +25,80 @@ class MobileBalanced : public Test { public: - - enum - { - e_depth = 4 - }; - - MobileBalanced() - { - b2Body* ground; - - // Create ground body. - { - b2BodyDef bodyDef; - bodyDef.position.Set(0.0f, 20.0f); - ground = m_world->CreateBody(&bodyDef); - } - - float a = 0.5f; - b2Vec2 h(0.0f, a); - - b2Body* root = AddNode(ground, b2Vec2_zero, 0, 3.0f, a); - - b2RevoluteJointDef jointDef; - jointDef.bodyA = ground; - jointDef.bodyB = root; - jointDef.localAnchorA.SetZero(); - jointDef.localAnchorB = h; - m_world->CreateJoint(&jointDef); - } - - b2Body* AddNode(b2Body* parent, const b2Vec2& localAnchor, int32 depth, float offset, float a) - { - float density = 20.0f; - b2Vec2 h(0.0f, a); - - b2Vec2 p = parent->GetPosition() + localAnchor - h; - - b2BodyDef bodyDef; - bodyDef.type = b2_dynamicBody; - bodyDef.position = p; - b2Body* body = m_world->CreateBody(&bodyDef); - - b2PolygonShape shape; - shape.SetAsBox(0.25f * a, a); - body->CreateFixture(&shape, density); - - if (depth == e_depth) - { - return body; - } - - shape.SetAsBox(offset, 0.25f * a, b2Vec2(0, -a), 0.0f); - body->CreateFixture(&shape, density); - - b2Vec2 a1 = b2Vec2(offset, -a); - b2Vec2 a2 = b2Vec2(-offset, -a); - b2Body* body1 = AddNode(body, a1, depth + 1, 0.5f * offset, a); - b2Body* body2 = AddNode(body, a2, depth + 1, 0.5f * offset, a); - - b2RevoluteJointDef jointDef; - jointDef.bodyA = body; - jointDef.localAnchorB = h; - - jointDef.localAnchorA = a1; - jointDef.bodyB = body1; - m_world->CreateJoint(&jointDef); - - jointDef.localAnchorA = a2; - jointDef.bodyB = body2; - m_world->CreateJoint(&jointDef); - - return body; - } - - static Test* Create() - { - return new MobileBalanced; - } + enum + { + e_depth = 4 + }; + + MobileBalanced() + { + b2Body* ground; + + // Create ground body. + { + b2BodyDef bodyDef; + bodyDef.position.Set(0.0f, 20.0f); + ground = m_world->CreateBody(&bodyDef); + } + + float a = 0.5f; + b2Vec2 h(0.0f, a); + + b2Body* root = AddNode(ground, b2Vec2_zero, 0, 3.0f, a); + + b2RevoluteJointDef jointDef; + jointDef.bodyA = ground; + jointDef.bodyB = root; + jointDef.localAnchorA.SetZero(); + jointDef.localAnchorB = h; + m_world->CreateJoint(&jointDef); + } + + b2Body* AddNode(b2Body* parent, const b2Vec2& localAnchor, int32 depth, float offset, float a) + { + float density = 20.0f; + b2Vec2 h(0.0f, a); + + b2Vec2 p = parent->GetPosition() + localAnchor - h; + + b2BodyDef bodyDef; + bodyDef.type = b2_dynamicBody; + bodyDef.position = p; + b2Body* body = m_world->CreateBody(&bodyDef); + + b2PolygonShape shape; + shape.SetAsBox(0.25f * a, a); + body->CreateFixture(&shape, density); + + if (depth == e_depth) + { + return body; + } + + shape.SetAsBox(offset, 0.25f * a, b2Vec2(0, -a), 0.0f); + body->CreateFixture(&shape, density); + + b2Vec2 a1 = b2Vec2(offset, -a); + b2Vec2 a2 = b2Vec2(-offset, -a); + b2Body* body1 = AddNode(body, a1, depth + 1, 0.5f * offset, a); + b2Body* body2 = AddNode(body, a2, depth + 1, 0.5f * offset, a); + + b2RevoluteJointDef jointDef; + jointDef.bodyA = body; + jointDef.localAnchorB = h; + + jointDef.localAnchorA = a1; + jointDef.bodyB = body1; + m_world->CreateJoint(&jointDef); + + jointDef.localAnchorA = a2; + jointDef.bodyB = body2; + m_world->CreateJoint(&jointDef); + + return body; + } + + static Test* Create() { return new MobileBalanced; } }; static int testIndex = RegisterTest("Solver", "Mobile Balanced", MobileBalanced::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_unbalanced.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_unbalanced.cpp index 5f62fb6ebf6f..6d95738e5443 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_unbalanced.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/mobile_unbalanced.cpp @@ -25,81 +25,77 @@ class MobileUnbalanced : public Test { public: - - enum - { - e_depth = 4 - }; - - MobileUnbalanced() - { - b2Body* ground; - - // Create ground body. - { - b2BodyDef bodyDef; - bodyDef.position.Set(0.0f, 20.0f); - ground = m_world->CreateBody(&bodyDef); - } - - float a = 0.5f; - b2Vec2 h(0.0f, a); - - b2Body* root = AddNode(ground, b2Vec2_zero, 0, 3.0f, a); - - b2RevoluteJointDef jointDef; - jointDef.bodyA = ground; - jointDef.bodyB = root; - jointDef.localAnchorA.SetZero(); - jointDef.localAnchorB = h; - m_world->CreateJoint(&jointDef); - } - - b2Body* AddNode(b2Body* parent, const b2Vec2& localAnchor, int32 depth, float offset, float a) - { - float density = 20.0f; - b2Vec2 h(0.0f, a); - - b2Vec2 p = parent->GetPosition() + localAnchor - h; - - b2BodyDef bodyDef; - bodyDef.type = b2_dynamicBody; - bodyDef.position = p; - b2Body* body = m_world->CreateBody(&bodyDef); - - b2PolygonShape shape; - shape.SetAsBox(0.25f * a, a); - body->CreateFixture(&shape, density); - - if (depth == e_depth) - { - return body; - } - - b2Vec2 a1 = b2Vec2(offset, -a); - b2Vec2 a2 = b2Vec2(-offset, -a); - b2Body* body1 = AddNode(body, a1, depth + 1, 0.5f * offset, a); - b2Body* body2 = AddNode(body, a2, depth + 1, 0.5f * offset, a); - - b2RevoluteJointDef jointDef; - jointDef.bodyA = body; - jointDef.localAnchorB = h; - - jointDef.localAnchorA = a1; - jointDef.bodyB = body1; - m_world->CreateJoint(&jointDef); - - jointDef.localAnchorA = a2; - jointDef.bodyB = body2; - m_world->CreateJoint(&jointDef); - - return body; - } - - static Test* Create() - { - return new MobileUnbalanced; - } + enum + { + e_depth = 4 + }; + + MobileUnbalanced() + { + b2Body* ground; + + // Create ground body. + { + b2BodyDef bodyDef; + bodyDef.position.Set(0.0f, 20.0f); + ground = m_world->CreateBody(&bodyDef); + } + + float a = 0.5f; + b2Vec2 h(0.0f, a); + + b2Body* root = AddNode(ground, b2Vec2_zero, 0, 3.0f, a); + + b2RevoluteJointDef jointDef; + jointDef.bodyA = ground; + jointDef.bodyB = root; + jointDef.localAnchorA.SetZero(); + jointDef.localAnchorB = h; + m_world->CreateJoint(&jointDef); + } + + b2Body* AddNode(b2Body* parent, const b2Vec2& localAnchor, int32 depth, float offset, float a) + { + float density = 20.0f; + b2Vec2 h(0.0f, a); + + b2Vec2 p = parent->GetPosition() + localAnchor - h; + + b2BodyDef bodyDef; + bodyDef.type = b2_dynamicBody; + bodyDef.position = p; + b2Body* body = m_world->CreateBody(&bodyDef); + + b2PolygonShape shape; + shape.SetAsBox(0.25f * a, a); + body->CreateFixture(&shape, density); + + if (depth == e_depth) + { + return body; + } + + b2Vec2 a1 = b2Vec2(offset, -a); + b2Vec2 a2 = b2Vec2(-offset, -a); + b2Body* body1 = AddNode(body, a1, depth + 1, 0.5f * offset, a); + b2Body* body2 = AddNode(body, a2, depth + 1, 0.5f * offset, a); + + b2RevoluteJointDef jointDef; + jointDef.bodyA = body; + jointDef.localAnchorB = h; + + jointDef.localAnchorA = a1; + jointDef.bodyB = body1; + m_world->CreateJoint(&jointDef); + + jointDef.localAnchorA = a2; + jointDef.bodyB = body2; + m_world->CreateJoint(&jointDef); + + return body; + } + + static Test* Create() { return new MobileUnbalanced; } }; static int testIndex = RegisterTest("Solver", "Mobile Unbalanced", MobileUnbalanced::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/motor_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/motor_joint.cpp index a7b0156e9bc8..1b4873ad0eda 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/motor_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/motor_joint.cpp @@ -29,90 +29,87 @@ class MotorJoint : public Test { public: - MotorJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - - b2FixtureDef fd; - fd.shape = &shape; - - ground->CreateFixture(&fd); - } - - // Define motorized body - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 8.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(2.0f, 0.5f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.friction = 0.6f; - fd.density = 2.0f; - body->CreateFixture(&fd); - - b2MotorJointDef mjd; - mjd.Initialize(ground, body); - mjd.maxForce = 1000.0f; - mjd.maxTorque = 1000.0f; - m_joint = (b2MotorJoint*)m_world->CreateJoint(&mjd); - } - - m_go = false; - m_time = 0.0f; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_S: - m_go = !m_go; - break; - } - } - - void Step(Settings& settings) override - { - if (m_go && settings.m_hertz > 0.0f) - { - m_time += 1.0f / settings.m_hertz; - } - - b2Vec2 linearOffset; - linearOffset.x = 6.0f * sinf(2.0f * m_time); - linearOffset.y = 8.0f + 4.0f * sinf(1.0f * m_time); - - float angularOffset = 4.0f * m_time; - - m_joint->SetLinearOffset(linearOffset); - m_joint->SetAngularOffset(angularOffset); - - g_debugDraw.DrawPoint(linearOffset, 4.0f, b2Color(0.9f, 0.9f, 0.9f)); - - Test::Step(settings); - DrawString(5, m_textLine, "Keys: (s) pause"); - m_textLine += 15; - } - - static Test* Create() - { - return new MotorJoint; - } - - b2MotorJoint* m_joint; - float m_time; - bool m_go; + MotorJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + + ground->CreateFixture(&fd); + } + + // Define motorized body + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 8.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(2.0f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.6f; + fd.density = 2.0f; + body->CreateFixture(&fd); + + b2MotorJointDef mjd; + mjd.Initialize(ground, body); + mjd.maxForce = 1000.0f; + mjd.maxTorque = 1000.0f; + m_joint = (b2MotorJoint*)m_world->CreateJoint(&mjd); + } + + m_go = false; + m_time = 0.0f; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_S: + m_go = !m_go; + break; + } + } + + void Step(Settings& settings) override + { + if (m_go && settings.m_hertz > 0.0f) + { + m_time += 1.0f / settings.m_hertz; + } + + b2Vec2 linearOffset; + linearOffset.x = 6.0f * sinf(2.0f * m_time); + linearOffset.y = 8.0f + 4.0f * sinf(1.0f * m_time); + + float angularOffset = 4.0f * m_time; + + m_joint->SetLinearOffset(linearOffset); + m_joint->SetAngularOffset(angularOffset); + + g_debugDraw.DrawPoint(linearOffset, 4.0f, b2Color(0.9f, 0.9f, 0.9f)); + + Test::Step(settings); + DrawString(5, m_textLine, "Keys: (s) pause"); + m_textLine += 15; + } + + static Test* Create() { return new MotorJoint; } + + b2MotorJoint* m_joint; + float m_time; + bool m_go; }; static int testIndex = RegisterTest("Joints", "Motor Joint", MotorJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/pinball.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/pinball.cpp index c7dca48db498..1c117de53c0e 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/pinball.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/pinball.cpp @@ -27,144 +27,139 @@ class Pinball : public Test { public: - Pinball() - { - // Ground body - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2Vec2 vs[5]; - vs[0].Set(-8.0f, 6.0f); - vs[1].Set(-8.0f, 20.0f); - vs[2].Set(8.0f, 20.0f); - vs[3].Set(8.0f, 6.0f); - vs[4].Set(0.0f, -2.0f); - - b2ChainShape loop; - loop.CreateLoop(vs, 5); - b2FixtureDef fd; - fd.shape = &loop; - fd.density = 0.0f; - ground->CreateFixture(&fd); - } - - // Flippers - { - b2Vec2 p1(-2.0f, 0.0f), p2(2.0f, 0.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - bd.position = p1; - b2Body* leftFlipper = m_world->CreateBody(&bd); - - bd.position = p2; - b2Body* rightFlipper = m_world->CreateBody(&bd); - - b2PolygonShape box; - box.SetAsBox(1.75f, 0.1f); - - b2FixtureDef fd; - fd.shape = &box; - fd.density = 1.0f; - - leftFlipper->CreateFixture(&fd); - rightFlipper->CreateFixture(&fd); - - b2RevoluteJointDef jd; - jd.bodyA = ground; - jd.localAnchorB.SetZero(); - jd.enableMotor = true; - jd.maxMotorTorque = 1000.0f; - jd.enableLimit = true; - - jd.motorSpeed = 0.0f; - jd.localAnchorA = p1; - jd.bodyB = leftFlipper; - jd.lowerAngle = -30.0f * b2_pi / 180.0f; - jd.upperAngle = 5.0f * b2_pi / 180.0f; - m_leftJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - - jd.motorSpeed = 0.0f; - jd.localAnchorA = p2; - jd.bodyB = rightFlipper; - jd.lowerAngle = -5.0f * b2_pi / 180.0f; - jd.upperAngle = 30.0f * b2_pi / 180.0f; - m_rightJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - } - - // Circle character - { - b2BodyDef bd; - bd.position.Set(1.0f, 15.0f); - bd.type = b2_dynamicBody; - bd.bullet = true; - - m_ball = m_world->CreateBody(&bd); - - b2CircleShape shape; - shape.m_radius = 0.2f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - m_ball->CreateFixture(&fd); - } - - m_button = false; - } - - void Step(Settings& settings) override - { - if (m_button) - { - m_leftJoint->SetMotorSpeed(20.0f); - m_rightJoint->SetMotorSpeed(-20.0f); - } - else - { - m_leftJoint->SetMotorSpeed(-10.0f); - m_rightJoint->SetMotorSpeed(10.0f); - } - - Test::Step(settings); - - DrawString(5, m_textLine, "Press 'a' to control the flippers"); - - - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_button = true; - break; - } - } - - void KeyboardUp(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_button = false; - break; - } - } - - static Test* Create() - { - return new Pinball; - } - - b2RevoluteJoint* m_leftJoint; - b2RevoluteJoint* m_rightJoint; - b2Body* m_ball; - bool m_button; + Pinball() + { + // Ground body + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2Vec2 vs[5]; + vs[0].Set(-8.0f, 6.0f); + vs[1].Set(-8.0f, 20.0f); + vs[2].Set(8.0f, 20.0f); + vs[3].Set(8.0f, 6.0f); + vs[4].Set(0.0f, -2.0f); + + b2ChainShape loop; + loop.CreateLoop(vs, 5); + b2FixtureDef fd; + fd.shape = &loop; + fd.density = 0.0f; + ground->CreateFixture(&fd); + } + + // Flippers + { + b2Vec2 p1(-2.0f, 0.0f), p2(2.0f, 0.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position = p1; + b2Body* leftFlipper = m_world->CreateBody(&bd); + + bd.position = p2; + b2Body* rightFlipper = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(1.75f, 0.1f); + + b2FixtureDef fd; + fd.shape = &box; + fd.density = 1.0f; + + leftFlipper->CreateFixture(&fd); + rightFlipper->CreateFixture(&fd); + + b2RevoluteJointDef jd; + jd.bodyA = ground; + jd.localAnchorB.SetZero(); + jd.enableMotor = true; + jd.maxMotorTorque = 1000.0f; + jd.enableLimit = true; + + jd.motorSpeed = 0.0f; + jd.localAnchorA = p1; + jd.bodyB = leftFlipper; + jd.lowerAngle = -30.0f * b2_pi / 180.0f; + jd.upperAngle = 5.0f * b2_pi / 180.0f; + m_leftJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + + jd.motorSpeed = 0.0f; + jd.localAnchorA = p2; + jd.bodyB = rightFlipper; + jd.lowerAngle = -5.0f * b2_pi / 180.0f; + jd.upperAngle = 30.0f * b2_pi / 180.0f; + m_rightJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(1.0f, 15.0f); + bd.type = b2_dynamicBody; + bd.bullet = true; + + m_ball = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.2f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + m_ball->CreateFixture(&fd); + } + + m_button = false; + } + + void Step(Settings& settings) override + { + if (m_button) + { + m_leftJoint->SetMotorSpeed(20.0f); + m_rightJoint->SetMotorSpeed(-20.0f); + } + else + { + m_leftJoint->SetMotorSpeed(-10.0f); + m_rightJoint->SetMotorSpeed(10.0f); + } + + Test::Step(settings); + + DrawString(5, m_textLine, "Press 'a' to control the flippers"); + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_button = true; + break; + } + } + + void KeyboardUp(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_button = false; + break; + } + } + + static Test* Create() { return new Pinball; } + + b2RevoluteJoint* m_leftJoint; + b2RevoluteJoint* m_rightJoint; + b2Body* m_ball; + bool m_button; }; static int testIndex = RegisterTest("Examples", "Pinball", Pinball::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/platformer.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/platformer.cpp index 18b39b8a7ef7..c308f4922bac 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/platformer.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/platformer.cpp @@ -25,109 +25,104 @@ class Platformer : public Test { public: + enum State + { + e_unknown, + e_above, + e_below + }; + + Platformer() + { + // Ground + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Platform + { + b2BodyDef bd; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(3.0f, 0.5f); + m_platform = body->CreateFixture(&shape, 0.0f); + + m_bottom = 10.0f - 0.5f; + m_top = 10.0f + 0.5f; + } + + // Actor + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + + m_radius = 0.5f; + b2CircleShape shape; + shape.m_radius = m_radius; + m_character = body->CreateFixture(&shape, 20.0f); + + body->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + + m_state = e_unknown; + } + } - enum State - { - e_unknown, - e_above, - e_below - }; - - Platformer() - { - // Ground - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Platform - { - b2BodyDef bd; - bd.position.Set(0.0f, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(3.0f, 0.5f); - m_platform = body->CreateFixture(&shape, 0.0f); - - m_bottom = 10.0f - 0.5f; - m_top = 10.0f + 0.5f; - } - - // Actor - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 12.0f); - b2Body* body = m_world->CreateBody(&bd); - - m_radius = 0.5f; - b2CircleShape shape; - shape.m_radius = m_radius; - m_character = body->CreateFixture(&shape, 20.0f); - - body->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); - - m_state = e_unknown; - } - } - - void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override - { - Test::PreSolve(contact, oldManifold); - - b2Fixture* fixtureA = contact->GetFixtureA(); - b2Fixture* fixtureB = contact->GetFixtureB(); - - if (fixtureA != m_platform && fixtureA != m_character) - { - return; - } - - if (fixtureB != m_platform && fixtureB != m_character) - { - return; - } + void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override + { + Test::PreSolve(contact, oldManifold); + + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA != m_platform && fixtureA != m_character) + { + return; + } + + if (fixtureB != m_platform && fixtureB != m_character) + { + return; + } #if 1 - b2Vec2 position = m_character->GetBody()->GetPosition(); + b2Vec2 position = m_character->GetBody()->GetPosition(); - if (position.y < m_top + m_radius - 3.0f * b2_linearSlop) - { - contact->SetEnabled(false); - } + if (position.y < m_top + m_radius - 3.0f * b2_linearSlop) + { + contact->SetEnabled(false); + } #else b2Vec2 v = m_character->GetBody()->GetLinearVelocity(); if (v.y > 0.0f) - { + { contact->SetEnabled(false); } #endif - } + } - void Step(Settings& settings) override - { - Test::Step(settings); + void Step(Settings& settings) override + { + Test::Step(settings); - b2Vec2 v = m_character->GetBody()->GetLinearVelocity(); + b2Vec2 v = m_character->GetBody()->GetLinearVelocity(); DrawString(5, m_textLine, "Character Linear Velocity: %f", v.y); - - } - - static Test* Create() - { - return new Platformer; - } - - float m_radius, m_top, m_bottom; - State m_state; - b2Fixture* m_platform; - b2Fixture* m_character; + } + + static Test* Create() { return new Platformer; } + + float m_radius, m_top, m_bottom; + State m_state; + b2Fixture* m_platform; + b2Fixture* m_character; }; static int testIndex = RegisterTest("Examples", "Platformer", Platformer::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_collision.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_collision.cpp index 558ad59c2751..dbc924694c2d 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_collision.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_collision.cpp @@ -25,103 +25,99 @@ class PolygonCollision : public Test { public: - PolygonCollision() - { - { - m_polygonA.SetAsBox(0.2f, 0.4f); - m_transformA.Set(b2Vec2(0.0f, 0.0f), 0.0f); - } - - { - m_polygonB.SetAsBox(0.5f, 0.5f); - m_positionB.Set(19.345284f, 1.5632932f); - m_angleB = 1.9160721f; - m_transformB.Set(m_positionB, m_angleB); - } - } - - static Test* Create() - { - return new PolygonCollision; - } - - void Step(Settings& settings) override - { - B2_NOT_USED(settings); - - b2Manifold manifold; - b2CollidePolygons(&manifold, &m_polygonA, m_transformA, &m_polygonB, m_transformB); - - b2WorldManifold worldManifold; - worldManifold.Initialize(&manifold, m_transformA, m_polygonA.m_radius, m_transformB, m_polygonB.m_radius); - - DrawString(5, m_textLine, "point count = %d", manifold.pointCount); - - - { - b2Color color(0.9f, 0.9f, 0.9f); - b2Vec2 v[b2_maxPolygonVertices]; - for (int32 i = 0; i < m_polygonA.m_count; ++i) - { - v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); - } - g_debugDraw.DrawPolygon(v, m_polygonA.m_count, color); - - for (int32 i = 0; i < m_polygonB.m_count; ++i) - { - v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); - } - g_debugDraw.DrawPolygon(v, m_polygonB.m_count, color); - } - - for (int32 i = 0; i < manifold.pointCount; ++i) - { - g_debugDraw.DrawPoint(worldManifold.points[i], 4.0f, b2Color(0.9f, 0.3f, 0.3f)); - } - - Test::Step(settings); - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_positionB.x -= 0.1f; - break; - - case GLFW_KEY_D: - m_positionB.x += 0.1f; - break; - - case GLFW_KEY_S: - m_positionB.y -= 0.1f; - break; - - case GLFW_KEY_W: - m_positionB.y += 0.1f; - break; - - case GLFW_KEY_Q: - m_angleB += 0.1f * b2_pi; - break; - - case GLFW_KEY_E: - m_angleB -= 0.1f * b2_pi; - break; - } - - m_transformB.Set(m_positionB, m_angleB); - } - - b2PolygonShape m_polygonA; - b2PolygonShape m_polygonB; - - b2Transform m_transformA; - b2Transform m_transformB; - - b2Vec2 m_positionB; - float m_angleB; + PolygonCollision() + { + { + m_polygonA.SetAsBox(0.2f, 0.4f); + m_transformA.Set(b2Vec2(0.0f, 0.0f), 0.0f); + } + + { + m_polygonB.SetAsBox(0.5f, 0.5f); + m_positionB.Set(19.345284f, 1.5632932f); + m_angleB = 1.9160721f; + m_transformB.Set(m_positionB, m_angleB); + } + } + + static Test* Create() { return new PolygonCollision; } + + void Step(Settings& settings) override + { + B2_NOT_USED(settings); + + b2Manifold manifold; + b2CollidePolygons(&manifold, &m_polygonA, m_transformA, &m_polygonB, m_transformB); + + b2WorldManifold worldManifold; + worldManifold.Initialize(&manifold, m_transformA, m_polygonA.m_radius, m_transformB, m_polygonB.m_radius); + + DrawString(5, m_textLine, "point count = %d", manifold.pointCount); + + { + b2Color color(0.9f, 0.9f, 0.9f); + b2Vec2 v[b2_maxPolygonVertices]; + for (int32 i = 0; i < m_polygonA.m_count; ++i) + { + v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); + } + g_debugDraw.DrawPolygon(v, m_polygonA.m_count, color); + + for (int32 i = 0; i < m_polygonB.m_count; ++i) + { + v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); + } + g_debugDraw.DrawPolygon(v, m_polygonB.m_count, color); + } + + for (int32 i = 0; i < manifold.pointCount; ++i) + { + g_debugDraw.DrawPoint(worldManifold.points[i], 4.0f, b2Color(0.9f, 0.3f, 0.3f)); + } + + Test::Step(settings); + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_positionB.x -= 0.1f; + break; + + case GLFW_KEY_D: + m_positionB.x += 0.1f; + break; + + case GLFW_KEY_S: + m_positionB.y -= 0.1f; + break; + + case GLFW_KEY_W: + m_positionB.y += 0.1f; + break; + + case GLFW_KEY_Q: + m_angleB += 0.1f * b2_pi; + break; + + case GLFW_KEY_E: + m_angleB -= 0.1f * b2_pi; + break; + } + + m_transformB.Set(m_positionB, m_angleB); + } + + b2PolygonShape m_polygonA; + b2PolygonShape m_polygonB; + + b2Transform m_transformA; + b2Transform m_transformB; + + b2Vec2 m_positionB; + float m_angleB; }; static int testIndex = RegisterTest("Geometry", "Polygon Collision", PolygonCollision::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_shapes.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_shapes.cpp index 2fa4c1cbc699..369f777ee85c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_shapes.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/polygon_shapes.cpp @@ -31,235 +31,227 @@ class PolygonShapesCallback : public b2QueryCallback { public: - - enum - { - e_maxCount = 4 - }; - - PolygonShapesCallback() - { - m_count = 0; - } - - /// Called for each fixture found in the query AABB. - /// @return false to terminate the query. - bool ReportFixture(b2Fixture* fixture) override - { - if (m_count == e_maxCount) - { - return false; - } - - b2Body* body = fixture->GetBody(); - b2Shape* shape = fixture->GetShape(); - - bool overlap = b2TestOverlap(shape, 0, &m_circle, 0, body->GetTransform(), m_transform); - - if (overlap) - { - b2Color color(0.95f, 0.95f, 0.6f); - b2Vec2 center = body->GetWorldCenter(); - g_debugDraw->DrawPoint(center, 5.0f, color); - ++m_count; - } - - return true; - } - - b2CircleShape m_circle; - b2Transform m_transform; - b2Draw* g_debugDraw; - int32 m_count; + enum + { + e_maxCount = 4 + }; + + PolygonShapesCallback() { m_count = 0; } + + /// Called for each fixture found in the query AABB. + /// @return false to terminate the query. + bool ReportFixture(b2Fixture* fixture) override + { + if (m_count == e_maxCount) + { + return false; + } + + b2Body* body = fixture->GetBody(); + b2Shape* shape = fixture->GetShape(); + + bool overlap = b2TestOverlap(shape, 0, &m_circle, 0, body->GetTransform(), m_transform); + + if (overlap) + { + b2Color color(0.95f, 0.95f, 0.6f); + b2Vec2 center = body->GetWorldCenter(); + g_debugDraw->DrawPoint(center, 5.0f, color); + ++m_count; + } + + return true; + } + + b2CircleShape m_circle; + b2Transform m_transform; + b2Draw* g_debugDraw; + int32 m_count; }; class PolygonShapes : public Test { public: - - enum - { - e_maxBodies = 256 - }; - - PolygonShapes() - { - // Ground body - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.5f, 0.0f); - vertices[1].Set(0.5f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[0].Set(vertices, 3); - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.1f, 0.0f); - vertices[1].Set(0.1f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[1].Set(vertices, 3); - } - - { - float w = 1.0f; - float b = w / (2.0f + b2Sqrt(2.0f)); - float s = b2Sqrt(2.0f) * b; - - b2Vec2 vertices[8]; - vertices[0].Set(0.5f * s, 0.0f); - vertices[1].Set(0.5f * w, b); - vertices[2].Set(0.5f * w, b + s); - vertices[3].Set(0.5f * s, w); - vertices[4].Set(-0.5f * s, w); - vertices[5].Set(-0.5f * w, b + s); - vertices[6].Set(-0.5f * w, b); - vertices[7].Set(-0.5f * s, 0.0f); - - m_polygons[2].Set(vertices, 8); - } - - { - m_polygons[3].SetAsBox(0.5f, 0.5f); - } - - { - m_circle.m_radius = 0.5f; - } - - m_bodyIndex = 0; - memset(m_bodies, 0, sizeof(m_bodies)); - } - - void Create(int32 index) - { - if (m_bodies[m_bodyIndex] != NULL) - { - m_world->DestroyBody(m_bodies[m_bodyIndex]); - m_bodies[m_bodyIndex] = NULL; - } - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - float x = RandomFloat(-2.0f, 2.0f); - bd.position.Set(x, 10.0f); - bd.angle = RandomFloat(-b2_pi, b2_pi); - - if (index == 4) - { - bd.angularDamping = 0.02f; - } - - m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); - - if (index < 4) - { - b2FixtureDef fd; - fd.shape = m_polygons + index; - fd.density = 1.0f; - fd.friction = 0.3f; - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - else - { - b2FixtureDef fd; - fd.shape = &m_circle; - fd.density = 1.0f; - fd.friction = 0.3f; - - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - - m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; - } - - void DestroyBody() - { - for (int32 i = 0; i < e_maxBodies; ++i) - { - if (m_bodies[i] != NULL) - { - m_world->DestroyBody(m_bodies[i]); - m_bodies[i] = NULL; - return; - } - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_1: - case GLFW_KEY_2: - case GLFW_KEY_3: - case GLFW_KEY_4: - case GLFW_KEY_5: - Create(key - GLFW_KEY_1); - break; - - case GLFW_KEY_A: - for (int32 i = 0; i < e_maxBodies; i += 2) - { - if (m_bodies[i]) - { - bool enabled = m_bodies[i]->IsEnabled(); - m_bodies[i]->SetEnabled(!enabled); - } - } - break; - - case GLFW_KEY_D: - DestroyBody(); - break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - PolygonShapesCallback callback; - callback.m_circle.m_radius = 2.0f; - callback.m_circle.m_p.Set(0.0f, 1.1f); - callback.m_transform.SetIdentity(); - callback.g_debugDraw = &g_debugDraw; - - b2AABB aabb; - callback.m_circle.ComputeAABB(&aabb, callback.m_transform, 0); - - m_world->QueryAABB(&callback, aabb); - - b2Color color(0.4f, 0.7f, 0.8f); - g_debugDraw.DrawCircle(callback.m_circle.m_p, callback.m_circle.m_radius, color); - - DrawString(5, m_textLine, "Press 1-5 to drop stuff, maximum of %d overlaps detected", PolygonShapesCallback::e_maxCount); - - DrawString(5, m_textLine, "Press 'a' to enable/disable some bodies"); - - DrawString(5, m_textLine, "Press 'd' to destroy a body"); - - } - - static Test* Create() - { - return new PolygonShapes; - } - - int32 m_bodyIndex; - b2Body* m_bodies[e_maxBodies]; - b2PolygonShape m_polygons[4]; - b2CircleShape m_circle; + enum + { + e_maxBodies = 256 + }; + + PolygonShapes() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float w = 1.0f; + float b = w / (2.0f + b2Sqrt(2.0f)); + float s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + float x = RandomFloat(-2.0f, 2.0f); + bd.position.Set(x, 10.0f); + bd.angle = RandomFloat(-b2_pi, b2_pi); + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.density = 1.0f; + fd.friction = 0.3f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.density = 1.0f; + fd.friction = 0.3f; + + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < e_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_1: + case GLFW_KEY_2: + case GLFW_KEY_3: + case GLFW_KEY_4: + case GLFW_KEY_5: + Create(key - GLFW_KEY_1); + break; + + case GLFW_KEY_A: + for (int32 i = 0; i < e_maxBodies; i += 2) + { + if (m_bodies[i]) + { + bool enabled = m_bodies[i]->IsEnabled(); + m_bodies[i]->SetEnabled(!enabled); + } + } + break; + + case GLFW_KEY_D: + DestroyBody(); + break; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + PolygonShapesCallback callback; + callback.m_circle.m_radius = 2.0f; + callback.m_circle.m_p.Set(0.0f, 1.1f); + callback.m_transform.SetIdentity(); + callback.g_debugDraw = &g_debugDraw; + + b2AABB aabb; + callback.m_circle.ComputeAABB(&aabb, callback.m_transform, 0); + + m_world->QueryAABB(&callback, aabb); + + b2Color color(0.4f, 0.7f, 0.8f); + g_debugDraw.DrawCircle(callback.m_circle.m_p, callback.m_circle.m_radius, color); + + DrawString(5, m_textLine, "Press 1-5 to drop stuff, maximum of %d overlaps detected", + PolygonShapesCallback::e_maxCount); + + DrawString(5, m_textLine, "Press 'a' to enable/disable some bodies"); + + DrawString(5, m_textLine, "Press 'd' to destroy a body"); + } + + static Test* Create() { return new PolygonShapes; } + + int32 m_bodyIndex; + b2Body* m_bodies[e_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; }; static int testIndex = RegisterTest("Geometry", "Polygon Shapes", PolygonShapes::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/prismatic_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/prismatic_joint.cpp index b63d6c5f9260..d078c31b8ee1 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/prismatic_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/prismatic_joint.cpp @@ -28,91 +28,87 @@ class PrismaticJoint : public Test { public: - PrismaticJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - m_enableLimit = true; - m_enableMotor = false; - m_motorSpeed = 10.0f; - - { - b2PolygonShape shape; - shape.SetAsBox(1.0f, 1.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 10.0f); - bd.angle = 0.5f * b2_pi; - bd.allowSleep = false; - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 5.0f); - - b2PrismaticJointDef pjd; - - // Horizontal - pjd.Initialize(ground, body, bd.position, b2Vec2(1.0f, 0.0f)); - - pjd.motorSpeed = m_motorSpeed; - pjd.maxMotorForce = 10000.0f; - pjd.enableMotor = m_enableMotor; - pjd.lowerTranslation = -10.0f; - pjd.upperTranslation = 10.0f; - pjd.enableLimit = m_enableLimit; - - m_joint = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Checkbox("Limit", &m_enableLimit)) - { - m_joint->EnableLimit(m_enableLimit); - } - - if (ImGui::Checkbox("Motor", &m_enableMotor)) - { - m_joint->EnableMotor(m_enableMotor); - } - - if (ImGui::SliderFloat("Speed", &m_motorSpeed, -100.0f, 100.0f, "%.0f")) - { - m_joint->SetMotorSpeed(m_motorSpeed); - } - - ImGui::End(); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - float force = m_joint->GetMotorForce(settings.m_hertz); - DrawString(5, m_textLine, "Motor Force = %4.0f", force); - - } - - static Test* Create() - { - return new PrismaticJoint; - } - - b2PrismaticJoint* m_joint; - float m_motorSpeed; - bool m_enableMotor; - bool m_enableLimit; + PrismaticJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + m_enableLimit = true; + m_enableMotor = false; + m_motorSpeed = 10.0f; + + { + b2PolygonShape shape; + shape.SetAsBox(1.0f, 1.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + bd.angle = 0.5f * b2_pi; + bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + b2PrismaticJointDef pjd; + + // Horizontal + pjd.Initialize(ground, body, bd.position, b2Vec2(1.0f, 0.0f)); + + pjd.motorSpeed = m_motorSpeed; + pjd.maxMotorForce = 10000.0f; + pjd.enableMotor = m_enableMotor; + pjd.lowerTranslation = -10.0f; + pjd.upperTranslation = 10.0f; + pjd.enableLimit = m_enableLimit; + + m_joint = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Checkbox("Limit", &m_enableLimit)) + { + m_joint->EnableLimit(m_enableLimit); + } + + if (ImGui::Checkbox("Motor", &m_enableMotor)) + { + m_joint->EnableMotor(m_enableMotor); + } + + if (ImGui::SliderFloat("Speed", &m_motorSpeed, -100.0f, 100.0f, "%.0f")) + { + m_joint->SetMotorSpeed(m_motorSpeed); + } + + ImGui::End(); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + float force = m_joint->GetMotorForce(settings.m_hertz); + DrawString(5, m_textLine, "Motor Force = %4.0f", force); + } + + static Test* Create() { return new PrismaticJoint; } + + b2PrismaticJoint* m_joint; + float m_motorSpeed; + bool m_enableMotor; + bool m_enableLimit; }; static int testIndex = RegisterTest("Joints", "Prismatic", PrismaticJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/pulley_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/pulley_joint.cpp index 83dcd6e28347..b724673d148a 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/pulley_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/pulley_joint.cpp @@ -25,72 +25,68 @@ class PulleyJoint : public Test { public: - PulleyJoint() - { - float y = 16.0f; - float L = 12.0f; - float a = 1.0f; - float b = 2.0f; - - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2CircleShape circle; - circle.m_radius = 2.0f; - - circle.m_p.Set(-10.0f, y + b + L); - ground->CreateFixture(&circle, 0.0f); - - circle.m_p.Set(10.0f, y + b + L); - ground->CreateFixture(&circle, 0.0f); - } - - { - - b2PolygonShape shape; - shape.SetAsBox(a, b); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - //bd.fixedRotation = true; - bd.position.Set(-10.0f, y); - b2Body* body1 = m_world->CreateBody(&bd); - body1->CreateFixture(&shape, 5.0f); - - bd.position.Set(10.0f, y); - b2Body* body2 = m_world->CreateBody(&bd); - body2->CreateFixture(&shape, 5.0f); - - b2PulleyJointDef pulleyDef; - b2Vec2 anchor1(-10.0f, y + b); - b2Vec2 anchor2(10.0f, y + b); - b2Vec2 groundAnchor1(-10.0f, y + b + L); - b2Vec2 groundAnchor2(10.0f, y + b + L); - pulleyDef.Initialize(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, 1.5f); - - m_joint1 = (b2PulleyJoint*)m_world->CreateJoint(&pulleyDef); - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - float ratio = m_joint1->GetRatio(); - float L = m_joint1->GetCurrentLengthA() + ratio * m_joint1->GetCurrentLengthB(); - DrawString(5, m_textLine, "L1 + %4.2f * L2 = %4.2f", (float) ratio, (float) L); - - } - - static Test* Create() - { - return new PulleyJoint; - } - - b2PulleyJoint* m_joint1; + PulleyJoint() + { + float y = 16.0f; + float L = 12.0f; + float a = 1.0f; + float b = 2.0f; + + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2CircleShape circle; + circle.m_radius = 2.0f; + + circle.m_p.Set(-10.0f, y + b + L); + ground->CreateFixture(&circle, 0.0f); + + circle.m_p.Set(10.0f, y + b + L); + ground->CreateFixture(&circle, 0.0f); + } + + { + + b2PolygonShape shape; + shape.SetAsBox(a, b); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + // bd.fixedRotation = true; + bd.position.Set(-10.0f, y); + b2Body* body1 = m_world->CreateBody(&bd); + body1->CreateFixture(&shape, 5.0f); + + bd.position.Set(10.0f, y); + b2Body* body2 = m_world->CreateBody(&bd); + body2->CreateFixture(&shape, 5.0f); + + b2PulleyJointDef pulleyDef; + b2Vec2 anchor1(-10.0f, y + b); + b2Vec2 anchor2(10.0f, y + b); + b2Vec2 groundAnchor1(-10.0f, y + b + L); + b2Vec2 groundAnchor2(10.0f, y + b + L); + pulleyDef.Initialize(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, 1.5f); + + m_joint1 = (b2PulleyJoint*)m_world->CreateJoint(&pulleyDef); + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + float ratio = m_joint1->GetRatio(); + float L = m_joint1->GetCurrentLengthA() + ratio * m_joint1->GetCurrentLengthB(); + DrawString(5, m_textLine, "L1 + %4.2f * L2 = %4.2f", (float)ratio, (float)L); + } + + static Test* Create() { return new PulleyJoint; } + + b2PulleyJoint* m_joint1; }; static int testIndex = RegisterTest("Joints", "Pulley", PulleyJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/pyramid.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/pyramid.cpp index ee90d5d01b45..5f527451601a 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/pyramid.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/pyramid.cpp @@ -25,68 +25,65 @@ class Pyramid : public Test { public: - enum - { - e_count = 20 - }; - - Pyramid() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - float a = 0.5f; - b2PolygonShape shape; - shape.SetAsBox(a, a); - - b2Vec2 x(-7.0f, 0.75f); - b2Vec2 y; - b2Vec2 deltaX(0.5625f, 1.25f); - b2Vec2 deltaY(1.125f, 0.0f); - - for (int32 i = 0; i < e_count; ++i) - { - y = x; - - for (int32 j = i; j < e_count; ++j) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = y; - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 5.0f); - - y += deltaY; - } - - x += deltaX; - } - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; - - //if (m_stepCount == 400) - //{ - // tree->RebuildBottomUp(); - //} - } - - static Test* Create() - { - return new Pyramid; - } + enum + { + e_count = 20 + }; + + Pyramid() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + float a = 0.5f; + b2PolygonShape shape; + shape.SetAsBox(a, a); + + b2Vec2 x(-7.0f, 0.75f); + b2Vec2 y; + b2Vec2 deltaX(0.5625f, 1.25f); + b2Vec2 deltaY(1.125f, 0.0f); + + for (int32 i = 0; i < e_count; ++i) + { + y = x; + + for (int32 j = i; j < e_count; ++j) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = y; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + y += deltaY; + } + + x += deltaX; + } + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + // b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; + + // if (m_stepCount == 400) + //{ + // tree->RebuildBottomUp(); + // } + } + + static Test* Create() { return new Pyramid; } }; static int testIndex = RegisterTest("Stacking", "Pyramid", Pyramid::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/ray_cast.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/ray_cast.cpp index 4dba339838ee..0f31b5d4c908 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/ray_cast.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/ray_cast.cpp @@ -26,7 +26,7 @@ enum { - e_maxBodies = 256 + e_maxBodies = 256 }; // This test demonstrates how to use the world ray-cast feature. @@ -37,68 +37,62 @@ enum class RayCastClosestCallback : public b2RayCastCallback { public: - RayCastClosestCallback() - { - m_hit = false; - } - - float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float fraction) override - { - uintptr_t index = fixture->GetUserData().pointer; - if (index == 1) - { - // By returning -1, we instruct the calling code to ignore this fixture and - // continue the ray-cast to the next fixture. - return -1.0f; - } - - m_hit = true; - m_point = point; - m_normal = normal; - - // By returning the current fraction, we instruct the calling code to clip the ray and - // continue the ray-cast to the next fixture. WARNING: do not assume that fixtures - // are reported in order. However, by clipping, we can always get the closest fixture. - return fraction; - } - - bool m_hit; - b2Vec2 m_point; - b2Vec2 m_normal; + RayCastClosestCallback() { m_hit = false; } + + float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float fraction) override + { + uintptr_t index = fixture->GetUserData().pointer; + if (index == 1) + { + // By returning -1, we instruct the calling code to ignore this fixture and + // continue the ray-cast to the next fixture. + return -1.0f; + } + + m_hit = true; + m_point = point; + m_normal = normal; + + // By returning the current fraction, we instruct the calling code to clip the ray and + // continue the ray-cast to the next fixture. WARNING: do not assume that fixtures + // are reported in order. However, by clipping, we can always get the closest fixture. + return fraction; + } + + bool m_hit; + b2Vec2 m_point; + b2Vec2 m_normal; }; // This callback finds any hit. Polygon 0 is filtered. For this type of query we are usually -// just checking for obstruction, so the actual fixture and hit point are irrelevant. +// just checking for obstruction, so the actual fixture and hit point are irrelevant. class RayCastAnyCallback : public b2RayCastCallback { public: - RayCastAnyCallback() - { - m_hit = false; - } - - float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float) override - { - uintptr_t index = fixture->GetUserData().pointer; - if (index == 1) - { - // By returning -1, we instruct the calling code to ignore this fixture and - // continue the ray-cast to the next fixture. - return -1.0f; - } - - m_hit = true; - m_point = point; - m_normal = normal; - - // At this point we have a hit, so we know the ray is obstructed. - // By returning 0, we instruct the calling code to terminate the ray-cast. - return 0.0f; - } - - bool m_hit; - b2Vec2 m_point; - b2Vec2 m_normal; + RayCastAnyCallback() { m_hit = false; } + + float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float) override + { + uintptr_t index = fixture->GetUserData().pointer; + if (index == 1) + { + // By returning -1, we instruct the calling code to ignore this fixture and + // continue the ray-cast to the next fixture. + return -1.0f; + } + + m_hit = true; + m_point = point; + m_normal = normal; + + // At this point we have a hit, so we know the ray is obstructed. + // By returning 0, we instruct the calling code to terminate the ray-cast. + return 0.0f; + } + + bool m_hit; + b2Vec2 m_point; + b2Vec2 m_normal; }; // This ray cast collects multiple hits along the ray. Polygon 0 is filtered. @@ -107,319 +101,312 @@ class RayCastAnyCallback : public b2RayCastCallback class RayCastMultipleCallback : public b2RayCastCallback { public: - enum - { - e_maxCount = 3 - }; - - RayCastMultipleCallback() - { - m_count = 0; - } - - float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float) override - { - uintptr_t index = fixture->GetUserData().pointer; - if (index == 1) - { - // By returning -1, we instruct the calling code to ignore this fixture and - // continue the ray-cast to the next fixture. - return -1.0f; - } - - b2Assert(m_count < e_maxCount); - - m_points[m_count] = point; - m_normals[m_count] = normal; - ++m_count; - - if (m_count == e_maxCount) - { - // At this point the buffer is full. - // By returning 0, we instruct the calling code to terminate the ray-cast. - return 0.0f; - } - - // By returning 1, we instruct the caller to continue without clipping the ray. - return 1.0f; - } - - b2Vec2 m_points[e_maxCount]; - b2Vec2 m_normals[e_maxCount]; - int32 m_count; + enum + { + e_maxCount = 3 + }; + + RayCastMultipleCallback() { m_count = 0; } + + float ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float) override + { + uintptr_t index = fixture->GetUserData().pointer; + if (index == 1) + { + // By returning -1, we instruct the calling code to ignore this fixture and + // continue the ray-cast to the next fixture. + return -1.0f; + } + + b2Assert(m_count < e_maxCount); + + m_points[m_count] = point; + m_normals[m_count] = normal; + ++m_count; + + if (m_count == e_maxCount) + { + // At this point the buffer is full. + // By returning 0, we instruct the calling code to terminate the ray-cast. + return 0.0f; + } + + // By returning 1, we instruct the caller to continue without clipping the ray. + return 1.0f; + } + + b2Vec2 m_points[e_maxCount]; + b2Vec2 m_normals[e_maxCount]; + int32 m_count; }; - class RayCast : public Test { public: - - enum Mode - { - e_any = 0, - e_closest = 1, - e_multiple = 2 - }; - - RayCast() - { - // Ground body - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.5f, 0.0f); - vertices[1].Set(0.5f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[0].Set(vertices, 3); - } - - { - b2Vec2 vertices[3]; - vertices[0].Set(-0.1f, 0.0f); - vertices[1].Set(0.1f, 0.0f); - vertices[2].Set(0.0f, 1.5f); - m_polygons[1].Set(vertices, 3); - } - - { - float w = 1.0f; - float b = w / (2.0f + b2Sqrt(2.0f)); - float s = b2Sqrt(2.0f) * b; - - b2Vec2 vertices[8]; - vertices[0].Set(0.5f * s, 0.0f); - vertices[1].Set(0.5f * w, b); - vertices[2].Set(0.5f * w, b + s); - vertices[3].Set(0.5f * s, w); - vertices[4].Set(-0.5f * s, w); - vertices[5].Set(-0.5f * w, b + s); - vertices[6].Set(-0.5f * w, b); - vertices[7].Set(-0.5f * s, 0.0f); - - m_polygons[2].Set(vertices, 8); - } - - { - m_polygons[3].SetAsBox(0.5f, 0.5f); - } - - { - m_circle.m_radius = 0.5f; - } - - { - m_edge.SetTwoSided(b2Vec2(-1.0f, 0.0f), b2Vec2(1.0f, 0.0f)); - } - - m_bodyIndex = 0; - memset(m_bodies, 0, sizeof(m_bodies)); - - m_degrees = 0.0f; - - m_mode = e_closest; - } - - void Create(int32 index) - { - if (m_bodies[m_bodyIndex] != NULL) - { - m_world->DestroyBody(m_bodies[m_bodyIndex]); - m_bodies[m_bodyIndex] = NULL; - } - - b2BodyDef bd; - - float x = RandomFloat(-10.0f, 10.0f); - float y = RandomFloat(0.0f, 20.0f); - bd.position.Set(x, y); - bd.angle = RandomFloat(-b2_pi, b2_pi); - - if (index == 4) - { - bd.angularDamping = 0.02f; - } - - m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); - - if (index < 4) - { - b2FixtureDef fd; - fd.shape = m_polygons + index; - fd.friction = 0.3f; - fd.userData.pointer = index + 1; - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - else if (index < 5) - { - b2FixtureDef fd; - fd.shape = &m_circle; - fd.friction = 0.3f; - fd.userData.pointer = index + 1; - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - else - { - b2FixtureDef fd; - fd.shape = &m_edge; - fd.friction = 0.3f; - fd.userData.pointer = index + 1; - - m_bodies[m_bodyIndex]->CreateFixture(&fd); - } - - m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; - } - - void DestroyBody() - { - for (int32 i = 0; i < e_maxBodies; ++i) - { - if (m_bodies[i] != NULL) - { - m_world->DestroyBody(m_bodies[i]); - m_bodies[i] = NULL; - return; - } - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(g_debugDrawTestBed.debugNodeOffset.x, g_debugDrawTestBed.debugNodeOffset.y)); - ImGui::SetNextWindowSize(ImVec2(210.0f, 285.0f)); - ImGui::Begin("Ray-cast Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Button("Shape 1")) - { - Create(0); - } - - if (ImGui::Button("Shape 2")) - { - Create(1); - } - - if (ImGui::Button("Shape 3")) - { - Create(2); - } - - if (ImGui::Button("Shape 4")) - { - Create(3); - } - - if (ImGui::Button("Shape 5")) - { - Create(4); - } - - if (ImGui::Button("Shape 6")) - { - Create(5); - } - - if (ImGui::Button("Destroy Shape")) - { - DestroyBody(); - } - - ImGui::RadioButton("Any", &m_mode, e_any); - ImGui::RadioButton("Closest", &m_mode, e_closest); - ImGui::RadioButton("Multiple", &m_mode, e_multiple); - - ImGui::SliderFloat("Angle", &m_degrees, 0.0f, 360.0f, "%.0f"); - - ImGui::End(); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - DrawString(5, m_textLine, "Shape 1 is intentionally ignored by the ray"); - - switch (m_mode) - { - case e_closest: - DrawString(5, m_textLine, "Ray-cast mode: closest - find closest fixture along the ray"); - break; - - case e_any: - DrawString(5, m_textLine, "Ray-cast mode: any - check for obstruction"); - break; - - case e_multiple: - DrawString(5, m_textLine, "Ray-cast mode: multiple - gather multiple fixtures"); - break; - } - - - - float angle = b2_pi * m_degrees / 180.0f; - float L = 11.0f; - b2Vec2 point1(0.0f, 10.0f); - b2Vec2 d(L * cosf(angle), L * sinf(angle)); - b2Vec2 point2 = point1 + d; - - if (m_mode == e_closest) - { - RayCastClosestCallback callback; - m_world->RayCast(&callback, point1, point2); - - if (callback.m_hit) - { - g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); - g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); - b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; - g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); - } - else - { - g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); - } - } - else if (m_mode == e_any) - { - RayCastAnyCallback callback; - m_world->RayCast(&callback, point1, point2); - - if (callback.m_hit) - { - g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); - g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); - b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; - g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); - } - else - { - g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); - } - } - else if (m_mode == e_multiple) - { - RayCastMultipleCallback callback; - m_world->RayCast(&callback, point1, point2); - g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); - - for (int32 i = 0; i < callback.m_count; ++i) - { - b2Vec2 p = callback.m_points[i]; - b2Vec2 n = callback.m_normals[i]; - g_debugDraw.DrawPoint(p, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); - g_debugDraw.DrawSegment(point1, p, b2Color(0.8f, 0.8f, 0.8f)); - b2Vec2 head = p + 0.5f * n; - g_debugDraw.DrawSegment(p, head, b2Color(0.9f, 0.9f, 0.4f)); - } - } + enum Mode + { + e_any = 0, + e_closest = 1, + e_multiple = 2 + }; + + RayCast() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float w = 1.0f; + float b = w / (2.0f + b2Sqrt(2.0f)); + float s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + { + m_edge.SetTwoSided(b2Vec2(-1.0f, 0.0f), b2Vec2(1.0f, 0.0f)); + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + + m_degrees = 0.0f; + + m_mode = e_closest; + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + + float x = RandomFloat(-10.0f, 10.0f); + float y = RandomFloat(0.0f, 20.0f); + bd.position.Set(x, y); + bd.angle = RandomFloat(-b2_pi, b2_pi); + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.friction = 0.3f; + fd.userData.pointer = index + 1; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else if (index < 5) + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.friction = 0.3f; + fd.userData.pointer = index + 1; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_edge; + fd.friction = 0.3f; + fd.userData.pointer = index + 1; + + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < e_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(g_debugDrawTestBed.debugNodeOffset.x, g_debugDrawTestBed.debugNodeOffset.y)); + ImGui::SetNextWindowSize(ImVec2(210.0f, 285.0f)); + ImGui::Begin("Ray-cast Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Button("Shape 1")) + { + Create(0); + } + + if (ImGui::Button("Shape 2")) + { + Create(1); + } + + if (ImGui::Button("Shape 3")) + { + Create(2); + } + + if (ImGui::Button("Shape 4")) + { + Create(3); + } + + if (ImGui::Button("Shape 5")) + { + Create(4); + } + + if (ImGui::Button("Shape 6")) + { + Create(5); + } + + if (ImGui::Button("Destroy Shape")) + { + DestroyBody(); + } + + ImGui::RadioButton("Any", &m_mode, e_any); + ImGui::RadioButton("Closest", &m_mode, e_closest); + ImGui::RadioButton("Multiple", &m_mode, e_multiple); + + ImGui::SliderFloat("Angle", &m_degrees, 0.0f, 360.0f, "%.0f"); + + ImGui::End(); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + DrawString(5, m_textLine, "Shape 1 is intentionally ignored by the ray"); + + switch (m_mode) + { + case e_closest: + DrawString(5, m_textLine, "Ray-cast mode: closest - find closest fixture along the ray"); + break; + + case e_any: + DrawString(5, m_textLine, "Ray-cast mode: any - check for obstruction"); + break; + + case e_multiple: + DrawString(5, m_textLine, "Ray-cast mode: multiple - gather multiple fixtures"); + break; + } + + float angle = b2_pi * m_degrees / 180.0f; + float L = 11.0f; + b2Vec2 point1(0.0f, 10.0f); + b2Vec2 d(L * cosf(angle), L * sinf(angle)); + b2Vec2 point2 = point1 + d; + + if (m_mode == e_closest) + { + RayCastClosestCallback callback; + m_world->RayCast(&callback, point1, point2); + + if (callback.m_hit) + { + g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + } + else if (m_mode == e_any) + { + RayCastAnyCallback callback; + m_world->RayCast(&callback, point1, point2); + + if (callback.m_hit) + { + g_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + g_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + g_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + } + else if (m_mode == e_multiple) + { + RayCastMultipleCallback callback; + m_world->RayCast(&callback, point1, point2); + g_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + + for (int32 i = 0; i < callback.m_count; ++i) + { + b2Vec2 p = callback.m_points[i]; + b2Vec2 n = callback.m_normals[i]; + g_debugDraw.DrawPoint(p, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + g_debugDraw.DrawSegment(point1, p, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = p + 0.5f * n; + g_debugDraw.DrawSegment(p, head, b2Color(0.9f, 0.9f, 0.4f)); + } + } #if 0 // This case was failing. @@ -460,20 +447,17 @@ class RayCast : public Test g_debugDraw.DrawSegment(input.p1, input.p2, color); } #endif - } - - static Test* Create() - { - return new RayCast; - } - - int32 m_bodyIndex; - b2Body* m_bodies[e_maxBodies]; - b2PolygonShape m_polygons[4]; - b2CircleShape m_circle; - b2EdgeShape m_edge; - float m_degrees; - int32 m_mode; + } + + static Test* Create() { return new RayCast; } + + int32 m_bodyIndex; + b2Body* m_bodies[e_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; + b2EdgeShape m_edge; + float m_degrees; + int32 m_mode; }; static int testIndex = RegisterTest("Collision", "Ray Cast", RayCast::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/restitution.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/restitution.cpp index 7772c623638c..10dd861e57f5 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/restitution.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/restitution.cpp @@ -27,53 +27,49 @@ class Restitution : public Test { public: + Restitution() + { + const float threshold = 10.0f; - Restitution() - { - const float threshold = 10.0f; - - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - - b2FixtureDef fd; - fd.shape = &shape; - fd.restitutionThreshold = threshold; - ground->CreateFixture(&fd); - } - - { - b2CircleShape shape; - shape.m_radius = 1.0f; - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 1.0f; - - float restitution[7] = { 0.0f, 0.1f, 0.3f, 0.5f, 0.75f, 0.9f, 1.0f }; - - for (int32 i = 0; i < 7; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f + 3.0f * i, 20.0f); - - b2Body* body = m_world->CreateBody(&bd); - - fd.restitution = restitution[i]; - fd.restitutionThreshold = threshold; - body->CreateFixture(&fd); - } - } - } - - static Test* Create() - { - return new Restitution; - } + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + fd.restitutionThreshold = threshold; + ground->CreateFixture(&fd); + } + + { + b2CircleShape shape; + shape.m_radius = 1.0f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + float restitution[7] = {0.0f, 0.1f, 0.3f, 0.5f, 0.75f, 0.9f, 1.0f}; + + for (int32 i = 0; i < 7; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + 3.0f * i, 20.0f); + + b2Body* body = m_world->CreateBody(&bd); + + fd.restitution = restitution[i]; + fd.restitutionThreshold = threshold; + body->CreateFixture(&fd); + } + } + } + + static Test* Create() { return new Restitution; } }; static int testIndex = RegisterTest("Forces", "Restitution", Restitution::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/revolute_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/revolute_joint.cpp index e793d86bf283..9422ce3473bf 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/revolute_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/revolute_joint.cpp @@ -27,136 +27,131 @@ class RevoluteJoint : public Test { public: - RevoluteJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - - b2FixtureDef fd; - fd.shape = &shape; - //fd.filter.categoryBits = 2; - - ground->CreateFixture(&fd); - } - - m_enableLimit = true; - m_enableMotor = false; - m_motorSpeed = 1.0f; - - { - b2PolygonShape shape; - shape.SetAsBox(0.25f, 3.0f, b2Vec2(0.0f, 3.0f), 0.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f, 20.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 5.0f); - - b2RevoluteJointDef jd; - jd.Initialize(ground, body, b2Vec2(-10.0f, 20.5f)); - jd.motorSpeed = m_motorSpeed; - jd.maxMotorTorque = 10000.0f; - jd.enableMotor = m_enableMotor; - jd.lowerAngle = -0.25f * b2_pi; - jd.upperAngle = 0.5f * b2_pi; - jd.enableLimit = m_enableLimit; - - m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - } - - { - b2CircleShape circle_shape; - circle_shape.m_radius = 2.0f; - - b2BodyDef circle_bd; - circle_bd.type = b2_dynamicBody; - circle_bd.position.Set(5.0f, 30.0f); - - b2FixtureDef fd; - fd.density = 5.0f; - fd.filter.maskBits = 1; - fd.shape = &circle_shape; - - m_ball = m_world->CreateBody(&circle_bd); - m_ball->CreateFixture(&fd); - - b2PolygonShape polygon_shape; - polygon_shape.SetAsBox(10.0f, 0.5f, b2Vec2 (-10.0f, 0.0f), 0.0f); - - b2BodyDef polygon_bd; - polygon_bd.position.Set(20.0f, 10.0f); - polygon_bd.type = b2_dynamicBody; - polygon_bd.bullet = true; - b2Body* polygon_body = m_world->CreateBody(&polygon_bd); - polygon_body->CreateFixture(&polygon_shape, 2.0f); - - b2RevoluteJointDef jd; - jd.Initialize(ground, polygon_body, b2Vec2(19.0f, 10.0f)); - jd.lowerAngle = -0.25f * b2_pi; - jd.upperAngle = 0.0f * b2_pi; - jd.enableLimit = true; - jd.enableMotor = true; - jd.motorSpeed = 0.0f; - jd.maxMotorTorque = 10000.0f; - - m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Checkbox("Limit", &m_enableLimit)) - { - m_joint1->EnableLimit(m_enableLimit); - } - - if (ImGui::Checkbox("Motor", &m_enableMotor)) - { - m_joint1->EnableMotor(m_enableMotor); - } - - if (ImGui::SliderFloat("Speed", &m_motorSpeed, -20.0f, 20.0f, "%.0f")) - { - m_joint1->SetMotorSpeed(m_motorSpeed); - } - - ImGui::End(); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - float torque1 = m_joint1->GetMotorTorque(settings.m_hertz); - DrawString(5, m_textLine, "Motor Torque 1= %4.0f", torque1); - - - float torque2 = m_joint2->GetMotorTorque(settings.m_hertz); - DrawString(5, m_textLine, "Motor Torque 2= %4.0f", torque2); - - } - - static Test* Create() - { - return new RevoluteJoint; - } - - b2Body* m_ball; - b2RevoluteJoint* m_joint1; - b2RevoluteJoint* m_joint2; - float m_motorSpeed; - bool m_enableMotor; - bool m_enableLimit; + RevoluteJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + // fd.filter.categoryBits = 2; + + ground->CreateFixture(&fd); + } + + m_enableLimit = true; + m_enableMotor = false; + m_motorSpeed = 1.0f; + + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 3.0f, b2Vec2(0.0f, 3.0f), 0.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f, 20.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + b2RevoluteJointDef jd; + jd.Initialize(ground, body, b2Vec2(-10.0f, 20.5f)); + jd.motorSpeed = m_motorSpeed; + jd.maxMotorTorque = 10000.0f; + jd.enableMotor = m_enableMotor; + jd.lowerAngle = -0.25f * b2_pi; + jd.upperAngle = 0.5f * b2_pi; + jd.enableLimit = m_enableLimit; + + m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + { + b2CircleShape circle_shape; + circle_shape.m_radius = 2.0f; + + b2BodyDef circle_bd; + circle_bd.type = b2_dynamicBody; + circle_bd.position.Set(5.0f, 30.0f); + + b2FixtureDef fd; + fd.density = 5.0f; + fd.filter.maskBits = 1; + fd.shape = &circle_shape; + + m_ball = m_world->CreateBody(&circle_bd); + m_ball->CreateFixture(&fd); + + b2PolygonShape polygon_shape; + polygon_shape.SetAsBox(10.0f, 0.5f, b2Vec2(-10.0f, 0.0f), 0.0f); + + b2BodyDef polygon_bd; + polygon_bd.position.Set(20.0f, 10.0f); + polygon_bd.type = b2_dynamicBody; + polygon_bd.bullet = true; + b2Body* polygon_body = m_world->CreateBody(&polygon_bd); + polygon_body->CreateFixture(&polygon_shape, 2.0f); + + b2RevoluteJointDef jd; + jd.Initialize(ground, polygon_body, b2Vec2(19.0f, 10.0f)); + jd.lowerAngle = -0.25f * b2_pi; + jd.upperAngle = 0.0f * b2_pi; + jd.enableLimit = true; + jd.enableMotor = true; + jd.motorSpeed = 0.0f; + jd.maxMotorTorque = 10000.0f; + + m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Checkbox("Limit", &m_enableLimit)) + { + m_joint1->EnableLimit(m_enableLimit); + } + + if (ImGui::Checkbox("Motor", &m_enableMotor)) + { + m_joint1->EnableMotor(m_enableMotor); + } + + if (ImGui::SliderFloat("Speed", &m_motorSpeed, -20.0f, 20.0f, "%.0f")) + { + m_joint1->SetMotorSpeed(m_motorSpeed); + } + + ImGui::End(); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + float torque1 = m_joint1->GetMotorTorque(settings.m_hertz); + DrawString(5, m_textLine, "Motor Torque 1= %4.0f", torque1); + + float torque2 = m_joint2->GetMotorTorque(settings.m_hertz); + DrawString(5, m_textLine, "Motor Torque 2= %4.0f", torque2); + } + + static Test* Create() { return new RevoluteJoint; } + + b2Body* m_ball; + b2RevoluteJoint* m_joint1; + b2RevoluteJoint* m_joint2; + float m_motorSpeed; + bool m_enableMotor; + bool m_enableLimit; }; static int testIndex = RegisterTest("Joints", "Revolute", RevoluteJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/rope.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/rope.cpp index 846cfaaee654..65b41763f23b 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/rope.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/rope.cpp @@ -29,258 +29,254 @@ class Rope : public Test { public: - Rope() - { - const int32 N = 20; - const float L = 0.5f; - b2Vec2 vertices[N]; - float masses[N]; - - for (int32 i = 0; i < N; ++i) - { - vertices[i].Set(0.0f, L * (N - i)); - masses[i] = 1.0f; - } - masses[0] = 0.0f; - masses[1] = 0.0f; - - m_tuning1.bendHertz = 30.0f; - m_tuning1.bendDamping = 4.0f; - m_tuning1.bendStiffness = 1.0f; - m_tuning1.bendingModel = b2_pbdTriangleBendingModel; - m_tuning1.isometric = true; - - m_tuning1.stretchHertz = 30.0f; - m_tuning1.stretchDamping = 4.0f; - m_tuning1.stretchStiffness = 1.0f; - m_tuning1.stretchingModel = b2_pbdStretchingModel; - - m_tuning2.bendHertz = 30.0f; - m_tuning2.bendDamping = 0.7f; - m_tuning2.bendStiffness = 1.0f; - m_tuning2.bendingModel = b2_pbdHeightBendingModel; - m_tuning2.isometric = true; - - m_tuning2.stretchHertz = 30.0f; - m_tuning2.stretchDamping = 1.0f; - m_tuning2.stretchStiffness = 1.0f; - m_tuning2.stretchingModel = b2_pbdStretchingModel; - - m_position1.Set(-5.0f, 15.0f); - m_position2.Set(5.0f, 15.0f); - - b2RopeDef def; - def.vertices = vertices; - def.count = N; - def.gravity.Set(0.0f, -10.0f); - def.masses = masses; - - def.position = m_position1; - def.tuning = m_tuning1; - m_rope1.Create(def); - - def.position = m_position2; - def.tuning = m_tuning2; - m_rope2.Create(def); - - m_iterations1 = 8; - m_iterations2 = 8; - - m_speed = 10.0f; - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 700.0f)); - ImGui::Begin("Tuning", nullptr, ImGuiWindowFlags_NoResize); - - ImGui::Separator(); + Rope() + { + const int32 N = 20; + const float L = 0.5f; + b2Vec2 vertices[N]; + float masses[N]; + + for (int32 i = 0; i < N; ++i) + { + vertices[i].Set(0.0f, L * (N - i)); + masses[i] = 1.0f; + } + masses[0] = 0.0f; + masses[1] = 0.0f; + + m_tuning1.bendHertz = 30.0f; + m_tuning1.bendDamping = 4.0f; + m_tuning1.bendStiffness = 1.0f; + m_tuning1.bendingModel = b2_pbdTriangleBendingModel; + m_tuning1.isometric = true; + + m_tuning1.stretchHertz = 30.0f; + m_tuning1.stretchDamping = 4.0f; + m_tuning1.stretchStiffness = 1.0f; + m_tuning1.stretchingModel = b2_pbdStretchingModel; + + m_tuning2.bendHertz = 30.0f; + m_tuning2.bendDamping = 0.7f; + m_tuning2.bendStiffness = 1.0f; + m_tuning2.bendingModel = b2_pbdHeightBendingModel; + m_tuning2.isometric = true; + + m_tuning2.stretchHertz = 30.0f; + m_tuning2.stretchDamping = 1.0f; + m_tuning2.stretchStiffness = 1.0f; + m_tuning2.stretchingModel = b2_pbdStretchingModel; + + m_position1.Set(-5.0f, 15.0f); + m_position2.Set(5.0f, 15.0f); + + b2RopeDef def; + def.vertices = vertices; + def.count = N; + def.gravity.Set(0.0f, -10.0f); + def.masses = masses; + + def.position = m_position1; + def.tuning = m_tuning1; + m_rope1.Create(def); + + def.position = m_position2; + def.tuning = m_tuning2; + m_rope2.Create(def); + + m_iterations1 = 8; + m_iterations2 = 8; + + m_speed = 10.0f; + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 700.0f)); + ImGui::Begin("Tuning", nullptr, ImGuiWindowFlags_NoResize); + + ImGui::Separator(); ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.5f); - - const ImGuiComboFlags comboFlags = 0; - const char* bendModels[] = { "Spring", "PBD Ang", "XPBD Ang", "PBD Dist", "PBD Height", "PBD Triangle" }; - const char* stretchModels[] = { "PBD", "XPBD" }; - - ImGui::Text("Rope 1"); - static int bendModel1 = m_tuning1.bendingModel; - if (ImGui::BeginCombo("Bend Model##1", bendModels[bendModel1], comboFlags)) - { - for (int i = 0; i < IM_ARRAYSIZE(bendModels); ++i) - { - bool isSelected = (bendModel1 == i); - if (ImGui::Selectable(bendModels[i], isSelected)) - { - bendModel1 = i; - m_tuning1.bendingModel = b2BendingModel(i); - } - - if (isSelected) - { - ImGui::SetItemDefaultFocus(); - } - } - ImGui::EndCombo(); - } - - ImGui::SliderFloat("Damping##B1", &m_tuning1.bendDamping, 0.0f, 4.0f, "%.1f"); - ImGui::SliderFloat("Hertz##B1", &m_tuning1.bendHertz, 0.0f, 60.0f, "%.0f"); - ImGui::SliderFloat("Stiffness##B1", &m_tuning1.bendStiffness, 0.0f, 1.0f, "%.1f"); - - ImGui::Checkbox("Isometric##1", &m_tuning1.isometric); - ImGui::Checkbox("Fixed Mass##1", &m_tuning1.fixedEffectiveMass); - ImGui::Checkbox("Warm Start##1", &m_tuning1.warmStart); - - static int stretchModel1 = m_tuning1.stretchingModel; - if (ImGui::BeginCombo("Stretch Model##1", stretchModels[stretchModel1], comboFlags)) - { - for (int i = 0; i < IM_ARRAYSIZE(stretchModels); ++i) - { - bool isSelected = (stretchModel1 == i); - if (ImGui::Selectable(stretchModels[i], isSelected)) - { - stretchModel1 = i; - m_tuning1.stretchingModel = b2StretchingModel(i); - } - - if (isSelected) - { - ImGui::SetItemDefaultFocus(); - } - } - ImGui::EndCombo(); - } - - ImGui::SliderFloat("Damping##S1", &m_tuning1.stretchDamping, 0.0f, 4.0f, "%.1f"); - ImGui::SliderFloat("Hertz##S1", &m_tuning1.stretchHertz, 0.0f, 60.0f, "%.0f"); - ImGui::SliderFloat("Stiffness##S1", &m_tuning1.stretchStiffness, 0.0f, 1.0f, "%.1f"); - - ImGui::SliderInt("Iterations##1", &m_iterations1, 1, 100, "%d"); - - ImGui::Separator(); - - ImGui::Text("Rope 2"); - static int bendModel2 = m_tuning2.bendingModel; - if (ImGui::BeginCombo("Bend Model##2", bendModels[bendModel2], comboFlags)) - { - for (int i = 0; i < IM_ARRAYSIZE(bendModels); ++i) - { - bool isSelected = (bendModel2 == i); - if (ImGui::Selectable(bendModels[i], isSelected)) - { - bendModel2 = i; - m_tuning2.bendingModel = b2BendingModel(i); - } - - if (isSelected) - { - ImGui::SetItemDefaultFocus(); - } - } - ImGui::EndCombo(); - } - - ImGui::SliderFloat("Damping##B2", &m_tuning2.bendDamping, 0.0f, 4.0f, "%.1f"); - ImGui::SliderFloat("Hertz##B2", &m_tuning2.bendHertz, 0.0f, 60.0f, "%.0f"); - ImGui::SliderFloat("Stiffness##B2", &m_tuning2.bendStiffness, 0.0f, 1.0f, "%.1f"); - - ImGui::Checkbox("Isometric##2", &m_tuning2.isometric); - ImGui::Checkbox("Fixed Mass##2", &m_tuning2.fixedEffectiveMass); - ImGui::Checkbox("Warm Start##2", &m_tuning2.warmStart); - - static int stretchModel2 = m_tuning2.stretchingModel; - if (ImGui::BeginCombo("Stretch Model##2", stretchModels[stretchModel2], comboFlags)) - { - for (int i = 0; i < IM_ARRAYSIZE(stretchModels); ++i) - { - bool isSelected = (stretchModel2 == i); - if (ImGui::Selectable(stretchModels[i], isSelected)) - { - stretchModel2 = i; - m_tuning2.stretchingModel = b2StretchingModel(i); - } - - if (isSelected) - { - ImGui::SetItemDefaultFocus(); - } - } - ImGui::EndCombo(); - } - - ImGui::SliderFloat("Damping##S2", &m_tuning2.stretchDamping, 0.0f, 4.0f, "%.1f"); - ImGui::SliderFloat("Hertz##S2", &m_tuning2.stretchHertz, 0.0f, 60.0f, "%.0f"); - ImGui::SliderFloat("Stiffness##S2", &m_tuning2.stretchStiffness, 0.0f, 1.0f, "%.1f"); - - ImGui::SliderInt("Iterations##2", &m_iterations2, 1, 100, "%d"); - - ImGui::Separator(); - - ImGui::SliderFloat("Speed", &m_speed, 10.0f, 100.0f, "%.0f"); - - if (ImGui::Button("Reset")) - { - m_position1.Set(-5.0f, 15.0f); - m_position2.Set(5.0f, 15.0f); - m_rope1.Reset(m_position1); - m_rope2.Reset(m_position2); - } + + const ImGuiComboFlags comboFlags = 0; + const char* bendModels[] = {"Spring", "PBD Ang", "XPBD Ang", "PBD Dist", "PBD Height", "PBD Triangle"}; + const char* stretchModels[] = {"PBD", "XPBD"}; + + ImGui::Text("Rope 1"); + static int bendModel1 = m_tuning1.bendingModel; + if (ImGui::BeginCombo("Bend Model##1", bendModels[bendModel1], comboFlags)) + { + for (int i = 0; i < IM_ARRAYSIZE(bendModels); ++i) + { + bool isSelected = (bendModel1 == i); + if (ImGui::Selectable(bendModels[i], isSelected)) + { + bendModel1 = i; + m_tuning1.bendingModel = b2BendingModel(i); + } + + if (isSelected) + { + ImGui::SetItemDefaultFocus(); + } + } + ImGui::EndCombo(); + } + + ImGui::SliderFloat("Damping##B1", &m_tuning1.bendDamping, 0.0f, 4.0f, "%.1f"); + ImGui::SliderFloat("Hertz##B1", &m_tuning1.bendHertz, 0.0f, 60.0f, "%.0f"); + ImGui::SliderFloat("Stiffness##B1", &m_tuning1.bendStiffness, 0.0f, 1.0f, "%.1f"); + + ImGui::Checkbox("Isometric##1", &m_tuning1.isometric); + ImGui::Checkbox("Fixed Mass##1", &m_tuning1.fixedEffectiveMass); + ImGui::Checkbox("Warm Start##1", &m_tuning1.warmStart); + + static int stretchModel1 = m_tuning1.stretchingModel; + if (ImGui::BeginCombo("Stretch Model##1", stretchModels[stretchModel1], comboFlags)) + { + for (int i = 0; i < IM_ARRAYSIZE(stretchModels); ++i) + { + bool isSelected = (stretchModel1 == i); + if (ImGui::Selectable(stretchModels[i], isSelected)) + { + stretchModel1 = i; + m_tuning1.stretchingModel = b2StretchingModel(i); + } + + if (isSelected) + { + ImGui::SetItemDefaultFocus(); + } + } + ImGui::EndCombo(); + } + + ImGui::SliderFloat("Damping##S1", &m_tuning1.stretchDamping, 0.0f, 4.0f, "%.1f"); + ImGui::SliderFloat("Hertz##S1", &m_tuning1.stretchHertz, 0.0f, 60.0f, "%.0f"); + ImGui::SliderFloat("Stiffness##S1", &m_tuning1.stretchStiffness, 0.0f, 1.0f, "%.1f"); + + ImGui::SliderInt("Iterations##1", &m_iterations1, 1, 100, "%d"); + + ImGui::Separator(); + + ImGui::Text("Rope 2"); + static int bendModel2 = m_tuning2.bendingModel; + if (ImGui::BeginCombo("Bend Model##2", bendModels[bendModel2], comboFlags)) + { + for (int i = 0; i < IM_ARRAYSIZE(bendModels); ++i) + { + bool isSelected = (bendModel2 == i); + if (ImGui::Selectable(bendModels[i], isSelected)) + { + bendModel2 = i; + m_tuning2.bendingModel = b2BendingModel(i); + } + + if (isSelected) + { + ImGui::SetItemDefaultFocus(); + } + } + ImGui::EndCombo(); + } + + ImGui::SliderFloat("Damping##B2", &m_tuning2.bendDamping, 0.0f, 4.0f, "%.1f"); + ImGui::SliderFloat("Hertz##B2", &m_tuning2.bendHertz, 0.0f, 60.0f, "%.0f"); + ImGui::SliderFloat("Stiffness##B2", &m_tuning2.bendStiffness, 0.0f, 1.0f, "%.1f"); + + ImGui::Checkbox("Isometric##2", &m_tuning2.isometric); + ImGui::Checkbox("Fixed Mass##2", &m_tuning2.fixedEffectiveMass); + ImGui::Checkbox("Warm Start##2", &m_tuning2.warmStart); + + static int stretchModel2 = m_tuning2.stretchingModel; + if (ImGui::BeginCombo("Stretch Model##2", stretchModels[stretchModel2], comboFlags)) + { + for (int i = 0; i < IM_ARRAYSIZE(stretchModels); ++i) + { + bool isSelected = (stretchModel2 == i); + if (ImGui::Selectable(stretchModels[i], isSelected)) + { + stretchModel2 = i; + m_tuning2.stretchingModel = b2StretchingModel(i); + } + + if (isSelected) + { + ImGui::SetItemDefaultFocus(); + } + } + ImGui::EndCombo(); + } + + ImGui::SliderFloat("Damping##S2", &m_tuning2.stretchDamping, 0.0f, 4.0f, "%.1f"); + ImGui::SliderFloat("Hertz##S2", &m_tuning2.stretchHertz, 0.0f, 60.0f, "%.0f"); + ImGui::SliderFloat("Stiffness##S2", &m_tuning2.stretchStiffness, 0.0f, 1.0f, "%.1f"); + + ImGui::SliderInt("Iterations##2", &m_iterations2, 1, 100, "%d"); + + ImGui::Separator(); + + ImGui::SliderFloat("Speed", &m_speed, 10.0f, 100.0f, "%.0f"); + + if (ImGui::Button("Reset")) + { + m_position1.Set(-5.0f, 15.0f); + m_position2.Set(5.0f, 15.0f); + m_rope1.Reset(m_position1); + m_rope2.Reset(m_position2); + } ImGui::PopItemWidth(); - ImGui::End(); - } - - void Step(Settings& settings) override - { - float dt = settings.m_hertz > 0.0f ? 1.0f / settings.m_hertz : 0.0f; - - if (settings.m_pause == 1 && settings.m_singleStep == 0) - { - dt = 0.0f; - } - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_COMMA) == GLFW_PRESS) - //{ - // m_position1.x -= m_speed * dt; - // m_position2.x -= m_speed * dt; - //} - - //if (glfwGetKey(g_mainWindow, GLFW_KEY_PERIOD) == GLFW_PRESS) - //{ - // m_position1.x += m_speed * dt; - // m_position2.x += m_speed * dt; - //} - - m_rope1.SetTuning(m_tuning1); - m_rope2.SetTuning(m_tuning2); - m_rope1.Step(dt, m_iterations1, m_position1); - m_rope2.Step(dt, m_iterations2, m_position2); - - Test::Step(settings); - - m_rope1.Draw(&g_debugDraw); - m_rope2.Draw(&g_debugDraw); - - DrawString(5, m_textLine, "Press comma and period to move left and right"); - - } - - static Test* Create() - { - return new Rope; - } - - b2Rope m_rope1; - b2Rope m_rope2; - b2RopeTuning m_tuning1; - b2RopeTuning m_tuning2; - int32 m_iterations1; - int32 m_iterations2; - b2Vec2 m_position1; - b2Vec2 m_position2; - float m_speed; + ImGui::End(); + } + + void Step(Settings& settings) override + { + float dt = settings.m_hertz > 0.0f ? 1.0f / settings.m_hertz : 0.0f; + + if (settings.m_pause == 1 && settings.m_singleStep == 0) + { + dt = 0.0f; + } + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_COMMA) == GLFW_PRESS) + //{ + // m_position1.x -= m_speed * dt; + // m_position2.x -= m_speed * dt; + // } + + // if (glfwGetKey(g_mainWindow, GLFW_KEY_PERIOD) == GLFW_PRESS) + //{ + // m_position1.x += m_speed * dt; + // m_position2.x += m_speed * dt; + // } + + m_rope1.SetTuning(m_tuning1); + m_rope2.SetTuning(m_tuning2); + m_rope1.Step(dt, m_iterations1, m_position1); + m_rope2.Step(dt, m_iterations2, m_position2); + + Test::Step(settings); + + m_rope1.Draw(&g_debugDraw); + m_rope2.Draw(&g_debugDraw); + + DrawString(5, m_textLine, "Press comma and period to move left and right"); + } + + static Test* Create() { return new Rope; } + + b2Rope m_rope1; + b2Rope m_rope2; + b2RopeTuning m_tuning1; + b2RopeTuning m_tuning2; + int32 m_iterations1; + int32 m_iterations2; + b2Vec2 m_position1; + b2Vec2 m_position2; + float m_speed; }; static int testIndex = RegisterTest("Rope", "Bending", Rope::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/sensor.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/sensor.cpp index af9e88c1e13e..b7b4b9bdb04c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/sensor.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/sensor.cpp @@ -27,23 +27,22 @@ class Sensors : public Test { public: - - enum - { - e_count = 7 - }; - - Sensors() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - { - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } + enum + { + e_count = 7 + }; + + Sensors() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + { + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } #if 0 { @@ -53,143 +52,140 @@ class Sensors : public Test m_sensor = ground->CreateFixture(&sd); } #else - { - b2CircleShape shape; - shape.m_radius = 5.0f; - shape.m_p.Set(0.0f, 10.0f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.isSensor = true; - m_sensor = ground->CreateFixture(&fd); - } + { + b2CircleShape shape; + shape.m_radius = 5.0f; + shape.m_p.Set(0.0f, 10.0f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.isSensor = true; + m_sensor = ground->CreateFixture(&fd); + } #endif - } - - { - b2CircleShape shape; - shape.m_radius = 1.0f; - - for (int32 i = 0; i < e_count; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-10.0f + 3.0f * i, 20.0f); - bd.userData.pointer = i; - - m_touching[i] = false; - m_bodies[i] = m_world->CreateBody(&bd); - - m_bodies[i]->CreateFixture(&shape, 1.0f); - } - } - - m_force = 100.0f; - } - - // Implement contact listener. - void BeginContact(b2Contact* contact) override - { - b2Fixture* fixtureA = contact->GetFixtureA(); - b2Fixture* fixtureB = contact->GetFixtureB(); - - if (fixtureA == m_sensor) - { - uintptr_t index = fixtureB->GetBody()->GetUserData().pointer; - if (index < e_count) - { - m_touching[index] = true; - } - } - - if (fixtureB == m_sensor) - { - uintptr_t index = fixtureA->GetBody()->GetUserData().pointer; - if (index < e_count) - { - m_touching[index] = true; - } - } - } - - // Implement contact listener. - void EndContact(b2Contact* contact) override - { - b2Fixture* fixtureA = contact->GetFixtureA(); - b2Fixture* fixtureB = contact->GetFixtureB(); - - if (fixtureA == m_sensor) - { - uintptr_t index = fixtureB->GetBody()->GetUserData().pointer; - if (index < e_count) - { - m_touching[index] = false; - } - } - - if (fixtureB == m_sensor) - { - uintptr_t index = fixtureA->GetBody()->GetUserData().pointer; - if (index < e_count) - { - m_touching[index] = false; - } - } - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 60.0f)); - ImGui::Begin("Sensor Controls", nullptr, ImGuiWindowFlags_NoResize); - - ImGui::SliderFloat("Force", &m_force, 0.0f, 2000.0f, "%.0f"); - - ImGui::End(); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - // Traverse the contact results. Apply a force on shapes - // that overlap the sensor. - for (int32 i = 0; i < e_count; ++i) - { - if (m_touching[i] == false) - { - continue; - } - - b2Body* body = m_bodies[i]; - b2Body* ground = m_sensor->GetBody(); - - b2CircleShape* circle = (b2CircleShape*)m_sensor->GetShape(); - b2Vec2 center = ground->GetWorldPoint(circle->m_p); - - b2Vec2 position = body->GetPosition(); - - b2Vec2 d = center - position; - if (d.LengthSquared() < FLT_EPSILON * FLT_EPSILON) - { - continue; - } - - d.Normalize(); - b2Vec2 F = m_force * d; - body->ApplyForce(F, position, false); - } - } - - static Test* Create() - { - return new Sensors; - } - - b2Fixture* m_sensor; - b2Body* m_bodies[e_count]; - float m_force; - bool m_touching[e_count]; + } + + { + b2CircleShape shape; + shape.m_radius = 1.0f; + + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + 3.0f * i, 20.0f); + bd.userData.pointer = i; + + m_touching[i] = false; + m_bodies[i] = m_world->CreateBody(&bd); + + m_bodies[i]->CreateFixture(&shape, 1.0f); + } + } + + m_force = 100.0f; + } + + // Implement contact listener. + void BeginContact(b2Contact* contact) override + { + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA == m_sensor) + { + uintptr_t index = fixtureB->GetBody()->GetUserData().pointer; + if (index < e_count) + { + m_touching[index] = true; + } + } + + if (fixtureB == m_sensor) + { + uintptr_t index = fixtureA->GetBody()->GetUserData().pointer; + if (index < e_count) + { + m_touching[index] = true; + } + } + } + + // Implement contact listener. + void EndContact(b2Contact* contact) override + { + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA == m_sensor) + { + uintptr_t index = fixtureB->GetBody()->GetUserData().pointer; + if (index < e_count) + { + m_touching[index] = false; + } + } + + if (fixtureB == m_sensor) + { + uintptr_t index = fixtureA->GetBody()->GetUserData().pointer; + if (index < e_count) + { + m_touching[index] = false; + } + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 60.0f)); + ImGui::Begin("Sensor Controls", nullptr, ImGuiWindowFlags_NoResize); + + ImGui::SliderFloat("Force", &m_force, 0.0f, 2000.0f, "%.0f"); + + ImGui::End(); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + // Traverse the contact results. Apply a force on shapes + // that overlap the sensor. + for (int32 i = 0; i < e_count; ++i) + { + if (m_touching[i] == false) + { + continue; + } + + b2Body* body = m_bodies[i]; + b2Body* ground = m_sensor->GetBody(); + + b2CircleShape* circle = (b2CircleShape*)m_sensor->GetShape(); + b2Vec2 center = ground->GetWorldPoint(circle->m_p); + + b2Vec2 position = body->GetPosition(); + + b2Vec2 d = center - position; + if (d.LengthSquared() < FLT_EPSILON * FLT_EPSILON) + { + continue; + } + + d.Normalize(); + b2Vec2 F = m_force * d; + body->ApplyForce(F, position, false); + } + } + + static Test* Create() { return new Sensors; } + + b2Fixture* m_sensor; + b2Body* m_bodies[e_count]; + float m_force; + bool m_touching[e_count]; }; static int testIndex = RegisterTest("Collision", "Sensors", Sensors::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/settings.h b/tests/cpp-tests/Classes/Box2DTestBed/tests/settings.h index a34f6fda0c54..7ba71423e898 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/settings.h +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/settings.h @@ -25,62 +25,59 @@ struct Settings { - Settings() - { - Reset(); - } + Settings() { Reset(); } - void Reset() - { - m_testIndex = 0; - m_windowWidth = 1600; - m_windowHeight = 900; - m_hertz = 60.0f; - m_velocityIterations = 8; - m_positionIterations = 3; - m_drawShapes = true; - m_drawJoints = true; - m_drawAABBs = false; - m_drawContactPoints = false; - m_drawContactNormals = false; - m_drawContactImpulse = false; - m_drawFrictionImpulse = false; - m_drawCOMs = false; - m_drawStats = false; - m_drawProfile = false; - m_enableWarmStarting = true; - m_enableContinuous = true; - m_enableSubStepping = false; - m_enableSleep = true; - m_pause = false; - m_singleStep = false; - } + void Reset() + { + m_testIndex = 0; + m_windowWidth = 1600; + m_windowHeight = 900; + m_hertz = 60.0f; + m_velocityIterations = 8; + m_positionIterations = 3; + m_drawShapes = true; + m_drawJoints = true; + m_drawAABBs = false; + m_drawContactPoints = false; + m_drawContactNormals = false; + m_drawContactImpulse = false; + m_drawFrictionImpulse = false; + m_drawCOMs = false; + m_drawStats = false; + m_drawProfile = false; + m_enableWarmStarting = true; + m_enableContinuous = true; + m_enableSubStepping = false; + m_enableSleep = true; + m_pause = false; + m_singleStep = false; + } - void Save(); - void Load(); + void Save(); + void Load(); - int m_testIndex; - int m_windowWidth; - int m_windowHeight; - float m_hertz; - int m_velocityIterations; - int m_positionIterations; - bool m_drawShapes; - bool m_drawJoints; - bool m_drawAABBs; - bool m_drawContactPoints; - bool m_drawContactNormals; - bool m_drawContactImpulse; - bool m_drawFrictionImpulse; - bool m_drawCOMs; - bool m_drawStats; - bool m_drawProfile; - bool m_enableWarmStarting; - bool m_enableContinuous; - bool m_enableSubStepping; - bool m_enableSleep; - bool m_pause; - bool m_singleStep; + int m_testIndex; + int m_windowWidth; + int m_windowHeight; + float m_hertz; + int m_velocityIterations; + int m_positionIterations; + bool m_drawShapes; + bool m_drawJoints; + bool m_drawAABBs; + bool m_drawContactPoints; + bool m_drawContactNormals; + bool m_drawContactImpulse; + bool m_drawFrictionImpulse; + bool m_drawCOMs; + bool m_drawStats; + bool m_drawProfile; + bool m_enableWarmStarting; + bool m_enableContinuous; + bool m_enableSubStepping; + bool m_enableSleep; + bool m_pause; + bool m_singleStep; }; #endif \ No newline at end of file diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_cast.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_cast.cpp index 2c942add2890..60771b589681 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_cast.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_cast.cpp @@ -26,168 +26,164 @@ class ShapeCast : public Test { public: - enum - { - e_vertexCount = 8 - }; + enum + { + e_vertexCount = 8 + }; - ShapeCast() - { + ShapeCast() + { #if 1 - m_vAs[0].Set(-0.5f, 1.0f); - m_vAs[1].Set(0.5f, 1.0f); - m_vAs[2].Set(0.0f, 0.0f); - m_countA = 3; - m_radiusA = b2_polygonRadius; - - m_vBs[0].Set(-0.5f, -0.5f); - m_vBs[1].Set(0.5f, -0.5f); - m_vBs[2].Set(0.5f, 0.5f); - m_vBs[3].Set(-0.5f, 0.5f); - m_countB = 4; - m_radiusB = b2_polygonRadius; - - m_transformA.p.Set(0.0f, 0.25f); - m_transformA.q.SetIdentity(); - m_transformB.p.Set(-4.0f, 0.0f); - m_transformB.q.SetIdentity(); - m_translationB.Set(8.0f, 0.0f); + m_vAs[0].Set(-0.5f, 1.0f); + m_vAs[1].Set(0.5f, 1.0f); + m_vAs[2].Set(0.0f, 0.0f); + m_countA = 3; + m_radiusA = b2_polygonRadius; + + m_vBs[0].Set(-0.5f, -0.5f); + m_vBs[1].Set(0.5f, -0.5f); + m_vBs[2].Set(0.5f, 0.5f); + m_vBs[3].Set(-0.5f, 0.5f); + m_countB = 4; + m_radiusB = b2_polygonRadius; + + m_transformA.p.Set(0.0f, 0.25f); + m_transformA.q.SetIdentity(); + m_transformB.p.Set(-4.0f, 0.0f); + m_transformB.q.SetIdentity(); + m_translationB.Set(8.0f, 0.0f); #elif 0 - m_vAs[0].Set(0.0f, 0.0f); - m_countA = 1; - m_radiusA = 0.5f; - - m_vBs[0].Set(0.0f, 0.0f); - m_countB = 1; - m_radiusB = 0.5f; - - m_transformA.p.Set(0.0f, 0.25f); - m_transformA.q.SetIdentity(); - m_transformB.p.Set(-4.0f, 0.0f); - m_transformB.q.SetIdentity(); - m_translationB.Set(8.0f, 0.0f); + m_vAs[0].Set(0.0f, 0.0f); + m_countA = 1; + m_radiusA = 0.5f; + + m_vBs[0].Set(0.0f, 0.0f); + m_countB = 1; + m_radiusB = 0.5f; + + m_transformA.p.Set(0.0f, 0.25f); + m_transformA.q.SetIdentity(); + m_transformB.p.Set(-4.0f, 0.0f); + m_transformB.q.SetIdentity(); + m_translationB.Set(8.0f, 0.0f); #else - m_vAs[0].Set(0.0f, 0.0f); - m_vAs[1].Set(2.0f, 0.0f); - m_countA = 2; - m_radiusA = b2_polygonRadius; - - m_vBs[0].Set(0.0f, 0.0f); - m_countB = 1; - m_radiusB = 0.25f; - - // Initial overlap - m_transformA.p.Set(0.0f, 0.0f); - m_transformA.q.SetIdentity(); - m_transformB.p.Set(-0.244360745f, 0.05999358f); - m_transformB.q.SetIdentity(); - m_translationB.Set(0.0f, 0.0399999991f); + m_vAs[0].Set(0.0f, 0.0f); + m_vAs[1].Set(2.0f, 0.0f); + m_countA = 2; + m_radiusA = b2_polygonRadius; + + m_vBs[0].Set(0.0f, 0.0f); + m_countB = 1; + m_radiusB = 0.25f; + + // Initial overlap + m_transformA.p.Set(0.0f, 0.0f); + m_transformA.q.SetIdentity(); + m_transformB.p.Set(-0.244360745f, 0.05999358f); + m_transformB.q.SetIdentity(); + m_translationB.Set(0.0f, 0.0399999991f); #endif - } - - static Test* Create() - { - return new ShapeCast; - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - b2ShapeCastInput input; - input.proxyA.Set(m_vAs, m_countA, m_radiusA); - input.proxyB.Set(m_vBs, m_countB, m_radiusB); - input.transformA = m_transformA; - input.transformB = m_transformB; - input.translationB = m_translationB; - - b2ShapeCastOutput output; - bool hit = b2ShapeCast(&output, &input); - - b2Transform transformB2; - transformB2.q = m_transformB.q; - transformB2.p = m_transformB.p + output.lambda * input.translationB; - - b2DistanceInput distanceInput; - distanceInput.proxyA.Set(m_vAs, m_countA, m_radiusA); - distanceInput.proxyB.Set(m_vBs, m_countB, m_radiusB); - distanceInput.transformA = m_transformA; - distanceInput.transformB = transformB2; - distanceInput.useRadii = false; - b2SimplexCache simplexCache; - simplexCache.count = 0; - b2DistanceOutput distanceOutput; - - b2Distance(&distanceOutput, &simplexCache, &distanceInput); - - DrawString(5, m_textLine, "hit = %s, iters = %d, lambda = %g, distance = %g", - hit ? "true" : "false", output.iterations, output.lambda, distanceOutput.distance); - - - b2Vec2 vertices[b2_maxPolygonVertices]; - - for (int32 i = 0; i < m_countA; ++i) - { - vertices[i] = b2Mul(m_transformA, m_vAs[i]); - } - - if (m_countA == 1) - { - g_debugDraw.DrawCircle(vertices[0], m_radiusA, b2Color(0.9f, 0.9f, 0.9f)); - } - else - { - g_debugDraw.DrawPolygon(vertices, m_countA, b2Color(0.9f, 0.9f, 0.9f)); - } - - for (int32 i = 0; i < m_countB; ++i) - { - vertices[i] = b2Mul(m_transformB, m_vBs[i]); - } - - if (m_countB == 1) - { - g_debugDraw.DrawCircle(vertices[0], m_radiusB, b2Color(0.5f, 0.9f, 0.5f)); - } - else - { - g_debugDraw.DrawPolygon(vertices, m_countB, b2Color(0.5f, 0.9f, 0.5f)); - } - - for (int32 i = 0; i < m_countB; ++i) - { - vertices[i] = b2Mul(transformB2, m_vBs[i]); - } - - if (m_countB == 1) - { - g_debugDraw.DrawCircle(vertices[0], m_radiusB, b2Color(0.5f, 0.7f, 0.9f)); - } - else - { - g_debugDraw.DrawPolygon(vertices, m_countB, b2Color(0.5f, 0.7f, 0.9f)); - } - - if (hit) - { - b2Vec2 p1 = output.point; - g_debugDraw.DrawPoint(p1, 10.0f, b2Color(0.9f, 0.3f, 0.3f)); - b2Vec2 p2 = p1 + output.normal; - g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.3f, 0.3f)); - } - } - - b2Vec2 m_vAs[b2_maxPolygonVertices]; - int32 m_countA; - float m_radiusA; - - b2Vec2 m_vBs[b2_maxPolygonVertices]; - int32 m_countB; - float m_radiusB; - - b2Transform m_transformA; - b2Transform m_transformB; - b2Vec2 m_translationB; + } + + static Test* Create() { return new ShapeCast; } + + void Step(Settings& settings) override + { + Test::Step(settings); + + b2ShapeCastInput input; + input.proxyA.Set(m_vAs, m_countA, m_radiusA); + input.proxyB.Set(m_vBs, m_countB, m_radiusB); + input.transformA = m_transformA; + input.transformB = m_transformB; + input.translationB = m_translationB; + + b2ShapeCastOutput output; + bool hit = b2ShapeCast(&output, &input); + + b2Transform transformB2; + transformB2.q = m_transformB.q; + transformB2.p = m_transformB.p + output.lambda * input.translationB; + + b2DistanceInput distanceInput; + distanceInput.proxyA.Set(m_vAs, m_countA, m_radiusA); + distanceInput.proxyB.Set(m_vBs, m_countB, m_radiusB); + distanceInput.transformA = m_transformA; + distanceInput.transformB = transformB2; + distanceInput.useRadii = false; + b2SimplexCache simplexCache; + simplexCache.count = 0; + b2DistanceOutput distanceOutput; + + b2Distance(&distanceOutput, &simplexCache, &distanceInput); + + DrawString(5, m_textLine, "hit = %s, iters = %d, lambda = %g, distance = %g", hit ? "true" : "false", + output.iterations, output.lambda, distanceOutput.distance); + + b2Vec2 vertices[b2_maxPolygonVertices]; + + for (int32 i = 0; i < m_countA; ++i) + { + vertices[i] = b2Mul(m_transformA, m_vAs[i]); + } + + if (m_countA == 1) + { + g_debugDraw.DrawCircle(vertices[0], m_radiusA, b2Color(0.9f, 0.9f, 0.9f)); + } + else + { + g_debugDraw.DrawPolygon(vertices, m_countA, b2Color(0.9f, 0.9f, 0.9f)); + } + + for (int32 i = 0; i < m_countB; ++i) + { + vertices[i] = b2Mul(m_transformB, m_vBs[i]); + } + + if (m_countB == 1) + { + g_debugDraw.DrawCircle(vertices[0], m_radiusB, b2Color(0.5f, 0.9f, 0.5f)); + } + else + { + g_debugDraw.DrawPolygon(vertices, m_countB, b2Color(0.5f, 0.9f, 0.5f)); + } + + for (int32 i = 0; i < m_countB; ++i) + { + vertices[i] = b2Mul(transformB2, m_vBs[i]); + } + + if (m_countB == 1) + { + g_debugDraw.DrawCircle(vertices[0], m_radiusB, b2Color(0.5f, 0.7f, 0.9f)); + } + else + { + g_debugDraw.DrawPolygon(vertices, m_countB, b2Color(0.5f, 0.7f, 0.9f)); + } + + if (hit) + { + b2Vec2 p1 = output.point; + g_debugDraw.DrawPoint(p1, 10.0f, b2Color(0.9f, 0.3f, 0.3f)); + b2Vec2 p2 = p1 + output.normal; + g_debugDraw.DrawSegment(p1, p2, b2Color(0.9f, 0.3f, 0.3f)); + } + } + + b2Vec2 m_vAs[b2_maxPolygonVertices]; + int32 m_countA; + float m_radiusA; + + b2Vec2 m_vBs[b2_maxPolygonVertices]; + int32 m_countB; + float m_radiusB; + + b2Transform m_transformA; + b2Transform m_transformB; + b2Vec2 m_translationB; }; static int testIndex = RegisterTest("Collision", "Shape Cast", ShapeCast::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_editing.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_editing.cpp index 357ed8fa280a..c7b753b52400 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_editing.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/shape_editing.cpp @@ -25,84 +25,79 @@ class ShapeEditing : public Test { public: - - ShapeEditing() - { - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 10.0f); - m_body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(4.0f, 4.0f, b2Vec2(0.0f, 0.0f), 0.0f); - m_fixture1 = m_body->CreateFixture(&shape, 10.0f); - - m_fixture2 = NULL; - - m_sensor = false; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_C: - if (m_fixture2 == NULL) - { - b2CircleShape shape; - shape.m_radius = 3.0f; - shape.m_p.Set(0.5f, -4.0f); - m_fixture2 = m_body->CreateFixture(&shape, 10.0f); - m_body->SetAwake(true); - } - break; - - case GLFW_KEY_D: - if (m_fixture2 != NULL) - { - m_body->DestroyFixture(m_fixture2); - m_fixture2 = NULL; - m_body->SetAwake(true); - } - break; - - case GLFW_KEY_S: - if (m_fixture2 != NULL) - { - m_sensor = !m_sensor; - m_fixture2->SetSensor(m_sensor); - } - break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); - - DrawString(5, m_textLine, "sensor = %d", m_sensor); - - } - - static Test* Create() - { - return new ShapeEditing; - } - - b2Body* m_body; - b2Fixture* m_fixture1; - b2Fixture* m_fixture2; - bool m_sensor; + ShapeEditing() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + m_body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(4.0f, 4.0f, b2Vec2(0.0f, 0.0f), 0.0f); + m_fixture1 = m_body->CreateFixture(&shape, 10.0f); + + m_fixture2 = NULL; + + m_sensor = false; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_C: + if (m_fixture2 == NULL) + { + b2CircleShape shape; + shape.m_radius = 3.0f; + shape.m_p.Set(0.5f, -4.0f); + m_fixture2 = m_body->CreateFixture(&shape, 10.0f); + m_body->SetAwake(true); + } + break; + + case GLFW_KEY_D: + if (m_fixture2 != NULL) + { + m_body->DestroyFixture(m_fixture2); + m_fixture2 = NULL; + m_body->SetAwake(true); + } + break; + + case GLFW_KEY_S: + if (m_fixture2 != NULL) + { + m_sensor = !m_sensor; + m_fixture2->SetSensor(m_sensor); + } + break; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); + + DrawString(5, m_textLine, "sensor = %d", m_sensor); + } + + static Test* Create() { return new ShapeEditing; } + + b2Body* m_body; + b2Fixture* m_fixture1; + b2Fixture* m_fixture2; + bool m_sensor; }; static int testIndex = RegisterTest("Examples", "Shape Editing", ShapeEditing::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/skier.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/skier.cpp index c5ff52534002..05529640a25c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/skier.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/skier.cpp @@ -10,141 +10,137 @@ Test case for collision/jerking issue. class Skier : public Test { public: - Skier() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - float const PlatformWidth = 8.0f; - - /* - First angle is from the horizontal and should be negative for a downward slope. - Second angle is relative to the preceding slope, and should be positive, creating a kind of - loose 'Z'-shape from the 3 edges. - If A1 = -10, then A2 <= ~1.5 will result in the collision glitch. - If A1 = -30, then A2 <= ~10.0 will result in the glitch. - */ - float const Angle1Degrees = -30.0f; - float const Angle2Degrees = 10.0f; - - /* - The larger the value of SlopeLength, the less likely the glitch will show up. - */ - float const SlopeLength = 2.0f; - - float const SurfaceFriction = 0.2f; - - // Convert to radians - float const Slope1Incline = -Angle1Degrees * b2_pi / 180.0f; - float const Slope2Incline = Slope1Incline - Angle2Degrees * b2_pi / 180.0f; - // - - m_platform_width = PlatformWidth; - - // Horizontal platform - b2Vec2 v1(-PlatformWidth, 0.0f); - b2Vec2 v2(0.0f, 0.0f); - b2Vec2 v3(SlopeLength * cosf(Slope1Incline), -SlopeLength * sinf(Slope1Incline)); - b2Vec2 v4(v3.x + SlopeLength * cosf(Slope2Incline), v3.y - SlopeLength * sinf(Slope2Incline)); - b2Vec2 v5(v4.x, v4.y - 1.0f); - - b2Vec2 vertices[5] = { v5, v4, v3, v2, v1 }; - - b2ChainShape shape; - shape.CreateLoop(vertices, 5); - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 0.0f; - fd.friction = SurfaceFriction; - - ground->CreateFixture(&fd); - } - - { - float const BodyWidth = 1.0f; - float const BodyHeight = 2.5f; - float const SkiLength = 3.0f; - - /* - Larger values for this seem to alleviate the issue to some extent. - */ - float const SkiThickness = 0.3f; - - float const SkiFriction = 0.0f; - float const SkiRestitution = 0.15f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - float initial_y = BodyHeight / 2 + SkiThickness; - bd.position.Set(-m_platform_width / 2, initial_y); - - b2Body* skier = m_world->CreateBody(&bd); - - b2PolygonShape ski; - b2Vec2 verts[4]; - verts[0].Set(-SkiLength / 2 - SkiThickness, -BodyHeight / 2); - verts[1].Set(-SkiLength / 2, -BodyHeight / 2 - SkiThickness); - verts[2].Set(SkiLength / 2, -BodyHeight / 2 - SkiThickness); - verts[3].Set(SkiLength / 2 + SkiThickness, -BodyHeight / 2); - ski.Set(verts, 4); - - b2FixtureDef fd; - fd.density = 1.0f; - - fd.friction = SkiFriction; - fd.restitution = SkiRestitution; - - fd.shape = &ski; - skier->CreateFixture(&fd); - - skier->SetLinearVelocity(b2Vec2(0.5f, 0.0f)); - - m_skier = skier; - } - - //g_camera.m_center = b2Vec2(m_platform_width / 2.0f, 0.0f); - //g_camera.m_zoom = 0.4f; - m_fixed_camera = true; - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_C: - m_fixed_camera = !m_fixed_camera; - if(m_fixed_camera) - { - // g_camera.m_center = b2Vec2(m_platform_width / 2.0f, 0.0f); - } - break; - } - } - - void Step(Settings& settings) override - { - DrawString(5, m_textLine, "Keys: c = Camera fixed/tracking"); - - - if(!m_fixed_camera) - { - //g_camera.m_center = m_skier->GetPosition(); - } - - Test::Step(settings); - } - - static Test* Create() - { - return new Skier; - } - - b2Body* m_skier; - float m_platform_width; - bool m_fixed_camera; + Skier() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + float const PlatformWidth = 8.0f; + + /* + First angle is from the horizontal and should be negative for a downward slope. + Second angle is relative to the preceding slope, and should be positive, creating a kind of + loose 'Z'-shape from the 3 edges. + If A1 = -10, then A2 <= ~1.5 will result in the collision glitch. + If A1 = -30, then A2 <= ~10.0 will result in the glitch. + */ + float const Angle1Degrees = -30.0f; + float const Angle2Degrees = 10.0f; + + /* + The larger the value of SlopeLength, the less likely the glitch will show up. + */ + float const SlopeLength = 2.0f; + + float const SurfaceFriction = 0.2f; + + // Convert to radians + float const Slope1Incline = -Angle1Degrees * b2_pi / 180.0f; + float const Slope2Incline = Slope1Incline - Angle2Degrees * b2_pi / 180.0f; + // + + m_platform_width = PlatformWidth; + + // Horizontal platform + b2Vec2 v1(-PlatformWidth, 0.0f); + b2Vec2 v2(0.0f, 0.0f); + b2Vec2 v3(SlopeLength * cosf(Slope1Incline), -SlopeLength * sinf(Slope1Incline)); + b2Vec2 v4(v3.x + SlopeLength * cosf(Slope2Incline), v3.y - SlopeLength * sinf(Slope2Incline)); + b2Vec2 v5(v4.x, v4.y - 1.0f); + + b2Vec2 vertices[5] = {v5, v4, v3, v2, v1}; + + b2ChainShape shape; + shape.CreateLoop(vertices, 5); + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 0.0f; + fd.friction = SurfaceFriction; + + ground->CreateFixture(&fd); + } + + { + float const BodyWidth = 1.0f; + float const BodyHeight = 2.5f; + float const SkiLength = 3.0f; + + /* + Larger values for this seem to alleviate the issue to some extent. + */ + float const SkiThickness = 0.3f; + + float const SkiFriction = 0.0f; + float const SkiRestitution = 0.15f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + float initial_y = BodyHeight / 2 + SkiThickness; + bd.position.Set(-m_platform_width / 2, initial_y); + + b2Body* skier = m_world->CreateBody(&bd); + + b2PolygonShape ski; + b2Vec2 verts[4]; + verts[0].Set(-SkiLength / 2 - SkiThickness, -BodyHeight / 2); + verts[1].Set(-SkiLength / 2, -BodyHeight / 2 - SkiThickness); + verts[2].Set(SkiLength / 2, -BodyHeight / 2 - SkiThickness); + verts[3].Set(SkiLength / 2 + SkiThickness, -BodyHeight / 2); + ski.Set(verts, 4); + + b2FixtureDef fd; + fd.density = 1.0f; + + fd.friction = SkiFriction; + fd.restitution = SkiRestitution; + + fd.shape = &ski; + skier->CreateFixture(&fd); + + skier->SetLinearVelocity(b2Vec2(0.5f, 0.0f)); + + m_skier = skier; + } + + // g_camera.m_center = b2Vec2(m_platform_width / 2.0f, 0.0f); + // g_camera.m_zoom = 0.4f; + m_fixed_camera = true; + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_C: + m_fixed_camera = !m_fixed_camera; + if (m_fixed_camera) + { + // g_camera.m_center = b2Vec2(m_platform_width / 2.0f, 0.0f); + } + break; + } + } + + void Step(Settings& settings) override + { + DrawString(5, m_textLine, "Keys: c = Camera fixed/tracking"); + + if (!m_fixed_camera) + { + // g_camera.m_center = m_skier->GetPosition(); + } + + Test::Step(settings); + } + + static Test* Create() { return new Skier; } + + b2Body* m_skier; + float m_platform_width; + bool m_fixed_camera; }; static int testIndex = RegisterTest("Bugs", "Skier", Skier::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_1.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_1.cpp index 395b93939edb..e09e8ade1992 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_1.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_1.cpp @@ -26,81 +26,78 @@ class SliderCrank1 : public Test { public: - SliderCrank1() - { - b2Body* ground = NULL; - { - b2BodyDef bd; + SliderCrank1() + { + b2Body* ground = NULL; + { + b2BodyDef bd; bd.position.Set(0.0f, 17.0f); - ground = m_world->CreateBody(&bd); - } - - { - b2Body* prevBody = ground; - - // Define crank. - { - b2PolygonShape shape; - shape.SetAsBox(4.0f, 1.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-8.0f, 20.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(-12.0f, 20.0f)); - m_world->CreateJoint(&rjd); - - prevBody = body; - } - - // Define connecting rod - { - b2PolygonShape shape; - shape.SetAsBox(8.0f, 1.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(4.0f, 20.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(-4.0f, 20.0f)); - m_world->CreateJoint(&rjd); - - prevBody = body; - } - - // Define piston - { - b2PolygonShape shape; - shape.SetAsBox(3.0f, 3.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.position.Set(12.0f, 20.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(12.0f, 20.0f)); - m_world->CreateJoint(&rjd); - - b2PrismaticJointDef pjd; - pjd.Initialize(ground, body, b2Vec2(12.0f, 17.0f), b2Vec2(1.0f, 0.0f)); - m_world->CreateJoint(&pjd); - } - } - } - - static Test* Create() - { - return new SliderCrank1; - } + ground = m_world->CreateBody(&bd); + } + + { + b2Body* prevBody = ground; + + // Define crank. + { + b2PolygonShape shape; + shape.SetAsBox(4.0f, 1.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-8.0f, 20.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(-12.0f, 20.0f)); + m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define connecting rod + { + b2PolygonShape shape; + shape.SetAsBox(8.0f, 1.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(4.0f, 20.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(-4.0f, 20.0f)); + m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define piston + { + b2PolygonShape shape; + shape.SetAsBox(3.0f, 3.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.position.Set(12.0f, 20.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(12.0f, 20.0f)); + m_world->CreateJoint(&rjd); + + b2PrismaticJointDef pjd; + pjd.Initialize(ground, body, b2Vec2(12.0f, 17.0f), b2Vec2(1.0f, 0.0f)); + m_world->CreateJoint(&pjd); + } + } + } + + static Test* Create() { return new SliderCrank1; } }; static int testIndex = RegisterTest("Examples", "Slider Crank 1", SliderCrank1::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_2.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_2.cpp index 22119e803a16..f55a05859cf6 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_2.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/slider_crank_2.cpp @@ -28,133 +28,129 @@ class SliderCrank2 : public Test { public: - SliderCrank2() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2Body* prevBody = ground; - - // Define crank. - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 2.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 7.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(0.0f, 5.0f)); - rjd.motorSpeed = 1.0f * b2_pi; - rjd.maxMotorTorque = 10000.0f; - rjd.enableMotor = true; - m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); - - prevBody = body; - } - - // Define follower. - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 4.0f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 13.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(0.0f, 9.0f)); - rjd.enableMotor = false; - m_world->CreateJoint(&rjd); - - prevBody = body; - } - - // Define piston - { - b2PolygonShape shape; - shape.SetAsBox(1.5f, 1.5f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.fixedRotation = true; - bd.position.Set(0.0f, 17.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - - b2RevoluteJointDef rjd; - rjd.Initialize(prevBody, body, b2Vec2(0.0f, 17.0f)); - m_world->CreateJoint(&rjd); - - b2PrismaticJointDef pjd; - pjd.Initialize(ground, body, b2Vec2(0.0f, 17.0f), b2Vec2(0.0f, 1.0f)); - - pjd.maxMotorForce = 1000.0f; - pjd.enableMotor = true; - - m_joint2 = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); - } - - // Create a payload - { - b2PolygonShape shape; - shape.SetAsBox(1.5f, 1.5f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 23.0f); - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 2.0f); - } - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_F: - m_joint2->EnableMotor(!m_joint2->IsMotorEnabled()); - m_joint2->GetBodyB()->SetAwake(true); - break; - - case GLFW_KEY_M: - m_joint1->EnableMotor(!m_joint1->IsMotorEnabled()); - m_joint1->GetBodyB()->SetAwake(true); - break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - DrawString(5, m_textLine, "Keys: (f) toggle friction, (m) toggle motor"); - - float torque = m_joint1->GetMotorTorque(settings.m_hertz); - DrawString(5, m_textLine, "Motor Torque = %5.0f", (float) torque); - - } - - static Test* Create() - { - return new SliderCrank2; - } - - b2RevoluteJoint* m_joint1; - b2PrismaticJoint* m_joint2; + SliderCrank2() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Body* prevBody = ground; + + // Define crank. + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 2.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 7.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 5.0f)); + rjd.motorSpeed = 1.0f * b2_pi; + rjd.maxMotorTorque = 10000.0f; + rjd.enableMotor = true; + m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define follower. + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 4.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 13.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 9.0f)); + rjd.enableMotor = false; + m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define piston + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.position.Set(0.0f, 17.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 17.0f)); + m_world->CreateJoint(&rjd); + + b2PrismaticJointDef pjd; + pjd.Initialize(ground, body, b2Vec2(0.0f, 17.0f), b2Vec2(0.0f, 1.0f)); + + pjd.maxMotorForce = 1000.0f; + pjd.enableMotor = true; + + m_joint2 = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); + } + + // Create a payload + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 23.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + } + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_F: + m_joint2->EnableMotor(!m_joint2->IsMotorEnabled()); + m_joint2->GetBodyB()->SetAwake(true); + break; + + case GLFW_KEY_M: + m_joint1->EnableMotor(!m_joint1->IsMotorEnabled()); + m_joint1->GetBodyB()->SetAwake(true); + break; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + DrawString(5, m_textLine, "Keys: (f) toggle friction, (m) toggle motor"); + + float torque = m_joint1->GetMotorTorque(settings.m_hertz); + DrawString(5, m_textLine, "Motor Torque = %5.0f", (float)torque); + } + + static Test* Create() { return new SliderCrank2; } + + b2RevoluteJoint* m_joint1; + b2PrismaticJoint* m_joint2; }; static int testIndex = RegisterTest("Examples", "Slider Crank 2", SliderCrank2::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/test.h b/tests/cpp-tests/Classes/Box2DTestBed/tests/test.h index 0d81acaa7221..f2a465e72925 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/test.h +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/test.h @@ -1,20 +1,20 @@ /* -* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ + * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ #ifndef TEST_H #define TEST_H @@ -27,123 +27,121 @@ class Test; struct Settings; -#define RAND_LIMIT 32767 +#define RAND_LIMIT 32767 #define DRAW_STRING_NEW_LINE 25 /// Random number in range [-1,1] inline float RandomFloat() { - float r = (float)(std::rand() & (RAND_LIMIT)); - r /= RAND_LIMIT; - r = 2.0f * r - 1.0f; - return r; + float r = (float)(std::rand() & (RAND_LIMIT)); + r /= RAND_LIMIT; + r = 2.0f * r - 1.0f; + return r; } /// Random floating point number in range [lo, hi] inline float RandomFloat(float lo, float hi) { - float r = (float)(std::rand() & (RAND_LIMIT)); - r /= RAND_LIMIT; - r = (hi - lo) * r + lo; - return r; + float r = (float)(std::rand() & (RAND_LIMIT)); + r /= RAND_LIMIT; + r = (hi - lo) * r + lo; + return r; } - // This is called when a joint in the world is implicitly destroyed // because an attached body is destroyed. This gives us a chance to // nullify the mouse joint. class DestructionListener : public b2DestructionListener { public: - void SayGoodbye(b2Fixture* fixture) { B2_NOT_USED(fixture); } - void SayGoodbye(b2Joint* joint); + void SayGoodbye(b2Fixture* fixture) { B2_NOT_USED(fixture); } + void SayGoodbye(b2Joint* joint); - Test* test; + Test* test; }; const int32 k_maxContactPoints = 2048; struct ContactPoint { - b2Fixture* fixtureA; - b2Fixture* fixtureB; - b2Vec2 normal; - b2Vec2 position; - b2PointState state; - float normalImpulse; - float tangentImpulse; - float separation; + b2Fixture* fixtureA; + b2Fixture* fixtureB; + b2Vec2 normal; + b2Vec2 position; + b2PointState state; + float normalImpulse; + float tangentImpulse; + float separation; }; class Test : public b2ContactListener { public: - - Test(); - virtual ~Test(); - - void DrawTitle(const char* string); - virtual void Step(Settings& settings); - virtual void UpdateUI() {} - virtual void Keyboard(int key) { B2_NOT_USED(key); } - virtual void KeyboardUp(int key) { B2_NOT_USED(key); } - void ShiftMouseDown(const b2Vec2& p); - virtual bool MouseDown(const b2Vec2& p); - virtual void MouseUp(const b2Vec2& p); - virtual void MouseMove(const b2Vec2& p); - void LaunchBomb(); - void LaunchBomb(const b2Vec2& position, const b2Vec2& velocity); - - void SpawnBomb(const b2Vec2& worldPt); - void CompleteBombSpawn(const b2Vec2& p); - - // Let derived tests know that a joint was destroyed. - virtual void JointDestroyed(b2Joint* joint) { B2_NOT_USED(joint); } - - // Callbacks for derived classes. - virtual void BeginContact(b2Contact* contact) override { B2_NOT_USED(contact); } - virtual void EndContact(b2Contact* contact) override { B2_NOT_USED(contact); } - virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override; - virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) override - { - B2_NOT_USED(contact); - B2_NOT_USED(impulse); - } - - void ShiftOrigin(const b2Vec2& newOrigin); - - void initShader(void); - void DrawString(int x, int y, const char* fmt, ...); - void DrawString(const b2Vec2& p, const char* fmt, ...); - void DrawAABB(b2AABB* aabb, const b2Color& color); - void Flush(); - - cocos2d::extension::PhysicsDebugNodeBox2D g_debugDraw; - cocos2d::DrawNode* debugDrawNode; - std::string debugString = ""; - - b2World* m_world; + Test(); + virtual ~Test(); + + void DrawTitle(const char* string); + virtual void Step(Settings& settings); + virtual void UpdateUI() {} + virtual void Keyboard(int key) { B2_NOT_USED(key); } + virtual void KeyboardUp(int key) { B2_NOT_USED(key); } + void ShiftMouseDown(const b2Vec2& p); + virtual bool MouseDown(const b2Vec2& p); + virtual void MouseUp(const b2Vec2& p); + virtual void MouseMove(const b2Vec2& p); + void LaunchBomb(); + void LaunchBomb(const b2Vec2& position, const b2Vec2& velocity); + + void SpawnBomb(const b2Vec2& worldPt); + void CompleteBombSpawn(const b2Vec2& p); + + // Let derived tests know that a joint was destroyed. + virtual void JointDestroyed(b2Joint* joint) { B2_NOT_USED(joint); } + + // Callbacks for derived classes. + virtual void BeginContact(b2Contact* contact) override { B2_NOT_USED(contact); } + virtual void EndContact(b2Contact* contact) override { B2_NOT_USED(contact); } + virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) override; + virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) override + { + B2_NOT_USED(contact); + B2_NOT_USED(impulse); + } + + void ShiftOrigin(const b2Vec2& newOrigin); + + void initShader(void); + void DrawString(int x, int y, const char* fmt, ...); + void DrawString(const b2Vec2& p, const char* fmt, ...); + void DrawAABB(b2AABB* aabb, const b2Color& color); + void Flush(); + + cocos2d::extension::PhysicsDebugNodeBox2D g_debugDraw; + cocos2d::DrawNode* debugDrawNode; + std::string debugString = ""; + + b2World* m_world; protected: - friend class DestructionListener; - friend class BoundaryListener; - friend class ContactListener; - - b2Body* m_groundBody; - b2AABB m_worldAABB; - ContactPoint m_points[k_maxContactPoints]; - int32 m_pointCount; - DestructionListener m_destructionListener; - int32 m_textLine; - - b2Body* m_bomb; - b2MouseJoint* m_mouseJoint; - b2Vec2 m_bombSpawnPoint; - bool m_bombSpawning; - b2Vec2 m_mouseWorld; - int32 m_stepCount; - int32 m_textIncrement; - b2Profile m_maxProfile; - b2Profile m_totalProfile; + friend class DestructionListener; + friend class BoundaryListener; + friend class ContactListener; + + b2Body* m_groundBody; + b2AABB m_worldAABB; + ContactPoint m_points[k_maxContactPoints]; + int32 m_pointCount; + DestructionListener m_destructionListener; + int32 m_textLine; + + b2Body* m_bomb; + b2MouseJoint* m_mouseJoint; + b2Vec2 m_bombSpawnPoint; + bool m_bombSpawning; + b2Vec2 m_mouseWorld; + int32 m_stepCount; + int32 m_textIncrement; + b2Profile m_maxProfile; + b2Profile m_totalProfile; }; typedef Test* TestCreateFcn(); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/theo_jansen.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/theo_jansen.cpp index 4ff62c7a5d30..cab814037c1c 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/theo_jansen.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/theo_jansen.cpp @@ -28,239 +28,234 @@ class TheoJansen : public Test { public: - - void CreateLeg(float s, const b2Vec2& wheelAnchor) - { - b2Vec2 p1(5.4f * s, -6.1f); - b2Vec2 p2(7.2f * s, -1.2f); - b2Vec2 p3(4.3f * s, -1.9f); - b2Vec2 p4(3.1f * s, 0.8f); - b2Vec2 p5(6.0f * s, 1.5f); - b2Vec2 p6(2.5f * s, 3.7f); - - b2FixtureDef fd1, fd2; - fd1.filter.groupIndex = -1; - fd2.filter.groupIndex = -1; - fd1.density = 1.0f; - fd2.density = 1.0f; - - b2PolygonShape poly1, poly2; - - if (s > 0.0f) - { - b2Vec2 vertices[3]; - - vertices[0] = p1; - vertices[1] = p2; - vertices[2] = p3; - poly1.Set(vertices, 3); - - vertices[0] = b2Vec2_zero; - vertices[1] = p5 - p4; - vertices[2] = p6 - p4; - poly2.Set(vertices, 3); - } - else - { - b2Vec2 vertices[3]; - - vertices[0] = p1; - vertices[1] = p3; - vertices[2] = p2; - poly1.Set(vertices, 3); - - vertices[0] = b2Vec2_zero; - vertices[1] = p6 - p4; - vertices[2] = p5 - p4; - poly2.Set(vertices, 3); - } - - fd1.shape = &poly1; - fd2.shape = &poly2; - - b2BodyDef bd1, bd2; - bd1.type = b2_dynamicBody; - bd2.type = b2_dynamicBody; - bd1.position = m_offset; - bd2.position = p4 + m_offset; - - bd1.angularDamping = 10.0f; - bd2.angularDamping = 10.0f; - - b2Body* body1 = m_world->CreateBody(&bd1); - b2Body* body2 = m_world->CreateBody(&bd2); - - body1->CreateFixture(&fd1); - body2->CreateFixture(&fd2); - - { - b2DistanceJointDef jd; - - // Using a soft distance constraint can reduce some jitter. - // It also makes the structure seem a bit more fluid by - // acting like a suspension system. - float dampingRatio = 0.5f; - float frequencyHz = 10.0f; - - jd.Initialize(body1, body2, p2 + m_offset, p5 + m_offset); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_world->CreateJoint(&jd); - - jd.Initialize(body1, body2, p3 + m_offset, p4 + m_offset); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_world->CreateJoint(&jd); - - jd.Initialize(body1, m_wheel, p3 + m_offset, wheelAnchor + m_offset); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_world->CreateJoint(&jd); - - jd.Initialize(body2, m_wheel, p6 + m_offset, wheelAnchor + m_offset); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_world->CreateJoint(&jd); - } - - { - b2RevoluteJointDef jd; - jd.Initialize(body2, m_chassis, p4 + m_offset); - m_world->CreateJoint(&jd); - } - } - - TheoJansen() - { - m_offset.Set(0.0f, 8.0f); - m_motorSpeed = 2.0f; - m_motorOn = true; - b2Vec2 pivot(0.0f, 0.8f); - - // Ground - { - b2BodyDef bd; - b2Body* ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(-50.0f, 10.0f)); - ground->CreateFixture(&shape, 0.0f); - - shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(50.0f, 10.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - // Balls - for (int32 i = 0; i < 40; ++i) - { - b2CircleShape shape; - shape.m_radius = 0.25f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(-40.0f + 2.0f * i, 0.5f); - - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 1.0f); - } - - // Chassis - { - b2PolygonShape shape; - shape.SetAsBox(2.5f, 1.0f); - - b2FixtureDef sd; - sd.density = 1.0f; - sd.shape = &shape; - sd.filter.groupIndex = -1; - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = pivot + m_offset; - m_chassis = m_world->CreateBody(&bd); - m_chassis->CreateFixture(&sd); - } - - { - b2CircleShape shape; - shape.m_radius = 1.6f; - - b2FixtureDef sd; - sd.density = 1.0f; - sd.shape = &shape; - sd.filter.groupIndex = -1; - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = pivot + m_offset; - m_wheel = m_world->CreateBody(&bd); - m_wheel->CreateFixture(&sd); - } - - { - b2RevoluteJointDef jd; - jd.Initialize(m_wheel, m_chassis, pivot + m_offset); - jd.collideConnected = false; - jd.motorSpeed = m_motorSpeed; - jd.maxMotorTorque = 400.0f; - jd.enableMotor = m_motorOn; - m_motorJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - } - - b2Vec2 wheelAnchor; - - wheelAnchor = pivot + b2Vec2(0.0f, -0.8f); - - CreateLeg(-1.0f, wheelAnchor); - CreateLeg(1.0f, wheelAnchor); - - m_wheel->SetTransform(m_wheel->GetPosition(), 120.0f * b2_pi / 180.0f); - CreateLeg(-1.0f, wheelAnchor); - CreateLeg(1.0f, wheelAnchor); - - m_wheel->SetTransform(m_wheel->GetPosition(), -120.0f * b2_pi / 180.0f); - CreateLeg(-1.0f, wheelAnchor); - CreateLeg(1.0f, wheelAnchor); - } - - void Step(Settings& settings) override - { - DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, toggle motor = m"); - - - Test::Step(settings); - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_A: - m_motorJoint->SetMotorSpeed(-m_motorSpeed); - break; - - case GLFW_KEY_S: - m_motorJoint->SetMotorSpeed(0.0f); - break; - - case GLFW_KEY_D: - m_motorJoint->SetMotorSpeed(m_motorSpeed); - break; - - case GLFW_KEY_M: - m_motorJoint->EnableMotor(!m_motorJoint->IsMotorEnabled()); - break; - } - } - - static Test* Create() - { - return new TheoJansen; - } - - b2Vec2 m_offset; - b2Body* m_chassis; - b2Body* m_wheel; - b2RevoluteJoint* m_motorJoint; - bool m_motorOn; - float m_motorSpeed; + void CreateLeg(float s, const b2Vec2& wheelAnchor) + { + b2Vec2 p1(5.4f * s, -6.1f); + b2Vec2 p2(7.2f * s, -1.2f); + b2Vec2 p3(4.3f * s, -1.9f); + b2Vec2 p4(3.1f * s, 0.8f); + b2Vec2 p5(6.0f * s, 1.5f); + b2Vec2 p6(2.5f * s, 3.7f); + + b2FixtureDef fd1, fd2; + fd1.filter.groupIndex = -1; + fd2.filter.groupIndex = -1; + fd1.density = 1.0f; + fd2.density = 1.0f; + + b2PolygonShape poly1, poly2; + + if (s > 0.0f) + { + b2Vec2 vertices[3]; + + vertices[0] = p1; + vertices[1] = p2; + vertices[2] = p3; + poly1.Set(vertices, 3); + + vertices[0] = b2Vec2_zero; + vertices[1] = p5 - p4; + vertices[2] = p6 - p4; + poly2.Set(vertices, 3); + } + else + { + b2Vec2 vertices[3]; + + vertices[0] = p1; + vertices[1] = p3; + vertices[2] = p2; + poly1.Set(vertices, 3); + + vertices[0] = b2Vec2_zero; + vertices[1] = p6 - p4; + vertices[2] = p5 - p4; + poly2.Set(vertices, 3); + } + + fd1.shape = &poly1; + fd2.shape = &poly2; + + b2BodyDef bd1, bd2; + bd1.type = b2_dynamicBody; + bd2.type = b2_dynamicBody; + bd1.position = m_offset; + bd2.position = p4 + m_offset; + + bd1.angularDamping = 10.0f; + bd2.angularDamping = 10.0f; + + b2Body* body1 = m_world->CreateBody(&bd1); + b2Body* body2 = m_world->CreateBody(&bd2); + + body1->CreateFixture(&fd1); + body2->CreateFixture(&fd2); + + { + b2DistanceJointDef jd; + + // Using a soft distance constraint can reduce some jitter. + // It also makes the structure seem a bit more fluid by + // acting like a suspension system. + float dampingRatio = 0.5f; + float frequencyHz = 10.0f; + + jd.Initialize(body1, body2, p2 + m_offset, p5 + m_offset); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_world->CreateJoint(&jd); + + jd.Initialize(body1, body2, p3 + m_offset, p4 + m_offset); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_world->CreateJoint(&jd); + + jd.Initialize(body1, m_wheel, p3 + m_offset, wheelAnchor + m_offset); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_world->CreateJoint(&jd); + + jd.Initialize(body2, m_wheel, p6 + m_offset, wheelAnchor + m_offset); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_world->CreateJoint(&jd); + } + + { + b2RevoluteJointDef jd; + jd.Initialize(body2, m_chassis, p4 + m_offset); + m_world->CreateJoint(&jd); + } + } + + TheoJansen() + { + m_offset.Set(0.0f, 8.0f); + m_motorSpeed = 2.0f; + m_motorOn = true; + b2Vec2 pivot(0.0f, 0.8f); + + // Ground + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(b2Vec2(-50.0f, 0.0f), b2Vec2(-50.0f, 10.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.SetTwoSided(b2Vec2(50.0f, 0.0f), b2Vec2(50.0f, 10.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Balls + for (int32 i = 0; i < 40; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-40.0f + 2.0f * i, 0.5f); + + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + } + + // Chassis + { + b2PolygonShape shape; + shape.SetAsBox(2.5f, 1.0f); + + b2FixtureDef sd; + sd.density = 1.0f; + sd.shape = &shape; + sd.filter.groupIndex = -1; + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = pivot + m_offset; + m_chassis = m_world->CreateBody(&bd); + m_chassis->CreateFixture(&sd); + } + + { + b2CircleShape shape; + shape.m_radius = 1.6f; + + b2FixtureDef sd; + sd.density = 1.0f; + sd.shape = &shape; + sd.filter.groupIndex = -1; + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = pivot + m_offset; + m_wheel = m_world->CreateBody(&bd); + m_wheel->CreateFixture(&sd); + } + + { + b2RevoluteJointDef jd; + jd.Initialize(m_wheel, m_chassis, pivot + m_offset); + jd.collideConnected = false; + jd.motorSpeed = m_motorSpeed; + jd.maxMotorTorque = 400.0f; + jd.enableMotor = m_motorOn; + m_motorJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + b2Vec2 wheelAnchor; + + wheelAnchor = pivot + b2Vec2(0.0f, -0.8f); + + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + + m_wheel->SetTransform(m_wheel->GetPosition(), 120.0f * b2_pi / 180.0f); + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + + m_wheel->SetTransform(m_wheel->GetPosition(), -120.0f * b2_pi / 180.0f); + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + } + + void Step(Settings& settings) override + { + DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, toggle motor = m"); + + Test::Step(settings); + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_A: + m_motorJoint->SetMotorSpeed(-m_motorSpeed); + break; + + case GLFW_KEY_S: + m_motorJoint->SetMotorSpeed(0.0f); + break; + + case GLFW_KEY_D: + m_motorJoint->SetMotorSpeed(m_motorSpeed); + break; + + case GLFW_KEY_M: + m_motorJoint->EnableMotor(!m_motorJoint->IsMotorEnabled()); + break; + } + } + + static Test* Create() { return new TheoJansen; } + + b2Vec2 m_offset; + b2Body* m_chassis; + b2Body* m_wheel; + b2RevoluteJoint* m_motorJoint; + bool m_motorOn; + float m_motorSpeed; }; static int testIndex = RegisterTest("Examples", "Theo Jansen", TheoJansen::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/tiles.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/tiles.cpp index 945786219669..e5b9b5dd5f40 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/tiles.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/tiles.cpp @@ -27,133 +27,127 @@ class Tiles : public Test { public: - enum - { - e_count = 20 - }; - - Tiles() - { - m_fixtureCount = 0; - b2Timer timer; - - { - float a = 0.5f; - b2BodyDef bd; - bd.position.y = -a; - b2Body* ground = m_world->CreateBody(&bd); + enum + { + e_count = 20 + }; + + Tiles() + { + m_fixtureCount = 0; + b2Timer timer; + + { + float a = 0.5f; + b2BodyDef bd; + bd.position.y = -a; + b2Body* ground = m_world->CreateBody(&bd); #if 1 - int32 N = 200; - int32 M = 10; - b2Vec2 position; - position.y = 0.0f; - for (int32 j = 0; j < M; ++j) - { - position.x = -N * a; - for (int32 i = 0; i < N; ++i) - { - b2PolygonShape shape; - shape.SetAsBox(a, a, position, 0.0f); - ground->CreateFixture(&shape, 0.0f); - ++m_fixtureCount; - position.x += 2.0f * a; - } - position.y -= 2.0f * a; - } + int32 N = 200; + int32 M = 10; + b2Vec2 position; + position.y = 0.0f; + for (int32 j = 0; j < M; ++j) + { + position.x = -N * a; + for (int32 i = 0; i < N; ++i) + { + b2PolygonShape shape; + shape.SetAsBox(a, a, position, 0.0f); + ground->CreateFixture(&shape, 0.0f); + ++m_fixtureCount; + position.x += 2.0f * a; + } + position.y -= 2.0f * a; + } #else - int32 N = 200; - int32 M = 10; - b2Vec2 position; - position.x = -N * a; - for (int32 i = 0; i < N; ++i) - { - position.y = 0.0f; - for (int32 j = 0; j < M; ++j) - { - b2PolygonShape shape; - shape.SetAsBox(a, a, position, 0.0f); - ground->CreateFixture(&shape, 0.0f); - position.y -= 2.0f * a; - } - position.x += 2.0f * a; - } + int32 N = 200; + int32 M = 10; + b2Vec2 position; + position.x = -N * a; + for (int32 i = 0; i < N; ++i) + { + position.y = 0.0f; + for (int32 j = 0; j < M; ++j) + { + b2PolygonShape shape; + shape.SetAsBox(a, a, position, 0.0f); + ground->CreateFixture(&shape, 0.0f); + position.y -= 2.0f * a; + } + position.x += 2.0f * a; + } #endif - } - - { - float a = 0.5f; - b2PolygonShape shape; - shape.SetAsBox(a, a); - - b2Vec2 x(-7.0f, 0.75f); - b2Vec2 y; - b2Vec2 deltaX(0.5625f, 1.25f); - b2Vec2 deltaY(1.125f, 0.0f); - - for (int32 i = 0; i < e_count; ++i) - { - y = x; - - for (int32 j = i; j < e_count; ++j) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position = y; - - //if (i == 0 && j == 0) - //{ - // bd.allowSleep = false; - //} - //else - //{ - // bd.allowSleep = true; - //} - - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 5.0f); - ++m_fixtureCount; - y += deltaY; - } - - x += deltaX; - } - } - - m_createTime = timer.GetMilliseconds(); - } - - void Step(Settings& settings) override - { - const b2ContactManager& cm = m_world->GetContactManager(); - int32 height = cm.m_broadPhase.GetTreeHeight(); - int32 leafCount = cm.m_broadPhase.GetProxyCount(); - int32 minimumNodeCount = 2 * leafCount - 1; - float minimumHeight = ceilf(logf(float(minimumNodeCount)) / logf(2.0f)); - DrawString(5, m_textLine, "dynamic tree height = %d, min = %d", height, int32(minimumHeight)); - - - Test::Step(settings); - - DrawString(5, m_textLine, "create time = %6.2f ms, fixture count = %d", - m_createTime, m_fixtureCount); - - - //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; - - //if (m_stepCount == 400) - //{ - // tree->RebuildBottomUp(); - //} - } - - static Test* Create() - { - return new Tiles; - } - - int32 m_fixtureCount; - float m_createTime; + } + + { + float a = 0.5f; + b2PolygonShape shape; + shape.SetAsBox(a, a); + + b2Vec2 x(-7.0f, 0.75f); + b2Vec2 y; + b2Vec2 deltaX(0.5625f, 1.25f); + b2Vec2 deltaY(1.125f, 0.0f); + + for (int32 i = 0; i < e_count; ++i) + { + y = x; + + for (int32 j = i; j < e_count; ++j) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = y; + + // if (i == 0 && j == 0) + //{ + // bd.allowSleep = false; + // } + // else + //{ + // bd.allowSleep = true; + // } + + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + ++m_fixtureCount; + y += deltaY; + } + + x += deltaX; + } + } + + m_createTime = timer.GetMilliseconds(); + } + + void Step(Settings& settings) override + { + const b2ContactManager& cm = m_world->GetContactManager(); + int32 height = cm.m_broadPhase.GetTreeHeight(); + int32 leafCount = cm.m_broadPhase.GetProxyCount(); + int32 minimumNodeCount = 2 * leafCount - 1; + float minimumHeight = ceilf(logf(float(minimumNodeCount)) / logf(2.0f)); + DrawString(5, m_textLine, "dynamic tree height = %d, min = %d", height, int32(minimumHeight)); + + Test::Step(settings); + + DrawString(5, m_textLine, "create time = %6.2f ms, fixture count = %d", m_createTime, m_fixtureCount); + + // b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; + + // if (m_stepCount == 400) + //{ + // tree->RebuildBottomUp(); + // } + } + + static Test* Create() { return new Tiles; } + + int32 m_fixtureCount; + float m_createTime; }; static int testIndex = RegisterTest("Benchmark", "Tiles", Tiles::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/time_of_impact.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/time_of_impact.cpp index 3face36e2270..f33b53476ddd 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/time_of_impact.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/time_of_impact.cpp @@ -26,90 +26,85 @@ class TimeOfImpact : public Test { public: - TimeOfImpact() - { - m_shapeA.SetAsBox(25.0f, 5.0f); - m_shapeB.SetAsBox(2.5f, 2.5f); - } - - static Test* Create() - { - return new TimeOfImpact; - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - b2Sweep sweepA; - sweepA.c0.Set(24.0f, -60.0f); - sweepA.a0 = 2.95f; - sweepA.c = sweepA.c0; - sweepA.a = sweepA.a0; - sweepA.localCenter.SetZero(); - - b2Sweep sweepB; - sweepB.c0.Set(53.474274f, -50.252514f); - sweepB.a0 = 513.36676f; // - 162.0f * b2_pi; - sweepB.c.Set(54.595478f, -51.083473f); - sweepB.a = 513.62781f; // - 162.0f * b2_pi; - sweepB.localCenter.SetZero(); - - //sweepB.a0 -= 300.0f * b2_pi; - //sweepB.a -= 300.0f * b2_pi; - - b2TOIInput input; - input.proxyA.Set(&m_shapeA, 0); - input.proxyB.Set(&m_shapeB, 0); - input.sweepA = sweepA; - input.sweepB = sweepB; - input.tMax = 1.0f; - - b2TOIOutput output; - - b2TimeOfImpact(&output, &input); - - DrawString(5, m_textLine, "toi = %g", output.t); - - - extern B2_API int32 b2_toiMaxIters, b2_toiMaxRootIters; - DrawString(5, m_textLine, "max toi iters = %d, max root iters = %d", b2_toiMaxIters, b2_toiMaxRootIters); - - - b2Vec2 vertices[b2_maxPolygonVertices]; - - b2Transform transformA; - sweepA.GetTransform(&transformA, 0.0f); - for (int32 i = 0; i < m_shapeA.m_count; ++i) - { - vertices[i] = b2Mul(transformA, m_shapeA.m_vertices[i]); - } - g_debugDraw.DrawPolygon(vertices, m_shapeA.m_count, b2Color(0.9f, 0.9f, 0.9f)); - - b2Transform transformB; - sweepB.GetTransform(&transformB, 0.0f); - - //b2Vec2 localPoint(2.0f, -0.1f); - - for (int32 i = 0; i < m_shapeB.m_count; ++i) - { - vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); - } - g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.5f, 0.9f, 0.5f)); - - sweepB.GetTransform(&transformB, output.t); - for (int32 i = 0; i < m_shapeB.m_count; ++i) - { - vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); - } - g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.5f, 0.7f, 0.9f)); - - sweepB.GetTransform(&transformB, 1.0f); - for (int32 i = 0; i < m_shapeB.m_count; ++i) - { - vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); - } - g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.9f, 0.5f, 0.5f)); + TimeOfImpact() + { + m_shapeA.SetAsBox(25.0f, 5.0f); + m_shapeB.SetAsBox(2.5f, 2.5f); + } + + static Test* Create() { return new TimeOfImpact; } + + void Step(Settings& settings) override + { + Test::Step(settings); + + b2Sweep sweepA; + sweepA.c0.Set(24.0f, -60.0f); + sweepA.a0 = 2.95f; + sweepA.c = sweepA.c0; + sweepA.a = sweepA.a0; + sweepA.localCenter.SetZero(); + + b2Sweep sweepB; + sweepB.c0.Set(53.474274f, -50.252514f); + sweepB.a0 = 513.36676f; // - 162.0f * b2_pi; + sweepB.c.Set(54.595478f, -51.083473f); + sweepB.a = 513.62781f; // - 162.0f * b2_pi; + sweepB.localCenter.SetZero(); + + // sweepB.a0 -= 300.0f * b2_pi; + // sweepB.a -= 300.0f * b2_pi; + + b2TOIInput input; + input.proxyA.Set(&m_shapeA, 0); + input.proxyB.Set(&m_shapeB, 0); + input.sweepA = sweepA; + input.sweepB = sweepB; + input.tMax = 1.0f; + + b2TOIOutput output; + + b2TimeOfImpact(&output, &input); + + DrawString(5, m_textLine, "toi = %g", output.t); + + extern B2_API int32 b2_toiMaxIters, b2_toiMaxRootIters; + DrawString(5, m_textLine, "max toi iters = %d, max root iters = %d", b2_toiMaxIters, b2_toiMaxRootIters); + + b2Vec2 vertices[b2_maxPolygonVertices]; + + b2Transform transformA; + sweepA.GetTransform(&transformA, 0.0f); + for (int32 i = 0; i < m_shapeA.m_count; ++i) + { + vertices[i] = b2Mul(transformA, m_shapeA.m_vertices[i]); + } + g_debugDraw.DrawPolygon(vertices, m_shapeA.m_count, b2Color(0.9f, 0.9f, 0.9f)); + + b2Transform transformB; + sweepB.GetTransform(&transformB, 0.0f); + + // b2Vec2 localPoint(2.0f, -0.1f); + + for (int32 i = 0; i < m_shapeB.m_count; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.5f, 0.9f, 0.5f)); + + sweepB.GetTransform(&transformB, output.t); + for (int32 i = 0; i < m_shapeB.m_count; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.5f, 0.7f, 0.9f)); + + sweepB.GetTransform(&transformB, 1.0f); + for (int32 i = 0; i < m_shapeB.m_count; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.9f, 0.5f, 0.5f)); #if 0 for (float t = 0.0f; t < 1.0f; t += 0.1f) @@ -122,10 +117,10 @@ class TimeOfImpact : public Test g_debugDraw.DrawPolygon(vertices, m_shapeB.m_count, b2Color(0.9f, 0.5f, 0.5f)); } #endif - } + } - b2PolygonShape m_shapeA; - b2PolygonShape m_shapeB; + b2PolygonShape m_shapeA; + b2PolygonShape m_shapeB; }; static int testIndex = RegisterTest("Collision", "Time of Impact", TimeOfImpact::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/tumbler.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/tumbler.cpp index f7972bc777cb..e19ffae13f29 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/tumbler.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/tumbler.cpp @@ -25,78 +25,74 @@ class Tumbler : public Test { public: - - enum - { - e_count = 800 - }; - - Tumbler() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - } - - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.allowSleep = false; - bd.position.Set(0.0f, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.5f, 10.0f, b2Vec2( 10.0f, 0.0f), 0.0); - body->CreateFixture(&shape, 5.0f); - shape.SetAsBox(0.5f, 10.0f, b2Vec2(-10.0f, 0.0f), 0.0); - body->CreateFixture(&shape, 5.0f); - shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, 10.0f), 0.0); - body->CreateFixture(&shape, 5.0f); - shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, -10.0f), 0.0); - body->CreateFixture(&shape, 5.0f); - - b2RevoluteJointDef jd; - jd.bodyA = ground; - jd.bodyB = body; - jd.localAnchorA.Set(0.0f, 10.0f); - jd.localAnchorB.Set(0.0f, 0.0f); - jd.referenceAngle = 0.0f; - jd.motorSpeed = 0.05f * b2_pi; - jd.maxMotorTorque = 1e8f; - jd.enableMotor = true; - m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); - } - - m_count = 0; - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - if (m_count < e_count) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 10.0f); - b2Body* body = m_world->CreateBody(&bd); - - b2PolygonShape shape; - shape.SetAsBox(0.125f, 0.125f); - body->CreateFixture(&shape, 1.0f); - - ++m_count; - } - } - - static Test* Create() - { - return new Tumbler; - } - - b2RevoluteJoint* m_joint; - int32 m_count; + enum + { + e_count = 800 + }; + + Tumbler() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.allowSleep = false; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 10.0f, b2Vec2(10.0f, 0.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(0.5f, 10.0f, b2Vec2(-10.0f, 0.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, 10.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, -10.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + + b2RevoluteJointDef jd; + jd.bodyA = ground; + jd.bodyB = body; + jd.localAnchorA.Set(0.0f, 10.0f); + jd.localAnchorB.Set(0.0f, 0.0f); + jd.referenceAngle = 0.0f; + jd.motorSpeed = 0.05f * b2_pi; + jd.maxMotorTorque = 1e8f; + jd.enableMotor = true; + m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + m_count = 0; + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + if (m_count < e_count) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.125f, 0.125f); + body->CreateFixture(&shape, 1.0f); + + ++m_count; + } + } + + static Test* Create() { return new Tumbler; } + + b2RevoluteJoint* m_joint; + int32 m_count; }; static int testIndex = RegisterTest("Benchmark", "Tumbler", Tumbler::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/web.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/web.cpp index fdacf8aa8034..658bc9f87bc0 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/web.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/web.cpp @@ -26,193 +26,190 @@ class Web : public Test { public: - Web() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.5f); - - b2BodyDef bd; - bd.type = b2_dynamicBody; - - bd.position.Set(-5.0f, 5.0f); - m_bodies[0] = m_world->CreateBody(&bd); - m_bodies[0]->CreateFixture(&shape, 5.0f); - - bd.position.Set(5.0f, 5.0f); - m_bodies[1] = m_world->CreateBody(&bd); - m_bodies[1]->CreateFixture(&shape, 5.0f); - - bd.position.Set(5.0f, 15.0f); - m_bodies[2] = m_world->CreateBody(&bd); - m_bodies[2]->CreateFixture(&shape, 5.0f); - - bd.position.Set(-5.0f, 15.0f); - m_bodies[3] = m_world->CreateBody(&bd); - m_bodies[3]->CreateFixture(&shape, 5.0f); - - b2DistanceJointDef jd; - b2Vec2 p1, p2, d; - - float frequencyHz = 2.0f; - float dampingRatio = 0.0f; - - jd.bodyA = ground; - jd.bodyB = m_bodies[0]; - jd.localAnchorA.Set(-10.0f, 0.0f); - jd.localAnchorB.Set(-0.5f, -0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[0] = m_world->CreateJoint(&jd); - - jd.bodyA = ground; - jd.bodyB = m_bodies[1]; - jd.localAnchorA.Set(10.0f, 0.0f); - jd.localAnchorB.Set(0.5f, -0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[1] = m_world->CreateJoint(&jd); - - jd.bodyA = ground; - jd.bodyB = m_bodies[2]; - jd.localAnchorA.Set(10.0f, 20.0f); - jd.localAnchorB.Set(0.5f, 0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[2] = m_world->CreateJoint(&jd); - - jd.bodyA = ground; - jd.bodyB = m_bodies[3]; - jd.localAnchorA.Set(-10.0f, 20.0f); - jd.localAnchorB.Set(-0.5f, 0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[3] = m_world->CreateJoint(&jd); - - jd.bodyA = m_bodies[0]; - jd.bodyB = m_bodies[1]; - jd.localAnchorA.Set(0.5f, 0.0f); - jd.localAnchorB.Set(-0.5f, 0.0f);; - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[4] = m_world->CreateJoint(&jd); - - jd.bodyA = m_bodies[1]; - jd.bodyB = m_bodies[2]; - jd.localAnchorA.Set(0.0f, 0.5f); - jd.localAnchorB.Set(0.0f, -0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[5] = m_world->CreateJoint(&jd); - - jd.bodyA = m_bodies[2]; - jd.bodyB = m_bodies[3]; - jd.localAnchorA.Set(-0.5f, 0.0f); - jd.localAnchorB.Set(0.5f, 0.0f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[6] = m_world->CreateJoint(&jd); - - jd.bodyA = m_bodies[3]; - jd.bodyB = m_bodies[0]; - jd.localAnchorA.Set(0.0f, -0.5f); - jd.localAnchorB.Set(0.0f, 0.5f); - p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); - p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); - d = p2 - p1; - jd.length = d.Length(); - b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); - m_joints[7] = m_world->CreateJoint(&jd); - } - } - - void Keyboard(int key) override - { - switch (key) - { - case GLFW_KEY_B: - for (int32 i = 0; i < 4; ++i) - { - if (m_bodies[i]) - { - m_world->DestroyBody(m_bodies[i]); - m_bodies[i] = NULL; - break; - } - } - break; - - case GLFW_KEY_J: - for (int32 i = 0; i < 8; ++i) - { - if (m_joints[i]) - { - m_world->DestroyJoint(m_joints[i]); - m_joints[i] = NULL; - break; - } - } - break; - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - DrawString(5, m_textLine, "Press: (b) to delete a body, (j) to delete a joint"); - - } - - void JointDestroyed(b2Joint* joint) override - { - for (int32 i = 0; i < 8; ++i) - { - if (m_joints[i] == joint) - { - m_joints[i] = NULL; - break; - } - } - } - - static Test* Create() - { - return new Web; - } - - b2Body* m_bodies[4]; - b2Joint* m_joints[8]; + Web() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(-5.0f, 5.0f); + m_bodies[0] = m_world->CreateBody(&bd); + m_bodies[0]->CreateFixture(&shape, 5.0f); + + bd.position.Set(5.0f, 5.0f); + m_bodies[1] = m_world->CreateBody(&bd); + m_bodies[1]->CreateFixture(&shape, 5.0f); + + bd.position.Set(5.0f, 15.0f); + m_bodies[2] = m_world->CreateBody(&bd); + m_bodies[2]->CreateFixture(&shape, 5.0f); + + bd.position.Set(-5.0f, 15.0f); + m_bodies[3] = m_world->CreateBody(&bd); + m_bodies[3]->CreateFixture(&shape, 5.0f); + + b2DistanceJointDef jd; + b2Vec2 p1, p2, d; + + float frequencyHz = 2.0f; + float dampingRatio = 0.0f; + + jd.bodyA = ground; + jd.bodyB = m_bodies[0]; + jd.localAnchorA.Set(-10.0f, 0.0f); + jd.localAnchorB.Set(-0.5f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[0] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[1]; + jd.localAnchorA.Set(10.0f, 0.0f); + jd.localAnchorB.Set(0.5f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[1] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[2]; + jd.localAnchorA.Set(10.0f, 20.0f); + jd.localAnchorB.Set(0.5f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[2] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[3]; + jd.localAnchorA.Set(-10.0f, 20.0f); + jd.localAnchorB.Set(-0.5f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[3] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[0]; + jd.bodyB = m_bodies[1]; + jd.localAnchorA.Set(0.5f, 0.0f); + jd.localAnchorB.Set(-0.5f, 0.0f); + ; + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[4] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[1]; + jd.bodyB = m_bodies[2]; + jd.localAnchorA.Set(0.0f, 0.5f); + jd.localAnchorB.Set(0.0f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[5] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[2]; + jd.bodyB = m_bodies[3]; + jd.localAnchorA.Set(-0.5f, 0.0f); + jd.localAnchorB.Set(0.5f, 0.0f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[6] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[3]; + jd.bodyB = m_bodies[0]; + jd.localAnchorA.Set(0.0f, -0.5f); + jd.localAnchorB.Set(0.0f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + b2LinearStiffness(jd.stiffness, jd.damping, frequencyHz, dampingRatio, jd.bodyA, jd.bodyB); + m_joints[7] = m_world->CreateJoint(&jd); + } + } + + void Keyboard(int key) override + { + switch (key) + { + case GLFW_KEY_B: + for (int32 i = 0; i < 4; ++i) + { + if (m_bodies[i]) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + break; + } + } + break; + + case GLFW_KEY_J: + for (int32 i = 0; i < 8; ++i) + { + if (m_joints[i]) + { + m_world->DestroyJoint(m_joints[i]); + m_joints[i] = NULL; + break; + } + } + break; + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + DrawString(5, m_textLine, "Press: (b) to delete a body, (j) to delete a joint"); + } + + void JointDestroyed(b2Joint* joint) override + { + for (int32 i = 0; i < 8; ++i) + { + if (m_joints[i] == joint) + { + m_joints[i] = NULL; + break; + } + } + } + + static Test* Create() { return new Web; } + + b2Body* m_bodies[4]; + b2Joint* m_joints[8]; }; static int testIndex = RegisterTest("Examples", "Web", Web::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/wheel_joint.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/wheel_joint.cpp index 6be76ff26252..0388e757088a 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/wheel_joint.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/wheel_joint.cpp @@ -28,99 +28,94 @@ class WheelJoint : public Test { public: - WheelJoint() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - m_enableLimit = true; - m_enableMotor = false; - m_motorSpeed = 10.0f; - - { - b2CircleShape shape; - shape.m_radius = 2.0f; - - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.0f, 10.0f); - bd.allowSleep = false; - b2Body* body = m_world->CreateBody(&bd); - body->CreateFixture(&shape, 5.0f); - - b2WheelJointDef jd; - - // Horizontal - jd.Initialize(ground, body, bd.position, b2Vec2(0.0f, 1.0f)); - - jd.motorSpeed = m_motorSpeed; - jd.maxMotorTorque = 10000.0f; - jd.enableMotor = m_enableMotor; - jd.lowerTranslation = -3.0f; - jd.upperTranslation = 3.0f; - jd.enableLimit = m_enableLimit; - - float hertz = 1.0f; - float dampingRatio = 0.7f; - b2LinearStiffness(jd.stiffness, jd.damping, hertz, dampingRatio, ground, body); - - m_joint = (b2WheelJoint*)m_world->CreateJoint(&jd); - } - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - float torque = m_joint->GetMotorTorque(settings.m_hertz); - DrawString(5, m_textLine, "Motor Torque = %4.0f", torque); - - - b2Vec2 F = m_joint->GetReactionForce(settings.m_hertz); - DrawString(5, m_textLine, "Reaction Force = (%4.1f, %4.1f)", F.x, F.y); - - } - - void UpdateUI() override - { - //ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Checkbox("Limit", &m_enableLimit)) - { - m_joint->EnableLimit(m_enableLimit); - } - - if (ImGui::Checkbox("Motor", &m_enableMotor)) - { - m_joint->EnableMotor(m_enableMotor); - } - - if (ImGui::SliderFloat("Speed", &m_motorSpeed, -100.0f, 100.0f, "%.0f")) - { - m_joint->SetMotorSpeed(m_motorSpeed); - } - - ImGui::End(); - } - - static Test* Create() - { - return new WheelJoint; - } - - b2WheelJoint* m_joint; - float m_motorSpeed; - bool m_enableMotor; - bool m_enableLimit; + WheelJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + m_enableLimit = true; + m_enableMotor = false; + m_motorSpeed = 10.0f; + + { + b2CircleShape shape; + shape.m_radius = 2.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + b2WheelJointDef jd; + + // Horizontal + jd.Initialize(ground, body, bd.position, b2Vec2(0.0f, 1.0f)); + + jd.motorSpeed = m_motorSpeed; + jd.maxMotorTorque = 10000.0f; + jd.enableMotor = m_enableMotor; + jd.lowerTranslation = -3.0f; + jd.upperTranslation = 3.0f; + jd.enableLimit = m_enableLimit; + + float hertz = 1.0f; + float dampingRatio = 0.7f; + b2LinearStiffness(jd.stiffness, jd.damping, hertz, dampingRatio, ground, body); + + m_joint = (b2WheelJoint*)m_world->CreateJoint(&jd); + } + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + float torque = m_joint->GetMotorTorque(settings.m_hertz); + DrawString(5, m_textLine, "Motor Torque = %4.0f", torque); + + b2Vec2 F = m_joint->GetReactionForce(settings.m_hertz); + DrawString(5, m_textLine, "Reaction Force = (%4.1f, %4.1f)", F.x, F.y); + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(10.0f, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Joint Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Checkbox("Limit", &m_enableLimit)) + { + m_joint->EnableLimit(m_enableLimit); + } + + if (ImGui::Checkbox("Motor", &m_enableMotor)) + { + m_joint->EnableMotor(m_enableMotor); + } + + if (ImGui::SliderFloat("Speed", &m_motorSpeed, -100.0f, 100.0f, "%.0f")) + { + m_joint->SetMotorSpeed(m_motorSpeed); + } + + ImGui::End(); + } + + static Test* Create() { return new WheelJoint; } + + b2WheelJoint* m_joint; + float m_motorSpeed; + bool m_enableMotor; + bool m_enableLimit; }; static int testIndex = RegisterTest("Joints", "Wheel", WheelJoint::Create); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/tests/wrecking_ball.cpp b/tests/cpp-tests/Classes/Box2DTestBed/tests/wrecking_ball.cpp index c1722a61cbb0..4ea57671db63 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/tests/wrecking_ball.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/tests/wrecking_ball.cpp @@ -34,132 +34,128 @@ class WreckingBall : public Test { public: - WreckingBall() - { - b2Body* ground = NULL; - { - b2BodyDef bd; - ground = m_world->CreateBody(&bd); - - b2EdgeShape shape; - shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); - ground->CreateFixture(&shape, 0.0f); - } - - { - b2PolygonShape shape; - shape.SetAsBox(0.5f, 0.125f); - - b2FixtureDef fd; - fd.shape = &shape; - fd.density = 20.0f; - fd.friction = 0.2f; - fd.filter.categoryBits = 0x0001; - fd.filter.maskBits = 0xFFFF & ~0x0002; - - b2RevoluteJointDef jd; - jd.collideConnected = false; - - const int32 N = 10; - const float y = 15.0f; - m_distanceJointDef.localAnchorA.Set(0.0f, y); - - b2Body* prevBody = ground; - for (int32 i = 0; i < N; ++i) - { - b2BodyDef bd; - bd.type = b2_dynamicBody; - bd.position.Set(0.5f + 1.0f * i, y); - if (i == N - 1) - { - bd.position.Set(1.0f * i, y); - bd.angularDamping = 0.4f; - } - - b2Body* body = m_world->CreateBody(&bd); - - if (i == N - 1) - { - b2CircleShape circleShape; - circleShape.m_radius = 1.5f; - b2FixtureDef sfd; - sfd.shape = &circleShape; - sfd.density = 100.0f; - sfd.filter.categoryBits = 0x0002; - body->CreateFixture(&sfd); - } - else - { - body->CreateFixture(&fd); - } - - b2Vec2 anchor(float(i), y); - jd.Initialize(prevBody, body, anchor); - m_world->CreateJoint(&jd); - - prevBody = body; - } - - m_distanceJointDef.localAnchorB.SetZero(); - - float extraLength = 0.01f; - m_distanceJointDef.minLength = 0.0f; - m_distanceJointDef.maxLength = N - 1.0f + extraLength; - m_distanceJointDef.bodyB = prevBody; - } - - { - m_distanceJointDef.bodyA = ground; - m_distanceJoint = m_world->CreateJoint(&m_distanceJointDef); - m_stabilize = true; - } - } - - void UpdateUI() override - { -// ImGui::SetNextWindowPos(ImVec2(Test::g_debugDraw.debugNodeOffset.x, 100.0f)); - ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); - ImGui::Begin("Wrecking Ball Controls", nullptr, ImGuiWindowFlags_NoResize); - - if (ImGui::Checkbox("Stabilize", &m_stabilize)) - { - if (m_stabilize == true && m_distanceJoint == nullptr) - { - m_distanceJoint = m_world->CreateJoint(&m_distanceJointDef); - } - else if (m_stabilize == false && m_distanceJoint != nullptr) - { - m_world->DestroyJoint(m_distanceJoint); - m_distanceJoint = nullptr; - } - } - - ImGui::End(); - } - - void Step(Settings& settings) override - { - Test::Step(settings); - - if (m_distanceJoint) - { - DrawString(5, m_textLine, "Distance Joint ON"); - } - else - { - DrawString(5, m_textLine, "Distance Joint OFF"); - } - - } - - static Test* Create() - { - return new WreckingBall; - } - - b2DistanceJointDef m_distanceJointDef; - b2Joint* m_distanceJoint; - bool m_stabilize; + WreckingBall() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.SetTwoSided(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + fd.filter.categoryBits = 0x0001; + fd.filter.maskBits = 0xFFFF & ~0x0002; + + b2RevoluteJointDef jd; + jd.collideConnected = false; + + const int32 N = 10; + const float y = 15.0f; + m_distanceJointDef.localAnchorA.Set(0.0f, y); + + b2Body* prevBody = ground; + for (int32 i = 0; i < N; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.5f + 1.0f * i, y); + if (i == N - 1) + { + bd.position.Set(1.0f * i, y); + bd.angularDamping = 0.4f; + } + + b2Body* body = m_world->CreateBody(&bd); + + if (i == N - 1) + { + b2CircleShape circleShape; + circleShape.m_radius = 1.5f; + b2FixtureDef sfd; + sfd.shape = &circleShape; + sfd.density = 100.0f; + sfd.filter.categoryBits = 0x0002; + body->CreateFixture(&sfd); + } + else + { + body->CreateFixture(&fd); + } + + b2Vec2 anchor(float(i), y); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + + m_distanceJointDef.localAnchorB.SetZero(); + + float extraLength = 0.01f; + m_distanceJointDef.minLength = 0.0f; + m_distanceJointDef.maxLength = N - 1.0f + extraLength; + m_distanceJointDef.bodyB = prevBody; + } + + { + m_distanceJointDef.bodyA = ground; + m_distanceJoint = m_world->CreateJoint(&m_distanceJointDef); + m_stabilize = true; + } + } + + void UpdateUI() override + { + // ImGui::SetNextWindowPos(ImVec2(Test::g_debugDraw.debugNodeOffset.x, 100.0f)); + ImGui::SetNextWindowSize(ImVec2(200.0f, 100.0f)); + ImGui::Begin("Wrecking Ball Controls", nullptr, ImGuiWindowFlags_NoResize); + + if (ImGui::Checkbox("Stabilize", &m_stabilize)) + { + if (m_stabilize == true && m_distanceJoint == nullptr) + { + m_distanceJoint = m_world->CreateJoint(&m_distanceJointDef); + } + else if (m_stabilize == false && m_distanceJoint != nullptr) + { + m_world->DestroyJoint(m_distanceJoint); + m_distanceJoint = nullptr; + } + } + + ImGui::End(); + } + + void Step(Settings& settings) override + { + Test::Step(settings); + + if (m_distanceJoint) + { + DrawString(5, m_textLine, "Distance Joint ON"); + } + else + { + DrawString(5, m_textLine, "Distance Joint OFF"); + } + } + + static Test* Create() { return new WreckingBall; } + + b2DistanceJointDef m_distanceJointDef; + b2Joint* m_distanceJoint; + bool m_stabilize; }; static int testIndex = RegisterTest("Examples", "Wrecking Ball", WreckingBall::Create); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp index 217b173caa9e..34e10a024421 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,22 +38,21 @@ bool Bug1159Layer::init() auto sprite_a = LayerColor::create(Color4B(255, 0, 0, 255), 700, 700); sprite_a->setAnchorPoint(Vec2(0.5f, 0.5f)); sprite_a->setIgnoreAnchorPointForPosition(false); - sprite_a->setPosition(0.0f, s.height/2); + sprite_a->setPosition(0.0f, s.height / 2); addChild(sprite_a); - sprite_a->runAction(RepeatForever::create(Sequence::create( - MoveTo::create(1.0f, Vec2(1024.0f, 384.0f)), - MoveTo::create(1.0f, Vec2(0.0f, 384.0f)), - nullptr))); + sprite_a->runAction(RepeatForever::create(Sequence::create(MoveTo::create(1.0f, Vec2(1024.0f, 384.0f)), + MoveTo::create(1.0f, Vec2(0.0f, 384.0f)), nullptr))); auto sprite_b = LayerColor::create(Color4B(0, 0, 255, 255), 400, 400); sprite_b->setAnchorPoint(Vec2(0.5f, 0.5f)); sprite_b->setIgnoreAnchorPointForPosition(false); - sprite_b->setPosition(s.width/2, s.height/2); + sprite_b->setPosition(s.width / 2, s.height / 2); addChild(sprite_b); - auto label = MenuItemLabel::create(Label::createWithSystemFont("Flip Me", "Helvetica", 24), CC_CALLBACK_1(Bug1159Layer::callBack, this) ); - auto menu = Menu::create(label, nullptr); + auto label = MenuItemLabel::create(Label::createWithSystemFont("Flip Me", "Helvetica", 24), + CC_CALLBACK_1(Bug1159Layer::callBack, this)); + auto menu = Menu::create(label, nullptr); menu->setPosition(s.width - 200.0f, 50.0f); addChild(menu); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-1159.h b/tests/cpp-tests/Classes/BugsTest/Bug-1159.h index 1a0e5a6a4998..1db64c6c2dd7 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-1159.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-1159.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,11 +32,11 @@ class Bug1159Layer : public BugsTestBase public: virtual bool init() override; virtual void onExit() override; - virtual std::string title() const override { return "Bug1159";} + virtual std::string title() const override { return "Bug1159"; } void callBack(cocos2d::Ref* sender); CREATE_FUNC(Bug1159Layer); }; -#endif // __BUG_1159_H__ +#endif // __BUG_1159_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-1174.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-1174.cpp index 0680e587abe7..7b35bba3aca3 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-1174.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-1174.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,23 +31,23 @@ USING_NS_CC; -int check_for_error( Vec2 p1, Vec2 p2, Vec2 p3, Vec2 p4, float s, float t ); +int check_for_error(Vec2 p1, Vec2 p2, Vec2 p3, Vec2 p4, float s, float t); -int check_for_error( Vec2 p1, Vec2 p2, Vec2 p3, Vec2 p4, float s, float t ) +int check_for_error(Vec2 p1, Vec2 p2, Vec2 p3, Vec2 p4, float s, float t) { // the hit point is p3 + t * (p4 - p3); // the hit point also is p1 + s * (p2 - p1); - - auto p4_p3 = p4 - p3; - auto p4_p3_t = p4_p3 * t; + + auto p4_p3 = p4 - p3; + auto p4_p3_t = p4_p3 * t; auto hitPoint1 = p3 + p4_p3_t; - - auto p2_p1 = p2 - p1; - auto p2_p1_s = p2_p1 * s; + + auto p2_p1 = p2 - p1; + auto p2_p1_s = p2_p1 * s; auto hitPoint2 = p1 + p2_p1_s; - + // Since float has rounding errors, only check if diff is < 0.05 - if( (fabs( hitPoint1.x - hitPoint2.x) > 0.1f) || ( fabs(hitPoint1.y - hitPoint2.y) > 0.1f) ) + if ((fabs(hitPoint1.x - hitPoint2.x) > 0.1f) || (fabs(hitPoint1.y - hitPoint2.y) > 0.1f)) { log("ERROR: (%f,%f) != (%f,%f)", hitPoint1.x, hitPoint1.y, hitPoint2.x, hitPoint2.y); return 1; @@ -60,20 +60,20 @@ bool Bug1174Layer::init() { if (BugsTestBase::init()) { -// // seed -// std::srand(0); - - Vec2 A,B,C,D,p1,p2,p3,p4; - float s,t; - - int err=0; - int ok=0; - + // // seed + // std::srand(0); + + Vec2 A, B, C, D, p1, p2, p3, p4; + float s, t; + + int err = 0; + int ok = 0; + // // Test 1. // log("Test1 - Start"); - for( int i=0; i < 10000; i++) + for (int i = 0; i < 10000; i++) { // A | b // ----- @@ -92,19 +92,20 @@ bool Bug1174Layer::init() // c | d float bx = CCRANDOM_0_1() * 5000; float by = CCRANDOM_0_1() * 5000; - + // a | b // ----- // C | d float cx = CCRANDOM_0_1() * -5000; float cy = CCRANDOM_0_1() * -5000; - - A = Vec2(ax,ay); - B = Vec2(bx,by); - C = Vec2(cx,cy); - D = Vec2(dx,dy); - if( Vec2::isLineIntersect( A, D, B, C, &s, &t) ) { - if( check_for_error(A, D, B, C, s, t) ) + + A = Vec2(ax, ay); + B = Vec2(bx, by); + C = Vec2(cx, cy); + D = Vec2(dx, dy); + if (Vec2::isLineIntersect(A, D, B, C, &s, &t)) + { + if (check_for_error(A, D, B, C, s, t)) err++; else ok++; @@ -116,69 +117,68 @@ bool Bug1174Layer::init() // Test 2. // log("Test2 - Start"); - - p1 = Vec2(220,480); - p2 = Vec2(304,325); - p3 = Vec2(264,416); - p4 = Vec2(186,416); - s = 0.0f; - t = 0.0f; - if( Vec2::isLineIntersect(p1, p2, p3, p4, &s, &t) ) - check_for_error(p1, p2, p3, p4, s,t ); + + p1 = Vec2(220, 480); + p2 = Vec2(304, 325); + p3 = Vec2(264, 416); + p4 = Vec2(186, 416); + s = 0.0f; + t = 0.0f; + if (Vec2::isLineIntersect(p1, p2, p3, p4, &s, &t)) + check_for_error(p1, p2, p3, p4, s, t); log("Test2 - End"); - // // Test 3 // log("Test3 - Start"); - - ok=0; - err=0; - for( int i=0;i<10000;i++) + + ok = 0; + err = 0; + for (int i = 0; i < 10000; i++) { // A | b // ----- // c | d float ax = CCRANDOM_0_1() * -500; float ay = CCRANDOM_0_1() * 500; - p1 = Vec2(ax,ay); - + p1 = Vec2(ax, ay); + // a | b // ----- // c | D float dx = CCRANDOM_0_1() * 500; float dy = CCRANDOM_0_1() * -500; - p2 = Vec2(dx,dy); - - + p2 = Vec2(dx, dy); + ////// - - float y = ay - ((ay - dy) /2.0f); + + float y = ay - ((ay - dy) / 2.0f); // a | b // ----- // C | d float cx = CCRANDOM_0_1() * -500; - p3 = Vec2(cx,y); - + p3 = Vec2(cx, y); + // a | B // ----- // c | d float bx = CCRANDOM_0_1() * 500; - p4 = Vec2(bx,y); + p4 = Vec2(bx, y); s = 0.0f; t = 0.0f; - if( Vec2::isLineIntersect(p1, p2, p3, p4, &s, &t) ) { - if( check_for_error(p1, p2, p3, p4, s,t ) ) + if (Vec2::isLineIntersect(p1, p2, p3, p4, &s, &t)) + { + if (check_for_error(p1, p2, p3, p4, s, t)) err++; else ok++; } } - + log("Test3 - End. OK=%i, err=%i", ok, err); return true; } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-1174.h b/tests/cpp-tests/Classes/BugsTest/Bug-1174.h index 97cdf5291906..d813835e4775 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-1174.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-1174.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,7 @@ class Bug1174Layer : public BugsTestBase CREATE_FUNC(Bug1174Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug1174";} + virtual std::string title() const override { return "Bug1174"; } }; -#endif // __BUG_1174_H__ +#endif // __BUG_1174_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-12847.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-12847.cpp index 0d6ffb0af42c..f3cae71e5950 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-12847.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-12847.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -45,45 +45,44 @@ Bug12847Layer::~Bug12847Layer() Director::getInstance()->setProjection(_projection); } - bool Bug12847Layer::init() { if (BugsTestBase::init()) { Director::getInstance()->setProjection(Director::Projection::_2D); auto _visibleSize = Director::getInstance()->getVisibleSize(); - - //Create with Sprite + + // Create with Sprite { sprite1 = Sprite::create("Images/bug12847_sprite.png"); sprite1->getTexture()->setAliasTexParameters(); - sprite1->setPosition(Vec2(_visibleSize.width/3, 50.0f)); + sprite1->setPosition(Vec2(_visibleSize.width / 3, 50.0f)); this->addChild(sprite1, 1); - + sprite2 = Sprite::create("Images/bug12847_sprite.png"); sprite2->getTexture()->setAliasTexParameters(); sprite2->setPosition(sprite1->getPosition() + Vec2(0.0f, sprite1->getContentSize().height)); this->addChild(sprite2, 1); } - //Create with SpriteFrame + // Create with SpriteFrame { SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Images/bug12847_spriteframe.plist"); - + sprite3 = Sprite::createWithSpriteFrameName("bug12847_sprite2.png"); sprite3->getTexture()->setAliasTexParameters(); - sprite3->setPosition(Vec2(_visibleSize.width * 2/3, 50.0f)); + sprite3->setPosition(Vec2(_visibleSize.width * 2 / 3, 50.0f)); this->addChild(sprite3, 1); - + sprite4 = Sprite::createWithSpriteFrameName("bug12847_sprite2.png"); sprite4->getTexture()->setAliasTexParameters(); sprite4->setPosition(sprite3->getPosition() + Vec2(0.0f, sprite3->getContentSize().height)); this->addChild(sprite4, 1); } - + this->scheduleUpdate(); return true; } - + return false; } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-12847.h b/tests/cpp-tests/Classes/BugsTest/Bug-12847.h index c34ed2e072c7..864b26b3394f 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-12847.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-12847.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,20 +31,19 @@ class Bug12847Layer : public BugsTestBase { public: CREATE_FUNC(Bug12847Layer); - + Bug12847Layer(); virtual ~Bug12847Layer(); virtual bool init() override; - virtual std::string title() const override { return "Bug1287";} - + virtual std::string title() const override { return "Bug1287"; } + protected: virtual void update(float dt) override; virtual void onEnter() override; virtual void onExit() override; - + private: - cocos2d::Sprite* sprite1; cocos2d::Sprite* sprite2; cocos2d::Sprite* sprite3; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp index 326db787d96b..94723fdf4641 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-14327.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -41,9 +41,9 @@ bool Bug14327Layer::init() { if (BugsTestBase::init()) { - auto glview = Director::getInstance()->getOpenGLView(); + auto glview = Director::getInstance()->getOpenGLView(); auto visibleOrigin = glview->getVisibleOrigin(); - auto visibleSize = glview->getVisibleSize(); + auto visibleSize = glview->getVisibleSize(); auto pBg = Sprite::create("Images/HelloWorld.png"); pBg->setPosition(Vec2(visibleOrigin.x + visibleSize.width / 2, visibleOrigin.y + visibleSize.height / 2)); @@ -52,10 +52,10 @@ bool Bug14327Layer::init() _removeTime = time(nullptr) + 20; _TTFShowTime = Label::createWithSystemFont("Edit control will be removed after 00:20!", "Arial", 20); - _TTFShowTime->setPosition(Vec2(visibleOrigin.x + visibleSize.width / 2, visibleOrigin.y + visibleSize.height - 60)); + _TTFShowTime->setPosition( + Vec2(visibleOrigin.x + visibleSize.width / 2, visibleOrigin.y + visibleSize.height - 60)); this->addChild(_TTFShowTime); - auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1); std::string pNormalSprite = "extensions/green_edit.png"; @@ -97,7 +97,8 @@ void Bug14327Layer::editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox) log("editBox %p DidBegin !", editBox); } -void Bug14327Layer::editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction EditBoxEndAction) +void Bug14327Layer::editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, + cocos2d::ui::EditBoxDelegate::EditBoxEndAction EditBoxEndAction) { log("editBox %p DidEnd !", editBox); } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-14327.h b/tests/cpp-tests/Classes/BugsTest/Bug-14327.h index c58d712b6c71..96e1cf157a0a 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-14327.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-14327.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,10 +27,9 @@ #include "BugsTest.h" - #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) -#include "ui/UIEditBox/UIEditBox.h" +# include "ui/UIEditBox/UIEditBox.h" class Bug14327Layer : public BugsTestBase, public cocos2d::ui::EditBoxDelegate { @@ -38,10 +37,12 @@ class Bug14327Layer : public BugsTestBase, public cocos2d::ui::EditBoxDelegate CREATE_FUNC(Bug14327Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug14327";} + virtual std::string title() const override { return "Bug14327"; } virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox) override; - virtual void editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction EditBoxEndAction) override; + virtual void editBoxEditingDidEndWithAction( + cocos2d::ui::EditBox* editBox, + cocos2d::ui::EditBoxDelegate::EditBoxEndAction EditBoxEndAction) override; virtual void editBoxTextChanged(cocos2d::ui::EditBox* editBox, std::string_view text) override; virtual void editBoxReturn(cocos2d::ui::EditBox* editBox) override; @@ -50,7 +51,7 @@ class Bug14327Layer : public BugsTestBase, public cocos2d::ui::EditBoxDelegate private: time_t _removeTime; - cocos2d::Label *_TTFShowTime; + cocos2d::Label* _TTFShowTime; cocos2d::ui::EditBox* _edit; }; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-15594.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-15594.cpp index c53821668ab0..95c3a4011a4d 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-15594.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-15594.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,24 +34,23 @@ #include "Bug-15594.h" - USING_NS_CC; bool Bug15594Layer::init() { - if (BugsTestBase::init()) - { + if (BugsTestBase::init()) + { auto sprite3d = Sprite3D::create("Images/bugs/bug15594.c3t", "Images/bugs/bug15594.jpg"); addChild(sprite3d); auto size = Director::getInstance()->getWinSize(); - sprite3d->setPosition(size/2); + sprite3d->setPosition(size / 2); auto animation = Animation3D::create("Images/bugs/bug15594.c3t"); - auto animate = Animate3D::create(animation); - auto repeat = RepeatForever::create(animate); + auto animate = Animate3D::create(animation); + auto repeat = RepeatForever::create(animate); sprite3d->runAction(repeat); - return true; - } + return true; + } return false; } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-15594.h b/tests/cpp-tests/Classes/BugsTest/Bug-15594.h index abd4abde46b6..d55aa26c559d 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-15594.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-15594.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,7 @@ class Bug15594Layer : public BugsTestBase CREATE_FUNC(Bug15594Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug15594";} + virtual std::string title() const override { return "Bug15594"; } }; #endif /* defined(__cocos2d_tests__Bug_15594__) */ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-15776.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-15776.cpp index 1ea56ddd9e6d..5a3d08c069e3 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-15776.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-15776.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,10 +32,8 @@ #include "Bug-15776.h" - USING_NS_CC; - // // IMPORTANT: // THIS TEST WILL CRASH ON TextureCache::addImage() @@ -46,7 +44,7 @@ bool Bug15776Layer::init() { if (BugsTestBase::init()) { - cocos2d::Image *cocos2dxImage = new cocos2d::Image(); + cocos2d::Image* cocos2dxImage = new cocos2d::Image(); cocos2dxImage->initWithImageData(nullptr, 0, false); // should not crash. invalid cocos2dImage auto texture2d = Director::getInstance()->getTextureCache()->addImage(cocos2dxImage, "unused"); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-15776.h b/tests/cpp-tests/Classes/BugsTest/Bug-15776.h index 97d21f907cb7..3485f8bcf524 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-15776.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-15776.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -46,5 +46,4 @@ class Bug15776Layer : public BugsTestBase virtual std::string subtitle() const override; }; - #endif /* Bug_15776_hpp */ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-350.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-350.cpp index 73e500f95877..f1e4ac21c20c 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-350.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-350.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,7 +23,7 @@ ****************************************************************************/ // -// Bug-350 +// Bug-350 // http://code.google.com/p/cocos2d-iphone/issues/detail?id=350 // @@ -35,9 +35,9 @@ bool Bug350Layer::init() { if (BugsTestBase::init()) { - auto size = Director::getInstance()->getWinSize(); + auto size = Director::getInstance()->getWinSize(); auto background = Sprite::create("Hello.png"); - background->setPosition(size.width/2, size.height/2); + background->setPosition(size.width / 2, size.height / 2); addChild(background); return true; } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-350.h b/tests/cpp-tests/Classes/BugsTest/Bug-350.h index 4e8982f70e34..8f1d5d44a2da 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-350.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-350.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,7 @@ class Bug350Layer : public BugsTestBase CREATE_FUNC(Bug350Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug350";} + virtual std::string title() const override { return "Bug350"; } }; -#endif // __BUG_350_H__ +#endif // __BUG_350_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp index 28b1d56776cb..542ba9a8f433 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -52,21 +52,21 @@ void Bug422Layer::reset() // The menu will be removed, but the instance will be alive // and then a new node will be allocated occupying the memory. // => CRASH BOOM BANG - auto node = getChildByTag(localtag-1); + auto node = getChildByTag(localtag - 1); log("Menu: %p", node); removeChild(node, true); -// [self removeChildByTag:localtag-1 cleanup:NO]; + // [self removeChildByTag:localtag-1 cleanup:NO]; - auto item1 = MenuItemFont::create("One", CC_CALLBACK_1(Bug422Layer::menuCallback, this) ); + auto item1 = MenuItemFont::create("One", CC_CALLBACK_1(Bug422Layer::menuCallback, this)); log("MenuItemFont: %p", item1); - MenuItem *item2 = MenuItemFont::create("Two", CC_CALLBACK_1(Bug422Layer::menuCallback, this) ); - auto menu = Menu::create(item1, item2, nullptr); + MenuItem* item2 = MenuItemFont::create("Two", CC_CALLBACK_1(Bug422Layer::menuCallback, this)); + auto menu = Menu::create(item1, item2, nullptr); menu->alignItemsVertically(); float x = CCRANDOM_0_1() * 50; float y = CCRANDOM_0_1() * 50; - menu->setPosition(menu->getPosition() + Vec2(x,y)); - addChild(menu, 0, localtag); + menu->setPosition(menu->getPosition() + Vec2(x, y)); + addChild(menu, 0, localtag); //[self check:self]; } @@ -74,7 +74,8 @@ void Bug422Layer::reset() void Bug422Layer::check(Node* t) { auto& children = t->getChildren(); - for(const auto &child : children) { + for (const auto& child : children) + { log("%p, rc: %d", child, child->getReferenceCount()); check(child); } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-422.h b/tests/cpp-tests/Classes/BugsTest/Bug-422.h index 21c39580ad2f..dd229fffbf52 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-422.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-422.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,11 +33,11 @@ class Bug422Layer : public BugsTestBase CREATE_FUNC(Bug422Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug422";} + virtual std::string title() const override { return "Bug422"; } void reset(); void check(Node* target); void menuCallback(cocos2d::Ref* sender); }; -#endif // __BUG_422_H__ +#endif // __BUG_422_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp index 4b5db044aecc..eae96810a9d8 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,27 +34,27 @@ USING_NS_CC; bool Bug458Layer::init() { - if(BugsTestBase::init()) + if (BugsTestBase::init()) { // ask director the the window size auto size = Director::getInstance()->getWinSize(); - auto question = new QuestionContainerSprite(); + auto question = new QuestionContainerSprite(); auto question2 = new QuestionContainerSprite(); question->init(); question2->init(); -// [question setContentSize:CGSizeMake(50,50)]; -// [question2 setContentSize:CGSizeMake(50,50)]; - - auto sprite = MenuItemSprite::create(question2, question, CC_CALLBACK_1(Bug458Layer::selectAnswer, this) ); - auto layer = LayerColor::create(Color4B(0,0,255,255), 100, 100); + // [question setContentSize:CGSizeMake(50,50)]; + // [question2 setContentSize:CGSizeMake(50,50)]; + + auto sprite = MenuItemSprite::create(question2, question, CC_CALLBACK_1(Bug458Layer::selectAnswer, this)); + auto layer = LayerColor::create(Color4B(0, 0, 255, 255), 100, 100); question->release(); question2->release(); - auto layer2 = LayerColor::create(Color4B(255,0,0,255), 100, 100); - auto sprite2 = MenuItemSprite::create(layer, layer2, CC_CALLBACK_1(Bug458Layer::selectAnswer, this) ); - auto menu = Menu::create(sprite, sprite2, nullptr); + auto layer2 = LayerColor::create(Color4B(255, 0, 0, 255), 100, 100); + auto sprite2 = MenuItemSprite::create(layer, layer2, CC_CALLBACK_1(Bug458Layer::selectAnswer, this)); + auto menu = Menu::create(sprite, sprite2, nullptr); menu->alignItemsVerticallyWithPadding(100); menu->setPosition(size.width / 2, size.height / 2); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.h b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.h index 59a2509840e9..dc033564ec8a 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -36,4 +36,4 @@ class Bug458Layer : public BugsTestBase void selectAnswer(cocos2d::Ref* sender); }; -#endif // __BUG_458_H__ +#endif // __BUG_458_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp index b5f94bea11c2..e65c5ee32bd2 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,24 +32,24 @@ bool QuestionContainerSprite::init() { if (Sprite::init()) { - //Add label + // Add label auto label = Label::createWithTTF("Answer 1", "fonts/arial.ttf", 12); label->setTag(100); - //Add the background - auto size = Director::getInstance()->getWinSize(); + // Add the background + auto size = Director::getInstance()->getWinSize(); auto corner = Sprite::create("Images/bugs/corner.png"); - int width = size.width * 0.9f - (corner->getContentSize().width * 2); - int height = size.height * 0.15f - (corner->getContentSize().height * 2); + int width = size.width * 0.9f - (corner->getContentSize().width * 2); + int height = size.height * 0.15f - (corner->getContentSize().height * 2); auto layer = LayerColor::create(Color4B(255, 255, 255, 255 * .75), width, height); layer->setPosition(Vec2(-width / 2, -height / 2)); - //First button is blue, - //Second is red - //Used for testing - change later + // First button is blue, + // Second is red + // Used for testing - change later static int a = 0; - + if (a == 0) label->setColor(Color3B::BLUE); else @@ -60,7 +60,8 @@ bool QuestionContainerSprite::init() a++; addChild(layer); - corner->setPosition(Vec2(-(width / 2 + corner->getContentSize().width / 2), -(height / 2 + corner->getContentSize().height / 2))); + corner->setPosition(Vec2(-(width / 2 + corner->getContentSize().width / 2), + -(height / 2 + corner->getContentSize().height / 2))); addChild(corner); auto corner2 = Sprite::create("Images/bugs/corner.png"); @@ -81,25 +82,29 @@ bool QuestionContainerSprite::init() auto edge = Sprite::create("Images/bugs/edge.png"); edge->setScaleX(width); - edge->setPosition(Vec2(corner->getPosition().x + (corner->getContentSize().width / 2) + (width / 2), corner->getPosition().y)); + edge->setPosition(Vec2(corner->getPosition().x + (corner->getContentSize().width / 2) + (width / 2), + corner->getPosition().y)); addChild(edge); - + auto edge2 = Sprite::create("Images/bugs/edge.png"); edge2->setScaleX(width); - edge2->setPosition(Vec2(corner->getPosition().x + (corner->getContentSize().width / 2) + (width / 2), -corner->getPosition().y)); + edge2->setPosition(Vec2(corner->getPosition().x + (corner->getContentSize().width / 2) + (width / 2), + -corner->getPosition().y)); edge2->setFlippedY(true); addChild(edge2); auto edge3 = Sprite::create("Images/bugs/edge.png"); edge3->setRotation(90); edge3->setScaleX(height); - edge3->setPosition(Vec2(corner->getPosition().x, corner->getPosition().y + (corner->getContentSize().height / 2) + (height / 2))); + edge3->setPosition(Vec2(corner->getPosition().x, + corner->getPosition().y + (corner->getContentSize().height / 2) + (height / 2))); addChild(edge3); auto edge4 = Sprite::create("Images/bugs/edge.png"); edge4->setRotation(270); edge4->setScaleX(height); - edge4->setPosition(Vec2(-corner->getPosition().x, corner->getPosition().y + (corner->getContentSize().height / 2) + (height / 2))); + edge4->setPosition(Vec2(-corner->getPosition().x, + corner->getPosition().y + (corner->getContentSize().height / 2) + (height / 2))); addChild(edge4); addChild(label); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.h b/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.h index 6e31c7744818..efc407f95a61 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-458/QuestionContainerSprite.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,10 +27,10 @@ #include "cocos2d.h" -class QuestionContainerSprite : public cocos2d::Sprite +class QuestionContainerSprite : public cocos2d::Sprite { public: virtual bool init() override; }; -#endif // __QUESTION_CONTAINER_SPRITE_H__ +#endif // __QUESTION_CONTAINER_SPRITE_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-624.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-624.cpp index 038423e61316..62967df87240 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-624.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-624.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -43,23 +43,23 @@ Bug624Layer::~Bug624Layer() bool Bug624Layer::init() { - if(BugsTestBase::init()) + if (BugsTestBase::init()) { - auto size = Director::getInstance()->getWinSize(); + auto size = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("Layer1", "fonts/Marker Felt.ttf", 36.0f); - label->setPosition(size.width/2, size.height/2); + label->setPosition(size.width / 2, size.height / 2); addChild(label); - + Device::setAccelerometerEnabled(true); - auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Bug624Layer::onAcceleration, this)); + auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Bug624Layer::onAcceleration, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); schedule(CC_SCHEDULE_SELECTOR(Bug624Layer::switchLayer), 5.0f); return true; } - + return false; } @@ -67,13 +67,13 @@ void Bug624Layer::switchLayer(float dt) { unschedule(CC_SCHEDULE_SELECTOR(Bug624Layer::switchLayer)); - auto scene = Scene::create(); + auto scene = Scene::create(); scene->addChild(Bug624Layer2::create(), 0); Director::getInstance()->replaceScene(TransitionFade::create(2.0f, scene, Color3B::WHITE)); } void Bug624Layer::onAcceleration(Acceleration* acc, Event* event) -{ +{ log("Layer1 accel"); } @@ -89,19 +89,18 @@ Bug624Layer2::~Bug624Layer2() bool Bug624Layer2::init() { - if(BugsTestBase::init()) + if (BugsTestBase::init()) { - auto size = Director::getInstance()->getWinSize(); + auto size = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("Layer2", "fonts/Marker Felt.ttf", 36.0f); - label->setPosition(size.width/2, size.height/2); + label->setPosition(size.width / 2, size.height / 2); addChild(label); - + Device::setAccelerometerEnabled(true); auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Bug624Layer2::onAcceleration, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - + schedule(CC_SCHEDULE_SELECTOR(Bug624Layer2::switchLayer), 5.0f); return true; @@ -114,12 +113,12 @@ void Bug624Layer2::switchLayer(float dt) { unschedule(CC_SCHEDULE_SELECTOR(Bug624Layer::switchLayer)); - auto scene = Scene::create(); + auto scene = Scene::create(); scene->addChild(Bug624Layer::create(), 0); Director::getInstance()->replaceScene(TransitionFade::create(2.0f, scene, Color3B::RED)); } void Bug624Layer2::onAcceleration(Acceleration* acc, Event* event) -{ +{ log("Layer2 accel"); } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-624.h b/tests/cpp-tests/Classes/BugsTest/Bug-624.h index 37aa5a2b5066..f71b73e8a4c3 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-624.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-624.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,7 +34,7 @@ class Bug624Layer : public BugsTestBase virtual bool init() override; void switchLayer(float dt); virtual void onAcceleration(cocos2d::Acceleration* acc, cocos2d::Event* event); - virtual std::string title() const override { return "Bug624";} + virtual std::string title() const override { return "Bug624"; } CREATE_FUNC(Bug624Layer); }; @@ -46,9 +46,9 @@ class Bug624Layer2 : public BugsTestBase virtual bool init() override; void switchLayer(float dt); virtual void onAcceleration(cocos2d::Acceleration* acc, cocos2d::Event* event); - virtual std::string title() const override { return "Bug624-2";} + virtual std::string title() const override { return "Bug624-2"; } CREATE_FUNC(Bug624Layer2); }; -#endif // __BUG_624_H__ +#endif // __BUG_624_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-886.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-886.cpp index c7c1209a873d..9dd133ee0bad 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-886.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-886.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,11 +33,11 @@ USING_NS_CC; bool Bug886Layer::init() { - if(BugsTestBase::init()) + if (BugsTestBase::init()) { // ask director the the window size // auto size = [[Director sharedDirector] winSize]; - + auto sprite = Sprite::create("Images/bugs/bug886.jpg"); sprite->setAnchorPoint(Vec2::ZERO); sprite->setPosition(Vec2::ZERO); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-886.h b/tests/cpp-tests/Classes/BugsTest/Bug-886.h index a3f189373565..aac1e9850cf4 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-886.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-886.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,7 @@ class Bug886Layer : public BugsTestBase CREATE_FUNC(Bug886Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug886";} + virtual std::string title() const override { return "Bug886"; } }; -#endif // __BUG_886_H__ +#endif // __BUG_886_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-899.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-899.cpp index cddfdb0b0d66..f759c4076884 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-899.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-899.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,7 +35,7 @@ USING_NS_CC; bool Bug899Layer::init() { -// Director::getInstance()->enableRetinaDisplay(true); + // Director::getInstance()->enableRetinaDisplay(true); if (BugsTestBase::init()) { auto bg = Sprite::create("Images/bugs/RetinaDisplay.jpg"); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-899.h b/tests/cpp-tests/Classes/BugsTest/Bug-899.h index e61494ffdb2b..37b7bf8d5318 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-899.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-899.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,7 @@ class Bug899Layer : public BugsTestBase CREATE_FUNC(Bug899Layer); virtual bool init() override; - virtual std::string title() const override { return "Bug899";} + virtual std::string title() const override { return "Bug899"; } }; -#endif // __BUG_899_H__ +#endif // __BUG_899_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp index f80774c7d1a9..bd1d4b61ed6c 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,7 +23,7 @@ ****************************************************************************/ // Import the interfaces -#include"Bug-914.h" +#include "Bug-914.h" USING_NS_CC; @@ -34,22 +34,22 @@ bool Bug914Layer::init() // Apple recommends to re-assign "self" with the "super" return value if (BugsTestBase::init()) { - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(Bug914Layer::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(Bug914Layer::onTouchesMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + // ask director the the window size auto size = Director::getInstance()->getWinSize(); - LayerColor *layer; - for( int i=0;i < 5;i++) + LayerColor* layer; + for (int i = 0; i < 5; i++) { - layer = LayerColor::create(Color4B(i*20, i*20, i*20,255)); - layer->setContentSize(Size(i*100.0f, i*100.0f)); - layer->setPosition(size.width/2, size.height/2); + layer = LayerColor::create(Color4B(i * 20, i * 20, i * 20, 255)); + layer->setContentSize(Size(i * 100.0f, i * 100.0f)); + layer->setPosition(size.width / 2, size.height / 2); layer->setAnchorPoint(Vec2(0.5f, 0.5f)); layer->setIgnoreAnchorPointForPosition(false); - addChild(layer, -1-i); + addChild(layer, -1 - i); } // create and initialize a Label @@ -58,11 +58,11 @@ bool Bug914Layer::init() auto menu = Menu::create(item1, nullptr); menu->alignItemsVertically(); - menu->setPosition(size.width/2, 100); + menu->setPosition(size.width / 2, 100); addChild(menu); // position the label on the center of the screen - label->setPosition(size.width /2 , size.height/2); + label->setPosition(size.width / 2, size.height / 2); // add the label as a child to this Layer addChild(label); @@ -71,12 +71,12 @@ bool Bug914Layer::init() return false; } -void Bug914Layer::onTouchesMoved(const std::vector& touches, Event * event) +void Bug914Layer::onTouchesMoved(const std::vector& touches, Event* event) { log("Number of touches: %d", (int)touches.size()); } -void Bug914Layer::onTouchesBegan(const std::vector& touches, Event * event) +void Bug914Layer::onTouchesBegan(const std::vector& touches, Event* event) { onTouchesMoved(touches, event); } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-914.h b/tests/cpp-tests/Classes/BugsTest/Bug-914.h index c78952933f07..cd9d08f5aa1e 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-914.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-914.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,7 +31,7 @@ class Bug914Layer : public BugsTestBase { public: virtual bool init() override; - virtual std::string title() const override { return "Bug914";} + virtual std::string title() const override { return "Bug914"; } void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); @@ -40,4 +40,4 @@ class Bug914Layer : public BugsTestBase CREATE_FUNC(Bug914Layer); }; -#endif // __BUG_914_H__ +#endif // __BUG_914_H__ diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.cpp index 3ed147bb4bb3..a1f2b51289f9 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,7 +38,7 @@ bool BugDrawNodeLayer::init() { if (BugsTestBase::init()) { - auto size = Director::getInstance()->getWinSize(); + auto size = Director::getInstance()->getWinSize(); auto testSprite = Sprite::create("Images/close.png"); BlendFunc blend; blend.src = backend::BlendFactor::ZERO; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.h b/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.h index e48afef9b77e..47b947213890 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-CCDrawNode.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,7 @@ class BugDrawNodeLayer : public BugsTestBase CREATE_FUNC(BugDrawNodeLayer); virtual bool init() override; - virtual std::string title() const override { return "BugDrawNode";} + virtual std::string title() const override { return "BugDrawNode"; } }; #endif \ No newline at end of file diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-Child.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-Child.cpp index abab81548f41..b53d10ff9447 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-Child.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-Child.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,37 +39,37 @@ bool BugChild::init() if (BugsTestBase::init()) { auto size = Director::getInstance()->getWinSize(); - + // create and initialize a Label auto item1 = MenuItemFont::create("Switch Child", CC_CALLBACK_1(BugChild::switchChild, this)); - + menu = Menu::create(item1, nullptr); - + menu->alignItemsVertically(); - menu->setPosition(size.width/2, 100); + menu->setPosition(size.width / 2, 100); addChild(menu); - + parent1 = Sprite::create("Images/grossini.png"); - parent1->setPosition(size.width/4, size.height/2); + parent1->setPosition(size.width / 4, size.height / 2); addChild(parent1); - + parent2 = Sprite::create("Images/grossinis_sister1.png"); - parent2->setPosition(size.width*3/4, size.height/2); + parent2->setPosition(size.width * 3 / 4, size.height / 2); addChild(parent2); - + child = Sprite::create("Images/grossinis_sister2.png"); child->setPosition(20, 20); child->retain(); parent1->addChild(child); return true; } - + return false; } -void BugChild::switchChild(Ref *sender) +void BugChild::switchChild(Ref* sender) { - if(parent1->getChildrenCount() > 0) + if (parent1->getChildrenCount() > 0) { parent1->removeChild(child, false); parent2->addChild(child); @@ -85,49 +85,49 @@ void BugChild::switchChild(Ref *sender) bool BugCameraMask::init() { - if (!BugsTestBase::init()) return false; - + if (!BugsTestBase::init()) + return false; + auto size = Director::getInstance()->getWinSize(); - + auto node = Node::create(); - node->setPosition(size.width/4, size.height/3); + node->setPosition(size.width / 4, size.height / 3); _sprite = Sprite::create("Images/grossini.png"); node->addChild(_sprite); node->setCameraMask((unsigned short)CameraFlag::USER1); - auto move = MoveBy::create(2, Vec2(200,0)); - + auto move = MoveBy::create(2, Vec2(200, 0)); + node->runAction(RepeatForever::create(Sequence::createWithTwoActions(move, move->reverse()))); addChild(node); - + auto camera = Camera::create(); camera->setCameraFlag(CameraFlag::USER1); addChild(camera); - - + auto item1 = MenuItemFont::create("Switch Child", CC_CALLBACK_1(BugCameraMask::switchSpriteFlag, this)); - + auto menu = Menu::create(item1, nullptr); - + menu->alignItemsVertically(); - menu->setPosition(size.width/2, 100); + menu->setPosition(size.width / 2, 100); addChild(menu); - + _spriteMaskLabel = Label::create(); - _spriteMaskLabel->setPosition(size.width/2, 120); + _spriteMaskLabel->setPosition(size.width / 2, 120); addChild(_spriteMaskLabel); updateSpriteMaskLabel(); - + auto label = Label::create(); - label->setPosition(size.width/2, size.height * 0.9f); + label->setPosition(size.width / 2, size.height * 0.9f); label->setString("Sprite should always run action."); addChild(label); - + return true; } -void BugCameraMask::switchSpriteFlag(Ref *sender) +void BugCameraMask::switchSpriteFlag(Ref* sender) { - if((unsigned short) CameraFlag::USER1 == _sprite->getCameraMask()) + if ((unsigned short)CameraFlag::USER1 == _sprite->getCameraMask()) { _sprite->setCameraMask((unsigned short)CameraFlag::DEFAULT); } @@ -135,13 +135,14 @@ void BugCameraMask::switchSpriteFlag(Ref *sender) { _sprite->setCameraMask((unsigned short)CameraFlag::USER1); } - + updateSpriteMaskLabel(); } void BugCameraMask::updateSpriteMaskLabel() { std::stringstream stream; - stream << "The camera Mask is " << (_sprite->getCameraMask() == 1 ? "CameraFlag::Default" : "CameraFlag::User1") << std::endl; + stream << "The camera Mask is " << (_sprite->getCameraMask() == 1 ? "CameraFlag::Default" : "CameraFlag::User1") + << std::endl; _spriteMaskLabel->setString(stream.str()); } diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-Child.h b/tests/cpp-tests/Classes/BugsTest/Bug-Child.h index fb603362f6af..df83634926f9 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-Child.h +++ b/tests/cpp-tests/Classes/BugsTest/Bug-Child.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -41,17 +41,16 @@ class BugChild : public BugsTestBase CREATE_FUNC(BugChild); virtual bool init() override; - virtual std::string title() const override { return "BugChild";} - + virtual std::string title() const override { return "BugChild"; } + void switchChild(cocos2d::Ref* sender); - + protected: - cocos2d::Sprite* parent1; cocos2d::Sprite* parent2; - + cocos2d::Sprite* child; - + cocos2d::Menu* menu; }; @@ -59,10 +58,10 @@ class BugCameraMask : public BugsTestBase { public: CREATE_FUNC(BugCameraMask); - + virtual bool init() override; - virtual std::string title() const override { return "BugCameraMask";} - + virtual std::string title() const override { return "BugCameraMask"; } + void switchSpriteFlag(cocos2d::Ref* sender); void updateSpriteMaskLabel(); Node* _sprite; diff --git a/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp b/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp index a35705ebae74..074dd6f2195a 100644 --- a/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp +++ b/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,7 +39,7 @@ #include "Bug-15776.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) -#include "Bug-14327.h" +# include "Bug-14327.h" #endif BugsTests::BugsTests() @@ -58,9 +58,9 @@ BugsTests::BugsTests() ADD_TEST_CASE(BugDrawNodeLayer); ADD_TEST_CASE(Bug12847Layer); ADD_TEST_CASE(Bug15594Layer); - + // NOTE: comment this out because it currently crashes during autotest - //ADD_TEST_CASE(Bug15776Layer); + // ADD_TEST_CASE(Bug15776Layer); #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) ADD_TEST_CASE(Bug14327Layer); diff --git a/tests/cpp-tests/Classes/BugsTest/BugsTest.h b/tests/cpp-tests/Classes/BugsTest/BugsTest.h index d06a1cc9c7d4..dacd08fc05e1 100644 --- a/tests/cpp-tests/Classes/BugsTest/BugsTest.h +++ b/tests/cpp-tests/Classes/BugsTest/BugsTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,7 +30,7 @@ class BugsTestBase : public TestCase { public: - virtual std::string title() const override {return "No Test Title set";} + virtual std::string title() const override { return "No Test Title set"; } }; DEFINE_TEST_SUITE(BugsTests); diff --git a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp index a833ad3fb803..158543505ed7 100644 --- a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp +++ b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp @@ -27,17 +27,19 @@ THE SOFTWARE. #include "Camera3DTest.h" #include "testResource.h" #include "ui/UISlider.h" -#include "platform/CCFileUtils.h" +#include "platform/CCFileUtils.h" #include "renderer/backend/Device.h" USING_NS_CC; -#define SET_UNIFORM(name, addr, size) do { \ - auto _loc_ = _programState1->getUniformLocation(name); \ - _programState1->setUniform(_loc_, (addr), (size)); \ - _loc_ = _programState2->getUniformLocation(name); \ - _programState2->setUniform(_loc_, (addr), (size)); \ - } while(false) +#define SET_UNIFORM(name, addr, size) \ + do \ + { \ + auto _loc_ = _programState1->getUniformLocation(name); \ + _programState1->setUniform(_loc_, (addr), (size)); \ + _loc_ = _programState2->getUniformLocation(name); \ + _programState2->setUniform(_loc_, (addr), (size)); \ + } while (false) enum { @@ -53,7 +55,7 @@ Camera3DTests::Camera3DTests() ADD_TEST_CASE(CameraCullingDemo); ADD_TEST_CASE(FogTestDemo); ADD_TEST_CASE(CameraArcBallDemo); - //ADD_TEST_CASE(CameraFrameBufferTest); //TODO render target + // ADD_TEST_CASE(CameraFrameBufferTest); //TODO render target ADD_TEST_CASE(BackgroundColorBrushTest); } @@ -66,9 +68,9 @@ CameraRotationTest::CameraRotationTest() { auto s = Director::getInstance()->getWinSize(); - + _camControlNode = Node::create(); - _camControlNode->setPositionNormalized(Vec2(0.5f,0.5f)); + _camControlNode->setPositionNormalized(Vec2(0.5f, 0.5f)); addChild(_camControlNode); _camNode = Node::create(); @@ -76,61 +78,59 @@ CameraRotationTest::CameraRotationTest() _camControlNode->addChild(_camNode); auto sp3d = Sprite3D::create(); - sp3d->setPosition(s.width/2, s.height/2); + sp3d->setPosition(s.width / 2, s.height / 2); addChild(sp3d); - + auto lship = Label::create(); lship->setString("Ship"); lship->setPosition(0, 20); sp3d->addChild(lship); - - //Billboards - //Yellow is at the back + + // Billboards + // Yellow is at the back bill1 = BillBoard::create("Images/Icon.png"); bill1->setPosition3D(Vec3(50.0f, 10.0f, -10.0f)); bill1->setColor(Color3B::YELLOW); bill1->setScale(0.6f); sp3d->addChild(bill1); - + l1 = Label::create(); - l1->setPosition(Vec2(0.0f,-10.0f)); + l1->setPosition(Vec2(0.0f, -10.0f)); l1->setString("Billboard1"); l1->setColor(Color3B::WHITE); l1->setScale(3); bill1->addChild(l1); auto p1 = ParticleSystemQuad::create("Particles/SmallSun.plist"); - p1->setPosition(30.0f,80.0f); + p1->setPosition(30.0f, 80.0f); bill1->addChild(p1); - + bill2 = BillBoard::create("Images/Icon.png"); bill2->setPosition3D(Vec3(-50.0f, -10.0f, 10.0f)); bill2->setScale(0.6f); sp3d->addChild(bill2); - + l2 = Label::create(); l2->setString("Billboard2"); - l2->setPosition(Vec2(0.0f,-10.0f)); + l2->setPosition(Vec2(0.0f, -10.0f)); l2->setColor(Color3B::WHITE); l2->setScale(3); bill2->addChild(l2); - + auto p2 = ParticleSystemQuad::create("Particles/SmallSun.plist"); - p2->setPosition(30,80); + p2->setPosition(30, 80); bill2->addChild(p2); - //3D models + // 3D models auto model = Sprite3D::create("Sprite3DTest/boss1.obj"); model->setScale(4); model->setTexture("Sprite3DTest/boss.png"); - model->setPosition3D(Vec3(s.width/2, s.height/2, 0)); + model->setPosition3D(Vec3(s.width / 2, s.height / 2, 0)); addChild(model); - //Listener - _lis = EventListenerTouchOneByOne::create(); - _lis->onTouchBegan = [](Touch* t, Event* e) { - return true; - }; + // Listener + _lis = EventListenerTouchOneByOne::create(); + _lis->onTouchBegan = [](Touch* t, Event* e) { return true; }; _lis->onTouchMoved = [this](Touch* t, Event* e) { float dx = t->getDelta().x; @@ -146,7 +146,7 @@ CameraRotationTest::CameraRotationTest() }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(_lis, this); - + schedule(CC_SCHEDULE_SELECTOR(CameraRotationTest::update)); } @@ -175,9 +175,7 @@ void CameraRotationTest::onExit() CameraBaseTest::onExit(); } -void CameraRotationTest::update(float dt) -{ -} +void CameraRotationTest::update(float dt) {} //------------------------------------------------------------------ // @@ -185,80 +183,75 @@ void CameraRotationTest::update(float dt) // //------------------------------------------------------------------ Camera3DTestDemo::Camera3DTestDemo() -: _cameraType(CameraType::Free) -, _incRot(nullptr) -, _decRot(nullptr) -, _camera(nullptr) -, _bZoomOut(false) -, _bZoomIn(false) -, _bRotateLeft(false) -, _bRotateRight(false) -{ -} -Camera3DTestDemo::~Camera3DTestDemo() -{ -} -void Camera3DTestDemo::reachEndCallBack() -{ -} + : _cameraType(CameraType::Free) + , _incRot(nullptr) + , _decRot(nullptr) + , _camera(nullptr) + , _bZoomOut(false) + , _bZoomIn(false) + , _bRotateLeft(false) + , _bRotateRight(false) +{} +Camera3DTestDemo::~Camera3DTestDemo() {} +void Camera3DTestDemo::reachEndCallBack() {} std::string Camera3DTestDemo::title() const { return "Testing Camera"; } -void Camera3DTestDemo::scaleCameraCallback(Ref* sender,float value) +void Camera3DTestDemo::scaleCameraCallback(Ref* sender, float value) { - if(_camera&& _cameraType!=CameraType::FirstPerson) + if (_camera && _cameraType != CameraType::FirstPerson) { - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos+= cameraPos.getNormalized()*value; + Vec3 cameraPos = _camera->getPosition3D(); + cameraPos += cameraPos.getNormalized() * value; _camera->setPosition3D(cameraPos); } } -void Camera3DTestDemo::rotateCameraCallback(Ref* sender,float value) +void Camera3DTestDemo::rotateCameraCallback(Ref* sender, float value) { - if(_cameraType==CameraType::Free || _cameraType==CameraType::FirstPerson) + if (_cameraType == CameraType::Free || _cameraType == CameraType::FirstPerson) { - Vec3 rotation3D= _camera->getRotation3D(); - rotation3D.y+= value; + Vec3 rotation3D = _camera->getRotation3D(); + rotation3D.y += value; _camera->setRotation3D(rotation3D); } } void Camera3DTestDemo::SwitchViewCallback(Ref* sender, CameraType cameraType) { - if(_cameraType==cameraType) + if (_cameraType == cameraType) { - return ; + return; } _cameraType = cameraType; - if(_cameraType==CameraType::Free) + if (_cameraType == CameraType::Free) { _camera->setPosition3D(Vec3(0, 130, 130) + _sprite3D->getPosition3D()); _camera->lookAt(_sprite3D->getPosition3D()); - + _RotateRightlabel->setColor(Color3B::WHITE); _RotateLeftlabel->setColor(Color3B::WHITE); _ZoomInlabel->setColor(Color3B::WHITE); _ZoomOutlabel->setColor(Color3B::WHITE); } - else if(_cameraType==CameraType::FirstPerson) + else if (_cameraType == CameraType::FirstPerson) { Vec3 newFaceDir; _sprite3D->getWorldToNodeTransform().getForwardVector(&newFaceDir); newFaceDir.normalize(); - _camera->setPosition3D(Vec3(0,35,0) + _sprite3D->getPosition3D()); - _camera->lookAt(_sprite3D->getPosition3D() + newFaceDir*50); - + _camera->setPosition3D(Vec3(0, 35, 0) + _sprite3D->getPosition3D()); + _camera->lookAt(_sprite3D->getPosition3D() + newFaceDir * 50); + _RotateRightlabel->setColor(Color3B::WHITE); _RotateLeftlabel->setColor(Color3B::WHITE); _ZoomInlabel->setColor(Color3B::GRAY); _ZoomOutlabel->setColor(Color3B::GRAY); } - else if(_cameraType==CameraType::ThirdPerson) + else if (_cameraType == CameraType::ThirdPerson) { _camera->setPosition3D(Vec3(0, 130, 130) + _sprite3D->getPosition3D()); _camera->lookAt(_sprite3D->getPosition3D()); - + _RotateRightlabel->setColor(Color3B::GRAY); _RotateLeftlabel->setColor(Color3B::GRAY); _ZoomInlabel->setColor(Color3B::WHITE); @@ -268,112 +261,115 @@ void Camera3DTestDemo::SwitchViewCallback(Ref* sender, CameraType cameraType) void Camera3DTestDemo::onEnter() { CameraBaseTest::onEnter(); - _sprite3D=nullptr; - auto s = Director::getInstance()->getWinSize(); - auto listener = EventListenerTouchAllAtOnce::create(); + _sprite3D = nullptr; + auto s = Director::getInstance()->getWinSize(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(Camera3DTestDemo::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - auto layer3D=Layer::create(); - addChild(layer3D,0); - _layer3D=layer3D; - _curState=State_None; - addNewSpriteWithCoords( Vec3(0,0,0),"Sprite3DTest/girl.c3b",true,0.2f,true); + auto layer3D = Layer::create(); + addChild(layer3D, 0); + _layer3D = layer3D; + _curState = State_None; + addNewSpriteWithCoords(Vec3(0, 0, 0), "Sprite3DTest/girl.c3b", true, 0.2f, true); TTFConfig ttfConfig("fonts/arial.ttf", 20); - + auto containerForLabel1 = Node::create(); - _ZoomOutlabel = Label::createWithTTF(ttfConfig,"zoom out"); - _ZoomOutlabel->setPosition(s.width-50, VisibleRect::top().y-20); + _ZoomOutlabel = Label::createWithTTF(ttfConfig, "zoom out"); + _ZoomOutlabel->setPosition(s.width - 50, VisibleRect::top().y - 20); containerForLabel1->addChild(_ZoomOutlabel); addChild(containerForLabel1, 10); - + auto listener1 = EventListenerTouchOneByOne::create(); listener1->setSwallowTouches(true); - + listener1->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomOut, this); listener1->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomOutEnd, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, _ZoomOutlabel); - + auto containerForLabel2 = Node::create(); - _ZoomInlabel = Label::createWithTTF(ttfConfig,"zoom in"); - _ZoomInlabel->setPosition(s.width-50, VisibleRect::top().y-70); + _ZoomInlabel = Label::createWithTTF(ttfConfig, "zoom in"); + _ZoomInlabel->setPosition(s.width - 50, VisibleRect::top().y - 70); containerForLabel2->addChild(_ZoomInlabel); addChild(containerForLabel2, 10); - + auto listener2 = EventListenerTouchOneByOne::create(); listener2->setSwallowTouches(true); - + listener2->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomIn, this); listener2->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomInEnd, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener2, _ZoomInlabel); - + auto containerForLabel3 = Node::create(); - _RotateLeftlabel = Label::createWithTTF(ttfConfig,"rotate left"); - _RotateLeftlabel->setPosition(s.width-50, VisibleRect::top().y-120); + _RotateLeftlabel = Label::createWithTTF(ttfConfig, "rotate left"); + _RotateLeftlabel->setPosition(s.width - 50, VisibleRect::top().y - 120); containerForLabel3->addChild(_RotateLeftlabel); addChild(containerForLabel3, 10); - + auto listener3 = EventListenerTouchOneByOne::create(); listener3->setSwallowTouches(true); - + listener3->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateLeft, this); listener3->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateLeftEnd, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener3, _RotateLeftlabel); - + auto containerForLabel4 = Node::create(); - _RotateRightlabel = Label::createWithTTF(ttfConfig,"rotate right"); - _RotateRightlabel->setPosition(s.width-50, VisibleRect::top().y-170); + _RotateRightlabel = Label::createWithTTF(ttfConfig, "rotate right"); + _RotateRightlabel->setPosition(s.width - 50, VisibleRect::top().y - 170); containerForLabel4->addChild(_RotateRightlabel); addChild(containerForLabel4, 10); - + auto listener4 = EventListenerTouchOneByOne::create(); listener4->setSwallowTouches(true); - + listener4->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateRight, this); listener4->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateRightEnd, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener4, _RotateRightlabel); - - auto label1 = Label::createWithTTF(ttfConfig,"free "); - auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::Free)); - auto label2 = Label::createWithTTF(ttfConfig,"third person"); - auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::ThirdPerson)); - auto label3 = Label::createWithTTF(ttfConfig,"first person"); - auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::FirstPerson)); + + auto label1 = Label::createWithTTF(ttfConfig, "free "); + auto menuItem1 = + MenuItemLabel::create(label1, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback, this, CameraType::Free)); + auto label2 = Label::createWithTTF(ttfConfig, "third person"); + auto menuItem2 = MenuItemLabel::create( + label2, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback, this, CameraType::ThirdPerson)); + auto label3 = Label::createWithTTF(ttfConfig, "first person"); + auto menuItem3 = MenuItemLabel::create( + label3, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback, this, CameraType::FirstPerson)); auto menu = Menu::create(menuItem1, menuItem2, menuItem3, nullptr); - + menu->setPosition(Vec2::ZERO); - - menuItem1->setPosition(VisibleRect::left().x+100, VisibleRect::top().y-50); - menuItem2->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -100); - menuItem3->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -150); + + menuItem1->setPosition(VisibleRect::left().x + 100, VisibleRect::top().y - 50); + menuItem2->setPosition(VisibleRect::left().x + 100, VisibleRect::top().y - 100); + menuItem3->setPosition(VisibleRect::left().x + 100, VisibleRect::top().y - 150); addChild(menu, 0); schedule(CC_SCHEDULE_SELECTOR(Camera3DTestDemo::updateCamera), 0.0f); if (_camera == nullptr) { - _camera=Camera::createPerspective(60, (float)s.width/s.height, 1, 1000); + _camera = Camera::createPerspective(60, (float)s.width / s.height, 1, 1000); _camera->setCameraFlag(CameraFlag::USER1); _layer3D->addChild(_camera); } - SwitchViewCallback(this,CameraType::ThirdPerson); - DrawNode3D* line =DrawNode3D::create(); - //draw x - for( int j =-20; j<=20 ;j++) + SwitchViewCallback(this, CameraType::ThirdPerson); + DrawNode3D* line = DrawNode3D::create(); + // draw x + for (int j = -20; j <= 20; j++) { - line->drawLine(Vec3(-100.0f, 0.0f, 5.0f*j),Vec3(100.0f,0.0f,5.0f*j),Color4F(1,0,0,1)); + line->drawLine(Vec3(-100.0f, 0.0f, 5.0f * j), Vec3(100.0f, 0.0f, 5.0f * j), Color4F(1, 0, 0, 1)); } - //draw z - for( int j =-20; j<=20 ;j++) + // draw z + for (int j = -20; j <= 20; j++) { - line->drawLine(Vec3(5.0f*j, 0.0f, -100.0f),Vec3(5.0f*j,0.0f,100.0f),Color4F(0,0,1,1)); + line->drawLine(Vec3(5.0f * j, 0.0f, -100.0f), Vec3(5.0f * j, 0.0f, 100.0f), Color4F(0, 0, 1, 1)); } - //draw y - line->drawLine(Vec3(0.0f, -50.0f, 0.0f),Vec3(0,0,0),Color4F(0,0.5,0,1)); - line->drawLine(Vec3(0, 0, 0),Vec3(0,50.0f,0),Color4F(0,1,0,1)); + // draw y + line->drawLine(Vec3(0.0f, -50.0f, 0.0f), Vec3(0, 0, 0), Color4F(0, 0.5, 0, 1)); + line->drawLine(Vec3(0, 0, 0), Vec3(0, 50.0f, 0), Color4F(0, 1, 0, 1)); _layer3D->addChild(line); _layer3D->setCameraMask(2); @@ -387,191 +383,192 @@ void Camera3DTestDemo::onExit() } } -void Camera3DTestDemo::addNewSpriteWithCoords(Vec3 p,std::string fileName,bool playAnimation,float scale,bool bindCamera) +void Camera3DTestDemo::addNewSpriteWithCoords(Vec3 p, + std::string fileName, + bool playAnimation, + float scale, + bool bindCamera) { auto sprite = Sprite3D::create(fileName); _layer3D->addChild(sprite); - float globalZOrder=sprite->getGlobalZOrder(); - sprite->setPosition3D( Vec3( p.x, p.y,p.z) ); + float globalZOrder = sprite->getGlobalZOrder(); + sprite->setPosition3D(Vec3(p.x, p.y, p.z)); sprite->setGlobalZOrder(globalZOrder); - if(playAnimation) + if (playAnimation) { - auto animation = Animation3D::create(fileName,"Take 001"); + auto animation = Animation3D::create(fileName, "Take 001"); if (animation) { auto animate = Animate3D::create(animation); sprite->runAction(RepeatForever::create(animate)); } } - if(bindCamera) + if (bindCamera) { - _sprite3D=sprite; + _sprite3D = sprite; } - sprite->setScale(scale); -} -void Camera3DTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) -{ + sprite->setScale(scale); } -void Camera3DTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +void Camera3DTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event* event) {} +void Camera3DTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event* event) { - if(touches.size()==1) + if (touches.size() == 1) { - auto touch = touches[0]; + auto touch = touches[0]; auto location = touch->getLocation(); - Point newPos = touch->getPreviousLocation()-location; - if(_cameraType==CameraType::Free || _cameraType==CameraType::FirstPerson) + Point newPos = touch->getPreviousLocation() - location; + if (_cameraType == CameraType::Free || _cameraType == CameraType::FirstPerson) { Vec3 cameraDir; Vec3 cameraRightDir; _camera->getNodeToWorldTransform().getForwardVector(&cameraDir); cameraDir.normalize(); - cameraDir.y=0; + cameraDir.y = 0; _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir); cameraRightDir.normalize(); - cameraRightDir.y=0; - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos+=cameraDir*newPos.y*0.1f; - cameraPos+=cameraRightDir*newPos.x*0.1f; + cameraRightDir.y = 0; + Vec3 cameraPos = _camera->getPosition3D(); + cameraPos += cameraDir * newPos.y * 0.1f; + cameraPos += cameraRightDir * newPos.x * 0.1f; _camera->setPosition3D(cameraPos); - if(_sprite3D && _cameraType==CameraType::FirstPerson) + if (_sprite3D && _cameraType == CameraType::FirstPerson) { - _sprite3D->setPosition3D(Vec3(_camera->getPositionX(),0,_camera->getPositionZ())); - _targetPos=_sprite3D->getPosition3D(); + _sprite3D->setPosition3D(Vec3(_camera->getPositionX(), 0, _camera->getPositionZ())); + _targetPos = _sprite3D->getPosition3D(); } } } } void Camera3DTestDemo::move3D(float elapsedTime) { - if(_sprite3D) + if (_sprite3D) { - Vec3 curPos= _sprite3D->getPosition3D(); + Vec3 curPos = _sprite3D->getPosition3D(); Vec3 newFaceDir = _targetPos - curPos; - newFaceDir.y = 0.0f; + newFaceDir.y = 0.0f; newFaceDir.normalize(); Vec3 offset = newFaceDir * 25.0f * elapsedTime; - curPos+=offset; + curPos += offset; _sprite3D->setPosition3D(curPos); - if(_cameraType==CameraType::ThirdPerson) + if (_cameraType == CameraType::ThirdPerson) { - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos.x+=offset.x; - cameraPos.z+=offset.z; + Vec3 cameraPos = _camera->getPosition3D(); + cameraPos.x += offset.x; + cameraPos.z += offset.z; _camera->setPosition3D(cameraPos); } } } void Camera3DTestDemo::updateState(float elapsedTime) { - if(_sprite3D) + if (_sprite3D) { - Vec3 curPos= _sprite3D->getPosition3D(); + Vec3 curPos = _sprite3D->getPosition3D(); Vec3 curFaceDir; _sprite3D->getNodeToWorldTransform().getForwardVector(&curFaceDir); - curFaceDir=-curFaceDir; + curFaceDir = -curFaceDir; curFaceDir.normalize(); Vec3 newFaceDir = _targetPos - curPos; - newFaceDir.y = 0.0f; + newFaceDir.y = 0.0f; newFaceDir.normalize(); - float cosAngle = std::fabs(Vec3::dot(curFaceDir,newFaceDir) - 1.0f); - float dist = curPos.distanceSquared(_targetPos); - if(dist<=4.0f) + float cosAngle = std::fabs(Vec3::dot(curFaceDir, newFaceDir) - 1.0f); + float dist = curPos.distanceSquared(_targetPos); + if (dist <= 4.0f) { - if(cosAngle<=0.01f) + if (cosAngle <= 0.01f) _curState = State_Idle; else _curState = State_Rotate; } else { - if(cosAngle>0.01f) + if (cosAngle > 0.01f) _curState = State_Rotate | State_Move; else _curState = State_Move; } } } -void Camera3DTestDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event *event) +void Camera3DTestDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event* event) { - for ( auto &item: touches ) + for (auto& item : touches) { - auto touch = item; + auto touch = item; auto location = touch->getLocationInView(); - if(_camera) + if (_camera) { - if(_sprite3D && _cameraType==CameraType::ThirdPerson && _bZoomOut == false && _bZoomIn == false && _bRotateLeft == false && _bRotateRight == false) + if (_sprite3D && _cameraType == CameraType::ThirdPerson && _bZoomOut == false && _bZoomIn == false && + _bRotateLeft == false && _bRotateRight == false) { Vec3 nearP(location.x, location.y, -1.0f), farP(location.x, location.y, 1.0f); - + auto size = Director::getInstance()->getWinSize(); - nearP = _camera->unproject(nearP); - farP = _camera->unproject(farP); + nearP = _camera->unproject(nearP); + farP = _camera->unproject(farP); Vec3 dir(farP - nearP); - float dist=0.0f; - float ndd = Vec3::dot(Vec3(0,1,0),dir); - if(ndd == 0) - dist=0.0f; - float ndo = Vec3::dot(Vec3(0,1,0),nearP); - dist= (0 - ndo) / ndd; - Vec3 p = nearP + dist * dir; - - if( p.x > 100) + float dist = 0.0f; + float ndd = Vec3::dot(Vec3(0, 1, 0), dir); + if (ndd == 0) + dist = 0.0f; + float ndo = Vec3::dot(Vec3(0, 1, 0), nearP); + dist = (0 - ndo) / ndd; + Vec3 p = nearP + dist * dir; + + if (p.x > 100) p.x = 100; - if( p.x < -100) + if (p.x < -100) p.x = -100; - if( p.z > 100) + if (p.z > 100) p.z = 100; - if( p.z < -100) + if (p.z < -100) p.z = -100; - - _targetPos=p; + + _targetPos = p; } } } } -void onTouchesCancelled(const std::vector& touches, cocos2d::Event *event) -{ -} +void onTouchesCancelled(const std::vector& touches, cocos2d::Event* event) {} void Camera3DTestDemo::updateCamera(float fDelta) { - if(_sprite3D) + if (_sprite3D) { - if( _cameraType==CameraType::ThirdPerson) + if (_cameraType == CameraType::ThirdPerson) { updateState(fDelta); - if(isState(_curState,State_Move)) + if (isState(_curState, State_Move)) { move3D(fDelta); - if(isState(_curState,State_Rotate)) + if (isState(_curState, State_Rotate)) { Vec3 curPos = _sprite3D->getPosition3D(); - + Vec3 newFaceDir = _targetPos - curPos; - newFaceDir.y = 0; + newFaceDir.y = 0; newFaceDir.normalize(); Vec3 up; _sprite3D->getNodeToWorldTransform().getUpVector(&up); up.normalize(); Vec3 right; - Vec3::cross(-newFaceDir,up,&right); + Vec3::cross(-newFaceDir, up, &right); right.normalize(); - Vec3 pos = Vec3(0,0,0); + Vec3 pos = Vec3(0, 0, 0); Mat4 mat; mat.m[0] = right.x; mat.m[1] = right.y; mat.m[2] = right.z; mat.m[3] = 0.0f; - + mat.m[4] = up.x; mat.m[5] = up.y; mat.m[6] = up.z; mat.m[7] = 0.0f; - + mat.m[8] = newFaceDir.x; mat.m[9] = newFaceDir.y; mat.m[10] = newFaceDir.z; mat.m[11] = 0.0f; - + mat.m[12] = pos.x; mat.m[13] = pos.y; mat.m[14] = pos.z; @@ -580,24 +577,24 @@ void Camera3DTestDemo::updateCamera(float fDelta) } } } - if(_bZoomOut == true) + if (_bZoomOut == true) { - if(_camera) + if (_camera) { - if(_cameraType == CameraType::ThirdPerson) + if (_cameraType == CameraType::ThirdPerson) { - Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); + Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); Vec3 cameraPos = _camera->getPosition3D(); - if(lookDir.length() <= 300) + if (lookDir.length() <= 300) { cameraPos += lookDir.getNormalized(); _camera->setPosition3D(cameraPos); } } - else if(_cameraType == CameraType::Free) + else if (_cameraType == CameraType::Free) { Vec3 cameraPos = _camera->getPosition3D(); - if(cameraPos.length() <= 300) + if (cameraPos.length() <= 300) { cameraPos += cameraPos.getNormalized(); _camera->setPosition3D(cameraPos); @@ -605,24 +602,24 @@ void Camera3DTestDemo::updateCamera(float fDelta) } } } - if(_bZoomIn == true) + if (_bZoomIn == true) { - if(_camera) + if (_camera) { - if(_cameraType == CameraType::ThirdPerson) + if (_cameraType == CameraType::ThirdPerson) { - Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); + Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); Vec3 cameraPos = _camera->getPosition3D(); - if(lookDir.length() >= 50) + if (lookDir.length() >= 50) { cameraPos -= lookDir.getNormalized(); _camera->setPosition3D(cameraPos); } } - else if(_cameraType == CameraType::Free) + else if (_cameraType == CameraType::Free) { Vec3 cameraPos = _camera->getPosition3D(); - if(cameraPos.length() >= 50) + if (cameraPos.length() >= 50) { cameraPos -= cameraPos.getNormalized(); _camera->setPosition3D(cameraPos); @@ -630,21 +627,21 @@ void Camera3DTestDemo::updateCamera(float fDelta) } } } - if(_bRotateLeft == true) + if (_bRotateLeft == true) { - if(_cameraType==CameraType::Free || _cameraType==CameraType::FirstPerson) + if (_cameraType == CameraType::Free || _cameraType == CameraType::FirstPerson) { - Vec3 rotation3D= _camera->getRotation3D(); - rotation3D.y+= 1; + Vec3 rotation3D = _camera->getRotation3D(); + rotation3D.y += 1; _camera->setRotation3D(rotation3D); } } - if(_bRotateRight == true) + if (_bRotateRight == true) { - if(_cameraType==CameraType::Free || _cameraType==CameraType::FirstPerson) + if (_cameraType == CameraType::Free || _cameraType == CameraType::FirstPerson) { - Vec3 rotation3D= _camera->getRotation3D(); - rotation3D.y-= 1; + Vec3 rotation3D = _camera->getRotation3D(); + rotation3D.y -= 1; _camera->setRotation3D(rotation3D); } } @@ -653,11 +650,11 @@ void Camera3DTestDemo::updateCamera(float fDelta) bool Camera3DTestDemo::onTouchesCommon(Touch* touch, Event* event, bool* touchProperty) { auto target = static_cast(event->getCurrentTarget()); - + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); - Size s = target->getContentSize(); - Rect rect = Rect(0, 0, s.width, s.height); - + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + if (rect.containsPoint(locationInNode)) { *touchProperty = true; @@ -665,7 +662,7 @@ bool Camera3DTestDemo::onTouchesCommon(Touch* touch, Event* event, bool* touchPr } return false; } -bool Camera3DTestDemo::isState(unsigned int state,unsigned int bit) const +bool Camera3DTestDemo::isState(unsigned int state, unsigned int bit) const { return (state & bit) == bit; } @@ -705,19 +702,16 @@ void Camera3DTestDemo::onTouchesRotateRightEnd(Touch* touch, Event* event) //////////////////////////////////////////////////////////// // CameraCullingDemo CameraCullingDemo::CameraCullingDemo() -: _layer3D(nullptr) -, _cameraType(CameraType::FirstPerson) -, _cameraFirst(nullptr) -, _cameraThird(nullptr) -, _moveAction(nullptr) -, _drawAABB(nullptr) -, _drawFrustum(nullptr) -, _row(3) -{ -} -CameraCullingDemo::~CameraCullingDemo() -{ -} + : _layer3D(nullptr) + , _cameraType(CameraType::FirstPerson) + , _cameraFirst(nullptr) + , _cameraThird(nullptr) + , _moveAction(nullptr) + , _drawAABB(nullptr) + , _drawFrustum(nullptr) + , _row(3) +{} +CameraCullingDemo::~CameraCullingDemo() {} std::string CameraCullingDemo::title() const { @@ -729,59 +723,59 @@ void CameraCullingDemo::onEnter() CameraBaseTest::onEnter(); schedule(CC_SCHEDULE_SELECTOR(CameraCullingDemo::update), 0.0f); - + auto s = Director::getInstance()->getWinSize(); /*auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(Camera3DTestDemo::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);*/ - auto layer3D=Layer::create(); - addChild(layer3D,0); - _layer3D=layer3D; - + auto layer3D = Layer::create(); + addChild(layer3D, 0); + _layer3D = layer3D; + // switch camera MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(20); - - auto menuItem1 = MenuItemFont::create("Switch Camera", CC_CALLBACK_1(CameraCullingDemo::switchViewCallback,this)); - menuItem1->setColor(Color3B(0,200,20)); - auto menu = Menu::create(menuItem1,NULL); + + auto menuItem1 = MenuItemFont::create("Switch Camera", CC_CALLBACK_1(CameraCullingDemo::switchViewCallback, this)); + menuItem1->setColor(Color3B(0, 200, 20)); + auto menu = Menu::create(menuItem1, NULL); menu->setPosition(Vec2::ZERO); - menuItem1->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y -70); + menuItem1->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y - 70); addChild(menu, 1); - + // + - MenuItemFont::setFontSize(40); auto decrease = MenuItemFont::create(" - ", CC_CALLBACK_1(CameraCullingDemo::delSpriteCallback, this)); - decrease->setColor(Color3B(0,200,20)); + decrease->setColor(Color3B(0, 200, 20)); auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(CameraCullingDemo::addSpriteCallback, this)); - increase->setColor(Color3B(0,200,20)); - + increase->setColor(Color3B(0, 200, 20)); + menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); - menu->setPosition(Vec2(s.width - 60, VisibleRect::top().y -70)); + menu->setPosition(Vec2(s.width - 60, VisibleRect::top().y - 70)); addChild(menu, 1); - + TTFConfig ttfCount("fonts/Marker Felt.ttf", 30); - _labelSprite3DCount = Label::createWithTTF(ttfCount,"0 sprits"); - _labelSprite3DCount->setColor(Color3B(0,200,20)); - _labelSprite3DCount->setPosition(Vec2(s.width/2, VisibleRect::top().y -70)); + _labelSprite3DCount = Label::createWithTTF(ttfCount, "0 sprits"); + _labelSprite3DCount->setColor(Color3B(0, 200, 20)); + _labelSprite3DCount->setPosition(Vec2(s.width / 2, VisibleRect::top().y - 70)); addChild(_labelSprite3DCount); - + // aabb drawNode3D _drawAABB = DrawNode3D::create(); - _drawAABB->setCameraMask((unsigned short) CameraFlag::USER1); + _drawAABB->setCameraMask((unsigned short)CameraFlag::USER1); addChild(_drawAABB); - + // frustum drawNode3D _drawFrustum = DrawNode3D::create(); - _drawFrustum->setCameraMask((unsigned short) CameraFlag::USER1); + _drawFrustum->setCameraMask((unsigned short)CameraFlag::USER1); addChild(_drawFrustum); - + // set camera switchViewCallback(this); - + // add sprite addSpriteCallback(nullptr); } @@ -803,13 +797,13 @@ void CameraCullingDemo::update(float dt) { _drawAABB->clear(); - if(_cameraType == CameraType::ThirdPerson) + if (_cameraType == CameraType::ThirdPerson) drawCameraFrustum(); Vector& children = _layer3D->getChildren(); Vec3 corners[8]; - for (const auto& iter: children) + for (const auto& iter : children) { const AABB& aabb = static_cast(iter)->getAABB(); if (_cameraFirst->isVisibleInFrustum(&aabb)) @@ -825,11 +819,12 @@ void CameraCullingDemo::reachEndCallBack() _cameraFirst->stopActionByTag(100); auto inverse = MoveTo::create(4.f, Vec2(-_cameraFirst->getPositionX(), 0.0f)); inverse->retain(); - + _moveAction->release(); _moveAction = inverse; - auto rot = RotateBy::create(1.f, Vec3(0.f, 180.f, 0.f)); - auto seq = Sequence::create(rot, _moveAction, CallFunc::create(CC_CALLBACK_0(CameraCullingDemo::reachEndCallBack, this)), nullptr); + auto rot = RotateBy::create(1.f, Vec3(0.f, 180.f, 0.f)); + auto seq = Sequence::create(rot, _moveAction, + CallFunc::create(CC_CALLBACK_0(CameraCullingDemo::reachEndCallBack, this)), nullptr); seq->setTag(100); _cameraFirst->runAction(seq); } @@ -837,37 +832,38 @@ void CameraCullingDemo::reachEndCallBack() void CameraCullingDemo::switchViewCallback(Ref* sender) { auto s = Director::getInstance()->getWinSize(); - + if (_cameraFirst == nullptr) { - _cameraFirst = Camera::createPerspective(30.0f, (float)s.width/s.height, 10.0f, 200.0f); + _cameraFirst = Camera::createPerspective(30.0f, (float)s.width / s.height, 10.0f, 200.0f); _cameraFirst->setCameraFlag(CameraFlag::USER8); - _cameraFirst->setPosition3D(Vec3(-100.0f,0.0f,0.0f)); - _cameraFirst->lookAt(Vec3(1000.0f,0.0f,0.0f)); + _cameraFirst->setPosition3D(Vec3(-100.0f, 0.0f, 0.0f)); + _cameraFirst->lookAt(Vec3(1000.0f, 0.0f, 0.0f)); _moveAction = MoveTo::create(4.f, Vec2(-_cameraFirst->getPositionX(), 0.0f)); _moveAction->retain(); - auto seq = Sequence::create(_moveAction, CallFunc::create(CC_CALLBACK_0(CameraCullingDemo::reachEndCallBack, this)), nullptr); + auto seq = Sequence::create( + _moveAction, CallFunc::create(CC_CALLBACK_0(CameraCullingDemo::reachEndCallBack, this)), nullptr); seq->setTag(100); _cameraFirst->runAction(seq); addChild(_cameraFirst); } - + if (_cameraThird == nullptr) { - _cameraThird = Camera::createPerspective(60, (float)s.width/s.height, 1, 1000); + _cameraThird = Camera::createPerspective(60, (float)s.width / s.height, 1, 1000); _cameraThird->setCameraFlag(CameraFlag::USER8); _cameraThird->setPosition3D(Vec3(0.0f, 130.0f, 130.0f)); - _cameraThird->lookAt(Vec3(0,0,0)); + _cameraThird->lookAt(Vec3(0, 0, 0)); addChild(_cameraThird); } - - if(_cameraType == CameraType::FirstPerson) + + if (_cameraType == CameraType::FirstPerson) { _cameraType = CameraType::ThirdPerson; _cameraThird->setCameraFlag(CameraFlag::USER1); _cameraFirst->setCameraFlag(CameraFlag::USER8); } - else if(_cameraType == CameraType::ThirdPerson) + else if (_cameraType == CameraType::ThirdPerson) { _cameraType = CameraType::FirstPerson; _cameraFirst->setCameraFlag(CameraFlag::USER1); @@ -881,7 +877,7 @@ void CameraCullingDemo::addSpriteCallback(Ref* sender) _layer3D->removeAllChildren(); _objects.clear(); _drawAABB->clear(); - + ++_row; for (int x = -_row; x < _row; x++) { @@ -889,28 +885,29 @@ void CameraCullingDemo::addSpriteCallback(Ref* sender) { auto sprite = Sprite3D::create("Sprite3DTest/orc.c3b"); sprite->setPosition3D(Vec3(x * 30.0f, 0.0f, z * 30.0f)); - sprite->setRotation3D(Vec3(0.0f,180.0f,0.0f)); + sprite->setRotation3D(Vec3(0.0f, 180.0f, 0.0f)); _objects.push_back(sprite); _layer3D->addChild(sprite); } } - + // set layer mask. - _layer3D->setCameraMask( (unsigned short) CameraFlag::USER1); - + _layer3D->setCameraMask((unsigned short)CameraFlag::USER1); + // update sprite number char szText[16]; - sprintf(szText,"%d sprits", static_cast(_layer3D->getChildrenCount())); + sprintf(szText, "%d sprits", static_cast(_layer3D->getChildrenCount())); _labelSprite3DCount->setString(szText); } void CameraCullingDemo::delSpriteCallback(Ref* sender) { - if (_row == 0) return; - + if (_row == 0) + return; + _layer3D->removeAllChildren(); _objects.clear(); - + --_row; for (int x = -_row; x < _row; x++) { @@ -922,13 +919,13 @@ void CameraCullingDemo::delSpriteCallback(Ref* sender) _layer3D->addChild(sprite); } } - + // set layer mask. - _layer3D->setCameraMask((unsigned short) CameraFlag::USER1); - + _layer3D->setCameraMask((unsigned short)CameraFlag::USER1); + // update sprite number char szText[16]; - sprintf(szText,"%l sprits", static_cast(_layer3D->getChildrenCount())); + sprintf(szText, "%l sprits", static_cast(_layer3D->getChildrenCount())); _labelSprite3DCount->setString(szText); } @@ -936,47 +933,47 @@ void CameraCullingDemo::drawCameraFrustum() { _drawFrustum->clear(); auto size = Director::getInstance()->getWinSize(); - + Color4F color(1.f, 1.f, 0.f, 1); - + // top-left - Vec3 tl_0,tl_1; - Vec3 src(0,0,0); + Vec3 tl_0, tl_1; + Vec3 src(0, 0, 0); tl_0 = _cameraFirst->unproject(src); - src = Vec3(0,0,1); + src = Vec3(0, 0, 1); tl_1 = _cameraFirst->unproject(src); - + // top-right - Vec3 tr_0,tr_1; - src = Vec3(size.width,0,0); + Vec3 tr_0, tr_1; + src = Vec3(size.width, 0, 0); tr_0 = _cameraFirst->unproject(src); - src = Vec3(size.width,0,1); + src = Vec3(size.width, 0, 1); tr_1 = _cameraFirst->unproject(src); - + // bottom-left - Vec3 bl_0,bl_1; - src = Vec3(0,size.height,0); + Vec3 bl_0, bl_1; + src = Vec3(0, size.height, 0); bl_0 = _cameraFirst->unproject(src); - src = Vec3(0,size.height,1); + src = Vec3(0, size.height, 1); bl_1 = _cameraFirst->unproject(src); - + // bottom-right - Vec3 br_0,br_1; - src = Vec3(size.width,size.height,0); + Vec3 br_0, br_1; + src = Vec3(size.width, size.height, 0); br_0 = _cameraFirst->unproject(src); - src = Vec3(size.width,size.height,1); + src = Vec3(size.width, size.height, 1); br_1 = _cameraFirst->unproject(src); - + _drawFrustum->drawLine(tl_0, tl_1, color); _drawFrustum->drawLine(tr_0, tr_1, color); _drawFrustum->drawLine(bl_0, bl_1, color); _drawFrustum->drawLine(br_0, br_1, color); - + _drawFrustum->drawLine(tl_0, tr_0, color); _drawFrustum->drawLine(tr_0, br_0, color); _drawFrustum->drawLine(br_0, bl_0, color); _drawFrustum->drawLine(bl_0, tl_0, color); - + _drawFrustum->drawLine(tl_1, tr_1, color); _drawFrustum->drawLine(tr_1, br_1, color); _drawFrustum->drawLine(br_1, bl_1, color); @@ -986,23 +983,20 @@ void CameraCullingDemo::drawCameraFrustum() //////////////////////////////////////////////////////////// // CameraArcBallDemo CameraArcBallDemo::CameraArcBallDemo() -: CameraBaseTest() -, _layer3D(nullptr) -, _cameraType(CameraType::Free) -, _camera(nullptr) -, _drawGrid(nullptr) -, _radius(1.0f) -, _distanceZ(50.0f) -, _operate(OperateCamType::RotateCamera) -, _center(Vec3(0,0,0)) -, _target(0) -, _sprite3D1(nullptr) -, _sprite3D2(nullptr) -{ -} -CameraArcBallDemo::~CameraArcBallDemo() -{ -} + : CameraBaseTest() + , _layer3D(nullptr) + , _cameraType(CameraType::Free) + , _camera(nullptr) + , _drawGrid(nullptr) + , _radius(1.0f) + , _distanceZ(50.0f) + , _operate(OperateCamType::RotateCamera) + , _center(Vec3(0, 0, 0)) + , _target(0) + , _sprite3D1(nullptr) + , _sprite3D2(nullptr) +{} +CameraArcBallDemo::~CameraArcBallDemo() {} std::string CameraArcBallDemo::title() const { @@ -1014,32 +1008,34 @@ void CameraArcBallDemo::onEnter() CameraBaseTest::onEnter(); _rotationQuat.set(0.0f, 0.0f, 0.0f, 1.0f); schedule(CC_SCHEDULE_SELECTOR(CameraArcBallDemo::update), 0.0f); - auto s = Director::getInstance()->getWinSize(); - auto listener = EventListenerTouchAllAtOnce::create(); + auto s = Director::getInstance()->getWinSize(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesMoved = CC_CALLBACK_2(CameraArcBallDemo::onTouchsMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); // switch camera MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(20); - - auto menuItem1 = MenuItemFont::create("Switch Operation", CC_CALLBACK_1(CameraArcBallDemo::switchOperateCallback,this)); - menuItem1->setColor(Color3B(0,200,20)); - auto menuItem2 = MenuItemFont::create("Switch Target", CC_CALLBACK_1(CameraArcBallDemo::switchTargetCallback,this)); - menuItem2->setColor(Color3B(0,200,20)); - auto menu = Menu::create(menuItem1,menuItem2,NULL); + + auto menuItem1 = + MenuItemFont::create("Switch Operation", CC_CALLBACK_1(CameraArcBallDemo::switchOperateCallback, this)); + menuItem1->setColor(Color3B(0, 200, 20)); + auto menuItem2 = + MenuItemFont::create("Switch Target", CC_CALLBACK_1(CameraArcBallDemo::switchTargetCallback, this)); + menuItem2->setColor(Color3B(0, 200, 20)); + auto menu = Menu::create(menuItem1, menuItem2, NULL); menu->setPosition(Vec2::ZERO); - menuItem1->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y -70); - menuItem2->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y -100); + menuItem1->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y - 70); + menuItem2->setPosition(VisibleRect::left().x + 80, VisibleRect::top().y - 100); addChild(menu, 1); - auto layer3D=Layer::create(); - addChild(layer3D,0); - _layer3D=layer3D; + auto layer3D = Layer::create(); + addChild(layer3D, 0); + _layer3D = layer3D; if (_camera == nullptr) { - _camera=Camera::createPerspective(60, (float)s.width/s.height, 1, 1000); + _camera = Camera::createPerspective(60, (float)s.width / s.height, 1, 1000); _camera->setCameraFlag(CameraFlag::USER1); _camera->setPosition3D(Vec3(0.0f, 10.0f, 50.0f)); _camera->lookAt(Vec3(0, 0, 0), Vec3(0.0f, 1.0f, 0.0f)); @@ -1049,36 +1045,35 @@ void CameraArcBallDemo::onEnter() _sprite3D1 = Sprite3D::create("Sprite3DTest/orc.c3b"); _sprite3D1->setScale(0.5); - _sprite3D1->setRotation3D(Vec3(0.0f,180.0f,0.0f)); - _sprite3D1->setPosition3D(Vec3(0,0,0)); + _sprite3D1->setRotation3D(Vec3(0.0f, 180.0f, 0.0f)); + _sprite3D1->setPosition3D(Vec3(0, 0, 0)); _layer3D->addChild(_sprite3D1); _sprite3D2 = Sprite3D::create("Sprite3DTest/boss.c3b"); _sprite3D2->setScale(0.6f); - _sprite3D2->setRotation3D(Vec3(-90.0f,0.0f,0.0f)); - _sprite3D2->setPosition3D(Vec3(20.0f,0.0f,0.0f)); + _sprite3D2->setRotation3D(Vec3(-90.0f, 0.0f, 0.0f)); + _sprite3D2->setPosition3D(Vec3(20.0f, 0.0f, 0.0f)); _layer3D->addChild(_sprite3D2); - _drawGrid =DrawNode3D::create(); + _drawGrid = DrawNode3D::create(); - //draw x - for( int j =-20; j<=20 ;j++) + // draw x + for (int j = -20; j <= 20; j++) { - _drawGrid->drawLine(Vec3(-100.0f, 0, 5.0f*j),Vec3(100.0f,0,5.0f*j),Color4F(1,0,0,1)); + _drawGrid->drawLine(Vec3(-100.0f, 0, 5.0f * j), Vec3(100.0f, 0, 5.0f * j), Color4F(1, 0, 0, 1)); } - //draw z - for( int j =-20; j<=20 ;j++) + // draw z + for (int j = -20; j <= 20; j++) { - _drawGrid->drawLine(Vec3(5.0f*j, 0, -100.0f),Vec3(5.0f*j,0,100.0f),Color4F(0,0,1,1)); + _drawGrid->drawLine(Vec3(5.0f * j, 0, -100.0f), Vec3(5.0f * j, 0, 100.0f), Color4F(0, 0, 1, 1)); } - //draw y - _drawGrid->drawLine(Vec3(0, 0, 0),Vec3(0,50.0f,0),Color4F(0,1,0,1)); + // draw y + _drawGrid->drawLine(Vec3(0, 0, 0), Vec3(0, 50.0f, 0), Color4F(0, 1, 0, 1)); _layer3D->addChild(_drawGrid); _layer3D->setCameraMask(2); updateCameraTransform(); - } void CameraArcBallDemo::onExit() @@ -1090,74 +1085,77 @@ void CameraArcBallDemo::onExit() } } -void CameraArcBallDemo::onTouchsMoved( const std::vector &touchs, Event *event ) +void CameraArcBallDemo::onTouchsMoved(const std::vector& touchs, Event* event) { if (!touchs.empty()) { - if(_operate == OperateCamType::RotateCamera) //arc ball rotate + if (_operate == OperateCamType::RotateCamera) // arc ball rotate { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 prelocation = touchs[0]->getPreviousLocationInView(); - Vec2 location = touchs[0]->getLocationInView(); - location.x = 2.0f * (location.x) / (visibleSize.width) - 1.0f; - location.y = 2.0f * (visibleSize.height - location.y) / (visibleSize.height) - 1.0f; - prelocation.x = 2.0f * (prelocation.x) / (visibleSize.width) - 1.0f; - prelocation.y = 2.0f * (visibleSize.height - prelocation.y) / (visibleSize.height) - 1.0f; + Vec2 location = touchs[0]->getLocationInView(); + location.x = 2.0f * (location.x) / (visibleSize.width) - 1.0f; + location.y = 2.0f * (visibleSize.height - location.y) / (visibleSize.height) - 1.0f; + prelocation.x = 2.0f * (prelocation.x) / (visibleSize.width) - 1.0f; + prelocation.y = 2.0f * (visibleSize.height - prelocation.y) / (visibleSize.height) - 1.0f; Vec3 axes; float angle; - calculateArcBall(axes, angle, prelocation.x, prelocation.y, location.x, location.y); //calculate rotation quaternion parameters - Quaternion quat(axes, angle); //get rotation quaternion + calculateArcBall(axes, angle, prelocation.x, prelocation.y, location.x, + location.y); // calculate rotation quaternion parameters + Quaternion quat(axes, angle); // get rotation quaternion _rotationQuat = quat * _rotationQuat; - updateCameraTransform(); //update camera Transform + updateCameraTransform(); // update camera Transform } - else if(_operate == OperateCamType::MoveCamera) //camera zoom + else if (_operate == OperateCamType::MoveCamera) // camera zoom { Point newPos = touchs[0]->getPreviousLocation() - touchs[0]->getLocation(); - _distanceZ -= newPos.y*0.1f; + _distanceZ -= newPos.y * 0.1f; updateCameraTransform(); } } } -void CameraArcBallDemo::calculateArcBall( cocos2d::Vec3 & axis, float & angle, float p1x, float p1y, float p2x, float p2y ) +void CameraArcBallDemo::calculateArcBall(cocos2d::Vec3& axis, float& angle, float p1x, float p1y, float p2x, float p2y) { Mat4 rotation_matrix; Mat4::createRotation(_rotationQuat, &rotation_matrix); - Vec3 uv = rotation_matrix * Vec3(0.0f,1.0f,0.0f); //rotation y - Vec3 sv = rotation_matrix * Vec3(1.0f,0.0f,0.0f); //rotation x - Vec3 lv = rotation_matrix * Vec3(0.0f,0.0f,-1.0f);//rotation z + Vec3 uv = rotation_matrix * Vec3(0.0f, 1.0f, 0.0f); // rotation y + Vec3 sv = rotation_matrix * Vec3(1.0f, 0.0f, 0.0f); // rotation x + Vec3 lv = rotation_matrix * Vec3(0.0f, 0.0f, -1.0f); // rotation z - Vec3 p1 = sv * p1x + uv * p1y - lv * projectToSphere(_radius, p1x, p1y); //start point screen transform to 3d - Vec3 p2 = sv * p2x + uv * p2y - lv * projectToSphere(_radius, p2x, p2y); //end point screen transform to 3d + Vec3 p1 = sv * p1x + uv * p1y - lv * projectToSphere(_radius, p1x, p1y); // start point screen transform to 3d + Vec3 p2 = sv * p2x + uv * p2y - lv * projectToSphere(_radius, p2x, p2y); // end point screen transform to 3d - Vec3::cross(p2, p1, &axis); //calculate rotation axis + Vec3::cross(p2, p1, &axis); // calculate rotation axis axis.normalize(); float t = (p2 - p1).length() / (2.0f * _radius); - //clamp -1 to 1 - if (t > 1.0) t = 1.0; - if (t < -1.0) t = -1.0; - angle = asin(t); //rotation angle + // clamp -1 to 1 + if (t > 1.0) + t = 1.0; + if (t < -1.0) + t = -1.0; + angle = asin(t); // rotation angle } /* project an x,y pair onto a sphere of radius r or a hyperbolic sheet if we are away from the center of the sphere. */ -float CameraArcBallDemo::projectToSphere( float r, float x, float y ) +float CameraArcBallDemo::projectToSphere(float r, float x, float y) { float d, t, z; - d = sqrt(x*x + y*y); - if (d < r * 0.70710678118654752440)//inside sphere + d = sqrt(x * x + y * y); + if (d < r * 0.70710678118654752440) // inside sphere { - z = sqrt(r*r - d*d); - } - else //on hyperbola + z = sqrt(r * r - d * d); + } + else // on hyperbola { t = r / 1.41421356237309504880f; - z = t*t / d; + z = t * t / d; } return z; } @@ -1174,11 +1172,11 @@ void CameraArcBallDemo::updateCameraTransform() void CameraArcBallDemo::switchOperateCallback(Ref* sender) { - if(_operate == OperateCamType::MoveCamera) + if (_operate == OperateCamType::MoveCamera) { _operate = OperateCamType::RotateCamera; } - else if(_operate == OperateCamType::RotateCamera) + else if (_operate == OperateCamType::RotateCamera) { _operate = OperateCamType::MoveCamera; } @@ -1186,13 +1184,13 @@ void CameraArcBallDemo::switchOperateCallback(Ref* sender) void CameraArcBallDemo::switchTargetCallback(Ref* sender) { - if(_target == 0) + if (_target == 0) { _target = 1; _center = _sprite3D2->getPosition3D(); updateCameraTransform(); } - else if(_target == 1) + else if (_target == 1) { _target = 0; _center = _sprite3D1->getPosition3D(); @@ -1202,15 +1200,12 @@ void CameraArcBallDemo::switchTargetCallback(Ref* sender) void CameraArcBallDemo::update(float dt) { - //updateCameraTransform(); + // updateCameraTransform(); } //////////////////////////////////////////////////////////// // FogTestDemo -FogTestDemo::FogTestDemo() -: CameraBaseTest() -{ -} +FogTestDemo::FogTestDemo() : CameraBaseTest() {} FogTestDemo::~FogTestDemo() { CC_SAFE_RELEASE_NULL(_programState1); @@ -1226,159 +1221,152 @@ void FogTestDemo::onEnter() { CameraBaseTest::onEnter(); schedule(CC_SCHEDULE_SELECTOR(FogTestDemo::update), 0.0f); - Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1)); + Director::getInstance()->setClearColor(Color4F(0.5, 0.5, 0.5, 1)); - auto s = Director::getInstance()->getWinSize(); - auto listener = EventListenerTouchAllAtOnce::create(); + auto s = Director::getInstance()->getWinSize(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesMoved = CC_CALLBACK_2(FogTestDemo::onTouchesMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); // switch fog type TTFConfig ttfConfig("fonts/arial.ttf", 20); - - auto label1 = Label::createWithTTF(ttfConfig,"Linear "); - auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,0)); - auto label2 = Label::createWithTTF(ttfConfig,"Exp"); - auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,1)); - auto label3 = Label::createWithTTF(ttfConfig,"Exp2"); - auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(FogTestDemo::switchTypeCallback,this,2)); - auto menu = Menu::create(menuItem1, menuItem2, menuItem3, nullptr); - + + auto label1 = Label::createWithTTF(ttfConfig, "Linear "); + auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(FogTestDemo::switchTypeCallback, this, 0)); + auto label2 = Label::createWithTTF(ttfConfig, "Exp"); + auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(FogTestDemo::switchTypeCallback, this, 1)); + auto label3 = Label::createWithTTF(ttfConfig, "Exp2"); + auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(FogTestDemo::switchTypeCallback, this, 2)); + auto menu = Menu::create(menuItem1, menuItem2, menuItem3, nullptr); + menu->setPosition(Vec2::ZERO); - - menuItem1->setPosition(VisibleRect::left().x+60, VisibleRect::top().y-50); - menuItem2->setPosition(VisibleRect::left().x+60, VisibleRect::top().y -100); - menuItem3->setPosition(VisibleRect::left().x+60, VisibleRect::top().y -150); - addChild(menu, 0); + menuItem1->setPosition(VisibleRect::left().x + 60, VisibleRect::top().y - 50); + menuItem2->setPosition(VisibleRect::left().x + 60, VisibleRect::top().y - 100); + menuItem3->setPosition(VisibleRect::left().x + 60, VisibleRect::top().y - 150); + addChild(menu, 0); - auto layer3D=Layer::create(); - addChild(layer3D,0); - _layer3D=layer3D; + auto layer3D = Layer::create(); + addChild(layer3D, 0); + _layer3D = layer3D; CC_SAFE_RELEASE_NULL(_programState1); CC_SAFE_RELEASE_NULL(_programState2); auto vertexSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.vert"); - auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag"); - auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource); - _programState1 = new backend::ProgramState(program); - _programState2 = new backend::ProgramState(program); + auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag"); + auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource); + _programState1 = new backend::ProgramState(program); + _programState2 = new backend::ProgramState(program); CC_SAFE_RELEASE(program); - + _sprite3D1 = Sprite3D::create("Sprite3DTest/teapot.c3b"); _sprite3D2 = Sprite3D::create("Sprite3DTest/teapot.c3b"); _sprite3D1->setProgramState(_programState1); _sprite3D2->setProgramState(_programState2); - auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); - float fogStart = 10; - float fogEnd = 60; - int fogEquation = 0; + auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); + float fogStart = 10; + float fogEnd = 60; + int fogEquation = 0; - SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); - SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); - SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); - SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); + SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); + SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); + SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); + SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); _layer3D->addChild(_sprite3D1); - _sprite3D1->setPosition3D( Vec3( 0, 0,0 ) ); + _sprite3D1->setPosition3D(Vec3(0, 0, 0)); _sprite3D1->setScale(2.0f); - _sprite3D1->setRotation3D(Vec3(-90.0f,180.0f,0.0f)); + _sprite3D1->setRotation3D(Vec3(-90.0f, 180.0f, 0.0f)); _layer3D->addChild(_sprite3D2); - _sprite3D2->setPosition3D( Vec3( 0.0f, 0.0f,-20.0f) ); + _sprite3D2->setPosition3D(Vec3(0.0f, 0.0f, -20.0f)); _sprite3D2->setScale(2.0f); - _sprite3D2->setRotation3D(Vec3(-90.0f,180.0f,0.0f)); + _sprite3D2->setRotation3D(Vec3(-90.0f, 180.0f, 0.0f)); if (_camera == nullptr) { - _camera=Camera::createPerspective(60, (float)s.width/s.height, 1, 1000); + _camera = Camera::createPerspective(60, (float)s.width / s.height, 1, 1000); _camera->setCameraFlag(CameraFlag::USER1); _camera->setPosition3D(Vec3(0.0f, 30.0f, 40.0f)); - _camera->lookAt(Vec3(0,0,0), Vec3(0.0f, 1.0f, 0.0f)); + _camera->lookAt(Vec3(0, 0, 0), Vec3(0.0f, 1.0f, 0.0f)); _layer3D->addChild(_camera); } _layer3D->setCameraMask(2); - #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) - _backToForegroundListener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, - [this](EventCustom*) - { - Director::getInstance()->setClearColor(Color4F(0.5,0.5,0.5,1)); - CC_SAFE_RELEASE_NULL(_programState1); - CC_SAFE_RELEASE_NULL(_programState2); - - auto vertexSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.vert"); - auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag"); - auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource); - _programState1 = new backend::ProgramState(program); - _programState2 = new backend::ProgramState(program); - - _sprite3D1->setProgramState(_programState1); - _sprite3D2->setProgramState(_programState2); - CC_SAFE_RELEASE(program); - - auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); - float fogStart = 10; - float fogEnd = 60; - int fogEquation = 0; - - SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); - SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); - SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); - SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); - } - ); + _backToForegroundListener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, [this](EventCustom*) { + Director::getInstance()->setClearColor(Color4F(0.5, 0.5, 0.5, 1)); + CC_SAFE_RELEASE_NULL(_programState1); + CC_SAFE_RELEASE_NULL(_programState2); + + auto vertexSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.vert"); + auto fragSource = FileUtils::getInstance()->getStringFromFile("Sprite3DTest/fog.frag"); + auto program = backend::Device::getInstance()->newProgram(vertexSource, fragSource); + _programState1 = new backend::ProgramState(program); + _programState2 = new backend::ProgramState(program); + + _sprite3D1->setProgramState(_programState1); + _sprite3D2->setProgramState(_programState2); + CC_SAFE_RELEASE(program); + + auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); + float fogStart = 10; + float fogEnd = 60; + int fogEquation = 0; + + SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); + SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); + SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); + SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); + }); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundListener, -1); #endif - } -void FogTestDemo::switchTypeCallback(Ref* sender,int type) +void FogTestDemo::switchTypeCallback(Ref* sender, int type) { - if(type == 0) + if (type == 0) { auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); float fogStart = 10; float fogEnd = 60; int fogEquation = 0; - SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); - SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); - SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); - SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); - + SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); + SET_UNIFORM("u_fogStart", &fogStart, sizeof(fogStart)); + SET_UNIFORM("u_fogEnd", &fogEnd, sizeof(fogEnd)); + SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); } - else if(type == 1) + else if (type == 1) { - auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); - float fogDensity = 0.03f; - int fogEquation = 1; + auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); + float fogDensity = 0.03f; + int fogEquation = 1; - SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); - SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity)); - SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); + SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); + SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity)); + SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); } - else if(type == 2) + else if (type == 2) { - auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); - float fogDensity = 0.03f; - int fogEquation = 2; + auto fogColor = Vec4(0.5, 0.5, 0.5, 1.0); + float fogDensity = 0.03f; + int fogEquation = 2; - SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); - SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity)); - SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); + SET_UNIFORM("u_fogColor", &fogColor, sizeof(fogColor)); + SET_UNIFORM("u_fogDensity", &fogDensity, sizeof(fogDensity)); + SET_UNIFORM("u_fogEquation", &fogEquation, sizeof(fogEquation)); } } void FogTestDemo::onExit() { CameraBaseTest::onExit(); - Director::getInstance()->setClearColor(Color4F(0,0,0,1)); + Director::getInstance()->setClearColor(Color4F(0, 0, 0, 1)); if (_camera) { _camera = nullptr; @@ -1389,108 +1377,102 @@ void FogTestDemo::onExit() #endif } -void FogTestDemo::update(float dt) -{ -} +void FogTestDemo::update(float dt) {} -void FogTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +void FogTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event* event) { - if(touches.size()==1) + if (touches.size() == 1) { Vec2 prelocation = touches[0]->getPreviousLocationInView(); - Vec2 location = touches[0]->getLocationInView(); - Vec2 newPos = prelocation - location; - if(_cameraType==CameraType::Free) + Vec2 location = touches[0]->getLocationInView(); + Vec2 newPos = prelocation - location; + if (_cameraType == CameraType::Free) { Vec3 cameraDir; Vec3 cameraRightDir; _camera->getNodeToWorldTransform().getForwardVector(&cameraDir); cameraDir.normalize(); - cameraDir.y=0; + cameraDir.y = 0; _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir); cameraRightDir.normalize(); - cameraRightDir.y=0; - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos-=cameraDir*newPos.y*0.1f; - cameraPos+=cameraRightDir*newPos.x*0.1f; + cameraRightDir.y = 0; + Vec3 cameraPos = _camera->getPosition3D(); + cameraPos -= cameraDir * newPos.y * 0.1f; + cameraPos += cameraRightDir * newPos.x * 0.1f; _camera->setPosition3D(cameraPos); } } } -//CameraFrameBufferTest::CameraFrameBufferTest() +// CameraFrameBufferTest::CameraFrameBufferTest() //{ -// -//} // -//CameraFrameBufferTest::~CameraFrameBufferTest() +// } +// +// CameraFrameBufferTest::~CameraFrameBufferTest() //{ -// -//} // -//std::string CameraFrameBufferTest::title() const +// } +// +// std::string CameraFrameBufferTest::title() const //{ -// return "Camera FrameBuffer Object Test"; -//} +// return "Camera FrameBuffer Object Test"; +// } // -//void CameraFrameBufferTest::onEnter() +// void CameraFrameBufferTest::onEnter() //{ -// auto sizeInpixels = Director::getInstance()->getWinSizeInPixels(); -// auto size = Director::getInstance()->getWinSize(); -// auto fboSize = Size(sizeInpixels.width * 1, sizeInpixels.height * 1.5); -// auto fbo = experimental::FrameBuffer::create(1, fboSize.width, fboSize.height); -// -// CameraBaseTest::onEnter(); -// //auto sprite = Sprite::createWithTexture(fbo); -// //sprite->setPosition(Vec2(100,100)); -// //std::string filename = "Sprite3DTest/girl.c3b"; -// //auto sprite = Sprite3D::create(filename); -// //sprite->setScale(1.0); -// //auto animation = Animation3D::create(filename); -// //if (animation) -// //{ -// // auto animate = Animate3D::create(animation); -// -// // sprite->runAction(RepeatForever::create(animate)); -// //} -// //sprite->setPosition(Vec2(100,100)); -// auto rt = experimental::RenderTarget::create(fboSize.width, fboSize.height); -// auto rtDS = experimental::RenderTargetDepthStencil::create(fboSize.width, fboSize.height); -// fbo->attachRenderTarget(rt); -// fbo->attachDepthStencilTarget(rtDS); -// auto sprite = Sprite::createWithTexture(fbo->getRenderTarget()->getTexture()); -// sprite->setScale(0.3f); -// sprite->runAction(RepeatForever::create(RotateBy::create(1, 90))); -// sprite->setPosition(size.width/2, size.height/2); -// addChild(sprite); -// -// auto sprite2 = Sprite::create(s_pathGrossini); -// sprite2->setPosition(Vec2(size.width/5,size.height/5)); -// addChild(sprite2); -// sprite2->setCameraMask((unsigned short)CameraFlag::USER1); -// auto move = MoveBy::create(1.0, Vec2(100,100)); -// sprite2->runAction( -// RepeatForever::create( -// Sequence::createWithTwoActions( -// move, move->reverse()) -// ) -// ); -// -// auto camera = Camera::create(); -// camera->setCameraFlag(CameraFlag::USER1); -// camera->setDepth(-1); -// camera->setFrameBufferObject(fbo); -// fbo->setClearColor(Color4F(1,1,1,1)); -// addChild(camera); -//} - -BackgroundColorBrushTest::BackgroundColorBrushTest() -{ -} +// auto sizeInpixels = Director::getInstance()->getWinSizeInPixels(); +// auto size = Director::getInstance()->getWinSize(); +// auto fboSize = Size(sizeInpixels.width * 1, sizeInpixels.height * 1.5); +// auto fbo = experimental::FrameBuffer::create(1, fboSize.width, fboSize.height); +// +// CameraBaseTest::onEnter(); +// //auto sprite = Sprite::createWithTexture(fbo); +// //sprite->setPosition(Vec2(100,100)); +// //std::string filename = "Sprite3DTest/girl.c3b"; +// //auto sprite = Sprite3D::create(filename); +// //sprite->setScale(1.0); +// //auto animation = Animation3D::create(filename); +// //if (animation) +// //{ +// // auto animate = Animate3D::create(animation); +// +// // sprite->runAction(RepeatForever::create(animate)); +// //} +// //sprite->setPosition(Vec2(100,100)); +// auto rt = experimental::RenderTarget::create(fboSize.width, fboSize.height); +// auto rtDS = experimental::RenderTargetDepthStencil::create(fboSize.width, fboSize.height); +// fbo->attachRenderTarget(rt); +// fbo->attachDepthStencilTarget(rtDS); +// auto sprite = Sprite::createWithTexture(fbo->getRenderTarget()->getTexture()); +// sprite->setScale(0.3f); +// sprite->runAction(RepeatForever::create(RotateBy::create(1, 90))); +// sprite->setPosition(size.width/2, size.height/2); +// addChild(sprite); +// +// auto sprite2 = Sprite::create(s_pathGrossini); +// sprite2->setPosition(Vec2(size.width/5,size.height/5)); +// addChild(sprite2); +// sprite2->setCameraMask((unsigned short)CameraFlag::USER1); +// auto move = MoveBy::create(1.0, Vec2(100,100)); +// sprite2->runAction( +// RepeatForever::create( +// Sequence::createWithTwoActions( +// move, move->reverse()) +// ) +// ); +// +// auto camera = Camera::create(); +// camera->setCameraFlag(CameraFlag::USER1); +// camera->setDepth(-1); +// camera->setFrameBufferObject(fbo); +// fbo->setClearColor(Color4F(1,1,1,1)); +// addChild(camera); +// } -BackgroundColorBrushTest::~BackgroundColorBrushTest() -{ -} +BackgroundColorBrushTest::BackgroundColorBrushTest() {} + +BackgroundColorBrushTest::~BackgroundColorBrushTest() {} std::string BackgroundColorBrushTest::title() const { @@ -1505,18 +1487,18 @@ std::string BackgroundColorBrushTest::subtitle() const void BackgroundColorBrushTest::onEnter() { CameraBaseTest::onEnter(); - + auto s = Director::getInstance()->getWinSize(); - + { // 1st Camera - auto camera = Camera::createPerspective(60.0f, (float)s.width/s.height, 1.0f, 1000.0f); + auto camera = Camera::createPerspective(60.0f, (float)s.width / s.height, 1.0f, 1000.0f); camera->setPosition3D(Vec3(0.0f, 0.0f, 200.0f)); camera->lookAt(Vec3::ZERO); camera->setDepth(-2); camera->setCameraFlag(CameraFlag::USER1); addChild(camera); - + // 3D model auto model = Sprite3D::create("Sprite3DTest/boss1.obj"); model->setScale(4); @@ -1526,15 +1508,15 @@ void BackgroundColorBrushTest::onEnter() addChild(model); model->runAction(RepeatForever::create(RotateBy::create(1.f, Vec3(10.0f, 20.0f, 30.0f)))); } - + { auto base = Node::create(); base->setContentSize(s); base->setCameraMask(static_cast(CameraFlag::USER2)); addChild(base); - + // 2nd Camera - auto camera = Camera::createPerspective(60, (float)s.width/s.height, 1, 1000); + auto camera = Camera::createPerspective(60, (float)s.width / s.height, 1, 1000); auto colorBrush = CameraBackgroundBrush::createColorBrush(Color4F(.1f, .1f, 1.f, .5f), 1.f); camera->setBackgroundBrush(colorBrush); camera->setPosition3D(Vec3(0.0f, 0.0f, 200.0f)); @@ -1542,19 +1524,19 @@ void BackgroundColorBrushTest::onEnter() camera->setDepth(-1); camera->setCameraFlag(CameraFlag::USER2); base->addChild(camera); - + // for alpha setting auto slider = ui::Slider::create(); slider->loadBarTexture("cocosui/sliderTrack.png"); slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); slider->loadProgressBarTexture("cocosui/sliderProgress.png"); - slider->setPosition(Vec2(s.width/2, s.height/4)); + slider->setPosition(Vec2(s.width / 2, s.height / 4)); slider->setPercent(50); - slider->addEventListener([slider, colorBrush](Ref*, ui::Slider::EventType){ - colorBrush->setColor(Color4F(.1f, .1f, 1.f, (float)slider->getPercent()/100.f)); + slider->addEventListener([slider, colorBrush](Ref*, ui::Slider::EventType) { + colorBrush->setColor(Color4F(.1f, .1f, 1.f, (float)slider->getPercent() / 100.f)); }); addChild(slider); - + // 3D model for 2nd camera auto model = Sprite3D::create("Sprite3DTest/boss1.obj"); model->setScale(4); diff --git a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h index 75b4e244dbf6..f15d82be427a 100644 --- a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h +++ b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h @@ -33,33 +33,34 @@ THE SOFTWARE. #include -namespace cocos2d { - class Sprite3D; - class Delay; -} +namespace cocos2d +{ +class Sprite3D; +class Delay; +} // namespace cocos2d enum State { - State_None = 0, - State_Idle = 0x01, - State_Move = 0x02, - State_Rotate = 0x04, - State_Speak = 0x08, - State_MeleeAttack = 0x10, + State_None = 0, + State_Idle = 0x01, + State_Move = 0x02, + State_Rotate = 0x04, + State_Speak = 0x08, + State_MeleeAttack = 0x10, State_RemoteAttack = 0x20, - State_Attack = 0x40, + State_Attack = 0x40, }; enum class CameraType { - Free = 0, + Free = 0, FirstPerson = 1, ThirdPerson = 2, }; enum class OperateCamType { - MoveCamera=0, - RotateCamera=1, + MoveCamera = 0, + RotateCamera = 1, }; DEFINE_TEST_SUITE(Camera3DTests); @@ -67,7 +68,6 @@ DEFINE_TEST_SUITE(Camera3DTests); class CameraBaseTest : public TestCase { public: - protected: cocos2d::BillBoard* bill1; cocos2d::BillBoard* bill2; @@ -75,7 +75,8 @@ class CameraBaseTest : public TestCase cocos2d::Label* l2; }; -class CameraRotationTest : public CameraBaseTest { +class CameraRotationTest : public CameraBaseTest +{ public: CREATE_FUNC(CameraRotationTest); @@ -92,7 +93,6 @@ class CameraRotationTest : public CameraBaseTest { virtual std::string subtitle() const override; protected: - cocos2d::Node* _camControlNode; cocos2d::Node* _camNode; cocos2d::EventListenerTouchOneByOne* _lis; @@ -109,41 +109,46 @@ class Camera3DTestDemo : public CameraBaseTest virtual void onExit() override; // overrides virtual std::string title() const override; - void addNewSpriteWithCoords(cocos2d::Vec3 p,std::string fileName,bool playAnimation=false,float scale=1.0f,bool bindCamera=false); - - void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); - void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); - void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); - - void scaleCameraCallback(cocos2d::Ref* sender,float value); - void rotateCameraCallback(cocos2d::Ref* sender,float value); - void SwitchViewCallback(cocos2d::Ref* sender,CameraType cameraType); + void addNewSpriteWithCoords(cocos2d::Vec3 p, + std::string fileName, + bool playAnimation = false, + float scale = 1.0f, + bool bindCamera = false); + + void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); + void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); + void onTouchesEnded(const std::vector& touches, cocos2d::Event* event); + + void scaleCameraCallback(cocos2d::Ref* sender, float value); + void rotateCameraCallback(cocos2d::Ref* sender, float value); + void SwitchViewCallback(cocos2d::Ref* sender, CameraType cameraType); void updateCamera(float fDelta); void move3D(float elapsedTime); void updateState(float elapsedTime); - bool isState(unsigned int state,unsigned int bit) const; + bool isState(unsigned int state, unsigned int bit) const; void reachEndCallBack(); - + bool onTouchesCommon(cocos2d::Touch* touch, cocos2d::Event* event, bool* touchProperty); bool onTouchesZoomOut(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchesZoomOutEnd(cocos2d::Touch* touch, cocos2d::Event* event); bool onTouchesZoomIn(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchesZoomInEnd(cocos2d::Touch* touch, cocos2d::Event* event); - + bool onTouchesRotateLeft(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchesRotateLeftEnd(cocos2d::Touch* touch, cocos2d::Event* event); bool onTouchesRotateRight(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchesRotateRightEnd(cocos2d::Touch* touch, cocos2d::Event* event); + protected: - std::string _title; - cocos2d::Layer* _layer3D; - cocos2d::Sprite3D* _sprite3D; - cocos2d::Vec3 _targetPos; - CameraType _cameraType; - cocos2d::MenuItem* _incRot; - cocos2d::MenuItem* _decRot; - unsigned int _curState; - cocos2d::Camera* _camera; + std::string _title; + cocos2d::Layer* _layer3D; + cocos2d::Sprite3D* _sprite3D; + cocos2d::Vec3 _targetPos; + CameraType _cameraType; + cocos2d::MenuItem* _incRot; + cocos2d::MenuItem* _decRot; + unsigned int _curState; + cocos2d::Camera* _camera; cocos2d::MoveTo* _moveAction; bool _bZoomOut; bool _bZoomIn; @@ -161,12 +166,12 @@ class CameraCullingDemo : public CameraBaseTest CREATE_FUNC(CameraCullingDemo); CameraCullingDemo(); virtual ~CameraCullingDemo(); - + virtual void onEnter() override; virtual void onExit() override; - + virtual void update(float dt) override; - + // overrides virtual std::string title() const override; void reachEndCallBack(); @@ -175,18 +180,18 @@ class CameraCullingDemo : public CameraBaseTest void delSpriteCallback(cocos2d::Ref* sender); void drawCameraFrustum(); - + protected: - cocos2d::Label* _labelSprite3DCount; - cocos2d::Layer* _layer3D; - std::vector _objects; - CameraType _cameraType; - cocos2d::Camera* _cameraFirst; - cocos2d::Camera* _cameraThird; - cocos2d::MoveBy* _moveAction; - cocos2d::DrawNode3D* _drawAABB; - cocos2d::DrawNode3D* _drawFrustum; - int _row; + cocos2d::Label* _labelSprite3DCount; + cocos2d::Layer* _layer3D; + std::vector _objects; + CameraType _cameraType; + cocos2d::Camera* _cameraFirst; + cocos2d::Camera* _cameraThird; + cocos2d::MoveBy* _moveAction; + cocos2d::DrawNode3D* _drawAABB; + cocos2d::DrawNode3D* _drawFrustum; + int _row; }; class CameraArcBallDemo : public CameraBaseTest @@ -195,35 +200,40 @@ class CameraArcBallDemo : public CameraBaseTest CREATE_FUNC(CameraArcBallDemo); CameraArcBallDemo(); virtual ~CameraArcBallDemo(); - + virtual void onEnter() override; virtual void onExit() override; - + virtual void update(float dt) override; - + // overrides virtual std::string title() const override; void switchOperateCallback(cocos2d::Ref* sender); void switchTargetCallback(cocos2d::Ref* sender); - void onTouchsMoved(const std::vector &touchs, cocos2d::Event *event); + void onTouchsMoved(const std::vector& touchs, cocos2d::Event* event); void updateCameraTransform(); - void calculateArcBall( cocos2d::Vec3 & axis, float & angle, float p1x, float p1y, float p2x, float p2y );//calculate rotation quaternion parameters - float projectToSphere( float r, float x, float y );//points on the screen project to arc ball + void calculateArcBall(cocos2d::Vec3& axis, + float& angle, + float p1x, + float p1y, + float p2x, + float p2y); // calculate rotation quaternion parameters + float projectToSphere(float r, float x, float y); // points on the screen project to arc ball protected: - cocos2d::Layer* _layer3D; - CameraType _cameraType; - cocos2d::Camera* _camera; - cocos2d::DrawNode3D* _drawGrid; - cocos2d::Quaternion _rotationQuat; //rotation Quaternion - float _radius; //arc ball radius - float _distanceZ; - OperateCamType _operate; //switch rotate or zoom - cocos2d::Vec3 _center; //camera look target - int _target; //switch camera look target - cocos2d::Sprite3D* _sprite3D1; - cocos2d::Sprite3D* _sprite3D2; + cocos2d::Layer* _layer3D; + CameraType _cameraType; + cocos2d::Camera* _camera; + cocos2d::DrawNode3D* _drawGrid; + cocos2d::Quaternion _rotationQuat; // rotation Quaternion + float _radius; // arc ball radius + float _distanceZ; + OperateCamType _operate; // switch rotate or zoom + cocos2d::Vec3 _center; // camera look target + int _target; // switch camera look target + cocos2d::Sprite3D* _sprite3D1; + cocos2d::Sprite3D* _sprite3D2; }; class FogTestDemo : public CameraBaseTest @@ -232,44 +242,44 @@ class FogTestDemo : public CameraBaseTest CREATE_FUNC(FogTestDemo); FogTestDemo(); virtual ~FogTestDemo(); - + virtual void onEnter() override; virtual void onExit() override; - + virtual void update(float dt) override; - + // overrides virtual std::string title() const override; - void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); + void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); + + void switchTypeCallback(cocos2d::Ref* sender, int type); - void switchTypeCallback(cocos2d::Ref* sender,int type); - protected: - CameraType _cameraType = CameraType::Free; - cocos2d::Layer* _layer3D = nullptr; - cocos2d::Camera* _camera = nullptr; - cocos2d::Sprite3D* _sprite3D1 = nullptr; - cocos2d::Sprite3D* _sprite3D2 = nullptr; - cocos2d::backend::ProgramState* _programState1 = nullptr; - cocos2d::backend::ProgramState* _programState2 = nullptr; + CameraType _cameraType = CameraType::Free; + cocos2d::Layer* _layer3D = nullptr; + cocos2d::Camera* _camera = nullptr; + cocos2d::Sprite3D* _sprite3D1 = nullptr; + cocos2d::Sprite3D* _sprite3D2 = nullptr; + cocos2d::backend::ProgramState* _programState1 = nullptr; + cocos2d::backend::ProgramState* _programState2 = nullptr; #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) cocos2d::EventListenerCustom* _backToForegroundListener; #endif }; -//class CameraFrameBufferTest : public CameraBaseTest +// class CameraFrameBufferTest : public CameraBaseTest //{ -//public: -// CREATE_FUNC(CameraFrameBufferTest); -// CameraFrameBufferTest(); -// virtual ~CameraFrameBufferTest(); -// // overrides -// virtual std::string title() const override; -// -// virtual void onEnter() override; -//}; +// public: +// CREATE_FUNC(CameraFrameBufferTest); +// CameraFrameBufferTest(); +// virtual ~CameraFrameBufferTest(); +// // overrides +// virtual std::string title() const override; +// +// virtual void onEnter() override; +// }; class BackgroundColorBrushTest : public CameraBaseTest { @@ -277,11 +287,10 @@ class BackgroundColorBrushTest : public CameraBaseTest CREATE_FUNC(BackgroundColorBrushTest); BackgroundColorBrushTest(); virtual ~BackgroundColorBrushTest(); - + // overrides virtual std::string title() const override; virtual std::string subtitle() const override; - + virtual void onEnter() override; }; - diff --git a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp index 5e140b8fb87b..fed2238abd58 100644 --- a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp +++ b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. Copyright (c) 2021 @aismann; Peter Eismann, Germany; dreifrankensoft - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,32 +33,33 @@ #include "ChipmunkTest.h" - USING_NS_CC; USING_NS_CC_EXT; -enum { +enum +{ kTagParentNode = 1, }; -enum { +enum +{ Z_PHYSICS_DEBUG = 100, }; // callback to remove Shapes from the Space ChipmunkTest::ChipmunkTest() -{ +{ // enable events - auto touchListener = EventListenerTouchAllAtOnce::create(); + auto touchListener = EventListenerTouchAllAtOnce::create(); touchListener->onTouchesEnded = CC_CALLBACK_2(ChipmunkTest::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); - + Device::setAccelerometerEnabled(true); auto accListener = EventListenerAcceleration::create(CC_CALLBACK_2(ChipmunkTest::onAcceleration, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(accListener, this); - + // title auto label = Label::createWithTTF("Multi touch the screen", "fonts/Marker Felt.ttf", 36.0f); label->setPosition(VisibleRect::center().x, VisibleRect::top().y - 30); @@ -74,16 +75,16 @@ ChipmunkTest::ChipmunkTest() #if 1 // Use batch node. Faster - auto parent = SpriteBatchNode::create("Images/grossini_dance_atlas.png", 100); + auto parent = SpriteBatchNode::create("Images/grossini_dance_atlas.png", 100); _spriteTexture = parent->getTexture(); #else // doesn't use batch node. Slower _spriteTexture = Director::getInstance()->getTextureCache()->addImage("Images/grossini_dance_atlas.png"); - auto parent = Node::create(); + auto parent = Node::create(); #endif addChild(parent, 0, kTagParentNode); - addNewSpriteAtPosition(cocos2d::Vec2(200.0f,200.0f)); + addNewSpriteAtPosition(cocos2d::Vec2(200.0f, 200.0f)); // menu for debug layer MenuItemFont::setFontSize(18); @@ -91,29 +92,28 @@ ChipmunkTest::ChipmunkTest() auto menu = Menu::create(item, nullptr); this->addChild(menu); - menu->setPosition(VisibleRect::right().x-100, VisibleRect::top().y-60); - + menu->setPosition(VisibleRect::right().x - 100, VisibleRect::top().y - 60); scheduleUpdate(); - } void ChipmunkTest::toggleDebugCallback(Ref* sender) { - _debugLayer->setVisible(! _debugLayer->isVisible()); + _debugLayer->setVisible(!_debugLayer->isVisible()); } ChipmunkTest::~ChipmunkTest() { // manually Free rogue shapes - for( int i=0;i<4;i++) { - cpShapeFree( _walls[i] ); + for (int i = 0; i < 4; i++) + { + cpShapeFree(_walls[i]); } #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - cpSpaceFree(_space); + cpSpaceFree(_space); #else - cpHastySpaceFree(_space); + cpHastySpaceFree(_space); #endif Device::setAccelerometerEnabled(false); @@ -123,13 +123,13 @@ void ChipmunkTest::initPhysics() { // init chipmunk - //cpInitChipmunk(); + // cpInitChipmunk(); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - _space = cpSpaceNew(); + _space = cpSpaceNew(); #else - _space = cpHastySpaceNew(); - cpHastySpaceSetThreads(_space, 0); + _space = cpHastySpaceNew(); + cpHastySpaceSetThreads(_space, 0); #endif cpSpaceSetGravity(_space, cpv(0.0f, -100.0f)); @@ -139,27 +139,27 @@ void ChipmunkTest::initPhysics() // We have to free them manually // // bottom - _walls[0] = cpSegmentShapeNew( cpSpaceGetStaticBody(_space), - cpv(VisibleRect::leftBottom().x,VisibleRect::leftBottom().y), - cpv(VisibleRect::rightBottom().x, VisibleRect::rightBottom().y), 0.0f); + _walls[0] = + cpSegmentShapeNew(cpSpaceGetStaticBody(_space), cpv(VisibleRect::leftBottom().x, VisibleRect::leftBottom().y), + cpv(VisibleRect::rightBottom().x, VisibleRect::rightBottom().y), 0.0f); // top - _walls[1] = cpSegmentShapeNew( cpSpaceGetStaticBody(_space), - cpv(VisibleRect::leftTop().x, VisibleRect::leftTop().y), - cpv(VisibleRect::rightTop().x, VisibleRect::rightTop().y), 0.0f); + _walls[1] = cpSegmentShapeNew(cpSpaceGetStaticBody(_space), cpv(VisibleRect::leftTop().x, VisibleRect::leftTop().y), + cpv(VisibleRect::rightTop().x, VisibleRect::rightTop().y), 0.0f); // left - _walls[2] = cpSegmentShapeNew( cpSpaceGetStaticBody(_space), - cpv(VisibleRect::leftBottom().x,VisibleRect::leftBottom().y), - cpv(VisibleRect::leftTop().x,VisibleRect::leftTop().y), 0.0f); + _walls[2] = + cpSegmentShapeNew(cpSpaceGetStaticBody(_space), cpv(VisibleRect::leftBottom().x, VisibleRect::leftBottom().y), + cpv(VisibleRect::leftTop().x, VisibleRect::leftTop().y), 0.0f); // right - _walls[3] = cpSegmentShapeNew( cpSpaceGetStaticBody(_space), - cpv(VisibleRect::rightBottom().x, VisibleRect::rightBottom().y), - cpv(VisibleRect::rightTop().x, VisibleRect::rightTop().y), 0.0f); + _walls[3] = + cpSegmentShapeNew(cpSpaceGetStaticBody(_space), cpv(VisibleRect::rightBottom().x, VisibleRect::rightBottom().y), + cpv(VisibleRect::rightTop().x, VisibleRect::rightTop().y), 0.0f); + + for (int i = 0; i < 4; i++) + { - for( int i=0;i<4;i++) { - cpShapeSetElasticity(_walls[i], 1.0f); cpShapeSetFriction(_walls[i], 1.0f); cpSpaceAddShape(_space, _walls[i]); @@ -168,21 +168,21 @@ void ChipmunkTest::initPhysics() // Physics debug layer _debugLayer = PhysicsDebugNodeChipmunk2D::create(_space); this->addChild(_debugLayer, Z_PHYSICS_DEBUG); - } void ChipmunkTest::update(float delta) { // Should use a fixed size step based on the animation interval. int steps = 2; - float dt = Director::getInstance()->getAnimationInterval()/(float)steps; + float dt = Director::getInstance()->getAnimationInterval() / (float)steps; - for(int i=0; isetCPBody(body); sprite->setPosition(pos); - } void ChipmunkTest::onEnter() @@ -248,30 +246,30 @@ void ChipmunkTest::onEnter() void ChipmunkTest::onTouchesEnded(const std::vector& touches, Event* event) { - //Add a new body/atlas sprite at the touched location + // Add a new body/atlas sprite at the touched location - for( auto &touch: touches) + for (auto& touch : touches) { auto location = touch->getLocation(); - addNewSpriteAtPosition( location ); + addNewSpriteAtPosition(location); } } void ChipmunkTest::onAcceleration(Acceleration* acc, Event* event) { - static float prevX=0, prevY=0; + static float prevX = 0, prevY = 0; #define kFilterFactor 0.05f - float accelX = (float) acc->x * kFilterFactor + (1- kFilterFactor)*prevX; - float accelY = (float) acc->y * kFilterFactor + (1- kFilterFactor)*prevY; + float accelX = (float)acc->x * kFilterFactor + (1 - kFilterFactor) * prevX; + float accelY = (float)acc->y * kFilterFactor + (1 - kFilterFactor) * prevY; prevX = accelX; prevY = accelY; - auto v = cocos2d::Vec2( accelX, accelY); - v = v * 200; + auto v = cocos2d::Vec2(accelX, accelY); + v = v * 200; cpSpaceSetGravity(_space, cpv(v.x, v.y)); } @@ -279,4 +277,3 @@ ChipmunkTests::ChipmunkTests() { ADD_TEST_CASE(ChipmunkTest); } - diff --git a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.h b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.h index b8d4bdea98df..9cc7c87ff21f 100644 --- a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.h +++ b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.h @@ -3,17 +3,17 @@ Copyright (c) 2021 @aismann; Peter Eismann, Germany; dreifrankensoft http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -53,10 +53,10 @@ class ChipmunkTest : public TestCase virtual void onAcceleration(cocos2d::Acceleration* acc, cocos2d::Event* event); private: - cocos2d::Texture2D* _spriteTexture; // weak ref - cocos2d::extension::PhysicsDebugNodeChipmunk2D* _debugLayer; // weak ref + cocos2d::Texture2D* _spriteTexture; // weak ref + cocos2d::extension::PhysicsDebugNodeChipmunk2D* _debugLayer; // weak ref - cpSpace* _space; // strong ref + cpSpace* _space; // strong ref cpShape* _walls[4]; }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.cpp b/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.cpp index cbab6df3ee6a..f40ab497cad1 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.cpp +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.cpp @@ -20,7 +20,6 @@ THE SOFTWARE. ****************************************************************************/ - #include #include #include @@ -32,20 +31,20 @@ #include "ChipmunkTestBed.h" - USING_NS_CC; USING_NS_CC_EXT; -enum { - kTagParentNode = 1, +enum +{ + kTagParentNode = 1, }; -enum { - Z_PHYSICS_DEBUG = 100, +enum +{ + Z_PHYSICS_DEBUG = 100, }; - -extern ChipmunkDemo Example; // Use as template for new Chipmunk2D demos +extern ChipmunkDemo Example; // Use as template for new Chipmunk2D demos extern ChipmunkDemo LogoSmash; extern ChipmunkDemo PyramidStack; extern ChipmunkDemo Plink; @@ -73,391 +72,431 @@ extern ChipmunkDemo bench_list[]; extern int bench_count; int bench = 16; - -static Vec2 cpVert2Point(const cpVect& vert) { - return Vec2(vert.x, vert.y) + physicsDebugNodeOffset; +static Vec2 cpVert2Point(const cpVect& vert) +{ + return Vec2(vert.x, vert.y) + physicsDebugNodeOffset; } -ChipmunkDemo demos[] = { LogoSmash, PyramidStack, Plink, Tumble, PyramidTopple, Planet, Springies, Pump, TheoJansen, - Query, OneWay, Joints, Tank, Chains, Crane, ContactGraph, Buoyancy, PlatformerPlayer, Slice, Convex, Unicycle, - Sticky, Shatter }; +ChipmunkDemo demos[] = {LogoSmash, PyramidStack, Plink, Tumble, PyramidTopple, Planet, + Springies, Pump, TheoJansen, Query, OneWay, Joints, + Tank, Chains, Crane, ContactGraph, Buoyancy, PlatformerPlayer, + Slice, Convex, Unicycle, Sticky, Shatter}; int demo_count = sizeof(demos); cpVect ChipmunkDemoMouse; cpVect ChipmunkDemoKeyboard; cpBool ChipmunkDemoRightClick = cpFalse; -cpBool ChipmunkDemoRightDown = cpFalse; -cpBool ChipmunkDemoLeftDown = cpFalse; +cpBool ChipmunkDemoRightDown = cpFalse; +cpBool ChipmunkDemoLeftDown = cpFalse; double ChipmunkDemoTime; -cpBody* mouse_body = cpBodyNewKinematic(); +cpBody* mouse_body = cpBodyNewKinematic(); cpConstraint* mouse_joint = NULL; char const* ChipmunkDemoMessageString = NULL; #define GRABBABLE_MASK_BIT (1 << 31) -cpShapeFilter GRAB_FILTER = { CP_NO_GROUP, (unsigned int)GRABBABLE_MASK_BIT, (unsigned int)GRABBABLE_MASK_BIT }; -cpShapeFilter NOT_GRABBABLE_FILTER = { CP_NO_GROUP, ~GRABBABLE_MASK_BIT, ~GRABBABLE_MASK_BIT }; - +cpShapeFilter GRAB_FILTER = {CP_NO_GROUP, (unsigned int)GRABBABLE_MASK_BIT, (unsigned int)GRABBABLE_MASK_BIT}; +cpShapeFilter NOT_GRABBABLE_FILTER = {CP_NO_GROUP, ~GRABBABLE_MASK_BIT, ~GRABBABLE_MASK_BIT}; cocos2d::DrawNode* drawCP = NULL; -void ChipmunkDemoDefaultDrawImpl(cpSpace* space) {}; +void ChipmunkDemoDefaultDrawImpl(cpSpace* space){}; -void ChipmunkDebugDrawDot(cpFloat size, cpVect pos, cpSpaceDebugColor fillColor) { +void ChipmunkDebugDrawDot(cpFloat size, cpVect pos, cpSpaceDebugColor fillColor) +{ -drawCP->drawPoint(Vec2(pos.x, pos.y) + physicsDebugNodeOffset, size, Color4F(fillColor.r, fillColor.g, fillColor.b, fillColor.a)); + drawCP->drawPoint(Vec2(pos.x, pos.y) + physicsDebugNodeOffset, size, + Color4F(fillColor.r, fillColor.g, fillColor.b, fillColor.a)); } -void ChipmunkDebugDrawCircle(cpVect pos, cpFloat angle, cpFloat radius, cpSpaceDebugColor outlineColor, cpSpaceDebugColor fillColor) { +void ChipmunkDebugDrawCircle(cpVect pos, + cpFloat angle, + cpFloat radius, + cpSpaceDebugColor outlineColor, + cpSpaceDebugColor fillColor) +{ - drawCP->drawCircle(Vec2(pos.x, pos.y) + physicsDebugNodeOffset, 100, CC_DEGREES_TO_RADIANS(90), 50, true, 1.0f, - 2.0f, Color4F(fillColor.r, fillColor.g, fillColor.b, fillColor.a)); + drawCP->drawCircle(Vec2(pos.x, pos.y) + physicsDebugNodeOffset, 100, CC_DEGREES_TO_RADIANS(90), 50, true, 1.0f, + 2.0f, Color4F(fillColor.r, fillColor.g, fillColor.b, fillColor.a)); } -void ChipmunkDebugDrawSegment(cpVect a, cpVect b, cpSpaceDebugColor color) { - drawCP->drawLine(Vec2(a.x, a.y) + physicsDebugNodeOffset, Vec2(b.x, b.y) + physicsDebugNodeOffset, - Color4F(color.r, color.g, color.b, color.a)); +void ChipmunkDebugDrawSegment(cpVect a, cpVect b, cpSpaceDebugColor color) +{ + drawCP->drawLine(Vec2(a.x, a.y) + physicsDebugNodeOffset, Vec2(b.x, b.y) + physicsDebugNodeOffset, + Color4F(color.r, color.g, color.b, color.a)); } -void ChipmunkDebugDrawFatSegment(cpVect a, cpVect b, cpFloat radius, cpSpaceDebugColor outlineColor, cpSpaceDebugColor fillColor) { +void ChipmunkDebugDrawFatSegment(cpVect a, + cpVect b, + cpFloat radius, + cpSpaceDebugColor outlineColor, + cpSpaceDebugColor fillColor) +{ - drawCP->drawSegment(Vec2(a.x, a.y) + physicsDebugNodeOffset, Vec2(b.x, b.y) + physicsDebugNodeOffset, radius, - Color4F(outlineColor.r, outlineColor.g, outlineColor.b, outlineColor.a)); + drawCP->drawSegment(Vec2(a.x, a.y) + physicsDebugNodeOffset, Vec2(b.x, b.y) + physicsDebugNodeOffset, radius, + Color4F(outlineColor.r, outlineColor.g, outlineColor.b, outlineColor.a)); } +void ChipmunkDebugDrawPolygon(int count, + const cpVect* verts, + cpFloat radius, + cpSpaceDebugColor outlineColor, + cpSpaceDebugColor fillColor) +{ -void ChipmunkDebugDrawPolygon(int count, const cpVect* verts, cpFloat radius, cpSpaceDebugColor outlineColor, cpSpaceDebugColor fillColor) { - - Vec2* vec = new Vec2[count]; - for (size_t i = 0; i < count; i++) { - vec[i] = cpVert2Point(verts[i]); - } - drawCP->drawPolygon(vec, count, Color4F(1.0f, 0.0f, 0.0f, 0.5f), radius, Color4F(0.0f, 0.0f, 1.0f, 1.0f)); + Vec2* vec = new Vec2[count]; + for (size_t i = 0; i < count; i++) + { + vec[i] = cpVert2Point(verts[i]); + } + drawCP->drawPolygon(vec, count, Color4F(1.0f, 0.0f, 0.0f, 0.5f), radius, Color4F(0.0f, 0.0f, 1.0f, 1.0f)); - delete[] vec; + delete[] vec; } -void ChipmunkDebugDrawBB(cpBB bb, cpSpaceDebugColor color) { - Vec2 verts[] = { - Vec2(bb.r, bb.b) + physicsDebugNodeOffset, - Vec2(bb.r, bb.t) + physicsDebugNodeOffset, - Vec2(bb.l, bb.t) + physicsDebugNodeOffset, - Vec2(bb.l, bb.b) + physicsDebugNodeOffset, - }; - drawCP->drawPolygon(verts, sizeof(verts) / sizeof(verts[0]), Color4F(1.0f, 0.0f, 0.0f, 0.0f), 1, Color4F(0.0f, 0.0f, 1.0f, 1.0f)); +void ChipmunkDebugDrawBB(cpBB bb, cpSpaceDebugColor color) +{ + Vec2 verts[] = { + Vec2(bb.r, bb.b) + physicsDebugNodeOffset, + Vec2(bb.r, bb.t) + physicsDebugNodeOffset, + Vec2(bb.l, bb.t) + physicsDebugNodeOffset, + Vec2(bb.l, bb.b) + physicsDebugNodeOffset, + }; + drawCP->drawPolygon(verts, sizeof(verts) / sizeof(verts[0]), Color4F(1.0f, 0.0f, 0.0f, 0.0f), 1, + Color4F(0.0f, 0.0f, 1.0f, 1.0f)); } - cocos2d::Label* label; - -static int max_arbiters = 0; -static int max_points = 0; +static int max_arbiters = 0; +static int max_points = 0; static int max_constraints = 0; -void ChipmunkTestBed::DrawInfo() { - int arbiters = _space->arbiters->num; - int points = 0; +void ChipmunkTestBed::DrawInfo() +{ + int arbiters = _space->arbiters->num; + int points = 0; - for (int i = 0; i < arbiters; i++) - points += ((cpArbiter*)(_space->arbiters->arr[i]))->count; + for (int i = 0; i < arbiters; i++) + points += ((cpArbiter*)(_space->arbiters->arr[i]))->count; - int constraints = (_space->constraints->num + points) * _space->iterations; + int constraints = (_space->constraints->num + points) * _space->iterations; - max_arbiters = arbiters > max_arbiters ? arbiters : max_arbiters; - max_points = points > max_points ? points : max_points; - max_constraints = constraints > max_constraints ? constraints : max_constraints; + max_arbiters = arbiters > max_arbiters ? arbiters : max_arbiters; + max_points = points > max_points ? points : max_points; + max_constraints = constraints > max_constraints ? constraints : max_constraints; - char buffer[1024]; - const char* format = "Arbiters: %d (%d) - " - "Contact Points: %d (%d)\n" - "Other Constraints: %d, Iterations: %d\n" - "Constraints x Iterations: %d (%d)\n" - "Time:% 5.2fs, KE:% 5.2e"; + char buffer[1024]; + const char* format = + "Arbiters: %d (%d) - " + "Contact Points: %d (%d)\n" + "Other Constraints: %d, Iterations: %d\n" + "Constraints x Iterations: %d (%d)\n" + "Time:% 5.2fs, KE:% 5.2e"; - cpArray* bodies = _space->dynamicBodies; - cpFloat ke = 0.0f; - for (int i = 0; i < bodies->num; i++) { - cpBody* body = (cpBody*)bodies->arr[i]; - if (body->m == INFINITY || body->i == INFINITY) - continue; + cpArray* bodies = _space->dynamicBodies; + cpFloat ke = 0.0f; + for (int i = 0; i < bodies->num; i++) + { + cpBody* body = (cpBody*)bodies->arr[i]; + if (body->m == INFINITY || body->i == INFINITY) + continue; - ke += body->m * cpvdot(body->v, body->v) + body->i * body->w * body->w; - } + ke += body->m * cpvdot(body->v, body->v) + body->i * body->w * body->w; + } - sprintf(buffer, format, arbiters, max_arbiters, points, max_points, _space->constraints->num, _space->iterations, - constraints, max_constraints, ChipmunkDemoTime, (ke < 1e-10f ? 0.0f : ke)); + sprintf(buffer, format, arbiters, max_arbiters, points, max_points, _space->constraints->num, _space->iterations, + constraints, max_constraints, ChipmunkDemoTime, (ke < 1e-10f ? 0.0f : ke)); - drawInfo->setString(buffer); + drawInfo->setString(buffer); } - static char PrintStringBuffer[1024 * 8]; static char* PrintStringCursor; -void ChipmunkDemoPrintString(char const* fmt, ...) { - if (PrintStringCursor == NULL) { - return; - } - - ChipmunkDemoMessageString = PrintStringBuffer; - - va_list args; - va_start(args, fmt); - int remaining = sizeof(PrintStringBuffer) - (PrintStringCursor - PrintStringBuffer); - int would_write = vsnprintf(PrintStringCursor, remaining, fmt, args); - if (would_write > 0 && would_write < remaining) { - PrintStringCursor += would_write; - } - else { - // encoding error or overflow, prevent further use until reinitialized - PrintStringCursor = NULL; - } - va_end(args); - - label->setString(ChipmunkDemoMessageString); -} - -cpSpaceDebugColor RGBAColor(float r, float g, float b, float a) { - cpSpaceDebugColor color = { r, g, b, a }; - return color; +void ChipmunkDemoPrintString(char const* fmt, ...) +{ + if (PrintStringCursor == NULL) + { + return; + } + + ChipmunkDemoMessageString = PrintStringBuffer; + + va_list args; + va_start(args, fmt); + int remaining = sizeof(PrintStringBuffer) - (PrintStringCursor - PrintStringBuffer); + int would_write = vsnprintf(PrintStringCursor, remaining, fmt, args); + if (would_write > 0 && would_write < remaining) + { + PrintStringCursor += would_write; + } + else + { + // encoding error or overflow, prevent further use until reinitialized + PrintStringCursor = NULL; + } + va_end(args); + + label->setString(ChipmunkDemoMessageString); +} + +cpSpaceDebugColor RGBAColor(float r, float g, float b, float a) +{ + cpSpaceDebugColor color = {r, g, b, a}; + return color; }; -cpSpaceDebugColor LAColor(float l, float a) { - cpSpaceDebugColor color = { l, l, l, a }; - return color; +cpSpaceDebugColor LAColor(float l, float a) +{ + cpSpaceDebugColor color = {l, l, l, a}; + return color; } - -static void ShapeFreeWrap(cpSpace* space, cpShape* shape, void* unused) { - cpSpaceRemoveShape(space, shape); - cpShapeFree(shape); +static void ShapeFreeWrap(cpSpace* space, cpShape* shape, void* unused) +{ + cpSpaceRemoveShape(space, shape); + cpShapeFree(shape); } -static void PostShapeFree(cpShape* shape, cpSpace* space) { - cpSpaceAddPostStepCallback(space, (cpPostStepFunc)ShapeFreeWrap, shape, NULL); +static void PostShapeFree(cpShape* shape, cpSpace* space) +{ + cpSpaceAddPostStepCallback(space, (cpPostStepFunc)ShapeFreeWrap, shape, NULL); } -static void ConstraintFreeWrap(cpSpace* space, cpConstraint* constraint, void* unused) { - cpSpaceRemoveConstraint(space, constraint); - cpConstraintFree(constraint); +static void ConstraintFreeWrap(cpSpace* space, cpConstraint* constraint, void* unused) +{ + cpSpaceRemoveConstraint(space, constraint); + cpConstraintFree(constraint); } -static void PostConstraintFree(cpConstraint* constraint, cpSpace* space) { - cpSpaceAddPostStepCallback(space, (cpPostStepFunc)ConstraintFreeWrap, constraint, NULL); +static void PostConstraintFree(cpConstraint* constraint, cpSpace* space) +{ + cpSpaceAddPostStepCallback(space, (cpPostStepFunc)ConstraintFreeWrap, constraint, NULL); } -static void BodyFreeWrap(cpSpace* space, cpBody* body, void* unused) { - cpSpaceRemoveBody(space, body); - cpBodyFree(body); +static void BodyFreeWrap(cpSpace* space, cpBody* body, void* unused) +{ + cpSpaceRemoveBody(space, body); + cpBodyFree(body); } -static void PostBodyFree(cpBody* body, cpSpace* space) { - cpSpaceAddPostStepCallback(space, (cpPostStepFunc)BodyFreeWrap, body, NULL); +static void PostBodyFree(cpBody* body, cpSpace* space) +{ + cpSpaceAddPostStepCallback(space, (cpPostStepFunc)BodyFreeWrap, body, NULL); } // Safe and future proof way to remove and free all objects that have been added to the space. -void ChipmunkDemoFreeSpaceChildren(cpSpace* space) { - // Must remove these BEFORE freeing the body or you will access dangling pointers. - cpSpaceEachShape(space, (cpSpaceShapeIteratorFunc)PostShapeFree, space); - cpSpaceEachConstraint(space, (cpSpaceConstraintIteratorFunc)PostConstraintFree, space); - cpSpaceEachBody(space, (cpSpaceBodyIteratorFunc)PostBodyFree, space); -} - - -void updateMouseBody(void) { - cpVect new_point = cpvlerp(mouse_body->p, ChipmunkDemoMouse, 0.25f); - mouse_body->v = cpvmult(cpvsub(new_point, mouse_body->p), 60.0f); - mouse_body->p = new_point; -} - -ChipmunkTestBed::ChipmunkTestBed() { - // halx99: since adxe init scene default camera at 'initWithXXX' function, only change design size at scene - // construct is ok see also: https://github.com/adxeproject/adxe/commit/581a7921554c09746616759d5a5ca6ce9d3eaa22 - auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - Size designSize(960 * 0.85, 640 * 0.85); - glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::NO_BORDER); - - // creating a keyboard event listener - auto listener = EventListenerKeyboard::create(); - listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event) { - if ((int)keyCode == 26) // Left - { - ChipmunkDemoKeyboard.x--; - } - if ((int)keyCode == 27) // Right - { - ChipmunkDemoKeyboard.x++; - } - if ((int)keyCode == 28) // Up - { - ChipmunkDemoKeyboard.y++; - } - if ((int)keyCode == 29) // Down - { - ChipmunkDemoKeyboard.y--; - } - }; - - listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event) - { - ChipmunkDemoKeyboard = { 0, 0 }; - }; - - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - // creating a mouse event listener - _mouseListener = EventListenerMouse::create(); - _mouseListener->onMouseMove = CC_CALLBACK_1(ChipmunkTestBed::onMouseMove, this); - _mouseListener->onMouseUp = CC_CALLBACK_1(ChipmunkTestBed::onMouseUp, this); - _mouseListener->onMouseDown = CC_CALLBACK_1(ChipmunkTestBed::onMouseDown, this); - _eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this); - - // Some info text - auto label1 = Label::createWithTTF("Use the mouse to grab objects.", "fonts/Marker Felt.ttf", 12.0f); - label1->setPosition(VisibleRect::center().x, VisibleRect::top().y - 100); - label1->setColor(Color3B::WHITE); - this->addChild(label1, 1000); - - // ChipmunkDemoMessageString - label = Label::createWithTTF("", "fonts/Marker Felt.ttf", 12.0f); - label->setPosition(VisibleRect::center().x, VisibleRect::top().y - 130); - label->setColor(Color3B::MAGENTA); - this->addChild(label, 1000); - - drawInfo = Label::createWithTTF("Use the mouse to grab objects.", "fonts/Marker Felt.ttf", 12.0f); - drawInfo->setAnchorPoint(Vec2(0, 0)); - drawInfo->setPosition(VisibleRect::left().x + 10, VisibleRect::top().y - 60); - drawInfo->setColor(Color3B::WHITE); - this->addChild(drawInfo, 1000); - - - draw = DrawNode::create(); - addChild(draw, 100); - - drawCP = draw; - - scheduleUpdate(); -} - - -ChipmunkTestBed::~ChipmunkTestBed() +void ChipmunkDemoFreeSpaceChildren(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(_space); - _eventDispatcher->removeEventListener(_mouseListener); + // Must remove these BEFORE freeing the body or you will access dangling pointers. + cpSpaceEachShape(space, (cpSpaceShapeIteratorFunc)PostShapeFree, space); + cpSpaceEachConstraint(space, (cpSpaceConstraintIteratorFunc)PostConstraintFree, space); + cpSpaceEachBody(space, (cpSpaceBodyIteratorFunc)PostBodyFree, space); } - -void ChipmunkTestBed::initPhysics() { - if (ChipmunkDemoMessageString) { - label->setString(ChipmunkDemoMessageString); - } - else { - label->setString(""); - } - drawCP->clear(); - // Physics debug layer - _debugLayer = PhysicsDebugNodeChipmunk2D::create(_space); - this->addChild(_debugLayer, Z_PHYSICS_DEBUG); +void updateMouseBody(void) +{ + cpVect new_point = cpvlerp(mouse_body->p, ChipmunkDemoMouse, 0.25f); + mouse_body->v = cpvmult(cpvsub(new_point, mouse_body->p), 60.0f); + mouse_body->p = new_point; } -void ChipmunkTestBed::update(float delta) { - //#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - // cpSpaceStep(_space, delta); - //#else - // cpHastySpaceStep(_space, delta); - //#endif +ChipmunkTestBed::ChipmunkTestBed() +{ + // halx99: since adxe init scene default camera at 'initWithXXX' function, only change design size at scene + // construct is ok see also: https://github.com/adxeproject/adxe/commit/581a7921554c09746616759d5a5ca6ce9d3eaa22 + auto director = Director::getInstance(); + auto glview = director->getOpenGLView(); + Size designSize(960 * 0.85, 640 * 0.85); + glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::NO_BORDER); + + // creating a keyboard event listener + auto listener = EventListenerKeyboard::create(); + listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event) { + if ((int)keyCode == 26) // Left + { + ChipmunkDemoKeyboard.x--; + } + if ((int)keyCode == 27) // Right + { + ChipmunkDemoKeyboard.x++; + } + if ((int)keyCode == 28) // Up + { + ChipmunkDemoKeyboard.y++; + } + if ((int)keyCode == 29) // Down + { + ChipmunkDemoKeyboard.y--; + } + }; + + listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event) { ChipmunkDemoKeyboard = {0, 0}; }; + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + // creating a mouse event listener + _mouseListener = EventListenerMouse::create(); + _mouseListener->onMouseMove = CC_CALLBACK_1(ChipmunkTestBed::onMouseMove, this); + _mouseListener->onMouseUp = CC_CALLBACK_1(ChipmunkTestBed::onMouseUp, this); + _mouseListener->onMouseDown = CC_CALLBACK_1(ChipmunkTestBed::onMouseDown, this); + _eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this); + + // Some info text + auto label1 = Label::createWithTTF("Use the mouse to grab objects.", "fonts/Marker Felt.ttf", 12.0f); + label1->setPosition(VisibleRect::center().x, VisibleRect::top().y - 100); + label1->setColor(Color3B::WHITE); + this->addChild(label1, 1000); + + // ChipmunkDemoMessageString + label = Label::createWithTTF("", "fonts/Marker Felt.ttf", 12.0f); + label->setPosition(VisibleRect::center().x, VisibleRect::top().y - 130); + label->setColor(Color3B::MAGENTA); + this->addChild(label, 1000); + + drawInfo = Label::createWithTTF("Use the mouse to grab objects.", "fonts/Marker Felt.ttf", 12.0f); + drawInfo->setAnchorPoint(Vec2(0, 0)); + drawInfo->setPosition(VisibleRect::left().x + 10, VisibleRect::top().y - 60); + drawInfo->setColor(Color3B::WHITE); + this->addChild(drawInfo, 1000); + + draw = DrawNode::create(); + addChild(draw, 100); + + drawCP = draw; + + scheduleUpdate(); } -void ChipmunkTestBed::createResetButton() { - auto reset = MenuItemImage::create("Images/r1.png", "Images/r2.png", CC_CALLBACK_1(ChipmunkTestBed::reset, this)); - auto menu = Menu::create(reset, nullptr); - menu->setPosition(VisibleRect::center().x, VisibleRect::bottom().y); - this->addChild(menu, -1); +ChipmunkTestBed::~ChipmunkTestBed() +{ + ChipmunkDemoFreeSpaceChildren(_space); + _eventDispatcher->removeEventListener(_mouseListener); } -void ChipmunkTestBed::reset(Ref* sender) { - ChipmunkDemoFreeSpaceChildren(_space); - getTestSuite()->restartCurrTest(); +void ChipmunkTestBed::initPhysics() +{ + if (ChipmunkDemoMessageString) + { + label->setString(ChipmunkDemoMessageString); + } + else + { + label->setString(""); + } + drawCP->clear(); + // Physics debug layer + _debugLayer = PhysicsDebugNodeChipmunk2D::create(_space); + this->addChild(_debugLayer, Z_PHYSICS_DEBUG); +} + +void ChipmunkTestBed::update(float delta) +{ + //#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 + // cpSpaceStep(_space, delta); + //#else + // cpHastySpaceStep(_space, delta); + //#endif } -void ChipmunkTestBed::onEnter() { - TestCase::onEnter(); - physicsDebugNodeOffset = VisibleRect::center(); - physicsDebugNodeOffset.y += 20; - ChipmunkDemoMessageString = ""; - label->setString(""); +void ChipmunkTestBed::createResetButton() +{ + auto reset = MenuItemImage::create("Images/r1.png", "Images/r2.png", CC_CALLBACK_1(ChipmunkTestBed::reset, this)); + auto menu = Menu::create(reset, nullptr); + menu->setPosition(VisibleRect::center().x, VisibleRect::bottom().y); + this->addChild(menu, -1); } - -void ChipmunkTestBed::onMouseDown(Event* event) { - EventMouse* e = (EventMouse*)event; - - if ((int)e->getMouseButton() == 0) { - ChipmunkDemoLeftDown = cpTrue; - // give the mouse click a little radius to make it easier to click small shapes. - cpFloat radius = 5.0; - - cpPointQueryInfo info = { 0 }; - cpShape* shape = cpSpacePointQueryNearest(_space, ChipmunkDemoMouse, radius, GRAB_FILTER, &info); - - if (shape && cpBodyGetMass(cpShapeGetBody(shape)) < INFINITY) { - // Use the closest point on the surface if the click is outside of the shape. - cpVect nearest = (info.distance > 0.0f ? info.point : ChipmunkDemoMouse); - - cpBody* body = cpShapeGetBody(shape); - mouse_joint = cpPivotJointNew2(mouse_body, body, cpvzero, cpBodyWorldToLocal(body, nearest)); - mouse_joint->maxForce = 50000.0f; - mouse_joint->errorBias = cpfpow(1.0f - 0.15f, 60.0f); - cpSpaceAddConstraint(_space, mouse_joint); - } - } - else if ((int)e->getMouseButton() == 1) { - if (mouse_joint) { - cpSpaceRemoveConstraint(_space, mouse_joint); - cpConstraintFree(mouse_joint); - mouse_joint = NULL; - } - ChipmunkDemoRightDown = cpTrue; - ChipmunkDemoRightClick = cpTrue; - } +void ChipmunkTestBed::reset(Ref* sender) +{ + ChipmunkDemoFreeSpaceChildren(_space); + getTestSuite()->restartCurrTest(); } -void ChipmunkTestBed::onMouseUp(Event* event) { - EventMouse* e = (EventMouse*)event; - mousePresses = false; - if (mouse_joint) { - cpSpaceRemoveConstraint(_space, mouse_joint); - cpConstraintFree(mouse_joint); - mouse_joint = NULL; - } - ChipmunkDemoLeftDown = cpFalse; - ChipmunkDemoRightDown = cpFalse; - ChipmunkDemoRightClick = cpFalse; +void ChipmunkTestBed::onEnter() +{ + TestCase::onEnter(); + physicsDebugNodeOffset = VisibleRect::center(); + physicsDebugNodeOffset.y += 20; + ChipmunkDemoMessageString = ""; + label->setString(""); } -void ChipmunkTestBed::onMouseMove(Event* event) { - EventMouse* e = (EventMouse*)event; +void ChipmunkTestBed::onMouseDown(Event* event) +{ + EventMouse* e = (EventMouse*)event; + + if ((int)e->getMouseButton() == 0) + { + ChipmunkDemoLeftDown = cpTrue; + // give the mouse click a little radius to make it easier to click small shapes. + cpFloat radius = 5.0; + + cpPointQueryInfo info = {0}; + cpShape* shape = cpSpacePointQueryNearest(_space, ChipmunkDemoMouse, radius, GRAB_FILTER, &info); + + if (shape && cpBodyGetMass(cpShapeGetBody(shape)) < INFINITY) + { + // Use the closest point on the surface if the click is outside of the shape. + cpVect nearest = (info.distance > 0.0f ? info.point : ChipmunkDemoMouse); + + cpBody* body = cpShapeGetBody(shape); + mouse_joint = cpPivotJointNew2(mouse_body, body, cpvzero, cpBodyWorldToLocal(body, nearest)); + mouse_joint->maxForce = 50000.0f; + mouse_joint->errorBias = cpfpow(1.0f - 0.15f, 60.0f); + cpSpaceAddConstraint(_space, mouse_joint); + } + } + else if ((int)e->getMouseButton() == 1) + { + if (mouse_joint) + { + cpSpaceRemoveConstraint(_space, mouse_joint); + cpConstraintFree(mouse_joint); + mouse_joint = NULL; + } + ChipmunkDemoRightDown = cpTrue; + ChipmunkDemoRightClick = cpTrue; + } +} + +void ChipmunkTestBed::onMouseUp(Event* event) +{ + EventMouse* e = (EventMouse*)event; + mousePresses = false; + if (mouse_joint) + { + cpSpaceRemoveConstraint(_space, mouse_joint); + cpConstraintFree(mouse_joint); + mouse_joint = NULL; + } + ChipmunkDemoLeftDown = cpFalse; + ChipmunkDemoRightDown = cpFalse; + ChipmunkDemoRightClick = cpFalse; +} + +void ChipmunkTestBed::onMouseMove(Event* event) +{ + EventMouse* e = (EventMouse*)event; - ChipmunkDemoMouse.x = e->getCursorX() - physicsDebugNodeOffset.x; - ChipmunkDemoMouse.y = e->getCursorY() - physicsDebugNodeOffset.y; + ChipmunkDemoMouse.x = e->getCursorX() - physicsDebugNodeOffset.x; + ChipmunkDemoMouse.y = e->getCursorY() - physicsDebugNodeOffset.y; - cpBodySetPosition(mouse_body, ChipmunkDemoMouse); + cpBodySetPosition(mouse_body, ChipmunkDemoMouse); } +void ChipmunkTestBed::updateInit(ChipmunkDemo tt) +{ + PrintStringBuffer[0] = 0; + PrintStringCursor = PrintStringBuffer; -void ChipmunkTestBed::updateInit(ChipmunkDemo tt) { - PrintStringBuffer[0] = 0; - PrintStringCursor = PrintStringBuffer; - - - drawCP->clear(); - updateMouseBody(); - ChipmunkDemoTime += tt.timestep; - ChipmunkTestBed::DrawInfo(); - tt.updateFunc(_space, tt.timestep); + drawCP->clear(); + updateMouseBody(); + ChipmunkDemoTime += tt.timestep; + ChipmunkTestBed::DrawInfo(); + tt.updateFunc(_space, tt.timestep); } //------------------------------------------------------------------ @@ -465,22 +504,26 @@ void ChipmunkTestBed::updateInit(ChipmunkDemo tt) { // LogoSmashDemo // //------------------------------------------------------------------ -void LogoSmashDemo::onEnter() { - ChipmunkTestBed::onEnter(); - initPhysics(); +void LogoSmashDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); + initPhysics(); } -std::string LogoSmashDemo::title() const { - return LogoSmash.name; +std::string LogoSmashDemo::title() const +{ + return LogoSmash.name; } -void LogoSmashDemo::initPhysics() { - _space = LogoSmash.initFunc(); - ChipmunkTestBed::initPhysics(); +void LogoSmashDemo::initPhysics() +{ + _space = LogoSmash.initFunc(); + ChipmunkTestBed::initPhysics(); } -void LogoSmashDemo::update(float delta) { - ChipmunkTestBed::updateInit(LogoSmash); +void LogoSmashDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(LogoSmash); } //------------------------------------------------------------------ @@ -488,23 +531,27 @@ void LogoSmashDemo::update(float delta) { // PlinkDemo // //------------------------------------------------------------------ -void PlinkDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void PlinkDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string PlinkDemo::title() const { - return Plink.name; +std::string PlinkDemo::title() const +{ + return Plink.name; } -void PlinkDemo::initPhysics() { - _space = Plink.initFunc(); - ChipmunkTestBed::initPhysics(); +void PlinkDemo::initPhysics() +{ + _space = Plink.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PlinkDemo::update(float delta) { - ChipmunkTestBed::updateInit(Plink); +void PlinkDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Plink); } //------------------------------------------------------------------ @@ -512,22 +559,26 @@ void PlinkDemo::update(float delta) { // TumbleDemo // //------------------------------------------------------------------ -void TumbleDemo::onEnter() { - ChipmunkTestBed::onEnter(); - initPhysics(); +void TumbleDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); + initPhysics(); } -std::string TumbleDemo::title() const { - return Tumble.name; +std::string TumbleDemo::title() const +{ + return Tumble.name; } -void TumbleDemo::initPhysics() { - _space = Tumble.initFunc(); - ChipmunkTestBed::initPhysics(); +void TumbleDemo::initPhysics() +{ + _space = Tumble.initFunc(); + ChipmunkTestBed::initPhysics(); } -void TumbleDemo::update(float delta) { - ChipmunkTestBed::updateInit(Tumble); +void TumbleDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Tumble); } //------------------------------------------------------------------ @@ -535,71 +586,81 @@ void TumbleDemo::update(float delta) { // PyramidStackDemo // //------------------------------------------------------------------ -void PyramidStackDemo::onEnter() { - ChipmunkTestBed::onEnter(); - initPhysics(); +void PyramidStackDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); + initPhysics(); } -std::string PyramidStackDemo::title() const { - return PyramidStack.name; +std::string PyramidStackDemo::title() const +{ + return PyramidStack.name; } -void PyramidStackDemo::initPhysics() { - _space = PyramidStack.initFunc(); - ChipmunkTestBed::initPhysics(); +void PyramidStackDemo::initPhysics() +{ + _space = PyramidStack.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PyramidStackDemo::update(float delta) { - ChipmunkTestBed::updateInit(PyramidStack); +void PyramidStackDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(PyramidStack); } - //------------------------------------------------------------------ // // PyramidToppleDemo // //------------------------------------------------------------------ -void PyramidToppleDemo::onEnter() { - ChipmunkTestBed::onEnter(); - initPhysics(); +void PyramidToppleDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); + initPhysics(); } -std::string PyramidToppleDemo::title() const { - return PyramidTopple.name; +std::string PyramidToppleDemo::title() const +{ + return PyramidTopple.name; } -void PyramidToppleDemo::initPhysics() { - _space = PyramidTopple.initFunc(); - ChipmunkTestBed::initPhysics(); +void PyramidToppleDemo::initPhysics() +{ + _space = PyramidTopple.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PyramidToppleDemo::update(float delta) { - ChipmunkTestBed::updateInit(PyramidTopple); +void PyramidToppleDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(PyramidTopple); } - //------------------------------------------------------------------ // // ChainDemo // //------------------------------------------------------------------ -void ChainsDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void ChainsDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string ChainsDemo::title() const { - return Chains.name; +std::string ChainsDemo::title() const +{ + return Chains.name; } -void ChainsDemo::initPhysics() { - _space = Chains.initFunc(); - ChipmunkTestBed::initPhysics(); +void ChainsDemo::initPhysics() +{ + _space = Chains.initFunc(); + ChipmunkTestBed::initPhysics(); } -void ChainsDemo::update(float delta) { - ChipmunkTestBed::updateInit(Chains); +void ChainsDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Chains); } //------------------------------------------------------------------ @@ -607,23 +668,27 @@ void ChainsDemo::update(float delta) { // OneWayDemo // //------------------------------------------------------------------ -void OneWayDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void OneWayDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string OneWayDemo::title() const { - return OneWay.name; +std::string OneWayDemo::title() const +{ + return OneWay.name; } -void OneWayDemo::initPhysics() { - _space = OneWay.initFunc(); - ChipmunkTestBed::initPhysics(); +void OneWayDemo::initPhysics() +{ + _space = OneWay.initFunc(); + ChipmunkTestBed::initPhysics(); } -void OneWayDemo::update(float delta) { - ChipmunkTestBed::updateInit(OneWay); +void OneWayDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(OneWay); } //------------------------------------------------------------------ @@ -631,23 +696,27 @@ void OneWayDemo::update(float delta) { // PlanetDemo // //------------------------------------------------------------------ -void PlanetDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void PlanetDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string PlanetDemo::title() const { - return Planet.name; +std::string PlanetDemo::title() const +{ + return Planet.name; } -void PlanetDemo::initPhysics() { - _space = Planet.initFunc(); - ChipmunkTestBed::initPhysics(); +void PlanetDemo::initPhysics() +{ + _space = Planet.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PlanetDemo::update(float delta) { - ChipmunkTestBed::updateInit(Planet); +void PlanetDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Planet); } //------------------------------------------------------------------ @@ -655,153 +724,170 @@ void PlanetDemo::update(float delta) { // TheoJansenDemo // //------------------------------------------------------------------ -void TheoJansenDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void TheoJansenDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string TheoJansenDemo::title() const { - return TheoJansen.name; +std::string TheoJansenDemo::title() const +{ + return TheoJansen.name; } -void TheoJansenDemo::initPhysics() { - _space = TheoJansen.initFunc(); - ChipmunkTestBed::initPhysics(); +void TheoJansenDemo::initPhysics() +{ + _space = TheoJansen.initFunc(); + ChipmunkTestBed::initPhysics(); } -void TheoJansenDemo::update(float delta) { - ChipmunkTestBed::updateInit(TheoJansen); +void TheoJansenDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(TheoJansen); } - //------------------------------------------------------------------ // // TankDemo // //------------------------------------------------------------------ -void TankDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void TankDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string TankDemo::title() const { - return Tank.name; +std::string TankDemo::title() const +{ + return Tank.name; } -void TankDemo::initPhysics() { - _space = Tank.initFunc(); - ChipmunkTestBed::initPhysics(); +void TankDemo::initPhysics() +{ + _space = Tank.initFunc(); + ChipmunkTestBed::initPhysics(); } -void TankDemo::update(float delta) { - ChipmunkTestBed::updateInit(Tank); +void TankDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Tank); } - //------------------------------------------------------------------ // // BenchDemo // //------------------------------------------------------------------ -void BenchDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void BenchDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - auto itemPrev = MenuItemImage::create("Images/b1.png", "Images/b2.png", [&](Ref* sender) { - bench = (bench > 0) ? bench - 1 : (bench_count - 1); - reset(sender); - }); + auto itemPrev = MenuItemImage::create("Images/b1.png", "Images/b2.png", [&](Ref* sender) { + bench = (bench > 0) ? bench - 1 : (bench_count - 1); + reset(sender); + }); - auto itemNext = MenuItemImage::create("Images/f1.png", "Images/f2.png", [&](Ref* sender) { - bench = (bench < (bench_count - 1)) ? bench + 1 : 0; - reset(sender); - }); + auto itemNext = MenuItemImage::create("Images/f1.png", "Images/f2.png", [&](Ref* sender) { + bench = (bench < (bench_count - 1)) ? bench + 1 : 0; + reset(sender); + }); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); - auto menuPrev = Menu::create(itemPrev, nullptr); - menuPrev->alignItemsHorizontally(); - menuPrev->setScale(0.4); - menuPrev->setAnchorPoint(Vec2(0.0f, 0.0f)); - menuPrev->setPosition(Vec2(s.width / 2 - 45, 23.0f)); - addChild(menuPrev); + auto menuPrev = Menu::create(itemPrev, nullptr); + menuPrev->alignItemsHorizontally(); + menuPrev->setScale(0.4); + menuPrev->setAnchorPoint(Vec2(0.0f, 0.0f)); + menuPrev->setPosition(Vec2(s.width / 2 - 45, 23.0f)); + addChild(menuPrev); - auto menuNext = Menu::create(itemNext, nullptr); - menuNext->alignItemsHorizontally(); - menuNext->setScale(0.4); - menuNext->setAnchorPoint(Vec2(0.0f, 0.0f)); - menuNext->setPosition(Vec2(s.width / 2 + 45, 23.0f)); - addChild(menuNext); + auto menuNext = Menu::create(itemNext, nullptr); + menuNext->alignItemsHorizontally(); + menuNext->setScale(0.4); + menuNext->setAnchorPoint(Vec2(0.0f, 0.0f)); + menuNext->setPosition(Vec2(s.width / 2 + 45, 23.0f)); + addChild(menuNext); - initPhysics(); + initPhysics(); } -std::string BenchDemo::title() const { - return "Bench"; +std::string BenchDemo::title() const +{ + return "Bench"; } -std::string BenchDemo::subtitle() const { - std::string s = std::to_string(bench+1) + ". " + bench_list[bench].name; - return s.c_str(); +std::string BenchDemo::subtitle() const +{ + std::string s = std::to_string(bench + 1) + ". " + bench_list[bench].name; + return s.c_str(); } -void BenchDemo::initPhysics() { - _space = bench_list[bench].initFunc(); - ChipmunkTestBed::initPhysics(); +void BenchDemo::initPhysics() +{ + _space = bench_list[bench].initFunc(); + ChipmunkTestBed::initPhysics(); } -void BenchDemo::update(float delta) { - ChipmunkTestBed::updateInit(bench_list[bench]); +void BenchDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(bench_list[bench]); } - //------------------------------------------------------------------ // // SpringiesDemo // //------------------------------------------------------------------ -void SpringiesDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void SpringiesDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string SpringiesDemo::title() const { - return Springies.name; +std::string SpringiesDemo::title() const +{ + return Springies.name; } -void SpringiesDemo::initPhysics() { - _space = Springies.initFunc(); - ChipmunkTestBed::initPhysics(); +void SpringiesDemo::initPhysics() +{ + _space = Springies.initFunc(); + ChipmunkTestBed::initPhysics(); } -void SpringiesDemo::update(float delta) { - ChipmunkTestBed::updateInit(Springies); +void SpringiesDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Springies); } - //------------------------------------------------------------------ // // ShatterDemo // //------------------------------------------------------------------ -void ShatterDemo::onEnter() { - ChipmunkTestBed::onEnter(); - initPhysics(); +void ShatterDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); + initPhysics(); } -std::string ShatterDemo::title() const { - return Shatter.name; +std::string ShatterDemo::title() const +{ + return Shatter.name; } -void ShatterDemo::initPhysics() { - _space = Shatter.initFunc(); - ChipmunkTestBed::initPhysics(); +void ShatterDemo::initPhysics() +{ + _space = Shatter.initFunc(); + ChipmunkTestBed::initPhysics(); } -void ShatterDemo::update(float delta) { - ChipmunkTestBed::updateInit(Shatter); +void ShatterDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Shatter); } //------------------------------------------------------------------ @@ -809,23 +895,27 @@ void ShatterDemo::update(float delta) { // StickyDemo // //------------------------------------------------------------------ -void StickyDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void StickyDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string StickyDemo::title() const { - return Sticky.name; +std::string StickyDemo::title() const +{ + return Sticky.name; } -void StickyDemo::initPhysics() { - _space = Sticky.initFunc(); - ChipmunkTestBed::initPhysics(); +void StickyDemo::initPhysics() +{ + _space = Sticky.initFunc(); + ChipmunkTestBed::initPhysics(); } -void StickyDemo::update(float delta) { - ChipmunkTestBed::updateInit(Sticky); +void StickyDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Sticky); } //------------------------------------------------------------------ @@ -833,23 +923,27 @@ void StickyDemo::update(float delta) { // CraneDemo // //------------------------------------------------------------------ -void CraneDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void CraneDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string CraneDemo::title() const { - return Crane.name; +std::string CraneDemo::title() const +{ + return Crane.name; } -void CraneDemo::initPhysics() { - _space = Crane.initFunc(); - ChipmunkTestBed::initPhysics(); +void CraneDemo::initPhysics() +{ + _space = Crane.initFunc(); + ChipmunkTestBed::initPhysics(); } -void CraneDemo::update(float delta) { - ChipmunkTestBed::updateInit(Crane); +void CraneDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Crane); } //------------------------------------------------------------------ @@ -857,23 +951,27 @@ void CraneDemo::update(float delta) { // JointsDemo // //------------------------------------------------------------------ -void JointsDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void JointsDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string JointsDemo::title() const { - return Joints.name; +std::string JointsDemo::title() const +{ + return Joints.name; } -void JointsDemo::initPhysics() { - _space = Joints.initFunc(); - ChipmunkTestBed::initPhysics(); +void JointsDemo::initPhysics() +{ + _space = Joints.initFunc(); + ChipmunkTestBed::initPhysics(); } -void JointsDemo::update(float delta) { - ChipmunkTestBed::updateInit(Joints); +void JointsDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Joints); } //------------------------------------------------------------------ @@ -881,23 +979,27 @@ void JointsDemo::update(float delta) { // ConvexDemo // //------------------------------------------------------------------ -void ConvexDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void ConvexDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string ConvexDemo::title() const { - return Convex.name; +std::string ConvexDemo::title() const +{ + return Convex.name; } -void ConvexDemo::initPhysics() { - _space = Convex.initFunc(); - ChipmunkTestBed::initPhysics(); +void ConvexDemo::initPhysics() +{ + _space = Convex.initFunc(); + ChipmunkTestBed::initPhysics(); } -void ConvexDemo::update(float delta) { - ChipmunkTestBed::updateInit(Convex); +void ConvexDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Convex); } //------------------------------------------------------------------ @@ -905,23 +1007,27 @@ void ConvexDemo::update(float delta) { // PumpDemo // //------------------------------------------------------------------ -void PumpDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void PumpDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string PumpDemo::title() const { - return Pump.name; +std::string PumpDemo::title() const +{ + return Pump.name; } -void PumpDemo::initPhysics() { - _space = Pump.initFunc(); - ChipmunkTestBed::initPhysics(); +void PumpDemo::initPhysics() +{ + _space = Pump.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PumpDemo::update(float delta) { - ChipmunkTestBed::updateInit(Pump); +void PumpDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Pump); } //------------------------------------------------------------------ @@ -929,23 +1035,27 @@ void PumpDemo::update(float delta) { // PlatformerPlayerDemo // //------------------------------------------------------------------ -void PlatformerPlayerDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void PlatformerPlayerDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string PlatformerPlayerDemo::title() const { - return PlatformerPlayer.name; +std::string PlatformerPlayerDemo::title() const +{ + return PlatformerPlayer.name; } -void PlatformerPlayerDemo::initPhysics() { - _space = PlatformerPlayer.initFunc(); - ChipmunkTestBed::initPhysics(); +void PlatformerPlayerDemo::initPhysics() +{ + _space = PlatformerPlayer.initFunc(); + ChipmunkTestBed::initPhysics(); } -void PlatformerPlayerDemo::update(float delta) { - ChipmunkTestBed::updateInit(PlatformerPlayer); +void PlatformerPlayerDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(PlatformerPlayer); } //------------------------------------------------------------------ @@ -953,23 +1063,27 @@ void PlatformerPlayerDemo::update(float delta) { // QueryDemo // //------------------------------------------------------------------ -void QueryDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void QueryDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string QueryDemo::title() const { - return Query.name; +std::string QueryDemo::title() const +{ + return Query.name; } -void QueryDemo::initPhysics() { - _space = Query.initFunc(); - ChipmunkTestBed::initPhysics(); +void QueryDemo::initPhysics() +{ + _space = Query.initFunc(); + ChipmunkTestBed::initPhysics(); } -void QueryDemo::update(float delta) { - ChipmunkTestBed::updateInit(Query); +void QueryDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Query); } //------------------------------------------------------------------ @@ -977,23 +1091,27 @@ void QueryDemo::update(float delta) { // ContactGraphDemo // //------------------------------------------------------------------ -void ContactGraphDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void ContactGraphDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string ContactGraphDemo::title() const { - return ContactGraph.name; +std::string ContactGraphDemo::title() const +{ + return ContactGraph.name; } -void ContactGraphDemo::initPhysics() { - _space = ContactGraph.initFunc(); - ChipmunkTestBed::initPhysics(); +void ContactGraphDemo::initPhysics() +{ + _space = ContactGraph.initFunc(); + ChipmunkTestBed::initPhysics(); } -void ContactGraphDemo::update(float delta) { - ChipmunkTestBed::updateInit(ContactGraph); +void ContactGraphDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(ContactGraph); } //------------------------------------------------------------------ @@ -1001,23 +1119,27 @@ void ContactGraphDemo::update(float delta) { // BuoyancyDemo // //------------------------------------------------------------------ -void BuoyancyDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void BuoyancyDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string BuoyancyDemo::title() const { - return Buoyancy.name; +std::string BuoyancyDemo::title() const +{ + return Buoyancy.name; } -void BuoyancyDemo::initPhysics() { - _space = Buoyancy.initFunc(); - ChipmunkTestBed::initPhysics(); +void BuoyancyDemo::initPhysics() +{ + _space = Buoyancy.initFunc(); + ChipmunkTestBed::initPhysics(); } -void BuoyancyDemo::update(float delta) { - ChipmunkTestBed::updateInit(Buoyancy); +void BuoyancyDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Buoyancy); } //------------------------------------------------------------------ @@ -1025,23 +1147,27 @@ void BuoyancyDemo::update(float delta) { // SliceDemo // //------------------------------------------------------------------ -void SliceDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void SliceDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string SliceDemo::title() const { - return Slice.name; +std::string SliceDemo::title() const +{ + return Slice.name; } -void SliceDemo::initPhysics() { - _space = Slice.initFunc(); - ChipmunkTestBed::initPhysics(); +void SliceDemo::initPhysics() +{ + _space = Slice.initFunc(); + ChipmunkTestBed::initPhysics(); } -void SliceDemo::update(float delta) { - ChipmunkTestBed::updateInit(Slice); +void SliceDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Slice); } //------------------------------------------------------------------ @@ -1049,82 +1175,88 @@ void SliceDemo::update(float delta) { // UnicycleDemo // //------------------------------------------------------------------ -void UnicycleDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void UnicycleDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string UnicycleDemo::title() const { - return Unicycle.name; +std::string UnicycleDemo::title() const +{ + return Unicycle.name; } -void UnicycleDemo::initPhysics() { - _space = Unicycle.initFunc(); - ChipmunkTestBed::initPhysics(); +void UnicycleDemo::initPhysics() +{ + _space = Unicycle.initFunc(); + ChipmunkTestBed::initPhysics(); } -void UnicycleDemo::update(float delta) { - ChipmunkTestBed::updateInit(Unicycle); +void UnicycleDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Unicycle); } - //------------------------------------------------------------------ // // ExampleDemo // //------------------------------------------------------------------ -void ExampleDemo::onEnter() { - ChipmunkTestBed::onEnter(); +void ExampleDemo::onEnter() +{ + ChipmunkTestBed::onEnter(); - initPhysics(); + initPhysics(); } -std::string ExampleDemo::title() const { - return Example.name; +std::string ExampleDemo::title() const +{ + return Example.name; } -void ExampleDemo::initPhysics() { - _space = Example.initFunc(); - ChipmunkTestBed::initPhysics(); +void ExampleDemo::initPhysics() +{ + _space = Example.initFunc(); + ChipmunkTestBed::initPhysics(); } -void ExampleDemo::update(float delta) { - ChipmunkTestBed::updateInit(Example); +void ExampleDemo::update(float delta) +{ + ChipmunkTestBed::updateInit(Example); } - -ChipmunkTestBedTests::ChipmunkTestBedTests() { - ADD_TEST_CASE(BenchDemo); - ADD_TEST_CASE(LogoSmashDemo); - ADD_TEST_CASE(PlinkDemo); - ADD_TEST_CASE(TumbleDemo); - ADD_TEST_CASE(PyramidToppleDemo); - ADD_TEST_CASE(PyramidStackDemo); - ADD_TEST_CASE(ChainsDemo); - ADD_TEST_CASE(OneWayDemo); - ADD_TEST_CASE(PlanetDemo); - ADD_TEST_CASE(TheoJansenDemo); - ADD_TEST_CASE(TankDemo); - - ADD_TEST_CASE(SpringiesDemo); - - ADD_TEST_CASE(ShatterDemo); - ADD_TEST_CASE(StickyDemo); - ADD_TEST_CASE(CraneDemo); - ADD_TEST_CASE(JointsDemo); - - ADD_TEST_CASE(ConvexDemo); - - ADD_TEST_CASE(PumpDemo); - ADD_TEST_CASE(PlatformerPlayerDemo); - - ADD_TEST_CASE(QueryDemo); - ADD_TEST_CASE(ContactGraphDemo); - ADD_TEST_CASE(BuoyancyDemo); - ADD_TEST_CASE(SliceDemo); - ADD_TEST_CASE(UnicycleDemo); - - ADD_TEST_CASE(ExampleDemo); // the template for your one examples/Demos +ChipmunkTestBedTests::ChipmunkTestBedTests() +{ + ADD_TEST_CASE(BenchDemo); + ADD_TEST_CASE(LogoSmashDemo); + ADD_TEST_CASE(PlinkDemo); + ADD_TEST_CASE(TumbleDemo); + ADD_TEST_CASE(PyramidToppleDemo); + ADD_TEST_CASE(PyramidStackDemo); + ADD_TEST_CASE(ChainsDemo); + ADD_TEST_CASE(OneWayDemo); + ADD_TEST_CASE(PlanetDemo); + ADD_TEST_CASE(TheoJansenDemo); + ADD_TEST_CASE(TankDemo); + + ADD_TEST_CASE(SpringiesDemo); + + ADD_TEST_CASE(ShatterDemo); + ADD_TEST_CASE(StickyDemo); + ADD_TEST_CASE(CraneDemo); + ADD_TEST_CASE(JointsDemo); + + ADD_TEST_CASE(ConvexDemo); + + ADD_TEST_CASE(PumpDemo); + ADD_TEST_CASE(PlatformerPlayerDemo); + + ADD_TEST_CASE(QueryDemo); + ADD_TEST_CASE(ContactGraphDemo); + ADD_TEST_CASE(BuoyancyDemo); + ADD_TEST_CASE(SliceDemo); + ADD_TEST_CASE(UnicycleDemo); + + ADD_TEST_CASE(ExampleDemo); // the template for your one examples/Demos } - diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.h b/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.h index 2cce89d31b40..c080f5711084 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.h +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/ChipmunkTestBed.h @@ -20,9 +20,9 @@ THE SOFTWARE. ****************************************************************************/ - // - // cocos2d - // +// +// cocos2d +// #ifndef __CHIPMUNKTESTBED_H__ #define __CHIPMUNKTESTBED_H__ @@ -33,290 +33,312 @@ #include "demo/ChipmunkDemo.h" -class ChipmunkTestBed : public TestCase { +class ChipmunkTestBed : public TestCase +{ public: - CREATE_FUNC(ChipmunkTestBed); + CREATE_FUNC(ChipmunkTestBed); - ChipmunkTestBed(); - ~ChipmunkTestBed(); + ChipmunkTestBed(); + ~ChipmunkTestBed(); - void onEnter() override; - void createResetButton(); - void reset(cocos2d::Ref* sender); + void onEnter() override; + void createResetButton(); + void reset(cocos2d::Ref* sender); - void update(float dt) override; - virtual void initPhysics(); + void update(float dt) override; + virtual void initPhysics(); - void onMouseDown(cocos2d::Event* event); - void onMouseUp(cocos2d::Event* event); - void onMouseMove(cocos2d::Event* event); - void DrawInfo(); - void updateInit(ChipmunkDemo tt); + void onMouseDown(cocos2d::Event* event); + void onMouseUp(cocos2d::Event* event); + void onMouseMove(cocos2d::Event* event); + void DrawInfo(); + void updateInit(ChipmunkDemo tt); - cpSpace* _space; // strong ref - cocos2d::extension::PhysicsDebugNodeChipmunk2D* _debugLayer; // weak ref - int keyPresses; - bool mousePresses = false; + cpSpace* _space; // strong ref + cocos2d::extension::PhysicsDebugNodeChipmunk2D* _debugLayer; // weak ref + int keyPresses; + bool mousePresses = false; private: - cocos2d::EventListenerMouse* _mouseListener; - cocos2d::Node* _trackNode; - cocos2d::DrawNode* draw; - cocos2d::Label* drawInfo; - + cocos2d::EventListenerMouse* _mouseListener; + cocos2d::Node* _trackNode; + cocos2d::DrawNode* draw; + cocos2d::Label* drawInfo; }; -class LogoSmashDemo : public ChipmunkTestBed { +class LogoSmashDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(LogoSmashDemo); - std::string title() const override; - void onEnter() override; + CREATE_FUNC(LogoSmashDemo); + std::string title() const override; + void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PlinkDemo : public ChipmunkTestBed { +class PlinkDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PlinkDemo); - virtual std::string title() const override; - virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + CREATE_FUNC(PlinkDemo); + virtual std::string title() const override; + virtual void onEnter() override; + void initPhysics() override; + virtual void update(float dt) override; }; - -class TumbleDemo : public ChipmunkTestBed { +class TumbleDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(TumbleDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(TumbleDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PyramidStackDemo : public ChipmunkTestBed { +class PyramidStackDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PyramidStackDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(PyramidStackDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PyramidToppleDemo : public ChipmunkTestBed { +class PyramidToppleDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PyramidToppleDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(PyramidToppleDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class ChainsDemo : public ChipmunkTestBed { +class ChainsDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(ChainsDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(ChainsDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class OneWayDemo : public ChipmunkTestBed { +class OneWayDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(OneWayDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(OneWayDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PlanetDemo : public ChipmunkTestBed { +class PlanetDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PlanetDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(PlanetDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class TheoJansenDemo : public ChipmunkTestBed { +class TheoJansenDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(TheoJansenDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(TheoJansenDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class TankDemo : public ChipmunkTestBed { +class TankDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(TankDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(TankDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class BenchDemo : public ChipmunkTestBed { +class BenchDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(BenchDemo); - virtual std::string title() const override; - virtual std::string subtitle() const override; - virtual void onEnter() override; + CREATE_FUNC(BenchDemo); + virtual std::string title() const override; + virtual std::string subtitle() const override; + virtual void onEnter() override; - - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class SpringiesDemo : public ChipmunkTestBed { +class SpringiesDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(SpringiesDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(SpringiesDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class StickyDemo : public ChipmunkTestBed { +class StickyDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(StickyDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(StickyDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class ShatterDemo : public ChipmunkTestBed { +class ShatterDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(ShatterDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(ShatterDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class CraneDemo : public ChipmunkTestBed { +class CraneDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(CraneDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(CraneDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class JointsDemo : public ChipmunkTestBed { +class JointsDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(JointsDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(JointsDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class ConvexDemo : public ChipmunkTestBed { +class ConvexDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(ConvexDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(ConvexDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PumpDemo : public ChipmunkTestBed { +class PumpDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PumpDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(PumpDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class PlatformerPlayerDemo : public ChipmunkTestBed { +class PlatformerPlayerDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(PlatformerPlayerDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(PlatformerPlayerDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class QueryDemo : public ChipmunkTestBed { +class QueryDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(QueryDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(QueryDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; - -class ContactGraphDemo : public ChipmunkTestBed { +class ContactGraphDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(ContactGraphDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(ContactGraphDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class BuoyancyDemo : public ChipmunkTestBed { +class BuoyancyDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(BuoyancyDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(BuoyancyDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class SliceDemo : public ChipmunkTestBed { +class SliceDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(SliceDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(SliceDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class UnicycleDemo : public ChipmunkTestBed { +class UnicycleDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(UnicycleDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(UnicycleDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; -class ExampleDemo : public ChipmunkTestBed { +class ExampleDemo : public ChipmunkTestBed +{ public: - CREATE_FUNC(ExampleDemo); - virtual std::string title() const override; - virtual void onEnter() override; + CREATE_FUNC(ExampleDemo); + virtual std::string title() const override; + virtual void onEnter() override; - void initPhysics() override; - virtual void update(float dt) override; + void initPhysics() override; + virtual void update(float dt) override; }; DEFINE_TEST_SUITE(ChipmunkTestBedTests); diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c index d99c0216da5c..e869164b9e2a 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Bench.c @@ -4,485 +4,611 @@ #define ENABLE_HASTY 0 #if ENABLE_HASTY - #include "chipmunk/cpHastySpace.h" - - static cpSpace *MakeHastySpace(){ - cpSpace *space = cpHastySpaceNew(); - cpHastySpaceSetThreads(space, 0); - return space; - } - - #define BENCH_SPACE_NEW MakeHastySpace - #define BENCH_SPACE_FREE cpHastySpaceFree - #define BENCH_SPACE_STEP cpHastySpaceStep +# include "chipmunk/cpHastySpace.h" + +static cpSpace* MakeHastySpace() +{ + cpSpace* space = cpHastySpaceNew(); + cpHastySpaceSetThreads(space, 0); + return space; +} + +# define BENCH_SPACE_NEW MakeHastySpace +# define BENCH_SPACE_FREE cpHastySpaceFree +# define BENCH_SPACE_STEP cpHastySpaceStep #else - #define BENCH_SPACE_NEW cpSpaceNew - #define BENCH_SPACE_FREE cpSpaceFree - #define BENCH_SPACE_STEP cpSpaceStep +# define BENCH_SPACE_NEW cpSpaceNew +# define BENCH_SPACE_FREE cpSpaceFree +# define BENCH_SPACE_STEP cpSpaceStep #endif const cpFloat bevel = 1.0; static cpVect simple_terrain_verts[] = { - {350.00, 425.07}, {336.00, 436.55}, {272.00, 435.39}, {258.00, 427.63}, {225.28, 420.00}, {202.82, 396.00}, - {191.81, 388.00}, {189.00, 381.89}, {173.00, 380.39}, {162.59, 368.00}, {150.47, 319.00}, {128.00, 311.55}, - {119.14, 286.00}, {126.84, 263.00}, {120.56, 227.00}, {141.14, 178.00}, {137.52, 162.00}, {146.51, 142.00}, - {156.23, 136.00}, {158.00, 118.27}, {170.00, 100.77}, {208.43, 84.00}, {224.00, 69.65}, {249.30, 68.00}, - {257.00, 54.77}, {363.00, 45.94}, {374.15, 54.00}, {386.00, 69.60}, {413.00, 70.73}, {456.00, 84.89}, - {468.09, 99.00}, {467.09, 123.00}, {464.92, 135.00}, {469.00, 141.03}, {497.00, 148.67}, {513.85, 180.00}, - {509.56, 223.00}, {523.51, 247.00}, {523.00, 277.00}, {497.79, 311.00}, {478.67, 348.00}, {467.90, 360.00}, - {456.76, 382.00}, {432.95, 389.00}, {417.00, 411.32}, {373.00, 433.19}, {361.00, 430.02}, {350.00, 425.07}, + {350.00, 425.07}, {336.00, 436.55}, {272.00, 435.39}, {258.00, 427.63}, {225.28, 420.00}, {202.82, 396.00}, + {191.81, 388.00}, {189.00, 381.89}, {173.00, 380.39}, {162.59, 368.00}, {150.47, 319.00}, {128.00, 311.55}, + {119.14, 286.00}, {126.84, 263.00}, {120.56, 227.00}, {141.14, 178.00}, {137.52, 162.00}, {146.51, 142.00}, + {156.23, 136.00}, {158.00, 118.27}, {170.00, 100.77}, {208.43, 84.00}, {224.00, 69.65}, {249.30, 68.00}, + {257.00, 54.77}, {363.00, 45.94}, {374.15, 54.00}, {386.00, 69.60}, {413.00, 70.73}, {456.00, 84.89}, + {468.09, 99.00}, {467.09, 123.00}, {464.92, 135.00}, {469.00, 141.03}, {497.00, 148.67}, {513.85, 180.00}, + {509.56, 223.00}, {523.51, 247.00}, {523.00, 277.00}, {497.79, 311.00}, {478.67, 348.00}, {467.90, 360.00}, + {456.76, 382.00}, {432.95, 389.00}, {417.00, 411.32}, {373.00, 433.19}, {361.00, 430.02}, {350.00, 425.07}, }; -static int simple_terrain_count = sizeof(simple_terrain_verts)/sizeof(cpVect); - -//cpBody bodies[1000] = {}; -//cpCircleShape circles[1000] = {}; - -static void add_circle(cpSpace *space, int index, cpFloat radius){ - cpFloat mass = radius*radius/25.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); -// cpBody *body = cpSpaceAddBody(space, cpBodyInit(&bodies[i], mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); - - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); -// cpShape *shape = cpSpaceAddShape(space, cpCircleShapeInit(&circles[i], body, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0); cpShapeSetFriction(shape, 0.9); +static int simple_terrain_count = sizeof(simple_terrain_verts) / sizeof(cpVect); + +// cpBody bodies[1000] = {}; +// cpCircleShape circles[1000] = {}; + +static void add_circle(cpSpace* space, int index, cpFloat radius) +{ + cpFloat mass = radius * radius / 25.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + // cpBody *body = cpSpaceAddBody(space, cpBodyInit(&bodies[i], mass, cpMomentForCircle(mass, 0.0f, radius, + //cpvzero))); + cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + // cpShape *shape = cpSpaceAddShape(space, cpCircleShapeInit(&circles[i], body, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.9); } -static void add_box(cpSpace *space, int index, cpFloat size){ - cpFloat mass = size*size/100.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, size, size))); -// cpBody *body = cpSpaceAddBody(space, cpBodyInit(&bodies[i], mass, cpMomentForBox(mass, size, size))); - cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); - - - cpShape *shape = cpSpaceAddShape(space, cpBoxShapeNew(body, size - bevel*2, size - bevel*2, 0.0)); - cpPolyShapeSetRadius(shape, bevel); - cpShapeSetElasticity(shape, 0.0); cpShapeSetFriction(shape, 0.9); +static void add_box(cpSpace* space, int index, cpFloat size) +{ + cpFloat mass = size * size / 100.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, size, size))); + // cpBody *body = cpSpaceAddBody(space, cpBodyInit(&bodies[i], mass, cpMomentForBox(mass, size, size))); + cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpBoxShapeNew(body, size - bevel * 2, size - bevel * 2, 0.0)); + cpPolyShapeSetRadius(shape, bevel); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.9); } -static void add_hexagon(cpSpace *space, int index, cpFloat radius){ - cpVect hexagon[6]; - for(int i=0; i<6; i++){ - cpFloat angle = -CP_PI*2.0f*i/6.0f; - hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); - } - - cpFloat mass = radius*radius; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); - cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); - - cpShape *shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); - cpShapeSetElasticity(shape, 0.0); cpShapeSetFriction(shape, 0.9); +static void add_hexagon(cpSpace* space, int index, cpFloat radius) +{ + cpVect hexagon[6]; + for (int i = 0; i < 6; i++) + { + cpFloat angle = -CP_PI * 2.0f * i / 6.0f; + hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); + } + + cpFloat mass = radius * radius; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); + cpBodySetPosition(body, cpvmult(frand_unit_circle(), 180.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.9); } - -static cpSpace * -SetupSpace_simpleTerrain(){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetCollisionSlop(space, 0.5f); - - cpVect offset = cpv(-320, -240); - for(int i=0; i<(simple_terrain_count - 1); i++){ - cpVect a = simple_terrain_verts[i], b = simple_terrain_verts[i+1]; - cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); - } - - return space; +static cpSpace* SetupSpace_simpleTerrain() +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -100)); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpVect offset = cpv(-320, -240); + for (int i = 0; i < (simple_terrain_count - 1); i++) + { + cpVect a = simple_terrain_verts[i], b = simple_terrain_verts[i + 1]; + cpSpaceAddShape(space, + cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); + } + + return space; } - // SimpleTerrain constant sized objects -static cpSpace *init_SimpleTerrainCircles_1000(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<1000; i++) add_circle(space, i, 5.0f); - - return space; -} +static cpSpace* init_SimpleTerrainCircles_1000(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 1000; i++) + add_circle(space, i, 5.0f); -static cpSpace *init_SimpleTerrainCircles_500(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<500; i++) add_circle(space, i, 5.0f); - - return space; + return space; } -static cpSpace *init_SimpleTerrainCircles_100(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<100; i++) add_circle(space, i, 5.0f); - - return space; +static cpSpace* init_SimpleTerrainCircles_500(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 500; i++) + add_circle(space, i, 5.0f); + + return space; } -static cpSpace *init_SimpleTerrainBoxes_1000(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<1000; i++) add_box(space, i, 10.0f); - - return space; +static cpSpace* init_SimpleTerrainCircles_100(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 100; i++) + add_circle(space, i, 5.0f); + + return space; } -static cpSpace *init_SimpleTerrainBoxes_500(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<500; i++) add_box(space, i, 10.0f); - - return space; +static cpSpace* init_SimpleTerrainBoxes_1000(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 1000; i++) + add_box(space, i, 10.0f); + + return space; } -static cpSpace *init_SimpleTerrainBoxes_100(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<100; i++) add_box(space, i, 10.0f); - - return space; +static cpSpace* init_SimpleTerrainBoxes_500(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 500; i++) + add_box(space, i, 10.0f); + + return space; } -static cpSpace *init_SimpleTerrainHexagons_1000(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<1000; i++) add_hexagon(space, i, 5.0f); - - return space; +static cpSpace* init_SimpleTerrainBoxes_100(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 100; i++) + add_box(space, i, 10.0f); + + return space; } -static cpSpace *init_SimpleTerrainHexagons_500(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<500; i++) add_hexagon(space, i, 5.0f); - - return space; +static cpSpace* init_SimpleTerrainHexagons_1000(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 1000; i++) + add_hexagon(space, i, 5.0f); + + return space; } -static cpSpace *init_SimpleTerrainHexagons_100(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<100; i++) add_hexagon(space, i, 5.0f); - - return space; +static cpSpace* init_SimpleTerrainHexagons_500(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 500; i++) + add_hexagon(space, i, 5.0f); + + return space; } +static cpSpace* init_SimpleTerrainHexagons_100(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 100; i++) + add_hexagon(space, i, 5.0f); -// SimpleTerrain variable sized objects -static cpFloat rand_size(){ - return cpfpow(1.5, cpflerp(-1.5, 3.5, frand())); + return space; } -static cpSpace *init_SimpleTerrainVCircles_200(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<200; i++) add_circle(space, i, 5.0f*rand_size()); - - return space; +// SimpleTerrain variable sized objects +static cpFloat rand_size() +{ + return cpfpow(1.5, cpflerp(-1.5, 3.5, frand())); } -static cpSpace *init_SimpleTerrainVBoxes_200(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<200; i++) add_box(space, i, 8.0f*rand_size()); - - return space; +static cpSpace* init_SimpleTerrainVCircles_200(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 200; i++) + add_circle(space, i, 5.0f * rand_size()); + + return space; } -static cpSpace *init_SimpleTerrainVHexagons_200(void){ - cpSpace *space = SetupSpace_simpleTerrain(); - for(int i=0; i<200; i++) add_hexagon(space, i, 5.0f*rand_size()); - - return space; +static cpSpace* init_SimpleTerrainVBoxes_200(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 200; i++) + add_box(space, i, 8.0f * rand_size()); + + return space; } +static cpSpace* init_SimpleTerrainVHexagons_200(void) +{ + cpSpace* space = SetupSpace_simpleTerrain(); + for (int i = 0; i < 200; i++) + add_hexagon(space, i, 5.0f * rand_size()); + + return space; +} // ComplexTerrain static cpVect complex_terrain_verts[] = { - { 46.78, 479.00}, { 35.00, 475.63}, { 27.52, 469.00}, { 23.52, 455.00}, { 23.78, 441.00}, { 28.41, 428.00}, { 49.61, 394.00}, { 59.00, 381.56}, { 80.00, 366.03}, { 81.46, 358.00}, { 86.31, 350.00}, { 77.74, 320.00}, - { 70.26, 278.00}, { 67.51, 270.00}, { 58.86, 260.00}, { 57.19, 247.00}, { 38.00, 235.60}, { 25.76, 221.00}, { 24.58, 209.00}, { 27.63, 202.00}, { 31.28, 198.00}, { 40.00, 193.72}, { 48.00, 193.73}, { 55.00, 196.70}, - { 62.10, 204.00}, { 71.00, 209.04}, { 79.00, 206.55}, { 88.00, 206.81}, { 95.88, 211.00}, {103.00, 220.49}, {131.00, 220.51}, {137.00, 222.66}, {143.08, 228.00}, {146.22, 234.00}, {147.08, 241.00}, {145.45, 248.00}, - {142.31, 253.00}, {132.00, 259.30}, {115.00, 259.70}, {109.28, 270.00}, {112.91, 296.00}, {119.69, 324.00}, {129.00, 336.26}, {141.00, 337.59}, {153.00, 331.57}, {175.00, 325.74}, {188.00, 325.19}, {235.00, 317.46}, - {250.00, 317.19}, {255.00, 309.12}, {262.62, 302.00}, {262.21, 295.00}, {248.00, 273.59}, {229.00, 257.93}, {221.00, 255.48}, {215.00, 251.59}, {210.79, 246.00}, {207.47, 234.00}, {203.25, 227.00}, {179.00, 205.90}, - {148.00, 189.54}, {136.00, 181.45}, {120.00, 180.31}, {110.00, 181.65}, { 95.00, 179.31}, { 63.00, 166.96}, { 50.00, 164.23}, { 31.00, 154.49}, { 19.76, 145.00}, { 15.96, 136.00}, { 16.65, 127.00}, { 20.57, 120.00}, - { 28.00, 114.63}, { 40.00, 113.67}, { 65.00, 127.22}, { 73.00, 128.69}, { 81.96, 120.00}, { 77.58, 103.00}, { 78.18, 92.00}, { 59.11, 77.00}, { 52.00, 67.29}, { 31.29, 55.00}, { 25.67, 47.00}, { 24.65, 37.00}, - { 27.82, 29.00}, { 35.00, 22.55}, { 44.00, 20.35}, { 49.00, 20.81}, { 61.00, 25.69}, { 79.00, 37.81}, { 88.00, 49.64}, { 97.00, 56.65}, {109.00, 49.61}, {143.00, 38.96}, {197.00, 37.27}, {215.00, 35.30}, - {222.00, 36.65}, {228.42, 41.00}, {233.30, 49.00}, {234.14, 57.00}, {231.00, 65.80}, {224.00, 72.38}, {218.00, 74.50}, {197.00, 76.62}, {145.00, 78.81}, {123.00, 87.41}, {117.59, 98.00}, {117.79, 104.00}, - {119.00, 106.23}, {138.73, 120.00}, {148.00, 129.50}, {158.50, 149.00}, {203.93, 175.00}, {229.00, 196.60}, {238.16, 208.00}, {245.20, 221.00}, {275.45, 245.00}, {289.00, 263.24}, {303.60, 287.00}, {312.00, 291.57}, - {339.25, 266.00}, {366.33, 226.00}, {363.43, 216.00}, {364.13, 206.00}, {353.00, 196.72}, {324.00, 181.05}, {307.00, 169.63}, {274.93, 156.00}, {256.00, 152.48}, {228.00, 145.13}, {221.09, 142.00}, {214.87, 135.00}, - {212.67, 127.00}, {213.81, 119.00}, {219.32, 111.00}, {228.00, 106.52}, {236.00, 106.39}, {290.00, 119.40}, {299.33, 114.00}, {300.52, 109.00}, {300.30, 53.00}, {301.46, 47.00}, {305.00, 41.12}, {311.00, 36.37}, - {317.00, 34.43}, {325.00, 34.81}, {334.90, 41.00}, {339.45, 50.00}, {339.82, 132.00}, {346.09, 139.00}, {350.00, 150.26}, {380.00, 167.38}, {393.00, 166.48}, {407.00, 155.54}, {430.00, 147.30}, {437.78, 135.00}, - {433.13, 122.00}, {410.23, 78.00}, {401.59, 69.00}, {393.48, 56.00}, {392.80, 44.00}, {395.50, 38.00}, {401.00, 32.49}, {409.00, 29.41}, {420.00, 30.84}, {426.92, 36.00}, {432.32, 44.00}, {439.49, 51.00}, - {470.13, 108.00}, {475.71, 124.00}, {483.00, 130.11}, {488.00, 139.43}, {529.00, 139.40}, {536.00, 132.52}, {543.73, 129.00}, {540.47, 115.00}, {541.11, 100.00}, {552.18, 68.00}, {553.78, 47.00}, {559.00, 39.76}, - {567.00, 35.52}, {577.00, 35.45}, {585.00, 39.58}, {591.38, 50.00}, {591.67, 66.00}, {590.31, 79.00}, {579.76, 109.00}, {582.25, 119.00}, {583.66, 136.00}, {586.45, 143.00}, {586.44, 151.00}, {580.42, 168.00}, - {577.15, 173.00}, {572.00, 177.13}, {564.00, 179.49}, {478.00, 178.81}, {443.00, 184.76}, {427.10, 190.00}, {424.00, 192.11}, {415.94, 209.00}, {408.82, 228.00}, {405.82, 241.00}, {411.00, 250.82}, {415.00, 251.50}, - {428.00, 248.89}, {469.00, 246.29}, {505.00, 246.49}, {533.00, 243.60}, {541.87, 248.00}, {547.55, 256.00}, {548.48, 267.00}, {544.00, 276.00}, {534.00, 282.24}, {513.00, 285.46}, {468.00, 285.76}, {402.00, 291.70}, - {392.00, 290.29}, {377.00, 294.46}, {367.00, 294.43}, {356.44, 304.00}, {354.22, 311.00}, {362.00, 321.36}, {390.00, 322.44}, {433.00, 330.16}, {467.00, 332.76}, {508.00, 347.64}, {522.00, 357.67}, {528.00, 354.46}, - {536.00, 352.96}, {546.06, 336.00}, {553.47, 306.00}, {564.19, 282.00}, {567.84, 268.00}, {578.72, 246.00}, {585.00, 240.97}, {592.00, 238.91}, {600.00, 239.72}, {606.00, 242.82}, {612.36, 251.00}, {613.35, 263.00}, - {588.75, 324.00}, {583.25, 350.00}, {572.12, 370.00}, {575.45, 378.00}, {575.20, 388.00}, {589.00, 393.81}, {599.20, 404.00}, {607.14, 416.00}, {609.96, 430.00}, {615.45, 441.00}, {613.44, 462.00}, {610.48, 469.00}, - {603.00, 475.63}, {590.96, 479.00}, + {46.78, 479.00}, {35.00, 475.63}, {27.52, 469.00}, {23.52, 455.00}, {23.78, 441.00}, {28.41, 428.00}, + {49.61, 394.00}, {59.00, 381.56}, {80.00, 366.03}, {81.46, 358.00}, {86.31, 350.00}, {77.74, 320.00}, + {70.26, 278.00}, {67.51, 270.00}, {58.86, 260.00}, {57.19, 247.00}, {38.00, 235.60}, {25.76, 221.00}, + {24.58, 209.00}, {27.63, 202.00}, {31.28, 198.00}, {40.00, 193.72}, {48.00, 193.73}, {55.00, 196.70}, + {62.10, 204.00}, {71.00, 209.04}, {79.00, 206.55}, {88.00, 206.81}, {95.88, 211.00}, {103.00, 220.49}, + {131.00, 220.51}, {137.00, 222.66}, {143.08, 228.00}, {146.22, 234.00}, {147.08, 241.00}, {145.45, 248.00}, + {142.31, 253.00}, {132.00, 259.30}, {115.00, 259.70}, {109.28, 270.00}, {112.91, 296.00}, {119.69, 324.00}, + {129.00, 336.26}, {141.00, 337.59}, {153.00, 331.57}, {175.00, 325.74}, {188.00, 325.19}, {235.00, 317.46}, + {250.00, 317.19}, {255.00, 309.12}, {262.62, 302.00}, {262.21, 295.00}, {248.00, 273.59}, {229.00, 257.93}, + {221.00, 255.48}, {215.00, 251.59}, {210.79, 246.00}, {207.47, 234.00}, {203.25, 227.00}, {179.00, 205.90}, + {148.00, 189.54}, {136.00, 181.45}, {120.00, 180.31}, {110.00, 181.65}, {95.00, 179.31}, {63.00, 166.96}, + {50.00, 164.23}, {31.00, 154.49}, {19.76, 145.00}, {15.96, 136.00}, {16.65, 127.00}, {20.57, 120.00}, + {28.00, 114.63}, {40.00, 113.67}, {65.00, 127.22}, {73.00, 128.69}, {81.96, 120.00}, {77.58, 103.00}, + {78.18, 92.00}, {59.11, 77.00}, {52.00, 67.29}, {31.29, 55.00}, {25.67, 47.00}, {24.65, 37.00}, + {27.82, 29.00}, {35.00, 22.55}, {44.00, 20.35}, {49.00, 20.81}, {61.00, 25.69}, {79.00, 37.81}, + {88.00, 49.64}, {97.00, 56.65}, {109.00, 49.61}, {143.00, 38.96}, {197.00, 37.27}, {215.00, 35.30}, + {222.00, 36.65}, {228.42, 41.00}, {233.30, 49.00}, {234.14, 57.00}, {231.00, 65.80}, {224.00, 72.38}, + {218.00, 74.50}, {197.00, 76.62}, {145.00, 78.81}, {123.00, 87.41}, {117.59, 98.00}, {117.79, 104.00}, + {119.00, 106.23}, {138.73, 120.00}, {148.00, 129.50}, {158.50, 149.00}, {203.93, 175.00}, {229.00, 196.60}, + {238.16, 208.00}, {245.20, 221.00}, {275.45, 245.00}, {289.00, 263.24}, {303.60, 287.00}, {312.00, 291.57}, + {339.25, 266.00}, {366.33, 226.00}, {363.43, 216.00}, {364.13, 206.00}, {353.00, 196.72}, {324.00, 181.05}, + {307.00, 169.63}, {274.93, 156.00}, {256.00, 152.48}, {228.00, 145.13}, {221.09, 142.00}, {214.87, 135.00}, + {212.67, 127.00}, {213.81, 119.00}, {219.32, 111.00}, {228.00, 106.52}, {236.00, 106.39}, {290.00, 119.40}, + {299.33, 114.00}, {300.52, 109.00}, {300.30, 53.00}, {301.46, 47.00}, {305.00, 41.12}, {311.00, 36.37}, + {317.00, 34.43}, {325.00, 34.81}, {334.90, 41.00}, {339.45, 50.00}, {339.82, 132.00}, {346.09, 139.00}, + {350.00, 150.26}, {380.00, 167.38}, {393.00, 166.48}, {407.00, 155.54}, {430.00, 147.30}, {437.78, 135.00}, + {433.13, 122.00}, {410.23, 78.00}, {401.59, 69.00}, {393.48, 56.00}, {392.80, 44.00}, {395.50, 38.00}, + {401.00, 32.49}, {409.00, 29.41}, {420.00, 30.84}, {426.92, 36.00}, {432.32, 44.00}, {439.49, 51.00}, + {470.13, 108.00}, {475.71, 124.00}, {483.00, 130.11}, {488.00, 139.43}, {529.00, 139.40}, {536.00, 132.52}, + {543.73, 129.00}, {540.47, 115.00}, {541.11, 100.00}, {552.18, 68.00}, {553.78, 47.00}, {559.00, 39.76}, + {567.00, 35.52}, {577.00, 35.45}, {585.00, 39.58}, {591.38, 50.00}, {591.67, 66.00}, {590.31, 79.00}, + {579.76, 109.00}, {582.25, 119.00}, {583.66, 136.00}, {586.45, 143.00}, {586.44, 151.00}, {580.42, 168.00}, + {577.15, 173.00}, {572.00, 177.13}, {564.00, 179.49}, {478.00, 178.81}, {443.00, 184.76}, {427.10, 190.00}, + {424.00, 192.11}, {415.94, 209.00}, {408.82, 228.00}, {405.82, 241.00}, {411.00, 250.82}, {415.00, 251.50}, + {428.00, 248.89}, {469.00, 246.29}, {505.00, 246.49}, {533.00, 243.60}, {541.87, 248.00}, {547.55, 256.00}, + {548.48, 267.00}, {544.00, 276.00}, {534.00, 282.24}, {513.00, 285.46}, {468.00, 285.76}, {402.00, 291.70}, + {392.00, 290.29}, {377.00, 294.46}, {367.00, 294.43}, {356.44, 304.00}, {354.22, 311.00}, {362.00, 321.36}, + {390.00, 322.44}, {433.00, 330.16}, {467.00, 332.76}, {508.00, 347.64}, {522.00, 357.67}, {528.00, 354.46}, + {536.00, 352.96}, {546.06, 336.00}, {553.47, 306.00}, {564.19, 282.00}, {567.84, 268.00}, {578.72, 246.00}, + {585.00, 240.97}, {592.00, 238.91}, {600.00, 239.72}, {606.00, 242.82}, {612.36, 251.00}, {613.35, 263.00}, + {588.75, 324.00}, {583.25, 350.00}, {572.12, 370.00}, {575.45, 378.00}, {575.20, 388.00}, {589.00, 393.81}, + {599.20, 404.00}, {607.14, 416.00}, {609.96, 430.00}, {615.45, 441.00}, {613.44, 462.00}, {610.48, 469.00}, + {603.00, 475.63}, {590.96, 479.00}, }; -static int complex_terrain_count = sizeof(complex_terrain_verts)/sizeof(cpVect); - -static cpSpace *init_ComplexTerrainCircles_1000(void){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetCollisionSlop(space, 0.5f); - - cpVect offset = cpv(-320, -240); - for(int i=0; i<(complex_terrain_count - 1); i++){ - cpVect a = complex_terrain_verts[i], b = complex_terrain_verts[i+1]; - cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); - } - - for(int i=0; i<1000; i++){ - cpFloat radius = 5.0f; - cpFloat mass = radius*radius; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 180.0f), cpv(0.0f, 300.0f))); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0); cpShapeSetFriction(shape, 0.0); - } - - return space; +static int complex_terrain_count = sizeof(complex_terrain_verts) / sizeof(cpVect); + +static cpSpace* init_ComplexTerrainCircles_1000(void) +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -100)); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpVect offset = cpv(-320, -240); + for (int i = 0; i < (complex_terrain_count - 1); i++) + { + cpVect a = complex_terrain_verts[i], b = complex_terrain_verts[i + 1]; + cpSpaceAddShape(space, + cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); + } + + for (int i = 0; i < 1000; i++) + { + cpFloat radius = 5.0f; + cpFloat mass = radius * radius; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 180.0f), cpv(0.0f, 300.0f))); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.0); + } + + return space; } -static cpSpace *init_ComplexTerrainHexagons_1000(void){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetCollisionSlop(space, 0.5f); - - cpVect offset = cpv(-320, -240); - for(int i=0; i<(complex_terrain_count - 1); i++){ - cpVect a = complex_terrain_verts[i], b = complex_terrain_verts[i+1]; - cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); - } - - cpFloat radius = 5.0f; - cpVect hexagon[6]; - for(int i=0; i<6; i++){ - cpFloat angle = -CP_PI*2.0f*i/6.0f; - hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); - } - - for(int i=0; i<1000; i++){ - cpFloat mass = radius*radius; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); - cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 180.0f), cpv(0.0f, 300.0f))); - - cpShape *shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); - cpShapeSetElasticity(shape, 0.0); cpShapeSetFriction(shape, 0.0); - } - - return space; +static cpSpace* init_ComplexTerrainHexagons_1000(void) +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -100)); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpVect offset = cpv(-320, -240); + for (int i = 0; i < (complex_terrain_count - 1); i++) + { + cpVect a = complex_terrain_verts[i], b = complex_terrain_verts[i + 1]; + cpSpaceAddShape(space, + cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); + } + + cpFloat radius = 5.0f; + cpVect hexagon[6]; + for (int i = 0; i < 6; i++) + { + cpFloat angle = -CP_PI * 2.0f * i / 6.0f; + hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); + } + + for (int i = 0; i < 1000; i++) + { + cpFloat mass = radius * radius; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); + cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 180.0f), cpv(0.0f, 300.0f))); + + cpShape* shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.0); + } + + return space; } - // BouncyTerrain static cpVect bouncy_terrain_verts[] = { - {537.18, 23.00}, {520.50, 36.00}, {501.53, 63.00}, {496.14, 76.00}, {498.86, 86.00}, {504.00, 90.51}, {508.00, 91.36}, {508.77, 84.00}, {513.00, 77.73}, {519.00, 74.48}, {530.00, 74.67}, {545.00, 54.65}, - {554.00, 48.77}, {562.00, 46.39}, {568.00, 45.94}, {568.61, 47.00}, {567.94, 55.00}, {571.27, 64.00}, {572.92, 80.00}, {572.00, 81.39}, {563.00, 79.93}, {556.00, 82.69}, {551.49, 88.00}, {549.00, 95.76}, - {538.00, 93.40}, {530.00, 102.38}, {523.00, 104.00}, {517.00, 103.02}, {516.22, 109.00}, {518.96, 116.00}, {526.00, 121.15}, {534.00, 116.48}, {543.00, 116.77}, {549.28, 121.00}, {554.00, 130.17}, {564.00, 125.67}, - {575.60, 129.00}, {573.31, 121.00}, {567.77, 111.00}, {575.00, 106.47}, {578.51, 102.00}, {580.25, 95.00}, {577.98, 87.00}, {582.00, 85.71}, {597.00, 89.46}, {604.80, 95.00}, {609.28, 104.00}, {610.55, 116.00}, - {609.30, 125.00}, {600.80, 142.00}, {597.31, 155.00}, {584.00, 167.23}, {577.86, 175.00}, {583.52, 184.00}, {582.64, 195.00}, {591.00, 196.56}, {597.81, 201.00}, {607.45, 219.00}, {607.51, 246.00}, {600.00, 275.46}, - {588.00, 267.81}, {579.00, 264.91}, {557.00, 264.41}, {552.98, 259.00}, {548.00, 246.18}, {558.00, 247.12}, {565.98, 244.00}, {571.10, 237.00}, {571.61, 229.00}, {568.25, 222.00}, {562.00, 217.67}, {544.00, 213.93}, - {536.73, 214.00}, {535.60, 204.00}, {539.69, 181.00}, {542.84, 171.00}, {550.43, 161.00}, {540.00, 156.27}, {536.62, 152.00}, {534.70, 146.00}, {527.00, 141.88}, {518.59, 152.00}, {514.51, 160.00}, {510.33, 175.00}, - {519.38, 183.00}, {520.52, 194.00}, {516.00, 201.27}, {505.25, 206.00}, {507.57, 223.00}, {519.90, 260.00}, {529.00, 260.48}, {534.00, 262.94}, {538.38, 268.00}, {540.00, 275.00}, {537.06, 284.00}, {530.00, 289.23}, - {520.00, 289.23}, {513.00, 284.18}, {509.71, 286.00}, {501.69, 298.00}, {501.56, 305.00}, {504.30, 311.00}, {512.00, 316.43}, {521.00, 316.42}, {525.67, 314.00}, {535.00, 304.98}, {562.00, 294.80}, {573.00, 294.81}, - {587.52, 304.00}, {600.89, 310.00}, {596.96, 322.00}, {603.28, 327.00}, {606.52, 333.00}, {605.38, 344.00}, {597.65, 352.00}, {606.36, 375.00}, {607.16, 384.00}, {603.40, 393.00}, {597.00, 398.14}, {577.00, 386.15}, - {564.35, 373.00}, {565.21, 364.00}, {562.81, 350.00}, {553.00, 346.06}, {547.48, 338.00}, {547.48, 330.00}, {550.00, 323.30}, {544.00, 321.53}, {537.00, 322.70}, {532.00, 326.23}, {528.89, 331.00}, {527.83, 338.00}, - {533.02, 356.00}, {542.00, 360.73}, {546.68, 369.00}, {545.38, 379.00}, {537.58, 386.00}, {537.63, 388.00}, {555.00, 407.47}, {563.00, 413.52}, {572.57, 418.00}, {582.72, 426.00}, {578.00, 431.12}, {563.21, 440.00}, - {558.00, 449.27}, {549.00, 452.94}, {541.00, 451.38}, {536.73, 448.00}, {533.00, 441.87}, {520.00, 437.96}, {514.00, 429.69}, {490.00, 415.15}, {472.89, 399.00}, {472.03, 398.00}, {474.00, 396.71}, {486.00, 393.61}, - {492.00, 385.85}, {492.00, 376.15}, {489.04, 371.00}, {485.00, 368.11}, {480.00, 376.27}, {472.00, 379.82}, {463.00, 378.38}, {455.08, 372.00}, {446.00, 377.69}, {439.00, 385.24}, {436.61, 391.00}, {437.52, 404.00}, - {440.00, 409.53}, {463.53, 433.00}, {473.80, 441.00}, {455.00, 440.30}, {443.00, 436.18}, {436.00, 431.98}, {412.00, 440.92}, {397.00, 442.46}, {393.59, 431.00}, {393.71, 412.00}, {400.00, 395.10}, {407.32, 387.00}, - {408.54, 380.00}, {407.42, 375.00}, {403.97, 370.00}, {399.00, 366.74}, {393.00, 365.68}, {391.23, 374.00}, {387.00, 380.27}, {381.00, 383.52}, {371.56, 384.00}, {364.98, 401.00}, {362.96, 412.00}, {363.63, 435.00}, - {345.00, 433.55}, {344.52, 442.00}, {342.06, 447.00}, {337.00, 451.38}, {330.00, 453.00}, {325.00, 452.23}, {318.00, 448.17}, {298.00, 453.70}, {284.00, 451.49}, {278.62, 449.00}, {291.47, 408.00}, {291.77, 398.00}, - {301.00, 393.83}, {305.00, 393.84}, {305.60, 403.00}, {310.00, 409.47}, {318.00, 413.07}, {325.00, 412.40}, {332.31, 407.00}, {335.07, 400.00}, {334.40, 393.00}, {329.00, 385.69}, {319.00, 382.79}, {301.00, 389.23}, - {289.00, 389.97}, {265.00, 389.82}, {251.00, 385.85}, {245.00, 389.23}, {239.00, 389.94}, {233.00, 388.38}, {226.00, 382.04}, {206.00, 374.75}, {206.00, 394.00}, {204.27, 402.00}, {197.00, 401.79}, {191.00, 403.49}, - {186.53, 407.00}, {183.60, 412.00}, {183.60, 422.00}, {189.00, 429.31}, {196.00, 432.07}, {203.00, 431.40}, {209.47, 427.00}, {213.00, 419.72}, {220.00, 420.21}, {227.00, 418.32}, {242.00, 408.41}, {258.98, 409.00}, - {250.00, 435.43}, {239.00, 438.78}, {223.00, 448.19}, {209.00, 449.70}, {205.28, 456.00}, {199.00, 460.23}, {190.00, 460.52}, {182.73, 456.00}, {178.00, 446.27}, {160.00, 441.42}, {148.35, 435.00}, {149.79, 418.00}, - {157.72, 401.00}, {161.00, 396.53}, {177.00, 385.00}, {180.14, 380.00}, {181.11, 374.00}, {180.00, 370.52}, {170.00, 371.68}, {162.72, 368.00}, {158.48, 361.00}, {159.56, 349.00}, {154.00, 342.53}, {146.00, 339.85}, - {136.09, 343.00}, {130.64, 351.00}, {131.74, 362.00}, {140.61, 374.00}, {130.68, 387.00}, {120.75, 409.00}, {118.09, 421.00}, {117.92, 434.00}, {100.00, 432.40}, { 87.00, 427.48}, { 81.59, 423.00}, { 73.64, 409.00}, - { 72.57, 398.00}, { 74.62, 386.00}, { 78.80, 378.00}, { 88.00, 373.43}, { 92.49, 367.00}, { 93.32, 360.00}, { 91.30, 353.00}, {103.00, 342.67}, {109.00, 343.10}, {116.00, 340.44}, {127.33, 330.00}, {143.00, 327.24}, - {154.30, 322.00}, {145.00, 318.06}, {139.77, 311.00}, {139.48, 302.00}, {144.95, 293.00}, {143.00, 291.56}, {134.00, 298.21}, {118.00, 300.75}, {109.40, 305.00}, { 94.67, 319.00}, { 88.00, 318.93}, { 81.00, 321.69}, - { 67.24, 333.00}, { 56.68, 345.00}, { 53.00, 351.40}, { 47.34, 333.00}, { 50.71, 314.00}, { 56.57, 302.00}, { 68.00, 287.96}, { 91.00, 287.24}, {110.00, 282.36}, {133.80, 271.00}, {147.34, 256.00}, {156.47, 251.00}, - {157.26, 250.00}, {154.18, 242.00}, {154.48, 236.00}, {158.72, 229.00}, {166.71, 224.00}, {170.15, 206.00}, {170.19, 196.00}, {167.24, 188.00}, {160.00, 182.67}, {150.00, 182.66}, {143.60, 187.00}, {139.96, 195.00}, - {139.50, 207.00}, {136.45, 221.00}, {136.52, 232.00}, {133.28, 238.00}, {129.00, 241.38}, {119.00, 243.07}, {115.00, 246.55}, {101.00, 253.16}, { 86.00, 257.32}, { 63.00, 259.24}, { 57.00, 257.31}, { 50.54, 252.00}, - { 47.59, 247.00}, { 46.30, 240.00}, { 47.58, 226.00}, { 50.00, 220.57}, { 58.00, 226.41}, { 69.00, 229.17}, { 79.00, 229.08}, { 94.50, 225.00}, {100.21, 231.00}, {107.00, 233.47}, {107.48, 224.00}, {109.94, 219.00}, - {115.00, 214.62}, {122.57, 212.00}, {116.00, 201.49}, {104.00, 194.57}, { 90.00, 194.04}, { 79.00, 198.21}, { 73.00, 198.87}, { 62.68, 191.00}, { 62.58, 184.00}, { 64.42, 179.00}, { 75.00, 167.70}, { 80.39, 157.00}, - { 68.79, 140.00}, { 61.67, 126.00}, { 61.47, 117.00}, { 64.43, 109.00}, { 63.10, 96.00}, { 56.48, 82.00}, { 48.00, 73.88}, { 43.81, 66.00}, { 43.81, 56.00}, { 50.11, 46.00}, { 59.00, 41.55}, { 71.00, 42.64}, - { 78.00, 36.77}, { 83.00, 34.75}, { 99.00, 34.32}, {117.00, 38.92}, {133.00, 55.15}, {142.00, 50.70}, {149.74, 51.00}, {143.55, 68.00}, {153.28, 74.00}, {156.23, 79.00}, {157.00, 84.00}, {156.23, 89.00}, - {153.28, 94.00}, {144.58, 99.00}, {151.52, 112.00}, {151.51, 124.00}, {150.00, 126.36}, {133.00, 130.25}, {126.71, 125.00}, {122.00, 117.25}, {114.00, 116.23}, {107.73, 112.00}, {104.48, 106.00}, {104.32, 99.00}, - {106.94, 93.00}, {111.24, 89.00}, {111.60, 85.00}, {107.24, 73.00}, {102.00, 67.57}, { 99.79, 67.00}, { 99.23, 76.00}, { 95.00, 82.27}, { 89.00, 85.52}, { 79.84, 86.00}, { 86.73, 114.00}, { 98.00, 136.73}, - { 99.00, 137.61}, {109.00, 135.06}, {117.00, 137.94}, {122.52, 146.00}, {122.94, 151.00}, {121.00, 158.58}, {134.00, 160.97}, {153.00, 157.45}, {171.30, 150.00}, {169.06, 142.00}, {169.77, 136.00}, {174.00, 129.73}, - {181.46, 126.00}, {182.22, 120.00}, {182.20, 111.00}, {180.06, 101.00}, {171.28, 85.00}, {171.75, 80.00}, {182.30, 53.00}, {189.47, 50.00}, {190.62, 38.00}, {194.00, 33.73}, {199.00, 30.77}, {208.00, 30.48}, - {216.00, 34.94}, {224.00, 31.47}, {240.00, 30.37}, {247.00, 32.51}, {249.77, 35.00}, {234.75, 53.00}, {213.81, 93.00}, {212.08, 99.00}, {213.00, 101.77}, {220.00, 96.77}, {229.00, 96.48}, {236.28, 101.00}, - {240.00, 107.96}, {245.08, 101.00}, {263.00, 65.32}, {277.47, 48.00}, {284.00, 47.03}, {286.94, 41.00}, {292.00, 36.62}, {298.00, 35.06}, {304.00, 35.77}, {314.00, 43.81}, {342.00, 32.56}, {359.00, 31.32}, - {365.00, 32.57}, {371.00, 36.38}, {379.53, 48.00}, {379.70, 51.00}, {356.00, 52.19}, {347.00, 54.74}, {344.38, 66.00}, {341.00, 70.27}, {335.00, 73.52}, {324.00, 72.38}, {317.00, 65.75}, {313.00, 67.79}, - {307.57, 76.00}, {315.00, 78.62}, {319.28, 82.00}, {322.23, 87.00}, {323.00, 94.41}, {334.00, 92.49}, {347.00, 87.47}, {349.62, 80.00}, {353.00, 75.73}, {359.00, 72.48}, {366.00, 72.32}, {372.00, 74.94}, - {377.00, 81.34}, {382.00, 83.41}, {392.00, 83.40}, {399.00, 79.15}, {404.00, 85.74}, {411.00, 85.06}, {417.00, 86.62}, {423.38, 93.00}, {425.05, 104.00}, {438.00, 110.35}, {450.00, 112.17}, {452.62, 103.00}, - {456.00, 98.73}, {462.00, 95.48}, {472.00, 95.79}, {471.28, 92.00}, {464.00, 84.62}, {445.00, 80.39}, {436.00, 75.33}, {428.00, 68.46}, {419.00, 68.52}, {413.00, 65.27}, {408.48, 58.00}, {409.87, 46.00}, - {404.42, 39.00}, {408.00, 33.88}, {415.00, 29.31}, {429.00, 26.45}, {455.00, 28.77}, {470.00, 33.81}, {482.00, 42.16}, {494.00, 46.85}, {499.65, 36.00}, {513.00, 25.95}, {529.00, 22.42}, {537.18, 23.00}, + {537.18, 23.00}, {520.50, 36.00}, {501.53, 63.00}, {496.14, 76.00}, {498.86, 86.00}, {504.00, 90.51}, + {508.00, 91.36}, {508.77, 84.00}, {513.00, 77.73}, {519.00, 74.48}, {530.00, 74.67}, {545.00, 54.65}, + {554.00, 48.77}, {562.00, 46.39}, {568.00, 45.94}, {568.61, 47.00}, {567.94, 55.00}, {571.27, 64.00}, + {572.92, 80.00}, {572.00, 81.39}, {563.00, 79.93}, {556.00, 82.69}, {551.49, 88.00}, {549.00, 95.76}, + {538.00, 93.40}, {530.00, 102.38}, {523.00, 104.00}, {517.00, 103.02}, {516.22, 109.00}, {518.96, 116.00}, + {526.00, 121.15}, {534.00, 116.48}, {543.00, 116.77}, {549.28, 121.00}, {554.00, 130.17}, {564.00, 125.67}, + {575.60, 129.00}, {573.31, 121.00}, {567.77, 111.00}, {575.00, 106.47}, {578.51, 102.00}, {580.25, 95.00}, + {577.98, 87.00}, {582.00, 85.71}, {597.00, 89.46}, {604.80, 95.00}, {609.28, 104.00}, {610.55, 116.00}, + {609.30, 125.00}, {600.80, 142.00}, {597.31, 155.00}, {584.00, 167.23}, {577.86, 175.00}, {583.52, 184.00}, + {582.64, 195.00}, {591.00, 196.56}, {597.81, 201.00}, {607.45, 219.00}, {607.51, 246.00}, {600.00, 275.46}, + {588.00, 267.81}, {579.00, 264.91}, {557.00, 264.41}, {552.98, 259.00}, {548.00, 246.18}, {558.00, 247.12}, + {565.98, 244.00}, {571.10, 237.00}, {571.61, 229.00}, {568.25, 222.00}, {562.00, 217.67}, {544.00, 213.93}, + {536.73, 214.00}, {535.60, 204.00}, {539.69, 181.00}, {542.84, 171.00}, {550.43, 161.00}, {540.00, 156.27}, + {536.62, 152.00}, {534.70, 146.00}, {527.00, 141.88}, {518.59, 152.00}, {514.51, 160.00}, {510.33, 175.00}, + {519.38, 183.00}, {520.52, 194.00}, {516.00, 201.27}, {505.25, 206.00}, {507.57, 223.00}, {519.90, 260.00}, + {529.00, 260.48}, {534.00, 262.94}, {538.38, 268.00}, {540.00, 275.00}, {537.06, 284.00}, {530.00, 289.23}, + {520.00, 289.23}, {513.00, 284.18}, {509.71, 286.00}, {501.69, 298.00}, {501.56, 305.00}, {504.30, 311.00}, + {512.00, 316.43}, {521.00, 316.42}, {525.67, 314.00}, {535.00, 304.98}, {562.00, 294.80}, {573.00, 294.81}, + {587.52, 304.00}, {600.89, 310.00}, {596.96, 322.00}, {603.28, 327.00}, {606.52, 333.00}, {605.38, 344.00}, + {597.65, 352.00}, {606.36, 375.00}, {607.16, 384.00}, {603.40, 393.00}, {597.00, 398.14}, {577.00, 386.15}, + {564.35, 373.00}, {565.21, 364.00}, {562.81, 350.00}, {553.00, 346.06}, {547.48, 338.00}, {547.48, 330.00}, + {550.00, 323.30}, {544.00, 321.53}, {537.00, 322.70}, {532.00, 326.23}, {528.89, 331.00}, {527.83, 338.00}, + {533.02, 356.00}, {542.00, 360.73}, {546.68, 369.00}, {545.38, 379.00}, {537.58, 386.00}, {537.63, 388.00}, + {555.00, 407.47}, {563.00, 413.52}, {572.57, 418.00}, {582.72, 426.00}, {578.00, 431.12}, {563.21, 440.00}, + {558.00, 449.27}, {549.00, 452.94}, {541.00, 451.38}, {536.73, 448.00}, {533.00, 441.87}, {520.00, 437.96}, + {514.00, 429.69}, {490.00, 415.15}, {472.89, 399.00}, {472.03, 398.00}, {474.00, 396.71}, {486.00, 393.61}, + {492.00, 385.85}, {492.00, 376.15}, {489.04, 371.00}, {485.00, 368.11}, {480.00, 376.27}, {472.00, 379.82}, + {463.00, 378.38}, {455.08, 372.00}, {446.00, 377.69}, {439.00, 385.24}, {436.61, 391.00}, {437.52, 404.00}, + {440.00, 409.53}, {463.53, 433.00}, {473.80, 441.00}, {455.00, 440.30}, {443.00, 436.18}, {436.00, 431.98}, + {412.00, 440.92}, {397.00, 442.46}, {393.59, 431.00}, {393.71, 412.00}, {400.00, 395.10}, {407.32, 387.00}, + {408.54, 380.00}, {407.42, 375.00}, {403.97, 370.00}, {399.00, 366.74}, {393.00, 365.68}, {391.23, 374.00}, + {387.00, 380.27}, {381.00, 383.52}, {371.56, 384.00}, {364.98, 401.00}, {362.96, 412.00}, {363.63, 435.00}, + {345.00, 433.55}, {344.52, 442.00}, {342.06, 447.00}, {337.00, 451.38}, {330.00, 453.00}, {325.00, 452.23}, + {318.00, 448.17}, {298.00, 453.70}, {284.00, 451.49}, {278.62, 449.00}, {291.47, 408.00}, {291.77, 398.00}, + {301.00, 393.83}, {305.00, 393.84}, {305.60, 403.00}, {310.00, 409.47}, {318.00, 413.07}, {325.00, 412.40}, + {332.31, 407.00}, {335.07, 400.00}, {334.40, 393.00}, {329.00, 385.69}, {319.00, 382.79}, {301.00, 389.23}, + {289.00, 389.97}, {265.00, 389.82}, {251.00, 385.85}, {245.00, 389.23}, {239.00, 389.94}, {233.00, 388.38}, + {226.00, 382.04}, {206.00, 374.75}, {206.00, 394.00}, {204.27, 402.00}, {197.00, 401.79}, {191.00, 403.49}, + {186.53, 407.00}, {183.60, 412.00}, {183.60, 422.00}, {189.00, 429.31}, {196.00, 432.07}, {203.00, 431.40}, + {209.47, 427.00}, {213.00, 419.72}, {220.00, 420.21}, {227.00, 418.32}, {242.00, 408.41}, {258.98, 409.00}, + {250.00, 435.43}, {239.00, 438.78}, {223.00, 448.19}, {209.00, 449.70}, {205.28, 456.00}, {199.00, 460.23}, + {190.00, 460.52}, {182.73, 456.00}, {178.00, 446.27}, {160.00, 441.42}, {148.35, 435.00}, {149.79, 418.00}, + {157.72, 401.00}, {161.00, 396.53}, {177.00, 385.00}, {180.14, 380.00}, {181.11, 374.00}, {180.00, 370.52}, + {170.00, 371.68}, {162.72, 368.00}, {158.48, 361.00}, {159.56, 349.00}, {154.00, 342.53}, {146.00, 339.85}, + {136.09, 343.00}, {130.64, 351.00}, {131.74, 362.00}, {140.61, 374.00}, {130.68, 387.00}, {120.75, 409.00}, + {118.09, 421.00}, {117.92, 434.00}, {100.00, 432.40}, {87.00, 427.48}, {81.59, 423.00}, {73.64, 409.00}, + {72.57, 398.00}, {74.62, 386.00}, {78.80, 378.00}, {88.00, 373.43}, {92.49, 367.00}, {93.32, 360.00}, + {91.30, 353.00}, {103.00, 342.67}, {109.00, 343.10}, {116.00, 340.44}, {127.33, 330.00}, {143.00, 327.24}, + {154.30, 322.00}, {145.00, 318.06}, {139.77, 311.00}, {139.48, 302.00}, {144.95, 293.00}, {143.00, 291.56}, + {134.00, 298.21}, {118.00, 300.75}, {109.40, 305.00}, {94.67, 319.00}, {88.00, 318.93}, {81.00, 321.69}, + {67.24, 333.00}, {56.68, 345.00}, {53.00, 351.40}, {47.34, 333.00}, {50.71, 314.00}, {56.57, 302.00}, + {68.00, 287.96}, {91.00, 287.24}, {110.00, 282.36}, {133.80, 271.00}, {147.34, 256.00}, {156.47, 251.00}, + {157.26, 250.00}, {154.18, 242.00}, {154.48, 236.00}, {158.72, 229.00}, {166.71, 224.00}, {170.15, 206.00}, + {170.19, 196.00}, {167.24, 188.00}, {160.00, 182.67}, {150.00, 182.66}, {143.60, 187.00}, {139.96, 195.00}, + {139.50, 207.00}, {136.45, 221.00}, {136.52, 232.00}, {133.28, 238.00}, {129.00, 241.38}, {119.00, 243.07}, + {115.00, 246.55}, {101.00, 253.16}, {86.00, 257.32}, {63.00, 259.24}, {57.00, 257.31}, {50.54, 252.00}, + {47.59, 247.00}, {46.30, 240.00}, {47.58, 226.00}, {50.00, 220.57}, {58.00, 226.41}, {69.00, 229.17}, + {79.00, 229.08}, {94.50, 225.00}, {100.21, 231.00}, {107.00, 233.47}, {107.48, 224.00}, {109.94, 219.00}, + {115.00, 214.62}, {122.57, 212.00}, {116.00, 201.49}, {104.00, 194.57}, {90.00, 194.04}, {79.00, 198.21}, + {73.00, 198.87}, {62.68, 191.00}, {62.58, 184.00}, {64.42, 179.00}, {75.00, 167.70}, {80.39, 157.00}, + {68.79, 140.00}, {61.67, 126.00}, {61.47, 117.00}, {64.43, 109.00}, {63.10, 96.00}, {56.48, 82.00}, + {48.00, 73.88}, {43.81, 66.00}, {43.81, 56.00}, {50.11, 46.00}, {59.00, 41.55}, {71.00, 42.64}, + {78.00, 36.77}, {83.00, 34.75}, {99.00, 34.32}, {117.00, 38.92}, {133.00, 55.15}, {142.00, 50.70}, + {149.74, 51.00}, {143.55, 68.00}, {153.28, 74.00}, {156.23, 79.00}, {157.00, 84.00}, {156.23, 89.00}, + {153.28, 94.00}, {144.58, 99.00}, {151.52, 112.00}, {151.51, 124.00}, {150.00, 126.36}, {133.00, 130.25}, + {126.71, 125.00}, {122.00, 117.25}, {114.00, 116.23}, {107.73, 112.00}, {104.48, 106.00}, {104.32, 99.00}, + {106.94, 93.00}, {111.24, 89.00}, {111.60, 85.00}, {107.24, 73.00}, {102.00, 67.57}, {99.79, 67.00}, + {99.23, 76.00}, {95.00, 82.27}, {89.00, 85.52}, {79.84, 86.00}, {86.73, 114.00}, {98.00, 136.73}, + {99.00, 137.61}, {109.00, 135.06}, {117.00, 137.94}, {122.52, 146.00}, {122.94, 151.00}, {121.00, 158.58}, + {134.00, 160.97}, {153.00, 157.45}, {171.30, 150.00}, {169.06, 142.00}, {169.77, 136.00}, {174.00, 129.73}, + {181.46, 126.00}, {182.22, 120.00}, {182.20, 111.00}, {180.06, 101.00}, {171.28, 85.00}, {171.75, 80.00}, + {182.30, 53.00}, {189.47, 50.00}, {190.62, 38.00}, {194.00, 33.73}, {199.00, 30.77}, {208.00, 30.48}, + {216.00, 34.94}, {224.00, 31.47}, {240.00, 30.37}, {247.00, 32.51}, {249.77, 35.00}, {234.75, 53.00}, + {213.81, 93.00}, {212.08, 99.00}, {213.00, 101.77}, {220.00, 96.77}, {229.00, 96.48}, {236.28, 101.00}, + {240.00, 107.96}, {245.08, 101.00}, {263.00, 65.32}, {277.47, 48.00}, {284.00, 47.03}, {286.94, 41.00}, + {292.00, 36.62}, {298.00, 35.06}, {304.00, 35.77}, {314.00, 43.81}, {342.00, 32.56}, {359.00, 31.32}, + {365.00, 32.57}, {371.00, 36.38}, {379.53, 48.00}, {379.70, 51.00}, {356.00, 52.19}, {347.00, 54.74}, + {344.38, 66.00}, {341.00, 70.27}, {335.00, 73.52}, {324.00, 72.38}, {317.00, 65.75}, {313.00, 67.79}, + {307.57, 76.00}, {315.00, 78.62}, {319.28, 82.00}, {322.23, 87.00}, {323.00, 94.41}, {334.00, 92.49}, + {347.00, 87.47}, {349.62, 80.00}, {353.00, 75.73}, {359.00, 72.48}, {366.00, 72.32}, {372.00, 74.94}, + {377.00, 81.34}, {382.00, 83.41}, {392.00, 83.40}, {399.00, 79.15}, {404.00, 85.74}, {411.00, 85.06}, + {417.00, 86.62}, {423.38, 93.00}, {425.05, 104.00}, {438.00, 110.35}, {450.00, 112.17}, {452.62, 103.00}, + {456.00, 98.73}, {462.00, 95.48}, {472.00, 95.79}, {471.28, 92.00}, {464.00, 84.62}, {445.00, 80.39}, + {436.00, 75.33}, {428.00, 68.46}, {419.00, 68.52}, {413.00, 65.27}, {408.48, 58.00}, {409.87, 46.00}, + {404.42, 39.00}, {408.00, 33.88}, {415.00, 29.31}, {429.00, 26.45}, {455.00, 28.77}, {470.00, 33.81}, + {482.00, 42.16}, {494.00, 46.85}, {499.65, 36.00}, {513.00, 25.95}, {529.00, 22.42}, {537.18, 23.00}, }; -static int bouncy_terrain_count = sizeof(bouncy_terrain_verts)/sizeof(cpVect); - -static cpSpace *init_BouncyTerrainCircles_500(void){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - - cpVect offset = cpv(-320, -240); - for(int i=0; i<(bouncy_terrain_count - 1); i++){ - cpVect a = bouncy_terrain_verts[i], b = bouncy_terrain_verts[i+1]; - cpShape *shape = cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); - cpShapeSetElasticity(shape, 1.0); - } - - for(int i=0; i<500; i++){ - cpFloat radius = 5.0f; - cpFloat mass = radius*radius; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 130.0f), cpvzero)); - cpBodySetVelocity(body, cpvmult(frand_unit_circle(), 50.0f)); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 1.0); - } - - return space; +static int bouncy_terrain_count = sizeof(bouncy_terrain_verts) / sizeof(cpVect); + +static cpSpace* init_BouncyTerrainCircles_500(void) +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + + cpVect offset = cpv(-320, -240); + for (int i = 0; i < (bouncy_terrain_count - 1); i++) + { + cpVect a = bouncy_terrain_verts[i], b = bouncy_terrain_verts[i + 1]; + cpShape* shape = cpSpaceAddShape( + space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); + cpShapeSetElasticity(shape, 1.0); + } + + for (int i = 0; i < 500; i++) + { + cpFloat radius = 5.0f; + cpFloat mass = radius * radius; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 130.0f), cpvzero)); + cpBodySetVelocity(body, cpvmult(frand_unit_circle(), 50.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 1.0); + } + + return space; } -static cpSpace *init_BouncyTerrainHexagons_500(void){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - - cpVect offset = cpv(-320, -240); - for(int i=0; i<(bouncy_terrain_count - 1); i++){ - cpVect a = bouncy_terrain_verts[i], b = bouncy_terrain_verts[i+1]; - cpShape *shape = cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); - cpShapeSetElasticity(shape, 1.0); - } - - cpFloat radius = 5.0f; - cpVect hexagon[6]; - for(int i=0; i<6; i++){ - cpFloat angle = -CP_PI*2.0f*i/6.0f; - hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); - } - - for(int i=0; i<500; i++){ - cpFloat mass = radius*radius; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); - cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 130.0f), cpvzero)); - cpBodySetVelocity(body, cpvmult(frand_unit_circle(), 50.0f)); - - cpShape *shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); - cpShapeSetElasticity(shape, 1.0); - } - - return space; +static cpSpace* init_BouncyTerrainHexagons_500(void) +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + + cpVect offset = cpv(-320, -240); + for (int i = 0; i < (bouncy_terrain_count - 1); i++) + { + cpVect a = bouncy_terrain_verts[i], b = bouncy_terrain_verts[i + 1]; + cpShape* shape = cpSpaceAddShape( + space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpvadd(a, offset), cpvadd(b, offset), 0.0f)); + cpShapeSetElasticity(shape, 1.0); + } + + cpFloat radius = 5.0f; + cpVect hexagon[6]; + for (int i = 0; i < 6; i++) + { + cpFloat angle = -CP_PI * 2.0f * i / 6.0f; + hexagon[i] = cpvmult(cpv(cos(angle), sin(angle)), radius - bevel); + } + + for (int i = 0; i < 500; i++) + { + cpFloat mass = radius * radius; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 6, hexagon, cpvzero, 0.0f))); + cpBodySetPosition(body, cpvadd(cpvmult(frand_unit_circle(), 130.0f), cpvzero)); + cpBodySetVelocity(body, cpvmult(frand_unit_circle(), 50.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 6, hexagon, cpTransformIdentity, bevel)); + cpShapeSetElasticity(shape, 1.0); + } + + return space; } - // No collisions static cpFloat pentagon_mass = 0.0f; static cpFloat pentagon_moment = 0.0f; -static cpBool NoCollide_begin(cpArbiter *arb, cpSpace *space, void *data){ - - // CCLOG("NoCollide_begin"); - - return cpTrue; -} +static cpBool NoCollide_begin(cpArbiter* arb, cpSpace* space, void* data) +{ + // CCLOG("NoCollide_begin"); -static cpSpace *init_NoCollide(void){ - cpSpace *space = BENCH_SPACE_NEW(); - cpSpaceSetIterations(space, 10); - - cpCollisionHandler *handler = cpSpaceAddCollisionHandler(space, 2, 2); - handler->beginFunc = NoCollide_begin; - - - float radius = 4.5f; - - cpShapeSetElasticity(cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(-330-radius, -250-radius), cpv( 330+radius, -250-radius), 0.0f)), 1.0f); - cpShapeSetElasticity(cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv( 330+radius, 250+radius), cpv( 330+radius, -250-radius), 0.0f)), 1.0f); - cpShapeSetElasticity(cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv( 330+radius, 250+radius), cpv(-330-radius, 250+radius), 0.0f)), 1.0f); - cpShapeSetElasticity(cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(-330-radius, -250-radius), cpv(-330-radius, 250+radius), 0.0f)), 1.0f); - - for(int x=-320; x<=320; x+=20){ - for(int y=-240; y<=240; y+=20){ - cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(cpSpaceGetStaticBody(space), radius, cpv(x, y))); - cpShapeSetElasticity(shape, 1.0); - cpShapeSetCollisionType(shape, 2); - } - } - - for(int y=10-240; y<=240; y+=40){ - cpFloat mass = 7.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpv(-320.0f, y)); - cpBodySetVelocity(body, cpv(100.0f, 0.0f)); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 1.0); - cpShapeSetCollisionType(shape, 2); - } - - for(int x=30-320; x<=320; x+=40){ - cpFloat mass = 7.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpv(x, -240.0f)); - cpBodySetVelocity(body, cpv(0.0f, 100.0f)); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 1.0); - cpShapeSetCollisionType(shape, 2); - } - - return space; + return cpTrue; } +static cpSpace* init_NoCollide(void) +{ + cpSpace* space = BENCH_SPACE_NEW(); + cpSpaceSetIterations(space, 10); + + cpCollisionHandler* handler = cpSpaceAddCollisionHandler(space, 2, 2); + handler->beginFunc = NoCollide_begin; + + float radius = 4.5f; + + cpShapeSetElasticity( + cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(-330 - radius, -250 - radius), + cpv(330 + radius, -250 - radius), 0.0f)), + 1.0f); + cpShapeSetElasticity( + cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(330 + radius, 250 + radius), + cpv(330 + radius, -250 - radius), 0.0f)), + 1.0f); + cpShapeSetElasticity( + cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(330 + radius, 250 + radius), + cpv(-330 - radius, 250 + radius), 0.0f)), + 1.0f); + cpShapeSetElasticity( + cpSpaceAddShape(space, cpSegmentShapeNew(cpSpaceGetStaticBody(space), cpv(-330 - radius, -250 - radius), + cpv(-330 - radius, 250 + radius), 0.0f)), + 1.0f); + + for (int x = -320; x <= 320; x += 20) + { + for (int y = -240; y <= 240; y += 20) + { + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(cpSpaceGetStaticBody(space), radius, cpv(x, y))); + cpShapeSetElasticity(shape, 1.0); + cpShapeSetCollisionType(shape, 2); + } + } + + for (int y = 10 - 240; y <= 240; y += 40) + { + cpFloat mass = 7.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpv(-320.0f, y)); + cpBodySetVelocity(body, cpv(100.0f, 0.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 1.0); + cpShapeSetCollisionType(shape, 2); + } + + for (int x = 30 - 320; x <= 320; x += 40) + { + cpFloat mass = 7.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpv(x, -240.0f)); + cpBodySetVelocity(body, cpv(0.0f, 100.0f)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 1.0); + cpShapeSetCollisionType(shape, 2); + } + + return space; +} // TODO ideas: // addition/removal // Memory usage? (too small to matter?) // http://forums.tigsource.com/index.php?topic=18077.msg518578#msg518578 - // Build benchmark list -static void update(cpSpace *space, double dt){ - BENCH_SPACE_STEP(space, dt); +static void update(cpSpace* space, double dt) +{ + BENCH_SPACE_STEP(space, dt); } -static void destroy(cpSpace *space){ - ChipmunkDemoFreeSpaceChildren(space); - BENCH_SPACE_FREE(space); +static void destroy(cpSpace* space) +{ + ChipmunkDemoFreeSpaceChildren(space); + BENCH_SPACE_FREE(space); } // Make a second demo declaration for this demo to use in the regular demo set. ChipmunkDemo BouncyHexagons = { - "Bouncy Hexagons", - 1.0/60.0, - init_BouncyTerrainHexagons_500, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Bouncy Hexagons", 1.0 / 60.0, init_BouncyTerrainHexagons_500, update, ChipmunkDemoDefaultDrawImpl, destroy, }; -#define BENCH(n) {#n, 1.0/60.0, init_##n, update, ChipmunkDemoDefaultDrawImpl, destroy} +#define BENCH(n) \ + { \ +# n, 1.0 / 60.0, init_##n, update, ChipmunkDemoDefaultDrawImpl, destroy \ + } ChipmunkDemo bench_list[] = { - BENCH(SimpleTerrainCircles_1000), - BENCH(SimpleTerrainCircles_500), - BENCH(SimpleTerrainCircles_100), - BENCH(SimpleTerrainBoxes_1000), - BENCH(SimpleTerrainBoxes_500), - BENCH(SimpleTerrainBoxes_100), - BENCH(SimpleTerrainHexagons_1000), - BENCH(SimpleTerrainHexagons_500), - BENCH(SimpleTerrainHexagons_100), - BENCH(SimpleTerrainVCircles_200), - BENCH(SimpleTerrainVBoxes_200), - BENCH(SimpleTerrainVHexagons_200), - BENCH(ComplexTerrainCircles_1000), - BENCH(ComplexTerrainHexagons_1000), - BENCH(BouncyTerrainCircles_500), - BENCH(BouncyTerrainHexagons_500), - BENCH(NoCollide), + BENCH(SimpleTerrainCircles_1000), + BENCH(SimpleTerrainCircles_500), + BENCH(SimpleTerrainCircles_100), + BENCH(SimpleTerrainBoxes_1000), + BENCH(SimpleTerrainBoxes_500), + BENCH(SimpleTerrainBoxes_100), + BENCH(SimpleTerrainHexagons_1000), + BENCH(SimpleTerrainHexagons_500), + BENCH(SimpleTerrainHexagons_100), + BENCH(SimpleTerrainVCircles_200), + BENCH(SimpleTerrainVBoxes_200), + BENCH(SimpleTerrainVHexagons_200), + BENCH(ComplexTerrainCircles_1000), + BENCH(ComplexTerrainHexagons_1000), + BENCH(BouncyTerrainCircles_500), + BENCH(BouncyTerrainHexagons_500), + BENCH(NoCollide), }; -int bench_count = sizeof(bench_list)/sizeof(ChipmunkDemo); +int bench_count = sizeof(bench_list) / sizeof(ChipmunkDemo); diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Buoyancy.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Buoyancy.c index 71b607e7790a..05224adbf800 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Buoyancy.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Buoyancy.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,10 +23,9 @@ #include "ChipmunkDemo.h" -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } #define FLUID_DENSITY 0.00014 @@ -35,193 +34,187 @@ update(cpSpace *space, double dt) char messageBuffer[1024]; // Modified from chipmunk_private.h -static inline cpFloat -k_scalar_body(cpBody *body, cpVect point, cpVect n) +static inline cpFloat k_scalar_body(cpBody* body, cpVect point, cpVect n) { - cpFloat rcn = cpvcross(cpvsub(point, cpBodyGetPosition(body)), n); - return 1.0f/cpBodyGetMass(body) + rcn*rcn/cpBodyGetMoment(body); + cpFloat rcn = cpvcross(cpvsub(point, cpBodyGetPosition(body)), n); + return 1.0f / cpBodyGetMass(body) + rcn * rcn / cpBodyGetMoment(body); } -static cpBool -waterPreSolve(cpArbiter *arb, cpSpace *space, void *ptr) +static cpBool waterPreSolve(cpArbiter* arb, cpSpace* space, void* ptr) { - CP_ARBITER_GET_SHAPES(arb, water, poly); - cpBody *body = cpShapeGetBody(poly); - - // Get the top of the water sensor bounding box to use as the water level. - cpFloat level = cpShapeGetBB(water).t; - - // Clip the polygon against the water level - int count = cpPolyShapeGetCount(poly); - int clippedCount = 0; + CP_ARBITER_GET_SHAPES(arb, water, poly); + cpBody* body = cpShapeGetBody(poly); + + // Get the top of the water sensor bounding box to use as the water level. + cpFloat level = cpShapeGetBB(water).t; + + // Clip the polygon against the water level + int count = cpPolyShapeGetCount(poly); + int clippedCount = 0; #ifdef _MSC_VER - // MSVC is pretty much the only compiler in existence that doesn't support variable sized arrays. - cpVect clipped[10]; + // MSVC is pretty much the only compiler in existence that doesn't support variable sized arrays. + cpVect clipped[10]; #else - cpVect clipped[count + 1]; + cpVect clipped[count + 1]; #endif - for(int i=0, j=count-1; ipreSolveFunc = (cpCollisionPreSolveFunc)waterPreSolve; - - return space; + ChipmunkDemoMessageString = messageBuffer; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 30); + cpSpaceSetGravity(space, cpv(0, -500)); + // cpSpaceSetDamping(space, 0.5); + cpSpaceSetSleepTimeThreshold(space, 0.5f); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + { + // Add the edges of the bucket + cpBB bb = cpBBNew(-300, -200, 100, 0); + cpFloat radius = 5.0f; + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(bb.l, bb.b), cpv(bb.l, bb.t), radius)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(bb.r, bb.b), cpv(bb.r, bb.t), radius)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(bb.l, bb.b), cpv(bb.r, bb.b), radius)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // Add the sensor for the water. + shape = cpSpaceAddShape(space, cpBoxShapeNew2(staticBody, bb, 0.0)); + cpShapeSetSensor(shape, cpTrue); + cpShapeSetCollisionType(shape, 1); + } + + { + cpFloat width = 200.0f; + cpFloat height = 50.0f; + cpFloat mass = 0.3 * FLUID_DENSITY * width * height; + cpFloat moment = cpMomentForBox(mass, width, height); + + body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); + cpBodySetPosition(body, cpv(-50, -100)); + cpBodySetVelocity(body, cpv(0, -100)); + cpBodySetAngularVelocity(body, 1); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); + cpShapeSetFriction(shape, 0.8f); + } + + { + cpFloat width = 40.0f; + cpFloat height = width * 2; + cpFloat mass = 0.3 * FLUID_DENSITY * width * height; + cpFloat moment = cpMomentForBox(mass, width, height); + + body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); + cpBodySetPosition(body, cpv(-200, -50)); + cpBodySetVelocity(body, cpv(0, -100)); + cpBodySetAngularVelocity(body, 1); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); + cpShapeSetFriction(shape, 0.8f); + } + + cpCollisionHandler* handler = cpSpaceAddCollisionHandler(space, 1, 0); + handler->preSolveFunc = (cpCollisionPreSolveFunc)waterPreSolve; + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Buoyancy = { - "Simple Sensor based fluids.", - 1.0/180.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Simple Sensor based fluids.", 1.0 / 180.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Chains.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Chains.c index e1c727060bf8..41cbf8cd2a11 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Chains.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Chains.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,133 +18,132 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" #define CHAIN_COUNT 8 #define LINK_COUNT 10 -static void -BreakablejointPostStepRemove(cpSpace *space, cpConstraint *joint, void *unused) +static void BreakablejointPostStepRemove(cpSpace* space, cpConstraint* joint, void* unused) { - cpSpaceRemoveConstraint(space, joint); - cpConstraintFree(joint); + cpSpaceRemoveConstraint(space, joint); + cpConstraintFree(joint); } -static void -BreakableJointPostSolve(cpConstraint *joint, cpSpace *space) +static void BreakableJointPostSolve(cpConstraint* joint, cpSpace* space) { - cpFloat dt = cpSpaceGetCurrentTimeStep(space); - - // Convert the impulse to a force by dividing it by the timestep. - cpFloat force = cpConstraintGetImpulse(joint)/dt; - cpFloat maxForce = cpConstraintGetMaxForce(joint); - - // If the force is almost as big as the joint's max force, break it. - if(force > 0.9*maxForce){ - cpSpaceAddPostStepCallback(space, (cpPostStepFunc)BreakablejointPostStepRemove, joint, NULL); - } + cpFloat dt = cpSpaceGetCurrentTimeStep(space); + + // Convert the impulse to a force by dividing it by the timestep. + cpFloat force = cpConstraintGetImpulse(joint) / dt; + cpFloat maxForce = cpConstraintGetMaxForce(joint); + + // If the force is almost as big as the joint's max force, break it. + if (force > 0.9 * maxForce) + { + cpSpaceAddPostStepCallback(space, (cpPostStepFunc)BreakablejointPostStepRemove, joint, NULL); + } } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static cpSpace * -init(void) +static cpSpace* init(void) { - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 30); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetSleepTimeThreshold(space, 0.5f); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(-320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320,-240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpFloat mass = 1; - cpFloat width = 20; - cpFloat height = 30; - - cpFloat spacing = width*0.3; - - // Add lots of boxes. - for(int i=0; imagnitudeSum += cpvlength(j); - context->vectorSum = cpvadd(context->vectorSum, j); + cpVect j = cpArbiterTotalImpulse(arb); + context->magnitudeSum += cpvlength(j); + context->vectorSum = cpvadd(context->vectorSum, j); } #endif -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); - - ChipmunkDemoPrintString("Place objects on the scale to weigh them. The ball marks the shapes it's sitting on.\n"); - - // Sum the total impulse applied to the scale from all collision pairs in the contact graph. - // If your compiler supports blocks, your life is a little easier. - // You can use the "Block" versions of the functions without needing the callbacks above. - #if USE_BLOCKS - __block cpVect impulseSum = cpvzero; - cpBodyEachArbiter_b(scaleStaticBody, ^(cpArbiter *arb){ - impulseSum = cpvadd(impulseSum, cpArbiterTotalImpulse(arb)); - }); - #else - cpVect impulseSum = cpvzero; - cpBodyEachArbiter(scaleStaticBody, (cpBodyArbiterIteratorFunc)ScaleIterator, &impulseSum); - #endif - - // Force is the impulse divided by the timestep. - cpFloat force = cpvlength(impulseSum)/dt; - - // Weight can be found similarly from the gravity vector. - cpVect g = cpSpaceGetGravity(space); - cpFloat weight = cpvdot(g, impulseSum)/(cpvlengthsq(g)*dt); - - ChipmunkDemoPrintString("Total force: %5.2f, Total weight: %5.2f. ", force, weight); - - - // Highlight and count the number of shapes the ball is touching. - #if USE_BLOCKS - __block int count = 0; - cpBodyEachArbiter_b(ballBody, ^(cpArbiter *arb){ - // body is the body we are iterating the arbiters for. - // CP_ARBITER_GET_*() in an arbiter iterator always returns the body/shape for the iterated body first. - CP_ARBITER_GET_SHAPES(arb, ball, other); - ChipmunkDebugDrawBB(cpShapeGetBB(other), RGBAColor(1, 0, 0, 1)); - - count++; - }); - #else - int count = 0; - cpBodyEachArbiter(ballBody, (cpBodyArbiterIteratorFunc)BallIterator, &count); - #endif - - ChipmunkDemoPrintString("The ball is touching %d shapes.\n", count); - - #if USE_BLOCKS - __block cpFloat magnitudeSum = 0.0f; - __block cpVect vectorSum = cpvzero; - cpBodyEachArbiter_b(ballBody, ^(cpArbiter *arb){ - cpVect j = cpArbiterTotalImpulse(arb); - magnitudeSum += cpvlength(j); - vectorSum = cpvadd(vectorSum, j); - }); - - cpFloat crushForce = (magnitudeSum - cpvlength(vectorSum))*dt; - #else - struct CrushingContext crush = {0.0f, cpvzero}; - cpBodyEachArbiter(ballBody, (cpBodyArbiterIteratorFunc)EstimateCrushing, &crush); - - cpFloat crushForce = (crush.magnitudeSum - cpvlength(crush.vectorSum))*dt; - #endif - - - if(crushForce > 10.0f){ - ChipmunkDemoPrintString("The ball is being crushed. (f: %.2f)", crushForce); - } else { - ChipmunkDemoPrintString("The ball is not being crushed. (f: %.2f)", crushForce); - } + cpSpaceStep(space, dt); + + ChipmunkDemoPrintString("Place objects on the scale to weigh them. The ball marks the shapes it's sitting on.\n"); + +// Sum the total impulse applied to the scale from all collision pairs in the contact graph. +// If your compiler supports blocks, your life is a little easier. +// You can use the "Block" versions of the functions without needing the callbacks above. +#if USE_BLOCKS + __block cpVect impulseSum = cpvzero; + cpBodyEachArbiter_b(scaleStaticBody, ^(cpArbiter* arb) { + impulseSum = cpvadd(impulseSum, cpArbiterTotalImpulse(arb)); + }); +#else + cpVect impulseSum = cpvzero; + cpBodyEachArbiter(scaleStaticBody, (cpBodyArbiterIteratorFunc)ScaleIterator, &impulseSum); +#endif + + // Force is the impulse divided by the timestep. + cpFloat force = cpvlength(impulseSum) / dt; + + // Weight can be found similarly from the gravity vector. + cpVect g = cpSpaceGetGravity(space); + cpFloat weight = cpvdot(g, impulseSum) / (cpvlengthsq(g) * dt); + + ChipmunkDemoPrintString("Total force: %5.2f, Total weight: %5.2f. ", force, weight); + +// Highlight and count the number of shapes the ball is touching. +#if USE_BLOCKS + __block int count = 0; + cpBodyEachArbiter_b(ballBody, ^(cpArbiter* arb) { + // body is the body we are iterating the arbiters for. + // CP_ARBITER_GET_*() in an arbiter iterator always returns the body/shape for the iterated body first. + CP_ARBITER_GET_SHAPES(arb, ball, other); + ChipmunkDebugDrawBB(cpShapeGetBB(other), RGBAColor(1, 0, 0, 1)); + + count++; + }); +#else + int count = 0; + cpBodyEachArbiter(ballBody, (cpBodyArbiterIteratorFunc)BallIterator, &count); +#endif + + ChipmunkDemoPrintString("The ball is touching %d shapes.\n", count); + +#if USE_BLOCKS + __block cpFloat magnitudeSum = 0.0f; + __block cpVect vectorSum = cpvzero; + cpBodyEachArbiter_b(ballBody, ^(cpArbiter* arb) { + cpVect j = cpArbiterTotalImpulse(arb); + magnitudeSum += cpvlength(j); + vectorSum = cpvadd(vectorSum, j); + }); + + cpFloat crushForce = (magnitudeSum - cpvlength(vectorSum)) * dt; +#else + struct CrushingContext crush = {0.0f, cpvzero}; + cpBodyEachArbiter(ballBody, (cpBodyArbiterIteratorFunc)EstimateCrushing, &crush); + + cpFloat crushForce = (crush.magnitudeSum - cpvlength(crush.vectorSum)) * dt; +#endif + + if (crushForce > 10.0f) + { + ChipmunkDemoPrintString("The ball is being crushed. (f: %.2f)", crushForce); + } + else + { + ChipmunkDemoPrintString("The ball is not being crushed. (f: %.2f)", crushForce); + } } #define WIDTH 4.0f #define HEIGHT 30.0f -static cpSpace * -init(void) +static cpSpace* init(void) { - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 30); - cpSpaceSetGravity(space, cpv(0, -300)); - cpSpaceSetCollisionSlop(space, 0.5); - cpSpaceSetSleepTimeThreshold(space, 1.0f); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - scaleStaticBody = cpSpaceAddBody(space, cpBodyNewStatic()); - shape = cpSpaceAddShape(space, cpSegmentShapeNew(scaleStaticBody, cpv(-240,-180), cpv(-140,-180), 4.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - // add some boxes to stack on the scale - for(int i=0; i<5; i++){ - body = cpSpaceAddBody(space, cpBodyNew(1.0f, cpMomentForBox(1.0f, 30.0f, 30.0f))); - cpBodySetPosition(body, cpv(0, i*32 - 120)); - - shape = cpSpaceAddShape(space, cpBoxShapeNew(body, 30.0f, 30.0f, 0.0)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.8f); - } - - // Add a ball that we'll track which objects are beneath it. - cpFloat radius = 15.0f; - ballBody = cpSpaceAddBody(space, cpBodyNew(10.0f, cpMomentForCircle(10.0f, 0.0f, radius, cpvzero))); - cpBodySetPosition(ballBody, cpv(120, -140 + radius+5)); - - shape = cpSpaceAddShape(space, cpCircleShapeNew(ballBody, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.9f); - - return space; + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 30); + cpSpaceSetGravity(space, cpv(0, -300)); + cpSpaceSetCollisionSlop(space, 0.5); + cpSpaceSetSleepTimeThreshold(space, 1.0f); + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + scaleStaticBody = cpSpaceAddBody(space, cpBodyNewStatic()); + shape = cpSpaceAddShape(space, cpSegmentShapeNew(scaleStaticBody, cpv(-240, -180), cpv(-140, -180), 4.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // add some boxes to stack on the scale + for (int i = 0; i < 5; i++) + { + body = cpSpaceAddBody(space, cpBodyNew(1.0f, cpMomentForBox(1.0f, 30.0f, 30.0f))); + cpBodySetPosition(body, cpv(0, i * 32 - 120)); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, 30.0f, 30.0f, 0.0)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.8f); + } + + // Add a ball that we'll track which objects are beneath it. + cpFloat radius = 15.0f; + ballBody = cpSpaceAddBody(space, cpBodyNew(10.0f, cpMomentForCircle(10.0f, 0.0f, radius, cpvzero))); + cpBodySetPosition(ballBody, cpv(120, -140 + radius + 5)); + + shape = cpSpaceAddShape(space, cpCircleShapeNew(ballBody, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.9f); + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo ContactGraph = { - "Contact Graph", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Contact Graph", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Convex.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Convex.c index 72d5506074b9..b4e457f26be3 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Convex.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Convex.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,99 +18,93 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "chipmunk/chipmunk_unsafe.h" #include "ChipmunkDemo.h" -#define DENSITY (1.0/10000.0) +#define DENSITY (1.0 / 10000.0) -static cpShape *shape; +static cpShape* shape; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpFloat tolerance = 2.0; - - if(ChipmunkDemoRightClick && cpShapePointQuery(shape, ChipmunkDemoMouse, NULL) > tolerance){ - cpBody *body = cpShapeGetBody(shape); - int count = cpPolyShapeGetCount(shape); - - // Allocate the space for the new vertexes on the stack. - cpVect *verts = (cpVect *)alloca((count + 1)*sizeof(cpVect)); - - for(int i=0; i tolerance) + { + cpBody* body = cpShapeGetBody(shape); + int count = cpPolyShapeGetCount(shape); + + // Allocate the space for the new vertexes on the stack. + cpVect* verts = (cpVect*)alloca((count + 1) * sizeof(cpVect)); + + for (int i = 0; i < count; i++) + { + verts[i] = cpPolyShapeGetVert(shape, i); + } + + verts[count] = cpBodyWorldToLocal(body, ChipmunkDemoMouse); + + // This function builds a convex hull for the vertexes. + // Because the result array is the same as verts, it will reduce it in place. + int hullCount = cpConvexHull(count + 1, verts, verts, NULL, tolerance); + + // Figure out how much to shift the body by. + cpVect centroid = cpCentroidForPoly(hullCount, verts); + + // Recalculate the body properties to match the updated shape. + cpFloat mass = cpAreaForPoly(hullCount, verts, 0.0f) * DENSITY; + cpBodySetMass(body, mass); + cpBodySetMoment(body, cpMomentForPoly(mass, hullCount, verts, cpvneg(centroid), 0.0f)); + cpBodySetPosition(body, cpBodyLocalToWorld(body, centroid)); + + // Use the setter function from chipmunk_unsafe.h. + // You could also remove and recreate the shape if you wanted. + cpPolyShapeSetVerts(shape, hullCount, verts, cpTransformTranslate(cpvneg(centroid))); + } + + cpSpaceStep(space, dt); } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Right click and drag to change the blocks's shape."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 30); - cpSpaceSetGravity(space, cpv(0, -500)); - cpSpaceSetSleepTimeThreshold(space, 0.5f); - cpSpaceSetCollisionSlop(space, 0.5f); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpFloat width = 50.0f; - cpFloat height = 70.0f; - cpFloat mass = width*height*DENSITY; - cpFloat moment = cpMomentForBox(mass, width, height); - - body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); - - shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); - cpShapeSetFriction(shape, 0.6f); - - return space; + ChipmunkDemoMessageString = "Right click and drag to change the blocks's shape."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 30); + cpSpaceSetGravity(space, cpv(0, -500)); + cpSpaceSetSleepTimeThreshold(space, 0.5f); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + cpFloat width = 50.0f; + cpFloat height = 70.0f; + cpFloat mass = width * height * DENSITY; + cpFloat moment = cpMomentForBox(mass, width, height); + + body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); + cpShapeSetFriction(shape, 0.6f); + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Convex = { - "Convex.", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Convex.", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Crane.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Crane.c index 9141e85c321d..7d0cfe9e021d 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Crane.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Crane.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,155 +18,143 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpBody *dollyBody = NULL; +static cpBody* dollyBody = NULL; // Constraint used as a servo motor to move the dolly back and forth. -static cpConstraint *dollyServo = NULL; +static cpConstraint* dollyServo = NULL; // Constraint used as a winch motor to lift the load. -static cpConstraint *winchServo = NULL; +static cpConstraint* winchServo = NULL; // Temporary joint used to hold the hook to the load. -static cpConstraint *hookJoint = NULL; - +static cpConstraint* hookJoint = NULL; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - // Set the first anchor point (the one attached to the static body) of the dolly servo to the mouse's x position. - cpPivotJointSetAnchorA(dollyServo, cpv(ChipmunkDemoMouse.x, 100)); - - // Set the max length of the winch servo to match the mouse's height. - cpSlideJointSetMax(winchServo, cpfmax(100 - ChipmunkDemoMouse.y, 50)); - - if(hookJoint && ChipmunkDemoRightClick){ - cpSpaceRemoveConstraint(space, hookJoint); - cpConstraintFree(hookJoint); - hookJoint = NULL; - } - - cpSpaceStep(space, dt); + // Set the first anchor point (the one attached to the static body) of the dolly servo to the mouse's x position. + cpPivotJointSetAnchorA(dollyServo, cpv(ChipmunkDemoMouse.x, 100)); + + // Set the max length of the winch servo to match the mouse's height. + cpSlideJointSetMax(winchServo, cpfmax(100 - ChipmunkDemoMouse.y, 50)); + + if (hookJoint && ChipmunkDemoRightClick) + { + cpSpaceRemoveConstraint(space, hookJoint); + cpConstraintFree(hookJoint); + hookJoint = NULL; + } + + cpSpaceStep(space, dt); } -enum COLLISION_TYPES { - HOOK_SENSOR = 1, - CRATE, +enum COLLISION_TYPES +{ + HOOK_SENSOR = 1, + CRATE, }; -static void -AttachHook(cpSpace *space, cpBody *hook, cpBody *crate) +static void AttachHook(cpSpace* space, cpBody* hook, cpBody* crate) { - hookJoint = cpSpaceAddConstraint(space, cpPivotJointNew(hook, crate, cpBodyGetPosition(hook))); + hookJoint = cpSpaceAddConstraint(space, cpPivotJointNew(hook, crate, cpBodyGetPosition(hook))); } - -static cpBool -HookCrate(cpArbiter *arb, cpSpace *space, void *data) +static cpBool HookCrate(cpArbiter* arb, cpSpace* space, void* data) { - if(hookJoint == NULL){ - // Get pointers to the two bodies in the collision pair and define local variables for them. - // Their order matches the order of the collision types passed - // to the collision handler this function was defined for - CP_ARBITER_GET_BODIES(arb, hook, crate); - - // additions and removals can't be done in a normal callback. - // Schedule a post step callback to do it. - // Use the hook as the key and pass along the arbiter. - cpSpaceAddPostStepCallback(space, (cpPostStepFunc)AttachHook, hook, crate); - } - - return cpTrue; // return value is ignored for sensor callbacks anyway -} + if (hookJoint == NULL) + { + // Get pointers to the two bodies in the collision pair and define local variables for them. + // Their order matches the order of the collision types passed + // to the collision handler this function was defined for + CP_ARBITER_GET_BODIES(arb, hook, crate); + + // additions and removals can't be done in a normal callback. + // Schedule a post step callback to do it. + // Use the hook as the key and pass along the arbiter. + cpSpaceAddPostStepCallback(space, (cpPostStepFunc)AttachHook, hook, crate); + } + return cpTrue; // return value is ignored for sensor callbacks anyway +} -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Control the crane by moving the mouse. Right click to release."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 30); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetDamping(space, 0.8); - - cpBody *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - // Add a body for the dolly. - dollyBody = cpSpaceAddBody(space, cpBodyNew(10, INFINITY)); - cpBodySetPosition(dollyBody, cpv(0, 100)); - - // Add a block so you can see it. - cpSpaceAddShape(space, cpBoxShapeNew(dollyBody, 30, 30, 0.0)); - - // Add a groove joint for it to move back and forth on. - cpSpaceAddConstraint(space, cpGrooveJointNew(staticBody, dollyBody, cpv(-250, 100), cpv(250, 100), cpvzero)); - - // Add a pivot joint to act as a servo motor controlling it's position - // By updating the anchor points of the pivot joint, you can move the dolly. - dollyServo = cpSpaceAddConstraint(space, cpPivotJointNew(staticBody, dollyBody, cpBodyGetPosition(dollyBody))); - // Max force the dolly servo can generate. - cpConstraintSetMaxForce(dollyServo, 10000); - // Max speed of the dolly servo - cpConstraintSetMaxBias(dollyServo, 100); - // You can also change the error bias to control how it slows down. - //cpConstraintSetErrorBias(dollyServo, 0.2); - - - // Add the crane hook. - cpBody *hookBody = cpSpaceAddBody(space, cpBodyNew(1, INFINITY)); - cpBodySetPosition(hookBody, cpv(0, 50)); - - // Add a sensor shape for it. This will be used to figure out when the hook touches a box. - shape = cpSpaceAddShape(space, cpCircleShapeNew(hookBody, 10, cpvzero)); - cpShapeSetSensor(shape, cpTrue); - cpShapeSetCollisionType(shape, HOOK_SENSOR); - - // Add a slide joint to act as a winch motor - // By updating the max length of the joint you can make it pull up the load. - winchServo = cpSpaceAddConstraint(space, cpSlideJointNew(dollyBody, hookBody, cpvzero, cpvzero, 0, INFINITY)); - // Max force the dolly servo can generate. - cpConstraintSetMaxForce(winchServo, 30000); - // Max speed of the dolly servo - cpConstraintSetMaxBias(winchServo, 60); - - // TODO: cleanup - // Finally a box to play with - cpBody *boxBody = cpSpaceAddBody(space, cpBodyNew(30, cpMomentForBox(30, 50, 50))); - cpBodySetPosition(boxBody, cpv(200, -200)); - - // Add a block so you can see it. - shape = cpSpaceAddShape(space, cpBoxShapeNew(boxBody, 50, 50, 0.0)); - cpShapeSetFriction(shape, 0.7); - cpShapeSetCollisionType(shape, CRATE); - - cpCollisionHandler *handler = cpSpaceAddCollisionHandler(space, HOOK_SENSOR, CRATE); - handler->beginFunc = (cpCollisionBeginFunc)HookCrate; - - - return space; + ChipmunkDemoMessageString = "Control the crane by moving the mouse. Right click to release."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 30); + cpSpaceSetGravity(space, cpv(0, -100)); + cpSpaceSetDamping(space, 0.8); + + cpBody* staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // Add a body for the dolly. + dollyBody = cpSpaceAddBody(space, cpBodyNew(10, INFINITY)); + cpBodySetPosition(dollyBody, cpv(0, 100)); + + // Add a block so you can see it. + cpSpaceAddShape(space, cpBoxShapeNew(dollyBody, 30, 30, 0.0)); + + // Add a groove joint for it to move back and forth on. + cpSpaceAddConstraint(space, cpGrooveJointNew(staticBody, dollyBody, cpv(-250, 100), cpv(250, 100), cpvzero)); + + // Add a pivot joint to act as a servo motor controlling it's position + // By updating the anchor points of the pivot joint, you can move the dolly. + dollyServo = cpSpaceAddConstraint(space, cpPivotJointNew(staticBody, dollyBody, cpBodyGetPosition(dollyBody))); + // Max force the dolly servo can generate. + cpConstraintSetMaxForce(dollyServo, 10000); + // Max speed of the dolly servo + cpConstraintSetMaxBias(dollyServo, 100); + // You can also change the error bias to control how it slows down. + // cpConstraintSetErrorBias(dollyServo, 0.2); + + // Add the crane hook. + cpBody* hookBody = cpSpaceAddBody(space, cpBodyNew(1, INFINITY)); + cpBodySetPosition(hookBody, cpv(0, 50)); + + // Add a sensor shape for it. This will be used to figure out when the hook touches a box. + shape = cpSpaceAddShape(space, cpCircleShapeNew(hookBody, 10, cpvzero)); + cpShapeSetSensor(shape, cpTrue); + cpShapeSetCollisionType(shape, HOOK_SENSOR); + + // Add a slide joint to act as a winch motor + // By updating the max length of the joint you can make it pull up the load. + winchServo = cpSpaceAddConstraint(space, cpSlideJointNew(dollyBody, hookBody, cpvzero, cpvzero, 0, INFINITY)); + // Max force the dolly servo can generate. + cpConstraintSetMaxForce(winchServo, 30000); + // Max speed of the dolly servo + cpConstraintSetMaxBias(winchServo, 60); + + // TODO: cleanup + // Finally a box to play with + cpBody* boxBody = cpSpaceAddBody(space, cpBodyNew(30, cpMomentForBox(30, 50, 50))); + cpBodySetPosition(boxBody, cpv(200, -200)); + + // Add a block so you can see it. + shape = cpSpaceAddShape(space, cpBoxShapeNew(boxBody, 50, 50, 0.0)); + cpShapeSetFriction(shape, 0.7); + cpShapeSetCollisionType(shape, CRATE); + + cpCollisionHandler* handler = cpSpaceAddCollisionHandler(space, HOOK_SENSOR, CRATE); + handler->beginFunc = (cpCollisionBeginFunc)HookCrate; + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Crane = { - "Crane", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Crane", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Example.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Example.c index 75279f57795c..d3436dda5ace 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Example.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Example.c @@ -29,12 +29,13 @@ #include "chipmunk/chipmunk_unsafe.h" #include "ChipmunkDemo.h" -static void update(cpSpace* space, double dt) { +static void update(cpSpace* space, double dt) +{ cpSpaceStep(space, dt); } - -static cpSpace* init(void) { +static cpSpace* init(void) +{ cpSpace* space = cpSpaceNew(); cpSpaceSetIterations(space, 5); space->damping = 0.1; @@ -43,7 +44,6 @@ static cpSpace* init(void) { cpFloat mass = 1.0f; - { cpFloat size = 100.0; @@ -67,8 +67,9 @@ static cpSpace* init(void) { const int NUM_VERTS = 5; cpVect verts[NUM_VERTS]; - for (int i = 0; i < NUM_VERTS; i++) { - cpFloat angle = -2 * M_PI * i / ((cpFloat) NUM_VERTS); + for (int i = 0; i < NUM_VERTS; i++) + { + cpFloat angle = -2 * M_PI * i / ((cpFloat)NUM_VERTS); verts[i] = cpv(size / 2.0 * cos(angle), size / 2.0 * sin(angle)); } @@ -82,8 +83,9 @@ static cpSpace* init(void) { const int NUM_VERTS = 4; cpVect verts[NUM_VERTS]; - for (int i = 0; i < NUM_VERTS; i++) { - cpFloat angle = -2 * M_PI * i / ((cpFloat) NUM_VERTS); + for (int i = 0; i < NUM_VERTS; i++) + { + cpFloat angle = -2 * M_PI * i / ((cpFloat)NUM_VERTS); verts[i] = cpv(size / 2.0 * cos(angle), size / 2.0 * sin(angle)); } @@ -115,16 +117,12 @@ static cpSpace* init(void) { return space; } -static void destroy(cpSpace* space) { +static void destroy(cpSpace* space) +{ ChipmunkDemoFreeSpaceChildren(space); cpSpaceFree(space); } ChipmunkDemo Example = { - "Template to start (GJK)", - 1.0f / 60.0f, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Template to start (GJK)", 1.0f / 60.0f, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Joints.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Joints.c index 3a7f23a6e16d..db27fe805351 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Joints.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Joints.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,281 +18,267 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpBody * -addBall(cpSpace *space, cpVect pos, cpVect boxOffset) +static cpBody* addBall(cpSpace* space, cpVect pos, cpVect boxOffset) { - cpFloat radius = 15.0f; - cpFloat mass = 1.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpvadd(pos, boxOffset)); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - - return body; + cpFloat radius = 15.0f; + cpFloat mass = 1.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpvadd(pos, boxOffset)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + + return body; } -static cpBody * -addLever(cpSpace *space, cpVect pos, cpVect boxOffset) +static cpBody* addLever(cpSpace* space, cpVect pos, cpVect boxOffset) { - cpFloat mass = 1.0f; - cpVect a = cpv(0, 15); - cpVect b = cpv(0, -15); - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForSegment(mass, a, b, 0.0f))); - cpBodySetPosition(body, cpvadd(pos, cpvadd(boxOffset, cpv(0, -15)))); - - cpShape *shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, a, b, 5.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - - return body; + cpFloat mass = 1.0f; + cpVect a = cpv(0, 15); + cpVect b = cpv(0, -15); + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForSegment(mass, a, b, 0.0f))); + cpBodySetPosition(body, cpvadd(pos, cpvadd(boxOffset, cpv(0, -15)))); + + cpShape* shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, a, b, 5.0f)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + + return body; } -static cpBody * -addBar(cpSpace *space, cpVect pos, cpVect boxOffset) +static cpBody* addBar(cpSpace* space, cpVect pos, cpVect boxOffset) { - cpFloat mass = 2.0f; - cpVect a = cpv(0, 30); - cpVect b = cpv(0, -30); - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForSegment(mass, a, b, 0.0f))); - cpBodySetPosition(body, cpvadd(pos, boxOffset)); - - cpShape *shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, a, b, 5.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - return body; + cpFloat mass = 2.0f; + cpVect a = cpv(0, 30); + cpVect b = cpv(0, -30); + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForSegment(mass, a, b, 0.0f))); + cpBodySetPosition(body, cpvadd(pos, boxOffset)); + + cpShape* shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, a, b, 5.0f)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + return body; } -static cpBody * -addWheel(cpSpace *space, cpVect pos, cpVect boxOffset) +static cpBody* addWheel(cpSpace* space, cpVect pos, cpVect boxOffset) { - cpFloat radius = 15.0f; - cpFloat mass = 1.0f; - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpvadd(pos, boxOffset)); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - return body; + cpFloat radius = 15.0f; + cpFloat mass = 1.0f; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpvadd(pos, boxOffset)); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + return body; } -static cpBody * -addChassis(cpSpace *space, cpVect pos, cpVect boxOffset) +static cpBody* addChassis(cpSpace* space, cpVect pos, cpVect boxOffset) { - cpFloat mass = 5.0f; - cpFloat width = 80; - cpFloat height = 30; - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, width, height))); - cpBodySetPosition(body, cpvadd(pos, boxOffset)); - - cpShape *shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - return body; + cpFloat mass = 5.0f; + cpFloat width = 80; + cpFloat height = 30; + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, width, height))); + cpBodySetPosition(body, cpvadd(pos, boxOffset)); + + cpShape* shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + return body; } -static cpSpace * -init(void) +static cpSpace* init(void) { - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 10); - cpSpaceSetGravity(space, cpv(0, -100)); - cpSpaceSetSleepTimeThreshold(space, 0.5f); - - cpBody *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,120), cpv(320,120), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,0), cpv(320,0), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-120), cpv(320,-120), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(-320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-160,-240), cpv(-160,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(0,-240), cpv(0,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(160,-240), cpv(160,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320,-240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpVect boxOffset; - cpBody *body1, *body2; - - cpVect posA = cpv( 50, 60); - cpVect posB = cpv(110, 60); - - #define POS_A cpvadd(boxOffset, posA) - #define POS_B cpvadd(boxOffset, posB) - - // Pin Joints - Link shapes with a solid bar or pin. - // Keeps the anchor points the same distance apart from when the joint was created. - boxOffset = cpv(-320, -240); - body1 = addBall(space, posA, boxOffset); - body2 = addBall(space, posB, boxOffset); - cpSpaceAddConstraint(space, cpPinJointNew(body1, body2, cpv(15,0), cpv(-15,0))); - - // Slide Joints - Like pin joints but with a min/max distance. - // Can be used for a cheap approximation of a rope. - boxOffset = cpv(-160, -240); - body1 = addBall(space, posA, boxOffset); - body2 = addBall(space, posB, boxOffset); - cpSpaceAddConstraint(space, cpSlideJointNew(body1, body2, cpv(15,0), cpv(-15,0), 20.0f, 40.0f)); - - // Pivot Joints - Holds the two anchor points together. Like a swivel. - boxOffset = cpv(0, -240); - body1 = addBall(space, posA, boxOffset); - body2 = addBall(space, posB, boxOffset); - cpSpaceAddConstraint(space, cpPivotJointNew(body1, body2, cpvadd(boxOffset, cpv(80,60)))); - // cpPivotJointNew() takes it's anchor parameter in world coordinates. The anchors are calculated from that - // cpPivotJointNew2() lets you specify the two anchor points explicitly - - // Groove Joints - Like a pivot joint, but one of the anchors is a line segment that the pivot can slide in - boxOffset = cpv(160, -240); - body1 = addBall(space, posA, boxOffset); - body2 = addBall(space, posB, boxOffset); - cpSpaceAddConstraint(space, cpGrooveJointNew(body1, body2, cpv(30,30), cpv(30,-30), cpv(-30,0))); - - // Damped Springs - boxOffset = cpv(-320, -120); - body1 = addBall(space, posA, boxOffset); - body2 = addBall(space, posB, boxOffset); - cpSpaceAddConstraint(space, cpDampedSpringNew(body1, body2, cpv(15,0), cpv(-15,0), 20.0f, 5.0f, 0.3f)); - - // Damped Rotary Springs - boxOffset = cpv(-160, -120); - body1 = addBar(space, posA, boxOffset); - body2 = addBar(space, posB, boxOffset); - // Add some pin joints to hold the circles in place. - cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); - cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); - cpSpaceAddConstraint(space, cpDampedRotarySpringNew(body1, body2, 0.0f, 3000.0f, 60.0f)); - - // Rotary Limit Joint - boxOffset = cpv(0, -120); - body1 = addLever(space, posA, boxOffset); - body2 = addLever(space, posB, boxOffset); - // Add some pin joints to hold the circles in place. - cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); - cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); - // Hold their rotation within 90 degrees of each other. - cpSpaceAddConstraint(space, cpRotaryLimitJointNew(body1, body2, -CP_PI/2.0f, CP_PI/2.0f)); - - // Ratchet Joint - A rotary ratchet, like a socket wrench - boxOffset = cpv(160, -120); - body1 = addLever(space, posA, boxOffset); - body2 = addLever(space, posB, boxOffset); - // Add some pin joints to hold the circles in place. - cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); - cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); - // Ratchet every 90 degrees - cpSpaceAddConstraint(space, cpRatchetJointNew(body1, body2, 0.0f, CP_PI/2.0f)); - - // Gear Joint - Maintain a specific angular velocity ratio - boxOffset = cpv(-320, 0); - body1 = addBar(space, posA, boxOffset); - body2 = addBar(space, posB, boxOffset); - // Add some pin joints to hold the circles in place. - cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); - cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); - // Force one to sping 2x as fast as the other - cpSpaceAddConstraint(space, cpGearJointNew(body1, body2, 0.0f, 2.0f)); - - // Simple Motor - Maintain a specific angular relative velocity - boxOffset = cpv(-160, 0); - body1 = addBar(space, posA, boxOffset); - body2 = addBar(space, posB, boxOffset); - // Add some pin joints to hold the circles in place. - cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); - cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); - // Make them spin at 1/2 revolution per second in relation to each other. - cpSpaceAddConstraint(space, cpSimpleMotorNew(body1, body2, CP_PI)); - - // Make a car with some nice soft suspension - boxOffset = cpv(0, 0); - cpBody *wheel1 = addWheel(space, posA, boxOffset); - cpBody *wheel2 = addWheel(space, posB, boxOffset); - cpBody *chassis = addChassis(space, cpv(80, 100), boxOffset); - - cpSpaceAddConstraint(space, cpGrooveJointNew(chassis, wheel1, cpv(-30, -10), cpv(-30, -40), cpvzero)); - cpSpaceAddConstraint(space, cpGrooveJointNew(chassis, wheel2, cpv( 30, -10), cpv( 30, -40), cpvzero)); - - cpSpaceAddConstraint(space, cpDampedSpringNew(chassis, wheel1, cpv(-30, 0), cpvzero, 50.0f, 20.0f, 10.0f)); - cpSpaceAddConstraint(space, cpDampedSpringNew(chassis, wheel2, cpv( 30, 0), cpvzero, 50.0f, 20.0f, 10.0f)); - - return space; + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -100)); + cpSpaceSetSleepTimeThreshold(space, 0.5f); + + cpBody* staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 120), cpv(320, 120), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 0), cpv(320, 0), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -120), cpv(320, -120), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-160, -240), cpv(-160, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(0, -240), cpv(0, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(160, -240), cpv(160, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + cpVect boxOffset; + cpBody *body1, *body2; + + cpVect posA = cpv(50, 60); + cpVect posB = cpv(110, 60); + +#define POS_A cpvadd(boxOffset, posA) +#define POS_B cpvadd(boxOffset, posB) + + // Pin Joints - Link shapes with a solid bar or pin. + // Keeps the anchor points the same distance apart from when the joint was created. + boxOffset = cpv(-320, -240); + body1 = addBall(space, posA, boxOffset); + body2 = addBall(space, posB, boxOffset); + cpSpaceAddConstraint(space, cpPinJointNew(body1, body2, cpv(15, 0), cpv(-15, 0))); + + // Slide Joints - Like pin joints but with a min/max distance. + // Can be used for a cheap approximation of a rope. + boxOffset = cpv(-160, -240); + body1 = addBall(space, posA, boxOffset); + body2 = addBall(space, posB, boxOffset); + cpSpaceAddConstraint(space, cpSlideJointNew(body1, body2, cpv(15, 0), cpv(-15, 0), 20.0f, 40.0f)); + + // Pivot Joints - Holds the two anchor points together. Like a swivel. + boxOffset = cpv(0, -240); + body1 = addBall(space, posA, boxOffset); + body2 = addBall(space, posB, boxOffset); + cpSpaceAddConstraint(space, cpPivotJointNew(body1, body2, cpvadd(boxOffset, cpv(80, 60)))); + // cpPivotJointNew() takes it's anchor parameter in world coordinates. The anchors are calculated from that + // cpPivotJointNew2() lets you specify the two anchor points explicitly + + // Groove Joints - Like a pivot joint, but one of the anchors is a line segment that the pivot can slide in + boxOffset = cpv(160, -240); + body1 = addBall(space, posA, boxOffset); + body2 = addBall(space, posB, boxOffset); + cpSpaceAddConstraint(space, cpGrooveJointNew(body1, body2, cpv(30, 30), cpv(30, -30), cpv(-30, 0))); + + // Damped Springs + boxOffset = cpv(-320, -120); + body1 = addBall(space, posA, boxOffset); + body2 = addBall(space, posB, boxOffset); + cpSpaceAddConstraint(space, cpDampedSpringNew(body1, body2, cpv(15, 0), cpv(-15, 0), 20.0f, 5.0f, 0.3f)); + + // Damped Rotary Springs + boxOffset = cpv(-160, -120); + body1 = addBar(space, posA, boxOffset); + body2 = addBar(space, posB, boxOffset); + // Add some pin joints to hold the circles in place. + cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); + cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); + cpSpaceAddConstraint(space, cpDampedRotarySpringNew(body1, body2, 0.0f, 3000.0f, 60.0f)); + + // Rotary Limit Joint + boxOffset = cpv(0, -120); + body1 = addLever(space, posA, boxOffset); + body2 = addLever(space, posB, boxOffset); + // Add some pin joints to hold the circles in place. + cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); + cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); + // Hold their rotation within 90 degrees of each other. + cpSpaceAddConstraint(space, cpRotaryLimitJointNew(body1, body2, -CP_PI / 2.0f, CP_PI / 2.0f)); + + // Ratchet Joint - A rotary ratchet, like a socket wrench + boxOffset = cpv(160, -120); + body1 = addLever(space, posA, boxOffset); + body2 = addLever(space, posB, boxOffset); + // Add some pin joints to hold the circles in place. + cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); + cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); + // Ratchet every 90 degrees + cpSpaceAddConstraint(space, cpRatchetJointNew(body1, body2, 0.0f, CP_PI / 2.0f)); + + // Gear Joint - Maintain a specific angular velocity ratio + boxOffset = cpv(-320, 0); + body1 = addBar(space, posA, boxOffset); + body2 = addBar(space, posB, boxOffset); + // Add some pin joints to hold the circles in place. + cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); + cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); + // Force one to sping 2x as fast as the other + cpSpaceAddConstraint(space, cpGearJointNew(body1, body2, 0.0f, 2.0f)); + + // Simple Motor - Maintain a specific angular relative velocity + boxOffset = cpv(-160, 0); + body1 = addBar(space, posA, boxOffset); + body2 = addBar(space, posB, boxOffset); + // Add some pin joints to hold the circles in place. + cpSpaceAddConstraint(space, cpPivotJointNew(body1, staticBody, POS_A)); + cpSpaceAddConstraint(space, cpPivotJointNew(body2, staticBody, POS_B)); + // Make them spin at 1/2 revolution per second in relation to each other. + cpSpaceAddConstraint(space, cpSimpleMotorNew(body1, body2, CP_PI)); + + // Make a car with some nice soft suspension + boxOffset = cpv(0, 0); + cpBody* wheel1 = addWheel(space, posA, boxOffset); + cpBody* wheel2 = addWheel(space, posB, boxOffset); + cpBody* chassis = addChassis(space, cpv(80, 100), boxOffset); + + cpSpaceAddConstraint(space, cpGrooveJointNew(chassis, wheel1, cpv(-30, -10), cpv(-30, -40), cpvzero)); + cpSpaceAddConstraint(space, cpGrooveJointNew(chassis, wheel2, cpv(30, -10), cpv(30, -40), cpvzero)); + + cpSpaceAddConstraint(space, cpDampedSpringNew(chassis, wheel1, cpv(-30, 0), cpvzero, 50.0f, 20.0f, 10.0f)); + cpSpaceAddConstraint(space, cpDampedSpringNew(chassis, wheel2, cpv(30, 0), cpvzero, 50.0f, 20.0f, 10.0f)); + + return space; } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Joints = { - "Joints and Constraints", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Joints and Constraints", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/LogoSmash.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/LogoSmash.c index 3b1fc4bc670e..4971f05a5e62 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/LogoSmash.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/LogoSmash.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,149 +18,147 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static const int image_width = 188; -static const int image_height = 35; -static const int image_row_length = 24; +static const int image_width = 188; +static const int image_height = 35; +static const int image_row_length = 24; float ChipmunkDebugDrawPointLineScale = 1.0f; static const char image_bitmap[] = { - 15,-16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-64,15,63,-32,-2,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,31,-64,15,127,-125,-1,-128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,127,-64,15,127,15,-1,-64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-64,15,-2, - 31,-1,-64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-64,0,-4,63,-1,-32,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,1,-1,-64,15,-8,127,-1,-32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,-1,-64,0,-8,-15,-1,-32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-31,-1,-64,15,-8,-32, - -1,-32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-15,-1,-64,9,-15,-32,-1,-32,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,31,-15,-1,-64,0,-15,-32,-1,-32,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,63,-7,-1,-64,9,-29,-32,127,-61,-16,63,15,-61,-1,-8,31,-16,15,-8,126,7,-31, - -8,31,-65,-7,-1,-64,9,-29,-32,0,7,-8,127,-97,-25,-1,-2,63,-8,31,-4,-1,15,-13, - -4,63,-1,-3,-1,-64,9,-29,-32,0,7,-8,127,-97,-25,-1,-2,63,-8,31,-4,-1,15,-13, - -2,63,-1,-3,-1,-64,9,-29,-32,0,7,-8,127,-97,-25,-1,-1,63,-4,63,-4,-1,15,-13, - -2,63,-33,-1,-1,-32,9,-25,-32,0,7,-8,127,-97,-25,-1,-1,63,-4,63,-4,-1,15,-13, - -1,63,-33,-1,-1,-16,9,-25,-32,0,7,-8,127,-97,-25,-1,-1,63,-4,63,-4,-1,15,-13, - -1,63,-49,-1,-1,-8,9,-57,-32,0,7,-8,127,-97,-25,-8,-1,63,-2,127,-4,-1,15,-13, - -1,-65,-49,-1,-1,-4,9,-57,-32,0,7,-8,127,-97,-25,-8,-1,63,-2,127,-4,-1,15,-13, - -1,-65,-57,-1,-1,-2,9,-57,-32,0,7,-8,127,-97,-25,-8,-1,63,-2,127,-4,-1,15,-13, - -1,-1,-57,-1,-1,-1,9,-57,-32,0,7,-1,-1,-97,-25,-8,-1,63,-1,-1,-4,-1,15,-13,-1, - -1,-61,-1,-1,-1,-119,-57,-32,0,7,-1,-1,-97,-25,-8,-1,63,-1,-1,-4,-1,15,-13,-1, - -1,-61,-1,-1,-1,-55,-49,-32,0,7,-1,-1,-97,-25,-8,-1,63,-1,-1,-4,-1,15,-13,-1, - -1,-63,-1,-1,-1,-23,-49,-32,127,-57,-1,-1,-97,-25,-1,-1,63,-1,-1,-4,-1,15,-13, - -1,-1,-63,-1,-1,-1,-16,-49,-32,-1,-25,-1,-1,-97,-25,-1,-1,63,-33,-5,-4,-1,15, - -13,-1,-1,-64,-1,-9,-1,-7,-49,-32,-1,-25,-8,127,-97,-25,-1,-1,63,-33,-5,-4,-1, - 15,-13,-1,-1,-64,-1,-13,-1,-32,-49,-32,-1,-25,-8,127,-97,-25,-1,-2,63,-49,-13, - -4,-1,15,-13,-1,-1,-64,127,-7,-1,-119,-17,-15,-1,-25,-8,127,-97,-25,-1,-2,63, - -49,-13,-4,-1,15,-13,-3,-1,-64,127,-8,-2,15,-17,-1,-1,-25,-8,127,-97,-25,-1, - -8,63,-49,-13,-4,-1,15,-13,-3,-1,-64,63,-4,120,0,-17,-1,-1,-25,-8,127,-97,-25, - -8,0,63,-57,-29,-4,-1,15,-13,-4,-1,-64,63,-4,0,15,-17,-1,-1,-25,-8,127,-97, - -25,-8,0,63,-57,-29,-4,-1,-1,-13,-4,-1,-64,31,-2,0,0,103,-1,-1,-57,-8,127,-97, - -25,-8,0,63,-57,-29,-4,-1,-1,-13,-4,127,-64,31,-2,0,15,103,-1,-1,-57,-8,127, - -97,-25,-8,0,63,-61,-61,-4,127,-1,-29,-4,127,-64,15,-8,0,0,55,-1,-1,-121,-8, - 127,-97,-25,-8,0,63,-61,-61,-4,127,-1,-29,-4,63,-64,15,-32,0,0,23,-1,-2,3,-16, - 63,15,-61,-16,0,31,-127,-127,-8,31,-1,-127,-8,31,-128,7,-128,0,0 -}; + 15, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, -64, 15, 63, -32, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, -64, 15, 127, -125, -1, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 127, -64, 15, 127, 15, -1, -64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -64, 15, -2, 31, -1, -64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -64, 0, -4, 63, -1, -32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -64, 15, -8, 127, -1, + -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -64, 0, + -8, -15, -1, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -31, + -1, -64, 15, -8, -32, -1, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, -15, -1, -64, 9, -15, -32, -1, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, -15, -1, -64, 0, -15, -32, -1, -32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, -7, -1, -64, 9, -29, -32, 127, -61, -16, 63, 15, -61, -1, + -8, 31, -16, 15, -8, 126, 7, -31, -8, 31, -65, -7, -1, -64, 9, -29, -32, 0, 7, -8, 127, + -97, -25, -1, -2, 63, -8, 31, -4, -1, 15, -13, -4, 63, -1, -3, -1, -64, 9, -29, -32, 0, + 7, -8, 127, -97, -25, -1, -2, 63, -8, 31, -4, -1, 15, -13, -2, 63, -1, -3, -1, -64, 9, + -29, -32, 0, 7, -8, 127, -97, -25, -1, -1, 63, -4, 63, -4, -1, 15, -13, -2, 63, -33, -1, + -1, -32, 9, -25, -32, 0, 7, -8, 127, -97, -25, -1, -1, 63, -4, 63, -4, -1, 15, -13, -1, + 63, -33, -1, -1, -16, 9, -25, -32, 0, 7, -8, 127, -97, -25, -1, -1, 63, -4, 63, -4, -1, + 15, -13, -1, 63, -49, -1, -1, -8, 9, -57, -32, 0, 7, -8, 127, -97, -25, -8, -1, 63, -2, + 127, -4, -1, 15, -13, -1, -65, -49, -1, -1, -4, 9, -57, -32, 0, 7, -8, 127, -97, -25, -8, + -1, 63, -2, 127, -4, -1, 15, -13, -1, -65, -57, -1, -1, -2, 9, -57, -32, 0, 7, -8, 127, + -97, -25, -8, -1, 63, -2, 127, -4, -1, 15, -13, -1, -1, -57, -1, -1, -1, 9, -57, -32, 0, + 7, -1, -1, -97, -25, -8, -1, 63, -1, -1, -4, -1, 15, -13, -1, -1, -61, -1, -1, -1, -119, + -57, -32, 0, 7, -1, -1, -97, -25, -8, -1, 63, -1, -1, -4, -1, 15, -13, -1, -1, -61, -1, + -1, -1, -55, -49, -32, 0, 7, -1, -1, -97, -25, -8, -1, 63, -1, -1, -4, -1, 15, -13, -1, + -1, -63, -1, -1, -1, -23, -49, -32, 127, -57, -1, -1, -97, -25, -1, -1, 63, -1, -1, -4, -1, + 15, -13, -1, -1, -63, -1, -1, -1, -16, -49, -32, -1, -25, -1, -1, -97, -25, -1, -1, 63, -33, + -5, -4, -1, 15, -13, -1, -1, -64, -1, -9, -1, -7, -49, -32, -1, -25, -8, 127, -97, -25, -1, + -1, 63, -33, -5, -4, -1, 15, -13, -1, -1, -64, -1, -13, -1, -32, -49, -32, -1, -25, -8, 127, + -97, -25, -1, -2, 63, -49, -13, -4, -1, 15, -13, -1, -1, -64, 127, -7, -1, -119, -17, -15, -1, + -25, -8, 127, -97, -25, -1, -2, 63, -49, -13, -4, -1, 15, -13, -3, -1, -64, 127, -8, -2, 15, + -17, -1, -1, -25, -8, 127, -97, -25, -1, -8, 63, -49, -13, -4, -1, 15, -13, -3, -1, -64, 63, + -4, 120, 0, -17, -1, -1, -25, -8, 127, -97, -25, -8, 0, 63, -57, -29, -4, -1, 15, -13, -4, + -1, -64, 63, -4, 0, 15, -17, -1, -1, -25, -8, 127, -97, -25, -8, 0, 63, -57, -29, -4, -1, + -1, -13, -4, -1, -64, 31, -2, 0, 0, 103, -1, -1, -57, -8, 127, -97, -25, -8, 0, 63, -57, + -29, -4, -1, -1, -13, -4, 127, -64, 31, -2, 0, 15, 103, -1, -1, -57, -8, 127, -97, -25, -8, + 0, 63, -61, -61, -4, 127, -1, -29, -4, 127, -64, 15, -8, 0, 0, 55, -1, -1, -121, -8, 127, + -97, -25, -8, 0, 63, -61, -61, -4, 127, -1, -29, -4, 63, -64, 15, -32, 0, 0, 23, -1, -2, + 3, -16, 63, 15, -61, -16, 0, 31, -127, -127, -8, 31, -1, -127, -8, 31, -128, 7, -128, 0, 0}; -static inline int -get_pixel(int x, int y) +static inline int get_pixel(int x, int y) { - return (image_bitmap[(x>>3) + y*image_row_length]>>(~x&0x7)) & 1; + return (image_bitmap[(x >> 3) + y * image_row_length] >> (~x & 0x7)) & 1; } static int bodyCount = 0; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static void -DrawDot(cpBody *body, void *unused) +static void DrawDot(cpBody* body, void* unused) { - ChipmunkDebugDrawDot(3.5/ChipmunkDebugDrawPointLineScale, cpBodyGetPosition(body), RGBAColor(0xee/255.0f, 0xe8/255.0f, 0xd5/255.0f, 1.0f)); + ChipmunkDebugDrawDot(3.5 / ChipmunkDebugDrawPointLineScale, cpBodyGetPosition(body), + RGBAColor(0xee / 255.0f, 0xe8 / 255.0f, 0xd5 / 255.0f, 1.0f)); } -static void -draw(cpSpace *space) +static void draw(cpSpace* space) { - cpSpaceEachBody(space, DrawDot, NULL); - -// ChipmunkDebugDrawCollisionPoints(space); + cpSpaceEachBody(space, DrawDot, NULL); + + // ChipmunkDebugDrawCollisionPoints(space); } -static cpShape * -make_ball(cpFloat x, cpFloat y) +static cpShape* make_ball(cpFloat x, cpFloat y) { - cpBody *body = cpBodyNew(1.0, INFINITY); - cpBodySetPosition(body, cpv(x, y)); - - cpShape *shape = cpCircleShapeNew(body, 0.95, cpvzero); - cpShapeSetElasticity(shape, 0.0); - cpShapeSetFriction(shape, 0.0); - - return shape; + cpBody* body = cpBodyNew(1.0, INFINITY); + cpBodySetPosition(body, cpv(x, y)); + + cpShape* shape = cpCircleShapeNew(body, 0.95, cpvzero); + cpShapeSetElasticity(shape, 0.0); + cpShapeSetFriction(shape, 0.0); + + return shape; } -static cpSpace * -init(void) +static cpSpace* init(void) { - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 1); - - // The space will contain a very large number of similary sized objects. - // This is the perfect candidate for using the spatial hash. - // Generally you will never need to do this. - cpSpaceUseSpatialHash(space, 2.0, 10000); - - bodyCount = 0; - - cpBody *body; - cpShape *shape; - - for(int y=0; yn) < 0){ - return cpArbiterIgnore(arb); - } - - return cpTrue; + CP_ARBITER_GET_SHAPES(arb, a, b); + OneWayPlatform* platform = (OneWayPlatform*)cpShapeGetUserData(a); + + if (cpvdot(cpArbiterGetNormal(arb), platform->n) < 0) + { + return cpArbiterIgnore(arb); + } + + return cpTrue; } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "One way platforms are trivial in Chipmunk using a very simple collision callback."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 10); - cpSpaceSetGravity(space, cpv(0, -100)); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(-320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320,-240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - // Add our one way segment - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-160,-100), cpv(160,-100), 10.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetCollisionType(shape, COLLISION_TYPE_ONE_WAY); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - // We'll use the data pointer for the OneWayPlatform struct - platformInstance.n = cpv(0, 1); // let objects pass upwards - cpShapeSetUserData(shape, &platformInstance); - - - // Add a ball to test it out - cpFloat radius = 15.0f; - body = cpSpaceAddBody(space, cpBodyNew(10.0f, cpMomentForCircle(10.0f, 0.0f, radius, cpvzero))); - cpBodySetPosition(body, cpv(0, -200)); - cpBodySetVelocity(body, cpv(0, 170)); - - shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.9f); - cpShapeSetCollisionType(shape, 2); - - cpCollisionHandler *handler = cpSpaceAddWildcardHandler(space, COLLISION_TYPE_ONE_WAY); - handler->preSolveFunc = PreSolve; - - return space; + ChipmunkDemoMessageString = "One way platforms are trivial in Chipmunk using a very simple collision callback."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -100)); + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // Add our one way segment + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-160, -100), cpv(160, -100), 10.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetCollisionType(shape, COLLISION_TYPE_ONE_WAY); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // We'll use the data pointer for the OneWayPlatform struct + platformInstance.n = cpv(0, 1); // let objects pass upwards + cpShapeSetUserData(shape, &platformInstance); + + // Add a ball to test it out + cpFloat radius = 15.0f; + body = cpSpaceAddBody(space, cpBodyNew(10.0f, cpMomentForCircle(10.0f, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpv(0, -200)); + cpBodySetVelocity(body, cpv(0, 170)); + + shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius, cpvzero)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.9f); + cpShapeSetCollisionType(shape, 2); + + cpCollisionHandler* handler = cpSpaceAddWildcardHandler(space, COLLISION_TYPE_ONE_WAY); + handler->preSolveFunc = PreSolve; + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo OneWay = { - "One Way Platforms", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "One Way Platforms", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Planet.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Planet.c index e169e184175f..cc7d4f8c6985 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Planet.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Planet.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,114 +18,105 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpBody *planetBody; +static cpBody* planetBody; static cpFloat gravityStrength = 5.0e6f; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static void -planetGravityVelocityFunc(cpBody *body, cpVect gravity, cpFloat damping, cpFloat dt) +static void planetGravityVelocityFunc(cpBody* body, cpVect gravity, cpFloat damping, cpFloat dt) { - // Gravitational acceleration is proportional to the inverse square of - // distance, and directed toward the origin. The central planet is assumed - // to be massive enough that it affects the satellites but not vice versa. - cpVect p = cpBodyGetPosition(body); - cpFloat sqdist = cpvlengthsq(p); - cpVect g = cpvmult(p, -gravityStrength / (sqdist * cpfsqrt(sqdist))); - - cpBodyUpdateVelocity(body, g, damping, dt); + // Gravitational acceleration is proportional to the inverse square of + // distance, and directed toward the origin. The central planet is assumed + // to be massive enough that it affects the satellites but not vice versa. + cpVect p = cpBodyGetPosition(body); + cpFloat sqdist = cpvlengthsq(p); + cpVect g = cpvmult(p, -gravityStrength / (sqdist * cpfsqrt(sqdist))); + + cpBodyUpdateVelocity(body, g, damping, dt); } -static cpVect -rand_pos(cpFloat radius) +static cpVect rand_pos(cpFloat radius) { - cpVect v; - do { - v = cpv(frand()*(640 - 2*radius) - (320 - radius), frand()*(480 - 2*radius) - (240 - radius)); - } while(cpvlength(v) < 85.0f); - - return v; + cpVect v; + do + { + v = cpv(frand() * (640 - 2 * radius) - (320 - radius), frand() * (480 - 2 * radius) - (240 - radius)); + } while (cpvlength(v) < 85.0f); + + return v; } -static void -add_box(cpSpace *space) +static void add_box(cpSpace* space) { - const cpFloat size = 10.0f; - const cpFloat mass = 1.0f; - - cpVect verts[] = { - cpv(-size,-size), - cpv(-size, size), - cpv( size, size), - cpv( size,-size), - }; - - cpFloat radius = cpvlength(cpv(size, size)); - cpVect pos = rand_pos(radius); - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 4, verts, cpvzero, 0.0f))); - cpBodySetVelocityUpdateFunc(body, planetGravityVelocityFunc); - cpBodySetPosition(body, pos); - - // Set the box's velocity to put it into a circular orbit from its - // starting position. - cpFloat r = cpvlength(pos); - cpFloat v = cpfsqrt(gravityStrength / r) / r; - cpBodySetVelocity(body, cpvmult(cpvperp(pos), v)); - - // Set the box's angular velocity to match its orbital period and - // align its initial angle with its position. - cpBodySetAngularVelocity(body, v); - cpBodySetAngle(body, cpfatan2(pos.y, pos.x)); - - cpShape *shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 4, verts, cpTransformIdentity, 0.0)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); + const cpFloat size = 10.0f; + const cpFloat mass = 1.0f; + + cpVect verts[] = { + cpv(-size, -size), + cpv(-size, size), + cpv(size, size), + cpv(size, -size), + }; + + cpFloat radius = cpvlength(cpv(size, size)); + cpVect pos = rand_pos(radius); + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForPoly(mass, 4, verts, cpvzero, 0.0f))); + cpBodySetVelocityUpdateFunc(body, planetGravityVelocityFunc); + cpBodySetPosition(body, pos); + + // Set the box's velocity to put it into a circular orbit from its + // starting position. + cpFloat r = cpvlength(pos); + cpFloat v = cpfsqrt(gravityStrength / r) / r; + cpBodySetVelocity(body, cpvmult(cpvperp(pos), v)); + + // Set the box's angular velocity to match its orbital period and + // align its initial angle with its position. + cpBodySetAngularVelocity(body, v); + cpBodySetAngle(body, cpfatan2(pos.y, pos.x)); + + cpShape* shape = cpSpaceAddShape(space, cpPolyShapeNew(body, 4, verts, cpTransformIdentity, 0.0)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); } -static cpSpace * -init(void) +static cpSpace* init(void) { - // Create a rouge body to control the planet manually. - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 20); - - planetBody = cpSpaceAddBody(space, cpBodyNewKinematic()); - cpBodySetAngularVelocity(planetBody, 0.2f); - - for(int i=0; i<30; i++){ - add_box(space); - } - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(planetBody, 70.0f, cpvzero)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - return space; + // Create a rouge body to control the planet manually. + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 20); + + planetBody = cpSpaceAddBody(space, cpBodyNewKinematic()); + cpBodySetAngularVelocity(planetBody, 0.2f); + + for (int i = 0; i < 30; i++) + { + add_box(space); + } + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(planetBody, 70.0f, cpvzero)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Planet = { - "Planet", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Planet", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Player.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Player.c index a1d9ddcbb764..0ed950dc8077 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Player.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Player.c @@ -25,153 +25,156 @@ #define PLAYER_VELOCITY 500.0 #define PLAYER_GROUND_ACCEL_TIME 0.1 -#define PLAYER_GROUND_ACCEL (PLAYER_VELOCITY / PLAYER_GROUND_ACCEL_TIME) +#define PLAYER_GROUND_ACCEL (PLAYER_VELOCITY / PLAYER_GROUND_ACCEL_TIME) #define PLAYER_AIR_ACCEL_TIME 0.25 -#define PLAYER_AIR_ACCEL (PLAYER_VELOCITY / PLAYER_AIR_ACCEL_TIME) +#define PLAYER_AIR_ACCEL (PLAYER_VELOCITY / PLAYER_AIR_ACCEL_TIME) -#define JUMP_HEIGHT 50.0 +#define JUMP_HEIGHT 50.0 #define JUMP_BOOST_HEIGHT 55.0 -#define FALL_VELOCITY 900.0 -#define GRAVITY 2000.0 +#define FALL_VELOCITY 900.0 +#define GRAVITY 2000.0 - -static cpBody* playerBody = NULL; +static cpBody* playerBody = NULL; static cpShape* playerShape = NULL; static cpFloat remainingBoost = 0; -static cpBool grounded = cpFalse; -static cpBool lastJumpState = cpFalse; +static cpBool grounded = cpFalse; +static cpBool lastJumpState = cpFalse; -static void SelectPlayerGroundNormal(cpBody* body, cpArbiter* arb, cpVect* groundNormal) { - cpVect n = cpvneg(cpArbiterGetNormal(arb)); +static void SelectPlayerGroundNormal(cpBody* body, cpArbiter* arb, cpVect* groundNormal) +{ + cpVect n = cpvneg(cpArbiterGetNormal(arb)); - if (n.y > groundNormal->y) { - (*groundNormal) = n; - } + if (n.y > groundNormal->y) + { + (*groundNormal) = n; + } } -static void playerUpdateVelocity(cpBody* body, cpVect gravity, cpFloat damping, cpFloat dt) { - int jumpState = (ChipmunkDemoKeyboard.y > 0.0f); - - // Grab the grounding normal from last frame - cpVect groundNormal = cpvzero; - cpBodyEachArbiter(playerBody, (cpBodyArbiterIteratorFunc)SelectPlayerGroundNormal, &groundNormal); +static void playerUpdateVelocity(cpBody* body, cpVect gravity, cpFloat damping, cpFloat dt) +{ + int jumpState = (ChipmunkDemoKeyboard.y > 0.0f); - grounded = (groundNormal.y > 0.0); - if (groundNormal.y < 0.0f) - remainingBoost = 0.0f; + // Grab the grounding normal from last frame + cpVect groundNormal = cpvzero; + cpBodyEachArbiter(playerBody, (cpBodyArbiterIteratorFunc)SelectPlayerGroundNormal, &groundNormal); - // Do a normal-ish update - cpBool boost = (jumpState && remainingBoost > 0.0f); - cpVect g = (boost ? cpvzero : gravity); - cpBodyUpdateVelocity(body, g, damping, dt); + grounded = (groundNormal.y > 0.0); + if (groundNormal.y < 0.0f) + remainingBoost = 0.0f; - // Target horizontal speed for air/ground control - cpFloat target_vx = PLAYER_VELOCITY * ChipmunkDemoKeyboard.x; + // Do a normal-ish update + cpBool boost = (jumpState && remainingBoost > 0.0f); + cpVect g = (boost ? cpvzero : gravity); + cpBodyUpdateVelocity(body, g, damping, dt); + // Target horizontal speed for air/ground control + cpFloat target_vx = PLAYER_VELOCITY * ChipmunkDemoKeyboard.x; - // Update the surface velocity and friction - // Note that the "feet" move in the opposite direction of the player. - cpVect surface_v = cpv(-target_vx, 0.0); - playerShape->surfaceV = surface_v; - playerShape->u = (grounded ? PLAYER_GROUND_ACCEL / GRAVITY : 0.0); + // Update the surface velocity and friction + // Note that the "feet" move in the opposite direction of the player. + cpVect surface_v = cpv(-target_vx, 0.0); + playerShape->surfaceV = surface_v; + playerShape->u = (grounded ? PLAYER_GROUND_ACCEL / GRAVITY : 0.0); - // Apply air control if not grounded - if (!grounded) { - // Smoothly accelerate the velocity - playerBody->v.x = cpflerpconst(playerBody->v.x, target_vx, PLAYER_AIR_ACCEL * dt); - } + // Apply air control if not grounded + if (!grounded) + { + // Smoothly accelerate the velocity + playerBody->v.x = cpflerpconst(playerBody->v.x, target_vx, PLAYER_AIR_ACCEL * dt); + } - body->v.y = cpfclamp(body->v.y, -FALL_VELOCITY, INFINITY); + body->v.y = cpfclamp(body->v.y, -FALL_VELOCITY, INFINITY); } -static void update(cpSpace* space, double dt) { - int jumpState = (ChipmunkDemoKeyboard.y > 0.0f); +static void update(cpSpace* space, double dt) +{ + int jumpState = (ChipmunkDemoKeyboard.y > 0.0f); - // If the jump key was just pressed this frame, jump! - if (jumpState && !lastJumpState && grounded) { - cpFloat jump_v = cpfsqrt(2.0 * JUMP_HEIGHT * GRAVITY); - playerBody->v = cpvadd(playerBody->v, cpv(0.0, jump_v)); + // If the jump key was just pressed this frame, jump! + if (jumpState && !lastJumpState && grounded) + { + cpFloat jump_v = cpfsqrt(2.0 * JUMP_HEIGHT * GRAVITY); + playerBody->v = cpvadd(playerBody->v, cpv(0.0, jump_v)); - remainingBoost = JUMP_BOOST_HEIGHT / jump_v; - } + remainingBoost = JUMP_BOOST_HEIGHT / jump_v; + } - // Step the space - cpSpaceStep(space, dt); + // Step the space + cpSpaceStep(space, dt); - remainingBoost -= dt; - lastJumpState = jumpState; + remainingBoost -= dt; + lastJumpState = jumpState; } -static cpSpace* init(void) { - cpSpace* space = cpSpaceNew(); - space->iterations = 10; - space->gravity = cpv(0, -GRAVITY); - // space->sleepTimeThreshold = 1000; - - cpBody* body, * staticBody = cpSpaceGetStaticBody(space); - cpShape* shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); - shape->e = 1.0f; - shape->u = 1.0f; - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); - shape->e = 1.0f; - shape->u = 1.0f; - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); - shape->e = 1.0f; - shape->u = 1.0f; - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 240), cpv(320, 240), 0.0f)); - shape->e = 1.0f; - shape->u = 1.0f; - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - // Set up the player - body = cpSpaceAddBody(space, cpBodyNew(1.0f, INFINITY)); - body->p = cpv(0, -200); - body->velocity_func = playerUpdateVelocity; - playerBody = body; - - shape = cpSpaceAddShape(space, cpBoxShapeNew2(body, cpBBNew(-15.0, -27.5, 15.0, 27.5), 1.0)); - // shape = cpSpaceAddShape(space, cpSegmentShapeNew(playerBody, cpvzero, cpv(0, radius), radius)); - shape->e = 0.0f; - shape->u = 0.0f; - shape->type = 1; - playerShape = shape; - - // Add some boxes to jump on - for (int i = 0; i < 6; i++) { - for (int j = 0; j < 3; j++) { - body = cpSpaceAddBody(space, cpBodyNew(4.0f, INFINITY)); - body->p = cpv(100 + j * 60, -200 + i * 60); - - shape = cpSpaceAddShape(space, cpBoxShapeNew(body, 50, 50, 0.0)); - shape->e = 0.0f; - shape->u = 0.7f; - } - } - - return space; +static cpSpace* init(void) +{ + cpSpace* space = cpSpaceNew(); + space->iterations = 10; + space->gravity = cpv(0, -GRAVITY); + // space->sleepTimeThreshold = 1000; + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + shape->e = 1.0f; + shape->u = 1.0f; + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + shape->e = 1.0f; + shape->u = 1.0f; + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + shape->e = 1.0f; + shape->u = 1.0f; + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 240), cpv(320, 240), 0.0f)); + shape->e = 1.0f; + shape->u = 1.0f; + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + // Set up the player + body = cpSpaceAddBody(space, cpBodyNew(1.0f, INFINITY)); + body->p = cpv(0, -200); + body->velocity_func = playerUpdateVelocity; + playerBody = body; + + shape = cpSpaceAddShape(space, cpBoxShapeNew2(body, cpBBNew(-15.0, -27.5, 15.0, 27.5), 1.0)); + // shape = cpSpaceAddShape(space, cpSegmentShapeNew(playerBody, cpvzero, cpv(0, radius), radius)); + shape->e = 0.0f; + shape->u = 0.0f; + shape->type = 1; + playerShape = shape; + + // Add some boxes to jump on + for (int i = 0; i < 6; i++) + { + for (int j = 0; j < 3; j++) + { + body = cpSpaceAddBody(space, cpBodyNew(4.0f, INFINITY)); + body->p = cpv(100 + j * 60, -200 + i * 60); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, 50, 50, 0.0)); + shape->e = 0.0f; + shape->u = 0.7f; + } + } + + return space; } -static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); +static void destroy(cpSpace* space) +{ + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo PlatformerPlayer = { - "Platformer Player Controls", - 1.0 / 180.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Platformer Player Controls", 1.0 / 180.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Plink.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Plink.c index ecf7ca2129a5..dec53e8bc4e4 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Plink.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Plink.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,115 +18,116 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpFloat pentagon_mass = 0.0f; +static cpFloat pentagon_mass = 0.0f; static cpFloat pentagon_moment = 0.0f; // Iterate over all of the bodies and reset the ones that have fallen offscreen. -static void -eachBody(cpBody *body, void *unused) +static void eachBody(cpBody* body, void* unused) { - cpVect pos = cpBodyGetPosition(body); - if(pos.y < -260){ - cpFloat x = rand()/(cpFloat)RAND_MAX*640 - 320; - cpBodySetPosition(body, cpv(x, 260)); - } + cpVect pos = cpBodyGetPosition(body); + if (pos.y < -260) + { + cpFloat x = rand() / (cpFloat)RAND_MAX * 640 - 320; + cpBodySetPosition(body, cpv(x, 260)); + } } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - if(ChipmunkDemoRightDown){ + if (ChipmunkDemoRightDown) + { ChipmunkDemoRightDown = cpFalse; - cpShape *nearest = cpSpacePointQueryNearest(space, ChipmunkDemoMouse, 0.0, GRAB_FILTER, NULL); - if(nearest){ - cpBody *body = cpShapeGetBody(nearest); - if(cpBodyGetType(body) == CP_BODY_TYPE_STATIC){ - cpBodySetType(body, CP_BODY_TYPE_DYNAMIC); - cpBodySetMass(body, pentagon_mass); - cpBodySetMoment(body, pentagon_moment); - } else if(cpBodyGetType(body) == CP_BODY_TYPE_DYNAMIC) { - cpBodySetType(body, CP_BODY_TYPE_STATIC); - } - } - } - - cpSpaceEachBody(space, &eachBody, NULL); - cpSpaceStep(space, dt); + cpShape* nearest = cpSpacePointQueryNearest(space, ChipmunkDemoMouse, 0.0, GRAB_FILTER, NULL); + if (nearest) + { + cpBody* body = cpShapeGetBody(nearest); + if (cpBodyGetType(body) == CP_BODY_TYPE_STATIC) + { + cpBodySetType(body, CP_BODY_TYPE_DYNAMIC); + cpBodySetMass(body, pentagon_mass); + cpBodySetMoment(body, pentagon_moment); + } + else if (cpBodyGetType(body) == CP_BODY_TYPE_DYNAMIC) + { + cpBodySetType(body, CP_BODY_TYPE_STATIC); + } + } + } + + cpSpaceEachBody(space, &eachBody, NULL); + cpSpaceStep(space, dt); } #define NUM_VERTS 5 -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Right click to make pentagons static/dynamic."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 5); - cpSpaceSetGravity(space, cpv(0, -100)); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Vertexes for a triangle shape. - cpVect tris[] = { - cpv(-15,-15), - cpv( 0, 10), - cpv( 15,-15), - }; - - // Create the static triangles. - for(int i=0; i<10; i++){ - for(int j=0; j<6; j++){ - cpFloat stagger = (j%2)*40; - cpVect offset = cpv(i*80 - 360 + stagger, j*70 - 200); - shape = cpSpaceAddShape(space, cpPolyShapeNew(staticBody, 3, tris, cpTransformTranslate(offset), 0.0)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - } - } - - // Create vertexes for a pentagon shape. - cpVect verts[NUM_VERTS]; - for(int i=0; i 320.0f){ - cpBodySetVelocity(ball, cpvzero); - cpBodySetPosition(ball, cpv(-224.0f, 200.0f)); - } - } + cpFloat coef = (2.0f + ChipmunkDemoKeyboard.y) / 3.0f; + cpFloat rate = ChipmunkDemoKeyboard.x * 30.0f * coef; + + cpSimpleMotorSetRate(motor, rate); + cpConstraintSetMaxForce(motor, rate ? 1000000.0f : 0.0f); + + cpSpaceStep(space, dt); + + for (int i = 0; i < numBalls; i++) + { + cpBody* ball = balls[i]; + cpVect pos = cpBodyGetPosition(ball); + + if (pos.x > 320.0f) + { + cpBodySetVelocity(ball, cpvzero); + cpBodySetPosition(ball, cpv(-224.0f, 200.0f)); + } + } } -static cpBody * -add_ball(cpSpace *space, cpVect pos) +static cpBody* add_ball(cpSpace* space, cpVect pos) { - cpBody *body = cpSpaceAddBody(space, cpBodyNew(1.0f, cpMomentForCircle(1.0f, 30, 0, cpvzero))); - cpBodySetPosition(body, pos); - - cpShape *shape = cpSpaceAddShape(space, cpCircleShapeNew(body, 30, cpvzero)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - - return body; + cpBody* body = cpSpaceAddBody(space, cpBodyNew(1.0f, cpMomentForCircle(1.0f, 30, 0, cpvzero))); + cpBodySetPosition(body, pos); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, 30, cpvzero)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.5f); + + return body; } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Use the arrow keys to control the machine."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetGravity(space, cpv(0, -600)); - - cpBody *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // beveling all of the line segments slightly helps prevent things from getting stuck on cracks - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-256,16), cpv(-256,300), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-256,16), cpv(-192,0), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-192,0), cpv(-192, -64), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-128,-64), cpv(-128,144), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-192,80), cpv(-192,176), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-192,176), cpv(-128,240), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-128,144), cpv(192,64), 2.0f)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpVect verts[] = { - cpv(-30,-80), - cpv(-30, 80), - cpv( 30, 64), - cpv( 30,-80), - }; - - cpBody *plunger = cpSpaceAddBody(space, cpBodyNew(1.0f, INFINITY)); - cpBodySetPosition(plunger, cpv(-160,-80)); - - shape = cpSpaceAddShape(space, cpPolyShapeNew(plunger, 4, verts, cpTransformIdentity, 0.0)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 0.5f); - cpShapeSetFilter(shape, cpShapeFilterNew(CP_NO_GROUP, 1, 1)); - - // add balls to hopper - for(int i=0; i> 16) & 0xFFFF) / (cpFloat) 0xFFFF)); + return cpv(cpflerp(border, 1.0f - border, (cpFloat)(h & 0xFFFF) / (cpFloat)0xFFFF), + cpflerp(border, 1.0f - border, (cpFloat)((h >> 16) & 0xFFFF) / (cpFloat)0xFFFF)); } -static cpVect WorleyPoint(int i, int j, struct WorleyContex* context) { +static cpVect WorleyPoint(int i, int j, struct WorleyContex* context) +{ cpFloat size = context->cellSize; int width = context->width; int height = context->height; @@ -56,18 +59,28 @@ static cpVect WorleyPoint(int i, int j, struct WorleyContex* context) { cpVect fv = HashVect(i, j, context->seed); return cpv(cpflerp(bb.l, bb.r, 0.5f) + size * (i + fv.x - width * 0.5f), - cpflerp(bb.b, bb.t, 0.5f) + size * (j + fv.y - height * 0.5f)); + cpflerp(bb.b, bb.t, 0.5f) + size * (j + fv.y - height * 0.5f)); } -static int ClipCell(cpShape* shape, cpVect center, int i, int j, struct WorleyContex* context, cpVect* verts, - cpVect* clipped, int count) { +static int ClipCell(cpShape* shape, + cpVect center, + int i, + int j, + struct WorleyContex* context, + cpVect* verts, + cpVect* clipped, + int count) +{ cpVect other = WorleyPoint(i, j, context); // printf(" other %dx%d: (% 5.2f, % 5.2f) ", i, j, other.x, other.y); - if (cpShapePointQuery(shape, other, NULL) > 0.0f) { + if (cpShapePointQuery(shape, other, NULL) > 0.0f) + { // printf("excluded\n"); memcpy(clipped, verts, count * sizeof(cpVect)); return count; - } else { + } + else + { // printf("clipped\n"); } @@ -75,11 +88,13 @@ static int ClipCell(cpShape* shape, cpVect center, int i, int j, struct WorleyCo cpFloat dist = cpvdot(n, cpvlerp(center, other, 0.5f)); int clipped_count = 0; - for (int j = 0, i = count - 1; j < count; i = j, j++) { + for (int j = 0, i = count - 1; j < count; i = j, j++) + { cpVect a = verts[i]; cpFloat a_dist = cpvdot(a, n) - dist; - if (a_dist <= 0.0) { + if (a_dist <= 0.0) + { clipped[clipped_count] = a; clipped_count++; } @@ -87,7 +102,8 @@ static int ClipCell(cpShape* shape, cpVect center, int i, int j, struct WorleyCo cpVect b = verts[j]; cpFloat b_dist = cpvdot(b, n) - dist; - if (a_dist * b_dist < 0.0f) { + if (a_dist * b_dist < 0.0f) + { cpFloat t = cpfabs(a_dist) / (cpfabs(a_dist) + cpfabs(b_dist)); clipped[clipped_count] = cpvlerp(a, b, t); @@ -98,25 +114,34 @@ static int ClipCell(cpShape* shape, cpVect center, int i, int j, struct WorleyCo return clipped_count; } -static void ShatterCell( - cpSpace* space, cpShape* shape, cpVect cell, int cell_i, int cell_j, struct WorleyContex* context) { +static void ShatterCell(cpSpace* space, + cpShape* shape, + cpVect cell, + int cell_i, + int cell_j, + struct WorleyContex* context) +{ // printf("cell %dx%d: (% 5.2f, % 5.2f)\n", cell_i, cell_j, cell.x, cell.y); cpBody* body = cpShapeGetBody(shape); - cpVect* ping = (cpVect*) alloca(MAX_VERTEXES_PER_VORONOI * sizeof(cpVect)); - cpVect* pong = (cpVect*) alloca(MAX_VERTEXES_PER_VORONOI * sizeof(cpVect)); + cpVect* ping = (cpVect*)alloca(MAX_VERTEXES_PER_VORONOI * sizeof(cpVect)); + cpVect* pong = (cpVect*)alloca(MAX_VERTEXES_PER_VORONOI * sizeof(cpVect)); int count = cpPolyShapeGetCount(shape); count = (count > MAX_VERTEXES_PER_VORONOI ? MAX_VERTEXES_PER_VORONOI : count); - for (int i = 0; i < count; i++) { + for (int i = 0; i < count; i++) + { ping[i] = cpBodyLocalToWorld(body, cpPolyShapeGetVert(shape, i)); } - for (int i = 0; i < context->width; i++) { - for (int j = 0; j < context->height; j++) { - if (!(i == cell_i && j == cell_j) && cpShapePointQuery(shape, cell, NULL) < 0.0f) { + for (int i = 0; i < context->width; i++) + { + for (int j = 0; j < context->height; j++) + { + if (!(i == cell_i && j == cell_j) && cpShapePointQuery(shape, cell, NULL) < 0.0f) + { count = ClipCell(shape, cell, i, j, context, ping, pong, count); memcpy(ping, pong, count * sizeof(cpVect)); } @@ -138,20 +163,24 @@ static void ShatterCell( cpShapeSetFriction(new_shape, cpShapeGetFriction(shape)); } -static void ShatterShape(cpSpace* space, cpShape* shape, cpFloat cellSize, cpVect focus) { +static void ShatterShape(cpSpace* space, cpShape* shape, cpFloat cellSize, cpVect focus) +{ cpSpaceRemoveShape(space, shape); cpSpaceRemoveBody(space, cpShapeGetBody(shape)); cpBB bb = cpShapeGetBB(shape); - int width = (int) ((bb.r - bb.l) / cellSize) + 1; - int height = (int) ((bb.t - bb.b) / cellSize) + 1; + int width = (int)((bb.r - bb.l) / cellSize) + 1; + int height = (int)((bb.t - bb.b) / cellSize) + 1; // printf("Splitting as %dx%d\n", width, height); struct WorleyContex context = {(uint32_t)rand(), cellSize, width, height, bb, focus}; - for (int i = 0; i < context.width; i++) { - for (int j = 0; j < context.height; j++) { + for (int i = 0; i < context.width; i++) + { + for (int j = 0; j < context.height; j++) + { cpVect cell = WorleyPoint(i, j, &context); - if (cpShapePointQuery(shape, cell, NULL) < 0.0f) { + if (cpShapePointQuery(shape, cell, NULL) < 0.0f) + { ShatterCell(space, shape, cell, i, j, &context); } } @@ -161,17 +190,23 @@ static void ShatterShape(cpSpace* space, cpShape* shape, cpFloat cellSize, cpVec cpShapeFree(shape); } -static void update(cpSpace* space, double dt) { +static void update(cpSpace* space, double dt) +{ cpSpaceStep(space, dt); - if (ChipmunkDemoRightDown) { + if (ChipmunkDemoRightDown) + { cpPointQueryInfo info; - if (cpSpacePointQueryNearest(space, ChipmunkDemoMouse, 0, GRAB_FILTER, &info)) { + if (cpSpacePointQueryNearest(space, ChipmunkDemoMouse, 0, GRAB_FILTER, &info)) + { cpBB bb = cpShapeGetBB(info.shape); cpFloat cell_size = cpfmax(bb.r - bb.l, bb.t - bb.b) / 5.0f; - if (cell_size > 5.0f) { - ShatterShape(space, (cpShape*) info.shape, cell_size, ChipmunkDemoMouse); - } else { + if (cell_size > 5.0f) + { + ShatterShape(space, (cpShape*)info.shape, cell_size, ChipmunkDemoMouse); + } + else + { // printf("Too small to splinter %f\n", cell_size); } } @@ -179,7 +214,8 @@ static void update(cpSpace* space, double dt) { } } -static cpSpace* init(void) { +static cpSpace* init(void) +{ ChipmunkDemoMessageString = "Right click something to shatter it."; cpSpace* space = cpSpaceNew(); @@ -210,16 +246,12 @@ static cpSpace* init(void) { return space; } -static void destroy(cpSpace* space) { +static void destroy(cpSpace* space) +{ ChipmunkDemoFreeSpaceChildren(space); cpSpaceFree(space); } ChipmunkDemo Shatter = { - "Shatter.", - 1.0f / 60.0f, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Shatter.", 1.0f / 60.0f, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Slice.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Slice.c index 069de159dc70..445452e17a6a 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Slice.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Slice.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,171 +18,171 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -#define DENSITY (1.0/10000.0) +#define DENSITY (1.0 / 10000.0) -static void -ClipPoly(cpSpace *space, cpShape *shape, cpVect n, cpFloat dist) +static void ClipPoly(cpSpace* space, cpShape* shape, cpVect n, cpFloat dist) { - cpBody *body = cpShapeGetBody(shape); - - int count = cpPolyShapeGetCount(shape); - int clippedCount = 0; - - cpVect *clipped = (cpVect *)alloca((count + 1)*sizeof(cpVect)); - - for(int i=0, j=count-1; ia; - cpVect b = context->b; - - // Clipping plane normal and distance. - cpVect n = cpvnormalize(cpvperp(cpvsub(b, a))); - cpFloat dist = cpvdot(a, n); - - ClipPoly(space, shape, n, dist); - ClipPoly(space, shape, cpvneg(n), -dist); - - cpBody *body = cpShapeGetBody(shape); - cpSpaceRemoveShape(space, shape); - cpSpaceRemoveBody(space, body); - cpShapeFree(shape); - cpBodyFree(body); + cpVect a = context->a; + cpVect b = context->b; + + // Clipping plane normal and distance. + cpVect n = cpvnormalize(cpvperp(cpvsub(b, a))); + cpFloat dist = cpvdot(a, n); + + ClipPoly(space, shape, n, dist); + ClipPoly(space, shape, cpvneg(n), -dist); + + cpBody* body = cpShapeGetBody(shape); + cpSpaceRemoveShape(space, shape); + cpSpaceRemoveBody(space, body); + cpShapeFree(shape); + cpBodyFree(body); } -static void -SliceQuery(cpShape *shape, cpVect point, cpVect normal, cpFloat alpha, struct SliceContext *context) +static void SliceQuery(cpShape* shape, cpVect point, cpVect normal, cpFloat alpha, struct SliceContext* context) { - cpVect a = context->a; - cpVect b = context->b; - - // Check that the slice was complete by checking that the endpoints aren't in the sliced shape. - if(cpShapePointQuery(shape, a, NULL) > 0.0f && cpShapePointQuery(shape, b, NULL) > 0.0f){ - // Can't modify the space during a query. - // Must make a post-step callback to do the actual slicing. - cpSpaceAddPostStepCallback(context->space, (cpPostStepFunc)SliceShapePostStep, shape, context); - } + cpVect a = context->a; + cpVect b = context->b; + + // Check that the slice was complete by checking that the endpoints aren't in the sliced shape. + if (cpShapePointQuery(shape, a, NULL) > 0.0f && cpShapePointQuery(shape, b, NULL) > 0.0f) + { + // Can't modify the space during a query. + // Must make a post-step callback to do the actual slicing. + cpSpaceAddPostStepCallback(context->space, (cpPostStepFunc)SliceShapePostStep, shape, context); + } } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); - - static cpBool lastClickState = cpFalse; - static cpVect sliceStart = {0.0, 0.0}; - - // Annoying state tracking code that you wouldn't need - // in a real event driven system. - if(ChipmunkDemoRightClick != lastClickState){ - if(ChipmunkDemoRightClick){ - // MouseDown - sliceStart = ChipmunkDemoMouse; - } else { - // MouseUp - struct SliceContext context = {sliceStart, ChipmunkDemoMouse, space}; - cpSpaceSegmentQuery(space, sliceStart, ChipmunkDemoMouse, 0.0, GRAB_FILTER, (cpSpaceSegmentQueryFunc)SliceQuery, &context); - } - - lastClickState = ChipmunkDemoRightClick; - } - - if(ChipmunkDemoRightClick){ - ChipmunkDebugDrawSegment(sliceStart, ChipmunkDemoMouse, RGBAColor(1, 0, 0, 1)); - } + cpSpaceStep(space, dt); + + static cpBool lastClickState = cpFalse; + static cpVect sliceStart = {0.0, 0.0}; + + // Annoying state tracking code that you wouldn't need + // in a real event driven system. + if (ChipmunkDemoRightClick != lastClickState) + { + if (ChipmunkDemoRightClick) + { + // MouseDown + sliceStart = ChipmunkDemoMouse; + } + else + { + // MouseUp + struct SliceContext context = {sliceStart, ChipmunkDemoMouse, space}; + cpSpaceSegmentQuery(space, sliceStart, ChipmunkDemoMouse, 0.0, GRAB_FILTER, + (cpSpaceSegmentQueryFunc)SliceQuery, &context); + } + + lastClickState = ChipmunkDemoRightClick; + } + + if (ChipmunkDemoRightClick) + { + ChipmunkDebugDrawSegment(sliceStart, ChipmunkDemoMouse, RGBAColor(1, 0, 0, 1)); + } } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Right click and drag to slice up the block."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 30); - cpSpaceSetGravity(space, cpv(0, -500)); - cpSpaceSetSleepTimeThreshold(space, 0.5f); - cpSpaceSetCollisionSlop(space, 0.5f); - - cpBody *body, *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-1000,-240), cpv(1000,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpFloat width = 200.0f; - cpFloat height = 300.0f; - cpFloat mass = width*height*DENSITY; - cpFloat moment = cpMomentForBox(mass, width, height); - - body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); - - shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); - cpShapeSetFriction(shape, 0.6f); - - return space; + ChipmunkDemoMessageString = "Right click and drag to slice up the block."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 30); + cpSpaceSetGravity(space, cpv(0, -500)); + cpSpaceSetSleepTimeThreshold(space, 0.5f); + cpSpaceSetCollisionSlop(space, 0.5f); + + cpBody *body, *staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-1000, -240), cpv(1000, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + cpFloat width = 200.0f; + cpFloat height = 300.0f; + cpFloat mass = width * height * DENSITY; + cpFloat moment = cpMomentForBox(mass, width, height); + + body = cpSpaceAddBody(space, cpBodyNew(mass, moment)); + + shape = cpSpaceAddShape(space, cpBoxShapeNew(body, width, height, 0.0)); + cpShapeSetFriction(shape, 0.6f); + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Slice = { - "Slice.", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Slice.", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Springies.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Springies.c index 8673e08fbee6..89fdfab17025 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Springies.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Springies.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,145 +18,135 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpFloat -springForce(cpConstraint *spring, cpFloat dist) +static cpFloat springForce(cpConstraint* spring, cpFloat dist) { - cpFloat clamp = 20.0f; - return cpfclamp(cpDampedSpringGetRestLength(spring) - dist, -clamp, clamp)*cpDampedSpringGetStiffness(spring); + cpFloat clamp = 20.0f; + return cpfclamp(cpDampedSpringGetRestLength(spring) - dist, -clamp, clamp) * cpDampedSpringGetStiffness(spring); } -static cpConstraint * -new_spring(cpBody *a, cpBody *b, cpVect anchorA, cpVect anchorB, cpFloat restLength, cpFloat stiff, cpFloat damp) +static cpConstraint* +new_spring(cpBody* a, cpBody* b, cpVect anchorA, cpVect anchorB, cpFloat restLength, cpFloat stiff, cpFloat damp) { - cpConstraint *spring = cpDampedSpringNew(a, b, anchorA, anchorB, restLength, stiff, damp); - cpDampedSpringSetSpringForceFunc(spring, springForce); - - return spring; + cpConstraint* spring = cpDampedSpringNew(a, b, anchorA, anchorB, restLength, stiff, damp); + cpDampedSpringSetSpringForceFunc(spring, springForce); + + return spring; } -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - cpSpaceStep(space, dt); + cpSpaceStep(space, dt); } -static cpBody * -add_bar(cpSpace *space, cpVect a, cpVect b, int group) +static cpBody* add_bar(cpSpace* space, cpVect a, cpVect b, int group) { - cpVect center = cpvmult(cpvadd(a, b), 1.0f/2.0f); - cpFloat length = cpvlength(cpvsub(b, a)); - cpFloat mass = length/160.0f; - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, mass*length*length/12.0f)); - cpBodySetPosition(body, center); - - cpShape *shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, cpvsub(a, center), cpvsub(b, center), 10.0f)); - cpShapeSetFilter(shape, cpShapeFilterNew(group, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - return body; + cpVect center = cpvmult(cpvadd(a, b), 1.0f / 2.0f); + cpFloat length = cpvlength(cpvsub(b, a)); + cpFloat mass = length / 160.0f; + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, mass * length * length / 12.0f)); + cpBodySetPosition(body, center); + + cpShape* shape = cpSpaceAddShape(space, cpSegmentShapeNew(body, cpvsub(a, center), cpvsub(b, center), 10.0f)); + cpShapeSetFilter(shape, cpShapeFilterNew(group, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + return body; } -static cpSpace * -init(void) +static cpSpace* init(void) { - cpSpace *space = cpSpaceNew(); - cpBody *staticBody = cpSpaceGetStaticBody(space); - - cpBody *body1 = add_bar(space, cpv(-240, 160), cpv(-160, 80), 1); - cpBody *body2 = add_bar(space, cpv(-160, 80), cpv( -80, 160), 1); - cpBody *body3 = add_bar(space, cpv( 0, 160), cpv( 80, 0), 0); - cpBody *body4 = add_bar(space, cpv( 160, 160), cpv( 240, 160), 0); - cpBody *body5 = add_bar(space, cpv(-240, 0), cpv(-160, -80), 2); - cpBody *body6 = add_bar(space, cpv(-160, -80), cpv( -80, 0), 2); - cpBody *body7 = add_bar(space, cpv( -80, 0), cpv( 0, 0), 2); - cpBody *body8 = add_bar(space, cpv( 0, -80), cpv( 80, -80), 0); - cpBody *body9 = add_bar(space, cpv( 240, 80), cpv( 160, 0), 3); - cpBody *body10 = add_bar(space, cpv( 160, 0), cpv( 240, -80), 3); - cpBody *body11 = add_bar(space, cpv(-240, -80), cpv(-160, -160), 4); - cpBody *body12 = add_bar(space, cpv(-160, -160), cpv( -80, -160), 4); - cpBody *body13 = add_bar(space, cpv( 0, -160), cpv( 80, -160), 0); - cpBody *body14 = add_bar(space, cpv( 160, -160), cpv( 240, -160), 0); - - cpSpaceAddConstraint(space, cpPivotJointNew2( body1, body2, cpv( 40,-40), cpv(-40,-40))); - cpSpaceAddConstraint(space, cpPivotJointNew2( body5, body6, cpv( 40,-40), cpv(-40,-40))); - cpSpaceAddConstraint(space, cpPivotJointNew2( body6, body7, cpv( 40, 40), cpv(-40, 0))); - cpSpaceAddConstraint(space, cpPivotJointNew2( body9, body10, cpv(-40,-40), cpv(-40, 40))); - cpSpaceAddConstraint(space, cpPivotJointNew2(body11, body12, cpv( 40,-40), cpv(-40, 0))); - - cpFloat stiff = 100.0f; - cpFloat damp = 0.5f; - cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-320, 240), cpv(-40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-320, 80), cpv(-40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-160, 240), cpv(-40, 40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body2, cpv(-160, 240), cpv( 40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body2, cpv( 0, 240), cpv( 40, 40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body3, cpv( 80, 240), cpv(-40, 80), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body4, cpv( 80, 240), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body4, cpv( 320, 240), cpv( 40, 0), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body5, cpv(-320, 80), cpv(-40, 40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body9, cpv( 320, 80), cpv( 40, 40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body10, cpv( 320, 0), cpv( 40,-40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body10, cpv( 320,-160), cpv( 40,-40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body11, cpv(-320,-160), cpv(-40, 40), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body12, cpv(-240,-240), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body12, cpv( 0,-240), cpv( 40, 0), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body13, cpv( 0,-240), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body13, cpv( 80,-240), cpv( 40, 0), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv( 80,-240), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv( 240,-240), cpv( 40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv( 320,-160), cpv( 40, 0), 0.0f, stiff, damp)); - - cpSpaceAddConstraint(space, new_spring( body1, body5, cpv( 40,-40), cpv(-40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body1, body6, cpv( 40,-40), cpv( 40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body2, body3, cpv( 40, 40), cpv(-40, 80), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body4, cpv(-40, 80), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body4, cpv( 40,-80), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body7, cpv( 40,-80), cpv( 40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body7, cpv(-40, 80), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body8, cpv( 40,-80), cpv( 40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body3, body9, cpv( 40,-80), cpv(-40,-40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body4, body9, cpv( 40, 0), cpv( 40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body5, body11, cpv(-40, 40), cpv(-40, 40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body5, body11, cpv( 40,-40), cpv( 40,-40), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body7, body8, cpv( 40, 0), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body8, body12, cpv(-40, 0), cpv( 40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body8, body13, cpv(-40, 0), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body8, body13, cpv( 40, 0), cpv( 40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring( body8, body14, cpv( 40, 0), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(body10, body14, cpv( 40,-40), cpv(-40, 0), 0.0f, stiff, damp)); - cpSpaceAddConstraint(space, new_spring(body10, body14, cpv( 40,-40), cpv(-40, 0), 0.0f, stiff, damp)); - - return space; + cpSpace* space = cpSpaceNew(); + cpBody* staticBody = cpSpaceGetStaticBody(space); + + cpBody* body1 = add_bar(space, cpv(-240, 160), cpv(-160, 80), 1); + cpBody* body2 = add_bar(space, cpv(-160, 80), cpv(-80, 160), 1); + cpBody* body3 = add_bar(space, cpv(0, 160), cpv(80, 0), 0); + cpBody* body4 = add_bar(space, cpv(160, 160), cpv(240, 160), 0); + cpBody* body5 = add_bar(space, cpv(-240, 0), cpv(-160, -80), 2); + cpBody* body6 = add_bar(space, cpv(-160, -80), cpv(-80, 0), 2); + cpBody* body7 = add_bar(space, cpv(-80, 0), cpv(0, 0), 2); + cpBody* body8 = add_bar(space, cpv(0, -80), cpv(80, -80), 0); + cpBody* body9 = add_bar(space, cpv(240, 80), cpv(160, 0), 3); + cpBody* body10 = add_bar(space, cpv(160, 0), cpv(240, -80), 3); + cpBody* body11 = add_bar(space, cpv(-240, -80), cpv(-160, -160), 4); + cpBody* body12 = add_bar(space, cpv(-160, -160), cpv(-80, -160), 4); + cpBody* body13 = add_bar(space, cpv(0, -160), cpv(80, -160), 0); + cpBody* body14 = add_bar(space, cpv(160, -160), cpv(240, -160), 0); + + cpSpaceAddConstraint(space, cpPivotJointNew2(body1, body2, cpv(40, -40), cpv(-40, -40))); + cpSpaceAddConstraint(space, cpPivotJointNew2(body5, body6, cpv(40, -40), cpv(-40, -40))); + cpSpaceAddConstraint(space, cpPivotJointNew2(body6, body7, cpv(40, 40), cpv(-40, 0))); + cpSpaceAddConstraint(space, cpPivotJointNew2(body9, body10, cpv(-40, -40), cpv(-40, 40))); + cpSpaceAddConstraint(space, cpPivotJointNew2(body11, body12, cpv(40, -40), cpv(-40, 0))); + + cpFloat stiff = 100.0f; + cpFloat damp = 0.5f; + cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-320, 240), cpv(-40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-320, 80), cpv(-40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body1, cpv(-160, 240), cpv(-40, 40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body2, cpv(-160, 240), cpv(40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body2, cpv(0, 240), cpv(40, 40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body3, cpv(80, 240), cpv(-40, 80), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body4, cpv(80, 240), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body4, cpv(320, 240), cpv(40, 0), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body5, cpv(-320, 80), cpv(-40, 40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body9, cpv(320, 80), cpv(40, 40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body10, cpv(320, 0), cpv(40, -40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body10, cpv(320, -160), cpv(40, -40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body11, cpv(-320, -160), cpv(-40, 40), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body12, cpv(-240, -240), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body12, cpv(0, -240), cpv(40, 0), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body13, cpv(0, -240), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body13, cpv(80, -240), cpv(40, 0), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv(80, -240), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv(240, -240), cpv(40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(staticBody, body14, cpv(320, -160), cpv(40, 0), 0.0f, stiff, damp)); + + cpSpaceAddConstraint(space, new_spring(body1, body5, cpv(40, -40), cpv(-40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body1, body6, cpv(40, -40), cpv(40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body2, body3, cpv(40, 40), cpv(-40, 80), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body4, cpv(-40, 80), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body4, cpv(40, -80), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body7, cpv(40, -80), cpv(40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body7, cpv(-40, 80), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body8, cpv(40, -80), cpv(40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body3, body9, cpv(40, -80), cpv(-40, -40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body4, body9, cpv(40, 0), cpv(40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body5, body11, cpv(-40, 40), cpv(-40, 40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body5, body11, cpv(40, -40), cpv(40, -40), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body7, body8, cpv(40, 0), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body8, body12, cpv(-40, 0), cpv(40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body8, body13, cpv(-40, 0), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body8, body13, cpv(40, 0), cpv(40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body8, body14, cpv(40, 0), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body10, body14, cpv(40, -40), cpv(-40, 0), 0.0f, stiff, damp)); + cpSpaceAddConstraint(space, new_spring(body10, body14, cpv(40, -40), cpv(-40, 0), 0.0f, stiff, damp)); + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Springies = { - "Springies", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Springies", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Sticky.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Sticky.c index 29924d19156e..f7545afdbf17 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Sticky.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Sticky.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,180 +18,173 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -enum { - COLLISION_TYPE_STICKY = 1, +enum +{ + COLLISION_TYPE_STICKY = 1, }; #define STICK_SENSOR_THICKNESS 2.5f -static void -PostStepAddJoint(cpSpace *space, void *key, void *data) +static void PostStepAddJoint(cpSpace* space, void* key, void* data) { -// printf("Adding joint for %p\n", data); - - cpConstraint *joint = (cpConstraint *)key; - cpSpaceAddConstraint(space, joint); + // printf("Adding joint for %p\n", data); + + cpConstraint* joint = (cpConstraint*)key; + cpSpaceAddConstraint(space, joint); } -static cpBool -StickyPreSolve(cpArbiter *arb, cpSpace *space, void *data) +static cpBool StickyPreSolve(cpArbiter* arb, cpSpace* space, void* data) { - // We want to fudge the collisions a bit to allow shapes to overlap more. - // This simulates their squishy sticky surface, and more importantly - // keeps them from separating and destroying the joint. - - // Track the deepest collision point and use that to determine if a rigid collision should occur. - cpFloat deepest = INFINITY; - - // Grab the contact set and iterate over them. - cpContactPointSet contacts = cpArbiterGetContactPointSet(arb); - for(int i=0; ipreSolveFunc = StickyPreSolve; - handler->separateFunc = StickySeparate; - - return space; + ChipmunkDemoMessageString = "Sticky collisions using the cpArbiter data pointer."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 10); + cpSpaceSetGravity(space, cpv(0, -1000)); + cpSpaceSetCollisionSlop(space, 2.0); + + cpBody* staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-340, -260), cpv(-340, 260), 20.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(340, -260), cpv(340, 260), 20.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-340, -260), cpv(340, -260), 20.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-340, 260), cpv(340, 260), 20.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + for (int i = 0; i < 200; i++) + { + cpFloat mass = 0.15f; + cpFloat radius = 10.0f; + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForCircle(mass, 0.0f, radius, cpvzero))); + cpBodySetPosition(body, cpv(cpflerp(-150.0f, 150.0f, frand()), cpflerp(-150.0f, 150.0f, frand()))); + + cpShape* shape = cpSpaceAddShape(space, cpCircleShapeNew(body, radius + STICK_SENSOR_THICKNESS, cpvzero)); + cpShapeSetFriction(shape, 0.9f); + cpShapeSetCollisionType(shape, COLLISION_TYPE_STICKY); + } + + cpCollisionHandler* handler = cpSpaceAddWildcardHandler(space, COLLISION_TYPE_STICKY); + handler->preSolveFunc = StickyPreSolve; + handler->separateFunc = StickySeparate; + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Sticky = { - "Sticky Surfaces", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Sticky Surfaces", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Tank.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Tank.c index 249828966a29..3b5d1d41b417 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Tank.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/Tank.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -18,119 +18,115 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" static cpBody *tankBody, *tankControlBody; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { - // turn the control body based on the angle relative to the actual body - cpVect mouseDelta = cpvsub(ChipmunkDemoMouse, cpBodyGetPosition(tankBody)); - cpFloat turn = cpvtoangle(cpvunrotate(cpBodyGetRotation(tankBody), mouseDelta)); - cpBodySetAngle(tankControlBody, cpBodyGetAngle(tankBody) - turn); - - // drive the tank towards the mouse - if(cpvnear(ChipmunkDemoMouse, cpBodyGetPosition(tankBody), 30.0)){ - cpBodySetVelocity(tankControlBody, cpvzero); // stop - } else { - cpFloat direction = (cpvdot(mouseDelta, cpBodyGetRotation(tankBody)) > 0.0 ? 1.0 : -1.0); - cpBodySetVelocity(tankControlBody, cpvrotate(cpBodyGetRotation(tankBody), cpv(30.0f*direction, 0.0f))); - } - - cpSpaceStep(space, dt); + // turn the control body based on the angle relative to the actual body + cpVect mouseDelta = cpvsub(ChipmunkDemoMouse, cpBodyGetPosition(tankBody)); + cpFloat turn = cpvtoangle(cpvunrotate(cpBodyGetRotation(tankBody), mouseDelta)); + cpBodySetAngle(tankControlBody, cpBodyGetAngle(tankBody) - turn); + + // drive the tank towards the mouse + if (cpvnear(ChipmunkDemoMouse, cpBodyGetPosition(tankBody), 30.0)) + { + cpBodySetVelocity(tankControlBody, cpvzero); // stop + } + else + { + cpFloat direction = (cpvdot(mouseDelta, cpBodyGetRotation(tankBody)) > 0.0 ? 1.0 : -1.0); + cpBodySetVelocity(tankControlBody, cpvrotate(cpBodyGetRotation(tankBody), cpv(30.0f * direction, 0.0f))); + } + + cpSpaceStep(space, dt); } -static cpBody * -add_box(cpSpace *space, cpFloat size, cpFloat mass) +static cpBody* add_box(cpSpace* space, cpFloat size, cpFloat mass) { - cpFloat radius = cpvlength(cpv(size, size)); - - cpBody *body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, size, size))); - cpBodySetPosition(body, cpv(frand()*(640 - 2*radius) - (320 - radius), frand()*(480 - 2*radius) - (240 - radius))); - - cpShape *shape = cpSpaceAddShape(space, cpBoxShapeNew(body, size, size, 0.0)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 0.7f); - - return body; + cpFloat radius = cpvlength(cpv(size, size)); + + cpBody* body = cpSpaceAddBody(space, cpBodyNew(mass, cpMomentForBox(mass, size, size))); + cpBodySetPosition( + body, cpv(frand() * (640 - 2 * radius) - (320 - radius), frand() * (480 - 2 * radius) - (240 - radius))); + + cpShape* shape = cpSpaceAddShape(space, cpBoxShapeNew(body, size, size, 0.0)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 0.7f); + + return body; } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Use the mouse to drive the tank, it will follow the cursor."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 10); - cpSpaceSetSleepTimeThreshold(space, 0.5f); - - cpBody *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(-320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320,-240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - for(int i=0; i<50; i++){ - cpBody *body = add_box(space, 20, 1); - - cpConstraint *pivot = cpSpaceAddConstraint(space, cpPivotJointNew2(staticBody, body, cpvzero, cpvzero)); - cpConstraintSetMaxBias(pivot, 0); // disable joint correction - cpConstraintSetMaxForce(pivot, 1000.0f); // emulate linear friction - - cpConstraint *gear = cpSpaceAddConstraint(space, cpGearJointNew(staticBody, body, 0.0f, 1.0f)); - cpConstraintSetMaxBias(gear, 0); // disable joint correction - cpConstraintSetMaxForce(gear, 5000.0f); // emulate angular friction - } - - // We joint the tank to the control body and control the tank indirectly by modifying the control body. - tankControlBody = cpSpaceAddBody(space, cpBodyNewKinematic()); - tankBody = add_box(space, 30, 10); - - cpConstraint *pivot = cpSpaceAddConstraint(space, cpPivotJointNew2(tankControlBody, tankBody, cpvzero, cpvzero)); - cpConstraintSetMaxBias(pivot, 0); // disable joint correction - cpConstraintSetMaxForce(pivot, 10000.0f); // emulate linear friction - - cpConstraint *gear = cpSpaceAddConstraint(space, cpGearJointNew(tankControlBody, tankBody, 0.0f, 1.0f)); - cpConstraintSetErrorBias(gear, 0); // attempt to fully correct the joint each step - cpConstraintSetMaxBias(gear, 1.2f); // but limit it's angular correction rate - cpConstraintSetMaxForce(gear, 50000.0f); // emulate angular friction - - return space; + ChipmunkDemoMessageString = "Use the mouse to drive the tank, it will follow the cursor."; + + cpSpace* space = cpSpaceNew(); + cpSpaceSetIterations(space, 10); + cpSpaceSetSleepTimeThreshold(space, 0.5f); + + cpBody* staticBody = cpSpaceGetStaticBody(space); + cpShape* shape; + + // Create segments around the edge of the screen. + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(-320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320, -240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, -240), cpv(320, -240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320, 240), cpv(320, 240), 0.0f)); + cpShapeSetElasticity(shape, 1.0f); + cpShapeSetFriction(shape, 1.0f); + cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); + + for (int i = 0; i < 50; i++) + { + cpBody* body = add_box(space, 20, 1); + + cpConstraint* pivot = cpSpaceAddConstraint(space, cpPivotJointNew2(staticBody, body, cpvzero, cpvzero)); + cpConstraintSetMaxBias(pivot, 0); // disable joint correction + cpConstraintSetMaxForce(pivot, 1000.0f); // emulate linear friction + + cpConstraint* gear = cpSpaceAddConstraint(space, cpGearJointNew(staticBody, body, 0.0f, 1.0f)); + cpConstraintSetMaxBias(gear, 0); // disable joint correction + cpConstraintSetMaxForce(gear, 5000.0f); // emulate angular friction + } + + // We joint the tank to the control body and control the tank indirectly by modifying the control body. + tankControlBody = cpSpaceAddBody(space, cpBodyNewKinematic()); + tankBody = add_box(space, 30, 10); + + cpConstraint* pivot = cpSpaceAddConstraint(space, cpPivotJointNew2(tankControlBody, tankBody, cpvzero, cpvzero)); + cpConstraintSetMaxBias(pivot, 0); // disable joint correction + cpConstraintSetMaxForce(pivot, 10000.0f); // emulate linear friction + + cpConstraint* gear = cpSpaceAddConstraint(space, cpGearJointNew(tankControlBody, tankBody, 0.0f, 1.0f)); + cpConstraintSetErrorBias(gear, 0); // attempt to fully correct the joint each step + cpConstraintSetMaxBias(gear, 1.2f); // but limit it's angular correction rate + cpConstraintSetMaxForce(gear, 50000.0f); // emulate angular friction + + return space; } -static void -destroy(cpSpace *space) +static void destroy(cpSpace* space) { - ChipmunkDemoFreeSpaceChildren(space); - cpSpaceFree(space); + ChipmunkDemoFreeSpaceChildren(space); + cpSpaceFree(space); } ChipmunkDemo Tank = { - "Tank", - 1.0/60.0, - init, - update, - ChipmunkDemoDefaultDrawImpl, - destroy, + "Tank", 1.0 / 60.0, init, update, ChipmunkDemoDefaultDrawImpl, destroy, }; diff --git a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/TheoJansen.c b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/TheoJansen.c index 262dedbcd1f1..7888cf861cab 100644 --- a/tests/cpp-tests/Classes/ChipmunkTestBed/demo/TheoJansen.c +++ b/tests/cpp-tests/Classes/ChipmunkTestBed/demo/TheoJansen.c @@ -1,15 +1,15 @@ /* Copyright (c) 2007 Scott Lembcke - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,145 +24,140 @@ * the mechanism that Theo Jansen uses in his kinetic sculptures. Brilliant. * Read more here: http://en.wikipedia.org/wiki/Theo_Jansen */ - + #include "chipmunk/chipmunk.h" #include "ChipmunkDemo.h" -static cpConstraint *motor; +static cpConstraint* motor; -static void -update(cpSpace *space, double dt) +static void update(cpSpace* space, double dt) { cpFloat coef = (2.0f + ChipmunkDemoKeyboard.y) / 3.0f; cpFloat rate = ChipmunkDemoKeyboard.x * 10.0f * coef; - cpSimpleMotorSetRate(motor, rate); - cpConstraintSetMaxForce(motor, (rate) ? 100000.0f : 0.0f); - - cpSpaceStep(space, dt); + cpSimpleMotorSetRate(motor, rate); + cpConstraintSetMaxForce(motor, (rate) ? 100000.0f : 0.0f); + + cpSpaceStep(space, dt); } static cpFloat seg_radius = 3.0f; -static void -make_leg(cpSpace *space, cpFloat side, cpFloat offset, cpBody *chassis, cpBody *crank, cpVect anchor) +static void make_leg(cpSpace* space, cpFloat side, cpFloat offset, cpBody* chassis, cpBody* crank, cpVect anchor) { - cpVect a, b; - cpShape *shape; - - cpFloat leg_mass = 1.0f; - - // make leg - a = cpvzero, b = cpv(0.0f, side); - cpBody *upper_leg = cpSpaceAddBody(space, cpBodyNew(leg_mass, cpMomentForSegment(leg_mass, a, b, 0.0f))); - cpBodySetPosition(upper_leg, cpv(offset, 0.0f)); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(upper_leg, a, b, seg_radius)); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - cpSpaceAddConstraint(space, cpPivotJointNew2(chassis, upper_leg, cpv(offset, 0.0f), cpvzero)); - - // lower leg - a = cpvzero, b = cpv(0.0f, -1.0f*side); - cpBody *lower_leg = cpSpaceAddBody(space, cpBodyNew(leg_mass, cpMomentForSegment(leg_mass, a, b, 0.0f))); - cpBodySetPosition(lower_leg, cpv(offset, -side)); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(lower_leg, a, b, seg_radius)); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - shape = cpSpaceAddShape(space, cpCircleShapeNew(lower_leg, seg_radius*2.0f, b)); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - cpShapeSetElasticity(shape, 0.0f); - cpShapeSetFriction(shape, 1.0f); - - cpSpaceAddConstraint(space, cpPinJointNew(chassis, lower_leg, cpv(offset, 0.0f), cpvzero)); - - cpSpaceAddConstraint(space, cpGearJointNew(upper_leg, lower_leg, 0.0f, 1.0f)); - - cpConstraint *constraint; - cpFloat diag = cpfsqrt(side*side + offset*offset); - - constraint = cpSpaceAddConstraint(space, cpPinJointNew(crank, upper_leg, anchor, cpv(0.0f, side))); - cpPinJointSetDist(constraint, diag); - - constraint = cpSpaceAddConstraint(space, cpPinJointNew(crank, lower_leg, anchor, cpvzero)); - cpPinJointSetDist(constraint, diag); + cpVect a, b; + cpShape* shape; + + cpFloat leg_mass = 1.0f; + + // make leg + a = cpvzero, b = cpv(0.0f, side); + cpBody* upper_leg = cpSpaceAddBody(space, cpBodyNew(leg_mass, cpMomentForSegment(leg_mass, a, b, 0.0f))); + cpBodySetPosition(upper_leg, cpv(offset, 0.0f)); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(upper_leg, a, b, seg_radius)); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + cpSpaceAddConstraint(space, cpPivotJointNew2(chassis, upper_leg, cpv(offset, 0.0f), cpvzero)); + + // lower leg + a = cpvzero, b = cpv(0.0f, -1.0f * side); + cpBody* lower_leg = cpSpaceAddBody(space, cpBodyNew(leg_mass, cpMomentForSegment(leg_mass, a, b, 0.0f))); + cpBodySetPosition(lower_leg, cpv(offset, -side)); + + shape = cpSpaceAddShape(space, cpSegmentShapeNew(lower_leg, a, b, seg_radius)); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + + shape = cpSpaceAddShape(space, cpCircleShapeNew(lower_leg, seg_radius * 2.0f, b)); + cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); + cpShapeSetElasticity(shape, 0.0f); + cpShapeSetFriction(shape, 1.0f); + + cpSpaceAddConstraint(space, cpPinJointNew(chassis, lower_leg, cpv(offset, 0.0f), cpvzero)); + + cpSpaceAddConstraint(space, cpGearJointNew(upper_leg, lower_leg, 0.0f, 1.0f)); + + cpConstraint* constraint; + cpFloat diag = cpfsqrt(side * side + offset * offset); + + constraint = cpSpaceAddConstraint(space, cpPinJointNew(crank, upper_leg, anchor, cpv(0.0f, side))); + cpPinJointSetDist(constraint, diag); + + constraint = cpSpaceAddConstraint(space, cpPinJointNew(crank, lower_leg, anchor, cpvzero)); + cpPinJointSetDist(constraint, diag); } -static cpSpace * -init(void) +static cpSpace* init(void) { - ChipmunkDemoMessageString = "Use the arrow keys to control the machine."; - - cpSpace *space = cpSpaceNew(); - cpSpaceSetIterations(space, 20); - cpSpaceSetGravity(space, cpv(0,-500)); - - cpBody *staticBody = cpSpaceGetStaticBody(space); - cpShape *shape; - cpVect a, b; - - // Create segments around the edge of the screen. - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(-320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(320,-240), cpv(320,240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(staticBody, cpv(-320,-240), cpv(320,-240), 0.0f)); - cpShapeSetElasticity(shape, 1.0f); - cpShapeSetFriction(shape, 1.0f); - cpShapeSetFilter(shape, NOT_GRABBABLE_FILTER); - - cpFloat offset = 30.0f; - - // make chassis - cpFloat chassis_mass = 2.0f; - a = cpv(-offset, 0.0f), b = cpv(offset, 0.0f); - cpBody *chassis = cpSpaceAddBody(space, cpBodyNew(chassis_mass, cpMomentForSegment(chassis_mass, a, b, 0.0f))); - - shape = cpSpaceAddShape(space, cpSegmentShapeNew(chassis, a, b, seg_radius)); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - // make crank - cpFloat crank_mass = 1.0f; - cpFloat crank_radius = 13.0f; - cpBody *crank = cpSpaceAddBody(space, cpBodyNew(crank_mass, cpMomentForCircle(crank_mass, crank_radius, 0.0f, cpvzero))); - - shape = cpSpaceAddShape(space, cpCircleShapeNew(crank, crank_radius, cpvzero)); - cpShapeSetFilter(shape, cpShapeFilterNew(1, CP_ALL_CATEGORIES, CP_ALL_CATEGORIES)); - - cpSpaceAddConstraint(space, cpPivotJointNew2(chassis, crank, cpvzero, cpvzero)); - - cpFloat side = 30.0f; - - int num_legs = 2; - for(int i=0; ionTouchBegan = CC_CALLBACK_2(ClickAndMoveTestCase::onTouchBegan, this); listener->onTouchEnded = CC_CALLBACK_2(ClickAndMoveTestCase::onTouchEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + auto sprite = Sprite::create(s_pathGrossini); - - auto layer = LayerColor::create(Color4B(255,255,0,255)); + + auto layer = LayerColor::create(Color4B(255, 255, 0, 255)); addChild(layer, -1); - + addChild(sprite, 0, kTagSprite); - sprite->setPosition(20,150); - - sprite->runAction( JumpTo::create(4, Vec2(300,48), 100, 4) ); - - layer->runAction( RepeatForever::create( - Sequence::create( - FadeIn::create(1), - FadeOut::create(1), - nullptr) - )); + sprite->setPosition(20, 150); + + sprite->runAction(JumpTo::create(4, Vec2(300, 48), 100, 4)); + + layer->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1), FadeOut::create(1), nullptr))); } -bool ClickAndMoveTestCase::onTouchBegan(Touch* touch, Event *event) +bool ClickAndMoveTestCase::onTouchBegan(Touch* touch, Event* event) { return true; } -void ClickAndMoveTestCase::onTouchEnded(Touch* touch, Event *event) +void ClickAndMoveTestCase::onTouchEnded(Touch* touch, Event* event) { auto location = touch->getLocation(); auto s = getChildByTag(kTagSprite); s->stopAllActions(); - s->runAction( MoveTo::create(1, Vec2(location.x, location.y) ) ); - float o = location.x - s->getPosition().x; - float a = location.y - s->getPosition().y; - float at = (float) CC_RADIANS_TO_DEGREES( atanf( o/a) ); - - if( a < 0 ) + s->runAction(MoveTo::create(1, Vec2(location.x, location.y))); + float o = location.x - s->getPosition().x; + float a = location.y - s->getPosition().y; + float at = (float)CC_RADIANS_TO_DEGREES(atanf(o / a)); + + if (a < 0) { - if( o < 0 ) + if (o < 0) at = 180 + fabs(at); else - at = 180 - fabs(at); + at = 180 - fabs(at); } - - s->runAction( RotateTo::create(1, at) ); + + s->runAction(RotateTo::create(1, at)); } diff --git a/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.h b/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.h index e69bdd723cd5..f11276c7876b 100644 --- a/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.h +++ b/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp index 1621f3927add..3aaa08dae4bb 100644 --- a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp +++ b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,7 +24,7 @@ // // ClippingNodeTest -// +// // // by Pierre-David Bélanger // @@ -37,12 +37,13 @@ USING_NS_CC; -enum { - kTagTitleLabel = 1, - kTagSubtitleLabel = 2, - kTagStencilNode = 100, - kTagClipperNode = 101, - kTagContentNode = 102, +enum +{ + kTagTitleLabel = 1, + kTagSubtitleLabel = 2, + kTagStencilNode = 100, + kTagClipperNode = 101, + kTagContentNode = 102, }; ClippingNodeTests::ClippingNodeTests() @@ -71,62 +72,59 @@ ClippingNodeTests::ClippingNodeTests() bool BaseClippingNodeTest::init() { - if (TestCase::init()) { - + if (TestCase::init()) + { + auto background = Sprite::create(s_back3); - background->setAnchorPoint( Vec2::ZERO ); - background->setPosition( Vec2::ZERO ); + background->setAnchorPoint(Vec2::ZERO); + background->setPosition(Vec2::ZERO); this->addChild(background, -1); this->setup(); return true; - } - return false; + } + return false; } BaseClippingNodeTest::~BaseClippingNodeTest() { - Director::getInstance()->getTextureCache()->removeUnusedTextures(); + Director::getInstance()->getTextureCache()->removeUnusedTextures(); } std::string BaseClippingNodeTest::title() const { - return "Clipping Demo"; -} - -void BaseClippingNodeTest::setup() -{ - + return "Clipping Demo"; } +void BaseClippingNodeTest::setup() {} // BasicTest std::string BasicTest::title() const { - return "Basic Test"; + return "Basic Test"; } std::string BasicTest::subtitle() const { - return ""; + return ""; } void BasicTest::setup() { auto s = Director::getInstance()->getWinSize(); - + auto stencil = this->stencil(); - stencil->setTag( kTagStencilNode ); + stencil->setTag(kTagStencilNode); stencil->setPosition(50, 50); - + auto clipper = this->clipper(); - clipper->setTag( kTagClipperNode ); + clipper->setTag(kTagClipperNode); clipper->setAnchorPoint(Vec2(0.5f, 0.5f)); clipper->setPosition(s.width / 2 - 50, s.height / 2 - 50); clipper->setStencil(stencil); this->addChild(clipper); - + auto content = this->content(); content->setPosition(50, 50); clipper->addChild(content); @@ -159,7 +157,7 @@ DrawNode* BasicTest::shape() Sprite* BasicTest::grossini() { auto grossini = Sprite::create(s_pathGrossini); - grossini->setScale( 1.5 ); + grossini->setScale(1.5); return grossini; } @@ -178,17 +176,16 @@ Node* BasicTest::content() return nullptr; } - // ShapeTest std::string ShapeTest::title() const { - return "Shape Basic Test"; + return "Shape Basic Test"; } std::string ShapeTest::subtitle() const { - return "A DrawNode as stencil and Sprite as content"; + return "A DrawNode as stencil and Sprite as content"; } Node* ShapeTest::stencil() @@ -205,17 +202,16 @@ Node* ShapeTest::content() return node; } - // ShapeInvertedTest std::string ShapeInvertedTest::title() const { - return "Shape Inverted Basic Test"; + return "Shape Inverted Basic Test"; } std::string ShapeInvertedTest::subtitle() const { - return "A DrawNode as stencil and Sprite as content, inverted"; + return "A DrawNode as stencil and Sprite as content, inverted"; } ClippingNode* ShapeInvertedTest::clipper() @@ -229,12 +225,12 @@ ClippingNode* ShapeInvertedTest::clipper() std::string SpriteTest::title() const { - return "Sprite Basic Test"; + return "Sprite Basic Test"; } std::string SpriteTest::subtitle() const { - return "A Sprite as stencil and DrawNode as content"; + return "A Sprite as stencil and DrawNode as content"; } Node* SpriteTest::stencil() @@ -262,12 +258,12 @@ Node* SpriteTest::content() std::string SpriteNoAlphaTest::title() const { - return "Sprite No Alpha Basic Test"; + return "Sprite No Alpha Basic Test"; } std::string SpriteNoAlphaTest::subtitle() const { - return "A Sprite as stencil and DrawNode as content, no alpha"; + return "A Sprite as stencil and DrawNode as content, no alpha"; } ClippingNode* SpriteNoAlphaTest::clipper() @@ -281,12 +277,12 @@ ClippingNode* SpriteNoAlphaTest::clipper() std::string SpriteInvertedTest::title() const { - return "Sprite Inverted Basic Test"; + return "Sprite Inverted Basic Test"; } std::string SpriteInvertedTest::subtitle() const { - return "A Sprite as stencil and DrawNode as content, inverted"; + return "A Sprite as stencil and DrawNode as content, inverted"; } ClippingNode* SpriteInvertedTest::clipper() @@ -301,22 +297,23 @@ ClippingNode* SpriteInvertedTest::clipper() std::string NestedTest::title() const { - return "Nested Test"; + return "Nested Test"; } std::string NestedTest::subtitle() const { - return "Nest 9 Clipping Nodes, max is usually 8"; + return "Nest 9 Clipping Nodes, max is usually 8"; } void NestedTest::setup() { static int depth = 9; - + Node* parent = this; - - for (int i = 0; i < depth; i++) { - + + for (int i = 0; i < depth; i++) + { + int size = 225 - i * (225 / (depth * 2)); auto clipper = ClippingNode::create(); @@ -326,20 +323,19 @@ void NestedTest::setup() clipper->setAlphaThreshold(0.05f); clipper->runAction(RepeatForever::create(RotateBy::create(i % 3 ? 1.33f : 1.66f, i % 2 ? 90.0f : -90.0f))); parent->addChild(clipper); - + auto stencil = Sprite::create(s_pathGrossini); - stencil->setScale( 2.5f - (i * (2.5f / depth)) ); - stencil->setAnchorPoint( Vec2(0.5f, 0.5f) ); + stencil->setScale(2.5f - (i * (2.5f / depth))); + stencil->setAnchorPoint(Vec2(0.5f, 0.5f)); stencil->setPosition(clipper->getContentSize().width / 2, clipper->getContentSize().height / 2); stencil->setVisible(false); stencil->runAction(Sequence::createWithTwoActions(DelayTime::create(i), Show::create())); clipper->setStencil(stencil); clipper->addChild(stencil); - + parent = clipper; } - } // HoleDemo @@ -353,12 +349,12 @@ HoleDemo::~HoleDemo() std::string HoleDemo::title() const { - return "Hole Demo"; + return "Hole Demo"; } std::string HoleDemo::subtitle() const { - return "Touch/click to poke holes"; + return "Touch/click to poke holes"; } void HoleDemo::setup() @@ -366,74 +362,73 @@ void HoleDemo::setup() auto target = Sprite::create(s_pathBlock); target->setAnchorPoint(Vec2::ZERO); target->setScale(3); - + _outerClipper = ClippingNode::create(); _outerClipper->retain(); AffineTransform transform = AffineTransform::IDENTITY; - transform = AffineTransformScale(transform, target->getScale(), target->getScale()); + transform = AffineTransformScale(transform, target->getScale(), target->getScale()); _outerClipper->setContentSize(SizeApplyAffineTransform(target->getContentSize(), transform)); - _outerClipper->setAnchorPoint( Vec2(0.5f, 0.5f) ); + _outerClipper->setAnchorPoint(Vec2(0.5f, 0.5f)); _outerClipper->setPosition(Vec2(this->getContentSize()) * 0.5f); _outerClipper->runAction(RepeatForever::create(RotateBy::create(1, 45))); - - _outerClipper->setStencil( target ); - + + _outerClipper->setStencil(target); + auto holesClipper = ClippingNode::create(); holesClipper->setInverted(true); - holesClipper->setAlphaThreshold( 0.05f ); - + holesClipper->setAlphaThreshold(0.05f); + holesClipper->addChild(target); - + _holes = Node::create(); _holes->retain(); - + holesClipper->addChild(_holes); - + _holesStencil = Node::create(); _holesStencil->retain(); - - holesClipper->setStencil( _holesStencil); - + + holesClipper->setStencil(_holesStencil); + _outerClipper->addChild(holesClipper); this->addChild(_outerClipper); - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(HoleDemo::onTouchesBegan, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); } void HoleDemo::pokeHoleAtPoint(Vec2 point) { - float scale = CCRANDOM_0_1() * 0.2 + 0.9; + float scale = CCRANDOM_0_1() * 0.2 + 0.9; float rotation = CCRANDOM_0_1() * 360; - + auto hole = Sprite::create("Images/hole_effect.png"); - hole->setPosition( point ); - hole->setRotation( rotation ); - hole->setScale( scale ); - + hole->setPosition(point); + hole->setRotation(rotation); + hole->setScale(scale); + _holes->addChild(hole); - + auto holeStencil = Sprite::create("Images/hole_stencil.png"); - holeStencil->setPosition( point ); - holeStencil->setRotation( rotation ); - holeStencil->setScale( scale ); - + holeStencil->setPosition(point); + holeStencil->setRotation(rotation); + holeStencil->setScale(scale); + _holesStencil->addChild(holeStencil); - _outerClipper->runAction(Sequence::createWithTwoActions(ScaleBy::create(0.05f, 0.95f), - ScaleTo::create(0.125f, 1))); + _outerClipper->runAction(Sequence::createWithTwoActions(ScaleBy::create(0.05f, 0.95f), ScaleTo::create(0.125f, 1))); } - void HoleDemo::onTouchesBegan(const std::vector& touches, Event* event) { - Touch *touch = (Touch *)touches[0]; - Vec2 point = _outerClipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); - auto rect = Rect(0, 0, _outerClipper->getContentSize().width, _outerClipper->getContentSize().height); - if (!rect.containsPoint(point)) return; + Touch* touch = (Touch*)touches[0]; + Vec2 point = _outerClipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); + auto rect = Rect(0, 0, _outerClipper->getContentSize().width, _outerClipper->getContentSize().height); + if (!rect.containsPoint(point)) + return; this->pokeHoleAtPoint(point); } @@ -441,20 +436,20 @@ void HoleDemo::onTouchesBegan(const std::vector& touches, Event* event) std::string ScrollViewDemo::title() const { - return "Scroll View Demo"; + return "Scroll View Demo"; } std::string ScrollViewDemo::subtitle() const { - return "Move/drag to scroll the content"; + return "Move/drag to scroll the content"; } void ScrollViewDemo::setup() { auto clipper = ClippingNode::create(); - clipper->setTag( kTagClipperNode ); - clipper->setContentSize( Size(200.0f, 200.0f) ); - clipper->setAnchorPoint( Vec2(0.5f, 0.5f) ); + clipper->setTag(kTagClipperNode); + clipper->setContentSize(Size(200.0f, 200.0f)); + clipper->setAnchorPoint(Vec2(0.5f, 0.5f)); clipper->setPosition(this->getContentSize().width / 2, this->getContentSize().height / 2); clipper->runAction(RepeatForever::create(RotateBy::create(1, 45))); this->addChild(clipper); @@ -465,51 +460,53 @@ void ScrollViewDemo::setup() rectangle[1] = Vec2(clipper->getContentSize().width, 0.0f); rectangle[2] = Vec2(clipper->getContentSize().width, clipper->getContentSize().height); rectangle[3] = Vec2(0.0f, clipper->getContentSize().height); - + Color4F white(1, 1, 1, 1); stencil->drawPolygon(rectangle, 4, white, 1, white); clipper->setStencil(stencil); auto content = Sprite::create(s_back2); - content->setTag( kTagContentNode ); - content->setAnchorPoint( Vec2(0.5f, 0.5f) ); + content->setTag(kTagContentNode); + content->setAnchorPoint(Vec2(0.5f, 0.5f)); content->setPosition(clipper->getContentSize().width / 2, clipper->getContentSize().height / 2); clipper->addChild(content); - + _scrolling = false; - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(ScrollViewDemo::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(ScrollViewDemo::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(ScrollViewDemo::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); } -void ScrollViewDemo::onTouchesBegan(const std::vector& touches, Event *event) +void ScrollViewDemo::onTouchesBegan(const std::vector& touches, Event* event) { - Touch *touch = touches[0]; + Touch* touch = touches[0]; auto clipper = this->getChildByTag(kTagClipperNode); - Vec2 point = clipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); - auto rect = Rect(0, 0, clipper->getContentSize().width, clipper->getContentSize().height); - _scrolling = rect.containsPoint(point); - _lastPoint = point; + Vec2 point = clipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); + auto rect = Rect(0, 0, clipper->getContentSize().width, clipper->getContentSize().height); + _scrolling = rect.containsPoint(point); + _lastPoint = point; } -void ScrollViewDemo::onTouchesMoved(const std::vector& touches, Event *event) +void ScrollViewDemo::onTouchesMoved(const std::vector& touches, Event* event) { - if (!_scrolling) return; - Touch *touch = touches[0]; + if (!_scrolling) + return; + Touch* touch = touches[0]; auto clipper = this->getChildByTag(kTagClipperNode); - auto point = clipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); - Vec2 diff = point - _lastPoint; + auto point = clipper->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); + Vec2 diff = point - _lastPoint; auto content = clipper->getChildByTag(kTagContentNode); content->setPosition(content->getPosition() + diff); _lastPoint = point; } -void ScrollViewDemo::onTouchesEnded(const std::vector& touches, Event *event) +void ScrollViewDemo::onTouchesEnded(const std::vector& touches, Event* event) { - if (!_scrolling) return; + if (!_scrolling) + return; _scrolling = false; } @@ -519,44 +516,36 @@ void ScrollViewDemo::onTouchesEnded(const std::vector& touches, Event * static const float _alphaThreshold = 0.05f; -static const int _planeCount = 8; +static const int _planeCount = 8; static const float _planeColor[][4] = { - {0, 0, 0, 0.65f}, - {0.7f, 0, 0, 0.6f}, - {0, 0.7f, 0, 0.55f}, - {0, 0, 0.7f, 0.5f}, - {0.7f, 0.7f, 0, 0.45f}, - {0, 0.7f, 0.7f, 0.4f}, - {0.7f, 0, 0.7f, 0.35f}, - {0.7f, 0.7f, 0.7f, 0.3f}, + {0, 0, 0, 0.65f}, {0.7f, 0, 0, 0.6f}, {0, 0.7f, 0, 0.55f}, {0, 0, 0.7f, 0.5f}, + {0.7f, 0.7f, 0, 0.45f}, {0, 0.7f, 0.7f, 0.4f}, {0.7f, 0, 0.7f, 0.35f}, {0.7f, 0.7f, 0.7f, 0.3f}, }; -RawStencilBufferTest::~RawStencilBufferTest() -{ -} +RawStencilBufferTest::~RawStencilBufferTest() {} std::string RawStencilBufferTest::title() const { - return "Raw Stencil Tests"; + return "Raw Stencil Tests"; } std::string RawStencilBufferTest::subtitle() const { - return "1:Default"; + return "1:Default"; } void RawStencilBufferTest::setup() { - for(int i = 0; i < _planeCount; ++i) + for (int i = 0; i < _planeCount; ++i) { Sprite* sprite = Sprite::create(s_pathGrossini); - sprite->setAnchorPoint( Vec2(0.5, 0) ); - sprite->setScale( 2.5f ); + sprite->setAnchorPoint(Vec2(0.5, 0)); + sprite->setScale(2.5f); _sprites.pushBack(sprite); Sprite* sprite2 = Sprite::create(s_pathGrossini); - sprite2->setAnchorPoint( Vec2(0.5, 0) ); - sprite2->setScale( 2.5f ); + sprite2->setAnchorPoint(Vec2(0.5, 0)); + sprite2->setScale(2.5f); _spritesStencil.pushBack(sprite2); } @@ -565,27 +554,23 @@ void RawStencilBufferTest::setup() void RawStencilBufferTest::initCommands() { - auto renderer = Director::getInstance()->getRenderer(); - _enableStencilCallback.func = [=](){ - renderer->setStencilTest(true); - }; + auto renderer = Director::getInstance()->getRenderer(); + _enableStencilCallback.func = [=]() { renderer->setStencilTest(true); }; _enableStencilCallback.init(_globalZOrder); - _disableStencilCallback.func = [=](){ - renderer->setStencilTest(false); - }; + _disableStencilCallback.func = [=]() { renderer->setStencilTest(false); }; _disableStencilCallback.init(_globalZOrder); - auto program = backend::Program::getBuiltinProgram(backend::ProgramType::POSITION_UCOLOR); - _programState = new backend::ProgramState(program); - _locColor = _programState->getProgram()->getUniformLocation("u_color"); - _locMVPMatrix = _programState->getProgram()->getUniformLocation("u_MVPMatrix"); + auto program = backend::Program::getBuiltinProgram(backend::ProgramType::POSITION_UCOLOR); + _programState = new backend::ProgramState(program); + _locColor = _programState->getProgram()->getUniformLocation("u_color"); + _locMVPMatrix = _programState->getProgram()->getUniformLocation("u_MVPMatrix"); const auto& projectionMat = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); _programState->setUniform(_locMVPMatrix, projectionMat.m, sizeof(projectionMat.m)); size_t neededCmdSize = _planeCount * 2; _renderCmds.resize(neededCmdSize); - auto winPoint = Vec2(Director::getInstance()->getWinSize()); + auto winPoint = Vec2(Director::getInstance()->getWinSize()); auto planeSize = winPoint * (1.0 / _planeCount); BlendFunc blend; blend.src = backend::BlendFactor::ONE; @@ -593,42 +578,31 @@ void RawStencilBufferTest::initCommands() for (int i = 0, cmdIndex = 0; i < _planeCount; i++) { auto stencilPoint = planeSize * (_planeCount - i); - stencilPoint.x = winPoint.x; + stencilPoint.x = winPoint.x; auto& cmd = _renderCmds[cmdIndex]; cmdIndex++; cmd.init(_globalZOrder, blend); - cmd.setBeforeCallback( CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawClip, this, i) ); - Vec2 vertices[] = { - Vec2::ZERO, - Vec2(stencilPoint.x, 0.0f), - stencilPoint, - Vec2(0.0f, stencilPoint.y) - }; + cmd.setBeforeCallback(CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawClip, this, i)); + Vec2 vertices[] = {Vec2::ZERO, Vec2(stencilPoint.x, 0.0f), stencilPoint, Vec2(0.0f, stencilPoint.y)}; unsigned short indices[] = {0, 2, 1, 0, 3, 2}; cmd.createVertexBuffer(sizeof(Vec2), 4, backend::BufferUsage::STATIC); cmd.updateVertexBuffer(vertices, sizeof(vertices)); cmd.createIndexBuffer(backend::IndexFormat::U_SHORT, 6, backend::BufferUsage::STATIC); cmd.updateIndexBuffer(indices, sizeof(indices)); cmd.getPipelineDescriptor().programState = _programState; - auto vertexLayout = _programState->getVertexLayout(); - auto& attributes = _programState->getProgram()->getActiveAttributes(); - auto iter = attributes.find("a_position"); + auto vertexLayout = _programState->getVertexLayout(); + auto& attributes = _programState->getProgram()->getActiveAttributes(); + auto iter = attributes.find("a_position"); if (iter != attributes.end()) vertexLayout->setAttribute("a_position", iter->second.location, backend::VertexFormat::FLOAT2, 0, false); vertexLayout->setLayout(sizeof(Vec2)); - auto& cmd2 = _renderCmds[cmdIndex]; cmdIndex++; cmd2.init(_globalZOrder, blend); cmd2.setBeforeCallback(CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawSprite, this, i)); - Vec2 vertices2[] = { - Vec2::ZERO, - Vec2(winPoint.x, 0.0f), - winPoint, - Vec2(0.0f, winPoint.y) - }; + Vec2 vertices2[] = {Vec2::ZERO, Vec2(winPoint.x, 0.0f), winPoint, Vec2(0.0f, winPoint.y)}; cmd2.createVertexBuffer(sizeof(Vec2), 4, backend::BufferUsage::STATIC); cmd2.updateVertexBuffer(vertices2, sizeof(vertices2)); cmd2.createIndexBuffer(backend::IndexFormat::U_SHORT, 6, backend::BufferUsage::STATIC); @@ -637,9 +611,9 @@ void RawStencilBufferTest::initCommands() } } -void RawStencilBufferTest::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) -{ - auto winPoint = Vec2(Director::getInstance()->getWinSize()); +void RawStencilBufferTest::draw(Renderer* renderer, const Mat4& transform, uint32_t flags) +{ + auto winPoint = Vec2(Director::getInstance()->getWinSize()); auto planeSize = winPoint * (1.0 / _planeCount); renderer->addCommand(&_enableStencilCallback); @@ -649,25 +623,25 @@ void RawStencilBufferTest::draw(Renderer *renderer, const Mat4 &transform, uint3 auto spritePoint = planeSize * i; spritePoint.x += planeSize.x / 2; spritePoint.y = 0; - _sprites.at(i)->setPosition( spritePoint ); - _spritesStencil.at(i)->setPosition( spritePoint ); + _sprites.at(i)->setPosition(spritePoint); + _spritesStencil.at(i)->setPosition(spritePoint); renderer->clear(ClearFlag::STENCIL, Color4F::BLACK, 0.f, 0x0, _globalZOrder); renderer->addCommand(&_renderCmds[cmdIndex]); cmdIndex++; - + Director* director = Director::getInstance(); CCASSERT(nullptr != director, "Director is null when setting matrix stack"); director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - + _modelViewTransform = this->transform(transform); _spritesStencil.at(i)->visit(renderer, _modelViewTransform, flags); director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - + renderer->addCommand(&_renderCmds[cmdIndex]); cmdIndex++; - + director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); _modelViewTransform = this->transform(transform); _sprites.at(i)->visit(renderer, _modelViewTransform, flags); @@ -693,26 +667,28 @@ void RawStencilBufferTest::onBeforeDrawSprite(int planeIndex) void RawStencilBufferTest::setupStencilForClippingOnPlane(int plane) { - auto renderer = Director::getInstance()->getRenderer(); + auto renderer = Director::getInstance()->getRenderer(); unsigned int planeMask = 0x1 << plane; renderer->setStencilWriteMask(planeMask); renderer->setStencilCompareFunction(backend::CompareFunction::NEVER, planeMask, planeMask); - renderer->setStencilOperation(backend::StencilOperation::REPLACE, backend::StencilOperation::KEEP, backend::StencilOperation::KEEP); + renderer->setStencilOperation(backend::StencilOperation::REPLACE, backend::StencilOperation::KEEP, + backend::StencilOperation::KEEP); } void RawStencilBufferTest::setupStencilForDrawingOnPlane(int plane) { - auto renderer = Director::getInstance()->getRenderer(); + auto renderer = Director::getInstance()->getRenderer(); unsigned int planeMask = 0x1 << plane; renderer->setStencilCompareFunction(backend::CompareFunction::EQUAL, planeMask, planeMask); - renderer->setStencilOperation(backend::StencilOperation::KEEP, backend::StencilOperation::KEEP, backend::StencilOperation::KEEP); + renderer->setStencilOperation(backend::StencilOperation::KEEP, backend::StencilOperation::KEEP, + backend::StencilOperation::KEEP); } //@implementation RawStencilBufferTest2 std::string RawStencilBufferTest2::subtitle() const { - return "2:DepthMask:FALSE"; + return "2:DepthMask:FALSE"; } void RawStencilBufferTest2::setupStencilForClippingOnPlane(int plane) @@ -731,7 +707,7 @@ void RawStencilBufferTest2::setupStencilForDrawingOnPlane(int plane) std::string RawStencilBufferTest3::subtitle() const { - return "3:DepthTest:DISABLE,DepthMask:FALSE"; + return "3:DepthTest:DISABLE,DepthMask:FALSE"; } void RawStencilBufferTest3::setupStencilForClippingOnPlane(int plane) @@ -751,11 +727,12 @@ void RawStencilBufferTest3::setupStencilForDrawingOnPlane(int plane) void RawStencilBufferTestAlphaTest::setup() { RawStencilBufferTest::setup(); - for(int i = 0; i < _planeCount; ++i) + for (int i = 0; i < _planeCount; ++i) { auto program = backend::Program::getBuiltinProgram(backend::ProgramType::POSITION_TEXTURE_COLOR_ALPHA_TEST); auto programState = new backend::ProgramState(program); - programState->setUniform(programState->getUniformLocation("u_alpha_value"), &_alphaThreshold, sizeof(_alphaThreshold)); + programState->setUniform(programState->getUniformLocation("u_alpha_value"), &_alphaThreshold, + sizeof(_alphaThreshold)); _spritesStencil.at(i)->setProgramState(programState); } } @@ -763,7 +740,7 @@ void RawStencilBufferTestAlphaTest::setup() std::string RawStencilBufferTest4::subtitle() const { - return "4:DepthMask:FALSE,AlphaTest:ENABLE"; + return "4:DepthMask:FALSE,AlphaTest:ENABLE"; } void RawStencilBufferTest4::setupStencilForClippingOnPlane(int plane) @@ -783,7 +760,7 @@ void RawStencilBufferTest4::setupStencilForDrawingOnPlane(int plane) std::string RawStencilBufferTest5::subtitle() const { - return "5:DepthTest:DISABLE,DepthMask:FALSE,AlphaTest:ENABLE"; + return "5:DepthTest:DISABLE,DepthMask:FALSE,AlphaTest:ENABLE"; } void RawStencilBufferTest5::setupStencilForClippingOnPlane(int plane) @@ -805,7 +782,7 @@ void RawStencilBufferTest5::setupStencilForDrawingOnPlane(int plane) std::string RawStencilBufferTest6::subtitle() const { - return "6:ManualClear,AlphaTest:ENABLE"; + return "6:ManualClear,AlphaTest:ENABLE"; } void RawStencilBufferTest6::setup() @@ -819,7 +796,8 @@ void RawStencilBufferTest6::setupStencilForClippingOnPlane(int plane) int planeMask = 0x1 << plane; auto renderer = Director::getInstance()->getRenderer(); renderer->setStencilCompareFunction(backend::CompareFunction::NEVER, planeMask, planeMask); - renderer->setStencilOperation(backend::StencilOperation::REPLACE, backend::StencilOperation::KEEP, backend::StencilOperation::KEEP); + renderer->setStencilOperation(backend::StencilOperation::REPLACE, backend::StencilOperation::KEEP, + backend::StencilOperation::KEEP); renderer->setDepthTest(false); renderer->setDepthWrite(false); } @@ -833,7 +811,7 @@ void RawStencilBufferTest6::setupStencilForDrawingOnPlane(int plane) //#endif // COCOS2D_DEBUG > 1 -//ClippingToRenderTextureTest +// ClippingToRenderTextureTest std::string ClippingToRenderTextureTest::title() const { @@ -847,9 +825,9 @@ std::string ClippingToRenderTextureTest::subtitle() const void ClippingToRenderTextureTest::setup() { - auto button = MenuItemFont::create("Reproduce bug", [&](Ref *sender) { + auto button = MenuItemFont::create("Reproduce bug", [&](Ref* sender) { std::vector nodes; - enumerateChildren("remove me [0-9]", [&](Node *node) { + enumerateChildren("remove me [0-9]", [&](Node* node) { nodes.push_back(node); return false; }); @@ -863,7 +841,7 @@ void ClippingToRenderTextureTest::setup() auto s = Director::getInstance()->getWinSize(); // create menu, it's an autorelease object auto menu = Menu::create(button, nullptr); - menu->setPosition(Point(s.width/2, s.height/2)); + menu->setPosition(Point(s.width / 2, s.height / 2)); this->addChild(menu, 1); expectedBehaviour(); @@ -871,16 +849,15 @@ void ClippingToRenderTextureTest::setup() void ClippingToRenderTextureTest::expectedBehaviour() { - auto director = Director::getInstance(); + auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); - Point origin = director->getVisibleOrigin(); - + Point origin = director->getVisibleOrigin(); // add "HelloWorld" splash screen" auto sprite = Sprite::create("Images/grossini.png"); // position the sprite on the center of the screen - sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); + sprite->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); @@ -901,13 +878,12 @@ void ClippingToRenderTextureTest::expectedBehaviour() auto clipper = ClippingNode::create(); clipper->setAnchorPoint(Point(0.5f, 0.5f)); - clipper->setPosition( Point(visibleSize.width/2, visibleSize.height/2) ); + clipper->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2)); clipper->setStencil(stencil); clipper->setInverted(true); container->addChild(clipper, 1); - - auto img = DrawNode::create(); + auto img = DrawNode::create(); triangle[0] = Point(-200, -200); triangle[1] = Point(200, -200); triangle[2] = Point(0, 200); @@ -918,21 +894,19 @@ void ClippingToRenderTextureTest::expectedBehaviour() void ClippingToRenderTextureTest::reproduceBug() { - auto director = Director::getInstance(); + auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); - Point origin = director->getVisibleOrigin(); - + Point origin = director->getVisibleOrigin(); // add "HelloWorld" splash screen" auto sprite = Sprite::create("Images/grossini.png"); // position the sprite on the center of the screen - sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); + sprite->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); - // container node that will contain the clippingNode auto container = Node::create(); container->retain(); @@ -947,13 +921,12 @@ void ClippingToRenderTextureTest::reproduceBug() auto clipper = ClippingNode::create(); clipper->setAnchorPoint(Point(0.5f, 0.5f)); - clipper->setPosition( Point(visibleSize.width/2, visibleSize.height/2) ); + clipper->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2)); clipper->setStencil(stencil); clipper->setInverted(true); container->addChild(clipper, 1); - - auto img = DrawNode::create(); + auto img = DrawNode::create(); triangle[0] = Point(-200, -200); triangle[1] = Point(200, -200); triangle[2] = Point(0, 200); @@ -963,8 +936,9 @@ void ClippingToRenderTextureTest::reproduceBug() // container rendered on Texture the size of the screen and because Clipping node use stencil buffer so we need to // create RenderTexture with depthStencil format parameter - RenderTexture* rt = RenderTexture::create(visibleSize.width, visibleSize.height, backend::PixelFormat::RGBA8, PixelFormat::D24S8); - rt->setPosition(visibleSize.width/2, visibleSize.height/2); + RenderTexture* rt = + RenderTexture::create(visibleSize.width, visibleSize.height, backend::PixelFormat::RGBA8, PixelFormat::D24S8); + rt->setPosition(visibleSize.width / 2, visibleSize.height / 2); this->addChild(rt); rt->begin(); @@ -976,24 +950,25 @@ void ClippingToRenderTextureTest::reproduceBug() std::string ClippingRectangleNodeTest::title() const { - return "ClippingRectangleNode Test"; + return "ClippingRectangleNode Test"; } std::string ClippingRectangleNodeTest::subtitle() const { - return "more effectively"; + return "more effectively"; } void ClippingRectangleNodeTest::setup() { auto clipper = ClippingRectangleNode::create(); - clipper->setClippingRegion(Rect(this->getContentSize().width / 2 - 100, this->getContentSize().height / 2 - 100, 200.0f, 200.0f)); - clipper->setTag( kTagClipperNode ); + clipper->setClippingRegion( + Rect(this->getContentSize().width / 2 - 100, this->getContentSize().height / 2 - 100, 200.0f, 200.0f)); + clipper->setTag(kTagClipperNode); this->addChild(clipper); - + auto content = Sprite::create(s_back2); - content->setTag( kTagContentNode ); - content->setAnchorPoint( Vec2(0.5f, 0.5f) ); + content->setTag(kTagContentNode); + content->setAnchorPoint(Vec2(0.5f, 0.5f)); content->setPosition(this->getContentSize().width / 2, this->getContentSize().height / 2); clipper->addChild(content); } diff --git a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h index 29f89a650c68..a631ad659d2a 100644 --- a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h +++ b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,9 +27,13 @@ #include "renderer/CCCustomCommand.h" #include -namespace cocos2d { namespace backend { +namespace cocos2d +{ +namespace backend +{ class ProgramState; -}} +} +} // namespace cocos2d DEFINE_TEST_SUITE(ClippingNodeTests); @@ -41,7 +45,7 @@ class BaseClippingNodeTest : public TestCase ~BaseClippingNodeTest(); virtual bool init() override; - virtual std::string title() const override; + virtual std::string title() const override; virtual void setup(); }; @@ -54,15 +58,15 @@ class BasicTest : public BaseClippingNodeTest virtual std::string subtitle() const override; virtual void setup() override; - virtual cocos2d::Action* actionRotate(); - virtual cocos2d::Action* actionScale(); + virtual cocos2d::Action* actionRotate(); + virtual cocos2d::Action* actionScale(); - virtual cocos2d::DrawNode* shape(); - virtual cocos2d::Sprite* grossini(); + virtual cocos2d::DrawNode* shape(); + virtual cocos2d::Sprite* grossini(); - virtual cocos2d::Node* stencil(); - virtual cocos2d::ClippingNode* clipper(); - virtual cocos2d::Node* content(); + virtual cocos2d::Node* stencil(); + virtual cocos2d::ClippingNode* clipper(); + virtual cocos2d::Node* content(); }; class ShapeTest : public BasicTest @@ -140,9 +144,10 @@ class HoleDemo : public BaseClippingNodeTest virtual std::string title() const override; virtual std::string subtitle() const override; void pokeHoleAtPoint(cocos2d::Vec2 point); - void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); + void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); + private: - cocos2d::ClippingNode* _outerClipper; + cocos2d::ClippingNode* _outerClipper; cocos2d::Node* _holes; cocos2d::Node* _holesStencil; }; @@ -155,11 +160,12 @@ class ScrollViewDemo : public BaseClippingNodeTest virtual std::string title() const override; virtual std::string subtitle() const override; virtual void setup() override; - void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); - void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); - void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); + void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); + void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); + void onTouchesEnded(const std::vector& touches, cocos2d::Event* event); + private: - bool _scrolling; + bool _scrolling; cocos2d::Vec2 _lastPoint; }; @@ -175,10 +181,10 @@ class RawStencilBufferTest : public BaseClippingNodeTest virtual std::string title() const override; virtual std::string subtitle() const override; virtual void setup() override; - virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override; + virtual void draw(cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, uint32_t flags) override; - virtual void setupStencilForClippingOnPlane(int plane); - virtual void setupStencilForDrawingOnPlane(int plane); + virtual void setupStencilForClippingOnPlane(int plane); + virtual void setupStencilForDrawingOnPlane(int plane); protected: void onBeforeDrawClip(int planeIndex); @@ -276,7 +282,7 @@ class ClippingRectangleNodeTest : public BaseClippingNodeTest { public: CREATE_FUNC(ClippingRectangleNodeTest); - + virtual std::string title() const override; virtual std::string subtitle() const override; virtual void setup() override; diff --git a/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.cpp b/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.cpp index 5381f8772a89..d947af82639c 100644 --- a/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.cpp +++ b/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -22,7 +22,6 @@ THE SOFTWARE. ****************************************************************************/ - #include "ConfigurationTest.h" #include "../testResource.h" #include "cocos2d.h" @@ -52,7 +51,7 @@ void ConfigurationLoadConfig::onEnter() { ConfigurationBase::onEnter(); - Configuration::getInstance()->loadConfigFile("configs/config-test-ok.plist"); + Configuration::getInstance()->loadConfigFile("configs/config-test-ok.plist"); std::string config = Configuration::getInstance()->getInfo(); log("%s\n", config.c_str()); } @@ -71,8 +70,8 @@ void ConfigurationQuery::onEnter() { ConfigurationBase::onEnter(); - log("cocos2d version: %s", Configuration::getInstance()->getValue("adxe.version").asString().c_str() ); - log("OpenGL version: %s", Configuration::getInstance()->getValue("gl.version").asString().c_str() ); + log("cocos2d version: %s", Configuration::getInstance()->getValue("adxe.version").asString().c_str()); + log("OpenGL version: %s", Configuration::getInstance()->getValue("gl.version").asString().c_str()); } std::string ConfigurationQuery::subtitle() const @@ -89,7 +88,7 @@ void ConfigurationInvalid::onEnter() { ConfigurationBase::onEnter(); - Configuration::getInstance()->loadConfigFile("configs/config-test-invalid.plist"); + Configuration::getInstance()->loadConfigFile("configs/config-test-invalid.plist"); } std::string ConfigurationInvalid::subtitle() const @@ -107,23 +106,22 @@ void ConfigurationDefault::onEnter() ConfigurationBase::onEnter(); std::string c_value = Configuration::getInstance()->getValue("invalid.key", Value("no key")).asString(); - if( c_value != "no key" ) - log("1. Test failed!"); - else - log("1. Test OK!"); - - bool b_value = Configuration::getInstance()->getValue("invalid.key", Value(true)).asBool(); - if( ! b_value ) - log("2. Test failed!"); - else - log("2. Test OK!"); - - double d_value = Configuration::getInstance()->getValue("invalid.key", Value(42.42)).asDouble(); - if( d_value != 42.42 ) - log("3. Test failed!"); - else - log("3. Test OK!"); - + if (c_value != "no key") + log("1. Test failed!"); + else + log("1. Test OK!"); + + bool b_value = Configuration::getInstance()->getValue("invalid.key", Value(true)).asBool(); + if (!b_value) + log("2. Test failed!"); + else + log("2. Test OK!"); + + double d_value = Configuration::getInstance()->getValue("invalid.key", Value(42.42)).asDouble(); + if (d_value != 42.42) + log("3. Test failed!"); + else + log("3. Test OK!"); } std::string ConfigurationDefault::subtitle() const @@ -140,13 +138,13 @@ void ConfigurationSet::onEnter() { ConfigurationBase::onEnter(); - Configuration *conf = Configuration::getInstance(); + Configuration* conf = Configuration::getInstance(); - conf->setValue("this.is.an.int.value", Value(10) ); - conf->setValue("this.is.a.bool.value", Value(true) ); - conf->setValue("this.is.a.string.value", Value("hello world") ); + conf->setValue("this.is.an.int.value", Value(10)); + conf->setValue("this.is.a.bool.value", Value(true)); + conf->setValue("this.is.a.string.value", Value("hello world")); - auto str = conf->getInfo(); + auto str = conf->getInfo(); log("%s\n", str.c_str()); } @@ -154,4 +152,3 @@ std::string ConfigurationSet::subtitle() const { return "Tests setting values manually"; } - diff --git a/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.h b/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.h index 802c1512642a..04f97b559822 100644 --- a/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.h +++ b/tests/cpp-tests/Classes/ConfigurationTest/ConfigurationTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,6 @@ DEFINE_TEST_SUITE(ConfigurationTests); class ConfigurationBase : public TestCase { protected: - public: virtual std::string title() const override; }; @@ -82,5 +81,4 @@ class ConfigurationSet : public ConfigurationBase virtual std::string subtitle() const override; }; - -#endif // __CONFIGURATIONTEST_H__ +#endif // __CONFIGURATIONTEST_H__ diff --git a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp index 9a17f9dad72f..ae09e42ee1a0 100644 --- a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp +++ b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp @@ -28,13 +28,13 @@ #include #include #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) -#include -#include -#include -#include +# include +# include +# include +# include #else -#include -#include +# include +# include #endif USING_NS_CC; @@ -51,13 +51,9 @@ ConsoleTests::ConsoleTests() ADD_TEST_CASE(ConsoleUploadFile); } -BaseTestConsole::BaseTestConsole() -{ -} +BaseTestConsole::BaseTestConsole() {} -BaseTestConsole::~BaseTestConsole() -{ -} +BaseTestConsole::~BaseTestConsole() {} std::string BaseTestConsole::title() const { @@ -72,21 +68,20 @@ std::string BaseTestConsole::title() const ConsoleCustomCommand::ConsoleCustomCommand() { - _console = Director::getInstance()->getConsole(); + _console = Director::getInstance()->getConsole(); static Console::Command commands[] = { - {"hello", "This is just a user generated command", [](int fd, std::string_view args) { - const char msg[] = "how are you?\nArguments passed: "; - send(fd, msg, sizeof(msg),0); - send(fd, args.data(), args.length(),0); - send(fd, "\n",1,0); - }}, + {"hello", "This is just a user generated command", + [](int fd, std::string_view args) { + const char msg[] = "how are you?\nArguments passed: "; + send(fd, msg, sizeof(msg), 0); + send(fd, args.data(), args.length(), 0); + send(fd, "\n", 1, 0); + }}, }; _console->addCommand(commands[0]); } -ConsoleCustomCommand::~ConsoleCustomCommand() -{ -} +ConsoleCustomCommand::~ConsoleCustomCommand() {} void ConsoleCustomCommand::onEnter() { @@ -103,7 +98,6 @@ std::string ConsoleCustomCommand::subtitle() const return "telnet localhost 5678"; } - //------------------------------------------------------------------ // // ConsoleUploadFile @@ -112,26 +106,22 @@ std::string ConsoleCustomCommand::subtitle() const ConsoleUploadFile::ConsoleUploadFile() { - std::srand ((unsigned)time(nullptr)); - int id = rand()%100000; + std::srand((unsigned)time(nullptr)); + int id = rand() % 100000; char buf[32]; sprintf(buf, "%d", id); _targetFileName = std::string("grossini") + buf + ".png"; - std::thread t = std::thread( &ConsoleUploadFile::uploadFile, this); + std::thread t = std::thread(&ConsoleUploadFile::uploadFile, this); t.detach(); } void ConsoleUploadFile::onEnter() { BaseTestConsole::onEnter(); - } -ConsoleUploadFile::~ConsoleUploadFile() -{ - -} +ConsoleUploadFile::~ConsoleUploadFile() {} void ConsoleUploadFile::uploadFile() { @@ -150,14 +140,14 @@ void ConsoleUploadFile::uploadFile() /* Obtain address(es) matching host/port */ memset(&hints, 0, sizeof(struct addrinfo)); - hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ + hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ hints.ai_socktype = SOCK_STREAM; /* stream socket */ - hints.ai_flags = 0; - hints.ai_protocol = 0; /* Any protocol */ + hints.ai_flags = 0; + hints.ai_protocol = 0; /* Any protocol */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) WSADATA wsaData; - WSAStartup(MAKEWORD(2, 2),&wsaData); + WSAStartup(MAKEWORD(2, 2), &wsaData); #endif std::string nodeName; @@ -167,7 +157,7 @@ void ConsoleUploadFile::uploadFile() nodeName = "localhost"; s = getaddrinfo(nodeName.c_str(), "5678", &hints, &result); - if (s != 0) + if (s != 0) { CCLOG("ConsoleUploadFile: getaddrinfo error"); return; @@ -178,14 +168,14 @@ void ConsoleUploadFile::uploadFile() If socket(2) (or connect(2)) fails, we (close the socket and) try the next address. */ - for (rp = result; rp != nullptr; rp = rp->ai_next) { - sfd = socket(rp->ai_family, rp->ai_socktype, - rp->ai_protocol); + for (rp = result; rp != nullptr; rp = rp->ai_next) + { + sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sfd == -1) continue; if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) - break; /* Success */ + break; /* Success */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) closesocket(sfd); @@ -194,12 +184,13 @@ void ConsoleUploadFile::uploadFile() #endif } - if (rp == nullptr) { /* No address succeeded */ + if (rp == nullptr) + { /* No address succeeded */ CCLOG("ConsoleUploadFile: could not connect!"); return; } - freeaddrinfo(result); /* No longer needed */ + freeaddrinfo(result); /* No longer needed */ std::string tmp = "upload"; @@ -209,9 +200,9 @@ void ConsoleUploadFile::uploadFile() char cmd[512] = {0}; strcpy(cmd, tmp.c_str()); - send(sfd,cmd,strlen(cmd),0); + send(sfd, cmd, strlen(cmd), 0); - size_t offset = 0; + size_t offset = 0; auto readBuffer = [&offset](char* buf, size_t bytes, const Data& data) -> ssize_t { if (offset >= data.getSize()) return 0; @@ -224,11 +215,11 @@ void ConsoleUploadFile::uploadFile() return actualReadBytes; }; - while(true) + while (true) { char buffer[3], *out; - unsigned char *in; - in = (unsigned char *)buffer; + unsigned char* in; + in = (unsigned char*)buffer; // copy the file into the buffer: ssize_t ret = readBuffer(buffer, 3, srcFileData); if (ret > 0) @@ -236,16 +227,16 @@ void ConsoleUploadFile::uploadFile() int len = base64Encode(in, (unsigned int)ret, &out); send(sfd, out, len, 0); free(out); - if(ret < 3) + if (ret < 3) { - //eof + // eof log("Reach the end, total send: %d bytes", (int)offset); break; } } else { - //read error + // read error break; } } @@ -271,9 +262,8 @@ std::string ConsoleUploadFile::title() const std::string ConsoleUploadFile::subtitle() const { auto sharedFileUtils = FileUtils::getInstance(); - + std::string writablePath = sharedFileUtils->getWritablePath(); return "file uploaded to:" + writablePath + _targetFileName; } - diff --git a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h index 4f06e3618e82..d8ee9ae90be1 100644 --- a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h +++ b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h @@ -39,7 +39,6 @@ class BaseTestConsole : public TestCase virtual std::string title() const override; }; - class ConsoleCustomCommand : public BaseTestConsole { public: @@ -53,7 +52,7 @@ class ConsoleCustomCommand : public BaseTestConsole ConsoleCustomCommand(); virtual ~ConsoleCustomCommand(); - cocos2d::Console *_console; + cocos2d::Console* _console; private: CC_DISALLOW_COPY_AND_ASSIGN(ConsoleCustomCommand); @@ -73,10 +72,11 @@ class ConsoleUploadFile : public BaseTestConsole virtual ~ConsoleUploadFile(); void uploadFile(); + private: CC_DISALLOW_COPY_AND_ASSIGN(ConsoleUploadFile); std::string _targetFileName; }; -#endif // _CONSOLE_TEST_H_ +#endif // _CONSOLE_TEST_H_ diff --git a/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp b/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp index 595383452f67..1f7a17004737 100644 --- a/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp +++ b/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,9 +39,9 @@ CurlTest::CurlTest() { auto label = Label::createWithTTF("Curl Test", "fonts/arial.ttf", 28); addChild(label, 0); - label->setPosition(VisibleRect::center().x, VisibleRect::top().y-50); + label->setPosition(VisibleRect::center().x, VisibleRect::top().y - 50); - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesEnded = CC_CALLBACK_2(CurlTest::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); @@ -49,57 +49,57 @@ CurlTest::CurlTest() _label = Label::createWithTTF("Touch the screen to connect", "fonts/arial.ttf", 22); _label->setPosition(VisibleRect::center()); addChild(_label, 0); - + _label->retain(); } -struct MemoryStruct { - char *memory; - size_t size; +struct MemoryStruct +{ + char* memory; + size_t size; }; -static size_t -WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) +static size_t WriteMemoryCallback(void* contents, size_t size, size_t nmemb, void* userp) { - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)userp; - - mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1); - if(mem->memory == NULL) { - /* out of memory! */ - printf("not enough memory (realloc returned NULL)\n"); - return 0; - } - - memcpy(&(mem->memory[mem->size]), contents, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; - - return realsize; + size_t realsize = size * nmemb; + struct MemoryStruct* mem = (struct MemoryStruct*)userp; + + mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1); + if (mem->memory == NULL) + { + /* out of memory! */ + printf("not enough memory (realloc returned NULL)\n"); + return 0; + } + + memcpy(&(mem->memory[mem->size]), contents, realsize); + mem->size += realsize; + mem->memory[mem->size] = 0; + + return realsize; } - // the test code is // http://curl.haxx.se/mail/lib-2009-12/0071.html -void CurlTest::onTouchesEnded(const std::vector& touches, Event *event) +void CurlTest::onTouchesEnded(const std::vector& touches, Event* event) { - CURL *curl; + CURL* curl; CURLcode res; char buffer[10]; struct MemoryStruct chunk; - - chunk.memory = (char*)malloc(1); /* will be grown as needed by the realloc above */ - chunk.size = 0; /* no data at this point */ + + chunk.memory = (char*)malloc(1); /* will be grown as needed by the realloc above */ + chunk.size = 0; /* no data at this point */ curl = curl_easy_init(); - if (curl) + if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://webtest.cocos2d-x.org/curltest"); - //code from http://curl.haxx.se/libcurl/c/getinmemory.html + // code from http://curl.haxx.se/libcurl/c/getinmemory.html /* we pass our 'chunk' struct to the callback function */ - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); - //If we don't provide a write function for curl, it will receive error code 23 on windows. + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk); + // If we don't provide a write function for curl, it will receive error code 23 on windows. curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); res = curl_easy_perform(curl); @@ -111,14 +111,14 @@ void CurlTest::onTouchesEnded(const std::vector& touches, Event *event) } else { - sprintf(buffer,"code: %i",res); + sprintf(buffer, "code: %i", res); _label->setString(buffer); } - } - else + } + else { _label->setString("no curl"); - } + } } CurlTest::~CurlTest() diff --git a/tests/cpp-tests/Classes/CurlTest/CurlTest.h b/tests/cpp-tests/Classes/CurlTest/CurlTest.h index e36ba2f7a43b..15e23a9ffaf7 100644 --- a/tests/cpp-tests/Classes/CurlTest/CurlTest.h +++ b/tests/cpp-tests/Classes/CurlTest/CurlTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,10 +38,10 @@ class CurlTest : public TestCase CurlTest(); ~CurlTest(); - void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); + void onTouchesEnded(const std::vector& touches, cocos2d::Event* event); private: cocos2d::Label* _label; }; -#endif // _CURL_TEST_H_ +#endif // _CURL_TEST_H_ diff --git a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp index b2b58c8e2fbe..33230b057079 100644 --- a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp +++ b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,16 +35,16 @@ CurrentLanguageTest::CurrentLanguageTest() { auto label = Label::createWithTTF("Current language Test", "fonts/arial.ttf", 28); addChild(label, 0); - label->setPosition(VisibleRect::center().x, VisibleRect::top().y-50); + label->setPosition(VisibleRect::center().x, VisibleRect::top().y - 50); auto labelLanguage = Label::createWithTTF("", "fonts/arial.ttf", 20); labelLanguage->setPosition(VisibleRect::center()); - + auto labelLanguageCode = Label::createWithTTF("", "fonts/arial.ttf", 20); - labelLanguageCode->setPosition(VisibleRect::center().x, VisibleRect::center().y-50); - + labelLanguageCode->setPosition(VisibleRect::center().x, VisibleRect::center().y - 50); + const char* currentLanguageCode = Application::getInstance()->getCurrentLanguageCode(); - + labelLanguageCode->setString(currentLanguageCode); LanguageType currentLanguageType = Application::getInstance()->getCurrentLanguage(); @@ -103,4 +103,3 @@ CurrentLanguageTest::CurrentLanguageTest() addChild(labelLanguage); addChild(labelLanguageCode); } - diff --git a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.h b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.h index 6c5bfb83afd3..19fb74937264 100644 --- a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.h +++ b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,4 +38,4 @@ class CurrentLanguageTest : public TestCase CurrentLanguageTest(); }; -#endif // _CURRENT_LANGUAGE_TEST_H_ +#endif // _CURRENT_LANGUAGE_TEST_H_ diff --git a/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.cpp b/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.cpp index 58b09ff4f3f8..2e1dbf6c6cb2 100644 --- a/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.cpp +++ b/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -44,19 +44,19 @@ std::string PrettyPrinterDemo::subtitle() const void PrettyPrinterDemo::addSprite() { // create sprites - + auto s1 = Sprite::create("Images/grossini.png"); auto s2 = Sprite::create("Images/grossini_dance_01.png"); auto s3 = Sprite::create("Images/grossini_dance_02.png"); auto s4 = Sprite::create("Images/grossini_dance_03.png"); auto s5 = Sprite::create("Images/grossini_dance_04.png"); - + s1->setPosition(50, 50); s2->setPosition(60, 50); s3->setPosition(70, 50); s4->setPosition(80, 50); s5->setPosition(90, 50); - + this->addChild(s1); this->addChild(s2); this->addChild(s3); @@ -68,41 +68,41 @@ void PrettyPrinterDemo::onEnter() { TestCase::onEnter(); auto s = Director::getInstance()->getWinSize(); - + auto label = Label::createWithTTF(title().c_str(), "fonts/arial.ttf", 28); - label->setPosition(s.width/2, s.height * 4/5); + label->setPosition(s.width / 2, s.height * 4 / 5); this->addChild(label, 1); - + std::string strSubtitle = subtitle(); - if(strSubtitle.empty() == false) + if (strSubtitle.empty() == false) { auto subLabel = Label::createWithTTF(strSubtitle.c_str(), "fonts/Thonburi.ttf", 16); - subLabel->setPosition(s.width/2, s.height * 3/5); + subLabel->setPosition(s.width / 2, s.height * 3 / 5); this->addChild(subLabel, 1); } - + // Test code - //TODO: minggo -// PrettyPrinter visitor; -// -// // print dictionary -// auto dict = __Dictionary::createWithContentsOfFile("animations/animations.plist"); -// dict->acceptVisitor(visitor); -// log("%s", visitor.getResult().c_str()); -// log("-------------------------------"); -// -// __Set myset; -// for (int i = 0; i < 30; ++i) { -// myset.addObject(__String::createWithFormat("str: %d", i)); -// } -// visitor.clear(); -// myset.acceptVisitor(visitor); -// log("%s", visitor.getResult().c_str()); -// log("-------------------------------"); -// -// visitor.clear(); + // TODO: minggo + // PrettyPrinter visitor; + // + // // print dictionary + // auto dict = __Dictionary::createWithContentsOfFile("animations/animations.plist"); + // dict->acceptVisitor(visitor); + // log("%s", visitor.getResult().c_str()); + // log("-------------------------------"); + // + // __Set myset; + // for (int i = 0; i < 30; ++i) { + // myset.addObject(__String::createWithFormat("str: %d", i)); + // } + // visitor.clear(); + // myset.acceptVisitor(visitor); + // log("%s", visitor.getResult().c_str()); + // log("-------------------------------"); + // + // visitor.clear(); addSprite(); -// dict = Director::getInstance()->getTextureCache()->snapshotTextures(); -// dict->acceptVisitor(visitor); -// log("%s", visitor.getResult().c_str()); + // dict = Director::getInstance()->getTextureCache()->snapshotTextures(); + // dict->acceptVisitor(visitor); + // log("%s", visitor.getResult().c_str()); } diff --git a/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.h b/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.h index 6742f6c1620c..d576ea3ecc29 100644 --- a/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.h +++ b/tests/cpp-tests/Classes/DataVisitorTest/DataVisitorTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,9 +39,9 @@ class PrettyPrinterDemo : public TestCase virtual std::string subtitle() const override; virtual void onEnter() override; void addSprite(); + protected: - std::string _title; + std::string _title; }; - -#endif // __DATAVISITOR_TEST_H__ +#endif // __DATAVISITOR_TEST_H__ diff --git a/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp b/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp index 1c94ff53ab22..3efcd947ea2c 100644 --- a/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp +++ b/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -45,126 +45,151 @@ string DrawPrimitivesBaseTest::title() const DrawNodeTest::DrawNodeTest() { auto s = Director::getInstance()->getWinSize(); - + auto draw = DrawNode::create(); addChild(draw, 10); - - draw->drawPoint(Vec2(s.width/2-120, s.height/2-120), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); - - draw->drawPoint(Vec2(s.width/2+120, s.height/2+120), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); - + + draw->drawPoint(Vec2(s.width / 2 - 120, s.height / 2 - 120), 10, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + + draw->drawPoint(Vec2(s.width / 2 + 120, s.height / 2 + 120), 10, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + // draw 4 small points - Vec2 position[] = { Vec2(60,60), Vec2(70,70), Vec2(60,70), Vec2(70,60) }; - draw->drawPoints( position, 4, 5, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); - + Vec2 position[] = {Vec2(60, 60), Vec2(70, 70), Vec2(60, 70), Vec2(70, 60)}; + draw->drawPoints(position, 4, 5, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + // draw a line - draw->drawLine(Vec2(0,0), Vec2(s.width, s.height), Color4F(1.0, 0.0, 0.0, 0.5)); - + draw->drawLine(Vec2(0, 0), Vec2(s.width, s.height), Color4F(1.0, 0.0, 0.0, 0.5)); + // draw a rectangle - draw->drawRect(Vec2(23,23), Vec2(7,7), Color4F(1,1,0,1)); - - draw->drawRect(Vec2(15,30), Vec2(30,15), Vec2(15,0), Vec2(0,15), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); - + draw->drawRect(Vec2(23, 23), Vec2(7, 7), Color4F(1, 1, 0, 1)); + + draw->drawRect(Vec2(15, 30), Vec2(30, 15), Vec2(15, 0), Vec2(0, 15), + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + // draw a circle - draw->drawCircle(VisibleRect::center() + Vec2(140,0), 100, CC_DEGREES_TO_RADIANS(90), 50, true, 1.0f, 2.0f, Color4F(1.0f, 0.0f, 0.0f, 0.5f)); - - draw->drawCircle(VisibleRect::center() - Vec2(140,0), 50, CC_DEGREES_TO_RADIANS(90), 30, false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + draw->drawCircle(VisibleRect::center() + Vec2(140, 0), 100, CC_DEGREES_TO_RADIANS(90), 50, true, 1.0f, 2.0f, + Color4F(1.0f, 0.0f, 0.0f, 0.5f)); + + draw->drawCircle(VisibleRect::center() - Vec2(140, 0), 50, CC_DEGREES_TO_RADIANS(90), 30, false, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); // Draw some beziers - draw->drawQuadBezier(Vec2(s.width - 150, s.height - 150), Vec2(s.width - 70, s.height - 10), Vec2(s.width - 10, s.height - 10), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - - draw->drawQuadBezier(Vec2(0.0f, s.height), Vec2(s.width/2, s.height/2), Vec2(s.width, s.height), 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - - draw->drawCubicBezier(VisibleRect::center(), Vec2(VisibleRect::center().x+30,VisibleRect::center().y+50), Vec2(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - - draw->drawCubicBezier(Vec2(s.width - 250, 40.0f), Vec2(s.width - 70, 100.0f), Vec2(s.width - 30, 250.0f), Vec2(s.width - 10, s.height - 50), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - + draw->drawQuadBezier(Vec2(s.width - 150, s.height - 150), Vec2(s.width - 70, s.height - 10), + Vec2(s.width - 10, s.height - 10), 10, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); + + draw->drawQuadBezier(Vec2(0.0f, s.height), Vec2(s.width / 2, s.height / 2), Vec2(s.width, s.height), 50, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); + + draw->drawCubicBezier(VisibleRect::center(), Vec2(VisibleRect::center().x + 30, VisibleRect::center().y + 50), + Vec2(VisibleRect::center().x + 60, VisibleRect::center().y - 50), VisibleRect::right(), 100, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); + + draw->drawCubicBezier(Vec2(s.width - 250, 40.0f), Vec2(s.width - 70, 100.0f), Vec2(s.width - 30, 250.0f), + Vec2(s.width - 10, s.height - 50), 10, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); + auto array = PointArray::create(20); - array->addControlPoint(Vec2(0.0f,0.0f)); - array->addControlPoint(Vec2(80.0f,80.0f)); - array->addControlPoint(Vec2(s.width-80,80.0f)); - array->addControlPoint(Vec2(s.width-80,s.height-80)); - array->addControlPoint(Vec2(80.0f,s.height-80)); - array->addControlPoint(Vec2(80.0f,80.0f)); - array->addControlPoint(Vec2(s.width/2, s.height/2)); + array->addControlPoint(Vec2(0.0f, 0.0f)); + array->addControlPoint(Vec2(80.0f, 80.0f)); + array->addControlPoint(Vec2(s.width - 80, 80.0f)); + array->addControlPoint(Vec2(s.width - 80, s.height - 80)); + array->addControlPoint(Vec2(80.0f, s.height - 80)); + array->addControlPoint(Vec2(80.0f, 80.0f)); + array->addControlPoint(Vec2(s.width / 2, s.height / 2)); draw->drawCardinalSpline(array, 0.5f, 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - + auto array2 = PointArray::create(20); array2->addControlPoint(Vec2(s.width / 2, 30.0f)); - array2->addControlPoint(Vec2(s.width -80, 30.0f)); + array2->addControlPoint(Vec2(s.width - 80, 30.0f)); array2->addControlPoint(Vec2(s.width - 80, s.height - 80)); array2->addControlPoint(Vec2(s.width / 2, s.height - 80)); array2->addControlPoint(Vec2(s.width / 2, 30.0f)); draw->drawCatmullRom(array2, 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - + // open random color poly - Vec2 vertices[] = { Vec2(0.0f,0.0f), Vec2(50.0f,50.0f), Vec2(100.0f,50.0f), Vec2(100.0f,100.0f), Vec2(50.0f,100.0f) }; - draw->drawPoly( vertices, 5, false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); - + Vec2 vertices[] = {Vec2(0.0f, 0.0f), Vec2(50.0f, 50.0f), Vec2(100.0f, 50.0f), Vec2(100.0f, 100.0f), + Vec2(50.0f, 100.0f)}; + draw->drawPoly(vertices, 5, false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + // closed random color poly - Vec2 vertices2[] = { Vec2(30.0f,130.0f), Vec2(30.0f,230.0f), Vec2(50.0f,200.0f) }; - draw->drawPoly( vertices2, 3, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); - + Vec2 vertices2[] = {Vec2(30.0f, 130.0f), Vec2(30.0f, 230.0f), Vec2(50.0f, 200.0f)}; + draw->drawPoly(vertices2, 3, true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + // Draw 10 circles - for( int i=0; i < 10; i++) + for (int i = 0; i < 10; i++) { - draw->drawDot(Vec2(s.width/2, s.height/2), 10*(10-i), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + draw->drawDot(Vec2(s.width / 2, s.height / 2), 10 * (10 - i), + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); } - + // Draw polygons - Vec2 points[] = { Vec2(s.height/4,0.0f), Vec2(s.width,s.height/5), Vec2(s.width/3*2,s.height) }; - draw->drawPolygon(points, sizeof(points)/sizeof(points[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 4, Color4F(0.0f,0.0f,1.0f,0.5f)); - + Vec2 points[] = {Vec2(s.height / 4, 0.0f), Vec2(s.width, s.height / 5), Vec2(s.width / 3 * 2, s.height)}; + draw->drawPolygon(points, sizeof(points) / sizeof(points[0]), Color4F(1.0f, 0.0f, 0.0f, 0.5f), 4, + Color4F(0.0f, 0.0f, 1.0f, 0.5f)); + // star poly (triggers buggs) { - const float o=80; - const float w=20; - const float h=50; - Vec2 star[] = { - Vec2(o+w,o-h), Vec2(o+w*2, o), // lower spike - Vec2(o + w*2 + h, o+w ), Vec2(o + w*2, o+w*2), // right spike + const float o = 80; + const float w = 20; + const float h = 50; + Vec2 star[] = { + Vec2(o + w, o - h), Vec2(o + w * 2, o), // lower spike + Vec2(o + w * 2 + h, o + w), Vec2(o + w * 2, o + w * 2), // right spike // {o +w, o+w*2+h}, {o,o+w*2}, // top spike // {o -h, o+w}, {o,o}, // left spike }; - - draw->drawPolygon(star, sizeof(star)/sizeof(star[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 1, Color4F(0.0f,0.0f,1.0f,1.0f)); + + draw->drawPolygon(star, sizeof(star) / sizeof(star[0]), Color4F(1.0f, 0.0f, 0.0f, 0.5f), 1, + Color4F(0.0f, 0.0f, 1.0f, 1.0f)); } - + // star poly (doesn't trigger bug... order is important un tesselation is supported. { - const float o=180; - const float w=20; - const float h=50; - Vec2 star[] = { - Vec2(o,o), Vec2(o+w,o-h), Vec2(o+w*2, o), // lower spike - Vec2(o + w*2 + h, o+w ), Vec2(o + w*2, o+w*2), // right spike - Vec2(o +w, o+w*2+h), Vec2(o,o+w*2), // top spike - Vec2(o -h, o+w), // left spike + const float o = 180; + const float w = 20; + const float h = 50; + Vec2 star[] = { + Vec2(o, o), + Vec2(o + w, o - h), + Vec2(o + w * 2, o), // lower spike + Vec2(o + w * 2 + h, o + w), + Vec2(o + w * 2, o + w * 2), // right spike + Vec2(o + w, o + w * 2 + h), + Vec2(o, o + w * 2), // top spike + Vec2(o - h, o + w), // left spike }; - - draw->drawPolygon(star, sizeof(star)/sizeof(star[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 1, Color4F(0.0f,0.0f,1.0f,1.0f)); + + draw->drawPolygon(star, sizeof(star) / sizeof(star[0]), Color4F(1.0f, 0.0f, 0.0f, 0.5f), 1, + Color4F(0.0f, 0.0f, 1.0f, 1.0f)); } - - //draw a solid polygon - Vec2 vertices3[] = {Vec2(60.0f,160.0f), Vec2(70.0f,190.0f), Vec2(100.0f,190.0f), Vec2(90.0f,160.0f)}; - draw->drawSolidPoly( vertices3, 4, Color4F(1.0f,1.0f,0.0f,1.0f) ); - - //draw a solid rectangle - draw->drawSolidRect(Vec2(10.0f,10.0f), Vec2(20.0f,20.0f), Color4F(1.0f,1.0f,0.0f,1.0f)); - - //draw a solid circle - draw->drawSolidCircle( VisibleRect::center() + Vec2(140.0f,0.0f), 40, CC_DEGREES_TO_RADIANS(90), 50, 2.0f, 2.0f, Color4F(0.0f, 1.0f, 0.0f, 1.0f)); - + + // draw a solid polygon + Vec2 vertices3[] = {Vec2(60.0f, 160.0f), Vec2(70.0f, 190.0f), Vec2(100.0f, 190.0f), Vec2(90.0f, 160.0f)}; + draw->drawSolidPoly(vertices3, 4, Color4F(1.0f, 1.0f, 0.0f, 1.0f)); + + // draw a solid rectangle + draw->drawSolidRect(Vec2(10.0f, 10.0f), Vec2(20.0f, 20.0f), Color4F(1.0f, 1.0f, 0.0f, 1.0f)); + + // draw a solid circle + draw->drawSolidCircle(VisibleRect::center() + Vec2(140.0f, 0.0f), 40, CC_DEGREES_TO_RADIANS(90), 50, 2.0f, 2.0f, + Color4F(0.0f, 1.0f, 0.0f, 1.0f)); + // Draw segment - draw->drawSegment(Vec2(20.0f,s.height), Vec2(20.0f,s.height/2), 10, Color4F(0.0f, 1.0f, 0.0f, 1.0f)); - - draw->drawSegment(Vec2(10.0f,s.height/2), Vec2(s.width/2, s.height/2), 40, Color4F(1.0f, 0.0f, 1.0f, 0.5f)); + draw->drawSegment(Vec2(20.0f, s.height), Vec2(20.0f, s.height / 2), 10, Color4F(0.0f, 1.0f, 0.0f, 1.0f)); + + draw->drawSegment(Vec2(10.0f, s.height / 2), Vec2(s.width / 2, s.height / 2), 40, Color4F(1.0f, 0.0f, 1.0f, 0.5f)); // Draw triangle - draw->drawTriangle(Vec2(10.0f, 10.0f), Vec2(70.0f, 30.0f), Vec2(100.0f, 140.0f), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); - - for (int i = 0; i < 100; i++) { - draw->drawPoint(Vec2(i*7.0f, 5.0f), (float)i/5+1, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); + draw->drawTriangle(Vec2(10.0f, 10.0f), Vec2(70.0f, 30.0f), Vec2(100.0f, 140.0f), + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f)); + + for (int i = 0; i < 100; i++) + { + draw->drawPoint(Vec2(i * 7.0f, 5.0f), (float)i / 5 + 1, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f)); } auto draw1 = DrawNode::create(); @@ -173,8 +198,8 @@ DrawNodeTest::DrawNodeTest() draw1->drawLine(Vec2(0.0f, s.height), Vec2(s.width, s.height - 20), Color4F::YELLOW); draw1->drawLine(Vec2(0.0f, 0.0f), Vec2(s.width, s.height - 20), Color4F::YELLOW); - draw->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2),FadeOut::create(1.2), NULL))); - draw1->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2),FadeOut::create(1.2), NULL))); + draw->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2), FadeOut::create(1.2), NULL))); + draw1->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2), FadeOut::create(1.2), NULL))); } string DrawNodeTest::title() const @@ -197,9 +222,11 @@ Issue11942Test::Issue11942Test() // draw a circle draw->setLineWidth(1); - draw->drawCircle(VisibleRect::center() - Vec2(140.0f,0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30, false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + draw->drawCircle(VisibleRect::center() - Vec2(140.0f, 0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30, false, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); draw->setLineWidth(10); - draw->drawCircle(VisibleRect::center() + Vec2(140.0f,0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30, false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); + draw->drawCircle(VisibleRect::center() + Vec2(140.0f, 0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30, false, + Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1)); } string Issue11942Test::title() const diff --git a/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.h b/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.h index e5aae33dcbaf..37c10faf4683 100644 --- a/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.h +++ b/tests/cpp-tests/Classes/DrawPrimitivesTest/DrawPrimitivesTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -42,7 +42,7 @@ class DrawNodeTest : public DrawPrimitivesBaseTest CREATE_FUNC(DrawNodeTest); DrawNodeTest(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -56,5 +56,4 @@ class Issue11942Test : public DrawPrimitivesBaseTest virtual std::string title() const override; virtual std::string subtitle() const override; - }; diff --git a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp index 1ccd5aadba18..ed7b7075221a 100644 --- a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp +++ b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,7 +26,7 @@ USING_NS_CC; -enum +enum { kTagTextLayer = 1, @@ -34,7 +34,7 @@ enum kTagSprite2 = 2, kTagBackground = 1, - kTagLabel = 2, + kTagLabel = 2, }; EffectAdvanceTests::EffectAdvanceTests() @@ -56,25 +56,25 @@ void Effect1::onEnter() { EffectAdvanceBaseTest::onEnter(); - //auto target = getChildByTag(kTagBackground); - + // auto target = getChildByTag(kTagBackground); + // To reuse a grid the grid size and the grid type must be the same. // in this case: // Lens3D is Grid3D and it's size is (15,10) // Waves3D is Grid3D and it's size is (15,10) - - auto size = Director::getInstance()->getWinSize(); - auto lens = Lens3D::create(0.0f, Size(15,10), Vec2(size.width/2,size.height/2), 240); - auto waves = Waves3D::create(10, Size(15,10), 18, 15); + + auto size = Director::getInstance()->getWinSize(); + auto lens = Lens3D::create(0.0f, Size(15, 10), Vec2(size.width / 2, size.height / 2), 240); + auto waves = Waves3D::create(10, Size(15, 10), 18, 15); auto reuse = ReuseGrid::create(1); auto delay = DelayTime::create(8); -// auto orbit = OrbitCamera::create(5, 1, 2, 0, 180, 0, -90); -// auto orbit_back = orbit->reverse(); + // auto orbit = OrbitCamera::create(5, 1, 2, 0, 180, 0, -90); + // auto orbit_back = orbit->reverse(); //_bgNode->runAction( RepeatForever::create( Sequence::create( orbit, orbit_back, nullptr) ) ); - _bgNode->runAction( Sequence::create(lens, delay, reuse, waves, nullptr) ); + _bgNode->runAction(Sequence::create(lens, delay, reuse, waves, nullptr)); } std::string Effect1::title() const @@ -91,18 +91,18 @@ void Effect2::onEnter() { EffectAdvanceBaseTest::onEnter(); - //auto target = getChildByTag(kTagBackground); - + // auto target = getChildByTag(kTagBackground); + // To reuse a grid the grid size and the grid type must be the same. // in this case: // ShakyTiles is TiledGrid3D and it's size is (15,10) // Shuffletiles is TiledGrid3D and it's size is (15,10) // TurnOfftiles is TiledGrid3D and it's size is (15,10) - auto shaky = ShakyTiles3D::create(5, Size(15,10), 4, false); - auto shuffle = ShuffleTiles::create(0, Size(15,10), 3); - auto turnoff = TurnOffTiles::create(0, Size(15,10), 3); - auto turnon = turnoff->reverse(); - + auto shaky = ShakyTiles3D::create(5, Size(15, 10), 4, false); + auto shuffle = ShuffleTiles::create(0, Size(15, 10), 3); + auto turnoff = TurnOffTiles::create(0, Size(15, 10), 3); + auto turnon = turnoff->reverse(); + // reuse 2 times: // 1 for shuffle // 2 for turn off @@ -110,12 +110,12 @@ void Effect2::onEnter() auto reuse = ReuseGrid::create(2); auto delay = DelayTime::create(1); - -// id orbit = [OrbitCamera::create:5 radius:1 deltaRadius:2 angleZ:0 deltaAngleZ:180 angleX:0 deltaAngleX:-90]; -// id orbit_back = [orbit reverse]; -// -// [target runAction: [RepeatForever::create: [Sequence actions: orbit, orbit_back, nil]]]; - _bgNode->runAction(Sequence::create( shaky, delay, reuse, shuffle, delay->clone(), turnoff, turnon, nullptr) ); + + // id orbit = [OrbitCamera::create:5 radius:1 deltaRadius:2 angleZ:0 deltaAngleZ:180 angleX:0 deltaAngleX:-90]; + // id orbit_back = [orbit reverse]; + // + // [target runAction: [RepeatForever::create: [Sequence actions: orbit, orbit_back, nil]]]; + _bgNode->runAction(Sequence::create(shaky, delay, reuse, shuffle, delay->clone(), turnoff, turnon, nullptr)); } std::string Effect2::title() const @@ -123,7 +123,6 @@ std::string Effect2::title() const return "ShakyTiles + ShuffleTiles + TurnOffTiles"; } - //------------------------------------------------------------------ // // Effect3 @@ -132,18 +131,18 @@ std::string Effect2::title() const void Effect3::onEnter() { EffectAdvanceBaseTest::onEnter(); - //auto bg = getChildByTag(kTagBackground); - //auto target1 = bg->getChildByTag(kTagSprite1); - //auto target2 = bg->getChildByTag(kTagSprite2); - auto waves = Waves::create(5, Size(15,10), 5, 20, true, false); - auto shaky = Shaky3D::create(5, Size(15,10), 4, false); - - _target1->runAction( RepeatForever::create( waves ) ); - _target2->runAction( RepeatForever::create( shaky ) ); - + // auto bg = getChildByTag(kTagBackground); + // auto target1 = bg->getChildByTag(kTagSprite1); + // auto target2 = bg->getChildByTag(kTagSprite2); + auto waves = Waves::create(5, Size(15, 10), 5, 20, true, false); + auto shaky = Shaky3D::create(5, Size(15, 10), 4, false); + + _target1->runAction(RepeatForever::create(waves)); + _target2->runAction(RepeatForever::create(shaky)); + // moving background. Testing issue #244 - auto move = MoveBy::create(3, Vec2(200,0) ); - _bgNode->runAction(RepeatForever::create( Sequence::create(move, move->reverse(), nullptr) )); + auto move = MoveBy::create(3, Vec2(200, 0)); + _bgNode->runAction(RepeatForever::create(Sequence::create(move, move->reverse(), nullptr))); } std::string Effect3::title() const @@ -151,7 +150,6 @@ std::string Effect3::title() const return "Effects on 2 sprites"; } - //------------------------------------------------------------------ // // Effect4 @@ -161,28 +159,20 @@ std::string Effect3::title() const class Lens3DTarget : public Node { public: - virtual void setPosition(const Vec2& var) - { - _lens3D->setPosition(var); - } - - virtual const Vec2& getPosition() const - { - return _lens3D->getPosition(); - } - + virtual void setPosition(const Vec2& var) { _lens3D->setPosition(var); } + + virtual const Vec2& getPosition() const { return _lens3D->getPosition(); } + static Lens3DTarget* create(Lens3D* pAction) { Lens3DTarget* pRet = new Lens3DTarget(); - pRet->_lens3D = pAction; + pRet->_lens3D = pAction; pRet->autorelease(); return pRet; } -private: - Lens3DTarget() - : _lens3D(nullptr) - {} +private: + Lens3DTarget() : _lens3D(nullptr) {} Lens3D* _lens3D; }; @@ -190,27 +180,27 @@ class Lens3DTarget : public Node void Effect4::onEnter() { EffectAdvanceBaseTest::onEnter(); - //Node* gridNode = NodeGrid::create(); - - auto lens = Lens3D::create(10, Size(32,24), Vec2(100,180), 150); - auto move = JumpBy::create(5, Vec2(380,0), 100, 4); + // Node* gridNode = NodeGrid::create(); + + auto lens = Lens3D::create(10, Size(32, 24), Vec2(100, 180), 150); + auto move = JumpBy::create(5, Vec2(380, 0), 100, 4); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, nullptr); + auto seq = Sequence::create(move, move_back, nullptr); - /* In cocos2d-iphone, the type of action's target is 'id', so it supports using the instance of 'Lens3D' as its target. - While in cocos2d-x, the target of action only supports Node or its subclass, - so we make an encapsulation for Lens3D to achieve that. + /* In cocos2d-iphone, the type of action's target is 'id', so it supports using the instance of 'Lens3D' as its + target. While in cocos2d-x, the target of action only supports Node or its subclass, so we make an encapsulation + for Lens3D to achieve that. */ auto director = Director::getInstance(); - auto pTarget = Lens3DTarget::create(lens); + auto pTarget = Lens3DTarget::create(lens); // Please make sure the target been added to its parent. this->addChild(pTarget); - //gridNode->addChild(pTarget); + // gridNode->addChild(pTarget); director->getActionManager()->addAction(seq, pTarget, false); - - _bgNode->runAction( lens ); + + _bgNode->runAction(lens); } std::string Effect4::title() const @@ -227,19 +217,16 @@ void Effect5::onEnter() { EffectAdvanceBaseTest::onEnter(); - //CCDirector::getInstance()->setProjection(DirectorProjection2D); - - auto effect = Liquid::create(2, Size(32,24), 1, 20); - - auto stopEffect = Sequence::create( - effect, - DelayTime::create(2), - StopGrid::create(), - // [DelayTime::create:2], - // [[effect copy] autorelease], - nullptr); - - //auto bg = getChildByTag(kTagBackground); + // CCDirector::getInstance()->setProjection(DirectorProjection2D); + + auto effect = Liquid::create(2, Size(32, 24), 1, 20); + + auto stopEffect = Sequence::create(effect, DelayTime::create(2), StopGrid::create(), + // [DelayTime::create:2], + // [[effect copy] autorelease], + nullptr); + + // auto bg = getChildByTag(kTagBackground); _bgNode->runAction(stopEffect); } @@ -263,32 +250,32 @@ void Effect5::onExit() void Issue631::onEnter() { EffectAdvanceBaseTest::onEnter(); - - auto effect = Sequence::create( DelayTime::create(2.0f), Shaky3D::create(5.0f, Size(5, 5), 16, false), nullptr); + + auto effect = Sequence::create(DelayTime::create(2.0f), Shaky3D::create(5.0f, Size(5, 5), 16, false), nullptr); // cleanup - //auto bg = getChildByTag(kTagBackground); + // auto bg = getChildByTag(kTagBackground); removeChild(_bgNode, true); // background - auto layer = LayerColor::create( Color4B(255,0,0,255) ); + auto layer = LayerColor::create(Color4B(255, 0, 0, 255)); addChild(layer, -10); auto sprite = Sprite::create("Images/grossini.png"); - sprite->setPosition(50,80); + sprite->setPosition(50, 80); layer->addChild(sprite, 10); - + // foreground auto layer2BaseGrid = NodeGrid::create(); - auto layer2 = LayerColor::create(Color4B( 0, 255,0,255 ) ); - auto fog = Sprite::create("Images/Fog.png"); + auto layer2 = LayerColor::create(Color4B(0, 255, 0, 255)); + auto fog = Sprite::create("Images/Fog.png"); BlendFunc bf = {backend::BlendFactor::SRC_ALPHA, backend::BlendFactor::ONE_MINUS_SRC_ALPHA}; fog->setBlendFunc(bf); layer2->addChild(fog, 1); addChild(layer2BaseGrid, 1); layer2BaseGrid->addChild(layer2); - - layer2BaseGrid->runAction( RepeatForever::create(effect) ); + + layer2BaseGrid->runAction(RepeatForever::create(effect)); } std::string Issue631::title() const @@ -310,43 +297,41 @@ std::string Issue631::subtitle() const void EffectAdvanceBaseTest::onEnter() { TestCase::onEnter(); - + _bgNode = NodeGrid::create(); - _bgNode->setAnchorPoint(Vec2(0.5f,0.5f)); + _bgNode->setAnchorPoint(Vec2(0.5f, 0.5f)); addChild(_bgNode); //_bgNode->setPosition( VisibleRect::center() ); auto bg = Sprite::create("Images/background3.png"); - bg->setPosition( VisibleRect::center() ); - //addChild(bg, 0, kTagBackground); - //bg->setPosition( VisibleRect::center() ); + bg->setPosition(VisibleRect::center()); + // addChild(bg, 0, kTagBackground); + // bg->setPosition( VisibleRect::center() ); _bgNode->addChild(bg); _target1 = NodeGrid::create(); - _target1->setAnchorPoint(Vec2(0.5f,0.5f)); + _target1->setAnchorPoint(Vec2(0.5f, 0.5f)); auto grossini = Sprite::create("Images/grossinis_sister2.png"); _target1->addChild(grossini); _bgNode->addChild(_target1); - _target1->setPosition(VisibleRect::left().x+VisibleRect::getVisibleRect().size.width/3.0f, VisibleRect::bottom().y+ 200); - auto sc = ScaleBy::create(2, 5); + _target1->setPosition(VisibleRect::left().x + VisibleRect::getVisibleRect().size.width / 3.0f, + VisibleRect::bottom().y + 200); + auto sc = ScaleBy::create(2, 5); auto sc_back = sc->reverse(); - _target1->runAction( RepeatForever::create(Sequence::create(sc, sc_back, nullptr) ) ); - + _target1->runAction(RepeatForever::create(Sequence::create(sc, sc_back, nullptr))); _target2 = NodeGrid::create(); - _target2->setAnchorPoint(Vec2(0.5f,0.5f)); + _target2->setAnchorPoint(Vec2(0.5f, 0.5f)); auto tamara = Sprite::create("Images/grossinis_sister1.png"); _target2->addChild(tamara); _bgNode->addChild(_target2); - _target2->setPosition(VisibleRect::left().x+2*VisibleRect::getVisibleRect().size.width/3.0f,VisibleRect::bottom().y+200); - auto sc2 = ScaleBy::create(2, 5); + _target2->setPosition(VisibleRect::left().x + 2 * VisibleRect::getVisibleRect().size.width / 3.0f, + VisibleRect::bottom().y + 200); + auto sc2 = ScaleBy::create(2, 5); auto sc2_back = sc2->reverse(); - _target2->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr) ) ); - + _target2->runAction(RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr))); } -EffectAdvanceBaseTest::~EffectAdvanceBaseTest() -{ -} +EffectAdvanceBaseTest::~EffectAdvanceBaseTest() {} std::string EffectAdvanceBaseTest::title() const { diff --git a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.h b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.h index da9bcee86570..3613e224783d 100644 --- a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.h +++ b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,12 +30,12 @@ DEFINE_TEST_SUITE(EffectAdvanceTests); -class EffectAdvanceBaseTest: public TestCase +class EffectAdvanceBaseTest : public TestCase { protected: cocos2d::TextureAtlas* _atlas; - std::string _title; + std::string _title; cocos2d::Node* _bgNode; cocos2d::Node* _target1; diff --git a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp index 6963dde53187..de2b32641c5b 100644 --- a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp +++ b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -50,250 +50,250 @@ EffectTests::EffectTests() ADD_TEST_CASE(JumpTiles3DDemo); ADD_TEST_CASE(SplitRowsDemo); ADD_TEST_CASE(SplitColsDemo); -// ADD_TEST_CASE(PageTurn3DDemo); // TODO crash on iPhone X -// ADD_TEST_CASE(PageTurn3DRectDemo); + // ADD_TEST_CASE(PageTurn3DDemo); // TODO crash on iPhone X + // ADD_TEST_CASE(PageTurn3DRectDemo); } Shaky3DDemo::Shaky3DDemo() { - _title = "Shaky3D"; + _title = "Shaky3D"; _subtitle = ""; } cocos2d::ActionInterval* Shaky3DDemo::createEffect(float t) { - return Shaky3D::create(t, Size(15,10), 5, false); + return Shaky3D::create(t, Size(15, 10), 5, false); } Waves3DDemo::Waves3DDemo() { - _title = "Waves3D"; + _title = "Waves3D"; _subtitle = ""; } cocos2d::ActionInterval* Waves3DDemo::createEffect(float t) { - return Waves3D::create(t, Size(15,10), 5, 40); + return Waves3D::create(t, Size(15, 10), 5, 40); } cocos2d::ActionInterval* FlipX3DDemo::createEffect(float t) { - auto flipx = FlipX3D::create(t); + auto flipx = FlipX3D::create(t); auto flipx_back = flipx->reverse(); - auto delay = DelayTime::create(2); + auto delay = DelayTime::create(2); return Sequence::create(flipx, delay, flipx_back, nullptr); } FlipX3DDemo::FlipX3DDemo() { - _title = "FlipX3D"; + _title = "FlipX3D"; _subtitle = ""; } cocos2d::ActionInterval* FlipY3DDemo::createEffect(float t) { - auto flipy = FlipY3D::create(t); + auto flipy = FlipY3D::create(t); auto flipy_back = flipy->reverse(); - auto delay = DelayTime::create(2); - + auto delay = DelayTime::create(2); + return Sequence::create(flipy, delay, flipy_back, nullptr); } FlipY3DDemo::FlipY3DDemo() { - _title = "FlipY3D"; + _title = "FlipY3D"; _subtitle = ""; } cocos2d::ActionInterval* Lens3DDemo::createEffect(float t) { auto size = Director::getInstance()->getWinSize(); - return Lens3D::create(t, Size(15,10), Vec2(size.width/2,size.height/2), 240); + return Lens3D::create(t, Size(15, 10), Vec2(size.width / 2, size.height / 2), 240); } Lens3DDemo::Lens3DDemo() { - _title = "Lens3D"; + _title = "Lens3D"; _subtitle = ""; } cocos2d::ActionInterval* Ripple3DDemo::createEffect(float t) { auto size = Director::getInstance()->getWinSize(); - return Ripple3D::create(t, Size(32,24), Vec2(size.width/2,size.height/2), 240, 4, 160); + return Ripple3D::create(t, Size(32, 24), Vec2(size.width / 2, size.height / 2), 240, 4, 160); } Ripple3DDemo::Ripple3DDemo() { - _title = "Ripple3D"; + _title = "Ripple3D"; _subtitle = ""; } cocos2d::ActionInterval* LiquidDemo::createEffect(float t) { - return Liquid::create(t, Size(16,12), 4, 20); + return Liquid::create(t, Size(16, 12), 4, 20); } LiquidDemo::LiquidDemo() { - _title = "Liquid"; + _title = "Liquid"; _subtitle = ""; } cocos2d::ActionInterval* WavesDemo::createEffect(float t) { - return Waves::create(t, Size(16,12), 4, 20, true, true); + return Waves::create(t, Size(16, 12), 4, 20, true, true); } WavesDemo::WavesDemo() { - _title = "Waves"; + _title = "Waves"; _subtitle = ""; } cocos2d::ActionInterval* TwirlDemo::createEffect(float t) { auto size = Director::getInstance()->getWinSize(); - return Twirl::create(t, Size(12,8), Vec2(size.width/2, size.height/2), 1, 2.5f); + return Twirl::create(t, Size(12, 8), Vec2(size.width / 2, size.height / 2), 1, 2.5f); } TwirlDemo::TwirlDemo() { - _title = "Twirl"; + _title = "Twirl"; _subtitle = ""; } cocos2d::ActionInterval* ShakyTiles3DDemo::createEffect(float t) { - return ShakyTiles3D::create(t, Size(16,12), 5, false) ; + return ShakyTiles3D::create(t, Size(16, 12), 5, false); } ShakyTiles3DDemo::ShakyTiles3DDemo() { - _title = "ShakyTiles3D"; + _title = "ShakyTiles3D"; _subtitle = ""; } cocos2d::ActionInterval* ShatteredTiles3DDemo::createEffect(float t) { - return ShatteredTiles3D::create(t, Size(16,12), 5, false); + return ShatteredTiles3D::create(t, Size(16, 12), 5, false); } ShatteredTiles3DDemo::ShatteredTiles3DDemo() { - _title = "ShatteredTiles3D"; + _title = "ShatteredTiles3D"; _subtitle = ""; } cocos2d::ActionInterval* ShuffleTilesDemo::createEffect(float t) { - auto shuffle = ShuffleTiles::create(t, Size(16,12), 25); + auto shuffle = ShuffleTiles::create(t, Size(16, 12), 25); auto shuffle_back = shuffle->reverse(); - auto delay = DelayTime::create(2); - + auto delay = DelayTime::create(2); + return Sequence::create(shuffle, delay, shuffle_back, nullptr); } ShuffleTilesDemo::ShuffleTilesDemo() { - _title = "ShuffleTiles"; + _title = "ShuffleTiles"; _subtitle = ""; } cocos2d::ActionInterval* FadeOutTRTilesDemo::createEffect(float t) { - auto fadeout = FadeOutTRTiles::create(t, Size(16,12)); - auto back = fadeout->reverse(); - auto delay = DelayTime::create(0.5f); - + auto fadeout = FadeOutTRTiles::create(t, Size(16, 12)); + auto back = fadeout->reverse(); + auto delay = DelayTime::create(0.5f); + return Sequence::create(fadeout, delay, back, nullptr); } FadeOutTRTilesDemo::FadeOutTRTilesDemo() { - _title = "FadeOutTRTiles"; + _title = "FadeOutTRTiles"; _subtitle = ""; } cocos2d::ActionInterval* FadeOutBLTilesDemo::createEffect(float t) { - auto fadeout = FadeOutBLTiles::create(t, Size(16,12)); - auto back = fadeout->reverse(); - auto delay = DelayTime::create(0.5f); - + auto fadeout = FadeOutBLTiles::create(t, Size(16, 12)); + auto back = fadeout->reverse(); + auto delay = DelayTime::create(0.5f); + return Sequence::create(fadeout, delay, back, nullptr); } FadeOutBLTilesDemo::FadeOutBLTilesDemo() { - _title = "FadeOutBLTiles"; + _title = "FadeOutBLTiles"; _subtitle = ""; } cocos2d::ActionInterval* FadeOutUpTilesDemo::createEffect(float t) { - auto fadeout = FadeOutUpTiles::create(t, Size(16,12)); - auto back = fadeout->reverse(); - auto delay = DelayTime::create(0.5f); - + auto fadeout = FadeOutUpTiles::create(t, Size(16, 12)); + auto back = fadeout->reverse(); + auto delay = DelayTime::create(0.5f); + return Sequence::create(fadeout, delay, back, nullptr); } FadeOutUpTilesDemo::FadeOutUpTilesDemo() { - _title = "FadeOutUpTiles"; + _title = "FadeOutUpTiles"; _subtitle = ""; } cocos2d::ActionInterval* FadeOutDownTilesDemo::createEffect(float t) { - auto fadeout = FadeOutDownTiles::create(t, Size(16,12)); - auto back = fadeout->reverse(); - auto delay = DelayTime::create(0.5f); - + auto fadeout = FadeOutDownTiles::create(t, Size(16, 12)); + auto back = fadeout->reverse(); + auto delay = DelayTime::create(0.5f); + return Sequence::create(fadeout, delay, back, nullptr); } FadeOutDownTilesDemo::FadeOutDownTilesDemo() { - _title = "FadeOutDownTiles"; + _title = "FadeOutDownTiles"; _subtitle = ""; } cocos2d::ActionInterval* TurnOffTilesDemo::createEffect(float t) { - auto fadeout = TurnOffTiles::create(t, Size(48,32), 25); - auto back = fadeout->reverse(); - auto delay = DelayTime::create(0.5f); - + auto fadeout = TurnOffTiles::create(t, Size(48, 32), 25); + auto back = fadeout->reverse(); + auto delay = DelayTime::create(0.5f); + return Sequence::create(fadeout, delay, back, nullptr); } TurnOffTilesDemo::TurnOffTilesDemo() { - _title = "TurnOffTiles"; + _title = "TurnOffTiles"; _subtitle = ""; } cocos2d::ActionInterval* WavesTiles3DDemo::createEffect(float t) { - return WavesTiles3D::create(t, Size(15,10), 4, 120); + return WavesTiles3D::create(t, Size(15, 10), 4, 120); } WavesTiles3DDemo::WavesTiles3DDemo() { - _title = "WavesTiles3D"; + _title = "WavesTiles3D"; _subtitle = ""; } cocos2d::ActionInterval* JumpTiles3DDemo::createEffect(float t) { - return JumpTiles3D::create(t, Size(15,10), 2, 30); + return JumpTiles3D::create(t, Size(15, 10), 2, 30); } JumpTiles3DDemo::JumpTiles3DDemo() { - _title = "JumpTiles3D"; + _title = "JumpTiles3D"; _subtitle = ""; } @@ -304,7 +304,7 @@ cocos2d::ActionInterval* SplitRowsDemo::createEffect(float t) SplitRowsDemo::SplitRowsDemo() { - _title = "SplitRows"; + _title = "SplitRows"; _subtitle = ""; } @@ -315,54 +315,48 @@ cocos2d::ActionInterval* SplitColsDemo::createEffect(float t) SplitColsDemo::SplitColsDemo() { - _title = "SplitCols"; + _title = "SplitCols"; _subtitle = ""; } cocos2d::ActionInterval* PageTurn3DDemo::createEffect(float t) { - return PageTurn3D::create(t, Size(15,10)); + return PageTurn3D::create(t, Size(15, 10)); } PageTurn3DDemo::PageTurn3DDemo() { - _title = "PageTurn3D"; + _title = "PageTurn3D"; _subtitle = ""; } cocos2d::ActionInterval* PageTurn3DRectDemo::createEffect(float t) { - return PageTurn3D::create(t, Size(15,10)); + return PageTurn3D::create(t, Size(15, 10)); } PageTurn3DRectDemo::PageTurn3DRectDemo() { - _title = "PageTurn3D-Rect"; + _title = "PageTurn3D-Rect"; _subtitle = ""; } -#define SID_RESTART 1 +#define SID_RESTART 1 -EffectBaseTest::EffectBaseTest() -: _gridNodeTarget(nullptr) -{ - -} +EffectBaseTest::EffectBaseTest() : _gridNodeTarget(nullptr) {} bool EffectBaseTest::init() { - if(TestCase::init()) + if (TestCase::init()) { - LayerColor *background = LayerColor::create( Color4B(32,128,32,255) ); - this->addChild(background,-20); - if(isRectEffect()) + LayerColor* background = LayerColor::create(Color4B(32, 128, 32, 255)); + this->addChild(background, -20); + if (isRectEffect()) { Size visibleSize = Director::getInstance()->getVisibleSize(); - Rect gridRect = Rect(visibleSize.width * 0.2, - visibleSize.height * 0.2, - visibleSize.width * 0.6, - visibleSize.height * 0.6); - _gridNodeTarget = NodeGrid::create(gridRect); + Rect gridRect = Rect(visibleSize.width * 0.2, visibleSize.height * 0.2, visibleSize.width * 0.6, + visibleSize.height * 0.6); + _gridNodeTarget = NodeGrid::create(gridRect); } else { @@ -370,27 +364,29 @@ bool EffectBaseTest::init() } addChild(_gridNodeTarget, 0); _gridNodeTarget->runAction(createEffect(3)); - + auto bg = Sprite::create(s_back3); _gridNodeTarget->addChild(bg, 0); bg->setPosition(VisibleRect::center()); - + auto grossini = Sprite::create(s_pathSister2); _gridNodeTarget->addChild(grossini, 1); - grossini->setPosition(VisibleRect::left().x+VisibleRect::getVisibleRect().size.width/3,VisibleRect::center().y); - auto sc = ScaleBy::create(2, 5); + grossini->setPosition(VisibleRect::left().x + VisibleRect::getVisibleRect().size.width / 3, + VisibleRect::center().y); + auto sc = ScaleBy::create(2, 5); auto sc_back = sc->reverse(); - grossini->runAction( RepeatForever::create(Sequence::create(sc, sc_back, nullptr) ) ); - + grossini->runAction(RepeatForever::create(Sequence::create(sc, sc_back, nullptr))); + auto tamara = Sprite::create(s_pathSister1); _gridNodeTarget->addChild(tamara, 1); - tamara->setPosition(VisibleRect::left().x+2*VisibleRect::getVisibleRect().size.width/3,VisibleRect::center().y); - auto sc2 = ScaleBy::create(2, 5); + tamara->setPosition(VisibleRect::left().x + 2 * VisibleRect::getVisibleRect().size.width / 3, + VisibleRect::center().y); + auto sc2 = ScaleBy::create(2, 5); auto sc2_back = sc2->reverse(); - tamara->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr)) ); - - schedule( CC_SCHEDULE_SELECTOR(EffectBaseTest::checkAnim) ); - + tamara->runAction(RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr))); + + schedule(CC_SCHEDULE_SELECTOR(EffectBaseTest::checkAnim)); + return true; } return false; @@ -398,10 +394,8 @@ bool EffectBaseTest::init() void EffectBaseTest::checkAnim(float dt) { - if ( _gridNodeTarget->getNumberOfRunningActions() == 0 && _gridNodeTarget->getGrid() != nullptr) + if (_gridNodeTarget->getNumberOfRunningActions() == 0 && _gridNodeTarget->getGrid() != nullptr) _gridNodeTarget->setGrid(nullptr); } -EffectBaseTest::~EffectBaseTest() -{ -} +EffectBaseTest::~EffectBaseTest() {} diff --git a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.h b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.h index 3d9e7670642b..7a6bf22a68be 100644 --- a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.h +++ b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,13 +34,14 @@ class EffectBaseTest : public TestCase public: EffectBaseTest(); virtual ~EffectBaseTest(); + protected: virtual bool init() override; - virtual cocos2d::ActionInterval* createEffect(float t) {return nullptr;} + virtual cocos2d::ActionInterval* createEffect(float t) { return nullptr; } void checkAnim(float dt); - virtual bool isRectEffect(){return false;} - virtual std::string title() const override {return _title;}; - virtual std::string subtitle() const override {return _subtitle;}; + virtual bool isRectEffect() { return false; } + virtual std::string title() const override { return _title; }; + virtual std::string subtitle() const override { return _subtitle; }; std::string _title; std::string _subtitle; cocos2d::NodeGrid* _gridNodeTarget; @@ -51,6 +52,7 @@ class Shaky3DDemo : public EffectBaseTest public: CREATE_FUNC(Shaky3DDemo); Shaky3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -60,6 +62,7 @@ class Waves3DDemo : public EffectBaseTest public: CREATE_FUNC(Waves3DDemo); Waves3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -69,6 +72,7 @@ class FlipX3DDemo : public EffectBaseTest public: CREATE_FUNC(FlipX3DDemo); FlipX3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -78,6 +82,7 @@ class FlipY3DDemo : public EffectBaseTest public: CREATE_FUNC(FlipY3DDemo); FlipY3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -87,6 +92,7 @@ class Lens3DDemo : public EffectBaseTest public: CREATE_FUNC(Lens3DDemo); Lens3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -96,6 +102,7 @@ class Ripple3DDemo : public EffectBaseTest public: CREATE_FUNC(Ripple3DDemo); Ripple3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -105,6 +112,7 @@ class LiquidDemo : public EffectBaseTest public: CREATE_FUNC(LiquidDemo); LiquidDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -114,6 +122,7 @@ class WavesDemo : public EffectBaseTest public: CREATE_FUNC(WavesDemo); WavesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -123,6 +132,7 @@ class TwirlDemo : public EffectBaseTest public: CREATE_FUNC(TwirlDemo); TwirlDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -132,6 +142,7 @@ class ShakyTiles3DDemo : public EffectBaseTest public: CREATE_FUNC(ShakyTiles3DDemo); ShakyTiles3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -141,6 +152,7 @@ class ShatteredTiles3DDemo : public EffectBaseTest public: CREATE_FUNC(ShatteredTiles3DDemo); ShatteredTiles3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -150,6 +162,7 @@ class ShuffleTilesDemo : public EffectBaseTest public: CREATE_FUNC(ShuffleTilesDemo); ShuffleTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -159,6 +172,7 @@ class FadeOutTRTilesDemo : public EffectBaseTest public: CREATE_FUNC(FadeOutTRTilesDemo); FadeOutTRTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -168,6 +182,7 @@ class FadeOutBLTilesDemo : public EffectBaseTest public: CREATE_FUNC(FadeOutBLTilesDemo); FadeOutBLTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -177,6 +192,7 @@ class FadeOutUpTilesDemo : public EffectBaseTest public: CREATE_FUNC(FadeOutUpTilesDemo); FadeOutUpTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -186,6 +202,7 @@ class FadeOutDownTilesDemo : public EffectBaseTest public: CREATE_FUNC(FadeOutDownTilesDemo); FadeOutDownTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -195,6 +212,7 @@ class TurnOffTilesDemo : public EffectBaseTest public: CREATE_FUNC(TurnOffTilesDemo); TurnOffTilesDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -204,6 +222,7 @@ class WavesTiles3DDemo : public EffectBaseTest public: CREATE_FUNC(WavesTiles3DDemo); WavesTiles3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -213,6 +232,7 @@ class JumpTiles3DDemo : public EffectBaseTest public: CREATE_FUNC(JumpTiles3DDemo); JumpTiles3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -222,6 +242,7 @@ class SplitRowsDemo : public EffectBaseTest public: CREATE_FUNC(SplitRowsDemo); SplitRowsDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -231,6 +252,7 @@ class SplitColsDemo : public EffectBaseTest public: CREATE_FUNC(SplitColsDemo); SplitColsDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -240,6 +262,7 @@ class PageTurn3DDemo : public EffectBaseTest public: CREATE_FUNC(PageTurn3DDemo); PageTurn3DDemo(); + protected: virtual cocos2d::ActionInterval* createEffect(float t) override; }; @@ -249,8 +272,9 @@ class PageTurn3DRectDemo : public EffectBaseTest public: CREATE_FUNC(PageTurn3DRectDemo); PageTurn3DRectDemo(); + protected: - virtual bool isRectEffect() override {return true;} + virtual bool isRectEffect() override { return true; } virtual cocos2d::ActionInterval* createEffect(float t) override; }; diff --git a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp index dc0ddcf96798..fd9115ce5e42 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,15 +29,18 @@ USING_NS_CC; USING_NS_CC_EXT; -const char* sceneManifests[] = {"Manifests/AMTestScene1/project.manifest", "Manifests/AMTestScene2/project.manifest", "Manifests/AMTestScene3/project.manifest"}; -const char* storagePaths[] = {"CppTests/AssetsManagerExTest/scene1/", "CppTests/AssetsManagerExTest/scene2/", "CppTests/AssetsManagerExTest/scene3"}; -const char* backgroundPaths[] = {"Images/assetMgrBackground1.jpg", "Images/assetMgrBackground2.png", "Images/assetMgrBackground3.png"}; +const char* sceneManifests[] = {"Manifests/AMTestScene1/project.manifest", "Manifests/AMTestScene2/project.manifest", + "Manifests/AMTestScene3/project.manifest"}; +const char* storagePaths[] = {"CppTests/AssetsManagerExTest/scene1/", "CppTests/AssetsManagerExTest/scene2/", + "CppTests/AssetsManagerExTest/scene3"}; +const char* backgroundPaths[] = {"Images/assetMgrBackground1.jpg", "Images/assetMgrBackground2.png", + "Images/assetMgrBackground3.png"}; AssetsManagerExTests::AssetsManagerExTests() { - addTestCase("AssetsManager Test1", [](){ return AssetsManagerExLoaderScene::create(0); }); - addTestCase("AssetsManager Test2", [](){ return AssetsManagerExLoaderScene::create(1); }); - addTestCase("AssetsManager Test3", [](){ return AssetsManagerExLoaderScene::create(2); }); + addTestCase("AssetsManager Test1", []() { return AssetsManagerExLoaderScene::create(0); }); + addTestCase("AssetsManager Test2", []() { return AssetsManagerExLoaderScene::create(1); }); + addTestCase("AssetsManager Test3", []() { return AssetsManagerExLoaderScene::create(2); }); } AssetsManagerExLoaderScene* AssetsManagerExLoaderScene::create(int testIndex) @@ -57,15 +60,13 @@ AssetsManagerExLoaderScene* AssetsManagerExLoaderScene::create(int testIndex) } AssetsManagerExLoaderScene::AssetsManagerExLoaderScene(int testIndex) -: _testIndex(testIndex) -, _loadLayer(nullptr) -, _downloadMenu(nullptr) -, _am(nullptr) -, _progress(nullptr) -, _amListener(nullptr) -{ - -} + : _testIndex(testIndex) + , _loadLayer(nullptr) + , _downloadMenu(nullptr) + , _am(nullptr) + , _progress(nullptr) + , _amListener(nullptr) +{} bool AssetsManagerExLoaderScene::init() { @@ -75,7 +76,8 @@ bool AssetsManagerExLoaderScene::init() } auto downloadLabel = Label::createWithTTF("Start Download", "fonts/arial.ttf", 16); - auto downloadItem = MenuItemLabel::create(downloadLabel, CC_CALLBACK_1(AssetsManagerExLoaderScene::startDownloadCallback, this)); + auto downloadItem = + MenuItemLabel::create(downloadLabel, CC_CALLBACK_1(AssetsManagerExLoaderScene::startDownloadCallback, this)); downloadItem->setPosition(Vec2(VisibleRect::center().x, VisibleRect::bottom().y + 100)); _downloadMenu = Menu::create(downloadItem, nullptr); _downloadMenu->setPosition(Vec2::ZERO); @@ -86,14 +88,15 @@ bool AssetsManagerExLoaderScene::init() auto sprite = Sprite::create("Images/Icon.png"); _loadLayer->addChild(sprite); - sprite->setPosition( VisibleRect::center() ); - + sprite->setPosition(VisibleRect::center()); + TTFConfig config("fonts/tahoma.ttf", 30); _progress = Label::createWithTTF(config, "0%", TextHAlignment::CENTER); - _progress->setPosition( Vec2(VisibleRect::center().x, VisibleRect::center().y + 50) ); + _progress->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + 50)); _loadLayer->addChild(_progress); - - std::string manifestPath = sceneManifests[_testIndex], storagePath = FileUtils::getInstance()->getWritablePath() + storagePaths[_testIndex]; + + std::string manifestPath = sceneManifests[_testIndex], + storagePath = FileUtils::getInstance()->getWritablePath() + storagePaths[_testIndex]; CCLOG("Storage path for this test : %s", storagePath.c_str()); _am = AssetsManagerEx::create(manifestPath, storagePath); _am->retain(); @@ -123,83 +126,84 @@ void AssetsManagerExLoaderScene::startDownloadCallback(Ref* sender) } else { - _amListener = cocos2d::extension::EventListenerAssetsManagerEx::create(_am, [this](EventAssetsManagerEx* event){ - static int failCount = 0; - switch (event->getEventCode()) - { - case EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST: - { - CCLOG("No local manifest file found, skip assets update."); - this->onLoadEnd(); - } - break; - case EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION: - { - std::string assetId = event->getAssetId(); - float percent = event->getPercent(); - std::string str; - if (assetId == AssetsManagerEx::VERSION_ID) + _amListener = + cocos2d::extension::EventListenerAssetsManagerEx::create(_am, [this](EventAssetsManagerEx* event) { + static int failCount = 0; + switch (event->getEventCode()) { - str = StringUtils::format("Version file: %.2f", percent) + "%"; - } - else if (assetId == AssetsManagerEx::MANIFEST_ID) + case EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST: { - str = StringUtils::format("Manifest file: %.2f", percent) + "%"; + CCLOG("No local manifest file found, skip assets update."); + this->onLoadEnd(); } - else + break; + case EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION: { - str = StringUtils::format("%.2f", percent) + "%"; - CCLOG("%.2f Percent", percent); + std::string assetId = event->getAssetId(); + float percent = event->getPercent(); + std::string str; + if (assetId == AssetsManagerEx::VERSION_ID) + { + str = StringUtils::format("Version file: %.2f", percent) + "%"; + } + else if (assetId == AssetsManagerEx::MANIFEST_ID) + { + str = StringUtils::format("Manifest file: %.2f", percent) + "%"; + } + else + { + str = StringUtils::format("%.2f", percent) + "%"; + CCLOG("%.2f Percent", percent); + } + if (this->_progress != nullptr) + this->_progress->setString(str); } - if (this->_progress != nullptr) - this->_progress->setString(str); - } - break; - case EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST: - case EventAssetsManagerEx::EventCode::ERROR_PARSE_MANIFEST: - { - CCLOG("Fail to download manifest file, update skipped."); - this->onLoadEnd(); - } - break; - case EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE: - case EventAssetsManagerEx::EventCode::UPDATE_FINISHED: - { - CCLOG("Update finished. %s", event->getMessage().c_str()); - this->onLoadEnd(); - } - break; - case EventAssetsManagerEx::EventCode::UPDATE_FAILED: - { - CCLOG("Update failed. %s", event->getMessage().c_str()); - - failCount++; - if (failCount < 5) + break; + case EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST: + case EventAssetsManagerEx::EventCode::ERROR_PARSE_MANIFEST: { - _am->downloadFailedAssets(); + CCLOG("Fail to download manifest file, update skipped."); + this->onLoadEnd(); } - else + break; + case EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE: + case EventAssetsManagerEx::EventCode::UPDATE_FINISHED: { - CCLOG("Reach maximum fail count, exit update process"); - failCount = 0; + CCLOG("Update finished. %s", event->getMessage().c_str()); this->onLoadEnd(); } - } - break; - case EventAssetsManagerEx::EventCode::ERROR_UPDATING: - { - CCLOG("Asset %s : %s", event->getAssetId().c_str(), event->getMessage().c_str()); - } - break; - case EventAssetsManagerEx::EventCode::ERROR_DECOMPRESS: - { - CCLOG("%s", event->getMessage().c_str()); - } - break; - default: break; - } - }); + case EventAssetsManagerEx::EventCode::UPDATE_FAILED: + { + CCLOG("Update failed. %s", event->getMessage().c_str()); + + failCount++; + if (failCount < 5) + { + _am->downloadFailedAssets(); + } + else + { + CCLOG("Reach maximum fail count, exit update process"); + failCount = 0; + this->onLoadEnd(); + } + } + break; + case EventAssetsManagerEx::EventCode::ERROR_UPDATING: + { + CCLOG("Asset %s : %s", event->getAssetId().c_str(), event->getMessage().c_str()); + } + break; + case EventAssetsManagerEx::EventCode::ERROR_DECOMPRESS: + { + CCLOG("%s", event->getMessage().c_str()); + } + break; + default: + break; + } + }); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_amListener, 1); _am->update(); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h index b817ff9bf819..a3ba81dc8935 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -36,14 +36,14 @@ class AssetsManagerExLoaderScene : public TestCase static AssetsManagerExLoaderScene* create(int testIndex); AssetsManagerExLoaderScene(int testIndex); - + void startDownloadCallback(cocos2d::Ref* sender); virtual std::string title() const override; virtual bool init() override; virtual void onExit() override; - + private: int _testIndex; cocos2d::Layer* _loadLayer; diff --git a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp index 4e8460233be1..d30100ae5f11 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,6 +29,6 @@ ExtensionsTests::ExtensionsTests() { - addTest("AssetsManagerExTest", [](){ return new AssetsManagerExTests; }); - addTest("TableViewTest", [](){ return new TableViewTests; }); + addTest("AssetsManagerExTest", []() { return new AssetsManagerExTests; }); + addTest("TableViewTest", []() { return new TableViewTests; }); } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.h b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.h index 2a02f0627fe4..665686ae9092 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp index badafef57f76..2cdde3fb2317 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,18 +26,18 @@ USING_NS_CC; -void CustomTableViewCell::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) +void CustomTableViewCell::draw(Renderer* renderer, const Mat4& transform, uint32_t flags) { - TableViewCell::draw(renderer, transform, flags); - // draw bounding box -// auto pos = getPosition(); -// auto size = Size(178, 200); -// Vec2 vertices[4]={ -// Vec2(pos.x+1, pos.y+1), -// Vec2(pos.x+size.width-1, pos.y+1), -// Vec2(pos.x+size.width-1, pos.y+size.height-1), -// Vec2(pos.x+1, pos.y+size.height-1), -// }; -// DrawPrimitives::drawColor4B(0, 0, 255, 255); -// DrawPrimitives::drawPoly(vertices, 4, true); + TableViewCell::draw(renderer, transform, flags); + // draw bounding box + // auto pos = getPosition(); + // auto size = Size(178, 200); + // Vec2 vertices[4]={ + // Vec2(pos.x+1, pos.y+1), + // Vec2(pos.x+size.width-1, pos.y+1), + // Vec2(pos.x+size.width-1, pos.y+size.height-1), + // Vec2(pos.x+1, pos.y+size.height-1), + // }; + // DrawPrimitives::drawColor4B(0, 0, 255, 255); + // DrawPrimitives::drawPoly(vertices, 4, true); } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.h b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.h index 4fd2f0fe41c6..60ab09bad99c 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,8 +34,7 @@ class CustomTableViewCell : public cocos2d::extension::TableViewCell { public: - virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override; + virtual void draw(cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, uint32_t flags) override; }; #endif /* __CUSTOMTABELVIEWCELL_H__ */ - diff --git a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp index e496b7735915..249c4fa07f93 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -37,16 +37,16 @@ TableViewTests::TableViewTests() // on "init" you need to initialize your instance bool TableViewTest::init() { - if ( !TestCase::init() ) + if (!TestCase::init()) { return false; } - Size winSize = Director::getInstance()->getWinSize(); + Size winSize = Director::getInstance()->getWinSize(); TableView* tableView = TableView::create(this, Size(250.0f, 60.0f)); tableView->setDirection(ScrollView::Direction::HORIZONTAL); - tableView->setPosition(Vec2(20.0f,winSize.height/2-30)); + tableView->setPosition(Vec2(20.0f, winSize.height / 2 - 30)); tableView->setDelegate(this); this->addChild(tableView); tableView->reloadData(); @@ -57,14 +57,13 @@ bool TableViewTest::init() tableView->removeChild(testNode, true); CCAssert(nullptr == tableView->getChildByName("testNode"), "The added child has been removed!"); - - tableView = TableView::create(this, Size(60.0f, 250.0f)); - tableView->setDirection(ScrollView::Direction::VERTICAL); - tableView->setPosition(Vec2(winSize.width-150,winSize.height/2-120)); - tableView->setDelegate(this); - tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); - this->addChild(tableView); - tableView->reloadData(); + tableView = TableView::create(this, Size(60.0f, 250.0f)); + tableView->setDirection(ScrollView::Direction::VERTICAL); + tableView->setPosition(Vec2(winSize.width - 150, winSize.height / 2 - 120)); + tableView->setDelegate(this); + tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); + this->addChild(tableView); + tableView->reloadData(); return true; } @@ -74,19 +73,21 @@ void TableViewTest::tableCellTouched(TableView* table, TableViewCell* cell) CCLOG("cell touched at index: %d", static_cast(cell->getIdx())); } -Size TableViewTest::tableCellSizeForIndex(TableView *table, ssize_t idx) +Size TableViewTest::tableCellSizeForIndex(TableView* table, ssize_t idx) { - if (idx == 2) { + if (idx == 2) + { return Size(100, 100); } return Size(60, 60); } -TableViewCell* TableViewTest::tableCellAtIndex(TableView *table, ssize_t idx) +TableViewCell* TableViewTest::tableCellAtIndex(TableView* table, ssize_t idx) { - auto string = StringUtils::format("%d", static_cast(idx)); - TableViewCell *cell = table->dequeueCell(); - if (!cell) { + auto string = StringUtils::format("%d", static_cast(idx)); + TableViewCell* cell = table->dequeueCell(); + if (!cell) + { cell = new CustomTableViewCell(); cell->autorelease(); auto sprite = Sprite::create("Images/Icon.png"); @@ -96,7 +97,7 @@ TableViewCell* TableViewTest::tableCellAtIndex(TableView *table, ssize_t idx) auto label = Label::createWithSystemFont(string, "Helvetica", 20.0); label->setPosition(Vec2::ZERO); - label->setAnchorPoint(Vec2::ZERO); + label->setAnchorPoint(Vec2::ZERO); label->setTag(123); cell->addChild(label); } @@ -106,11 +107,10 @@ TableViewCell* TableViewTest::tableCellAtIndex(TableView *table, ssize_t idx) label->setString(string); } - return cell; } -ssize_t TableViewTest::numberOfCellsInTableView(TableView *table) +ssize_t TableViewTest::numberOfCellsInTableView(TableView* table) { return 20; } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.h b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.h index f01df050ccc8..a439f924dbd5 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,19 +31,23 @@ DEFINE_TEST_SUITE(TableViewTests); -class TableViewTest : public TestCase, public cocos2d::extension::TableViewDataSource, public cocos2d::extension::TableViewDelegate +class TableViewTest : public TestCase, + public cocos2d::extension::TableViewDataSource, + public cocos2d::extension::TableViewDelegate { public: CREATE_FUNC(TableViewTest); - virtual bool init() override; - - virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view)override {}; - virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view)override {} - virtual void tableCellTouched(cocos2d::extension::TableView* table, cocos2d::extension::TableViewCell* cell)override; - virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView *table, ssize_t idx)override; - virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView *table, ssize_t idx)override; - virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView *table)override; + virtual bool init() override; + + virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view) override{}; + virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view) override {} + virtual void tableCellTouched(cocos2d::extension::TableView* table, + cocos2d::extension::TableViewCell* cell) override; + virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView* table, ssize_t idx) override; + virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView* table, + ssize_t idx) override; + virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView* table) override; }; -#endif // __TABLEVIEWTESTSCENE_H__ +#endif // __TABLEVIEWTESTSCENE_H__ diff --git a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp index 70ff519daf20..4a8d50b81913 100644 --- a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp +++ b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -60,26 +60,27 @@ void TestResolutionDirectories::onEnter() std::string ret; sharedFileUtils->purgeCachedEntries(); - _defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths(); + _defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths(); std::vector searchPaths = _defaultSearchPathArray; - searchPaths.insert(searchPaths.begin(), "Misc"); + searchPaths.insert(searchPaths.begin(), "Misc"); sharedFileUtils->setSearchPaths(searchPaths); - _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder(); + _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder(); std::vector resolutionsOrder = _defaultResolutionsOrderArray; resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipadhd"); - resolutionsOrder.insert(resolutionsOrder.begin()+1, "resources-ipad"); - resolutionsOrder.insert(resolutionsOrder.begin()+2, "resources-widehd"); - resolutionsOrder.insert(resolutionsOrder.begin()+3, "resources-wide"); - resolutionsOrder.insert(resolutionsOrder.begin()+4, "resources-hd"); - resolutionsOrder.insert(resolutionsOrder.begin()+5, "resources-iphone"); + resolutionsOrder.insert(resolutionsOrder.begin() + 1, "resources-ipad"); + resolutionsOrder.insert(resolutionsOrder.begin() + 2, "resources-widehd"); + resolutionsOrder.insert(resolutionsOrder.begin() + 3, "resources-wide"); + resolutionsOrder.insert(resolutionsOrder.begin() + 4, "resources-hd"); + resolutionsOrder.insert(resolutionsOrder.begin() + 5, "resources-iphone"); sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder); - for( int i=1; i<7; i++) { + for (int i = 1; i < 7; i++) + { auto filename = StringUtils::format("test%d.txt", i); - ret = sharedFileUtils->fullPathForFilename(filename); + ret = sharedFileUtils->fullPathForFilename(filename); log("%s -> %s", filename.c_str(), ret.c_str()); } } @@ -114,12 +115,12 @@ void TestSearchPath::onEnter() std::string ret; sharedFileUtils->purgeCachedEntries(); - _defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths(); + _defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths(); std::vector searchPaths = _defaultSearchPathArray; - std::string writablePath = sharedFileUtils->getWritablePath(); - std::string fileName = writablePath+"external.txt"; - char szBuf[100] = "Hello Cocos2d-x!"; - FILE* fp = fopen(fileName.c_str(), "wb"); + std::string writablePath = sharedFileUtils->getWritablePath(); + std::string fileName = writablePath + "external.txt"; + char szBuf[100] = "Hello Cocos2d-x!"; + FILE* fp = fopen(fileName.c_str(), "wb"); if (fp) { size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp); @@ -130,19 +131,20 @@ void TestSearchPath::onEnter() } searchPaths.insert(searchPaths.begin(), writablePath); - searchPaths.insert(searchPaths.begin()+1, "Misc/searchpath1"); - searchPaths.insert(searchPaths.begin()+2, "Misc/searchpath2"); + searchPaths.insert(searchPaths.begin() + 1, "Misc/searchpath1"); + searchPaths.insert(searchPaths.begin() + 2, "Misc/searchpath2"); sharedFileUtils->setSearchPaths(searchPaths); - _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder(); + _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder(); std::vector resolutionsOrder = _defaultResolutionsOrderArray; resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipad"); sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder); - for( int i=1; i<3; i++) { + for (int i = 1; i < 3; i++) + { auto filename = StringUtils::format("file%d.txt", i); - ret = sharedFileUtils->fullPathForFilename(filename); + ret = sharedFileUtils->fullPathForFilename(filename); log("%s -> %s", filename.c_str(), ret.c_str()); } @@ -155,7 +157,7 @@ void TestSearchPath::onEnter() if (fp) { char szReadBuf[100] = {0}; - size_t read = fread(szReadBuf, 1, strlen(szReadBuf), fp); + size_t read = fread(szReadBuf, 1, strlen(szReadBuf), fp); if (read > 0) log("The content of file from writable path: %s", szReadBuf); fclose(fp); @@ -188,7 +190,7 @@ void TestSearchPath::onEnter() void TestSearchPath::onExit() { - FileUtils *sharedFileUtils = FileUtils::getInstance(); + FileUtils* sharedFileUtils = FileUtils::getInstance(); // reset search path sharedFileUtils->setSearchPaths(_defaultSearchPathArray); @@ -225,13 +227,13 @@ void TestFilenameLookup::onEnter() this->addChild(sprite); auto s = Director::getInstance()->getWinSize(); - sprite->setPosition(s.width/2, s.height/2); + sprite->setPosition(s.width / 2, s.height / 2); } void TestFilenameLookup::onExit() { - FileUtils *sharedFileUtils = FileUtils::getInstance(); + FileUtils* sharedFileUtils = FileUtils::getInstance(); // reset filename lookup sharedFileUtils->setFilenameLookupDictionary(ValueMap()); @@ -249,7 +251,7 @@ std::string TestFilenameLookup::title() const void TestIsFileExist::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto sharedFileUtils = FileUtils::getInstance(); Label* label = nullptr; @@ -257,20 +259,22 @@ void TestIsFileExist::onEnter() isExist = sharedFileUtils->isFileExist("Images/grossini.png"); - label = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20); - label->setPosition(s.width/2, s.height/3); + label = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", + "", 20); + label->setPosition(s.width / 2, s.height / 3); this->addChild(label); isExist = sharedFileUtils->isFileExist("Images/grossini.xcf"); - label = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20); - label->setPosition(s.width/2, s.height/3*2); + label = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", + "", 20); + label->setPosition(s.width / 2, s.height / 3 * 2); this->addChild(label); } void TestIsFileExist::onExit() { - FileUtils *sharedFileUtils = FileUtils::getInstance(); + FileUtils* sharedFileUtils = FileUtils::getInstance(); // reset filename lookup sharedFileUtils->setFilenameLookupDictionary(ValueMap()); @@ -293,30 +297,29 @@ std::string TestIsFileExist::subtitle() const void TestIsDirectoryExist::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto util = FileUtils::getInstance(); - int x = s.width/2, y = s.height/3; + int x = s.width / 2, y = s.height / 3; Label* label = nullptr; std::string dir; - auto getMsg = [&dir](bool b)-> std::string - { + auto getMsg = [&dir](bool b) -> std::string { char msg[512]; - snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.c_str()); + snprintf((char*)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.c_str()); return std::string(msg); }; - dir = "Images"; + dir = "Images"; label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20); label->setPosition(x, y * 2); this->addChild(label); - dir = util->getWritablePath(); + dir = util->getWritablePath(); label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20); label->setPosition(x, y * 1); this->addChild(label); - dir = util->getWritablePath(); + dir = util->getWritablePath(); label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20); label->setPosition(x, y * 1); this->addChild(label); @@ -325,7 +328,7 @@ void TestIsDirectoryExist::onEnter() void TestIsDirectoryExist::onExit() { - FileUtils *sharedFileUtils = FileUtils::getInstance(); + FileUtils* sharedFileUtils = FileUtils::getInstance(); // reset filename lookup sharedFileUtils->purgeCachedEntries(); @@ -348,20 +351,19 @@ std::string TestIsDirectoryExist::subtitle() const void TestFileFuncs::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto sharedFileUtils = FileUtils::getInstance(); - int x = s.width/2, - y = s.height/5; + int x = s.width / 2, y = s.height / 5; Label* label = nullptr; - std::string filename = "__test.test"; + std::string filename = "__test.test"; std::string filename2 = "__newtest.test"; - std::string filepath = sharedFileUtils->getWritablePath() + filename; - std::string content = "Test string content to put into created file"; + std::string filepath = sharedFileUtils->getWritablePath() + filename; + std::string content = "Test string content to put into created file"; std::string msg; - FILE *out = fopen(filepath.c_str(), "w"); + FILE* out = fopen(filepath.c_str(), "w"); fputs(content.c_str(), out); fclose(out); @@ -374,8 +376,8 @@ void TestFileFuncs::onEnter() // getFileSize Test int32_t size = sharedFileUtils->getFileSize(filepath); - msg = StringUtils::format("getFileSize: Test file size equals %d", size); - label = Label::createWithSystemFont(msg, "", 20); + msg = StringUtils::format("getFileSize: Test file size equals %d", size); + label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 3); this->addChild(label); @@ -403,7 +405,8 @@ void TestFileFuncs::onEnter() } else { - label = Label::createWithSystemFont("renameFile: Failed to rename test file to '__newtest.test', further test skipped", "", 20); + label = Label::createWithSystemFont( + "renameFile: Failed to rename test file to '__newtest.test', further test skipped", "", 20); label->setPosition(x, y * 2); this->addChild(label); } @@ -431,15 +434,14 @@ std::string TestFileFuncs::subtitle() const void TestDirectoryFuncs::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto sharedFileUtils = FileUtils::getInstance(); - int x = s.width/2, - y = s.height/4; + int x = s.width / 2, y = s.height / 4; Label* label = nullptr; - std::string dir = sharedFileUtils->getWritablePath() + "__test"; - std::string subDir = "dir1/dir2"; + std::string dir = sharedFileUtils->getWritablePath() + "__test"; + std::string subDir = "dir1/dir2"; std::string fullSubDir = dir + "/" + subDir; std::string msg; bool ok; @@ -448,7 +450,7 @@ void TestDirectoryFuncs::onEnter() ok = sharedFileUtils->createDirectory(dir); if (ok && sharedFileUtils->isDirectoryExist(dir)) { - msg = StringUtils::format("createDirectory: Directory '__test' created"); + msg = StringUtils::format("createDirectory: Directory '__test' created"); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 3); this->addChild(label); @@ -457,14 +459,14 @@ void TestDirectoryFuncs::onEnter() ok = sharedFileUtils->createDirectory(fullSubDir); if (ok && sharedFileUtils->isDirectoryExist(fullSubDir)) { - msg = StringUtils::format("createDirectory: Sub directories '%s' created", subDir.c_str()); + msg = StringUtils::format("createDirectory: Sub directories '%s' created", subDir.c_str()); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 2); this->addChild(label); } else { - msg = StringUtils::format("createDirectory: Failed to create sub directories '%s'", subDir.c_str()); + msg = StringUtils::format("createDirectory: Failed to create sub directories '%s'", subDir.c_str()); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 2); this->addChild(label); @@ -474,14 +476,14 @@ void TestDirectoryFuncs::onEnter() ok = sharedFileUtils->removeDirectory(dir); if (ok && !sharedFileUtils->isDirectoryExist(dir)) { - msg = StringUtils::format("removeDirectory: Directory '__test' removed"); + msg = StringUtils::format("removeDirectory: Directory '__test' removed"); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y); this->addChild(label); } else { - msg = StringUtils::format("removeDirectory: Failed to remove directory '__test'"); + msg = StringUtils::format("removeDirectory: Failed to remove directory '__test'"); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y); this->addChild(label); @@ -489,7 +491,7 @@ void TestDirectoryFuncs::onEnter() } else { - msg = StringUtils::format("createDirectory: Directory '__test' can not be created"); + msg = StringUtils::format("createDirectory: Directory '__test' can not be created"); label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 2); this->addChild(label); @@ -521,11 +523,11 @@ void TestWriteString::onEnter() readResult->setPosition(winSize.width / 2, winSize.height / 3); std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fileName = "writeStringTest.txt"; + std::string fileName = "writeStringTest.txt"; // writeTest std::string writeDataStr = "the string data will be write into a file"; - std::string fullPath = writablePath + fileName; + std::string fullPath = writablePath + fileName; if (FileUtils::getInstance()->writeStringToFile(writeDataStr, fullPath.c_str())) { log("see the plist file at %s", fullPath.c_str()); @@ -557,42 +559,34 @@ std::string TestWriteString::subtitle() const return ""; } -class CustomBuffer : public ResizableBuffer {}; +class CustomBuffer : public ResizableBuffer +{}; -struct AlreadyExistsBuffer {}; +struct AlreadyExistsBuffer +{}; NS_CC_BEGIN -template<> -class ResizableBufferAdapter : public ResizableBuffer { +template <> +class ResizableBufferAdapter : public ResizableBuffer +{ public: - explicit ResizableBufferAdapter(AlreadyExistsBuffer* buffer) { - } - virtual void resize(size_t size) override { - - } - virtual void* buffer() const override { - return nullptr; - } + explicit ResizableBufferAdapter(AlreadyExistsBuffer* buffer) {} + virtual void resize(size_t size) override {} + virtual void* buffer() const override { return nullptr; } }; NS_CC_END -static void saveAsBinaryText(std::string_view filename, const std::vector& binary){ +static void saveAsBinaryText(std::string_view filename, const std::vector& binary) +{ auto fs = FileUtils::getInstance(); std::string text(binary.begin(), binary.end()); fs->writeStringToFile(text, filename); } static const std::string FileErrors[] = { - "OK", - "NotExists", - "OpenFailed", - "ReadFailed", - "NotInitialized", - "TooLarge", - "ObtainSizeFailed", + "OK", "NotExists", "OpenFailed", "ReadFailed", "NotInitialized", "TooLarge", "ObtainSizeFailed", }; - void TestGetContents::onEnter() { FileUtilsDemo::onEnter(); @@ -612,26 +606,25 @@ void TestGetContents::onEnter() this->addChild(readResult); readResult->setPosition(winSize.width / 2, winSize.height / 2); - std::vector binary = {'\r','\n','\r','\n','\0','\0','\r','\n'}; - _generatedFile = fs->getWritablePath() + "file-with-zeros-and-crlf"; + std::vector binary = {'\r', '\n', '\r', '\n', '\0', '\0', '\r', '\n'}; + _generatedFile = fs->getWritablePath() + "file-with-zeros-and-crlf"; saveAsBinaryText(_generatedFile, binary); - auto runTests = [&]() { // Test read string in binary mode std::string bs; fs->getContents(_generatedFile, &bs); - if ( bs.size() != binary.size() || !std::equal( bs.begin(), bs.end(), binary.begin() ) ) + if (bs.size() != binary.size() || !std::equal(bs.begin(), bs.end(), binary.begin())) return std::string("failed: read as binary string"); // Text read string in text mode std::string ts = fs->getStringFromFile(_generatedFile); - if (strcmp(ts.c_str(), "\r\n\r\n")!=0) + if (strcmp(ts.c_str(), "\r\n\r\n") != 0) return std::string("failed: read as zero terminated string"); - std::string files[] = {_generatedFile, "background.wav", "fileLookup.plist"}; - for (auto& file : files) { + for (auto& file : files) + { std::string sbuf; auto serr = fs->getContents(file, &sbuf); @@ -695,12 +688,12 @@ void TestWriteData::onEnter() readResult->setPosition(winSize.width / 2, winSize.height / 3); std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fileName = "writeDataTest.txt"; + std::string fileName = "writeDataTest.txt"; // writeTest std::string writeDataStr = "the binary data will be write into a file"; Data writeData; - writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size()); + writeData.copy((unsigned char*)writeDataStr.c_str(), writeDataStr.size()); std::string fullPath = writablePath + fileName; if (FileUtils::getInstance()->writeDataToFile(writeData, fullPath.c_str())) { @@ -715,8 +708,8 @@ void TestWriteData::onEnter() // readTest unsigned char* buffer = nullptr; - Data readData = FileUtils::getInstance()->getDataFromFile(fullPath); - buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1)); + Data readData = FileUtils::getInstance()->getDataFromFile(fullPath); + buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1)); memcpy(buffer, readData.getBytes(), readData.getSize()); buffer[readData.getSize()] = '\0'; std::string readDataStr((const char*)buffer); @@ -760,7 +753,7 @@ void TestWriteValueMap::onEnter() mapInValueMap["string1"] = "string in dictInMap key 0"; mapInValueMap["string2"] = "string in dictInMap key 1"; mapInValueMap["none"].getType(); - + valueMap["data0"] = Value(mapInValueMap); valueMap["data1"] = Value("string in array"); @@ -770,26 +763,25 @@ void TestWriteValueMap::onEnter() arrayInMap.push_back(Value("string 1 in arrayInMap")); valueMap["data2"] = arrayInMap; - //add boolean to the plist + // add boolean to the plist auto booleanObject = Value(true); - valueMap["data3"] = booleanObject; + valueMap["data3"] = booleanObject; - //add integer to the plist - auto intObject = Value(1024); + // add integer to the plist + auto intObject = Value(1024); valueMap["data4"] = intObject; - //add float to the plist - auto floatObject = Value(1024.1024f); + // add float to the plist + auto floatObject = Value(1024.1024f); valueMap["data5"] = floatObject; - //add double to the plist + // add double to the plist auto doubleObject = Value(1024.123); valueMap["data6"] = doubleObject; - // end with / std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fullPath = writablePath + "testWriteValueMap.plist"; + std::string fullPath = writablePath + "testWriteValueMap.plist"; if (FileUtils::getInstance()->writeValueMapToFile(valueMap, fullPath.c_str())) { log("see the plist file at %s", fullPath.c_str()); @@ -801,7 +793,7 @@ void TestWriteValueMap::onEnter() writeResult->setString("write failed"); } - ValueMap readValueMap = FileUtils::getInstance()->getValueMapFromFile(fullPath.c_str()); + ValueMap readValueMap = FileUtils::getInstance()->getValueMapFromFile(fullPath.c_str()); std::string readDataStr = "read data:\n"; // read value map data ValueMap readMapInMap = readValueMap["data0"].asValueMap(); @@ -873,26 +865,25 @@ void TestWriteValueVector::onEnter() arrayInArray.push_back(Value("string 1 in arrayInArray")); array.push_back(Value(arrayInArray)); - //add boolean to the plist + // add boolean to the plist auto booleanObject = Value(true); array.push_back(booleanObject); - //add integer to the plist + // add integer to the plist auto intObject = Value(1024); array.push_back(intObject); - //add float to the plist + // add float to the plist auto floatObject = Value(1024.1024f); array.push_back(floatObject); - //add double to the plist + // add double to the plist auto doubleObject = Value(1024.123); array.push_back(doubleObject); - // end with / std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fullPath = writablePath + "testWriteValueVector.plist"; + std::string fullPath = writablePath + "testWriteValueVector.plist"; if (FileUtils::getInstance()->writeValueVectorToFile(array, fullPath.c_str())) { log("see the plist file at %s", fullPath.c_str()); @@ -904,7 +895,7 @@ void TestWriteValueVector::onEnter() writeResult->setString("write failed"); } - ValueVector readArray = FileUtils::getInstance()->getValueVectorFromFile(fullPath.c_str()); + ValueVector readArray = FileUtils::getInstance()->getValueVectorFromFile(fullPath.c_str()); std::string readDataStr = "read data:\n"; // read value map data ValueMap readMapInArray = readArray.at(0).asValueMap(); @@ -954,21 +945,19 @@ std::string TestWriteValueVector::subtitle() const void TestUnicodePath::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto util = FileUtils::getInstance(); - int x = s.width/2, - y = s.height/5; + int x = s.width / 2, y = s.height / 5; Label* label = nullptr; - std::string dir = "中文路径/"; + std::string dir = "中文路径/"; std::string filename = "测试文件.test"; std::string act; - auto getMsg = [&act](bool b, std::string_view path)-> std::string - { + auto getMsg = [&act](bool b, std::string_view path) -> std::string { char msg[512]; - snprintf((char *)msg, 512, "%s for %s path: \"%s\"", b ? "success" : "failed", act.c_str(), path.data()); + snprintf((char*)msg, 512, "%s for %s path: \"%s\"", b ? "success" : "failed", act.c_str(), path.data()); return std::string(msg); }; @@ -979,9 +968,9 @@ void TestUnicodePath::onEnter() util->createDirectory(dirPath); } - act = "create"; + act = "create"; bool isExist = util->isDirectoryExist(dirPath); - label = Label::createWithSystemFont(getMsg(isExist, dirPath), "", 12, Size(s.width, 0)); + label = Label::createWithSystemFont(getMsg(isExist, dirPath), "", 12, Size(s.width, 0)); label->setPosition(x, y * 4); this->addChild(label); @@ -989,16 +978,16 @@ void TestUnicodePath::onEnter() { // Check whether unicode file should be create or not std::string filePath = dirPath + filename; - if (! util->isFileExist(filePath)) + if (!util->isFileExist(filePath)) { std::string writeDataStr = " 测试字符串."; Data writeData; - writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size()); + writeData.copy((unsigned char*)writeDataStr.c_str(), writeDataStr.size()); util->writeDataToFile(writeData, filePath); } isExist = util->isFileExist(filePath); - label = Label::createWithSystemFont(getMsg(isExist, filePath), "", 12, Size(s.width, 0)); + label = Label::createWithSystemFont(getMsg(isExist, filePath), "", 12, Size(s.width, 0)); label->setPosition(x, y * 3); this->addChild(label); @@ -1007,8 +996,8 @@ void TestUnicodePath::onEnter() { // read file content and log it unsigned char* buffer = nullptr; - Data readData = util->getDataFromFile(filePath); - buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1)); + Data readData = util->getDataFromFile(filePath); + buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1)); memcpy(buffer, readData.getBytes(), readData.getSize()); buffer[readData.getSize()] = '\0'; // vc can't treat unicode string correctly, don't use unicode string in code @@ -1031,7 +1020,7 @@ void TestUnicodePath::onEnter() void TestUnicodePath::onExit() { - FileUtils *sharedFileUtils = FileUtils::getInstance(); + FileUtils* sharedFileUtils = FileUtils::getInstance(); sharedFileUtils->purgeCachedEntries(); sharedFileUtils->setFilenameLookupDictionary(ValueMap()); FileUtilsDemo::onExit(); @@ -1052,30 +1041,33 @@ std::string TestUnicodePath::subtitle() const void TestIsFileExistAsync::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto sharedFileUtils = FileUtils::getInstance(); - + sharedFileUtils->isFileExist("Images/grossini.png", [=](bool isExist) { - CCASSERT(std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId(), "Callback should be on cocos thread"); - auto label = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20); - label->setPosition(s.width/2, s.height/3); + CCASSERT(std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId(), + "Callback should be on cocos thread"); + auto label = Label::createWithSystemFont( + isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20); + label->setPosition(s.width / 2, s.height / 3); this->addChild(label); - + isExist = sharedFileUtils->isFileExist("Images/grossini.xcf"); - label = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20); - label->setPosition(s.width/2, s.height/3*2); + label = Label::createWithSystemFont( + isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20); + label->setPosition(s.width / 2, s.height / 3 * 2); this->addChild(label); }); } void TestIsFileExistAsync::onExit() { - - FileUtils *sharedFileUtils = FileUtils::getInstance(); - + + FileUtils* sharedFileUtils = FileUtils::getInstance(); + // reset filename lookup sharedFileUtils->setFilenameLookupDictionary(ValueMap()); - + FileUtilsDemo::onExit(); } @@ -1092,18 +1084,17 @@ std::string TestIsFileExistAsync::subtitle() const void TestIsDirectoryExistAsync::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto util = FileUtils::getInstance(); - int x = s.width/2, y = s.height/3; - + int x = s.width / 2, y = s.height / 3; + std::string dir; - auto getMsg = [](bool b, std::string_view dir)-> std::string - { + auto getMsg = [](bool b, std::string_view dir) -> std::string { char msg[512]; - snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.data()); + snprintf((char*)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.data()); return std::string(msg); }; - + dir = util->getWritablePath(); util->isDirectoryExist(dir, [=](bool exists) { CCAssert(exists, "Writable path should exist"); @@ -1115,12 +1106,12 @@ void TestIsDirectoryExistAsync::onEnter() void TestIsDirectoryExistAsync::onExit() { - - FileUtils *sharedFileUtils = FileUtils::getInstance(); - + + FileUtils* sharedFileUtils = FileUtils::getInstance(); + // reset filename lookup sharedFileUtils->purgeCachedEntries(); - + FileUtilsDemo::onExit(); } @@ -1137,41 +1128,39 @@ std::string TestIsDirectoryExistAsync::subtitle() const void TestFileFuncsAsync::onEnter() { FileUtilsDemo::onEnter(); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto sharedFileUtils = FileUtils::getInstance(); - - int x = s.width/2, - y = s.height/5; - - std::string filename = "__test.test"; + + int x = s.width / 2, y = s.height / 5; + + std::string filename = "__test.test"; std::string filename2 = "__newtest.test"; - std::string filepath = sharedFileUtils->getWritablePath() + filename; - std::string content = "Test string content to put into created file"; + std::string filepath = sharedFileUtils->getWritablePath() + filename; + std::string content = "Test string content to put into created file"; std::string msg; - - FILE *out = fopen(filepath.c_str(), "w"); + + FILE* out = fopen(filepath.c_str(), "w"); fputs(content.c_str(), out); fclose(out); - - + sharedFileUtils->isFileExist(filepath, [=](bool exists) { CCASSERT(exists, "File could not be found"); auto label = Label::createWithSystemFont("Test file '__test.test' created", "", 20); label->setPosition(x, y * 4); this->addChild(label); - + sharedFileUtils->getFileSize(filepath, [=](int32_t size) { - auto msg = StringUtils::format("getFileSize: Test file size equals %d", size); + auto msg = StringUtils::format("getFileSize: Test file size equals %d", size); auto label = Label::createWithSystemFont(msg, "", 20); label->setPosition(x, y * 3); this->addChild(label); - - sharedFileUtils->renameFile(sharedFileUtils->getWritablePath(), filename, filename2, [=] (bool success) { + + sharedFileUtils->renameFile(sharedFileUtils->getWritablePath(), filename, filename2, [=](bool success) { CCASSERT(success, "Was not able to properly rename file"); auto label = Label::createWithSystemFont("renameFile: Test file renamed to '__newtest.test'", "", 20); label->setPosition(x, y * 2); this->addChild(label); - + sharedFileUtils->removeFile(sharedFileUtils->getWritablePath() + filename2, [=](bool success) { CCASSERT(success, "Was not able to remove file"); auto label = Label::createWithSystemFont("removeFile: Test file removed", "", 20); @@ -1180,7 +1169,6 @@ void TestFileFuncsAsync::onEnter() }); }); }); - }); } @@ -1197,26 +1185,25 @@ std::string TestFileFuncsAsync::subtitle() const void TestWriteStringAsync::onEnter() { FileUtilsDemo::onEnter(); - + auto winSize = Director::getInstance()->getWinSize(); - + auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18); this->addChild(writeResult); writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4); - + auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18); this->addChild(readResult); readResult->setPosition(winSize.width / 2, winSize.height / 3); - + std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fileName = "writeStringTest.txt"; - + std::string fileName = "writeStringTest.txt"; + // writeTest std::string writeDataStr = "the string data will be write into a file"; - std::string fullPath = writablePath + fileName; - - FileUtils::getInstance()->writeStringToFile(writeDataStr, fullPath, [=](bool success) - { + std::string fullPath = writablePath + fileName; + + FileUtils::getInstance()->writeStringToFile(writeDataStr, fullPath, [=](bool success) { CCASSERT(success, "Write String to data failed"); writeResult->setString("write success:" + writeDataStr); @@ -1259,25 +1246,24 @@ void TestWriteDataAsync::onEnter() readResult->setPosition(winSize.width / 2, winSize.height / 3); std::string writablePath = FileUtils::getInstance()->getWritablePath(); - std::string fileName = "writeDataTest.txt"; + std::string fileName = "writeDataTest.txt"; // writeTest std::string writeDataStr = "the binary data will be write into a file"; Data writeData; - writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size()); + writeData.copy((unsigned char*)writeDataStr.c_str(), writeDataStr.size()); std::string fullPath = writablePath + fileName; - FileUtils::getInstance()->writeDataToFile(writeData, fullPath, [=](bool success) { if (success) { writeResult->setString("Write result success"); - } + } else { writeResult->setString("Write result failure"); } - + FileUtils::getInstance()->getDataFromFile(fullPath, [=](const Data& readData) { auto buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1)); memcpy(buffer, readData.getBytes(), readData.getSize()); @@ -1320,24 +1306,23 @@ void TestListFiles::onEnter() cntLabel->setPosition(winSize.width / 2, winSize.height / 3); // writeTest std::vector listFonts = FileUtils::getInstance()->listFiles("fonts"); - auto defaultPath = FileUtils::getInstance()->getDefaultResourceRootPath(); - std::vector list = FileUtils::getInstance()->listFiles (defaultPath); + auto defaultPath = FileUtils::getInstance()->getDefaultResourceRootPath(); + std::vector list = FileUtils::getInstance()->listFiles(defaultPath); - char cntBuffer[200] = { 0 }; - snprintf(cntBuffer, 200, "'fonts/' %zu, $defaultResourceRootPath %zu",listFonts.size(), list.size()); + char cntBuffer[200] = {0}; + snprintf(cntBuffer, 200, "'fonts/' %zu, $defaultResourceRootPath %zu", listFonts.size(), list.size()); - for(int i=0;isetString(cntBuffer); - } void TestListFiles::onExit() @@ -1355,8 +1340,6 @@ std::string TestListFiles::subtitle() const return ""; } - - void TestIsFileExistRejectFolder::onEnter() { FileUtilsDemo::onEnter(); @@ -1370,14 +1353,13 @@ void TestIsFileExistRejectFolder::onEnter() auto cntLabel = Label::createWithTTF("waiting...", "fonts/Thonburi.ttf", 18); this->addChild(cntLabel); cntLabel->setPosition(winSize.width / 2, winSize.height / 3); - - auto exists = FileUtils::getInstance()->isFileExist("NavMesh/maps"); + + auto exists = FileUtils::getInstance()->isFileExist("NavMesh/maps"); auto isDirectory = FileUtils::getInstance()->isDirectoryExist("NavMesh/maps"); - char cntBuffer[200] = { 0 }; - snprintf(cntBuffer, 200, "isDir: %s, isFile: %s", isDirectory ? "true": "false" , exists ? "true" : "false"); + char cntBuffer[200] = {0}; + snprintf(cntBuffer, 200, "isDir: %s, isFile: %s", isDirectory ? "true" : "false", exists ? "true" : "false"); cntLabel->setString(cntBuffer); - } void TestIsFileExistRejectFolder::onExit() diff --git a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.h b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.h index ead129feaca9..4187f38aedbd 100644 --- a/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.h +++ b/tests/cpp-tests/Classes/FileUtilsTest/FileUtilsTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,7 +27,6 @@ #include "../BaseTest.h" - DEFINE_TEST_SUITE(FileUtilsTests); class FileUtilsDemo : public TestCase @@ -44,6 +43,7 @@ class TestResolutionDirectories : public FileUtilsDemo virtual void onExit() override; virtual std::string title() const override; virtual std::string subtitle() const override; + private: std::vector _defaultSearchPathArray; std::vector _defaultResolutionsOrderArray; @@ -58,6 +58,7 @@ class TestSearchPath : public FileUtilsDemo virtual void onExit() override; virtual std::string title() const override; virtual std::string subtitle() const override; + private: std::vector _defaultSearchPathArray; std::vector _defaultResolutionsOrderArray; @@ -135,6 +136,7 @@ class TestGetContents : public FileUtilsDemo virtual void onExit() override; virtual std::string title() const override; virtual std::string subtitle() const override; + private: std::string _generatedFile; }; @@ -187,7 +189,7 @@ class TestIsFileExistAsync : public FileUtilsDemo { public: CREATE_FUNC(TestIsFileExistAsync); - + virtual void onEnter() override; virtual void onExit() override; virtual std::string title() const override; @@ -198,7 +200,7 @@ class TestIsDirectoryExistAsync : public FileUtilsDemo { public: CREATE_FUNC(TestIsDirectoryExistAsync); - + virtual void onEnter() override; virtual void onExit() override; virtual std::string title() const override; @@ -209,7 +211,7 @@ class TestFileFuncsAsync : public FileUtilsDemo { public: CREATE_FUNC(TestFileFuncsAsync); - + virtual void onEnter() override; virtual std::string title() const override; virtual std::string subtitle() const override; @@ -219,7 +221,7 @@ class TestDirectoryFuncsAsync : public FileUtilsDemo { public: CREATE_FUNC(TestDirectoryFuncsAsync); - + virtual void onEnter() override; virtual std::string title() const override; virtual std::string subtitle() const override; @@ -229,7 +231,7 @@ class TestWriteStringAsync : public FileUtilsDemo { public: CREATE_FUNC(TestWriteStringAsync); - + virtual void onEnter() override; virtual void onExit() override; virtual std::string title() const override; @@ -240,7 +242,7 @@ class TestWriteDataAsync : public FileUtilsDemo { public: CREATE_FUNC(TestWriteDataAsync); - + virtual void onEnter() override; virtual void onExit() override; virtual std::string title() const override; diff --git a/tests/cpp-tests/Classes/FontTest/FontTest.cpp b/tests/cpp-tests/Classes/FontTest/FontTest.cpp index b4166f6c23c2..f47dd7a77568 100644 --- a/tests/cpp-tests/Classes/FontTest/FontTest.cpp +++ b/tests/cpp-tests/Classes/FontTest/FontTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,62 +29,65 @@ USING_NS_CC; -enum { +enum +{ kTagLabel1, kTagLabel2, kTagLabel3, kTagLabel4, - + kTagColor1, kTagColor2, kTagColor3, }; -//you don't need any ifdef anymore -static std::string fontList[] = -{ - "fonts/A Damn Mess.ttf", - "fonts/Abberancy.ttf", - "fonts/Abduction.ttf", - "fonts/Paint Boy.ttf", - "fonts/Schwarzwald.ttf", - "fonts/Scissor Cuts.ttf", +// you don't need any ifdef anymore +static std::string fontList[] = { + "fonts/A Damn Mess.ttf", "fonts/Abberancy.ttf", "fonts/Abduction.ttf", + "fonts/Paint Boy.ttf", "fonts/Schwarzwald.ttf", "fonts/Scissor Cuts.ttf", }; -static int vAlignIdx = 0; -static TextVAlignment verticalAlignment[] = -{ +static int vAlignIdx = 0; +static TextVAlignment verticalAlignment[] = { TextVAlignment::TOP, TextVAlignment::CENTER, TextVAlignment::BOTTOM, }; - FontTests::FontTests() { for (auto& fontFile : fontList) { - addTestCase("FontTests", [&](){vAlignIdx = 0; return FontTest::create(fontFile); }); + addTestCase("FontTests", [&]() { + vAlignIdx = 0; + return FontTest::create(fontFile); + }); } - + for (auto& fontFile : fontList) { - addTestCase("FontTests", [&](){ vAlignIdx = 1; return FontTest::create(fontFile); }); + addTestCase("FontTests", [&]() { + vAlignIdx = 1; + return FontTest::create(fontFile); + }); } - + for (auto& fontFile : fontList) { - addTestCase("FontTests", [&](){vAlignIdx = 2; return FontTest::create(fontFile); }); + addTestCase("FontTests", [&]() { + vAlignIdx = 2; + return FontTest::create(fontFile); + }); } - ADD_TEST_CASE(FontNoReplacementTest); - ADD_TEST_CASE(FontReplacementTest); + ADD_TEST_CASE(FontNoReplacementTest); + ADD_TEST_CASE(FontReplacementTest); } void FontTest::showFont(std::string_view fontFile) { auto s = Director::getInstance()->getWinSize(); - auto blockSize = Size(s.width/3, 200); + auto blockSize = Size(s.width / 3, 200); float fontSize = 26; removeChildByTag(kTagLabel1, true); @@ -95,37 +98,36 @@ void FontTest::showFont(std::string_view fontFile) removeChildByTag(kTagColor2, true); removeChildByTag(kTagColor3, true); - auto top = Label::createWithSystemFont(fontFile, fontFile, 24); - auto left = Label::createWithSystemFont("alignment left", fontFile, fontSize, - blockSize, TextHAlignment::LEFT, verticalAlignment[vAlignIdx]); - auto center = Label::createWithSystemFont("alignment center", fontFile, fontSize, - blockSize, TextHAlignment::CENTER, verticalAlignment[vAlignIdx]); - auto right = Label::createWithSystemFont("alignment right", fontFile, fontSize, - blockSize, TextHAlignment::RIGHT, verticalAlignment[vAlignIdx]); + auto top = Label::createWithSystemFont(fontFile, fontFile, 24); + auto left = Label::createWithSystemFont("alignment left", fontFile, fontSize, blockSize, TextHAlignment::LEFT, + verticalAlignment[vAlignIdx]); + auto center = Label::createWithSystemFont("alignment center", fontFile, fontSize, blockSize, TextHAlignment::CENTER, + verticalAlignment[vAlignIdx]); + auto right = Label::createWithSystemFont("alignment right", fontFile, fontSize, blockSize, TextHAlignment::RIGHT, + verticalAlignment[vAlignIdx]); - auto leftColor = LayerColor::create(Color4B(100, 100, 100, 255), blockSize.width, blockSize.height); + auto leftColor = LayerColor::create(Color4B(100, 100, 100, 255), blockSize.width, blockSize.height); auto centerColor = LayerColor::create(Color4B(200, 100, 100, 255), blockSize.width, blockSize.height); - auto rightColor = LayerColor::create(Color4B(100, 100, 200, 255), blockSize.width, blockSize.height); + auto rightColor = LayerColor::create(Color4B(100, 100, 200, 255), blockSize.width, blockSize.height); leftColor->setIgnoreAnchorPointForPosition(false); centerColor->setIgnoreAnchorPointForPosition(false); rightColor->setIgnoreAnchorPointForPosition(false); - top->setAnchorPoint(Vec2(0.5, 1)); - left->setAnchorPoint(Vec2(0,0.5)); - leftColor->setAnchorPoint(Vec2(0,0.5)); - center->setAnchorPoint(Vec2(0,0.5)); - centerColor->setAnchorPoint(Vec2(0,0.5)); - right->setAnchorPoint(Vec2(0,0.5)); - rightColor->setAnchorPoint(Vec2(0,0.5)); - - top->setPosition(s.width/2,s.height-20); - left->setPosition(0,s.height/2); + left->setAnchorPoint(Vec2(0, 0.5)); + leftColor->setAnchorPoint(Vec2(0, 0.5)); + center->setAnchorPoint(Vec2(0, 0.5)); + centerColor->setAnchorPoint(Vec2(0, 0.5)); + right->setAnchorPoint(Vec2(0, 0.5)); + rightColor->setAnchorPoint(Vec2(0, 0.5)); + + top->setPosition(s.width / 2, s.height - 20); + left->setPosition(0, s.height / 2); leftColor->setPosition(left->getPosition()); - center->setPosition(blockSize.width, s.height/2); + center->setPosition(blockSize.width, s.height / 2); centerColor->setPosition(center->getPosition()); - right->setPosition(blockSize.width*2, s.height/2); + right->setPosition(blockSize.width * 2, s.height / 2); rightColor->setPosition(right->getPosition()); this->addChild(leftColor, -1, kTagColor1); @@ -144,138 +146,136 @@ std::string FontTest::title() const FontNoReplacementTest* FontNoReplacementTest::create() { - auto ret = new FontNoReplacementTest; - if (ret->init()) - { - ret->autorelease(); - } - else - { - delete ret; - ret = nullptr; - } - - return ret; + auto ret = new FontNoReplacementTest; + if (ret->init()) + { + ret->autorelease(); + } + else + { + delete ret; + ret = nullptr; + } + + return ret; } FontNoReplacementTest::FontNoReplacementTest() { - _replace = false; + _replace = false; } FontNoReplacementTest::~FontNoReplacementTest() { - // need to clear the caches since we change the lookup dictionary after the application init. - FontAtlasCache::unloadFontAtlasTTF("fonts/A Damn Mess.ttf"); - FontFreeType::releaseFont("fonts/A Damn Mess.ttf"); - FontAtlasCache::unloadFontAtlasTTF("fonts/Abberancy.ttf"); - FontFreeType::releaseFont("fonts/Abberancy.ttf"); - FontAtlasCache::unloadFontAtlasTTF("fonts/Abduction.ttf"); - FontFreeType::releaseFont("fonts/Abduction.ttf"); - FontAtlasCache::unloadFontAtlasTTF("fonts/Schwarzwald.ttf"); - FontFreeType::releaseFont("fonts/Schwarzwald.ttf"); - FileUtils::getInstance()->setFilenameLookupDictionary(ValueMap()); + // need to clear the caches since we change the lookup dictionary after the application init. + FontAtlasCache::unloadFontAtlasTTF("fonts/A Damn Mess.ttf"); + FontFreeType::releaseFont("fonts/A Damn Mess.ttf"); + FontAtlasCache::unloadFontAtlasTTF("fonts/Abberancy.ttf"); + FontFreeType::releaseFont("fonts/Abberancy.ttf"); + FontAtlasCache::unloadFontAtlasTTF("fonts/Abduction.ttf"); + FontFreeType::releaseFont("fonts/Abduction.ttf"); + FontAtlasCache::unloadFontAtlasTTF("fonts/Schwarzwald.ttf"); + FontFreeType::releaseFont("fonts/Schwarzwald.ttf"); + FileUtils::getInstance()->setFilenameLookupDictionary(ValueMap()); } void FontNoReplacementTest::onEnter() { - TestCase::onEnter(); - - std::string suffix; - if (_replace) - { - ValueMap dict{ - { "fonts/A Damn Mess.ttf", Value("fonts/arial.ttf") }, - { "fonts/Abberancy.ttf", Value("fonts/arial.ttf") }, - { "fonts/Abduction.ttf", Value("fonts/arial.ttf") }, - { "fonts/Schwarzwald.ttf", Value("fonts/arial.ttf") } - }; - - FileUtils::getInstance()->setFilenameLookupDictionary(dict); - suffix = " replaced by arial.ttf"; - } - - auto s = Director::getInstance()->getWinSize(); - - auto blockSize = Size(s.width / 3, 200); - float fontSize = 26; - - removeChildByTag(kTagLabel1, true); - removeChildByTag(kTagLabel2, true); - removeChildByTag(kTagLabel3, true); - removeChildByTag(kTagLabel4, true); - removeChildByTag(kTagColor1, true); - removeChildByTag(kTagColor2, true); - removeChildByTag(kTagColor3, true); - - auto top = Label::createWithTTF("fonts/A Damn Mess.ttf" + suffix, "fonts/A Damn Mess.ttf", 24); - auto left = Label::createWithTTF("fonts/Abberancy.ttf" + suffix, "fonts/Abberancy.ttf", fontSize, - blockSize, TextHAlignment::LEFT, verticalAlignment[0]); - auto center = Label::createWithTTF("fonts/Abduction.ttf" + suffix, "fonts/Abduction.ttf", fontSize, - blockSize, TextHAlignment::CENTER, verticalAlignment[0]); - auto right = Label::createWithTTF("fonts/Schwarzwald.ttf" + suffix, "fonts/Schwarzwald.ttf", fontSize, - blockSize, TextHAlignment::RIGHT, verticalAlignment[0]); - - auto leftColor = LayerColor::create(Color4B(100, 100, 100, 255), blockSize.width, blockSize.height); - auto centerColor = LayerColor::create(Color4B(200, 100, 100, 255), blockSize.width, blockSize.height); - auto rightColor = LayerColor::create(Color4B(100, 100, 200, 255), blockSize.width, blockSize.height); - - leftColor->setIgnoreAnchorPointForPosition(false); - centerColor->setIgnoreAnchorPointForPosition(false); - rightColor->setIgnoreAnchorPointForPosition(false); - - top->setAnchorPoint(Vec2(0.5, 1)); - left->setAnchorPoint(Vec2(0, 0.5)); - leftColor->setAnchorPoint(Vec2(0, 0.5)); - center->setAnchorPoint(Vec2(0, 0.5)); - centerColor->setAnchorPoint(Vec2(0, 0.5)); - right->setAnchorPoint(Vec2(0, 0.5)); - rightColor->setAnchorPoint(Vec2(0, 0.5)); - - top->setPosition(s.width / 2, s.height - 20); - left->setPosition(0, s.height / 2); - leftColor->setPosition(left->getPosition()); - center->setPosition(blockSize.width, s.height / 2); - centerColor->setPosition(center->getPosition()); - right->setPosition(blockSize.width * 2, s.height / 2); - rightColor->setPosition(right->getPosition()); - - this->addChild(leftColor, -1, kTagColor1); - this->addChild(left, 0, kTagLabel1); - this->addChild(rightColor, -1, kTagColor2); - this->addChild(right, 0, kTagLabel2); - this->addChild(centerColor, -1, kTagColor3); - this->addChild(center, 0, kTagLabel3); - this->addChild(top, 0, kTagLabel4); + TestCase::onEnter(); + + std::string suffix; + if (_replace) + { + ValueMap dict{{"fonts/A Damn Mess.ttf", Value("fonts/arial.ttf")}, + {"fonts/Abberancy.ttf", Value("fonts/arial.ttf")}, + {"fonts/Abduction.ttf", Value("fonts/arial.ttf")}, + {"fonts/Schwarzwald.ttf", Value("fonts/arial.ttf")}}; + + FileUtils::getInstance()->setFilenameLookupDictionary(dict); + suffix = " replaced by arial.ttf"; + } + + auto s = Director::getInstance()->getWinSize(); + + auto blockSize = Size(s.width / 3, 200); + float fontSize = 26; + + removeChildByTag(kTagLabel1, true); + removeChildByTag(kTagLabel2, true); + removeChildByTag(kTagLabel3, true); + removeChildByTag(kTagLabel4, true); + removeChildByTag(kTagColor1, true); + removeChildByTag(kTagColor2, true); + removeChildByTag(kTagColor3, true); + + auto top = Label::createWithTTF("fonts/A Damn Mess.ttf" + suffix, "fonts/A Damn Mess.ttf", 24); + auto left = Label::createWithTTF("fonts/Abberancy.ttf" + suffix, "fonts/Abberancy.ttf", fontSize, blockSize, + TextHAlignment::LEFT, verticalAlignment[0]); + auto center = Label::createWithTTF("fonts/Abduction.ttf" + suffix, "fonts/Abduction.ttf", fontSize, blockSize, + TextHAlignment::CENTER, verticalAlignment[0]); + auto right = Label::createWithTTF("fonts/Schwarzwald.ttf" + suffix, "fonts/Schwarzwald.ttf", fontSize, blockSize, + TextHAlignment::RIGHT, verticalAlignment[0]); + + auto leftColor = LayerColor::create(Color4B(100, 100, 100, 255), blockSize.width, blockSize.height); + auto centerColor = LayerColor::create(Color4B(200, 100, 100, 255), blockSize.width, blockSize.height); + auto rightColor = LayerColor::create(Color4B(100, 100, 200, 255), blockSize.width, blockSize.height); + + leftColor->setIgnoreAnchorPointForPosition(false); + centerColor->setIgnoreAnchorPointForPosition(false); + rightColor->setIgnoreAnchorPointForPosition(false); + + top->setAnchorPoint(Vec2(0.5, 1)); + left->setAnchorPoint(Vec2(0, 0.5)); + leftColor->setAnchorPoint(Vec2(0, 0.5)); + center->setAnchorPoint(Vec2(0, 0.5)); + centerColor->setAnchorPoint(Vec2(0, 0.5)); + right->setAnchorPoint(Vec2(0, 0.5)); + rightColor->setAnchorPoint(Vec2(0, 0.5)); + + top->setPosition(s.width / 2, s.height - 20); + left->setPosition(0, s.height / 2); + leftColor->setPosition(left->getPosition()); + center->setPosition(blockSize.width, s.height / 2); + centerColor->setPosition(center->getPosition()); + right->setPosition(blockSize.width * 2, s.height / 2); + rightColor->setPosition(right->getPosition()); + + this->addChild(leftColor, -1, kTagColor1); + this->addChild(left, 0, kTagLabel1); + this->addChild(rightColor, -1, kTagColor2); + this->addChild(right, 0, kTagLabel2); + this->addChild(centerColor, -1, kTagColor3); + this->addChild(center, 0, kTagLabel3); + this->addChild(top, 0, kTagLabel4); } std::string FontNoReplacementTest::title() const { - return "Font no replacement test"; + return "Font no replacement test"; } FontReplacementTest* FontReplacementTest::create() { - auto ret = new FontReplacementTest; - if (ret->init()) - { - ret->autorelease(); - } - else - { - delete ret; - ret = nullptr; - } - - return ret; + auto ret = new FontReplacementTest; + if (ret->init()) + { + ret->autorelease(); + } + else + { + delete ret; + ret = nullptr; + } + + return ret; } FontReplacementTest::FontReplacementTest() { - _replace = true; + _replace = true; } std::string FontReplacementTest::title() const { - return "Font replacement test"; + return "Font replacement test"; } diff --git a/tests/cpp-tests/Classes/FontTest/FontTest.h b/tests/cpp-tests/Classes/FontTest/FontTest.h index 2b6ac6b821b8..d7dc5a5b3367 100644 --- a/tests/cpp-tests/Classes/FontTest/FontTest.h +++ b/tests/cpp-tests/Classes/FontTest/FontTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -58,23 +58,25 @@ class FontTest : public TestCase class FontNoReplacementTest : public TestCase { public: - static FontNoReplacementTest* create(); - ~FontNoReplacementTest(); - virtual void onEnter() override; - virtual std::string title() const override; + static FontNoReplacementTest* create(); + ~FontNoReplacementTest(); + virtual void onEnter() override; + virtual std::string title() const override; + protected: - FontNoReplacementTest(); + FontNoReplacementTest(); - bool _replace; + bool _replace; }; class FontReplacementTest : public FontNoReplacementTest { public: - static FontReplacementTest* create(); - virtual std::string title() const override; + static FontReplacementTest* create(); + virtual std::string title() const override; + protected: - FontReplacementTest(); + FontReplacementTest(); }; -#endif // _FONT_TEST_H_ +#endif // _FONT_TEST_H_ diff --git a/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.cpp b/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.cpp index cbf141f585dc..575a3d35525c 100644 --- a/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.cpp +++ b/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.cpp @@ -8,15 +8,15 @@ USING_NS_CC_EXT; #if defined(CC_PLATFORM_PC) -static bool show_test_window = true; +static bool show_test_window = true; static bool show_another_window = true; -static ImVec4 clear_color = ImColor(114, 144, 154); +static ImVec4 clear_color = ImColor(114, 144, 154); ImGuiEXTTests::ImGuiEXTTests() { - // Resize (expand) window + // Resize (expand) window static Size resourceSize(1280, 720); - auto director = Director::getInstance(); + auto director = Director::getInstance(); GLViewImpl* view = (GLViewImpl*)Director::getInstance()->getOpenGLView(); view->setWindowed(resourceSize.width, resourceSize.height); @@ -50,9 +50,12 @@ void ImGuiEXTTest::onDrawImGui() ImGui::Text("Hello, world!"); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); ImGui::ColorEdit3("clear color", (float*)&clear_color); - if (ImGui::Button("Test Window")) show_test_window ^= 1; - if (ImGui::Button("Another Window")) show_another_window ^= 1; - ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); + if (ImGui::Button("Test Window")) + show_test_window ^= 1; + if (ImGui::Button("Another Window")) + show_another_window ^= 1; + ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, + ImGui::GetIO().Framerate); } // 2. Show another simple window, this time using an explicit Begin/End pair diff --git a/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.h b/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.h index c3c60ca57f3f..e55ff3821b11 100644 --- a/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.h +++ b/tests/cpp-tests/Classes/ImGuiEXTTest/ImGuiEXTTest.h @@ -47,4 +47,4 @@ class ImGuiEXTTest : public TestCase #endif -#endif // _CURL_TEST_H_ +#endif // _CURL_TEST_H_ diff --git a/tests/cpp-tests/Classes/InputTest/MouseTest.cpp b/tests/cpp-tests/Classes/InputTest/MouseTest.cpp index c810030515bd..c39e1da6fdeb 100644 --- a/tests/cpp-tests/Classes/InputTest/MouseTest.cpp +++ b/tests/cpp-tests/Classes/InputTest/MouseTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,7 +26,13 @@ USING_NS_CC; -template std::string tostr(const T& t) { std::ostringstream os; os< +std::string tostr(const T& t) +{ + std::ostringstream os; + os << t; + return os.str(); +} MouseTests::MouseTests() { @@ -43,21 +49,20 @@ MouseEventTest::MouseEventTest() { auto s = Director::getInstance()->getWinSize(); - //Create a label to display the mouse action + // Create a label to display the mouse action _labelAction = Label::createWithTTF("Click mouse button and see this change", "fonts/arial.ttf", 22); - _labelAction->setPosition(Vec2(s.width/2, s.height*2/3)); + _labelAction->setPosition(Vec2(s.width / 2, s.height * 2 / 3)); addChild(_labelAction, 0); - //Create a label to display the mouse position + // Create a label to display the mouse position _labelPosition = Label::createWithTTF("Mouse not supported on this device", "fonts/arial.ttf", 22); - _labelPosition->setPosition(Vec2(s.width/2, s.height/3)); + _labelPosition->setPosition(Vec2(s.width / 2, s.height / 3)); addChild(_labelPosition); - - _mouseListener = EventListenerMouse::create(); - _mouseListener->onMouseMove = CC_CALLBACK_1(MouseEventTest::onMouseMove, this); - _mouseListener->onMouseUp = CC_CALLBACK_1(MouseEventTest::onMouseUp, this); - _mouseListener->onMouseDown = CC_CALLBACK_1(MouseEventTest::onMouseDown, this); + _mouseListener = EventListenerMouse::create(); + _mouseListener->onMouseMove = CC_CALLBACK_1(MouseEventTest::onMouseMove, this); + _mouseListener->onMouseUp = CC_CALLBACK_1(MouseEventTest::onMouseUp, this); + _mouseListener->onMouseDown = CC_CALLBACK_1(MouseEventTest::onMouseDown, this); _mouseListener->onMouseScroll = CC_CALLBACK_1(MouseEventTest::onMouseScroll, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this); @@ -68,35 +73,35 @@ MouseEventTest::~MouseEventTest() _eventDispatcher->removeEventListener(_mouseListener); } -void MouseEventTest::onMouseDown(Event *event) +void MouseEventTest::onMouseDown(Event* event) { - EventMouse* e = (EventMouse*)event; + EventMouse* e = (EventMouse*)event; std::string str = "Mouse Down detected, Key: "; str += tostr(static_cast(e->getMouseButton())); _labelAction->setString(str.c_str()); } -void MouseEventTest::onMouseUp(Event *event) +void MouseEventTest::onMouseUp(Event* event) { - EventMouse* e = (EventMouse*)event; + EventMouse* e = (EventMouse*)event; std::string str = "Mouse Up detected, Key: "; str += tostr(static_cast(e->getMouseButton())); _labelAction->setString(str.c_str()); } -void MouseEventTest::onMouseMove(Event *event) +void MouseEventTest::onMouseMove(Event* event) { - EventMouse* e = (EventMouse*)event; + EventMouse* e = (EventMouse*)event; std::string str = "MousePosition X:"; - str = str + tostr(e->getCursorX()) + " Y:" + tostr(e->getCursorY()); + str = str + tostr(e->getCursorX()) + " Y:" + tostr(e->getCursorY()); _labelPosition->setString(str.c_str()); } -void MouseEventTest::onMouseScroll(Event *event) +void MouseEventTest::onMouseScroll(Event* event) { - EventMouse* e = (EventMouse*)event; + EventMouse* e = (EventMouse*)event; std::string str = "Mouse Scroll detected, X: "; - str = str + tostr(e->getScrollX()) + " Y: " + tostr(e->getScrollY()); + str = str + tostr(e->getScrollX()) + " Y: " + tostr(e->getScrollY()); _labelAction->setString(str.c_str()); } @@ -118,16 +123,12 @@ std::string MouseEventTest::subtitle() const HideMouseTest::HideMouseTest() { - - _lis = EventListenerMouse::create(); - _lis->onMouseDown = [](Event* e){ - Director::getInstance()->getOpenGLView()->setCursorVisible(false); - }; - - _lis->onMouseUp = [](Event* e){ - Director::getInstance()->getOpenGLView()->setCursorVisible(true); - }; - + + _lis = EventListenerMouse::create(); + _lis->onMouseDown = [](Event* e) { Director::getInstance()->getOpenGLView()->setCursorVisible(false); }; + + _lis->onMouseUp = [](Event* e) { Director::getInstance()->getOpenGLView()->setCursorVisible(true); }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(_lis, this); } @@ -145,4 +146,3 @@ std::string HideMouseTest::subtitle() const { return "Click to hide mouse"; } - diff --git a/tests/cpp-tests/Classes/InputTest/MouseTest.h b/tests/cpp-tests/Classes/InputTest/MouseTest.h index cc2162dad881..dd8be001f8f6 100644 --- a/tests/cpp-tests/Classes/InputTest/MouseTest.h +++ b/tests/cpp-tests/Classes/InputTest/MouseTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,7 +33,6 @@ DEFINE_TEST_SUITE(MouseTests); class BaseMouseTest : public TestCase { public: - }; class MouseEventTest : public BaseMouseTest @@ -47,13 +46,13 @@ class MouseEventTest : public BaseMouseTest void onMouseUp(cocos2d::Event* event); void onMouseMove(cocos2d::Event* event); void onMouseScroll(cocos2d::Event* event); - + virtual std::string title() const override; virtual std::string subtitle() const override; private: - cocos2d::Label* _labelAction; - cocos2d::Label* _labelPosition; + cocos2d::Label* _labelAction; + cocos2d::Label* _labelPosition; cocos2d::EventListenerMouse* _mouseListener; }; @@ -63,10 +62,10 @@ class HideMouseTest : public BaseMouseTest CREATE_FUNC(HideMouseTest); HideMouseTest(); ~HideMouseTest(); - + virtual std::string title() const override; virtual std::string subtitle() const override; - + private: cocos2d::EventListenerMouse* _lis; }; diff --git a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp index a998e7edeb60..16398102fe2d 100644 --- a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp +++ b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,11 +27,11 @@ USING_NS_CC; -#define SID_STEP1 100 -#define SID_STEP2 101 -#define SID_STEP3 102 +#define SID_STEP1 100 +#define SID_STEP2 101 +#define SID_STEP3 102 -#define IDC_PAUSE 200 +#define IDC_PAUSE 200 IntervalTests::IntervalTests() { @@ -46,7 +46,7 @@ IntervalTest::IntervalTest() // sun auto sun = ParticleSun::create(); sun->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/fire.png")); - sun->setPosition(VisibleRect::rightTop().x-32,VisibleRect::rightTop().y-32); + sun->setPosition(VisibleRect::rightTop().x - 32, VisibleRect::rightTop().y - 32); sun->setTotalParticles(130); sun->setLife(0.6f); @@ -60,43 +60,51 @@ IntervalTest::IntervalTest() _label4 = Label::createWithBMFont("fonts/bitmapFontTest4.fnt", "0"); scheduleUpdate(); - schedule([&](float dt){ - _time1 +=dt; - - char str[10] = {0}; - sprintf(str, "%2.1f", _time1); - _label1->setString( str ); - }, "step_1"); - - schedule([&](float dt){ - _time2 +=dt; - - char str[10] = {0}; - sprintf(str, "%2.1f", _time2); - _label2->setString( str ); - }, 0.5, "step_2"); - - schedule([&](float dt){ - _time3 +=dt; - - char str[10] = {0}; - sprintf(str, "%2.1f", _time3); - _label3->setString( str ); - }, 1, "step_3"); - - schedule([&](float dt){ - _time4 +=dt; - - char str[10] = {0}; - sprintf(str, "%2.1f", _time4); - _label4->setString( str ); - }, 2, "step_4"); - - _label0->setPosition(s.width*1/6, s.height/2); - _label1->setPosition(s.width*2/6, s.height/2); - _label2->setPosition(s.width*3/6, s.height/2); - _label3->setPosition(s.width*4/6, s.height/2); - _label4->setPosition(s.width*5/6, s.height/2); + schedule( + [&](float dt) { + _time1 += dt; + + char str[10] = {0}; + sprintf(str, "%2.1f", _time1); + _label1->setString(str); + }, + "step_1"); + + schedule( + [&](float dt) { + _time2 += dt; + + char str[10] = {0}; + sprintf(str, "%2.1f", _time2); + _label2->setString(str); + }, + 0.5, "step_2"); + + schedule( + [&](float dt) { + _time3 += dt; + + char str[10] = {0}; + sprintf(str, "%2.1f", _time3); + _label3->setString(str); + }, + 1, "step_3"); + + schedule( + [&](float dt) { + _time4 += dt; + + char str[10] = {0}; + sprintf(str, "%2.1f", _time4); + _label4->setString(str); + }, + 2, "step_4"); + + _label0->setPosition(s.width * 1 / 6, s.height / 2); + _label1->setPosition(s.width * 2 / 6, s.height / 2); + _label2->setPosition(s.width * 3 / 6, s.height / 2); + _label3->setPosition(s.width * 4 / 6, s.height / 2); + _label4->setPosition(s.width * 5 / 6, s.height / 2); addChild(_label0); addChild(_label1); @@ -107,27 +115,27 @@ IntervalTest::IntervalTest() // Sprite auto sprite = Sprite::create(s_pathGrossini); sprite->setPosition(VisibleRect::left().x + 40, VisibleRect::bottom().y + 50); - - auto jump = JumpBy::create(3, Vec2(s.width-80,0.0f), 50, 4); - + + auto jump = JumpBy::create(3, Vec2(s.width - 80, 0.0f), 50, 4); + addChild(sprite); - sprite->runAction( RepeatForever::create(Sequence::create(jump, jump->reverse(), nullptr) )); + sprite->runAction(RepeatForever::create(Sequence::create(jump, jump->reverse(), nullptr))); // pause button auto item1 = MenuItemFont::create("Pause", [&](Ref* sender) { - if(Director::getInstance()->isPaused()) - Director::getInstance()->resume(); - else - Director::getInstance()->pause(); - }); - auto menu = Menu::create(item1, nullptr); - menu->setPosition(s.width/2, s.height-50); - - addChild( menu ); + if (Director::getInstance()->isPaused()) + Director::getInstance()->resume(); + else + Director::getInstance()->pause(); + }); + auto menu = Menu::create(item1, nullptr); + menu->setPosition(s.width / 2, s.height - 50); + + addChild(menu); } IntervalTest::~IntervalTest() { - if(Director::getInstance()->isPaused()) + if (Director::getInstance()->isPaused()) { Director::getInstance()->resume(); } @@ -135,7 +143,7 @@ IntervalTest::~IntervalTest() void IntervalTest::update(float dt) { - _time0 +=dt; + _time0 += dt; char time[10] = {0}; sprintf(time, "%2.1f", _time0); _label0->setString(time); diff --git a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.h b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.h index 68bd6ca6ae9e..f885358abc02 100644 --- a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.h +++ b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,16 +38,16 @@ class IntervalTest : public TestCase virtual void update(float dt) override; - //CREATE_NODE(IntervalLayer); + // CREATE_NODE(IntervalLayer); protected: - cocos2d::Label* _label0; - cocos2d::Label* _label1; - cocos2d::Label* _label2; - cocos2d::Label* _label3; - cocos2d::Label* _label4; + cocos2d::Label* _label0; + cocos2d::Label* _label1; + cocos2d::Label* _label2; + cocos2d::Label* _label3; + cocos2d::Label* _label4; - float _time0, _time1, _time2, _time3, _time4; + float _time0, _time1, _time2, _time3, _time4; }; #endif diff --git a/tests/cpp-tests/Classes/JNITest/JNITest.cpp b/tests/cpp-tests/Classes/JNITest/JNITest.cpp index d873f93cee8b..1fc516853cf7 100644 --- a/tests/cpp-tests/Classes/JNITest/JNITest.cpp +++ b/tests/cpp-tests/Classes/JNITest/JNITest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,12 +24,11 @@ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#include "JNITest.h" - +# include "JNITest.h" -#include "platform/android/jni/JniHelper.h" +# include "platform/android/jni/JniHelper.h" -#include +# include USING_NS_CC; @@ -65,23 +64,24 @@ JNITest::JNITest() CC_ASSERT(i == 20); float f = JniHelper::callStaticFloatMethod(classPath, "floatMethod", float(2.35), float(7.65)); - CC_ASSERT(f == 10.0); - + CC_ASSERT(f == 10.0); + double d = JniHelper::callStaticDoubleMethod(classPath, "doubleMethod", double(2.5), int(4)); - CC_ASSERT(d == 10.0); + CC_ASSERT(d == 10.0); std::string str = "ABCDEF"; - std::string s1 = JniHelper::callStaticStringMethod(classPath, "stringMethod", str, true); + std::string s1 = JniHelper::callStaticStringMethod(classPath, "stringMethod", str, true); CC_ASSERT(s1 == "FEDCBA"); std::string s2 = JniHelper::callStaticStringMethod(classPath, "stringMethod", str, false); CC_ASSERT(s2 == "ABCDEF"); const char* cstr = "XYZ"; - std::string s3 = JniHelper::callStaticStringMethod(classPath, "stringMethod", cstr, true); + std::string s3 = JniHelper::callStaticStringMethod(classPath, "stringMethod", cstr, true); CC_ASSERT(s3 == "ZYX"); // should not crash - for (int i = 0; i < 10000; i++) { + for (int i = 0; i < 10000; i++) + { JniHelper::callStaticVoidMethod(classPath, "voidMethod4", "ABCDEF"); } diff --git a/tests/cpp-tests/Classes/JNITest/JNITest.h b/tests/cpp-tests/Classes/JNITest/JNITest.h index 1cc3a59ddf8b..2d00e229372f 100644 --- a/tests/cpp-tests/Classes/JNITest/JNITest.h +++ b/tests/cpp-tests/Classes/JNITest/JNITest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,8 +27,8 @@ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#include "cocos2d.h" -#include "../BaseTest.h" +# include "cocos2d.h" +# include "../BaseTest.h" DEFINE_TEST_SUITE(JNITests); @@ -40,4 +40,4 @@ class JNITest : public TestCase JNITest(); }; #endif -#endif // _JNI_TEST_H_ +#endif // _JNI_TEST_H_ diff --git a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp index 0918b0f48a0c..b490f025c7ba 100644 --- a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp +++ b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,16 +31,18 @@ USING_NS_CC; using namespace ui; using namespace extension; -enum { - kTagTileMap = 1, +enum +{ + kTagTileMap = 1, kTagSpriteManager = 1, - kTagAnimation1 = 1, - kTagBitmapAtlas1 = 1, - kTagBitmapAtlas2 = 2, - kTagBitmapAtlas3 = 3, + kTagAnimation1 = 1, + kTagBitmapAtlas1 = 1, + kTagBitmapAtlas2 = 2, + kTagBitmapAtlas3 = 3, }; -enum { +enum +{ kTagSprite1, kTagSprite2, kTagSprite3, @@ -150,36 +152,34 @@ LabelFNTColorAndOpacity::LabelFNTColorAndOpacity() { _time = 0; - auto col = LayerColor::create( Color4B(128,128,128,255) ); + auto col = LayerColor::create(Color4B(128, 128, 128, 255)); addChild(col, -10); - + auto label1 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "Test"); - - label1->setAnchorPoint( Vec2(0,0) ); + + label1->setAnchorPoint(Vec2(0, 0)); addChild(label1, 0, kTagBitmapAtlas1); - auto fade = FadeOut::create(1.0f); + auto fade = FadeOut::create(1.0f); auto fade_in = fade->reverse(); - auto seq = Sequence::create(fade, fade_in, nullptr); - auto repeat = RepeatForever::create(seq); + auto seq = Sequence::create(fade, fade_in, nullptr); + auto repeat = RepeatForever::create(seq); label1->runAction(repeat); - + auto label2 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "Test"); - label2->setColor( Color3B::RED ); + label2->setColor(Color3B::RED); addChild(label2, 0, kTagBitmapAtlas2); - auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), - TintTo::create(1, 0, 255, 0), - TintTo::create(1, 0, 0, 255), - nullptr); - label2->runAction( RepeatForever::create(tint) ); - + auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), TintTo::create(1, 0, 255, 0), + TintTo::create(1, 0, 0, 255), nullptr); + label2->runAction(RepeatForever::create(tint)); + auto label3 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "Test"); - label3->setAnchorPoint( Vec2(1,1) ); + label3->setAnchorPoint(Vec2(1, 1)); addChild(label3, 0, kTagBitmapAtlas3); - - label1->setPosition( VisibleRect::leftBottom() ); - label2->setPosition( VisibleRect::center() ); - label3->setPosition( VisibleRect::rightTop() ); - + + label1->setPosition(VisibleRect::leftBottom()); + label2->setPosition(VisibleRect::center()); + label3->setPosition(VisibleRect::rightTop()); + schedule(CC_CALLBACK_1(LabelFNTColorAndOpacity::step, this), "step_key"); } @@ -188,14 +188,14 @@ void LabelFNTColorAndOpacity::step(float dt) _time += dt; char string[15] = {0}; sprintf(string, "%2.2f Test j", _time); - - auto label1 = (Label*) getChildByTag(kTagBitmapAtlas1); + + auto label1 = (Label*)getChildByTag(kTagBitmapAtlas1); label1->setString(string); - - auto label2 = (Label*) getChildByTag(kTagBitmapAtlas2); + + auto label2 = (Label*)getChildByTag(kTagBitmapAtlas2); label2->setString(string); - - auto label3 = (Label*) getChildByTag(kTagBitmapAtlas3); + + auto label3 = (Label*)getChildByTag(kTagBitmapAtlas3); label3->setString(string); } @@ -212,56 +212,53 @@ std::string LabelFNTColorAndOpacity::subtitle() const LabelFNTSpriteActions::LabelFNTSpriteActions() { _time = 0; - + auto s = Director::getInstance()->getWinSize(); - + auto drawNode = DrawNode::create(); - drawNode->drawLine( Vec2(0.0f, s.height/2), Vec2(s.width, s.height/2), Color4F(1.0f, 1.0f, 1.0f, 1.0f) ); - drawNode->drawLine( Vec2(s.width/2, 0.0f), Vec2(s.width/2, s.height), Color4F(1.0f, 1.0f, 1.0f, 1.0f) ); + drawNode->drawLine(Vec2(0.0f, s.height / 2), Vec2(s.width, s.height / 2), Color4F(1.0f, 1.0f, 1.0f, 1.0f)); + drawNode->drawLine(Vec2(s.width / 2, 0.0f), Vec2(s.width / 2, s.height), Color4F(1.0f, 1.0f, 1.0f, 1.0f)); addChild(drawNode, -1); // Upper Label auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Bitmap Font Atlas"); addChild(label); - - - label->setPosition( Vec2(s.width/2, s.height/2) ); - - auto BChar = (Sprite*) label->getLetter(0); - auto FChar = (Sprite*) label->getLetter(7); - auto AChar = (Sprite*) label->getLetter(12); - - - auto rotate = RotateBy::create(2, 360); + + label->setPosition(Vec2(s.width / 2, s.height / 2)); + + auto BChar = (Sprite*)label->getLetter(0); + auto FChar = (Sprite*)label->getLetter(7); + auto AChar = (Sprite*)label->getLetter(12); + + auto rotate = RotateBy::create(2, 360); auto rot_4ever = RepeatForever::create(rotate); - - auto scale = ScaleBy::create(2, 1.5f); - auto scale_back = scale->reverse(); - auto scale_seq = Sequence::create(scale, scale_back,nullptr); + + auto scale = ScaleBy::create(2, 1.5f); + auto scale_back = scale->reverse(); + auto scale_seq = Sequence::create(scale, scale_back, nullptr); auto scale_4ever = RepeatForever::create(scale_seq); - - auto jump = JumpBy::create(0.5f, Vec2::ZERO, 60, 1); + + auto jump = JumpBy::create(0.5f, Vec2::ZERO, 60, 1); auto jump_4ever = RepeatForever::create(jump); - - auto fade_out = FadeOut::create(1); - auto fade_in = FadeIn::create(1); - auto seq = Sequence::create(fade_out, fade_in, nullptr); + + auto fade_out = FadeOut::create(1); + auto fade_in = FadeIn::create(1); + auto seq = Sequence::create(fade_out, fade_in, nullptr); auto fade_4ever = RepeatForever::create(seq); - + BChar->runAction(rot_4ever); BChar->runAction(scale_4ever); FChar->runAction(jump_4ever); AChar->runAction(fade_4ever); - - + // Bottom Label auto label2 = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "00.0"); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition( Vec2(s.width/2.0f, 80.0f) ); - - auto lastChar = (Sprite*) label2->getLetter(3); - lastChar->runAction( rot_4ever->clone() ); - + label2->setPosition(Vec2(s.width / 2.0f, 80.0f)); + + auto lastChar = (Sprite*)label2->getLetter(3); + lastChar->runAction(rot_4ever->clone()); + schedule(CC_CALLBACK_1(LabelFNTSpriteActions::step, this), 0.1f, "step_key"); } @@ -270,7 +267,7 @@ void LabelFNTSpriteActions::step(float dt) _time += dt; char string[10] = {0}; sprintf(string, "%04.1f", _time); - auto label1 = (Label*) getChildByTag(kTagBitmapAtlas2); + auto label1 = (Label*)getChildByTag(kTagBitmapAtlas2); label1->setString(string); } @@ -288,10 +285,10 @@ LabelFNTPadding::LabelFNTPadding() { auto label = Label::createWithBMFont("fonts/bitmapFontTest4.fnt", "abcdefg"); addChild(label); - + auto s = Director::getInstance()->getWinSize(); - - label->setPosition( Vec2(s.width/2, s.height/2) ); + + label->setPosition(Vec2(s.width / 2, s.height / 2)); } std::string LabelFNTPadding::title() const @@ -309,17 +306,17 @@ LabelFNTOffset::LabelFNTOffset() auto s = Director::getInstance()->getWinSize(); Label* label = nullptr; - label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "FaFeFiFoFu"); + label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "FaFeFiFoFu"); addChild(label); - label->setPosition( Vec2(s.width/2, s.height/2+50) ); - + label->setPosition(Vec2(s.width / 2, s.height / 2 + 50)); + label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "fafefifofu"); addChild(label); - label->setPosition( Vec2(s.width/2, s.height/2) ); + label->setPosition(Vec2(s.width / 2, s.height / 2)); label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "aeiou"); addChild(label); - label->setPosition( Vec2(s.width/2, s.height/2-50) ); + label->setPosition(Vec2(s.width / 2, s.height / 2 - 50)); } std::string LabelFNTOffset::title() const @@ -335,21 +332,21 @@ std::string LabelFNTOffset::subtitle() const LabelFNTColor::LabelFNTColor() { auto winSize = Director::getInstance()->getWinSize(); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "Blue"); - label->setColor( Color3B::BLUE ); + label->setColor(Color3B::BLUE); addChild(label); label->setPosition(winSize.width / 2, winSize.height * 0.7f); label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "Red"); addChild(label); label->setPosition(winSize.width / 2, winSize.height * 0.5f); - label->setColor( Color3B::RED ); + label->setColor(Color3B::RED); label = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "Green"); addChild(label); - label->setPosition(winSize.width / 2, winSize.height * 0.3f); - label->setColor( Color3B::GREEN ); + label->setPosition(winSize.width / 2, winSize.height * 0.3f); + label->setColor(Color3B::GREEN); label->setString("Green"); } @@ -391,17 +388,17 @@ std::string LabelFNTOpacity::subtitle() const LabelFNTHundredLabels::LabelFNTHundredLabels() { // Upper Label - for ( int i=0 ; i < 100;i ++ ) + for (int i = 0; i < 100; i++) { char str[6] = {0}; sprintf(str, "-%d-", i); auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", str); addChild(label); - + auto s = Director::getInstance()->getWinSize(); - auto p = Vec2( CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height); - label->setPosition( p ); + auto p = Vec2(CCRANDOM_0_1() * s.width, CCRANDOM_0_1() * s.height); + label->setPosition(p); } } @@ -421,18 +418,17 @@ LabelFNTMultiLine::LabelFNTMultiLine() // Left auto label1 = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", " Multi line\nLeft"); - label1->setAnchorPoint(Vec2(0,0)); + label1->setAnchorPoint(Vec2(0, 0)); addChild(label1, 0, kTagBitmapAtlas1); s = label1->getContentSize(); CCLOG("content size: %.2fx%.2f", s.width, s.height); - // Center - auto label2 = Label::createWithBMFont( "fonts/bitmapFontTest3.fnt", "Multi line\nCenter"); + auto label2 = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "Multi line\nCenter"); addChild(label2, 0, kTagBitmapAtlas2); - s= label2->getContentSize(); + s = label2->getContentSize(); CCLOG("content size: %.2fx%.2f", s.width, s.height); // right @@ -465,17 +461,17 @@ LabelFNTandTTFEmpty::LabelFNTandTTFEmpty() // LabelBMFont auto label1 = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "", TextHAlignment::CENTER, s.width); addChild(label1, 0, kTagBitmapAtlas1); - label1->setPosition(Vec2(s.width/2, s.height - 100)); + label1->setPosition(Vec2(s.width / 2, s.height - 100)); // LabelTTF - TTFConfig ttfConfig("fonts/arial.ttf",24); - auto label2 = Label::createWithTTF(ttfConfig,"", TextHAlignment::CENTER,s.width); + TTFConfig ttfConfig("fonts/arial.ttf", 24); + auto label2 = Label::createWithTTF(ttfConfig, "", TextHAlignment::CENTER, s.width); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition(Vec2(s.width/2, s.height / 2)); - + label2->setPosition(Vec2(s.width / 2, s.height / 2)); + auto label3 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist"); addChild(label3, 0, kTagBitmapAtlas3); - label3->setPosition(Vec2(s.width/2, 100.0f)); + label3->setPosition(Vec2(s.width / 2, 100.0f)); schedule(CC_CALLBACK_1(LabelFNTandTTFEmpty::updateStrings, this), 1.0f, "update_strings_key"); @@ -484,16 +480,16 @@ LabelFNTandTTFEmpty::LabelFNTandTTFEmpty() void LabelFNTandTTFEmpty::updateStrings(float dt) { - auto label1 = static_cast( getChildByTag(kTagBitmapAtlas1) ); - auto label2 = static_cast( getChildByTag(kTagBitmapAtlas2) ); - auto label3 = static_cast( getChildByTag(kTagBitmapAtlas3) ); + auto label1 = static_cast(getChildByTag(kTagBitmapAtlas1)); + auto label2 = static_cast(getChildByTag(kTagBitmapAtlas2)); + auto label3 = static_cast(getChildByTag(kTagBitmapAtlas3)); - if( ! setEmpty ) + if (!setEmpty) { label1->setString("not empty"); label2->setString("not empty"); label3->setString("hi"); - + setEmpty = true; } else @@ -501,7 +497,7 @@ void LabelFNTandTTFEmpty::updateStrings(float dt) label1->setString(""); label2->setString(""); label3->setString(""); - + setEmpty = false; } } @@ -523,7 +519,7 @@ LabelFNTRetina::LabelFNTRetina() // LabelBMFont auto label1 = Label::createWithBMFont("fonts/konqa32.fnt", "TESTING RETINA DISPLAY"); addChild(label1); - label1->setPosition(Vec2(s.width/2, s.height/2)); + label1->setPosition(Vec2(s.width / 2, s.height / 2)); } std::string LabelFNTRetina::title() const @@ -540,7 +536,7 @@ LabelFNTGlyphDesigner::LabelFNTGlyphDesigner() { auto winSize = Director::getInstance()->getWinSize(); - auto layer = LayerColor::create(Color4B(128,128,128,255)); + auto layer = LayerColor::create(Color4B(128, 128, 128, 255)); addChild(layer, -10); auto label1 = Label::createWithBMFont("fonts/futura-48.fnt", "Testing Glyph Designer"); @@ -568,9 +564,12 @@ std::string LabelFNTGlyphDesigner::subtitle() const /// BitmapFontMultiLineAlignmentNew -#define LongSentencesExample "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." -#define LineBreaksExample "Lorem ipsum dolor\nsit amet\nconsectetur adipisicing elit\nblah\nblah" -#define MixedExample "ABC\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt\nDEF" +#define LongSentencesExample \ + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore " \ + "magna aliqua." +#define LineBreaksExample "Lorem ipsum dolor\nsit amet\nconsectetur adipisicing elit\nblah\nblah" +#define MixedExample \ + "ABC\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt\nDEF" #define ArrowsMax 0.95 #define ArrowsMin 0.7 @@ -593,26 +592,29 @@ bool LabelFNTMultiLineAlignment::init() return false; } - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(LabelFNTMultiLineAlignment::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(LabelFNTMultiLineAlignment::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(LabelFNTMultiLineAlignment::onTouchesEnded, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); // ask director the the window size auto size = Director::getInstance()->getWinSize(); // create and initialize a Label - this->_label = Label::createWithBMFont("fonts/markerFelt.fnt", "", TextHAlignment::CENTER, size.width/1.5); + this->_label = Label::createWithBMFont("fonts/markerFelt.fnt", "", TextHAlignment::CENTER, size.width / 1.5); this->_arrowsBar = Sprite::create("Images/arrowsBar.png"); - this->_arrows = Sprite::create("Images/arrows.png"); + this->_arrows = Sprite::create("Images/arrows.png"); MenuItemFont::setFontSize(20); - auto longSentences = MenuItemFont::create("Long Flowing Sentences", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); - auto lineBreaks = MenuItemFont::create("Short Sentences With Intentional Line Breaks", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); - auto mixed = MenuItemFont::create("Long Sentences Mixed With Intentional Line Breaks", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); - auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, nullptr); + auto longSentences = + MenuItemFont::create("Long Flowing Sentences", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); + auto lineBreaks = MenuItemFont::create("Short Sentences With Intentional Line Breaks", + CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); + auto mixed = MenuItemFont::create("Long Sentences Mixed With Intentional Line Breaks", + CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); + auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, nullptr); stringMenu->alignItemsVertically(); longSentences->setTag(LongSentences); @@ -625,9 +627,9 @@ bool LabelFNTMultiLineAlignment::init() MenuItemFont::setFontSize(30); - auto left = MenuItemFont::create("Left", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); + auto left = MenuItemFont::create("Left", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); auto center = MenuItemFont::create("Center", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); - auto right = MenuItemFont::create("Right", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); + auto right = MenuItemFont::create("Right", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); auto alignmentMenu = Menu::create(left, center, right, nullptr); alignmentMenu->alignItemsHorizontallyWithPadding(alignmentItemPadding); @@ -637,7 +639,7 @@ bool LabelFNTMultiLineAlignment::init() right->setTag(RightAlign); // position the label on the center of the screen - this->_label->setPosition(Vec2(size.width/2, size.height/2)); + this->_label->setPosition(Vec2(size.width / 2, size.height / 2)); this->_arrowsBar->setVisible(false); @@ -645,8 +647,8 @@ bool LabelFNTMultiLineAlignment::init() this->_arrowsBar->setScaleX(arrowsWidth / this->_arrowsBar->getContentSize().width); this->_arrowsBar->setPosition(Vec2(((ArrowsMax + ArrowsMin) / 2) * size.width, this->_label->getPosition().y)); - stringMenu->setPosition(Vec2(size.width/2, size.height - menuItemPaddingCenter)); - alignmentMenu->setPosition(Vec2(size.width/2, menuItemPaddingCenter+15)); + stringMenu->setPosition(Vec2(size.width / 2, size.height - menuItemPaddingCenter)); + alignmentMenu->setPosition(Vec2(size.width / 2, menuItemPaddingCenter + 15)); this->selectSentenceItem(longSentences); this->selectAlignmentItem(center); @@ -671,7 +673,7 @@ std::string LabelFNTMultiLineAlignment::subtitle() const return ""; } -void LabelFNTMultiLineAlignment::selectAlignmentItem(cocos2d::MenuItemFont * item) +void LabelFNTMultiLineAlignment::selectAlignmentItem(cocos2d::MenuItemFont* item) { if (this->_lastAlignmentItem && this->_lastAlignmentItem != item) { @@ -735,7 +737,7 @@ std::string LabelFNTMultiLineAlignment::getItemString(cocos2d::MenuItemFont* ite return str; } -void LabelFNTMultiLineAlignment::stringChanged(cocos2d::Ref *sender) +void LabelFNTMultiLineAlignment::stringChanged(cocos2d::Ref* sender) { auto item = (MenuItemFont*)sender; @@ -744,7 +746,7 @@ void LabelFNTMultiLineAlignment::stringChanged(cocos2d::Ref *sender) this->snapArrowsToEdge(); } -void LabelFNTMultiLineAlignment::alignmentChanged(cocos2d::Ref *sender) +void LabelFNTMultiLineAlignment::alignmentChanged(cocos2d::Ref* sender) { auto item = static_cast(sender); @@ -753,9 +755,9 @@ void LabelFNTMultiLineAlignment::alignmentChanged(cocos2d::Ref *sender) this->snapArrowsToEdge(); } -void LabelFNTMultiLineAlignment::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) +void LabelFNTMultiLineAlignment::onTouchesBegan(const std::vector& touches, cocos2d::Event* event) { - auto touch = touches[0]; + auto touch = touches[0]; auto location = touch->getLocationInView(); if (this->_arrows->getBoundingBox().containsPoint(location)) @@ -765,7 +767,7 @@ void LabelFNTMultiLineAlignment::onTouchesBegan(const std::vector& touch } } -void LabelFNTMultiLineAlignment::onTouchesEnded(const std::vector& touches, cocos2d::Event *event) +void LabelFNTMultiLineAlignment::onTouchesEnded(const std::vector& touches, cocos2d::Event* event) { _drag = false; this->snapArrowsToEdge(); @@ -773,20 +775,20 @@ void LabelFNTMultiLineAlignment::onTouchesEnded(const std::vector& touch this->_arrowsBar->setVisible(false); } -void LabelFNTMultiLineAlignment::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +void LabelFNTMultiLineAlignment::onTouchesMoved(const std::vector& touches, cocos2d::Event* event) { - if (! _drag) + if (!_drag) { return; } - auto touch = touches[0]; + auto touch = touches[0]; auto location = touch->getLocationInView(); auto winSize = Director::getInstance()->getWinSize(); - this->_arrows->setPosition(Vec2(MAX(MIN(location.x, ArrowsMax*winSize.width), ArrowsMin*winSize.width), - this->_arrows->getPosition().y)); + this->_arrows->setPosition(Vec2(MAX(MIN(location.x, ArrowsMax * winSize.width), ArrowsMin * winSize.width), + this->_arrows->getPosition().y)); float labelWidth = fabs(this->_arrows->getPosition().x - this->_label->getPosition().x) * 2; @@ -795,8 +797,8 @@ void LabelFNTMultiLineAlignment::onTouchesMoved(const std::vector& touch void LabelFNTMultiLineAlignment::snapArrowsToEdge() { - this->_arrows->setPosition(Vec2(this->_label->getPosition().x + this->_label->getContentSize().width/2, - this->_label->getPosition().y)); + this->_arrows->setPosition( + Vec2(this->_label->getPosition().x + this->_label->getContentSize().width / 2, this->_label->getPosition().y)); } /// LabelFNTMultiLineAlignmentUNICODE @@ -812,8 +814,8 @@ bool LabelFNTMultiLineAlignmentUNICODE::init() this->_menuItems[1]->setString("Spanish"); this->_menuItems[2]->setString("Ukrainian"); - auto ttfConfig = this->_label->getTTFConfig(); - ttfConfig.fontSize = 20; + auto ttfConfig = this->_label->getTTFConfig(); + ttfConfig.fontSize = 20; ttfConfig.fontFilePath = "fonts/tahoma.ttf"; this->_label->setTTFConfig(ttfConfig); @@ -861,7 +863,7 @@ std::string LabelFNTMultiLineAlignmentUNICODE::getItemString(cocos2d::MenuItemFo /// BMFontUnicodeNew LabelFNTUNICODELanguages::LabelFNTUNICODELanguages() { - auto strings = FileUtils::getInstance()->getValueMapFromFile("strings/LabelFNTUNICODELanguages.xml"); + auto strings = FileUtils::getInstance()->getValueMapFromFile("strings/LabelFNTUNICODELanguages.xml"); std::string chinese = strings["chinese1"].asString(); std::string russian = strings["russian"].asString(); std::string spanish = strings["spanish"].asString(); @@ -871,19 +873,19 @@ LabelFNTUNICODELanguages::LabelFNTUNICODELanguages() auto label1 = Label::createWithBMFont("fonts/arial-unicode-26.fnt", spanish, TextHAlignment::CENTER, 200); addChild(label1); - label1->setPosition(Vec2(s.width/2, s.height/5*3)); - + label1->setPosition(Vec2(s.width / 2, s.height / 5 * 3)); + auto label2 = Label::createWithBMFont("fonts/arial-unicode-26.fnt", chinese); addChild(label2); - label2->setPosition(Vec2(s.width/2, s.height/5*2.5)); + label2->setPosition(Vec2(s.width / 2, s.height / 5 * 2.5)); auto label3 = Label::createWithBMFont("fonts/arial-26-en-ru.fnt", russian); addChild(label3); - label3->setPosition(Vec2(s.width/2, s.height/5*2)); + label3->setPosition(Vec2(s.width / 2, s.height / 5 * 2)); auto label4 = Label::createWithBMFont("fonts/arial-unicode-26.fnt", japanese); addChild(label4); - label4->setPosition(Vec2(s.width/2, s.height/5*1.5)); + label4->setPosition(Vec2(s.width / 2, s.height / 5 * 1.5)); } std::string LabelFNTUNICODELanguages::title() const @@ -899,29 +901,26 @@ std::string LabelFNTUNICODELanguages::subtitle() const LabelFNTBounds::LabelFNTBounds() { auto s = Director::getInstance()->getWinSize(); - - auto layer = LayerColor::create(Color4B(128,128,128,255)); + + auto layer = LayerColor::create(Color4B(128, 128, 128, 255)); addChild(layer, -10); - + // LabelBMFont - auto label1 = Label::createWithBMFont("fonts/boundsTestFont.fnt", "Testing Glyph Designer", TextHAlignment::CENTER,s.width); + auto label1 = + Label::createWithBMFont("fonts/boundsTestFont.fnt", "Testing Glyph Designer", TextHAlignment::CENTER, s.width); addChild(label1); - label1->setPosition(Vec2(s.width/2, s.height/2)); + label1->setPosition(Vec2(s.width / 2, s.height / 2)); - auto drawNode = DrawNode::create(); + auto drawNode = DrawNode::create(); auto labelSize = label1->getContentSize(); auto origin = Director::getInstance()->getWinSize(); - - origin.width = origin.width / 2 - (labelSize.width / 2); + + origin.width = origin.width / 2 - (labelSize.width / 2); origin.height = origin.height / 2 - (labelSize.height / 2); - - Vec2 vertices[4]= - { - Vec2(origin.width, origin.height), - Vec2(labelSize.width + origin.width, origin.height), - Vec2(labelSize.width + origin.width, labelSize.height + origin.height), - Vec2(origin.width, labelSize.height + origin.height) - }; + + Vec2 vertices[4] = {Vec2(origin.width, origin.height), Vec2(labelSize.width + origin.width, origin.height), + Vec2(labelSize.width + origin.width, labelSize.height + origin.height), + Vec2(origin.width, labelSize.height + origin.height)}; drawNode->drawPoly(vertices, 4, true, Color4F(1.0f, 1.0f, 1.0f, 1.0f)); addChild(drawNode); } @@ -944,7 +943,8 @@ LabelFNTMultiFontAtlasNoRotation::LabelFNTMultiFontAtlasNoRotation() addChild(label1); label1->setPosition(Vec2(s.width / 2, s.height / 3 * 2)); - auto label2 = Label::createWithBMFont("fonts/geneva-32.fnt", "And this is Geneva", TextHAlignment::LEFT, 0, Rect(0, 128, 0, 0), false); + auto label2 = Label::createWithBMFont("fonts/geneva-32.fnt", "And this is Geneva", TextHAlignment::LEFT, 0, + Rect(0, 128, 0, 0), false); addChild(label2); label2->setPosition(Vec2(s.width / 2, s.height / 3 * 1)); } @@ -967,12 +967,14 @@ LabelFNTMultiFontAtlasWithRotation::LabelFNTMultiFontAtlasWithRotation() spriteCache->addSpriteFramesWithFile("fonts/bmfont-rotated-test.plist"); // Label BMFont - auto label1 = Label::createWithBMFont("fonts/helvetica-regular-32.fnt", "Helvetica with SubTextureKey", TextHAlignment::CENTER, 0, "helvetica-regular-32.png"); + auto label1 = Label::createWithBMFont("fonts/helvetica-regular-32.fnt", "Helvetica with SubTextureKey", + TextHAlignment::CENTER, 0, "helvetica-regular-32.png"); label1->setPosition(Vec2(s.width / 2, s.height / 3 * 2)); this->addChild(label1); const auto frame = spriteCache->getSpriteFrameByName("geneva-regular-32.png"); - auto label2 = Label::createWithBMFont("fonts/geneva-regular-32.fnt", "Geneva with Rect and Rotated", TextHAlignment::CENTER, 0, frame->getRectInPixels(), frame->isRotated()); + auto label2 = Label::createWithBMFont("fonts/geneva-regular-32.fnt", "Geneva with Rect and Rotated", + TextHAlignment::CENTER, 0, frame->getRectInPixels(), frame->isRotated()); label2->setPosition(Vec2(s.width / 2, s.height / 3 * 1)); this->addChild(label2); } @@ -993,8 +995,8 @@ LabelTTFLongLineWrapping::LabelTTFLongLineWrapping() // Long sentence TTFConfig ttfConfig("fonts/arial.ttf", 14); - auto label1 = Label::createWithTTF(ttfConfig, LongSentencesExample, TextHAlignment::CENTER,size.width); - label1->setPosition( Vec2(size.width/2, size.height/2) ); + auto label1 = Label::createWithTTF(ttfConfig, LongSentencesExample, TextHAlignment::CENTER, size.width); + label1->setPosition(Vec2(size.width / 2, size.height / 2)); label1->setAnchorPoint(Vec2(0.5f, 1.0f)); addChild(label1); } @@ -1015,21 +1017,21 @@ LabelTTFColor::LabelTTFColor() TTFConfig ttfConfig("fonts/arial.ttf", 18); // Green - auto label1 = Label::createWithTTF(ttfConfig,"Green", TextHAlignment::CENTER, size.width); - label1->setPosition(size.width/2, size.height * 0.5f); - label1->setTextColor( Color4B::GREEN ); + auto label1 = Label::createWithTTF(ttfConfig, "Green", TextHAlignment::CENTER, size.width); + label1->setPosition(size.width / 2, size.height * 0.5f); + label1->setTextColor(Color4B::GREEN); addChild(label1); // Red - auto label2 = Label::createWithTTF(ttfConfig,"Red", TextHAlignment::CENTER, size.width); - label2->setPosition(size.width/2, size.height * 0.65f); - label2->setTextColor( Color4B::RED ); + auto label2 = Label::createWithTTF(ttfConfig, "Red", TextHAlignment::CENTER, size.width); + label2->setPosition(size.width / 2, size.height * 0.65f); + label2->setTextColor(Color4B::RED); addChild(label2); // Blue - auto label3 = Label::createWithTTF(ttfConfig,"Blue", TextHAlignment::CENTER, size.width); - label3->setPosition(size.width/2, size.height * 0.35f); - label3->setTextColor( Color4B::BLUE ); + auto label3 = Label::createWithTTF(ttfConfig, "Blue", TextHAlignment::CENTER, size.width); + label3->setPosition(size.width / 2, size.height * 0.35f); + label3->setTextColor(Color4B::BLUE); addChild(label3); } @@ -1053,17 +1055,16 @@ LabelTTFDynamicAlignment::LabelTTFDynamicAlignment() addChild(_label); auto menu = Menu::create( - MenuItemFont::create("Left", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentLeft, this)), - MenuItemFont::create("Center", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentCenter, this)), - MenuItemFont::create("Right", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentRight, this)), - nullptr); - + MenuItemFont::create("Left", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentLeft, this)), + MenuItemFont::create("Center", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentCenter, this)), + MenuItemFont::create("Right", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentRight, this)), nullptr); + menu->alignItemsHorizontallyWithPadding(20); menu->setPosition(winSize.width / 2, winSize.height * 0.25f); addChild(menu); } -void LabelTTFDynamicAlignment::updateAlignment() +void LabelTTFDynamicAlignment::updateAlignment() { if (_label) { @@ -1105,21 +1106,20 @@ std::string LabelTTFDynamicAlignment::subtitle() const LabelTTFCJKWrappingTest::LabelTTFCJKWrappingTest() { auto size = Director::getInstance()->getWinSize(); - + auto drawNode = DrawNode::create(); drawNode->setAnchorPoint(Vec2(0, 0)); this->addChild(drawNode); - drawNode->drawSegment( - Vec2(size.width * 0.1f, size.height * 0.8f), - Vec2(size.width * 0.1, 0.0f), 1, Color4F(1.0f, 0.0f, 0.0f, 1.0f)); - drawNode->drawSegment( - Vec2(size.width * 0.85f, size.height * 0.8f), - Vec2(size.width * 0.85f, 0.0f), 1, Color4F(1.0f, 0.0f, 0.0f, 1.0f)); - + drawNode->drawSegment(Vec2(size.width * 0.1f, size.height * 0.8f), Vec2(size.width * 0.1, 0.0f), 1, + Color4F(1.0f, 0.0f, 0.0f, 1.0f)); + drawNode->drawSegment(Vec2(size.width * 0.85f, size.height * 0.8f), Vec2(size.width * 0.85f, 0.0f), 1, + Color4F(1.0f, 0.0f, 0.0f, 1.0f)); + TTFConfig ttfConfig("fonts/HKYuanMini.ttf", 25, GlyphCollection::DYNAMIC); - auto label1 = Label::createWithTTF(ttfConfig, - "你好,Cocos2d-x v3的New Label.", TextHAlignment::LEFT, size.width * 0.75f); - if(label1) { + auto label1 = + Label::createWithTTF(ttfConfig, "你好,Cocos2d-x v3的New Label.", TextHAlignment::LEFT, size.width * 0.75f); + if (label1) + { label1->setTextColor(Color4B(128, 255, 255, 255)); label1->setPosition(Vec2(size.width * 0.1f, size.height * 0.6f)); label1->setAnchorPoint(Vec2(0.0f, 0.5f)); @@ -1130,18 +1130,20 @@ LabelTTFCJKWrappingTest::LabelTTFCJKWrappingTest() label1->setTTFConfig(ttfConfig); } - auto label2 = Label::createWithTTF(ttfConfig, - "早上好,Cocos2d-x v3的New Label.", TextHAlignment::LEFT, size.width * 0.75f); - if(label2) { + auto label2 = + Label::createWithTTF(ttfConfig, "早上好,Cocos2d-x v3的New Label.", TextHAlignment::LEFT, size.width * 0.75f); + if (label2) + { label2->setTextColor(Color4B(255, 128, 255, 255)); label2->setPosition(Vec2(size.width * 0.1f, size.height * 0.4f)); label2->setAnchorPoint(Vec2(0.0f, 0.5f)); this->addChild(label2); } - auto label3 = Label::createWithTTF(ttfConfig, - "美好的一天啊美好的一天啊美好的一天啊", TextHAlignment::LEFT, size.width * 0.75f); - if(label3) { + auto label3 = Label::createWithTTF(ttfConfig, "美好的一天啊美好的一天啊美好的一天啊", TextHAlignment::LEFT, + size.width * 0.75f); + if (label3) + { label3->setTextColor(Color4B(255, 255, 128, 255)); label3->setPosition(Vec2(size.width * 0.1f, size.height * 0.2f)); label3->setAnchorPoint(Vec2(0.0f, 0.5f)); @@ -1157,7 +1159,7 @@ std::string LabelTTFCJKWrappingTest::title() const std::string LabelTTFCJKWrappingTest::subtitle() const { return "New Label with CJK + ASCII characters\n" - "Characters should stay in the correct position"; + "Characters should stay in the correct position"; } // @@ -1165,20 +1167,20 @@ std::string LabelTTFCJKWrappingTest::subtitle() const // LabelTTFUnicodeNew::LabelTTFUnicodeNew() { - auto strings = FileUtils::getInstance()->getValueMapFromFile("strings/LabelFNTUNICODELanguages.xml"); - std::string chinese = strings["chinese1"].asString(); - auto winSize = Director::getInstance()->getWinSize(); + auto strings = FileUtils::getInstance()->getValueMapFromFile("strings/LabelFNTUNICODELanguages.xml"); + std::string chinese = strings["chinese1"].asString(); + auto winSize = Director::getInstance()->getWinSize(); // Spanish auto label1 = Label::createWithTTF("Buen día, ¿cómo te llamas?", "fonts/arial.ttf", 23); label1->setPosition(winSize.width / 2, winSize.height * 0.65f); addChild(label1); - + // German auto label2 = Label::createWithTTF("In welcher Straße haben Sie gelebt?", "fonts/arial.ttf", 23); label2->setPosition(winSize.width / 2, winSize.height * 0.5f); addChild(label2); - + // Chinese auto label3 = Label::createWithTTF(chinese, "fonts/HKYuanMini.ttf", 24); label3->setPosition(winSize.width / 2, winSize.height * 0.35f); @@ -1201,8 +1203,8 @@ std::string LabelTTFUnicodeNew::subtitle() const LabelTTFEmoji::LabelTTFEmoji() { std::string emojiString = FileUtils::getInstance()->getStringFromFile("fonts/emoji.txt"); - auto winSize = Director::getInstance()->getWinSize(); - + auto winSize = Director::getInstance()->getWinSize(); + auto label = Label::createWithTTF(emojiString, "fonts/NotoEmoji-Regular.ttf", 23); label->setPosition(winSize.width / 2, winSize.height / 2); label->setDimensions(winSize.width, winSize.height); @@ -1221,30 +1223,28 @@ std::string LabelTTFEmoji::subtitle() const return "Uses the new Label with TTF. Testing Emoji"; } - LabelTTFFontsTestNew::LabelTTFFontsTestNew() { - const char *ttfpaths[] = { - "fonts/A Damn Mess.ttf", - "fonts/Abberancy.ttf", - "fonts/Abduction.ttf", - "fonts/American Typewriter.ttf", - "fonts/Paint Boy.ttf", - "fonts/Schwarzwald.ttf", - "fonts/Scissor Cuts.ttf", + const char* ttfpaths[] = { + "fonts/A Damn Mess.ttf", "fonts/Abberancy.ttf", "fonts/Abduction.ttf", "fonts/American Typewriter.ttf", + "fonts/Paint Boy.ttf", "fonts/Schwarzwald.ttf", "fonts/Scissor Cuts.ttf", }; int fontCount = sizeof(ttfpaths) / sizeof(ttfpaths[0]); - auto size = Director::getInstance()->getWinSize(); - TTFConfig ttfConfig(ttfpaths[0],20, GlyphCollection::NEHE); + auto size = Director::getInstance()->getWinSize(); + TTFConfig ttfConfig(ttfpaths[0], 20, GlyphCollection::NEHE); - for (int i = 0; i < fontCount; ++i) { + for (int i = 0; i < fontCount; ++i) + { ttfConfig.fontFilePath = ttfpaths[i]; - auto label = Label::createWithTTF(ttfConfig, ttfpaths[i], TextHAlignment::CENTER,0); - if( label ) { + auto label = Label::createWithTTF(ttfConfig, ttfpaths[i], TextHAlignment::CENTER, 0); + if (label) + { label->setPosition(size.width / 2, ((size.height * 0.6) / fontCount * i) + (size.height / 4)); addChild(label); - } else { + } + else + { log("ERROR: Cannot load: %s", ttfpaths[i]); } } @@ -1263,53 +1263,40 @@ std::string LabelTTFFontsTestNew::subtitle() const LabelTTFDistanceField::LabelTTFDistanceField() { auto size = Director::getInstance()->getWinSize(); - TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC,nullptr,true); + TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC, nullptr, true); - auto label1 = Label::createWithTTF(ttfConfig,"Distance Field",TextHAlignment::CENTER,size.width); - label1->setPosition( Vec2(size.width/2, size.height * 0.6f) ); - label1->setTextColor( Color4B::GREEN ); + auto label1 = Label::createWithTTF(ttfConfig, "Distance Field", TextHAlignment::CENTER, size.width); + label1->setPosition(Vec2(size.width / 2, size.height * 0.6f)); + label1->setTextColor(Color4B::GREEN); addChild(label1); - auto action = Sequence::create( - DelayTime::create(1.0f), - ScaleTo::create(6.0f,5.0f,5.0f), - ScaleTo::create(6.0f,1.0f,1.0f), - nullptr); + auto action = Sequence::create(DelayTime::create(1.0f), ScaleTo::create(6.0f, 5.0f, 5.0f), + ScaleTo::create(6.0f, 1.0f, 1.0f), nullptr); label1->runAction(RepeatForever::create(action)); // Draw the label border auto& labelContentSize = label1->getContentSize(); - auto borderDraw = DrawNode::create(); + auto borderDraw = DrawNode::create(); label1->addChild(borderDraw); borderDraw->clear(); borderDraw->setLineWidth(1); - Vec2 vertices[4] = - { - Vec2::ZERO, - Vec2(labelContentSize.width, 0.0f), - Vec2(labelContentSize.width, labelContentSize.height), - Vec2(0.0f, labelContentSize.height) - }; + Vec2 vertices[4] = {Vec2::ZERO, Vec2(labelContentSize.width, 0.0f), + Vec2(labelContentSize.width, labelContentSize.height), Vec2(0.0f, labelContentSize.height)}; borderDraw->drawPoly(vertices, 4, true, Color4F::RED); - auto label2 = Label::createWithTTF(ttfConfig,"Distance Field",TextHAlignment::CENTER,size.width); - label2->setPosition( Vec2(size.width/2, size.height * 0.3f) ); - label2->setTextColor( Color4B::RED ); + auto label2 = Label::createWithTTF(ttfConfig, "Distance Field", TextHAlignment::CENTER, size.width); + label2->setPosition(Vec2(size.width / 2, size.height * 0.3f)); + label2->setTextColor(Color4B::RED); addChild(label2); - + // Draw the label border auto& labelContentSize2 = label2->getContentSize(); - auto borderDraw2 = DrawNode::create(); + auto borderDraw2 = DrawNode::create(); label2->addChild(borderDraw2); borderDraw2->clear(); borderDraw2->setLineWidth(1); - Vec2 vertices2[4] = - { - Vec2::ZERO, - Vec2(labelContentSize2.width, 0.0f), - Vec2(labelContentSize2.width, labelContentSize2.height), - Vec2(0.0f, labelContentSize2.height) - }; + Vec2 vertices2[4] = {Vec2::ZERO, Vec2(labelContentSize2.width, 0.0f), + Vec2(labelContentSize2.width, labelContentSize2.height), Vec2(0.0f, labelContentSize2.height)}; borderDraw2->drawPoly(vertices2, 4, true, Color4F::GREEN); } @@ -1327,35 +1314,35 @@ LabelOutlineAndGlowTest::LabelOutlineAndGlowTest() { auto size = Director::getInstance()->getWinSize(); - auto bg = LayerColor::create(Color4B(200,191,231,255)); + auto bg = LayerColor::create(Color4B(200, 191, 231, 255)); this->addChild(bg); - TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC,nullptr,true); + TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC, nullptr, true); - auto label1 = Label::createWithTTF(ttfConfig,"Glow", TextHAlignment::CENTER, size.width); - label1->setPosition( Vec2(size.width/2, size.height*0.7) ); - label1->setTextColor( Color4B::GREEN ); + auto label1 = Label::createWithTTF(ttfConfig, "Glow", TextHAlignment::CENTER, size.width); + label1->setPosition(Vec2(size.width / 2, size.height * 0.7)); + label1->setTextColor(Color4B::GREEN); label1->enableGlow(Color4B::YELLOW); addChild(label1); ttfConfig.outlineSize = 1; - auto label2 = Label::createWithTTF(ttfConfig,"Outline", TextHAlignment::CENTER, size.width); - label2->setPosition( Vec2(size.width/2, size.height*0.6) ); - label2->setTextColor( Color4B::RED ); + auto label2 = Label::createWithTTF(ttfConfig, "Outline", TextHAlignment::CENTER, size.width); + label2->setPosition(Vec2(size.width / 2, size.height * 0.6)); + label2->setTextColor(Color4B::RED); label2->enableOutline(Color4B::BLUE); addChild(label2); ttfConfig.outlineSize = 2; - auto label3 = Label::createWithTTF(ttfConfig,"Outline", TextHAlignment::CENTER, size.width); - label3->setPosition( Vec2(size.width/2, size.height*0.48) ); - label3->setTextColor( Color4B::RED ); + auto label3 = Label::createWithTTF(ttfConfig, "Outline", TextHAlignment::CENTER, size.width); + label3->setPosition(Vec2(size.width / 2, size.height * 0.48)); + label3->setTextColor(Color4B::RED); label3->enableOutline(Color4B::BLUE); addChild(label3); ttfConfig.outlineSize = 3; - auto label4 = Label::createWithTTF(ttfConfig,"Outline", TextHAlignment::CENTER, size.width); - label4->setPosition( Vec2(size.width/2, size.height*0.36) ); - label4->setTextColor( Color4B::RED ); + auto label4 = Label::createWithTTF(ttfConfig, "Outline", TextHAlignment::CENTER, size.width); + label4->setPosition(Vec2(size.width / 2, size.height * 0.36)); + label4->setTextColor(Color4B::RED); label4->enableOutline(Color4B::BLUE); addChild(label4); } @@ -1370,10 +1357,7 @@ std::string LabelOutlineAndGlowTest::subtitle() const return "Testing outline and glow of label"; } -LabelShadowTest::LabelShadowTest() -{ - -} +LabelShadowTest::LabelShadowTest() {} void LabelShadowTest::onEnter() { @@ -1381,7 +1365,7 @@ void LabelShadowTest::onEnter() auto size = Director::getInstance()->getWinSize(); - auto bg = LayerColor::create(Color4B(200,191,231,255)); + auto bg = LayerColor::create(Color4B(200, 191, 231, 255)); this->addChild(bg); auto slider = ui::Slider::create(); @@ -1407,51 +1391,51 @@ void LabelShadowTest::onEnter() slider2->addEventListener(CC_CALLBACK_2(LabelShadowTest::sliderEvent, this)); addChild(slider2, 999); - float subtitleY = _subtitleLabel->getPosition().y; + float subtitleY = _subtitleLabel->getPosition().y; float horizontalSliderY = slider->getPosition().y; - float step = (subtitleY - horizontalSliderY) / 4; + float step = (subtitleY - horizontalSliderY) / 4; - TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC,nullptr,true); + TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC, nullptr, true); - shadowLabelTTF = Label::createWithTTF(ttfConfig,"TTF:Shadow"); - shadowLabelTTF->setPosition( Vec2(size.width/2, horizontalSliderY + step * (0.5f + 3)) ); - shadowLabelTTF->setTextColor( Color4B::RED ); + shadowLabelTTF = Label::createWithTTF(ttfConfig, "TTF:Shadow"); + shadowLabelTTF->setPosition(Vec2(size.width / 2, horizontalSliderY + step * (0.5f + 3))); + shadowLabelTTF->setTextColor(Color4B::RED); shadowLabelTTF->enableShadow(Color4B::BLACK); addChild(shadowLabelTTF); - shadowLabelOutline = Label::createWithTTF(ttfConfig,"TTF:Shadow"); - shadowLabelOutline->setPosition( Vec2(size.width/2, horizontalSliderY + step * (0.5f + 2)) ); - shadowLabelOutline->setTextColor( Color4B::RED ); - shadowLabelOutline->enableOutline(Color4B::YELLOW,1); + shadowLabelOutline = Label::createWithTTF(ttfConfig, "TTF:Shadow"); + shadowLabelOutline->setPosition(Vec2(size.width / 2, horizontalSliderY + step * (0.5f + 2))); + shadowLabelOutline->setTextColor(Color4B::RED); + shadowLabelOutline->enableOutline(Color4B::YELLOW, 1); shadowLabelOutline->enableShadow(Color4B::GREEN); addChild(shadowLabelOutline); - shadowLabelGrow = Label::createWithTTF(ttfConfig,"TTF:Shadow"); - shadowLabelGrow->setPosition( Vec2(size.width/2, horizontalSliderY + step * (0.5f + 1)) ); - shadowLabelGrow->setTextColor( Color4B::RED ); + shadowLabelGrow = Label::createWithTTF(ttfConfig, "TTF:Shadow"); + shadowLabelGrow->setPosition(Vec2(size.width / 2, horizontalSliderY + step * (0.5f + 1))); + shadowLabelGrow->setTextColor(Color4B::RED); shadowLabelGrow->enableGlow(Color4B::YELLOW); shadowLabelGrow->enableShadow(Color4B::BLUE); addChild(shadowLabelGrow); shadowLabelBMFont = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "BMFont:Shadow"); - shadowLabelBMFont->setPosition( Vec2(size.width/2, horizontalSliderY + step * 0.5f)); - shadowLabelBMFont->setColor( Color3B::RED ); + shadowLabelBMFont->setPosition(Vec2(size.width / 2, horizontalSliderY + step * 0.5f)); + shadowLabelBMFont->setColor(Color3B::RED); shadowLabelBMFont->enableShadow(Color4B::GREEN); addChild(shadowLabelBMFont); } -void LabelShadowTest::sliderEvent(Ref *pSender, ui::Slider::EventType type) +void LabelShadowTest::sliderEvent(Ref* pSender, ui::Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { - Slider* slider = (Slider*)this->getChildByTag(1); - Slider* slider2 = (Slider*)this->getChildByTag(2); - - auto offset = Size(slider->getPercent()-50,50 - slider2->getPercent()); - shadowLabelTTF->enableShadow(Color4B::BLACK,offset); - shadowLabelBMFont->enableShadow(Color4B::GREEN,offset); - shadowLabelOutline->enableShadow(Color4B::GREEN,offset); - shadowLabelGrow->enableShadow(Color4B::BLUE,offset); + Slider* slider = (Slider*)this->getChildByTag(1); + Slider* slider2 = (Slider*)this->getChildByTag(2); + + auto offset = Size(slider->getPercent() - 50, 50 - slider2->getPercent()); + shadowLabelTTF->enableShadow(Color4B::BLACK, offset); + shadowLabelBMFont->enableShadow(Color4B::GREEN, offset); + shadowLabelOutline->enableShadow(Color4B::GREEN, offset); + shadowLabelGrow->enableShadow(Color4B::BLUE, offset); } } @@ -1472,14 +1456,14 @@ LabelCharMapTest::LabelCharMapTest() auto label1 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist"); addChild(label1, 0, kTagSprite1); label1->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - label1->setPosition( Vec2(10,100) ); - label1->setOpacity( 200 ); + label1->setPosition(Vec2(10, 100)); + label1->setOpacity(200); auto label2 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist"); addChild(label2, 0, kTagSprite2); label2->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - label2->setPosition( Vec2(10,200) ); - label2->setOpacity( 32 ); + label2->setPosition(Vec2(10, 200)); + label2->setOpacity(32); schedule(CC_CALLBACK_1(LabelCharMapTest::step, this), "step_key"); } @@ -1515,24 +1499,24 @@ std::string LabelCharMapTest::subtitle() const //------------------------------------------------------------------ LabelCharMapColorTest::LabelCharMapColorTest() { - auto label1 = Label::createWithCharMap( "fonts/tuffy_bold_italic-charmap.plist"); + auto label1 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist"); addChild(label1, 0, kTagSprite1); label1->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - label1->setPosition( Vec2(10,100) ); - label1->setOpacity( 200 ); + label1->setPosition(Vec2(10, 100)); + label1->setOpacity(200); auto label2 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist"); addChild(label2, 0, kTagSprite2); label2->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - label2->setPosition( Vec2(10,200) ); - label2->setColor( Color3B::RED ); + label2->setPosition(Vec2(10, 200)); + label2->setColor(Color3B::RED); - auto fade = FadeOut::create(1.0f); + auto fade = FadeOut::create(1.0f); auto fade_in = fade->reverse(); - auto cb = CallFunc::create(CC_CALLBACK_0(LabelCharMapColorTest::actionFinishCallback, this)); - auto seq = Sequence::create(fade, fade_in, cb, nullptr); - auto repeat = RepeatForever::create( seq ); - label2->runAction( repeat ); + auto cb = CallFunc::create(CC_CALLBACK_0(LabelCharMapColorTest::actionFinishCallback, this)); + auto seq = Sequence::create(fade, fade_in, cb, nullptr); + auto repeat = RepeatForever::create(seq); + label2->runAction(repeat); _time = 0; @@ -1554,7 +1538,7 @@ void LabelCharMapColorTest::step(float dt) auto label2 = (Label*)getChildByTag(kTagSprite2); sprintf(string, "%d", (int)_time); - label2->setString( string ); + label2->setString(string); } std::string LabelCharMapColorTest::title() const @@ -1571,10 +1555,10 @@ LabelCrashTest::LabelCrashTest() { auto size = Director::getInstance()->getWinSize(); - TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC,nullptr,true); + TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC, nullptr, true); - auto label1 = Label::createWithTTF(ttfConfig,"Test崩溃123", TextHAlignment::CENTER, size.width); - label1->setPosition( Vec2(size.width/2, size.height/2) ); + auto label1 = Label::createWithTTF(ttfConfig, "Test崩溃123", TextHAlignment::CENTER, size.width); + label1->setPosition(Vec2(size.width / 2, size.height / 2)); addChild(label1); } @@ -1590,50 +1574,42 @@ std::string LabelCrashTest::subtitle() const LabelTTFOldNew::LabelTTFOldNew() { - auto s = Director::getInstance()->getWinSize(); - float delta = s.height/4; + auto s = Director::getInstance()->getWinSize(); + float delta = s.height / 4; auto label1 = Label::createWithSystemFont("Cocos2d-x Label Test", "arial", 24); addChild(label1, 0, kTagBitmapAtlas1); - label1->setPosition(Vec2(s.width/2, delta * 2)); + label1->setPosition(Vec2(s.width / 2, delta * 2)); label1->setColor(Color3B::RED); TTFConfig ttfConfig("fonts/arial.ttf", 24); auto label2 = Label::createWithTTF(ttfConfig, "Cocos2d-x Label Test"); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition(Vec2(s.width/2, delta * 2)); + label2->setPosition(Vec2(s.width / 2, delta * 2)); - auto drawNode = DrawNode::create(); + auto drawNode = DrawNode::create(); auto labelSize = label1->getContentSize(); auto origin = Director::getInstance()->getWinSize(); - - origin.width = origin.width / 2 - (labelSize.width / 2); + + origin.width = origin.width / 2 - (labelSize.width / 2); origin.height = origin.height / 2 - (labelSize.height / 2); - - Vec2 vertices[4]= - { - Vec2(origin.width, origin.height), - Vec2(labelSize.width + origin.width, origin.height), - Vec2(labelSize.width + origin.width, labelSize.height + origin.height), - Vec2(origin.width, labelSize.height + origin.height) - }; + + Vec2 vertices[4] = {Vec2(origin.width, origin.height), Vec2(labelSize.width + origin.width, origin.height), + Vec2(labelSize.width + origin.width, labelSize.height + origin.height), + Vec2(origin.width, labelSize.height + origin.height)}; drawNode->drawPoly(vertices, 4, true, Color4F(1.0f, 0.0f, 0.0f, 1.0f)); - + labelSize = label2->getContentSize(); origin = Director::getInstance()->getWinSize(); - - origin.width = origin.width / 2 - (labelSize.width / 2); + + origin.width = origin.width / 2 - (labelSize.width / 2); origin.height = origin.height / 2 - (labelSize.height / 2); - - Vec2 vertices2[4]= - { - Vec2(origin.width, origin.height), - Vec2(labelSize.width + origin.width, origin.height), - Vec2(labelSize.width + origin.width, labelSize.height + origin.height), - Vec2(origin.width, labelSize.height + origin.height) - }; + + Vec2 vertices2[4] = {Vec2(origin.width, origin.height), Vec2(labelSize.width + origin.width, origin.height), + Vec2(labelSize.width + origin.width, labelSize.height + origin.height), + Vec2(origin.width, labelSize.height + origin.height)}; drawNode->drawPoly(vertices2, 4, true, Color4F(1.0f, 1.0f, 1.0f, 1.0f)); - + addChild(drawNode); } @@ -1653,11 +1629,11 @@ LabelFontNameTest::LabelFontNameTest() auto label1 = Label::create(); label1->setString("Default Font"); - label1->setPosition( Vec2(size.width/2, size.height * 0.7) ); + label1->setPosition(Vec2(size.width / 2, size.height * 0.7)); addChild(label1); - auto label3 = Label::createWithSystemFont("Marker Felt","Marker Felt",32); - label3->setPosition( Vec2(size.width/2, size.height * 0.5) ); + auto label3 = Label::createWithSystemFont("Marker Felt", "Marker Felt", 32); + label3->setPosition(Vec2(size.width / 2, size.height * 0.5)); addChild(label3); } @@ -1674,9 +1650,9 @@ std::string LabelFontNameTest::subtitle() const LabelAlignmentTest::LabelAlignmentTest() { auto blockSize = Size(200, 160); - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); - auto pos = Vec2((s.width - blockSize.width) / 2, (s.height - blockSize.height) / 2); + auto pos = Vec2((s.width - blockSize.width) / 2, (s.height - blockSize.height) / 2); auto colorLayer = LayerColor::create(Color4B(100, 100, 100, 255), blockSize.width, blockSize.height); colorLayer->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); colorLayer->setPosition(pos); @@ -1687,17 +1663,15 @@ LabelAlignmentTest::LabelAlignmentTest() auto menu = Menu::create( MenuItemFont::create("Left", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentLeft, this)), MenuItemFont::create("Center", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentCenter, this)), - MenuItemFont::create("Right", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentRight, this)), - nullptr); + MenuItemFont::create("Right", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentRight, this)), nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(50.0f, s.height / 2 - 20)); this->addChild(menu); - menu = Menu::create( - MenuItemFont::create("Top", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentTop, this)), - MenuItemFont::create("Middle", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentMiddle, this)), - MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentBottom, this)), - nullptr); + menu = Menu::create(MenuItemFont::create("Top", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentTop, this)), + MenuItemFont::create("Middle", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentMiddle, this)), + MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentBottom, this)), + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(s.width - 50, s.height / 2 - 20)); this->addChild(menu); @@ -1754,8 +1728,8 @@ LabelIssue4428Test::LabelIssue4428Test() { auto size = Director::getInstance()->getWinSize(); - auto label = Label::createWithBMFont( "fonts/bitmapFontTest3.fnt", "123\n456"); - label->setPosition(Vec2(size.width /2.0f, size.height / 2.0f)); + auto label = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "123\n456"); + label->setPosition(Vec2(size.width / 2.0f, size.height / 2.0f)); label->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); addChild(label); @@ -1782,7 +1756,7 @@ std::string LabelIssue4428Test::subtitle() const LabelIssue4999Test::LabelIssue4999Test() { - auto label = Label::createWithTTF("Smaller font test", "fonts/arial.ttf",5); + auto label = Label::createWithTTF("Smaller font test", "fonts/arial.ttf", 5); label->setPosition(VisibleRect::center()); label->setAnchorPoint(Vec2::ANCHOR_MIDDLE); addChild(label); @@ -1802,14 +1776,14 @@ LabelLineHeightTest::LabelLineHeightTest() { auto size = Director::getInstance()->getWinSize(); - auto bg = LayerColor::create(Color4B(200,191,231,255)); + auto bg = LayerColor::create(Color4B(200, 191, 231, 255)); this->addChild(bg); - TTFConfig ttfConfig("fonts/arial.ttf", 25, GlyphCollection::DYNAMIC,nullptr,false); + TTFConfig ttfConfig("fonts/arial.ttf", 25, GlyphCollection::DYNAMIC, nullptr, false); - label = Label::createWithTTF(ttfConfig,"Test\nLine\nHeight"); - label->setPosition( Vec2(size.width/2, size.height*0.5f) ); - label->setTextColor( Color4B::RED ); + label = Label::createWithTTF(ttfConfig, "Test\nLine\nHeight"); + label->setPosition(Vec2(size.width / 2, size.height * 0.5f)); + label->setTextColor(Color4B::RED); addChild(label); auto slider = ui::Slider::create(); @@ -1823,11 +1797,11 @@ LabelLineHeightTest::LabelLineHeightTest() addChild(slider); } -void LabelLineHeightTest::sliderEvent(Ref *sender, ui::Slider::EventType type) +void LabelLineHeightTest::sliderEvent(Ref* sender, ui::Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { - Slider* slider = (Slider*)sender; + Slider* slider = (Slider*)sender; label->setLineHeight(slider->getPercent()); } } @@ -1846,14 +1820,14 @@ LabelAdditionalKerningTest::LabelAdditionalKerningTest() { auto size = Director::getInstance()->getWinSize(); - auto bg = LayerColor::create(Color4B(200,191,231,255)); + auto bg = LayerColor::create(Color4B(200, 191, 231, 255)); this->addChild(bg); - TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC,nullptr,false); + TTFConfig ttfConfig("fonts/arial.ttf", 40, GlyphCollection::DYNAMIC, nullptr, false); - label = Label::createWithTTF(ttfConfig,"Test additional kerning"); - label->setPosition(size.width/2, size.height * 0.5f); - label->setTextColor( Color4B::RED ); + label = Label::createWithTTF(ttfConfig, "Test additional kerning"); + label->setPosition(size.width / 2, size.height * 0.5f); + label->setTextColor(Color4B::RED); addChild(label); auto slider = ui::Slider::create(); @@ -1867,11 +1841,11 @@ LabelAdditionalKerningTest::LabelAdditionalKerningTest() addChild(slider); } -void LabelAdditionalKerningTest::sliderEvent(Ref *sender, ui::Slider::EventType type) +void LabelAdditionalKerningTest::sliderEvent(Ref* sender, ui::Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { - Slider* slider = (Slider*)sender; + Slider* slider = (Slider*)sender; label->setAdditionalKerning(slider->getPercent()); } } @@ -1889,7 +1863,7 @@ std::string LabelAdditionalKerningTest::subtitle() const LabelIssue8492Test::LabelIssue8492Test() { auto label = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", "中国中国中国中国中国"); - label->setDimensions(5,100); + label->setDimensions(5, 100); label->setPosition(VisibleRect::center()); addChild(label); } @@ -1906,8 +1880,8 @@ std::string LabelIssue8492Test::subtitle() const LabelMultilineWithOutline::LabelMultilineWithOutline() { - auto label = Label::createWithTTF("Multi-line text\nwith\noutline feature", "fonts/arial.ttf", 24); - label->enableOutline(Color4B::ORANGE,1); + auto label = Label::createWithTTF("Multi-line text\nwith\noutline feature", "fonts/arial.ttf", 24); + label->enableOutline(Color4B::ORANGE, 1); label->setPosition(VisibleRect::center()); addChild(label); } @@ -1922,16 +1896,15 @@ std::string LabelMultilineWithOutline::subtitle() const return "end in string 'outline feature'"; } - LabelIssue9255Test::LabelIssue9255Test() { - Size s = Director::getInstance()->getWinSize(); + Size s = Director::getInstance()->getWinSize(); auto parent = Node::create(); - parent->setPosition(s.width/2, s.height/2); + parent->setPosition(s.width / 2, s.height / 2); parent->setVisible(false); this->addChild(parent); - auto label = Label::createWithTTF("Crashed!!!", "fonts/HKYuanMini.ttf", 24); + auto label = Label::createWithTTF("Crashed!!!", "fonts/HKYuanMini.ttf", 24); label->setPosition(VisibleRect::center()); parent->addChild(label); } @@ -1948,7 +1921,7 @@ std::string LabelIssue9255Test::subtitle() const LabelSmallDimensionsTest::LabelSmallDimensionsTest() { - auto label = Label::createWithSystemFont("Hello World!", "fonts/arial.ttf", 24, Size(30.0f,100.0f)); + auto label = Label::createWithSystemFont("Hello World!", "fonts/arial.ttf", 24, Size(30.0f, 100.0f)); label->setPosition(VisibleRect::center()); addChild(label); } @@ -1968,13 +1941,13 @@ LabelIssue10089Test::LabelIssue10089Test() auto center = VisibleRect::center(); auto labelA = Label::createWithSystemFont("create label with system font", "fonts/arial.ttf", 24); - auto size = labelA->getContentSize(); + auto size = labelA->getContentSize(); labelA->setDimensions(size.width, size.height); labelA->setPosition(center.x, center.y + 50); addChild(labelA); auto labelB = Label::createWithTTF("create label with TTF", "fonts/arial.ttf", 24); - size = labelB->getContentSize(); + size = labelB->getContentSize(); labelB->setDimensions(size.width, size.height); labelB->setPosition(center.x, center.y - 50); addChild(labelB); @@ -2056,9 +2029,8 @@ LabelIssue11576Test::LabelIssue11576Test() label->getLetter(index); } - this->runAction(Sequence::create(DelayTime::create(2.0f), CallFunc::create([label](){ - label->setString("Hello World!"); - }), nullptr)); + this->runAction(Sequence::create(DelayTime::create(2.0f), + CallFunc::create([label]() { label->setString("Hello World!"); }), nullptr)); label->setPosition(center.x, center.y); addChild(label); @@ -2105,17 +2077,13 @@ LabelIssue12409Test::LabelIssue12409Test() addChild(label); auto labelSize = label->getContentSize(); - auto winSize = Director::getInstance()->getWinSize(); + auto winSize = Director::getInstance()->getWinSize(); Vec2 labelOrigin; - labelOrigin.x = winSize.width / 2 - (labelSize.width / 2); - labelOrigin.y = winSize.height / 2 - (labelSize.height / 2); - Vec2 vertices[4] = - { - Vec2(labelOrigin.x, labelOrigin.y), - Vec2(labelOrigin.x + labelSize.width, labelOrigin.y), - Vec2(labelOrigin.x + labelSize.width, labelOrigin.y + labelSize.height), - Vec2(labelOrigin.x, labelOrigin.y + labelSize.height) - }; + labelOrigin.x = winSize.width / 2 - (labelSize.width / 2); + labelOrigin.y = winSize.height / 2 - (labelSize.height / 2); + Vec2 vertices[4] = {Vec2(labelOrigin.x, labelOrigin.y), Vec2(labelOrigin.x + labelSize.width, labelOrigin.y), + Vec2(labelOrigin.x + labelSize.width, labelOrigin.y + labelSize.height), + Vec2(labelOrigin.x, labelOrigin.y + labelSize.height)}; auto drawNode = DrawNode::create(); drawNode->drawPoly(vertices, 4, true, Color4F::WHITE); @@ -2140,13 +2108,13 @@ LabelAddChildTest::LabelAddChildTest() label->setPosition(center.x, center.y); addChild(label); - auto jump = JumpBy::create(1.0f, Vec2::ZERO, 60, 1); + auto jump = JumpBy::create(1.0f, Vec2::ZERO, 60, 1); auto jump_4ever = RepeatForever::create(jump); label->runAction(jump_4ever); auto spite = Sprite::create("Images/SpookyPeas.png"); spite->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT); - spite->setPosition(label->getContentSize().width, label->getContentSize().height/2); + spite->setPosition(label->getContentSize().width, label->getContentSize().height / 2); label->addChild(spite); } @@ -2185,8 +2153,7 @@ LabelIssue11585Test::LabelIssue11585Test() label->getLetter(0)->setColor(Color3B::RED); label->getLetter(1)->setColor(Color3B::GREEN); label->getLetter(2)->setColor(Color3B::BLUE); - auto action = RepeatForever::create(Sequence::create( - FadeOut::create(2), FadeIn::create(2),nullptr)); + auto action = RepeatForever::create(Sequence::create(FadeOut::create(2), FadeIn::create(2), nullptr)); label->runAction(action); } @@ -2207,9 +2174,9 @@ LabelIssue10688Test::LabelIssue10688Test() auto label = Label::createWithTTF("Glow MenuItemLabel", "fonts/arial.ttf", 30); label->setTextColor(Color4B::RED); label->enableGlow(Color4B::YELLOW); - auto menuItem1 = MenuItemLabel::create(label, [](Ref*){}); + auto menuItem1 = MenuItemLabel::create(label, [](Ref*) {}); menuItem1->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT); - menuItem1->setPosition(center.x - label->getContentSize().width/2, center.y); + menuItem1->setPosition(center.x - label->getContentSize().width / 2, center.y); auto menu = Menu::create(menuItem1, NULL); menu->setPosition(Vec2::ZERO); @@ -2236,9 +2203,7 @@ LabelIssue13202Test::LabelIssue13202Test() label->getContentSize(); label->setString("A"); - this->scheduleOnce([](float dt){ - FontAtlasCache::purgeCachedData(); - }, 0.15f, "FontAtlasCache::purgeCachedData"); + this->scheduleOnce([](float dt) { FontAtlasCache::purgeCachedData(); }, 0.15f, "FontAtlasCache::purgeCachedData"); } std::string LabelIssue13202Test::title() const @@ -2270,18 +2235,18 @@ std::string LabelIssue9500Test::subtitle() const return "Spaces should not be lost if label created with Fingerpop.ttf"; } -ControlStepper *LabelLayoutBaseTest::makeControlStepper() +ControlStepper* LabelLayoutBaseTest::makeControlStepper() { - auto minusSprite = Sprite::create("extensions/stepper-minus.png"); - auto plusSprite = Sprite::create("extensions/stepper-plus.png"); - + auto minusSprite = Sprite::create("extensions/stepper-minus.png"); + auto plusSprite = Sprite::create("extensions/stepper-plus.png"); + return ControlStepper::create(minusSprite, plusSprite); } LabelLayoutBaseTest::LabelLayoutBaseTest() { auto size = Director::getInstance()->getVisibleSize(); - + this->initTestLabel(size); this->initFontSizeChange(size); @@ -2301,19 +2266,18 @@ void LabelLayoutBaseTest::initFontSizeChange(const cocos2d::Size& size) auto fontSizeLabel = Label::createWithSystemFont("font size:20", "Arial", 10); fontSizeLabel->setName("fontSize"); - ControlStepper *stepper = this->makeControlStepper(); - stepper->setPosition(size.width * 0.5 - stepper->getContentSize().width / 2, - size.height * 0.8); + ControlStepper* stepper = this->makeControlStepper(); + stepper->setPosition(size.width * 0.5 - stepper->getContentSize().width / 2, size.height * 0.8); stepper->setValue(20); - stepper->addTargetWithActionForControlEvents(this, - cccontrol_selector(LabelLayoutBaseTest::valueChanged), + stepper->addTargetWithActionForControlEvents(this, cccontrol_selector(LabelLayoutBaseTest::valueChanged), Control::EventType::VALUE_CHANGED); this->addChild(stepper); stepper->setName("stepper"); stepper->setScale(0.5); - fontSizeLabel->setPosition(stepper->getPosition() - - Vec2(stepper->getContentSize().width/2 + fontSizeLabel->getContentSize().width/2,0.0f)); + fontSizeLabel->setPosition( + stepper->getPosition() - + Vec2(stepper->getContentSize().width / 2 + fontSizeLabel->getContentSize().width / 2, 0.0f)); this->addChild(fontSizeLabel); } @@ -2324,20 +2288,21 @@ void LabelLayoutBaseTest::initWrapOption(const cocos2d::Size& size) label->setPosition(Vec2(size.width * 0.8f - 100, size.height * 0.8f)); this->addChild(label); - CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", + CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active_disable.png"); checkBox->setPosition(Vec2(size.width * 0.8f - 55, size.height * 0.8f)); checkBox->setScale(0.5); checkBox->setSelected(true); checkBox->setName("toggleWrap"); - checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event){ - if (event == CheckBox::EventType::SELECTED) { + checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event) { + if (event == CheckBox::EventType::SELECTED) + { _label->enableWrap(true); - }else{ + } + else + { _label->enableWrap(false); } this->updateDrawNodeSize(_label->getContentSize()); @@ -2351,55 +2316,53 @@ void LabelLayoutBaseTest::initToggleLabelTypeOption(const cocos2d::Size& size) label->setColor(Color3B::WHITE); label->setPosition(Vec2(size.width * 0.8f + 15, size.height * 0.8f)); this->addChild(label); - - CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", + + CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active_disable.png"); checkBox->setPosition(Vec2(size.width * 0.8f + 70, size.height * 0.8f)); checkBox->setScale(0.5); checkBox->setName("toggleType"); checkBox->setSelected(true); - auto stepper = (ControlStepper*)this->getChildByName("stepper"); + auto stepper = (ControlStepper*)this->getChildByName("stepper"); - checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event){ - float fontSize = stepper->getValue(); + checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event) { + float fontSize = stepper->getValue(); - if (event == CheckBox::EventType::SELECTED) { - _labelType = 0; - auto ttfConfig = _label->getTTFConfig(); + if (event == CheckBox::EventType::SELECTED) + { + _labelType = 0; + auto ttfConfig = _label->getTTFConfig(); ttfConfig.fontSize = fontSize; _label->setTTFConfig(ttfConfig); - }else{ + } + else + { _labelType = 1; _label->setBMFontFilePath("fonts/enligsh-chinese.fnt"); _label->setBMFontSize(fontSize); } }); this->addChild(checkBox); - } void LabelLayoutBaseTest::initAlignmentOption(const cocos2d::Size& size) { - //add text alignment settings + // add text alignment settings MenuItemFont::setFontSize(30); auto menu = Menu::create( MenuItemFont::create("Left", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentLeft, this)), MenuItemFont::create("Center", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentCenter, this)), - MenuItemFont::create("Right", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentRight, this)), - nullptr); + MenuItemFont::create("Right", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentRight, this)), nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(50.0f, size.height / 2 - 20)); this->addChild(menu); - menu = Menu::create( - MenuItemFont::create("Top", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentTop, this)), - MenuItemFont::create("Middle", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentMiddle, this)), - MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentBottom, this)), - nullptr); + menu = Menu::create(MenuItemFont::create("Top", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentTop, this)), + MenuItemFont::create("Middle", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentMiddle, this)), + MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelLayoutBaseTest::setAlignmentBottom, this)), + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(size.width - 50, size.height / 2 - 20)); this->addChild(menu); @@ -2429,22 +2392,24 @@ void LabelLayoutBaseTest::initSliders(const cocos2d::Size& size) addChild(slider2); auto winSize = Director::getInstance()->getVisibleSize(); - slider->addEventListener([=](Ref* ref, Slider::EventType event){ - float percent = slider->getPercent(); - auto labelSize = _label->getContentSize(); + slider->addEventListener([=](Ref* ref, Slider::EventType event) { + float percent = slider->getPercent(); + auto labelSize = _label->getContentSize(); auto drawNodeSize = Size(percent / 100.0 * winSize.width, labelSize.height); - if(drawNodeSize.width <=0){ + if (drawNodeSize.width <= 0) + { drawNodeSize.width = 0.1f; } _label->setDimensions(drawNodeSize.width, drawNodeSize.height); this->updateDrawNodeSize(drawNodeSize); }); - slider2->addEventListener([=](Ref* ref, Slider::EventType event){ - float percent = slider2->getPercent(); - auto labelSize = _label->getContentSize(); - auto drawNodeSize = Size( labelSize.width, percent / 100.0 * winSize.height); - if(drawNodeSize.height <= 0){ + slider2->addEventListener([=](Ref* ref, Slider::EventType event) { + float percent = slider2->getPercent(); + auto labelSize = _label->getContentSize(); + auto drawNodeSize = Size(labelSize.width, percent / 100.0 * winSize.height); + if (drawNodeSize.height <= 0) + { drawNodeSize.height = 0.1f; } _label->setDimensions(drawNodeSize.width, drawNodeSize.height); @@ -2456,7 +2421,7 @@ void LabelLayoutBaseTest::initTestLabel(const cocos2d::Size& size) { auto center = VisibleRect::center(); _label = Label::createWithTTF("五六七八This is a very long sentence一二三四.", "fonts/HKYuanMini.ttf", 20); - _label->setDimensions(size.width/2, size.height/2); + _label->setDimensions(size.width / 2, size.height / 2); _label->setPosition(center); _label->setName("Label"); _label->setString("五六七八This is a very long sentence一二三."); @@ -2473,7 +2438,6 @@ void LabelLayoutBaseTest::initDrawNode(const cocos2d::Size& size) this->updateDrawNodeSize(_label->getContentSize()); } - void LabelLayoutBaseTest::setAlignmentLeft(Ref* sender) { _label->setHorizontalAlignment(TextHAlignment::LEFT); @@ -2504,56 +2468,55 @@ void LabelLayoutBaseTest::setAlignmentBottom(Ref* sender) _label->setVerticalAlignment(TextVAlignment::BOTTOM); } - -void LabelLayoutBaseTest::valueChanged(cocos2d::Ref *sender, cocos2d::extension::Control::EventType controlEvent) +void LabelLayoutBaseTest::valueChanged(cocos2d::Ref* sender, cocos2d::extension::Control::EventType controlEvent) { ControlStepper* pControl = (ControlStepper*)sender; // Change value of label. auto fontSizeLabel = (Label*)this->getChildByName("fontSize"); - float fontSize = (float)pControl->getValue(); + float fontSize = (float)pControl->getValue(); fontSizeLabel->setString(StringUtils::format("font size:%d", (int)fontSize)); - - if (_labelType == 0) { - auto ttfConfig = _label->getTTFConfig(); + + if (_labelType == 0) + { + auto ttfConfig = _label->getTTFConfig(); ttfConfig.fontSize = fontSize; _label->setTTFConfig(ttfConfig); - }else if(_labelType == 1){ + } + else if (_labelType == 1) + { _label->setBMFontSize(fontSize); - }else if (_labelType == 2) { + } + else if (_labelType == 2) + { _label->setSystemFontSize(fontSize); } this->updateDrawNodeSize(_label->getContentSize()); - - //FIXME::When calling getLetter, the label Overflow feature will be invalid. -// auto letterSprite = _label->getLetter(1); -// auto moveBy = ScaleBy::create(1.0,2.0); -// letterSprite->stopAllActions(); -// letterSprite->runAction(Sequence::create(moveBy, moveBy->clone()->reverse(), nullptr )); -// -// CCLOG("label line height = %f", _label->getLineHeight()); + + // FIXME::When calling getLetter, the label Overflow feature will be invalid. + // auto letterSprite = _label->getLetter(1); + // auto moveBy = ScaleBy::create(1.0,2.0); + // letterSprite->stopAllActions(); + // letterSprite->runAction(Sequence::create(moveBy, moveBy->clone()->reverse(), nullptr )); + // + // CCLOG("label line height = %f", _label->getLineHeight()); } -void LabelLayoutBaseTest::updateDrawNodeSize(const cocos2d::Size &drawNodeSize) +void LabelLayoutBaseTest::updateDrawNodeSize(const cocos2d::Size& drawNodeSize) { auto origin = Director::getInstance()->getWinSize(); auto labelSize = _label->getContentSize(); - origin.width = origin.width / 2 - (labelSize.width / 2); + origin.width = origin.width / 2 - (labelSize.width / 2); origin.height = origin.height / 2 - (labelSize.height / 2); - Vec2 vertices[4]= - { - Vec2(origin.width, origin.height), - Vec2(drawNodeSize.width + origin.width, origin.height), - Vec2(drawNodeSize.width + origin.width, drawNodeSize.height + origin.height), - Vec2(origin.width, drawNodeSize.height + origin.height) - }; + Vec2 vertices[4] = {Vec2(origin.width, origin.height), Vec2(drawNodeSize.width + origin.width, origin.height), + Vec2(drawNodeSize.width + origin.width, drawNodeSize.height + origin.height), + Vec2(origin.width, drawNodeSize.height + origin.height)}; _drawNode->clear(); _drawNode->drawLine(vertices[0], vertices[1], Color4F(1.0f, 1.0f, 1.0f, 1.0f)); _drawNode->drawLine(vertices[0], vertices[3], Color4F(1.0f, 1.0f, 1.0f, 1.0f)); _drawNode->drawLine(vertices[2], vertices[3], Color4F(1.0f, 1.0f, 1.0f, 1.0f)); _drawNode->drawLine(vertices[1], vertices[2], Color4F(1.0f, 1.0f, 1.0f, 1.0f)); - } LabelWrapByWordTest::LabelWrapByWordTest() @@ -2562,7 +2525,6 @@ LabelWrapByWordTest::LabelWrapByWordTest() _label->setAdditionalKerning(2); _label->setVerticalAlignment(TextVAlignment::CENTER); _label->setOverflow(Label::Overflow::CLAMP); - } std::string LabelWrapByWordTest::title() const @@ -2577,13 +2539,12 @@ std::string LabelWrapByWordTest::subtitle() const LabelWrapByCharTest::LabelWrapByCharTest() { - _label->setLineBreakWithoutSpace(true); + _label->setLineBreakWithoutSpace(true); _label->setString("五六七八This \nis a very long sentence一二三四."); _label->setLineSpacing(5); _label->setAdditionalKerning(2); _label->setVerticalAlignment(TextVAlignment::TOP); _label->setOverflow(Label::Overflow::CLAMP); - } std::string LabelWrapByCharTest::title() const @@ -2601,8 +2562,9 @@ std::string LabelWrapByCharTest::subtitle() const LabelWrapNoBreakSpaceTest::LabelWrapNoBreakSpaceTest() { _label->setLineBreakWithoutSpace(false); - const char* no_break_space_utf8 = "\xC2\xA0"; // 0xA0 - no-break space - auto str = StringUtils::format("The price is $%s1.25. \n\nthe space between \"$\" and \"1.25\" is a no break space.", no_break_space_utf8); + const char* no_break_space_utf8 = "\xC2\xA0"; // 0xA0 - no-break space + auto str = StringUtils::format( + "The price is $%s1.25. \n\nthe space between \"$\" and \"1.25\" is a no break space.", no_break_space_utf8); _label->setString(str); _label->setVerticalAlignment(TextVAlignment::TOP); _label->setOverflow(Label::Overflow::CLAMP); @@ -2666,19 +2628,19 @@ LabelResizeTest::LabelResizeTest() _label->setVerticalAlignment(TextVAlignment::TOP); _label->setOverflow(Label::Overflow::RESIZE_HEIGHT); - this->updateDrawNodeSize(_label->getContentSize()); auto slider1 = (ui::Slider*)this->getChildByTag(1); - auto slider2 = (ui::Slider*)this->getChildByTag(2); - slider2->setVisible(false); - + auto slider2 = (ui::Slider*)this->getChildByTag(2); + slider2->setVisible(false); + auto winSize = Director::getInstance()->getVisibleSize(); - slider1->addEventListener([=](Ref* ref, Slider::EventType event){ - float percent = slider1->getPercent(); - auto drawNodeSize = Size(percent / 100.0 * winSize.width,_label->getContentSize().height); - if(drawNodeSize.height <= 0){ + slider1->addEventListener([=](Ref* ref, Slider::EventType event) { + float percent = slider1->getPercent(); + auto drawNodeSize = Size(percent / 100.0 * winSize.width, _label->getContentSize().height); + if (drawNodeSize.height <= 0) + { drawNodeSize.height = 0.1f; } _label->setDimensions(drawNodeSize.width, drawNodeSize.height); @@ -2687,32 +2649,32 @@ LabelResizeTest::LabelResizeTest() auto stepper = (ControlStepper*)this->getChildByName("stepper"); stepper->setValue(12); - + auto label = Label::createWithSystemFont("Char Line break:", "Arial", 10); label->setColor(Color3B::WHITE); label->setPosition(Vec2(winSize.width * 0.1f, winSize.height * 0.8f)); this->addChild(label); - - CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", + + CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active_disable.png"); - checkBox->setPosition(Vec2(winSize.width * 0.2f , winSize.height * 0.8f)); + checkBox->setPosition(Vec2(winSize.width * 0.2f, winSize.height * 0.8f)); checkBox->setScale(0.5); checkBox->setSelected(false); checkBox->setName("LineBreak"); - - checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event){ - if (event == CheckBox::EventType::SELECTED) { + + checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event) { + if (event == CheckBox::EventType::SELECTED) + { _label->setLineBreakWithoutSpace(true); - }else{ + } + else + { _label->setLineBreakWithoutSpace(false); } this->updateDrawNodeSize(_label->getContentSize()); }); this->addChild(checkBox); - } std::string LabelResizeTest::title() const @@ -2732,19 +2694,19 @@ LabelToggleTypeTest::LabelToggleTypeTest() _label->setVerticalAlignment(TextVAlignment::CENTER); _label->setOverflow(Label::Overflow::NONE); - this->updateDrawNodeSize(_label->getContentSize()); auto slider1 = (ui::Slider*)this->getChildByTag(1); - auto slider2 = (ui::Slider*)this->getChildByTag(2); - slider2->setVisible(false); + auto slider2 = (ui::Slider*)this->getChildByTag(2); + slider2->setVisible(false); auto winSize = Director::getInstance()->getVisibleSize(); - slider1->addEventListener([=](Ref* ref, Slider::EventType event){ - float percent = slider1->getPercent(); - auto drawNodeSize = Size(percent / 100.0 * winSize.width,_label->getContentSize().height); - if(drawNodeSize.height <= 0){ + slider1->addEventListener([=](Ref* ref, Slider::EventType event) { + float percent = slider1->getPercent(); + auto drawNodeSize = Size(percent / 100.0 * winSize.width, _label->getContentSize().height); + if (drawNodeSize.height <= 0) + { drawNodeSize.height = 0.1f; } _label->setDimensions(drawNodeSize.width, drawNodeSize.height); @@ -2759,20 +2721,21 @@ LabelToggleTypeTest::LabelToggleTypeTest() label->setPosition(Vec2(winSize.width * 0.1f, winSize.height * 0.8f)); this->addChild(label); - CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", + CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active_disable.png"); - checkBox->setPosition(Vec2(winSize.width * 0.2f , winSize.height * 0.8f)); + checkBox->setPosition(Vec2(winSize.width * 0.2f, winSize.height * 0.8f)); checkBox->setScale(0.5); checkBox->setSelected(false); checkBox->setName("LineBreak"); - checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event){ - if (event == CheckBox::EventType::SELECTED) { + checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event) { + if (event == CheckBox::EventType::SELECTED) + { _label->setLineBreakWithoutSpace(true); - }else{ + } + else + { _label->setLineBreakWithoutSpace(false); } this->updateDrawNodeSize(_label->getContentSize()); @@ -2785,32 +2748,32 @@ LabelToggleTypeTest::LabelToggleTypeTest() void LabelToggleTypeTest::initToggleCheckboxes() { const float BUTTON_WIDTH = 100; - float startPosX = 0; - Size winSize = Director::getInstance()->getVisibleSize(); + float startPosX = 0; + Size winSize = Director::getInstance()->getVisibleSize(); // Create a radio button group auto radioButtonGroup = RadioButtonGroup::create(); this->addChild(radioButtonGroup); // Create the radio buttons - static const int NUMBER_OF_BUTTONS = 4; - startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1 ) * 0.5 * BUTTON_WIDTH - 30; + static const int NUMBER_OF_BUTTONS = 4; + startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1) * 0.5 * BUTTON_WIDTH - 30; std::vector labelTypes = {"Normal", "Clamp", "Shrink", "RESIZE"}; - - for(int i = 0; i < NUMBER_OF_BUTTONS; ++i) + + for (int i = 0; i < NUMBER_OF_BUTTONS; ++i) { RadioButton* radioButton = RadioButton::create("cocosui/radio_button_off.png", "cocosui/radio_button_on.png"); - float posX = startPosX + BUTTON_WIDTH * i; + float posX = startPosX + BUTTON_WIDTH * i; radioButton->setPosition(Vec2(posX, winSize.height / 2.0f + 70)); radioButton->setScale(1.2f); radioButton->addEventListener(CC_CALLBACK_2(LabelToggleTypeTest::onChangedRadioButtonSelect, this)); radioButton->setTag(i); radioButtonGroup->addRadioButton(radioButton); this->addChild(radioButton); - + auto label = Label::createWithSystemFont(labelTypes.at(i), "Arial", 20); - label->setPosition(radioButton->getPosition() + Vec2(50.0f,0.0f)); + label->setPosition(radioButton->getPosition() + Vec2(50.0f, 0.0f)); this->addChild(label); } } @@ -2825,33 +2788,33 @@ std::string LabelToggleTypeTest::subtitle() const return ""; } - void LabelToggleTypeTest::onChangedRadioButtonSelect(RadioButton* radioButton, RadioButton::EventType type) { - if(radioButton == nullptr) + if (radioButton == nullptr) { return; } - + switch (type) { case RadioButton::EventType::SELECTED: { - switch (radioButton->getTag()) { - case 0: - _label->setOverflow(Label::Overflow::NONE); - break; - case 1: - _label->setOverflow(Label::Overflow::CLAMP); - break; - case 2: - _label->setOverflow(Label::Overflow::SHRINK); - break; - case 3: - _label->setOverflow(Label::Overflow::RESIZE_HEIGHT); - break; - default: - break; + switch (radioButton->getTag()) + { + case 0: + _label->setOverflow(Label::Overflow::NONE); + break; + case 1: + _label->setOverflow(Label::Overflow::CLAMP); + break; + case 2: + _label->setOverflow(Label::Overflow::SHRINK); + break; + case 3: + _label->setOverflow(Label::Overflow::RESIZE_HEIGHT); + break; + default: + break; } break; } @@ -2873,10 +2836,10 @@ LabelSystemFontTest::LabelSystemFontTest() _label->enableOutline(Color4B::RED, 1.0); _label->setString("This is a very\n 我爱你中国\n long sentence"); _labelType = 2; - + auto stepper = (ControlStepper*)this->getChildByName("stepper"); stepper->setEnabled(true); - + auto checkbox = (CheckBox*)(this->getChildByName("toggleType")); checkbox->setEnabled(false); @@ -2885,36 +2848,37 @@ LabelSystemFontTest::LabelSystemFontTest() auto slider1 = (ui::Slider*)this->getChildByTag(1); auto winSize = Director::getInstance()->getVisibleSize(); - slider1->addEventListener([=](Ref* ref, Slider::EventType event){ - float percent = slider1->getPercent(); - auto drawNodeSize = Size(percent / 100.0 * winSize.width,_label->getContentSize().height); - if(drawNodeSize.height <= 0){ + slider1->addEventListener([=](Ref* ref, Slider::EventType event) { + float percent = slider1->getPercent(); + auto drawNodeSize = Size(percent / 100.0 * winSize.width, _label->getContentSize().height); + if (drawNodeSize.height <= 0) + { drawNodeSize.height = 0.1f; } _label->setDimensions(drawNodeSize.width, drawNodeSize.height); this->updateDrawNodeSize(drawNodeSize); }); - auto label = Label::createWithSystemFont("char Line break:", "Arial", 10); label->setColor(Color3B::WHITE); label->setPosition(Vec2(winSize.width * 0.1f, winSize.height * 0.8f)); this->addChild(label); - CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", + CheckBox* checkBox = CheckBox::create("cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active_disable.png"); - checkBox->setPosition(Vec2(winSize.width * 0.2f , winSize.height * 0.8f)); + checkBox->setPosition(Vec2(winSize.width * 0.2f, winSize.height * 0.8f)); checkBox->setScale(0.5); checkBox->setSelected(false); checkBox->setName("LineBreak"); - checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event){ - if (event == CheckBox::EventType::SELECTED) { + checkBox->addEventListener([=](Ref* ref, CheckBox::EventType event) { + if (event == CheckBox::EventType::SELECTED) + { _label->setLineBreakWithoutSpace(true); - }else{ + } + else + { _label->setLineBreakWithoutSpace(false); } this->updateDrawNodeSize(_label->getContentSize()); @@ -2930,23 +2894,23 @@ LabelSystemFontTest::LabelSystemFontTest() void LabelSystemFontTest::initToggleCheckboxes() { const float BUTTON_WIDTH = 100; - float startPosX = 0; - Size winSize = Director::getInstance()->getVisibleSize(); + float startPosX = 0; + Size winSize = Director::getInstance()->getVisibleSize(); // Create a radio button group auto radioButtonGroup = RadioButtonGroup::create(); this->addChild(radioButtonGroup); // Create the radio buttons - static const int NUMBER_OF_BUTTONS = 4; - startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1 ) * 0.5 * BUTTON_WIDTH - 30; + static const int NUMBER_OF_BUTTONS = 4; + startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1) * 0.5 * BUTTON_WIDTH - 30; std::vector labelTypes = {"Normal", "Clamp", "Shrink", "RESIZE"}; - for(int i = 0; i < NUMBER_OF_BUTTONS; ++i) + for (int i = 0; i < NUMBER_OF_BUTTONS; ++i) { RadioButton* radioButton = RadioButton::create("cocosui/radio_button_off.png", "cocosui/radio_button_on.png"); - float posX = startPosX + BUTTON_WIDTH * i; + float posX = startPosX + BUTTON_WIDTH * i; radioButton->setPosition(Vec2(posX, winSize.height / 2.0f + 70)); radioButton->setScale(1.2f); radioButton->addEventListener(CC_CALLBACK_2(LabelSystemFontTest::onChangedRadioButtonSelect, this)); @@ -2955,7 +2919,7 @@ void LabelSystemFontTest::initToggleCheckboxes() this->addChild(radioButton); auto label = Label::createWithSystemFont(labelTypes.at(i), "Arial", 20); - label->setPosition(radioButton->getPosition() + Vec2(50.0f,0.0f)); + label->setPosition(radioButton->getPosition() + Vec2(50.0f, 0.0f)); this->addChild(label); } } @@ -2970,10 +2934,9 @@ std::string LabelSystemFontTest::subtitle() const return ""; } - void LabelSystemFontTest::onChangedRadioButtonSelect(RadioButton* radioButton, RadioButton::EventType type) { - if(radioButton == nullptr) + if (radioButton == nullptr) { return; } @@ -2982,21 +2945,22 @@ void LabelSystemFontTest::onChangedRadioButtonSelect(RadioButton* radioButton, R { case RadioButton::EventType::SELECTED: { - switch (radioButton->getTag()) { - case 0: - _label->setOverflow(Label::Overflow::NONE); - break; - case 1: - _label->setOverflow(Label::Overflow::CLAMP); - break; - case 2: - _label->setOverflow(Label::Overflow::SHRINK); - break; - case 3: - _label->setOverflow(Label::Overflow::RESIZE_HEIGHT); - break; - default: - break; + switch (radioButton->getTag()) + { + case 0: + _label->setOverflow(Label::Overflow::NONE); + break; + case 1: + _label->setOverflow(Label::Overflow::CLAMP); + break; + case 2: + _label->setOverflow(Label::Overflow::SHRINK); + break; + case 3: + _label->setOverflow(Label::Overflow::RESIZE_HEIGHT); + break; + default: + break; } break; } @@ -3022,10 +2986,8 @@ LabelCharMapFontTest::LabelCharMapFontTest() checkbox->setEnabled(false); this->updateDrawNodeSize(_label->getContentSize()); - } - std::string LabelCharMapFontTest::title() const { return "CharMap Font Test"; @@ -3039,11 +3001,11 @@ std::string LabelCharMapFontTest::subtitle() const LabelIssue13846Test::LabelIssue13846Test() { auto center = VisibleRect::center(); - + auto label = Label::createWithTTF("12345", "fonts/arial.ttf", 26); label->setPosition(center); addChild(label); - + label->getLetter(2)->setVisible(false); } @@ -3064,7 +3026,8 @@ LabelRichText::LabelRichText() { auto center = VisibleRect::center(); - auto richText2 = RichText::createWithXML("Mixing UIRichText with non UIWidget code. For more samples, see the UIRichTextTest.cpp file"); + auto richText2 = RichText::createWithXML( + "Mixing UIRichText with non UIWidget code. For more samples, see the UIRichTextTest.cpp file"); if (richText2) { richText2->ignoreContentAdaptWithSize(false); @@ -3090,29 +3053,29 @@ LabelItalics::LabelItalics() auto s = Director::getInstance()->getWinSize(); // LabelBMFont - auto label1 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-italics", TextHAlignment::CENTER, s.width); + auto label1 = + Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-italics", TextHAlignment::CENTER, s.width); addChild(label1, 0, kTagBitmapAtlas1); - label1->setPosition(Vec2(s.width/2, s.height*4/6)); + label1->setPosition(Vec2(s.width / 2, s.height * 4 / 6)); // you can enable italics by calling this method _label1a = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello italics", TextHAlignment::CENTER, s.width); addChild(_label1a, 0, kTagBitmapAtlas1); - _label1a->setPosition(Vec2(s.width/2, s.height*3/6)); + _label1a->setPosition(Vec2(s.width / 2, s.height * 3 / 6)); // you can enable italics by calling this method _label1a->enableItalics(); - // LabelTTF - TTFConfig ttfConfig("fonts/arial.ttf",24); - auto label2 = Label::createWithTTF(ttfConfig, "hello non-italics", TextHAlignment::CENTER,s.width); + TTFConfig ttfConfig("fonts/arial.ttf", 24); + auto label2 = Label::createWithTTF(ttfConfig, "hello non-italics", TextHAlignment::CENTER, s.width); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition(Vec2(s.width/2, s.height*2/6)); + label2->setPosition(Vec2(s.width / 2, s.height * 2 / 6)); // or by setting the italics parameter on TTFConfig ttfConfig.italics = true; - _label2a = Label::createWithTTF(ttfConfig, "hello italics", TextHAlignment::CENTER,s.width); + _label2a = Label::createWithTTF(ttfConfig, "hello italics", TextHAlignment::CENTER, s.width); addChild(_label2a, 0, kTagBitmapAtlas2); - _label2a->setPosition(Vec2(s.width/2, s.height*1/6)); + _label2a->setPosition(Vec2(s.width / 2, s.height * 1 / 6)); auto menuItem = MenuItemFont::create("disable italics", [&](cocos2d::Ref* sender) { _label2a->disableEffect(LabelEffect::ITALICS); @@ -3142,29 +3105,29 @@ LabelBold::LabelBold() auto s = Director::getInstance()->getWinSize(); // LabelBMFont - auto label1 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-bold", TextHAlignment::CENTER, s.width); + auto label1 = + Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-bold", TextHAlignment::CENTER, s.width); addChild(label1, 0, kTagBitmapAtlas1); - label1->setPosition(Vec2(s.width/2, s.height*4/6)); + label1->setPosition(Vec2(s.width / 2, s.height * 4 / 6)); // you can enable italics by calling this method _label1a = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello bold", TextHAlignment::CENTER, s.width); addChild(_label1a, 0, kTagBitmapAtlas1); - _label1a->setPosition(Vec2(s.width/2, s.height*3/6)); + _label1a->setPosition(Vec2(s.width / 2, s.height * 3 / 6)); // you can enable italics by calling this method _label1a->enableBold(); - // LabelTTF - TTFConfig ttfConfig("fonts/arial.ttf",24); - auto label2 = Label::createWithTTF(ttfConfig, "hello non-bold", TextHAlignment::CENTER,s.width); + TTFConfig ttfConfig("fonts/arial.ttf", 24); + auto label2 = Label::createWithTTF(ttfConfig, "hello non-bold", TextHAlignment::CENTER, s.width); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition(Vec2(s.width/2, s.height*2/6)); + label2->setPosition(Vec2(s.width / 2, s.height * 2 / 6)); // or by setting the italics parameter on TTFConfig ttfConfig.bold = true; - _label2a = Label::createWithTTF(ttfConfig, "hello bold", TextHAlignment::CENTER,s.width); + _label2a = Label::createWithTTF(ttfConfig, "hello bold", TextHAlignment::CENTER, s.width); addChild(_label2a, 0, kTagBitmapAtlas2); - _label2a->setPosition(Vec2(s.width/2, s.height*1/6)); + _label2a->setPosition(Vec2(s.width / 2, s.height * 1 / 6)); auto menuItem = MenuItemFont::create("disable bold", [&](cocos2d::Ref* sender) { _label2a->disableEffect(LabelEffect::BOLD); @@ -3194,29 +3157,29 @@ LabelUnderline::LabelUnderline() auto s = Director::getInstance()->getWinSize(); // LabelBMFont - auto label1 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-underline", TextHAlignment::CENTER, s.width); + auto label1 = + Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello non-underline", TextHAlignment::CENTER, s.width); addChild(label1, 0, kTagBitmapAtlas1); - label1->setPosition(Vec2(s.width/2, s.height*4/6)); + label1->setPosition(Vec2(s.width / 2, s.height * 4 / 6)); // you can enable italics by calling this method _label1a = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "hello underline", TextHAlignment::CENTER, s.width); addChild(_label1a, 0, kTagBitmapAtlas1); - _label1a->setPosition(Vec2(s.width/2, s.height*3/6)); + _label1a->setPosition(Vec2(s.width / 2, s.height * 3 / 6)); // you can enable underline by calling this method _label1a->enableUnderline(); - // LabelTTF - TTFConfig ttfConfig("fonts/arial.ttf",24); - auto label2 = Label::createWithTTF(ttfConfig, "hello non-underline", TextHAlignment::CENTER,s.width); + TTFConfig ttfConfig("fonts/arial.ttf", 24); + auto label2 = Label::createWithTTF(ttfConfig, "hello non-underline", TextHAlignment::CENTER, s.width); addChild(label2, 0, kTagBitmapAtlas2); - label2->setPosition(Vec2(s.width/2, s.height*2/6)); + label2->setPosition(Vec2(s.width / 2, s.height * 2 / 6)); // or by setting the italics parameter on TTFConfig ttfConfig.underline = true; - _label2a = Label::createWithTTF(ttfConfig, "hello underline", TextHAlignment::CENTER,s.width); + _label2a = Label::createWithTTF(ttfConfig, "hello underline", TextHAlignment::CENTER, s.width); addChild(_label2a, 0, kTagBitmapAtlas2); - _label2a->setPosition(Vec2(s.width/2, s.height*1/6)); + _label2a->setPosition(Vec2(s.width / 2, s.height * 1 / 6)); auto menuItem = MenuItemFont::create("disable underline", [&](cocos2d::Ref* sender) { _label2a->disableEffect(LabelEffect::UNDERLINE); @@ -3246,18 +3209,19 @@ LabelUnderlineMultiline::LabelUnderlineMultiline() auto s = Director::getInstance()->getWinSize(); // bmfont - _label1a = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "hello underline\nand multiline", TextHAlignment::CENTER, s.width); + _label1a = Label::createWithBMFont("fonts/bitmapFontTest5.fnt", "hello underline\nand multiline", + TextHAlignment::CENTER, s.width); addChild(_label1a, 0, kTagBitmapAtlas1); - _label1a->setPosition(Vec2(s.width/2, s.height*2/3)); + _label1a->setPosition(Vec2(s.width / 2, s.height * 2 / 3)); // you can enable underline by calling this method _label1a->enableUnderline(); // ttf - TTFConfig ttfConfig("fonts/arial.ttf",24); + TTFConfig ttfConfig("fonts/arial.ttf", 24); ttfConfig.underline = true; _label2a = Label::createWithTTF(ttfConfig, "hello\nunderline\nwith multiline", TextHAlignment::LEFT, s.width); addChild(_label2a, 0, kTagBitmapAtlas2); - _label2a->setPosition(Vec2(s.width/2, s.height*1/3)); + _label2a->setPosition(Vec2(s.width / 2, s.height * 1 / 3)); auto menuItem = MenuItemFont::create("disable underline", [&](cocos2d::Ref* sender) { _label2a->disableEffect(LabelEffect::UNDERLINE); @@ -3287,18 +3251,19 @@ LabelStrikethrough::LabelStrikethrough() auto s = Director::getInstance()->getWinSize(); // bmfont - _label1a = Label::createWithBMFont("fonts/bitmapFontTest4.fnt", "hello strikethrough\nand multiline", TextHAlignment::LEFT, s.width); + _label1a = Label::createWithBMFont("fonts/bitmapFontTest4.fnt", "hello strikethrough\nand multiline", + TextHAlignment::LEFT, s.width); addChild(_label1a, 0, kTagBitmapAtlas1); - _label1a->setPosition(Vec2(s.width/2, s.height*2/3)); + _label1a->setPosition(Vec2(s.width / 2, s.height * 2 / 3)); // you can enable underline by calling this method _label1a->enableStrikethrough(); // ttf - TTFConfig ttfConfig("fonts/arial.ttf",24); + TTFConfig ttfConfig("fonts/arial.ttf", 24); ttfConfig.strikethrough = true; _label2a = Label::createWithTTF(ttfConfig, "hello\nstrikethrough\nwith multiline", TextHAlignment::RIGHT, s.width); addChild(_label2a, 0, kTagBitmapAtlas2); - _label2a->setPosition(Vec2(s.width/2, s.height*1/3)); + _label2a->setPosition(Vec2(s.width / 2, s.height * 1 / 3)); auto menuItem = MenuItemFont::create("disable underline", [&](cocos2d::Ref* sender) { _label2a->disableEffect(LabelEffect::STRIKETHROUGH); @@ -3330,22 +3295,22 @@ LabelLocalizationTest::LabelLocalizationTest() _localizationBin->initLanguageData("configs/ENGLISH.lang.csb"); const float BUTTON_WIDTH = 100; - float startPosX = 0; - Size winSize = Director::getInstance()->getVisibleSize(); + float startPosX = 0; + Size winSize = Director::getInstance()->getVisibleSize(); // Create a radio button group auto radioButtonGroup = RadioButtonGroup::create(); this->addChild(radioButtonGroup); // Create the radio buttons - const int NUMBER_OF_BUTTONS = 3; - startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1) * 0.5 * BUTTON_WIDTH - 30; - std::vector labelTypes = { "English", "Chinese", "Japanese" }; + const int NUMBER_OF_BUTTONS = 3; + startPosX = winSize.width / 2.0f - (NUMBER_OF_BUTTONS - 1) * 0.5 * BUTTON_WIDTH - 30; + std::vector labelTypes = {"English", "Chinese", "Japanese"}; for (int i = 0; i < NUMBER_OF_BUTTONS; ++i) { RadioButton* radioButton = RadioButton::create("cocosui/radio_button_off.png", "cocosui/radio_button_on.png"); - float posX = startPosX + BUTTON_WIDTH * i; + float posX = startPosX + BUTTON_WIDTH * i; radioButton->setPosition(Vec2(posX, winSize.height / 2.0f + 70)); radioButton->setScale(1.2f); radioButton->addEventListener(CC_CALLBACK_2(LabelLocalizationTest::onChangedRadioButtonSelect, this)); @@ -3362,7 +3327,7 @@ LabelLocalizationTest::LabelLocalizationTest() addChild(_label1, 0); _label1->setPosition(Vec2(winSize.width / 2, winSize.height * 1 / 3)); - Label * label = Label::createWithSystemFont("From json data :", "Arial", 24); + Label* label = Label::createWithSystemFont("From json data :", "Arial", 24); label->setAnchorPoint(Vec2(0.0f, 0.5f)); addChild(label, 0); label->setPosition(Vec2(20.0f, winSize.height * 1 / 3 + 24)); @@ -3387,7 +3352,6 @@ std::string LabelLocalizationTest::subtitle() const return "Change language selected and see label change"; } - void LabelLocalizationTest::onChangedRadioButtonSelect(RadioButton* radioButton, RadioButton::EventType type) { if (radioButton == nullptr) @@ -3399,7 +3363,8 @@ void LabelLocalizationTest::onChangedRadioButtonSelect(RadioButton* radioButton, { case RadioButton::EventType::SELECTED: { - switch (radioButton->getTag()) { + switch (radioButton->getTag()) + { case 0: _localizationJson->initLanguageData("configs/en-US.lang.json"); _label1->setString(_localizationJson->getLocalizationString("Text Label")); @@ -3439,28 +3404,28 @@ LabelIssue15214::LabelIssue15214() Label* label = Label::createWithTTF("TTF with setColor()", "fonts/arial.ttf", 24.0f); label->enableUnderline(); label->setColor(cocos2d::Color3B::BLUE); - label->setPosition(size.width/2, size.height/5*4); + label->setPosition(size.width / 2, size.height / 5 * 4); this->addChild(label); // 2 Label* label2 = Label::createWithSystemFont("System with setColor()", "Verdana", 24.0f); label2->enableUnderline(); label2->setColor(cocos2d::Color3B::BLUE); - label2->setPosition(size.width/2, size.height/5*3); + label2->setPosition(size.width / 2, size.height / 5 * 3); this->addChild(label2); // 3 Label* label3 = Label::createWithTTF("TTF with setTextColor()", "fonts/arial.ttf", 24.0f); label3->enableUnderline(); label3->setTextColor(Color4B::BLUE); - label3->setPosition(size.width/2, size.height/5*2); + label3->setPosition(size.width / 2, size.height / 5 * 2); this->addChild(label3); // 4 Label* label4 = Label::createWithSystemFont("System with setTextColor()", "Verdana", 24.0f); label4->enableUnderline(); label4->setTextColor(Color4B::BLUE); - label4->setPosition(size.width/2, size.height/5*1); + label4->setPosition(size.width / 2, size.height / 5 * 1); this->addChild(label4); } @@ -3479,9 +3444,11 @@ std::string LabelIssue15214::subtitle() const // LabelIssue16293::LabelIssue16293() { - auto size = Director::getInstance()->getVisibleSize(); - Label* label = Label::createWithTTF("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", "fonts/arial.ttf", 12); - label->setPosition(size.width/2, size.height/2); + auto size = Director::getInstance()->getVisibleSize(); + Label* label = Label::createWithTTF( + "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", "fonts/arial.ttf", + 12); + label->setPosition(size.width / 2, size.height / 2); this->addChild(label); } @@ -3504,7 +3471,7 @@ LabelIssue16471::LabelIssue16471() auto node = Node::create(); addChild(node, 100); - node->setPosition(size.width/2, size.height/2); + node->setPosition(size.width / 2, size.height / 2); // Used Google Translate to translate from Chinese: // Here is set to false then textLabel: TextColor valid @@ -3541,16 +3508,16 @@ LabelIssue16717::LabelIssue16717() { auto label = Label::createWithTTF("Hello World", "fonts/arial.ttf", 70); label->setPosition(VisibleRect::center() + Vec2(0.0f, 40.0f)); - label->enableOutline(Color4B(0, 255, 0, 100), 10); // Set 100 alpha for outline - label->setTextColor(Color4B(0, 0, 255, 100)); // Also set 100 alpha for text + label->enableOutline(Color4B(0, 255, 0, 100), 10); // Set 100 alpha for outline + label->setTextColor(Color4B(0, 0, 255, 100)); // Also set 100 alpha for text addChild(label); } { auto label = Label::createWithTTF("Hello World", "fonts/arial.ttf", 70); label->setPosition(VisibleRect::center() + Vec2(0.0f, -40.0f)); - label->enableOutline(Color4B(0, 255, 0, 100), 10); // Set 100 alpha for outline - label->setTextColor(Color4B(0, 255, 0, 100)); // Also set 100 alpha for text + label->enableOutline(Color4B(0, 255, 0, 100), 10); // Set 100 alpha for outline + label->setTextColor(Color4B(0, 255, 0, 100)); // Also set 100 alpha for text addChild(label); } } @@ -3570,15 +3537,15 @@ std::string LabelIssue16717::subtitle() const // LabelIssueLineGap::LabelIssueLineGap() { - + auto size = Director::getInstance()->getWinSize(); - + auto label1 = Label::createWithTTF("test \ntest", "fonts/FingerpopGap.ttf", 30); label1->setPosition(Vec2(size.width / 3, size.height / 2)); addChild(label1); - + auto label2 = Label::createWithSystemFont("test \ntest", "fonts/FingerpopGap.ttf", 30); - label2->setPosition(Vec2(size.width / 3 * 1.8 , size.height / 2)); + label2->setPosition(Vec2(size.width / 3 * 1.8, size.height / 2)); addChild(label2); } @@ -3598,13 +3565,13 @@ std::string LabelIssueLineGap::subtitle() const LabelIssue17902::LabelIssue17902() { auto center = VisibleRect::center(); - + auto label = Label::createWithTTF("abcdefg\nhijklmn", "fonts/arial.ttf", 26); label->setLineHeight(40); label->setPosition(center); addChild(label); - scheduleOnce(CC_CALLBACK_0(LabelIssue17902::purgeCachedData, this), 1.0f, "purge_cached_data"); + scheduleOnce(CC_CALLBACK_0(LabelIssue17902::purgeCachedData, this), 1.0f, "purge_cached_data"); } void LabelIssue17902::purgeCachedData() @@ -3627,19 +3594,19 @@ std::string LabelIssue17902::subtitle() const // LabelIssue20523::LabelIssue20523() { - auto size = Director::getInstance()->getWinSize(); + auto size = Director::getInstance()->getWinSize(); auto _crashingLabel = Label::createWithTTF("0", "fonts/Marker Felt.ttf", 120); _crashingLabel->setPosition(Vec2(size.width / 2, size.height / 2)); _crashingLabel->setColor(cocos2d::Color3B(200, 200, 200)); addChild(_crashingLabel, 1); //_crashingLabel->setWidth(size.width); - this->schedule([this, _crashingLabel](float) - { + this->schedule( + [this, _crashingLabel](float) { ++_i; _crashingLabel->setString(std::to_string(_i)); - }, 1, CC_REPEAT_FOREVER, 0, "repeat"); - + }, + 1, CC_REPEAT_FOREVER, 0, "repeat"); } std::string LabelIssue20523::title() const @@ -3655,7 +3622,8 @@ std::string LabelIssue20523::subtitle() const // // LabelLetterColorsTest // -LabelLetterColorsTest::LabelLetterColorsTest() { +LabelLetterColorsTest::LabelLetterColorsTest() +{ auto center = VisibleRect::center(); auto label = Label::createWithTTF("", "fonts/arial.ttf", 24); @@ -3668,17 +3636,21 @@ LabelLetterColorsTest::LabelLetterColorsTest() { label->setString("abcd\ne"); // Must not crash at here. } -std::string LabelLetterColorsTest::title() const { +std::string LabelLetterColorsTest::title() const +{ return "Test for letter colors"; } -std::string LabelLetterColorsTest::subtitle() const { +std::string LabelLetterColorsTest::subtitle() const +{ return "Should not crash!"; } -void LabelLetterColorsTest::setLetterColors(cocos2d::Label* label, const cocos2d::Color3B& color) { +void LabelLetterColorsTest::setLetterColors(cocos2d::Label* label, const cocos2d::Color3B& color) +{ int n = label->getStringLength(); - for (int i = 0; i < n; ++i) { + for (int i = 0; i < n; ++i) + { Sprite* letter = label->getLetter(i); if (letter != nullptr) letter->setColor(color); diff --git a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.h b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.h index 84055634411f..3e38903f785b 100644 --- a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.h +++ b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,12 +34,12 @@ DEFINE_TEST_SUITE(NewLabelTests); class AtlasDemoNew : public TestCase -{ -}; +{}; class LabelFNTColorAndOpacity : public AtlasDemoNew { - float _time; + float _time; + public: CREATE_FUNC(LabelFNTColorAndOpacity); @@ -53,7 +53,8 @@ class LabelFNTColorAndOpacity : public AtlasDemoNew class LabelFNTSpriteActions : public AtlasDemoNew { - float _time; + float _time; + public: CREATE_FUNC(LabelFNTSpriteActions); @@ -74,7 +75,6 @@ class LabelFNTPadding : public AtlasDemoNew virtual std::string subtitle() const override; }; - class LabelFNTOffset : public AtlasDemoNew { public: @@ -180,13 +180,13 @@ class LabelFNTMultiLineAlignment : public AtlasDemoNew virtual std::string getItemString(cocos2d::MenuItemFont* item); protected: - cocos2d::Label* _label = nullptr; + cocos2d::Label* _label = nullptr; cocos2d::Sprite* _arrowsBar = nullptr; - cocos2d::Sprite* _arrows = nullptr; + cocos2d::Sprite* _arrows = nullptr; std::vector _menuItems; - cocos2d::MenuItemFont *_lastSentenceItem = nullptr; - cocos2d::MenuItemFont *_lastAlignmentItem = nullptr; - bool _drag = false; + cocos2d::MenuItemFont* _lastSentenceItem = nullptr; + cocos2d::MenuItemFont* _lastAlignmentItem = nullptr; + bool _drag = false; }; class LabelFNTMultiLineAlignmentUNICODE : public LabelFNTMultiLineAlignment @@ -218,7 +218,7 @@ class LabelFNTBounds : public AtlasDemoNew CREATE_FUNC(LabelFNTBounds); LabelFNTBounds(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -233,7 +233,6 @@ class LabelFNTMultiFontAtlasNoRotation : public AtlasDemoNew virtual std::string subtitle() const override; }; - class LabelFNTMultiFontAtlasWithRotation : public AtlasDemoNew { public: @@ -272,7 +271,7 @@ class LabelTTFUnicodeNew : public AtlasDemoNew CREATE_FUNC(LabelTTFUnicodeNew); LabelTTFUnicodeNew(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -285,24 +284,22 @@ class LabelTTFDynamicAlignment : public AtlasDemoNew LabelTTFDynamicAlignment(); virtual std::string title() const override; virtual std::string subtitle() const override; - + private: - void setAlignmentLeft(cocos2d::Ref* sender); void setAlignmentCenter(cocos2d::Ref* sender); void setAlignmentRight(cocos2d::Ref* sender); void updateAlignment(); - + cocos2d::Label* _label; - cocos2d::TextHAlignment _horizAlign; - + cocos2d::TextHAlignment _horizAlign; }; class LabelTTFEmoji : public AtlasDemoNew { public: CREATE_FUNC(LabelTTFEmoji); - + LabelTTFEmoji(); virtual std::string title() const override; virtual std::string subtitle() const override; @@ -378,6 +375,7 @@ class LabelShadowTest : public AtlasDemoNew virtual std::string subtitle() const override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); + private: cocos2d::Label* shadowLabelOutline; cocos2d::Label* shadowLabelTTF; @@ -398,7 +396,7 @@ class LabelCharMapTest : public AtlasDemoNew void step(float dt); private: - float _time; + float _time; }; class LabelCharMapColorTest : public AtlasDemoNew @@ -415,7 +413,7 @@ class LabelCharMapColorTest : public AtlasDemoNew void actionFinishCallback(); private: - float _time; + float _time; }; class LabelCrashTest : public AtlasDemoNew @@ -459,13 +457,14 @@ class LabelAlignmentTest : public AtlasDemoNew LabelAlignmentTest(); virtual std::string title() const override; virtual std::string subtitle() const override; + private: - void setAlignmentLeft(cocos2d::Ref* sender); - void setAlignmentCenter(cocos2d::Ref* sender); - void setAlignmentRight(cocos2d::Ref* sender); - void setAlignmentTop(cocos2d::Ref* sender); - void setAlignmentMiddle(cocos2d::Ref* sender); - void setAlignmentBottom(cocos2d::Ref* sender); + void setAlignmentLeft(cocos2d::Ref* sender); + void setAlignmentCenter(cocos2d::Ref* sender); + void setAlignmentRight(cocos2d::Ref* sender); + void setAlignmentTop(cocos2d::Ref* sender); + void setAlignmentMiddle(cocos2d::Ref* sender); + void setAlignmentBottom(cocos2d::Ref* sender); cocos2d::Label* _label; }; @@ -503,6 +502,7 @@ class LabelLineHeightTest : public AtlasDemoNew virtual std::string subtitle() const override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); + private: cocos2d::Label* label; }; @@ -518,6 +518,7 @@ class LabelAdditionalKerningTest : public AtlasDemoNew virtual std::string subtitle() const override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); + private: cocos2d::Label* label; }; @@ -703,18 +704,18 @@ class LabelLayoutBaseTest : public AtlasDemoNew { public: LabelLayoutBaseTest(); - void updateDrawNodeSize(const cocos2d::Size &drawNodeSize); + void updateDrawNodeSize(const cocos2d::Size& drawNodeSize); cocos2d::extension::ControlStepper* makeControlStepper(); void valueChanged(cocos2d::Ref* sender, cocos2d::extension::Control::EventType controlEvent); protected: - void setAlignmentLeft(cocos2d::Ref* sender); - void setAlignmentCenter(cocos2d::Ref* sender); - void setAlignmentRight(cocos2d::Ref* sender); - void setAlignmentTop(cocos2d::Ref* sender); - void setAlignmentMiddle(cocos2d::Ref* sender); - void setAlignmentBottom(cocos2d::Ref* sender); - + void setAlignmentLeft(cocos2d::Ref* sender); + void setAlignmentCenter(cocos2d::Ref* sender); + void setAlignmentRight(cocos2d::Ref* sender); + void setAlignmentTop(cocos2d::Ref* sender); + void setAlignmentMiddle(cocos2d::Ref* sender); + void setAlignmentBottom(cocos2d::Ref* sender); + void initWrapOption(const cocos2d::Size& size); void initToggleLabelTypeOption(const cocos2d::Size& size); void initAlignmentOption(const cocos2d::Size& size); @@ -800,7 +801,7 @@ class LabelToggleTypeTest : public LabelLayoutBaseTest LabelToggleTypeTest(); void initToggleCheckboxes(); - void onChangedRadioButtonSelect(cocos2d::ui::RadioButton* radioButton,cocos2d::ui::RadioButton::EventType type); + void onChangedRadioButtonSelect(cocos2d::ui::RadioButton* radioButton, cocos2d::ui::RadioButton::EventType type); virtual std::string title() const override; virtual std::string subtitle() const override; @@ -813,7 +814,7 @@ class LabelSystemFontTest : public LabelLayoutBaseTest LabelSystemFontTest(); void initToggleCheckboxes(); - void onChangedRadioButtonSelect(cocos2d::ui::RadioButton* radioButton,cocos2d::ui::RadioButton::EventType type); + void onChangedRadioButtonSelect(cocos2d::ui::RadioButton* radioButton, cocos2d::ui::RadioButton::EventType type); virtual std::string title() const override; virtual std::string subtitle() const override; @@ -834,9 +835,9 @@ class LabelIssue13846Test : public AtlasDemoNew { public: CREATE_FUNC(LabelIssue13846Test); - + LabelIssue13846Test(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -981,9 +982,9 @@ class LabelIssueLineGap : public AtlasDemoNew { public: CREATE_FUNC(LabelIssueLineGap); - + LabelIssueLineGap(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -992,11 +993,11 @@ class LabelIssue17902 : public AtlasDemoNew { public: CREATE_FUNC(LabelIssue17902); - + LabelIssue17902(); virtual void purgeCachedData(); - + virtual std::string title() const override; virtual std::string subtitle() const override; }; @@ -1015,7 +1016,8 @@ class LabelIssue20523 : public AtlasDemoNew int _i = 0; }; -class LabelLetterColorsTest : public AtlasDemoNew { +class LabelLetterColorsTest : public AtlasDemoNew +{ public: CREATE_FUNC(LabelLetterColorsTest); diff --git a/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp b/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp index 1bc88b56b681..26d26a6e4c4b 100644 --- a/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp +++ b/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,7 +28,7 @@ USING_NS_CC; -enum +enum { kTagLayer = 1, }; @@ -62,9 +62,10 @@ static void setEnableRecursiveCascading(Node* node, bool enable) { node->setCascadeColorEnabled(enable); node->setCascadeOpacityEnabled(enable); - + auto& children = node->getChildren(); - for(const auto &child : children) { + for (const auto& child : children) + { setEnableRecursiveCascading(child, enable); } } @@ -78,41 +79,30 @@ std::string LayerTest::title() const void LayerTestCascadingOpacityA::onEnter() { LayerTest::onEnter(); - - auto s = Director::getInstance()->getWinSize(); + + auto s = Director::getInstance()->getWinSize(); auto layer1 = Layer::create(); - + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, s.height/2)); - sister2->setPosition( Vec2( s.width*2/3, s.height/2)); - label->setPosition( Vec2( s.width/2, s.height/2)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(4, 0), - FadeTo::create(4, 255), - DelayTime::create(1), - nullptr))); + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, s.height / 2)); + sister2->setPosition(Vec2(s.width * 2 / 3, s.height / 2)); + label->setPosition(Vec2(s.width / 2, s.height / 2)); + + layer1->runAction(RepeatForever::create( + Sequence::create(FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), nullptr))); sister1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(2, 0), - FadeTo::create(2, 255), - FadeTo::create(2, 0), - FadeTo::create(2, 255), - DelayTime::create(1), - nullptr))); - + RepeatForever::create(Sequence::create(FadeTo::create(2, 0), FadeTo::create(2, 255), FadeTo::create(2, 0), + FadeTo::create(2, 255), DelayTime::create(1), nullptr))); + // Enable cascading in scene setEnableRecursiveCascading(this, true); } @@ -122,49 +112,37 @@ std::string LayerTestCascadingOpacityA::subtitle() const return "Layer: cascading opacity"; } - // LayerTestCascadingOpacityB void LayerTestCascadingOpacityB::onEnter() { LayerTest::onEnter(); - - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create(Color4B(192, 0, 0, 255), s.width, s.height/2); + + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(192, 0, 0, 255), s.width, s.height / 2); layer1->setCascadeColorEnabled(false); - - layer1->setPosition( Vec2(0.0f, s.height/2)); - + + layer1->setPosition(Vec2(0.0f, s.height / 2)); + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, 0.0f)); - sister2->setPosition( Vec2( s.width*2/3, 0.0f)); - label->setPosition( Vec2( s.width/2, 0.0f)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(4, 0), - FadeTo::create(4, 255), - DelayTime::create(1), - nullptr))); - + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, 0.0f)); + sister2->setPosition(Vec2(s.width * 2 / 3, 0.0f)); + label->setPosition(Vec2(s.width / 2, 0.0f)); + + layer1->runAction(RepeatForever::create( + Sequence::create(FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), nullptr))); + sister1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(2, 0), - FadeTo::create(2, 255), - FadeTo::create(2, 0), - FadeTo::create(2, 255), - DelayTime::create(1), - nullptr))); - + RepeatForever::create(Sequence::create(FadeTo::create(2, 0), FadeTo::create(2, 255), FadeTo::create(2, 0), + FadeTo::create(2, 255), DelayTime::create(1), nullptr))); + // Enable cascading in scene setEnableRecursiveCascading(this, true); } @@ -174,49 +152,37 @@ std::string LayerTestCascadingOpacityB::subtitle() const return "CCLayerColor: cascading opacity"; } - // LayerTestCascadingOpacityC void LayerTestCascadingOpacityC::onEnter() { LayerTest::onEnter(); - - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create(Color4B(192, 0, 0, 255), s.width, s.height/2); + + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(192, 0, 0, 255), s.width, s.height / 2); layer1->setCascadeColorEnabled(false); layer1->setCascadeOpacityEnabled(false); - - layer1->setPosition( Vec2(0.0f, s.height/2)); - + + layer1->setPosition(Vec2(0.0f, s.height / 2)); + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, 0.0f)); - sister2->setPosition( Vec2( s.width*2/3, 0.0f)); - label->setPosition( Vec2( s.width/2, 0.0f)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(4, 0), - FadeTo::create(4, 255), - DelayTime::create(1), - nullptr))); - + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, 0.0f)); + sister2->setPosition(Vec2(s.width * 2 / 3, 0.0f)); + label->setPosition(Vec2(s.width / 2, 0.0f)); + + layer1->runAction(RepeatForever::create( + Sequence::create(FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), nullptr))); + sister1->runAction( - RepeatForever::create( - Sequence::create( - FadeTo::create(2, 0), - FadeTo::create(2, 255), - FadeTo::create(2, 0), - FadeTo::create(2, 255), - DelayTime::create(1), - nullptr))); + RepeatForever::create(Sequence::create(FadeTo::create(2, 0), FadeTo::create(2, 255), FadeTo::create(2, 0), + FadeTo::create(2, 255), DelayTime::create(1), nullptr))); } std::string LayerTestCascadingOpacityC::subtitle() const @@ -224,53 +190,39 @@ std::string LayerTestCascadingOpacityC::subtitle() const return "CCLayerColor: non-cascading opacity"; } - //// Example LayerTestCascadingColor // LayerTestCascadingColorA void LayerTestCascadingColorA::onEnter() { LayerTest::onEnter(); - - auto s = Director::getInstance()->getWinSize(); + + auto s = Director::getInstance()->getWinSize(); auto layer1 = Layer::create(); - + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, s.height/2)); - sister2->setPosition( Vec2( s.width*2/3, s.height/2)); - label->setPosition( Vec2( s.width/2, s.height/2)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(6, 255, 0, 255), - TintTo::create(6, 255, 255, 255), - DelayTime::create(1), - nullptr))); - - sister1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(2, 255, 255, 0), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 0, 255, 255), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 255, 0, 255), - TintTo::create(2, 255, 255, 255), - DelayTime::create(1), - nullptr))); - + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, s.height / 2)); + sister2->setPosition(Vec2(s.width * 2 / 3, s.height / 2)); + label->setPosition(Vec2(s.width / 2, s.height / 2)); + + layer1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), nullptr))); + + sister1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(2, 255, 255, 0), TintTo::create(2, 255, 255, 255), TintTo::create(2, 0, 255, 255), + TintTo::create(2, 255, 255, 255), TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), + DelayTime::create(1), nullptr))); + // Enable cascading in scene setEnableRecursiveCascading(this, true); - } std::string LayerTestCascadingColorA::subtitle() const @@ -278,49 +230,36 @@ std::string LayerTestCascadingColorA::subtitle() const return "Layer: cascading color"; } - // LayerTestCascadingColorB void LayerTestCascadingColorB::onEnter() { LayerTest::onEnter(); - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create(Color4B(255, 255, 255, 255), s.width, s.height/2); - - layer1->setPosition( Vec2(0.0f, s.height/2)); - + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(255, 255, 255, 255), s.width, s.height / 2); + + layer1->setPosition(Vec2(0.0f, s.height / 2)); + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, 0.0f)); - sister2->setPosition( Vec2( s.width*2/3, 0.0f)); - label->setPosition( Vec2( s.width/2, 0.0f)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(6, 255, 0, 255), - TintTo::create(6, 255, 255, 255), - DelayTime::create(1), - nullptr))); - - sister1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(2, 255, 255, 0), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 0, 255, 255), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 255, 0, 255), - TintTo::create(2, 255, 255, 255), - DelayTime::create(1), - nullptr))); - + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, 0.0f)); + sister2->setPosition(Vec2(s.width * 2 / 3, 0.0f)); + label->setPosition(Vec2(s.width / 2, 0.0f)); + + layer1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), nullptr))); + + sister1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(2, 255, 255, 0), TintTo::create(2, 255, 255, 255), TintTo::create(2, 0, 255, 255), + TintTo::create(2, 255, 255, 255), TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), + DelayTime::create(1), nullptr))); + // Enable cascading in scene setEnableRecursiveCascading(this, true); } @@ -330,48 +269,35 @@ std::string LayerTestCascadingColorB::subtitle() const return "CCLayerColor: cascading color"; } - // LayerTestCascadingColorC void LayerTestCascadingColorC::onEnter() { LayerTest::onEnter(); - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create(Color4B(255, 255, 255, 255), s.width, s.height/2); + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(255, 255, 255, 255), s.width, s.height / 2); layer1->setCascadeColorEnabled(false); - layer1->setPosition( Vec2(0.0f, s.height/2)); - + layer1->setPosition(Vec2(0.0f, s.height / 2)); + auto sister1 = Sprite::create("Images/grossinis_sister1.png"); auto sister2 = Sprite::create("Images/grossinis_sister2.png"); - auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); - + auto label = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "Test"); + layer1->addChild(sister1); layer1->addChild(sister2); layer1->addChild(label); - this->addChild( layer1, 0, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, 0.0f)); - sister2->setPosition( Vec2( s.width*2/3, 0.0f)); - label->setPosition( Vec2( s.width/2, 0.0f)); - - layer1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(6, 255, 0, 255), - TintTo::create(6, 255, 255, 255), - DelayTime::create(1), - nullptr))); - - sister1->runAction( - RepeatForever::create( - Sequence::create( - TintTo::create(2, 255, 255, 0), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 0, 255, 255), - TintTo::create(2, 255, 255, 255), - TintTo::create(2, 255, 0, 255), - TintTo::create(2, 255, 255, 255), - DelayTime::create(1), - nullptr))); + this->addChild(layer1, 0, kTagLayer); + + sister1->setPosition(Vec2(s.width * 1 / 3, 0.0f)); + sister2->setPosition(Vec2(s.width * 2 / 3, 0.0f)); + label->setPosition(Vec2(s.width / 2, 0.0f)); + + layer1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), nullptr))); + + sister1->runAction(RepeatForever::create(Sequence::create( + TintTo::create(2, 255, 255, 0), TintTo::create(2, 255, 255, 255), TintTo::create(2, 0, 255, 255), + TintTo::create(2, 255, 255, 255), TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), + DelayTime::create(1), nullptr))); } std::string LayerTestCascadingColorC::subtitle() const @@ -388,45 +314,45 @@ void LayerTest1::onEnter() { LayerTest::onEnter(); - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(LayerTest1::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(LayerTest1::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(LayerTest1::onTouchesEnded, this); - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - auto s = Director::getInstance()->getWinSize(); - auto layer = LayerColor::create( Color4B(0xFF, 0x00, 0x00, 0x80), 200, 200); - + + auto s = Director::getInstance()->getWinSize(); + auto layer = LayerColor::create(Color4B(0xFF, 0x00, 0x00, 0x80), 200, 200); + layer->setIgnoreAnchorPointForPosition(false); - layer->setPosition( Vec2(s.width/2, s.height/2) ); + layer->setPosition(Vec2(s.width / 2, s.height / 2)); addChild(layer, 1, kTagLayer); } -void LayerTest1::updateSize(Vec2 &touchLocation) -{ +void LayerTest1::updateSize(Vec2& touchLocation) +{ auto s = Director::getInstance()->getWinSize(); - - auto newSize = Size( fabs(touchLocation.x - s.width/2)*2, fabs(touchLocation.y - s.height/2)*2); - - auto l = (LayerColor*) getChildByTag(kTagLayer); - l->setContentSize( newSize ); + auto newSize = Size(fabs(touchLocation.x - s.width / 2) * 2, fabs(touchLocation.y - s.height / 2) * 2); + + auto l = (LayerColor*)getChildByTag(kTagLayer); + + l->setContentSize(newSize); } -void LayerTest1::onTouchesBegan(const std::vector& touches, Event *event) +void LayerTest1::onTouchesBegan(const std::vector& touches, Event* event) { onTouchesMoved(touches, event); } -void LayerTest1::onTouchesMoved(const std::vector& touches, Event *event) +void LayerTest1::onTouchesMoved(const std::vector& touches, Event* event) { auto touchLocation = touches[0]->getLocation(); updateSize(touchLocation); } -void LayerTest1::onTouchesEnded(const std::vector& touches, Event *event) +void LayerTest1::onTouchesEnded(const std::vector& touches, Event* event) { onTouchesMoved(touches, event); } @@ -445,25 +371,25 @@ void LayerTest2::onEnter() { LayerTest::onEnter(); - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create( Color4B(255, 255, 0, 80), 100, 300); - layer1->setPosition(Vec2(s.width/3, s.height/2)); + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(255, 255, 0, 80), 100, 300); + layer1->setPosition(Vec2(s.width / 3, s.height / 2)); layer1->setIgnoreAnchorPointForPosition(false); addChild(layer1, 1); - - auto layer2 = LayerColor::create( Color4B(0, 0, 255, 255), 100, 300); - layer2->setPosition(Vec2((s.width/3)*2, s.height/2)); + + auto layer2 = LayerColor::create(Color4B(0, 0, 255, 255), 100, 300); + layer2->setPosition(Vec2((s.width / 3) * 2, s.height / 2)); layer2->setIgnoreAnchorPointForPosition(false); addChild(layer2, 1); - - auto actionTint = TintBy::create(2, -255, -127, 0); + + auto actionTint = TintBy::create(2, -255, -127, 0); auto actionTintBack = actionTint->reverse(); - auto seq1 = Sequence::create( actionTint, actionTintBack, nullptr); + auto seq1 = Sequence::create(actionTint, actionTintBack, nullptr); layer1->runAction(seq1); - auto actionFade = FadeOut::create(2.0f); + auto actionFade = FadeOut::create(2.0f); auto actionFadeBack = actionFade->reverse(); - auto seq2 = Sequence::create(actionFade, actionFadeBack, nullptr); + auto seq2 = Sequence::create(actionFade, actionFadeBack, nullptr); layer2->runAction(seq2); } @@ -480,30 +406,30 @@ std::string LayerTest2::subtitle() const LayerTestBlend::LayerTestBlend() { - auto s = Director::getInstance()->getWinSize(); - auto layer1 = LayerColor::create( Color4B(255, 255, 255, 80) ); - + auto s = Director::getInstance()->getWinSize(); + auto layer1 = LayerColor::create(Color4B(255, 255, 255, 80)); + auto sister1 = Sprite::create(s_pathSister1); auto sister2 = Sprite::create(s_pathSister2); - + addChild(sister1); addChild(sister2); addChild(layer1, 100, kTagLayer); - - sister1->setPosition( Vec2( s.width*1/3, s.height/2) ); - sister2->setPosition( Vec2( s.width*2/3, s.height/2) ); - schedule( CC_SCHEDULE_SELECTOR(LayerTestBlend::newBlend), 1.0f); + sister1->setPosition(Vec2(s.width * 1 / 3, s.height / 2)); + sister2->setPosition(Vec2(s.width * 2 / 3, s.height / 2)); + + schedule(CC_SCHEDULE_SELECTOR(LayerTestBlend::newBlend), 1.0f); } void LayerTestBlend::newBlend(float dt) { - auto layer = (LayerColor*)getChildByTag(kTagLayer); + auto layer = (LayerColor*)getChildByTag(kTagLayer); - backend::BlendFactor src; - backend::BlendFactor dst; + backend::BlendFactor src; + backend::BlendFactor dst; - if( layer->getBlendFunc().dst == backend::BlendFactor::ZERO ) + if (layer->getBlendFunc().dst == backend::BlendFactor::ZERO) { src = backend::BlendFactor::SRC_ALPHA; dst = backend::BlendFactor::ONE_MINUS_SRC_ALPHA; @@ -515,10 +441,9 @@ void LayerTestBlend::newBlend(float dt) } BlendFunc bf = {src, dst}; - layer->setBlendFunc( bf ); + layer->setBlendFunc(bf); } - std::string LayerTestBlend::subtitle() const { return "ColorLayer: blend"; @@ -531,18 +456,19 @@ std::string LayerTestBlend::subtitle() const //------------------------------------------------------------------ LayerGradientTest::LayerGradientTest() { - auto layer1 = LayerGradient::create(Color4B(255,0,0,255), Color4B(0,255,0,255), Vec2(0.9f, 0.9f)); + auto layer1 = LayerGradient::create(Color4B(255, 0, 0, 255), Color4B(0, 255, 0, 255), Vec2(0.9f, 0.9f)); addChild(layer1, 0, kTagLayer); - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesMoved = CC_CALLBACK_2(LayerGradientTest::onTouchesMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); auto label1 = Label::createWithTTF("Compressed Interpolation: Enabled", "fonts/Marker Felt.ttf", 26); auto label2 = Label::createWithTTF("Compressed Interpolation: Disabled", "fonts/Marker Felt.ttf", 26); - auto item1 = MenuItemLabel::create(label1); - auto item2 = MenuItemLabel::create(label2); - auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(LayerGradientTest::toggleItem, this), item1, item2, nullptr); + auto item1 = MenuItemLabel::create(label1); + auto item2 = MenuItemLabel::create(label2); + auto item = + MenuItemToggle::createWithCallback(CC_CALLBACK_1(LayerGradientTest::toggleItem, this), item1, item2, nullptr); auto menu = Menu::create(item, nullptr); addChild(menu); @@ -550,23 +476,23 @@ LayerGradientTest::LayerGradientTest() menu->setPosition(Vec2(s.width / 2, 100.0f)); } -void LayerGradientTest::toggleItem(Ref *sender) +void LayerGradientTest::toggleItem(Ref* sender) { - auto gradient = static_cast( getChildByTag(kTagLayer) ); - gradient->setCompressedInterpolation(! gradient->isCompressedInterpolation()); + auto gradient = static_cast(getChildByTag(kTagLayer)); + gradient->setCompressedInterpolation(!gradient->isCompressedInterpolation()); } -void LayerGradientTest::onTouchesMoved(const std::vector& touches, Event *event) +void LayerGradientTest::onTouchesMoved(const std::vector& touches, Event* event) { auto s = Director::getInstance()->getWinSize(); auto touch = touches[0]; - auto start = touch->getLocation(); + auto start = touch->getLocation(); - auto diff = Vec2(s.width/2,s.height/2) - start; - diff = diff.getNormalized(); + auto diff = Vec2(s.width / 2, s.height / 2) - start; + diff = diff.getNormalized(); - auto gradient = static_cast( getChildByTag(1) ); + auto gradient = static_cast(getChildByTag(1)); gradient->setVector(diff); } @@ -587,7 +513,7 @@ std::string LayerGradientTest::subtitle() const //------------------------------------------------------------------ LayerGradientTest2::LayerGradientTest2() { - auto layer = LayerGradient::create(Color4B(255,0,0,255), Color4B(255,255,0,255)); + auto layer = LayerGradient::create(Color4B(255, 0, 0, 255), Color4B(255, 255, 0, 255)); addChild(layer); } @@ -603,7 +529,7 @@ std::string LayerGradientTest2::subtitle() const // LayerIgnoreAnchorPointPos -#define kLayerIgnoreAnchorPoint 1000 +#define kLayerIgnoreAnchorPoint 1000 void LayerIgnoreAnchorPointPos::onEnter() { @@ -614,32 +540,33 @@ void LayerIgnoreAnchorPointPos::onEnter() auto l = LayerColor::create(Color4B(255, 0, 0, 255), 150, 150); l->setAnchorPoint(Vec2(0.5f, 0.5f)); - l->setPosition(Vec2( s.width/2, s.height/2)); + l->setPosition(Vec2(s.width / 2, s.height / 2)); - auto move = MoveBy::create(2, Vec2(100,2)); - auto back = (MoveBy *)move->reverse(); - auto seq = Sequence::create(move, back, nullptr); + auto move = MoveBy::create(2, Vec2(100, 2)); + auto back = (MoveBy*)move->reverse(); + auto seq = Sequence::create(move, back, nullptr); l->runAction(RepeatForever::create(seq)); this->addChild(l, 0, kLayerIgnoreAnchorPoint); auto child = Sprite::create("Images/grossini.png"); l->addChild(child); auto lsize = l->getContentSize(); - child->setPosition(Vec2(lsize.width/2, lsize.height/2)); + child->setPosition(Vec2(lsize.width / 2, lsize.height / 2)); - auto item = MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointPos::onToggle, this)); + auto item = + MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointPos::onToggle, this)); auto menu = Menu::create(item, nullptr); this->addChild(menu); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); } void LayerIgnoreAnchorPointPos::onToggle(Ref* pObject) { - auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); + auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); bool ignore = layer->isIgnoreAnchorPointForPosition(); - layer->setIgnoreAnchorPointForPosition(! ignore); + layer->setIgnoreAnchorPointForPosition(!ignore); } std::string LayerIgnoreAnchorPointPos::title() const @@ -662,32 +589,32 @@ void LayerIgnoreAnchorPointRot::onEnter() auto l = LayerColor::create(Color4B(255, 0, 0, 255), 200, 200); l->setAnchorPoint(Vec2(0.5f, 0.5f)); - l->setPosition(Vec2( s.width/2, s.height/2)); + l->setPosition(Vec2(s.width / 2, s.height / 2)); this->addChild(l, 0, kLayerIgnoreAnchorPoint); auto rot = RotateBy::create(2, 360); l->runAction(RepeatForever::create(rot)); - auto child = Sprite::create("Images/grossini.png"); l->addChild(child); auto lsize = l->getContentSize(); - child->setPosition(Vec2(lsize.width/2, lsize.height/2)); + child->setPosition(Vec2(lsize.width / 2, lsize.height / 2)); - auto item = MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointRot::onToggle, this)); + auto item = + MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointRot::onToggle, this)); auto menu = Menu::create(item, nullptr); this->addChild(menu); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); } void LayerIgnoreAnchorPointRot::onToggle(Ref* pObject) { - auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); + auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); bool ignore = layer->isIgnoreAnchorPointForPosition(); - layer->setIgnoreAnchorPointForPosition(! ignore); + layer->setIgnoreAnchorPointForPosition(!ignore); } std::string LayerIgnoreAnchorPointRot::title() const @@ -704,18 +631,17 @@ std::string LayerIgnoreAnchorPointRot::subtitle() const void LayerIgnoreAnchorPointScale::onEnter() { LayerTest::onEnter(); - + auto s = Director::getInstance()->getWinSize(); auto l = LayerColor::create(Color4B(255, 0, 0, 255), 200, 200); l->setAnchorPoint(Vec2(0.5f, 1.0f)); - l->setPosition(Vec2( s.width/2, s.height/2)); - + l->setPosition(Vec2(s.width / 2, s.height / 2)); auto scale = ScaleBy::create(2, 2); - auto back = (ScaleBy*)scale->reverse(); - auto seq = Sequence::create(scale, back, nullptr); + auto back = (ScaleBy*)scale->reverse(); + auto seq = Sequence::create(scale, back, nullptr); l->runAction(RepeatForever::create(seq)); @@ -724,21 +650,22 @@ void LayerIgnoreAnchorPointScale::onEnter() auto child = Sprite::create("Images/grossini.png"); l->addChild(child); auto lsize = l->getContentSize(); - child->setPosition(Vec2(lsize.width/2, lsize.height/2)); + child->setPosition(Vec2(lsize.width / 2, lsize.height / 2)); - auto item = MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointScale::onToggle, this)); + auto item = + MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointScale::onToggle, this)); auto menu = Menu::create(item, nullptr); this->addChild(menu); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); } void LayerIgnoreAnchorPointScale::onToggle(Ref* pObject) { - auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); + auto layer = this->getChildByTag(kLayerIgnoreAnchorPoint); bool ignore = layer->isIgnoreAnchorPointForPosition(); - layer->setIgnoreAnchorPointForPosition(! ignore); + layer->setIgnoreAnchorPointForPosition(!ignore); } std::string LayerIgnoreAnchorPointScale::title() const @@ -755,22 +682,22 @@ LayerExtendedBlendOpacityTest::LayerExtendedBlendOpacityTest() { auto layer1 = LayerGradient::create(Color4B(255, 0, 0, 255), Color4B(255, 0, 255, 255)); layer1->setContentSize(Size(80.0f, 80.0f)); - layer1->setPosition(Vec2(50.0f,50.0f)); + layer1->setPosition(Vec2(50.0f, 50.0f)); addChild(layer1); - + auto layer2 = LayerGradient::create(Color4B(0, 0, 0, 127), Color4B(255, 255, 255, 127)); layer2->setContentSize(Size(80.0f, 80.0f)); - layer2->setPosition(Vec2(100.0f,90.0f)); + layer2->setPosition(Vec2(100.0f, 90.0f)); addChild(layer2); - + auto layer3 = LayerGradient::create(); layer3->setContentSize(Size(80.0f, 80.0f)); - layer3->setPosition(Vec2(150.0f,140.0f)); + layer3->setPosition(Vec2(150.0f, 140.0f)); layer3->setStartColor(Color3B(255, 0, 0)); layer3->setEndColor(Color3B(255, 0, 255)); layer3->setStartOpacity(255); layer3->setEndOpacity(255); - layer3->setBlendFunc( BlendFunc::ALPHA_NON_PREMULTIPLIED ); + layer3->setBlendFunc(BlendFunc::ALPHA_NON_PREMULTIPLIED); addChild(layer3); } @@ -788,27 +715,27 @@ std::string LayerExtendedBlendOpacityTest::subtitle() const void LayerBug3162A::onEnter() { LayerTest::onEnter(); - - Size size = VisibleRect::getVisibleRect().size; - size.width = size.width / 2; - size.height = size.height / 3; + + Size size = VisibleRect::getVisibleRect().size; + size.width = size.width / 2; + size.height = size.height / 3; Color4B color[3] = {Color4B(255, 0, 0, 255), Color4B(0, 255, 0, 255), Color4B(0, 0, 255, 255)}; - + for (int i = 0; i < 3; ++i) { _layer[i] = LayerColor::create(color[i]); _layer[i]->setContentSize(size); - _layer[i]->setPosition(Vec2(size.width/2, size.height/2) - Vec2(20.0f, 20.0f)); + _layer[i]->setPosition(Vec2(size.width / 2, size.height / 2) - Vec2(20.0f, 20.0f)); _layer[i]->setOpacity(150); _layer[i]->setCascadeOpacityEnabled(true); if (i > 0) { - _layer[i-1]->addChild(_layer[i]); + _layer[i - 1]->addChild(_layer[i]); } } - + this->addChild(_layer[0]); - + schedule(CC_SCHEDULE_SELECTOR(LayerBug3162A::step), 0.5, CC_REPEAT_FOREVER, 0); } @@ -831,30 +758,30 @@ std::string LayerBug3162A::subtitle() const void LayerBug3162B::onEnter() { LayerTest::onEnter(); - - Size size = VisibleRect::getVisibleRect().size; - size.width = size.width / 2; - size.height = size.height / 3; + + Size size = VisibleRect::getVisibleRect().size; + size.width = size.width / 2; + size.height = size.height / 3; Color4B color[3] = {Color4B(200, 0, 0, 255), Color4B(150, 0, 0, 255), Color4B(100, 0, 0, 255)}; - + for (int i = 0; i < 3; ++i) { _layer[i] = LayerColor::create(color[i]); _layer[i]->setContentSize(size); - _layer[i]->setPosition(Vec2(size.width/2, size.height/2) - Vec2(20.0f, 20.0f)); + _layer[i]->setPosition(Vec2(size.width / 2, size.height / 2) - Vec2(20.0f, 20.0f)); //_layer[i]->setOpacity(150); if (i > 0) { - _layer[i-1]->addChild(_layer[i]); + _layer[i - 1]->addChild(_layer[i]); } } - + this->addChild(_layer[0]); - + _layer[0]->setCascadeColorEnabled(true); _layer[1]->setCascadeColorEnabled(true); _layer[2]->setCascadeColorEnabled(true); - + schedule(CC_SCHEDULE_SELECTOR(LayerBug3162B::step), 0.5, CC_REPEAT_FOREVER, 0); } @@ -880,7 +807,7 @@ std::string LayerColorOccludeBug::title() const std::string LayerColorOccludeBug::subtitle() const { - return "Layer Color Should not occlude titles and any sprites"; + return "Layer Color Should not occlude titles and any sprites"; } void LayerColorOccludeBug::onEnter() @@ -907,22 +834,22 @@ std::string LayerRadialGradientTest::title() const void LayerRadialGradientTest::onEnter() { LayerTest::onEnter(); - + _currentSeletedItemIndex = 0; - + auto director = Director::getInstance(); director->setClearColor(Color4F(0, 0, 0, 0)); auto origin = director->getVisibleOrigin(); - auto size = director->getVisibleSize(); - Vec2 center(origin.x + size.width/2 + 50, origin.y + size.height/2); + auto size = director->getVisibleSize(); + Vec2 center(origin.x + size.width / 2 + 50, origin.y + size.height / 2); float radius = (size.height - 50) / 2; - _layer = LayerRadialGradient::create(Color4B(145, 106, 209, 140), Color4B(0, 0, 0, 0), radius, center, 1.0f); + _layer = LayerRadialGradient::create(Color4B(145, 106, 209, 140), Color4B(0, 0, 0, 0), radius, center, 1.0f); addChild(_layer); - + auto scaleSlider = LayerRadialGradientTest::createSlider(); scaleSlider->setPosition(Vec2(50.0f, 130.0f)); addChild(scaleSlider); - + auto listview = createListView(); listview->setPosition(Vec2(100.0f, 150.0f)); addChild(listview); @@ -939,7 +866,7 @@ cocos2d::ui::Slider* LayerRadialGradientTest::createSlider() slider->setRotation(90); slider->setTag(101); slider->setPercent(50); - + return slider; } @@ -947,113 +874,114 @@ void LayerRadialGradientTest::listviewCallback(cocos2d::Ref* sender, cocos2d::ui { // clear all text to white auto listview = static_cast(sender); - for (auto &item : listview->getItems()) + for (auto& item : listview->getItems()) static_cast(item)->setColor(cocos2d::Color3B::WHITE); - + _currentSeletedItemIndex = (int)listview->getCurSelectedIndex(); listview->getItem(_currentSeletedItemIndex)->setColor(cocos2d::Color3B::RED); - + int percent = 100; auto slider = static_cast(getChildByTag(101)); switch (_currentSeletedItemIndex) { - case 0: - // scale - slider->setPercent(_layer->getScaleX() / 2 * percent); - break; - case 1: - // skewx - slider->setPercent(_layer->getSkewX() / 90 * percent); - break; - case 2: - // skewy - slider->setPercent(_layer->getSkewY() / 90 * percent); - break; - case 3: - // expand - slider->setPercent(_layer->getExpand() * percent); - break; - case 4: - // radius - slider->setPercent(_layer->getRadius() / 300 * percent); - break; - - default: - break; + case 0: + // scale + slider->setPercent(_layer->getScaleX() / 2 * percent); + break; + case 1: + // skewx + slider->setPercent(_layer->getSkewX() / 90 * percent); + break; + case 2: + // skewy + slider->setPercent(_layer->getSkewY() / 90 * percent); + break; + case 3: + // expand + slider->setPercent(_layer->getExpand() * percent); + break; + case 4: + // radius + slider->setPercent(_layer->getRadius() / 300 * percent); + break; + + default: + break; } } void LayerRadialGradientTest::sliderCallback(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type) { - auto slider = static_cast(sender); + auto slider = static_cast(sender); float percent = slider->getPercent() / 100.f; switch (_currentSeletedItemIndex) { - case 0: - // scale - _layer->setScale(percent * 2); - CCLOG("scale is %f", percent * 2); - break; - case 1: - // skewx - _layer->setSkewX(90 * percent); - CCLOG("SkewX is %f", 90 * percent); - break; - case 2: - // skewy - _layer->setSkewY(90 * percent); - CCLOG("SkewY is %f", 90 * percent); - break; - case 3: - // expand - _layer->setExpand(percent); - CCLOG("expand is %f", percent); - break; - case 4: - // radius - _layer->setRadius(300 * percent); - CCLOG("radius is %f", 300 * percent); - break; - default: - break; + case 0: + // scale + _layer->setScale(percent * 2); + CCLOG("scale is %f", percent * 2); + break; + case 1: + // skewx + _layer->setSkewX(90 * percent); + CCLOG("SkewX is %f", 90 * percent); + break; + case 2: + // skewy + _layer->setSkewY(90 * percent); + CCLOG("SkewY is %f", 90 * percent); + break; + case 3: + // expand + _layer->setExpand(percent); + CCLOG("expand is %f", percent); + break; + case 4: + // radius + _layer->setRadius(300 * percent); + CCLOG("radius is %f", 300 * percent); + break; + default: + break; } } cocos2d::ui::ListView* LayerRadialGradientTest::createListView() { auto listview = cocos2d::ui::ListView::create(); - + auto scale = cocos2d::ui::Text::create(); scale->setString("scale[0-2]"); - scale->setColor(cocos2d::Color3B::RED); // default seleted item + scale->setColor(cocos2d::Color3B::RED); // default seleted item scale->setTouchEnabled(true); listview->pushBackCustomItem(scale); - + auto skewx = cocos2d::ui::Text::create(); skewx->setString("skewx[0-90]"); skewx->setTouchEnabled(true); listview->pushBackCustomItem(skewx); - + auto skewy = cocos2d::ui::Text::create(); skewy->setString("skewy[0-90]"); skewy->setTouchEnabled(true); listview->pushBackCustomItem(skewy); - + auto expand = cocos2d::ui::Text::create(); expand->setString("expand[0-1]"); expand->setTouchEnabled(true); listview->pushBackCustomItem(expand); - + auto radius = cocos2d::ui::Text::create(); radius->setString("radius[0-300]"); radius->setTouchEnabled(true); listview->pushBackCustomItem(radius); - + listview->setContentSize(scale->getContentSize() * 5); listview->setCurSelectedIndex(0); listview->setTouchEnabled(true); - listview->addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(LayerRadialGradientTest::listviewCallback, this)); + listview->addEventListener( + (ui::ListView::ccListViewCallback)CC_CALLBACK_2(LayerRadialGradientTest::listviewCallback, this)); listview->setTag(100); - + return listview; } diff --git a/tests/cpp-tests/Classes/LayerTest/LayerTest.h b/tests/cpp-tests/Classes/LayerTest/LayerTest.h index 9ef5155f0987..96817d751b83 100644 --- a/tests/cpp-tests/Classes/LayerTest/LayerTest.h +++ b/tests/cpp-tests/Classes/LayerTest/LayerTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,8 +35,9 @@ class LayerTest : public TestCase { public: virtual std::string title() const override; + protected: - std::string _title; + std::string _title; }; class LayerTestCascadingOpacityA : public LayerTest @@ -87,7 +88,6 @@ class LayerTestCascadingColorC : public LayerTest virtual std::string subtitle() const override; }; - class LayerTest1 : public LayerTest { public: @@ -96,7 +96,7 @@ class LayerTest1 : public LayerTest virtual void onEnter() override; virtual std::string subtitle() const override; - void updateSize(cocos2d::Vec2 &touchLocation); + void updateSize(cocos2d::Vec2& touchLocation); void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); @@ -111,7 +111,6 @@ class LayerTest2 : public LayerTest virtual std::string subtitle() const override; }; - class LayerTestBlend : public LayerTest { public: @@ -130,7 +129,7 @@ class LayerGradientTest : public LayerTest void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); virtual std::string title() const override; virtual std::string subtitle() const override; - void toggleItem(cocos2d::Ref *sender); + void toggleItem(cocos2d::Ref* sender); }; class LayerGradientTest2 : public LayerTest @@ -188,9 +187,9 @@ class LayerBug3162A : public LayerTest virtual void onEnter() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + void step(float dt); - + private: cocos2d::LayerColor* _layer[3]; }; @@ -202,9 +201,9 @@ class LayerBug3162B : public LayerTest virtual void onEnter() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + void step(float dt); - + private: cocos2d::LayerColor* _layer[3]; }; @@ -217,7 +216,7 @@ class LayerColorOccludeBug : public LayerTest virtual void onExit() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + private: cocos2d::LayerColor* _layer; }; @@ -228,16 +227,16 @@ class LayerRadialGradientTest : public LayerTest CREATE_FUNC(LayerRadialGradientTest); virtual void onEnter() override; virtual std::string title() const override; - + void sliderCallback(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); void listviewCallback(cocos2d::Ref* sender, cocos2d::ui::ListView::EventType type); + private: cocos2d::ui::Slider* createSlider(); cocos2d::ui::ListView* createListView(); - + cocos2d::LayerRadialGradient* _layer; int _currentSeletedItemIndex; }; - #endif diff --git a/tests/cpp-tests/Classes/LightTest/LightTest.cpp b/tests/cpp-tests/Classes/LightTest/LightTest.cpp index 26c449459df4..77d67012eadb 100644 --- a/tests/cpp-tests/Classes/LightTest/LightTest.cpp +++ b/tests/cpp-tests/Classes/LightTest/LightTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,49 +31,49 @@ LightTests::LightTests() ADD_TEST_CASE(LightTest); } -LightTest::LightTest() - : _directionalLight(nullptr) - , _pointLight(nullptr) - , _spotLight(nullptr) +LightTest::LightTest() : _directionalLight(nullptr), _pointLight(nullptr), _spotLight(nullptr) { addSprite(); addLights(); scheduleUpdate(); - auto s = Director::getInstance()->getWinSize(); - auto camera = Camera::createPerspective(60, (float)s.width/s.height, 1.0f, 1000.0f); + auto s = Director::getInstance()->getWinSize(); + auto camera = Camera::createPerspective(60, (float)s.width / s.height, 1.0f, 1000.0f); camera->setCameraFlag(CameraFlag::USER1); camera->setPosition3D(Vec3(0.0f, 100.0f, 100.0f)); camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f)); addChild(camera); TTFConfig ttfConfig("fonts/arial.ttf", 15); - _ambientLightLabel = Label::createWithTTF(ttfConfig,"Ambient Light ON"); + _ambientLightLabel = Label::createWithTTF(ttfConfig, "Ambient Light ON"); _ambientLightLabel->retain(); - auto menuItem0 = MenuItemLabel::create(_ambientLightLabel, CC_CALLBACK_1(LightTest::SwitchLight,this,LightType::AMBIENT)); - _directionalLightLabel = Label::createWithTTF(ttfConfig,"Directional Light OFF"); + auto menuItem0 = + MenuItemLabel::create(_ambientLightLabel, CC_CALLBACK_1(LightTest::SwitchLight, this, LightType::AMBIENT)); + _directionalLightLabel = Label::createWithTTF(ttfConfig, "Directional Light OFF"); _directionalLightLabel->retain(); - auto menuItem1 = MenuItemLabel::create(_directionalLightLabel, CC_CALLBACK_1(LightTest::SwitchLight,this,LightType::DIRECTIONAL)); - _pointLightLabel = Label::createWithTTF(ttfConfig,"Point Light OFF"); + auto menuItem1 = MenuItemLabel::create(_directionalLightLabel, + CC_CALLBACK_1(LightTest::SwitchLight, this, LightType::DIRECTIONAL)); + _pointLightLabel = Label::createWithTTF(ttfConfig, "Point Light OFF"); _pointLightLabel->retain(); - auto menuItem2 = MenuItemLabel::create(_pointLightLabel, CC_CALLBACK_1(LightTest::SwitchLight,this,LightType::POINT)); - _spotLightLabel = Label::createWithTTF(ttfConfig,"Spot Light OFF"); + auto menuItem2 = + MenuItemLabel::create(_pointLightLabel, CC_CALLBACK_1(LightTest::SwitchLight, this, LightType::POINT)); + _spotLightLabel = Label::createWithTTF(ttfConfig, "Spot Light OFF"); _spotLightLabel->retain(); - auto menuItem3 = MenuItemLabel::create(_spotLightLabel, CC_CALLBACK_1(LightTest::SwitchLight,this,LightType::SPOT)); + auto menuItem3 = + MenuItemLabel::create(_spotLightLabel, CC_CALLBACK_1(LightTest::SwitchLight, this, LightType::SPOT)); auto menu = Menu::create(menuItem0, menuItem1, menuItem2, menuItem3, nullptr); menu->setPosition(Vec2::ZERO); menuItem0->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); - menuItem0->setPosition( Vec2(VisibleRect::left().x, VisibleRect::top().y-50) ); + menuItem0->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 50)); menuItem1->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); - menuItem1->setPosition( Vec2(VisibleRect::left().x, VisibleRect::top().y-100) ); + menuItem1->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 100)); menuItem2->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); - menuItem2->setPosition( Vec2(VisibleRect::left().x, VisibleRect::top().y -150)); + menuItem2->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 150)); menuItem3->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); - menuItem3->setPosition( Vec2(VisibleRect::left().x, VisibleRect::top().y -200)); + menuItem3->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 200)); addChild(menu); } - LightTest::~LightTest() { if (_spotLightLabel) @@ -119,7 +119,7 @@ void LightTest::addSprite() { std::string fileName = "Sprite3DTest/orc.c3b"; - auto sprite = Sprite3D::create(fileName); + auto sprite = Sprite3D::create(fileName); sprite->setRotation3D(Vec3(0.0f, 180.0f, 0.0f)); sprite->setPosition(Vec2(0.0f, 0.0f)); sprite->setScale(2.0); @@ -138,7 +138,7 @@ void LightTest::addSprite() { std::string fileName = "Sprite3DTest/sphere.c3b"; - auto sprite = Sprite3D::create(fileName); + auto sprite = Sprite3D::create(fileName); sprite->setPosition(Vec2(30.0f, 0.0f)); addChild(sprite); sprite->setCameraMask(2); @@ -146,7 +146,7 @@ void LightTest::addSprite() { std::string fileName = "Sprite3DTest/sphere.c3b"; - auto sprite = Sprite3D::create(fileName); + auto sprite = Sprite3D::create(fileName); sprite->setScale(0.5f); sprite->setPosition(Vec2(-50.0f, 0.0f)); addChild(sprite); @@ -155,7 +155,7 @@ void LightTest::addSprite() { std::string fileName = "Sprite3DTest/sphere.c3b"; - auto sprite = Sprite3D::create(fileName); + auto sprite = Sprite3D::create(fileName); sprite->setScale(0.5f); sprite->setPosition(Vec2(-30.0f, 10.0f)); addChild(sprite); @@ -165,7 +165,7 @@ void LightTest::addSprite() void LightTest::addLights() { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); _ambientLight = AmbientLight::create(Color3B(200, 200, 200)); _ambientLight->retain(); _ambientLight->setEnabled(true); @@ -184,7 +184,8 @@ void LightTest::addLights() addChild(_pointLight); _pointLight->setCameraMask(2); - _spotLight = SpotLight::create(Vec3(-1.0f, -1.0f, 0.0f), Vec3(0.0f, 0.0f, 0.0f), Color3B(200, 200, 200), 0.0, 0.5, 10000.0f); + _spotLight = + SpotLight::create(Vec3(-1.0f, -1.0f, 0.0f), Vec3(0.0f, 0.0f, 0.0f), Color3B(200, 200, 200), 0.0, 0.5, 10000.0f); _spotLight->retain(); _spotLight->setEnabled(false); addChild(_spotLight); @@ -195,7 +196,7 @@ void LightTest::addLights() auto tintto2 = TintTo::create(4, 0, 255, 0); auto tintto3 = TintTo::create(4, 255, 0, 0); auto tintto4 = TintTo::create(4, 255, 255, 255); - auto seq = Sequence::create(tintto1,tintto2, tintto3, tintto4, nullptr); + auto seq = Sequence::create(tintto1, tintto2, tintto3, tintto4, nullptr); _ambientLight->runAction(RepeatForever::create(seq)); } @@ -204,7 +205,7 @@ void LightTest::addLights() auto tintto2 = TintTo::create(4, 0, 255, 0); auto tintto3 = TintTo::create(4, 0, 0, 255); auto tintto4 = TintTo::create(4, 255, 255, 255); - auto seq = Sequence::create(tintto1,tintto2, tintto3, tintto4, nullptr); + auto seq = Sequence::create(tintto1, tintto2, tintto3, tintto4, nullptr); _directionalLight->runAction(RepeatForever::create(seq)); } @@ -213,7 +214,7 @@ void LightTest::addLights() auto tintto2 = TintTo::create(4, 0, 255, 0); auto tintto3 = TintTo::create(4, 0, 0, 255); auto tintto4 = TintTo::create(4, 255, 255, 255); - auto seq = Sequence::create(tintto2, tintto1, tintto3, tintto4, nullptr); + auto seq = Sequence::create(tintto2, tintto1, tintto3, tintto4, nullptr); _pointLight->runAction(RepeatForever::create(seq)); } @@ -222,12 +223,12 @@ void LightTest::addLights() auto tintto2 = TintTo::create(4, 0, 255, 0); auto tintto3 = TintTo::create(4, 0, 0, 255); auto tintto4 = TintTo::create(4, 255, 255, 255); - auto seq = Sequence::create(tintto3, tintto2, tintto1, tintto4, nullptr); + auto seq = Sequence::create(tintto3, tintto2, tintto1, tintto4, nullptr); _spotLight->runAction(RepeatForever::create(seq)); } } -void LightTest::update( float delta ) +void LightTest::update(float delta) { static float angleDelta = 0.0; @@ -256,49 +257,49 @@ void LightTest::update( float delta ) TestCase::update(delta); } -void LightTest::SwitchLight( Ref* sender, LightType lightType ) +void LightTest::SwitchLight(Ref* sender, LightType lightType) { switch (lightType) { case LightType::AMBIENT: - { - char str[32]; - bool isON = !_ambientLight->isEnabled(); - sprintf(str, "Ambient Light %s", isON == true? "ON":"OFF"); - _ambientLight->setEnabled(isON); - _ambientLightLabel->setString(str); - } - break; + { + char str[32]; + bool isON = !_ambientLight->isEnabled(); + sprintf(str, "Ambient Light %s", isON == true ? "ON" : "OFF"); + _ambientLight->setEnabled(isON); + _ambientLightLabel->setString(str); + } + break; case LightType::DIRECTIONAL: - { - char str[32]; - bool isON = !_directionalLight->isEnabled(); - sprintf(str, "Directional Light %s", isON == true? "ON":"OFF"); - _directionalLight->setEnabled(isON); - _directionalLightLabel->setString(str); - } - break; + { + char str[32]; + bool isON = !_directionalLight->isEnabled(); + sprintf(str, "Directional Light %s", isON == true ? "ON" : "OFF"); + _directionalLight->setEnabled(isON); + _directionalLightLabel->setString(str); + } + break; case LightType::POINT: - { - char str[32]; - bool isON = !_pointLight->isEnabled(); - sprintf(str, "Point Light %s", isON == true? "ON":"OFF"); - _pointLight->setEnabled(isON); - _pointLightLabel->setString(str); - } - break; + { + char str[32]; + bool isON = !_pointLight->isEnabled(); + sprintf(str, "Point Light %s", isON == true ? "ON" : "OFF"); + _pointLight->setEnabled(isON); + _pointLightLabel->setString(str); + } + break; case LightType::SPOT: - { - char str[32]; - bool isON = !_spotLight->isEnabled(); - sprintf(str, "Spot Light %s", isON == true? "ON":"OFF"); - _spotLight->setEnabled(isON); - _spotLightLabel->setString(str); - } - break; + { + char str[32]; + bool isON = !_spotLight->isEnabled(); + sprintf(str, "Spot Light %s", isON == true ? "ON" : "OFF"); + _spotLight->setEnabled(isON); + _spotLightLabel->setString(str); + } + break; default: break; diff --git a/tests/cpp-tests/Classes/LightTest/LightTest.h b/tests/cpp-tests/Classes/LightTest/LightTest.h index 2112f1ce2010..e7b32fb9a790 100644 --- a/tests/cpp-tests/Classes/LightTest/LightTest.h +++ b/tests/cpp-tests/Classes/LightTest/LightTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -44,12 +44,10 @@ class LightTest : public TestCase void SwitchLight(cocos2d::Ref* sender, cocos2d::LightType lightType); private: - void addSprite(); void addLights(); private: - cocos2d::AmbientLight* _ambientLight; cocos2d::DirectionLight* _directionalLight; cocos2d::PointLight* _pointLight; @@ -62,4 +60,3 @@ class LightTest : public TestCase }; #endif - diff --git a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp index ea69cdad72de..54ecfbb0296c 100644 --- a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp +++ b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp @@ -37,7 +37,6 @@ USING_NS_CC; static void printProperties(Properties* properties, int indent); - // MARK: Tests MaterialSystemTest::MaterialSystemTest() @@ -66,7 +65,7 @@ void Material_Sprite3DTest::onEnter() sprite->setScale(8.f); sprite->setTexture("Sprite3DTest/boss.png"); this->addChild(sprite); - sprite->setPositionNormalized(Vec2(0.5f,0.5f)); + sprite->setPositionNormalized(Vec2(0.5f, 0.5f)); } std::string Material_Sprite3DTest::subtitle() const @@ -79,25 +78,20 @@ void Material_MultipleSprite3D::onEnter() MaterialSystemBaseTest::onEnter(); const char* names[] = { - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", - "Sprite3DTest/ReskinGirl.c3b", + "Sprite3DTest/ReskinGirl.c3b", "Sprite3DTest/ReskinGirl.c3b", "Sprite3DTest/ReskinGirl.c3b", + "Sprite3DTest/ReskinGirl.c3b", "Sprite3DTest/ReskinGirl.c3b", "Sprite3DTest/ReskinGirl.c3b", + "Sprite3DTest/ReskinGirl.c3b", "Sprite3DTest/ReskinGirl.c3b", }; const int totalNames = sizeof(names) / sizeof(names[0]); auto size = Director::getInstance()->getWinSize(); - for(int i=0;iaddChild(sprite); - sprite->setPosition(Vec2((size.width/(totalNames+1))*(i+1), size.height/4)); + sprite->setPosition(Vec2((size.width / (totalNames + 1)) * (i + 1), size.height / 4)); sprite->setScale(3); } } @@ -119,7 +113,7 @@ void Material_2DEffects::onEnter() // Print the properties of every namespace within this one. printProperties(properties, 0); - Material *mat1 = Material::createWithProperties(properties); + Material* mat1 = Material::createWithProperties(properties); auto spriteBlur = Sprite::create("Images/grossini.png"); spriteBlur->setPositionNormalized(Vec2(0.2f, 0.5f)); @@ -143,11 +137,13 @@ void Material_2DEffects::onEnter() timeUniforms.clear(); -#define FETCH_CCTIME_LOCATION(sprite) do { \ - auto programState = sprite->getProgramState(); \ - auto location = programState->getUniformLocation("u_Time"); \ - timeUniforms.emplace_back(programState, location); \ - }while(0) +#define FETCH_CCTIME_LOCATION(sprite) \ + do \ + { \ + auto programState = sprite->getProgramState(); \ + auto location = programState->getUniformLocation("u_Time"); \ + timeUniforms.emplace_back(programState, location); \ + } while (0) FETCH_CCTIME_LOCATION(spriteBlur); FETCH_CCTIME_LOCATION(spriteOutline); @@ -169,7 +165,7 @@ void Material_2DEffects::updateCCTimeUniforms(float) { float time = Director::getInstance()->getTotalFrames() * Director::getInstance()->getAnimationInterval(); Vec4 random(time / 10.0f, time, time * 2.0f, time * 4.0f); - for (auto &loc : timeUniforms) + for (auto& loc : timeUniforms) { loc.programState->setUniform(loc.location, &random, sizeof(random)); } @@ -184,21 +180,25 @@ void Material_2DEffects::updateCCTimeUniforms(float) */ class EffectAutoBindingResolver : public backend::ProgramState::AutoBindingResolver { - virtual bool resolveAutoBinding(backend::ProgramState* programState,/* Node* node,*/ std::string_view uniform, std::string_view autoBinding) override; + virtual bool resolveAutoBinding(backend::ProgramState* programState, + /* Node* node,*/ std::string_view uniform, + std::string_view autoBinding) override; void callbackRadius(backend::ProgramState* programState, backend::UniformLocation uniform); void callbackColor(backend::ProgramState* programState, backend::UniformLocation uniform); }; -bool EffectAutoBindingResolver::resolveAutoBinding(backend::ProgramState* programState, /*Node* node,*/ std::string_view uniform, std::string_view autoBinding) +bool EffectAutoBindingResolver::resolveAutoBinding(backend::ProgramState* programState, + /*Node* node,*/ std::string_view uniform, + std::string_view autoBinding) { - if (autoBinding.compare("DYNAMIC_RADIUS")==0) + if (autoBinding.compare("DYNAMIC_RADIUS") == 0) { auto loc = programState->getUniformLocation(uniform); programState->setCallbackUniform(loc, CC_CALLBACK_2(EffectAutoBindingResolver::callbackRadius, this)); return true; } - else if (autoBinding.compare("OUTLINE_COLOR")==0) + else if (autoBinding.compare("OUTLINE_COLOR") == 0) { auto loc = programState->getUniformLocation(uniform); programState->setCallbackUniform(loc, CC_CALLBACK_2(EffectAutoBindingResolver::callbackColor, this)); @@ -207,13 +207,13 @@ bool EffectAutoBindingResolver::resolveAutoBinding(backend::ProgramState* progra return false; } -void EffectAutoBindingResolver::callbackRadius(backend::ProgramState *programState, backend::UniformLocation uniform) +void EffectAutoBindingResolver::callbackRadius(backend::ProgramState* programState, backend::UniformLocation uniform) { float f = CCRANDOM_0_1() * 10; programState->setUniform(uniform, &f, sizeof(f)); } -void EffectAutoBindingResolver::callbackColor(backend::ProgramState *programState, backend::UniformLocation uniform) +void EffectAutoBindingResolver::callbackColor(backend::ProgramState* programState, backend::UniformLocation uniform) { float r = CCRANDOM_0_1(); float g = CCRANDOM_0_1(); @@ -233,18 +233,17 @@ Material_AutoBindings::~Material_AutoBindings() delete _resolver; } - void Material_AutoBindings::onEnter() { MaterialSystemBaseTest::onEnter(); -// auto properties = Properties::createNonRefCounted("Materials/2d_effects.material#sample"); + // auto properties = Properties::createNonRefCounted("Materials/2d_effects.material#sample"); auto properties = Properties::createNonRefCounted("Materials/auto_binding_test.material#sample"); // Print the properties of every namespace within this one. printProperties(properties, 0); - Material *mat1 = Material::createWithProperties(properties); + Material* mat1 = Material::createWithProperties(properties); auto spriteBlur = Sprite::create("Images/grossini.png"); spriteBlur->setPositionNormalized(Vec2(0.2f, 0.5f)); @@ -267,8 +266,8 @@ void Material_AutoBindings::onEnter() spriteEdgeDetect->setProgramState(mat1->getTechniqueByName("edge_detect")->getPassByIndex(0)->getProgramState()); _noiseProgramState = spriteNoise->getProgramState(); - _locationTime = _noiseProgramState->getUniformLocation("u_Time"); - + _locationTime = _noiseProgramState->getUniformLocation("u_Time"); + schedule(CC_SCHEDULE_SELECTOR(Material_AutoBindings::updateUniformTime)); // properties is not a "Ref" object CC_SAFE_DELETE(properties); @@ -296,24 +295,23 @@ void Material_setTechnique::onEnter() auto sprite = Sprite3D::create("Sprite3DTest/boss1.obj"); sprite->setScale(6); this->addChild(sprite); - sprite->setPositionNormalized(Vec2(0.5f,0.5f)); + sprite->setPositionNormalized(Vec2(0.5f, 0.5f)); _sprite = sprite; - - Material *mat = Material::createWithFilename("Materials/3d_effects.material"); + Material* mat = Material::createWithFilename("Materials/3d_effects.material"); sprite->setMaterial(mat); // lights auto light1 = AmbientLight::create(Color3B::RED); addChild(light1); - auto light2 = DirectionLight::create(Vec3(-1,1,0), Color3B::GREEN); + auto light2 = DirectionLight::create(Vec3(-1, 1, 0), Color3B::GREEN); addChild(light2); - this->schedule(CC_CALLBACK_1(Material_setTechnique::changeMaterial, this), 1, "cookie"); + this->schedule(CC_CALLBACK_1(Material_setTechnique::changeMaterial, this), 1, "cookie"); _techniqueState = 0; - auto rot = RotateBy::create(5, Vec3(30.0f,60.0f,270.0f)); + auto rot = RotateBy::create(5, Vec3(30.0f, 60.0f, 270.0f)); auto repeat = RepeatForever::create(rot); sprite->runAction(repeat); } @@ -328,17 +326,17 @@ void Material_setTechnique::changeMaterial(float dt) // get it from Mesh 0 switch (_techniqueState) { - case 0: - _sprite->getMaterial(0)->setTechnique("lit"); - break; - case 1: - _sprite->getMaterial(0)->setTechnique("normal"); - break; - case 2: - _sprite->getMaterial(0)->setTechnique("outline"); - break; - default: - break; + case 0: + _sprite->getMaterial(0)->setTechnique("lit"); + break; + case 1: + _sprite->getMaterial(0)->setTechnique("normal"); + break; + case 2: + _sprite->getMaterial(0)->setTechnique("outline"); + break; + default: + break; } _techniqueState = (_techniqueState + 1) % 3; @@ -356,10 +354,10 @@ void Material_clone::onEnter() this->addChild(sprite); sprite->setPositionNormalized(Vec2(0.25f, 0.5f)); - Material *mat = Material::createWithFilename("Materials/3d_effects.material"); + Material* mat = Material::createWithFilename("Materials/3d_effects.material"); sprite->setMaterial(mat); - auto rot = RotateBy::create(5, Vec3(360.0f,240.0f,120.0f)); + auto rot = RotateBy::create(5, Vec3(360.0f, 240.0f, 120.0f)); auto repeat = RepeatForever::create(rot); sprite->runAction(repeat); @@ -385,8 +383,7 @@ void Material_clone::onEnter() mat->setTechnique("outline"); // should affect only sprite 3 -// mat2->setTechnique("normal"); - + // mat2->setTechnique("normal"); } std::string Material_clone::subtitle() const @@ -402,76 +399,74 @@ const int SHOW_LEBAL_TAG = 114; void Material_parsePerformance::onEnter() { MaterialSystemBaseTest::onEnter(); - + _maxParsingCoumt = 5e3; - + auto screenSize = Director::getInstance()->getWinSize(); - + ui::Slider* slider = ui::Slider::create(); slider->loadBarTexture("cocosui/sliderTrack.png"); slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); slider->loadProgressBarTexture("cocosui/sliderProgress.png"); slider->setPercent(50); - + slider->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 3.0f)); slider->addEventListener([&](Ref* sender, ui::Slider::EventType type) { - if (type == ui::Slider::EventType::ON_SLIDEBALL_UP) { ui::Slider* slider = dynamic_cast(sender); - float p = slider->getPercent() / 100.0f; + float p = slider->getPercent() / 100.0f; slider->setTouchEnabled(false); CCLOG("Will parsing material %d times", (int)(p * _maxParsingCoumt)); Label* label = dynamic_cast(this->getChildByTag(SHOW_LEBAL_TAG)); - if(label) + if (label) { label->setString("Testing start!"); } this->scheduleOnce( - [this, p, slider](float) - { - this->parsingTesting(p * _maxParsingCoumt); - slider->setTouchEnabled(true); - }, - 1.0, "schedule test parsing"); - + [this, p, slider](float) { + this->parsingTesting(p * _maxParsingCoumt); + slider->setTouchEnabled(true); + }, + 1.0, "schedule test parsing"); } }); - + addChild(slider); - - auto label = Label::createWithSystemFont("Max parsing count is 10000, which may crash because of high memory consumption.", "Helvetica", 10); + + auto label = Label::createWithSystemFont( + "Max parsing count is 10000, which may crash because of high memory consumption.", "Helvetica", 10); label->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - 20)); addChild(label); label = Label::createWithSystemFont("Slide to test parsing performance", "Helvetica", 10); label->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)); addChild(label); - + label = Label::createWithSystemFont("", "Helvetica", 10); label->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + 20)); label->setTag(SHOW_LEBAL_TAG); addChild(label); - } void Material_parsePerformance::parsingTesting(unsigned int count) { std::clock_t begin = std::clock(); - + for (unsigned int i = 0; i < count; i++) { Material::createWithFilename("Materials/2d_effects.material"); Material::createWithFilename("Materials/3d_effects.material"); } - - std::clock_t end = std::clock(); + + std::clock_t end = std::clock(); double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC; - Label* label = dynamic_cast(this->getChildByTag(SHOW_LEBAL_TAG)); - if(label) + Label* label = dynamic_cast(this->getChildByTag(SHOW_LEBAL_TAG)); + if (label) { - std::string str = StringUtils::format("Testing completed! Took: %.3f seconds for parsing material %d times.", elapsed_secs, count); + std::string str = StringUtils::format("Testing completed! Took: %.3f seconds for parsing material %d times.", + elapsed_secs, count); label->setString(str); - + CCLOG("Took: %.3f seconds for parsing material %d times.", elapsed_secs, count); } } @@ -487,17 +482,17 @@ static void printProperties(Properties* properties, int indent) { // Print the name and ID of the current namespace. const char* spacename = properties->getNamespace(); - const char* id = properties->getId(); + const char* id = properties->getId(); char chindent[64]; - int i=0; - for(i=0; igetNextProperty(); + const char* name = properties->getNextProperty(); const char* value = NULL; while (name != NULL) { @@ -509,9 +504,9 @@ static void printProperties(Properties* properties, int indent) Properties* space = properties->getNextNamespace(); while (space != NULL) { - printProperties(space, indent+1); + printProperties(space, indent + 1); space = properties->getNextNamespace(); } - log("%s}\n",chindent); + log("%s}\n", chindent); } diff --git a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h index 5262858f9e33..518cfef70813 100644 --- a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h +++ b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h @@ -46,7 +46,6 @@ class Material_Sprite3DTest : public MaterialSystemBaseTest virtual void onEnter() override; virtual std::string subtitle() const override; - }; class Material_MultipleSprite3D : public MaterialSystemBaseTest @@ -66,13 +65,15 @@ class Material_2DEffects : public MaterialSystemBaseTest virtual void onEnter() override; virtual std::string subtitle() const override; void updateCCTimeUniforms(float); - + private: - struct Locations { - Locations(cocos2d::backend::ProgramState *ps, cocos2d::backend::UniformLocation loc) - : programState(ps), location(loc) {} - - cocos2d::backend::ProgramState *programState = nullptr; + struct Locations + { + Locations(cocos2d::backend::ProgramState* ps, cocos2d::backend::UniformLocation loc) + : programState(ps), location(loc) + {} + + cocos2d::backend::ProgramState* programState = nullptr; cocos2d::backend::UniformLocation location; }; std::vector timeUniforms; @@ -94,8 +95,8 @@ class Material_AutoBindings : public MaterialSystemBaseTest private: cocos2d::backend::UniformLocation _locationTime; - EffectAutoBindingResolver *_resolver = nullptr; - cocos2d::backend::ProgramState *_noiseProgramState = nullptr; + EffectAutoBindingResolver* _resolver = nullptr; + cocos2d::backend::ProgramState* _noiseProgramState = nullptr; }; class Material_setTechnique : public MaterialSystemBaseTest @@ -130,9 +131,7 @@ class Material_parsePerformance : public MaterialSystemBaseTest virtual void onEnter() override; virtual std::string subtitle() const override; void parsingTesting(unsigned int count); + protected: unsigned int _maxParsingCoumt; }; - - - diff --git a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp index 80eef3c8f807..9a71dc99bcb1 100644 --- a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp +++ b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp @@ -29,21 +29,22 @@ USING_NS_CC; -enum { - kTagMenu = 1, - kTagMenu0 = 0, +enum +{ + kTagMenu = 1, + kTagMenu0 = 0, kTagMenu1 = 1, }; -#define MID_CALLBACK 1000 -#define MID_CALLBACK2 1001 -#define MID_DISABLED 1002 -#define MID_ENABLE 1003 -#define MID_CONFIG 1004 -#define MID_QUIT 1005 -#define MID_OPACITY 1006 -#define MID_ALIGN 1007 -#define MID_CALLBACK3 1008 +#define MID_CALLBACK 1000 +#define MID_CALLBACK2 1001 +#define MID_DISABLED 1002 +#define MID_ENABLE 1003 +#define MID_CONFIG 1004 +#define MID_QUIT 1005 +#define MID_OPACITY 1006 +#define MID_ALIGN 1007 +#define MID_CALLBACK3 1008 #define MID_BACKCALLBACK 1009 MenuTests::MenuTests() @@ -59,42 +60,43 @@ MenuLayerMainMenu::MenuLayerMainMenu() { _touchListener = EventListenerTouchOneByOne::create(); _touchListener->setSwallowTouches(true); - _touchListener->onTouchBegan = CC_CALLBACK_2(MenuLayerMainMenu::touchBegan, this); - _touchListener->onTouchMoved = CC_CALLBACK_2(MenuLayerMainMenu::touchMoved, this); - _touchListener->onTouchEnded = CC_CALLBACK_2(MenuLayerMainMenu::touchEnded, this); + _touchListener->onTouchBegan = CC_CALLBACK_2(MenuLayerMainMenu::touchBegan, this); + _touchListener->onTouchMoved = CC_CALLBACK_2(MenuLayerMainMenu::touchMoved, this); + _touchListener->onTouchEnded = CC_CALLBACK_2(MenuLayerMainMenu::touchEnded, this); _touchListener->onTouchCancelled = CC_CALLBACK_2(MenuLayerMainMenu::touchCancelled, this); _eventDispatcher->addEventListenerWithFixedPriority(_touchListener, 1); - - // Font Item - auto spriteNormal = Sprite::create(s_MenuItem, Rect(0,23*2,115,23)); - auto spriteSelected = Sprite::create(s_MenuItem, Rect(0,23*1,115,23)); - auto spriteDisabled = Sprite::create(s_MenuItem, Rect(0,23*0,115,23)); - - auto item1 = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, CC_CALLBACK_1(MenuLayerMainMenu::menuCallback, this) ); - + + // Font Item + auto spriteNormal = Sprite::create(s_MenuItem, Rect(0, 23 * 2, 115, 23)); + auto spriteSelected = Sprite::create(s_MenuItem, Rect(0, 23 * 1, 115, 23)); + auto spriteDisabled = Sprite::create(s_MenuItem, Rect(0, 23 * 0, 115, 23)); + + auto item1 = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, + CC_CALLBACK_1(MenuLayerMainMenu::menuCallback, this)); + // Image Item - auto item2 = MenuItemImage::create(s_SendScore, s_PressSendScore, CC_CALLBACK_1(MenuLayerMainMenu::menuCallback2, this) ); + auto item2 = + MenuItemImage::create(s_SendScore, s_PressSendScore, CC_CALLBACK_1(MenuLayerMainMenu::menuCallback2, this)); // Label Item (LabelAtlas) auto labelAtlas = LabelAtlas::create("0123456789", "fonts/labelatlas.png", 16, 24, '.'); - auto item3 = MenuItemLabel::create(labelAtlas, CC_CALLBACK_1(MenuLayerMainMenu::menuCallbackDisabled, this) ); - item3->setDisabledColor( Color3B(32,32,64) ); - item3->setColor( Color3B(200,200,255) ); + auto item3 = MenuItemLabel::create(labelAtlas, CC_CALLBACK_1(MenuLayerMainMenu::menuCallbackDisabled, this)); + item3->setDisabledColor(Color3B(32, 32, 64)); + item3->setColor(Color3B(200, 200, 255)); CCLOG("test MenuItem Label getString: %s", item3->getString().data()); // Font Item - auto item4 = MenuItemFont::create("I toggle enable items", [&](Ref *sender) { - _disabledItem->setEnabled(! _disabledItem->isEnabled() ); - }); + auto item4 = MenuItemFont::create("I toggle enable items", + [&](Ref* sender) { _disabledItem->setEnabled(!_disabledItem->isEnabled()); }); item4->setFontSizeObj(20); item4->setFontName("fonts/Marker Felt.ttf"); - + // Label Item (LabelBMFont) auto label = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "configuration"); auto item5 = MenuItemLabel::create(label, CC_CALLBACK_1(MenuLayerMainMenu::menuCallbackConfig, this)); // Testing issue #500 - item5->setScale( 0.8f ); + item5->setScale(0.8f); // Events MenuItemFont::setFontName("fonts/Marker Felt.ttf"); @@ -102,62 +104,56 @@ MenuLayerMainMenu::MenuLayerMainMenu() auto item6 = MenuItemFont::create("Bugs", CC_CALLBACK_1(MenuLayerMainMenu::menuCallbackBugsTest, this)); // Font Item - auto item7= MenuItemFont::create("Quit", CC_CALLBACK_1(MenuLayerMainMenu::onQuit, this)); - - auto item8 = MenuItemFont::create("Remove menu item when moving", CC_CALLBACK_1(MenuLayerMainMenu::menuMovingCallback, this)); - + auto item7 = MenuItemFont::create("Quit", CC_CALLBACK_1(MenuLayerMainMenu::onQuit, this)); + + auto item8 = MenuItemFont::create("Remove menu item when moving", + CC_CALLBACK_1(MenuLayerMainMenu::menuMovingCallback, this)); + auto color_action = TintBy::create(0.5f, 0, -255, -255); - auto color_back = color_action->reverse(); - auto seq = Sequence::create(color_action, color_back, nullptr); + auto color_back = color_action->reverse(); + auto seq = Sequence::create(color_action, color_back, nullptr); item7->runAction(RepeatForever::create(seq)); - auto menu = Menu::create( item1, item2, item3, item4, item5, item6, item7, item8, nullptr); + auto menu = Menu::create(item1, item2, item3, item4, item5, item6, item7, item8, nullptr); menu->alignItemsVertically(); - - + // elastic effect auto s = Director::getInstance()->getWinSize(); - - int i=0; - for(const auto &child : menu->getChildren()) { + + int i = 0; + for (const auto& child : menu->getChildren()) + { auto dstPoint = child->getPosition(); - int offset = (int) (s.width/2 + 50); - if( i % 2 == 0) + int offset = (int)(s.width / 2 + 50); + if (i % 2 == 0) offset = -offset; - - child->setPosition( Vec2( dstPoint.x + offset, dstPoint.y) ); - child->runAction( - EaseElasticOut::create(MoveBy::create(2, Vec2(dstPoint.x - offset,0.0f)), 0.35f) - ); + + child->setPosition(Vec2(dstPoint.x + offset, dstPoint.y)); + child->runAction(EaseElasticOut::create(MoveBy::create(2, Vec2(dstPoint.x - offset, 0.0f)), 0.35f)); i++; } - _disabledItem = item3; item3->retain(); - _disabledItem->setEnabled( false ); + _disabledItem = item3; + item3->retain(); + _disabledItem->setEnabled(false); addChild(menu); menu->setTag(100); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); menu->setScale(0); - menu->runAction(ScaleTo::create(1,1)); + menu->runAction(ScaleTo::create(1, 1)); } -bool MenuLayerMainMenu::touchBegan(Touch *touch, Event * event) +bool MenuLayerMainMenu::touchBegan(Touch* touch, Event* event) { return true; } -void MenuLayerMainMenu::touchEnded(Touch *touch, Event * event) -{ -} +void MenuLayerMainMenu::touchEnded(Touch* touch, Event* event) {} -void MenuLayerMainMenu::touchCancelled(Touch *touch, Event * event) -{ -} +void MenuLayerMainMenu::touchCancelled(Touch* touch, Event* event) {} -void MenuLayerMainMenu::touchMoved(Touch *touch, Event * event) -{ -} +void MenuLayerMainMenu::touchMoved(Touch* touch, Event* event) {} MenuLayerMainMenu::~MenuLayerMainMenu() { @@ -182,7 +178,7 @@ void MenuLayerMainMenu::allowTouches(float dt) log("TOUCHES ALLOWED AGAIN"); } -void MenuLayerMainMenu::menuCallbackDisabled(Ref* sender) +void MenuLayerMainMenu::menuCallbackDisabled(Ref* sender) { // hijack all touch events for 5 seconds _eventDispatcher->setPriority(_touchListener, -1); @@ -195,7 +191,7 @@ void MenuLayerMainMenu::menuCallback2(Ref* sender) static_cast(_parent)->switchTo(2, false); } -void MenuLayerMainMenu::menuCallbackBugsTest(Ref *pSender) +void MenuLayerMainMenu::menuCallbackBugsTest(Ref* pSender) { static_cast(_parent)->switchTo(4, false); } @@ -203,10 +199,10 @@ void MenuLayerMainMenu::menuCallbackBugsTest(Ref *pSender) void MenuLayerMainMenu::onQuit(Ref* sender) { //[[Director sharedDirector] end]; - //getCocosApp()->exit(); + // getCocosApp()->exit(); } -void MenuLayerMainMenu::menuMovingCallback(Ref *pSender) +void MenuLayerMainMenu::menuMovingCallback(Ref* pSender) { static_cast(_parent)->switchTo(5, false); } @@ -218,24 +214,26 @@ void MenuLayerMainMenu::menuMovingCallback(Ref *pSender) //------------------------------------------------------------------ MenuLayer2::MenuLayer2() { - for( int i=0;i < 2;i++ ) + for (int i = 0; i < 2; i++) { auto item1 = MenuItemImage::create(s_PlayNormal, s_PlaySelect, CC_CALLBACK_1(MenuLayer2::menuCallback, this)); - auto item2 = MenuItemImage::create(s_HighNormal, s_HighSelect, CC_CALLBACK_1(MenuLayer2::menuCallbackOpacity, this)); - auto item3 = MenuItemImage::create(s_AboutNormal, s_AboutSelect, CC_CALLBACK_1(MenuLayer2::menuCallbackAlign, this)); - - item1->setScaleX( 1.5f ); - item2->setScaleX( 0.5f ); - item3->setScaleX( 0.5f ); - + auto item2 = + MenuItemImage::create(s_HighNormal, s_HighSelect, CC_CALLBACK_1(MenuLayer2::menuCallbackOpacity, this)); + auto item3 = + MenuItemImage::create(s_AboutNormal, s_AboutSelect, CC_CALLBACK_1(MenuLayer2::menuCallbackAlign, this)); + + item1->setScaleX(1.5f); + item2->setScaleX(0.5f); + item3->setScaleX(0.5f); + auto menu = Menu::create(item1, item2, item3, nullptr); - + auto s = Director::getInstance()->getWinSize(); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); + + menu->setTag(kTagMenu); - menu->setTag( kTagMenu ); - - addChild(menu, 0, 100+i); + addChild(menu, 0, 100 + i); _centeredMenu = menu->getPosition(); } @@ -244,54 +242,51 @@ MenuLayer2::MenuLayer2() alignMenusH(); } -MenuLayer2::~MenuLayer2() -{ -} +MenuLayer2::~MenuLayer2() {} void MenuLayer2::alignMenusH() { - for(int i=0;i<2;i++) + for (int i = 0; i < 2; i++) { - auto menu = static_cast( getChildByTag(100+i) ); - menu->setPosition( _centeredMenu ); - if(i==0) + auto menu = static_cast(getChildByTag(100 + i)); + menu->setPosition(_centeredMenu); + if (i == 0) { // TIP: if no padding, padding = 5 - menu->alignItemsHorizontally(); + menu->alignItemsHorizontally(); auto p = menu->getPosition(); - menu->setPosition(p + Vec2(0.0f,30.0f)); - - } - else + menu->setPosition(p + Vec2(0.0f, 30.0f)); + } + else { // TIP: but padding is configurable menu->alignItemsHorizontallyWithPadding(40); auto p = menu->getPosition(); - menu->setPosition(p - Vec2(0.0f,30.0f)); - } + menu->setPosition(p - Vec2(0.0f, 30.0f)); + } } } void MenuLayer2::alignMenusV() { - for(int i=0;i<2;i++) + for (int i = 0; i < 2; i++) { - auto menu = static_cast( getChildByTag(100+i) ); - menu->setPosition( _centeredMenu ); - if(i==0) + auto menu = static_cast(getChildByTag(100 + i)); + menu->setPosition(_centeredMenu); + if (i == 0) { // TIP: if no padding, padding = 5 - menu->alignItemsVertically(); + menu->alignItemsVertically(); auto p = menu->getPosition(); - menu->setPosition(p + Vec2(100.0f,0.0f)); - } - else + menu->setPosition(p + Vec2(100.0f, 0.0f)); + } + else { // TIP: but padding is configurable - menu->alignItemsVerticallyWithPadding(40); + menu->alignItemsVerticallyWithPadding(40); auto p = menu->getPosition(); - menu->setPosition(p - Vec2(100.0f,0.0f)); - } + menu->setPosition(p - Vec2(100.0f, 0.0f)); + } } } @@ -302,22 +297,22 @@ void MenuLayer2::menuCallback(Ref* sender) void MenuLayer2::menuCallbackOpacity(Ref* sender) { - auto menu = static_cast( static_cast(sender)->getParent() ); + auto menu = static_cast(static_cast(sender)->getParent()); uint8_t opacity = menu->getOpacity(); - if( opacity == 128 ) + if (opacity == 128) menu->setOpacity(255); else - menu->setOpacity(128); + menu->setOpacity(128); } void MenuLayer2::menuCallbackAlign(Ref* sender) { - _alignedH = ! _alignedH; - - if( _alignedH ) + _alignedH = !_alignedH; + + if (_alignedH) alignMenusH(); else - alignMenusV(); + alignMenusV(); } //------------------------------------------------------------------ @@ -331,49 +326,47 @@ MenuLayer3::MenuLayer3() MenuItemFont::setFontSize(28); auto label = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "Enable AtlasItem"); - auto item1 = MenuItemLabel::create(label, [&](Ref *sender) { - //CCLOG("Label clicked. Toggling AtlasSprite"); - _disabledItem->setEnabled( ! _disabledItem->isEnabled() ); - _disabledItem->stopAllActions(); - }); - auto item2 = MenuItemFont::create("--- Go Back ---", [&](Ref *sender) { - static_cast(_parent)->switchTo(0, false); - }); - - auto spriteNormal = Sprite::create(s_MenuItem, Rect(0,23*2,115,23)); - auto spriteSelected = Sprite::create(s_MenuItem, Rect(0,23*1,115,23)); - auto spriteDisabled = Sprite::create(s_MenuItem, Rect(0,23*0,115,23)); - - - auto item3 = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, [](Ref *sender) { - log("sprite clicked!"); - }); - _disabledItem = item3; item3->retain(); - _disabledItem->setEnabled( false ); - - auto menu = Menu::create( item1, item2, item3, nullptr); - menu->setPosition( Vec2(0,0) ); + auto item1 = MenuItemLabel::create(label, [&](Ref* sender) { + // CCLOG("Label clicked. Toggling AtlasSprite"); + _disabledItem->setEnabled(!_disabledItem->isEnabled()); + _disabledItem->stopAllActions(); + }); + auto item2 = MenuItemFont::create("--- Go Back ---", + [&](Ref* sender) { static_cast(_parent)->switchTo(0, false); }); + + auto spriteNormal = Sprite::create(s_MenuItem, Rect(0, 23 * 2, 115, 23)); + auto spriteSelected = Sprite::create(s_MenuItem, Rect(0, 23 * 1, 115, 23)); + auto spriteDisabled = Sprite::create(s_MenuItem, Rect(0, 23 * 0, 115, 23)); + + auto item3 = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, + [](Ref* sender) { log("sprite clicked!"); }); + _disabledItem = item3; + item3->retain(); + _disabledItem->setEnabled(false); + + auto menu = Menu::create(item1, item2, item3, nullptr); + menu->setPosition(Vec2(0, 0)); auto s = Director::getInstance()->getWinSize(); - - item1->setPosition( Vec2(s.width/2 - 150, s.height/2) ); - item2->setPosition( Vec2(s.width/2 - 200, s.height/2) ); - item3->setPosition( Vec2(s.width/2, s.height/2 - 100) ); - - auto jump = JumpBy::create(3, Vec2(400,0), 50, 4); - item2->runAction( RepeatForever::create(Sequence::create( jump, jump->reverse(), nullptr))); + + item1->setPosition(Vec2(s.width / 2 - 150, s.height / 2)); + item2->setPosition(Vec2(s.width / 2 - 200, s.height / 2)); + item3->setPosition(Vec2(s.width / 2, s.height / 2 - 100)); + + auto jump = JumpBy::create(3, Vec2(400, 0), 50, 4); + item2->runAction(RepeatForever::create(Sequence::create(jump, jump->reverse(), nullptr))); auto spin1 = RotateBy::create(3, 360); auto spin2 = spin1->clone(); auto spin3 = spin1->clone(); - - item1->runAction( RepeatForever::create(spin1) ); - item2->runAction( RepeatForever::create(spin2) ); - item3->runAction( RepeatForever::create(spin3) ); - - addChild( menu ); - menu->setPosition(Vec2(0,0)); + item1->runAction(RepeatForever::create(spin1)); + item2->runAction(RepeatForever::create(spin2)); + item3->runAction(RepeatForever::create(spin3)); + + addChild(menu); + + menu->setPosition(Vec2(0, 0)); } MenuLayer3::~MenuLayer3() @@ -392,81 +385,68 @@ MenuLayer4::MenuLayer4() MenuItemFont::setFontSize(18); auto title1 = MenuItemFont::create("Sound"); title1->setEnabled(false); - MenuItemFont::setFontName( "fonts/Marker Felt.ttf" ); + MenuItemFont::setFontName("fonts/Marker Felt.ttf"); MenuItemFont::setFontSize(34); - auto item1 = MenuItemToggle::createWithCallback( CC_CALLBACK_1(MenuLayer4::menuCallback, this), - MenuItemFont::create( "On" ), - MenuItemFont::create( "Off"), - nullptr ); - - MenuItemFont::setFontName( "American Typewriter" ); + auto item1 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), + MenuItemFont::create("On"), MenuItemFont::create("Off"), nullptr); + + MenuItemFont::setFontName("American Typewriter"); MenuItemFont::setFontSize(18); - auto title2 = MenuItemFont::create( "Music" ); + auto title2 = MenuItemFont::create("Music"); title2->setEnabled(false); - MenuItemFont::setFontName( "fonts/Marker Felt.ttf" ); + MenuItemFont::setFontName("fonts/Marker Felt.ttf"); MenuItemFont::setFontSize(34); auto item2 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), - MenuItemFont::create( "On" ), - MenuItemFont::create( "Off"), - nullptr ); - - MenuItemFont::setFontName( "American Typewriter" ); + MenuItemFont::create("On"), MenuItemFont::create("Off"), nullptr); + + MenuItemFont::setFontName("American Typewriter"); MenuItemFont::setFontSize(18); - auto title3 = MenuItemFont::create( "Quality" ); - title3->setEnabled( false ); - MenuItemFont::setFontName( "fonts/Marker Felt.ttf" ); + auto title3 = MenuItemFont::create("Quality"); + title3->setEnabled(false); + MenuItemFont::setFontName("fonts/Marker Felt.ttf"); MenuItemFont::setFontSize(34); auto item3 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), - MenuItemFont::create( "High" ), - MenuItemFont::create( "Low" ), - nullptr ); - - MenuItemFont::setFontName( "American Typewriter" ); + MenuItemFont::create("High"), MenuItemFont::create("Low"), nullptr); + + MenuItemFont::setFontName("American Typewriter"); MenuItemFont::setFontSize(18); - auto title4 = MenuItemFont::create( "Orientation" ); + auto title4 = MenuItemFont::create("Orientation"); title4->setEnabled(false); - MenuItemFont::setFontName( "fonts/Marker Felt.ttf" ); + MenuItemFont::setFontName("fonts/Marker Felt.ttf"); MenuItemFont::setFontSize(34); auto item4 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), - MenuItemFont::create( "Off" ), - nullptr ); - + MenuItemFont::create("Off"), nullptr); + // TIP: you can manipulate the items like any other MutableArray - item4->getSubItems().pushBack( MenuItemFont::create( "33%" ) ); - item4->getSubItems().pushBack( MenuItemFont::create( "66%" ) ); - item4->getSubItems().pushBack( MenuItemFont::create( "100%" ) ); - + item4->getSubItems().pushBack(MenuItemFont::create("33%")); + item4->getSubItems().pushBack(MenuItemFont::create("66%")); + item4->getSubItems().pushBack(MenuItemFont::create("100%")); + // you can change the one of the items by doing this - item4->setSelectedIndex( 2 ); - - MenuItemFont::setFontName( "fonts/Marker Felt.ttf" ); - MenuItemFont::setFontSize( 34 ); - - auto label = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "go back"); - auto back = MenuItemLabel::create(label, CC_CALLBACK_1(MenuLayer4::backCallback, this) ); - - auto menu = Menu::create( - title1, title2, - item1, item2, - title3, title4, - item3, item4, - back, nullptr ); // 9 items. - + item4->setSelectedIndex(2); + + MenuItemFont::setFontName("fonts/Marker Felt.ttf"); + MenuItemFont::setFontSize(34); + + auto label = Label::createWithBMFont("fonts/bitmapFontTest3.fnt", "go back"); + auto back = MenuItemLabel::create(label, CC_CALLBACK_1(MenuLayer4::backCallback, this)); + + auto menu = Menu::create(title1, title2, item1, item2, title3, title4, item3, item4, back, nullptr); // 9 items. + menu->alignItemsInColumns(2, 2, 2, 2, 1, NULL); - - addChild( menu ); + + addChild(menu); auto s = Director::getInstance()->getWinSize(); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); } -MenuLayer4::~MenuLayer4() -{ -} +MenuLayer4::~MenuLayer4() {} void MenuLayer4::menuCallback(Ref* sender) { - //CCLOG("selected item: %x index:%d", dynamic_cast(sender)->selectedItem(), dynamic_cast(sender)->selectedIndex() ); + // CCLOG("selected item: %x index:%d", dynamic_cast(sender)->selectedItem(), + // dynamic_cast(sender)->selectedIndex() ); } void MenuLayer4::backCallback(Ref* sender) @@ -477,37 +457,37 @@ void MenuLayer4::backCallback(Ref* sender) // BugsTest BugsTest::BugsTest() { - auto issue1410 = MenuItemFont::create("Issue 1410", CC_CALLBACK_1(BugsTest::issue1410MenuCallback, this)); + auto issue1410 = MenuItemFont::create("Issue 1410", CC_CALLBACK_1(BugsTest::issue1410MenuCallback, this)); auto issue1410_2 = MenuItemFont::create("Issue 1410 #2", CC_CALLBACK_1(BugsTest::issue1410v2MenuCallback, this)); - auto back = MenuItemFont::create("Back", CC_CALLBACK_1(BugsTest::backMenuCallback, this)); - + auto back = MenuItemFont::create("Back", CC_CALLBACK_1(BugsTest::backMenuCallback, this)); + auto menu = Menu::create(issue1410, issue1410_2, back, nullptr); addChild(menu); menu->alignItemsVertically(); - + auto s = Director::getInstance()->getWinSize(); - menu->setPosition(Vec2(s.width/2, s.height/2)); + menu->setPosition(Vec2(s.width / 2, s.height / 2)); } -void BugsTest::issue1410MenuCallback(Ref *sender) +void BugsTest::issue1410MenuCallback(Ref* sender) { - auto menu = static_cast( static_cast(sender)->getParent() ); + auto menu = static_cast(static_cast(sender)->getParent()); menu->setEnabled(false); menu->setEnabled(true); - + log("NO CRASHES"); } -void BugsTest::issue1410v2MenuCallback(cocos2d::Ref *pSender) +void BugsTest::issue1410v2MenuCallback(cocos2d::Ref* pSender) { - auto menu = static_cast( static_cast(pSender)->getParent() ); + auto menu = static_cast(static_cast(pSender)->getParent()); menu->setEnabled(true); menu->setEnabled(false); - + log("NO CRASHES. AND MENU SHOULD STOP WORKING"); } -void BugsTest::backMenuCallback(cocos2d::Ref *pSender) +void BugsTest::backMenuCallback(cocos2d::Ref* pSender) { static_cast(_parent)->switchTo(0, false); } @@ -515,34 +495,33 @@ void BugsTest::backMenuCallback(cocos2d::Ref *pSender) RemoveMenuItemWhenMove::RemoveMenuItemWhenMove() { auto s = Director::getInstance()->getWinSize(); - + auto label = Label::createWithTTF("click item and move, should not crash", "fonts/arial.ttf", 20); - label->setPosition(Vec2(s.width/2, s.height - 30)); + label->setPosition(Vec2(s.width / 2, s.height - 30)); addChild(label); - + item = MenuItemFont::create("item 1"); item->retain(); - + auto back = MenuItemFont::create("go back", CC_CALLBACK_1(RemoveMenuItemWhenMove::goBack, this)); - + auto menu = Menu::create(item, back, nullptr); addChild(menu); menu->alignItemsVertically(); - - menu->setPosition(Vec2(s.width/2, s.height/2)); - + + menu->setPosition(Vec2(s.width / 2, s.height / 2)); + // Register Touch Event _touchListener = EventListenerTouchOneByOne::create(); _touchListener->setSwallowTouches(false); - + _touchListener->onTouchBegan = CC_CALLBACK_2(RemoveMenuItemWhenMove::onTouchBegan, this); _touchListener->onTouchMoved = CC_CALLBACK_2(RemoveMenuItemWhenMove::onTouchMoved, this); - + _eventDispatcher->addEventListenerWithFixedPriority(_touchListener, -129); - } -void RemoveMenuItemWhenMove::goBack(Ref *pSender) +void RemoveMenuItemWhenMove::goBack(Ref* pSender) { static_cast(_parent)->switchTo(0, false); } @@ -553,12 +532,12 @@ RemoveMenuItemWhenMove::~RemoveMenuItemWhenMove() CC_SAFE_RELEASE(item); } -bool RemoveMenuItemWhenMove::onTouchBegan(Touch *touch, Event *event) +bool RemoveMenuItemWhenMove::onTouchBegan(Touch* touch, Event* event) { return true; } -void RemoveMenuItemWhenMove::onTouchMoved(Touch *touch, Event *event) +void RemoveMenuItemWhenMove::onTouchMoved(Touch* touch, Event* event) { if (item) { diff --git a/tests/cpp-tests/Classes/MenuTest/MenuTest.h b/tests/cpp-tests/Classes/MenuTest/MenuTest.h index 7c6f82c517da..cd505ef4be99 100644 --- a/tests/cpp-tests/Classes/MenuTest/MenuTest.h +++ b/tests/cpp-tests/Classes/MenuTest/MenuTest.h @@ -43,7 +43,7 @@ class MenuTest : public TestCase class MenuLayerMainMenu : public cocos2d::Layer { protected: - cocos2d::MenuItem* _disabledItem; + cocos2d::MenuItem* _disabledItem; cocos2d::EventListenerTouchOneByOne* _touchListener; public: @@ -66,14 +66,14 @@ class MenuLayerMainMenu : public cocos2d::Layer void onQuit(cocos2d::Ref* sender); void menuMovingCallback(cocos2d::Ref* pSender); - //CREATE_NODE(MenuLayer1); + // CREATE_NODE(MenuLayer1); }; class MenuLayer2 : public cocos2d::Layer { protected: - cocos2d::Vec2 _centeredMenu; - bool _alignedH; + cocos2d::Vec2 _centeredMenu; + bool _alignedH; void alignMenusH(); void alignMenusV(); @@ -86,13 +86,13 @@ class MenuLayer2 : public cocos2d::Layer void menuCallbackOpacity(cocos2d::Ref* sender); void menuCallbackAlign(cocos2d::Ref* sender); - //CREATE_NODE(MenuLayer2); + // CREATE_NODE(MenuLayer2); }; class MenuLayer3 : public cocos2d::Layer { protected: - cocos2d::MenuItem* _disabledItem; + cocos2d::MenuItem* _disabledItem; public: MenuLayer3(); @@ -113,7 +113,7 @@ class BugsTest : public cocos2d::Layer { public: BugsTest(); - + void issue1410MenuCallback(cocos2d::Ref* pSender); void issue1410v2MenuCallback(cocos2d::Ref* pSender); void backMenuCallback(cocos2d::Ref* pSender); @@ -126,11 +126,11 @@ class RemoveMenuItemWhenMove : public cocos2d::Layer ~RemoveMenuItemWhenMove(); bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event); void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event); - + void goBack(cocos2d::Ref* pSender); - + private: - cocos2d::MenuItemFont *item; + cocos2d::MenuItemFont* item; cocos2d::EventListenerTouchOneByOne* _touchListener; }; diff --git a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp index b016c17898ac..24e21b1f66bf 100644 --- a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp +++ b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,10 +27,11 @@ USING_NS_CC; -enum { - kTagLabel = 1, - kTagSprite1 = 2, - kTagSprite2 = 3, +enum +{ + kTagLabel = 1, + kTagSprite1 = 2, + kTagSprite2 = 3, }; MotionStreakTests::MotionStreakTests() @@ -52,46 +53,41 @@ void MotionStreakTest1::onEnter() MotionStreakTest::onEnter(); auto s = Director::getInstance()->getWinSize(); - + // the root object just rotates around _root = Sprite::create(s_pathR1); addChild(_root, 1); - _root->setPosition(Vec2(s.width/2, s.height/2)); - + _root->setPosition(Vec2(s.width / 2, s.height / 2)); + // the target object is offset from root, and the streak is moved to follow it _target = Sprite::create(s_pathR1); _root->addChild(_target); - _target->setPosition(Vec2(s.width/4, 0.0f)); + _target->setPosition(Vec2(s.width / 4, 0.0f)); // create the streak object and add it to the scene _streak = MotionStreak::create(2, 3, 32, Color3B::GREEN, s_streak); addChild(_streak); // schedule an update on each frame so we can synchronize the streak with the target schedule(CC_SCHEDULE_SELECTOR(MotionStreakTest1::onUpdate)); - + auto a1 = RotateBy::create(2, 360); auto action1 = RepeatForever::create(a1); - auto motion = MoveBy::create(2, Vec2(100,0) ); - _root->runAction( RepeatForever::create(Sequence::create(motion, motion->reverse(), nullptr) ) ); - _root->runAction( action1 ); + auto motion = MoveBy::create(2, Vec2(100, 0)); + _root->runAction(RepeatForever::create(Sequence::create(motion, motion->reverse(), nullptr))); + _root->runAction(action1); auto colorAction = RepeatForever::create(Sequence::create( - TintTo::create(0.2f, 255, 0, 0), - TintTo::create(0.2f, 0, 255, 0), - TintTo::create(0.2f, 0, 0, 255), - TintTo::create(0.2f, 0, 255, 255), - TintTo::create(0.2f, 255, 255, 0), - TintTo::create(0.2f, 255, 0, 255), - TintTo::create(0.2f, 255, 255, 255), - nullptr)); + TintTo::create(0.2f, 255, 0, 0), TintTo::create(0.2f, 0, 255, 0), TintTo::create(0.2f, 0, 0, 255), + TintTo::create(0.2f, 0, 255, 255), TintTo::create(0.2f, 255, 255, 0), TintTo::create(0.2f, 255, 0, 255), + TintTo::create(0.2f, 255, 255, 255), nullptr)); _streak->runAction(colorAction); } void MotionStreakTest1::onUpdate(float delta) { - _streak->setPosition( _target->convertToWorldSpace(Vec2::ZERO) ); + _streak->setPosition(_target->convertToWorldSpace(Vec2::ZERO)); } std::string MotionStreakTest1::title() const @@ -109,24 +105,24 @@ void MotionStreakTest2::onEnter() { MotionStreakTest::onEnter(); - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesMoved = CC_CALLBACK_2(MotionStreakTest2::onTouchesMoved, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + auto s = Director::getInstance()->getWinSize(); - + // create the streak object and add it to the scene - _streak = MotionStreak::create(3, 3, 64, Color3B::WHITE, s_streak ); + _streak = MotionStreak::create(3, 3, 64, Color3B::WHITE, s_streak); addChild(_streak); - - _streak->setPosition( Vec2(s.width/2, s.height/2) ); + + _streak->setPosition(Vec2(s.width / 2, s.height / 2)); } void MotionStreakTest2::onTouchesMoved(const std::vector& touches, Event* event) { auto touchLocation = touches[0]->getLocation(); - - _streak->setPosition( touchLocation ); + + _streak->setPosition(touchLocation); } std::string MotionStreakTest2::title() const @@ -148,26 +144,25 @@ std::string MotionStreakTest2::subtitle() const void Issue1358::onEnter() { MotionStreakTest::onEnter(); - + // ask director the the window size auto size = Director::getInstance()->getWinSize(); - + _streak = MotionStreak::create(2.0f, 1.0f, 50.0f, Color3B(255, 255, 0), "Images/Icon.png"); addChild(_streak); - - - _center = Vec2(size.width/2, size.height/2); - _radius = size.width/3; - _angle = 0.0f; - + + _center = Vec2(size.width / 2, size.height / 2); + _radius = size.width / 3; + _angle = 0.0f; + schedule(CC_SCHEDULE_SELECTOR(Issue1358::update), 0); } void Issue1358::update(float dt) { _angle += 1.0f; - _streak->setPosition(Vec2(_center.x + cosf(_angle/180 * M_PI)*_radius, - _center.y + sinf(_angle/ 180 * M_PI)*_radius)); + _streak->setPosition( + Vec2(_center.x + cosf(_angle / 180 * M_PI) * _radius, _center.y + sinf(_angle / 180 * M_PI) * _radius)); } std::string Issue1358::title() const @@ -193,15 +188,14 @@ void Issue12226::onEnter() // ask director the the window size auto size = Director::getInstance()->getWinSize(); - auto radius = size.width/3; + auto radius = size.width / 3; auto outer = Sprite::create("Images/grossini.png"); - outer->setPosition(size/2); + outer->setPosition(size / 2); addChild(outer); - _streak = MotionStreak::create(1.0f, 3, radius * 1.5f, Color3B(0xA0, 0xA0, 0xA0), "ccb/particle-smoke.png"); -// motionStreak->setOpacity(0x70); + // motionStreak->setOpacity(0x70); _streak->setPosition(outer->getPosition()); this->addChild(_streak, outer->getLocalZOrder() - 1); @@ -211,19 +205,18 @@ void Issue12226::onEnter() const uint32_t length = (radius * 0.95); std::function updateMotionStreak = [=](float dt) { - - Vec2 position = Vec2(outer->getPositionX() + length * cosf(-1 * CC_DEGREES_TO_RADIANS(outer->getRotation() + 90.0f)), - outer->getPositionY() + length * sinf(-1 * CC_DEGREES_TO_RADIANS(outer->getRotation() + 90.0f))); + Vec2 position = + Vec2(outer->getPositionX() + length * cosf(-1 * CC_DEGREES_TO_RADIANS(outer->getRotation() + 90.0f)), + outer->getPositionY() + length * sinf(-1 * CC_DEGREES_TO_RADIANS(outer->getRotation() + 90.0f))); _streak->setPosition(position); }; outer->schedule(updateMotionStreak, 1 / 240.0f, CC_REPEAT_FOREVER, 0, "motion1scheduler"); - auto rot = RotateBy::create(2, 360); + auto rot = RotateBy::create(2, 360); auto forever = RepeatForever::create(rot); outer->runAction(forever); - } std::string Issue12226::title() const @@ -242,13 +235,9 @@ std::string Issue12226::subtitle() const // //------------------------------------------------------------------ -MotionStreakTest::MotionStreakTest() -{ -} +MotionStreakTest::MotionStreakTest() {} -MotionStreakTest::~MotionStreakTest() -{ -} +MotionStreakTest::~MotionStreakTest() {} std::string MotionStreakTest::title() const { @@ -266,19 +255,18 @@ void MotionStreakTest::onEnter() auto s = Director::getInstance()->getWinSize(); - auto itemMode = MenuItemToggle::createWithCallback( CC_CALLBACK_1(MotionStreakTest::modeCallback, this), - MenuItemFont::create("Use High Quality Mode"), - MenuItemFont::create("Use Fast Mode"), - nullptr); + auto itemMode = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MotionStreakTest::modeCallback, this), + MenuItemFont::create("Use High Quality Mode"), + MenuItemFont::create("Use Fast Mode"), nullptr); auto menuMode = Menu::create(itemMode, nullptr); addChild(menuMode); - menuMode->setPosition(Vec2(s.width/2, s.height/4)); + menuMode->setPosition(Vec2(s.width / 2, s.height / 4)); } -void MotionStreakTest::modeCallback(Ref *pSender) +void MotionStreakTest::modeCallback(Ref* pSender) { bool fastMode = _streak->isFastMode(); - _streak->setFastMode(! fastMode); + _streak->setFastMode(!fastMode); } diff --git a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.h b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.h index aa6210bfd6fe..ae0683a68256 100644 --- a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.h +++ b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,7 +27,6 @@ #include "../BaseTest.h" - DEFINE_TEST_SUITE(MotionStreakTests); class MotionStreakTest : public TestCase @@ -41,6 +40,7 @@ class MotionStreakTest : public TestCase virtual void onEnter() override; void modeCallback(cocos2d::Ref* sender); + protected: cocos2d::MotionStreak* _streak; }; @@ -48,8 +48,8 @@ class MotionStreakTest : public TestCase class MotionStreakTest1 : public MotionStreakTest { protected: - cocos2d::Node* _root; - cocos2d::Node* _target; + cocos2d::Node* _root; + cocos2d::Node* _target; public: CREATE_FUNC(MotionStreakTest1); @@ -61,8 +61,8 @@ class MotionStreakTest1 : public MotionStreakTest class MotionStreakTest2 : public MotionStreakTest { protected: - cocos2d::Node* _root; - cocos2d::Node* _target; + cocos2d::Node* _root; + cocos2d::Node* _target; public: CREATE_FUNC(MotionStreakTest2); @@ -81,6 +81,7 @@ class Issue1358 : public MotionStreakTest virtual std::string subtitle() const override; virtual void onEnter() override; virtual void update(float dt) override; + private: cocos2d::Vec2 _center; float _radius; @@ -97,5 +98,4 @@ class Issue12226 : public MotionStreakTest virtual void onEnter() override; }; - #endif diff --git a/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.cpp b/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.cpp index 087ffe8f07a8..d3c6c4273bc3 100644 --- a/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.cpp +++ b/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,29 +31,24 @@ MultiTouchTests::MultiTouchTests() ADD_TEST_CASE(MultiTouchTest); } -static const Color3B* s_TouchColors[5] = { - &Color3B::YELLOW, - &Color3B::BLUE, - &Color3B::GREEN, - &Color3B::RED, - &Color3B::MAGENTA -}; +static const Color3B* s_TouchColors[5] = {&Color3B::YELLOW, &Color3B::BLUE, &Color3B::GREEN, &Color3B::RED, + &Color3B::MAGENTA}; class TouchPoint : public Node { public: - TouchPoint(const Vec2 &touchPoint, const Color3B &touchColor) + TouchPoint(const Vec2& touchPoint, const Color3B& touchColor) { DrawNode* drawNode = DrawNode::create(); - auto s = Director::getInstance()->getWinSize(); - Color4F color(touchColor.r/255.0f, touchColor.g/255.0f, touchColor.b/255.0f, 1.0f); + auto s = Director::getInstance()->getWinSize(); + Color4F color(touchColor.r / 255.0f, touchColor.g / 255.0f, touchColor.b / 255.0f, 1.0f); drawNode->drawLine(Vec2(0.0f, touchPoint.y), Vec2(s.width, touchPoint.y), color); drawNode->drawLine(Vec2(touchPoint.x, 0.0f), Vec2(touchPoint.x, s.height), color); drawNode->drawDot(touchPoint, 3, color); addChild(drawNode); } - static TouchPoint* touchPointWithParent(Node* pParent, const Vec2 &touchPoint, const Color3B &touchColor) + static TouchPoint* touchPointWithParent(Node* pParent, const Vec2& touchPoint, const Color3B& touchColor) { auto pRet = new TouchPoint(touchPoint, touchColor); pRet->setContentSize(pParent->getContentSize()); @@ -67,16 +62,16 @@ bool MultiTouchTest::init() { if (TestCase::init()) { - auto listener = EventListenerTouchAllAtOnce::create(); + auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(MultiTouchTest::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(MultiTouchTest::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(MultiTouchTest::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + auto title = Label::createWithSystemFont("Please touch the screen!", "", 24); - title->setPosition(VisibleRect::top()+Vec2(0.0f, -40.0f)); + title->setPosition(VisibleRect::top() + Vec2(0.0f, -40.0f)); addChild(title); - + return true; } return false; @@ -84,48 +79,48 @@ bool MultiTouchTest::init() static Map s_map; -void MultiTouchTest::onTouchesBegan(const std::vector& touches, Event *event) +void MultiTouchTest::onTouchesBegan(const std::vector& touches, Event* event) { - for ( auto &item: touches ) + for (auto& item : touches) { - auto touch = item; - auto location = touch->getLocation(); - auto touchPoint = TouchPoint::touchPointWithParent(this, location, *s_TouchColors[touch->getID()%5]); + auto touch = item; + auto location = touch->getLocation(); + auto touchPoint = TouchPoint::touchPointWithParent(this, location, *s_TouchColors[touch->getID() % 5]); addChild(touchPoint); s_map.insert(touch->getID(), touchPoint); } } -void MultiTouchTest::onTouchesMoved(const std::vector& touches, Event *event) +void MultiTouchTest::onTouchesMoved(const std::vector& touches, Event* event) { - for( auto &item: touches) + for (auto& item : touches) { - auto touch = item; - auto pTP = s_map.at(touch->getID()); + auto touch = item; + auto pTP = s_map.at(touch->getID()); auto location = touch->getLocation(); - + removeChild(pTP, true); s_map.erase(touch->getID()); - - auto touchPointNew = TouchPoint::touchPointWithParent(this, location, *s_TouchColors[touch->getID()%5]); + + auto touchPointNew = TouchPoint::touchPointWithParent(this, location, *s_TouchColors[touch->getID() % 5]); addChild(touchPointNew); s_map.insert(touch->getID(), touchPointNew); } } -void MultiTouchTest::onTouchesEnded(const std::vector& touches, Event *event) +void MultiTouchTest::onTouchesEnded(const std::vector& touches, Event* event) { - for ( auto &item: touches ) + for (auto& item : touches) { auto touch = item; - auto pTP = s_map.at(touch->getID()); + auto pTP = s_map.at(touch->getID()); removeChild(pTP, true); s_map.erase(touch->getID()); } } -void MultiTouchTest::onTouchesCancelled(const std::vector& touches, Event *event) +void MultiTouchTest::onTouchesCancelled(const std::vector& touches, Event* event) { onTouchesEnded(touches, event); } diff --git a/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.h b/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.h index 94f6c65bd50a..f16ec67e5a7f 100644 --- a/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.h +++ b/tests/cpp-tests/Classes/MultiTouchTest/MultiTouchTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -36,10 +36,10 @@ class MultiTouchTest : public TestCase virtual bool init() override; - void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); - void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); - void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); - void onTouchesCancelled(const std::vector& touches, cocos2d::Event *event); + void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); + void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); + void onTouchesEnded(const std::vector& touches, cocos2d::Event* event); + void onTouchesCancelled(const std::vector& touches, cocos2d::Event* event); }; #endif /* __MULTITOUCHTEST_H__ */ diff --git a/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.cpp b/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.cpp index 6e9fa8c7f39b..7bce80fd971d 100644 --- a/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.cpp +++ b/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.cpp @@ -2,19 +2,19 @@ Copyright (c) 2012 cocos2d-x.org Copyright (c) 2015-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -40,7 +40,7 @@ struct AgentUserData NavMeshTests::NavMeshTests() { -#if ( CC_USE_NAVMESH == 0 ) || ( CC_USE_PHYSICS == 0 ) +#if (CC_USE_NAVMESH == 0) || (CC_USE_PHYSICS == 0) ADD_TEST_CASE(NavMeshDisabled); #else ADD_TEST_CASE(NavMeshBasicTestDemo); @@ -48,12 +48,13 @@ NavMeshTests::NavMeshTests() #endif }; -#if ( CC_USE_NAVMESH == 0 ) || ( CC_USE_PHYSICS == 0 ) +#if (CC_USE_NAVMESH == 0) || (CC_USE_PHYSICS == 0) void NavMeshDisabled::onEnter() { TTFConfig ttfConfig("fonts/arial.ttf", 16); - auto label = Label::createWithTTF(ttfConfig, "Should define CC_USE_NAVMESH & CC_USE_PHYSICS\n to run this test case"); - + auto label = + Label::createWithTTF(ttfConfig, "Should define CC_USE_NAVMESH & CC_USE_PHYSICS\n to run this test case"); + auto size = Director::getInstance()->getWinSize(); label->setPosition(Vec2(size.width / 2, size.height / 2)); @@ -63,26 +64,24 @@ void NavMeshDisabled::onEnter() } #else -NavMeshBaseTestDemo::NavMeshBaseTestDemo() - : _camera(nullptr) - , _needMoveAgents(false) -{ - -} +NavMeshBaseTestDemo::NavMeshBaseTestDemo() : _camera(nullptr), _needMoveAgents(false) {} NavMeshBaseTestDemo::~NavMeshBaseTestDemo() { - for (auto iter : _agents){ - AgentUserData *data = static_cast(iter.first->getUserData()); + for (auto iter : _agents) + { + AgentUserData* data = static_cast(iter.first->getUserData()); delete data; } } -bool NavMeshBaseTestDemo::init() +bool NavMeshBaseTestDemo::init() { - if (!TestCase::init()) return false; + if (!TestCase::init()) + return false; - if (initPhysicsWorld()) { + if (initPhysicsWorld()) + { _angle = 0.0f; @@ -103,17 +102,16 @@ bool NavMeshBaseTestDemo::init() scheduleUpdate(); } - return true; } -void NavMeshBaseTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) +void NavMeshBaseTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event* event) { _needMoveAgents = true; touchesBegan(touches, event); } -void NavMeshBaseTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +void NavMeshBaseTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event* event) { if (touches.size() && _camera) { @@ -132,7 +130,7 @@ void NavMeshBaseTestDemo::onTouchesMoved(const std::vector& tou touchesMoved(touches, event); } -void NavMeshBaseTestDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event *event) +void NavMeshBaseTestDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event* event) { touchesEnded(touches, event); } @@ -140,7 +138,7 @@ void NavMeshBaseTestDemo::onTouchesEnded(const std::vector& tou void NavMeshBaseTestDemo::initScene() { getPhysics3DWorld()->setDebugDrawEnable(false); - //create mesh + // create mesh std::vector trianglesList = Bundle3D::getTrianglesList("NavMesh/scene.obj"); Physics3DRigidBodyDes rbDes; @@ -159,7 +157,6 @@ void NavMeshBaseTestDemo::initScene() setNavMesh(navMesh); setNavMeshDebugCamera(_camera); - auto ambientLight = AmbientLight::create(Color3B(64, 64, 64)); ambientLight->setCameraMask((unsigned short)CameraFlag::USER1); this->addChild(ambientLight); @@ -169,7 +166,7 @@ void NavMeshBaseTestDemo::initScene() this->addChild(dirLight); } -void NavMeshBaseTestDemo::createAgent(const Vec3 &pos) +void NavMeshBaseTestDemo::createAgent(const Vec3& pos) { std::string filePath = "Sprite3DTest/girl.c3b"; NavMeshAgentParam param; @@ -179,7 +176,7 @@ void NavMeshBaseTestDemo::createAgent(const Vec3 &pos) auto agent = NavMeshAgent::create(param); auto agentNode = Sprite3D::create(filePath); agent->setOrientationRefAxes(Vec3(-1.0f, 0.0f, 1.0f)); - AgentUserData *data = new AgentUserData{ 0.0f }; + AgentUserData* data = new AgentUserData{0.0f}; agent->setUserData(data); agentNode->setScale(0.05f); agentNode->addComponent(agent); @@ -190,10 +187,10 @@ void NavMeshBaseTestDemo::createAgent(const Vec3 &pos) node->setCameraMask((unsigned short)CameraFlag::USER1); this->addChild(node); - auto animation = Animation3D::create(filePath); auto animate = Animate3D::create(animation); - if (animate){ + if (animate) + { agentNode->runAction(RepeatForever::create(animate)); animate->setSpeed(0); } @@ -201,7 +198,7 @@ void NavMeshBaseTestDemo::createAgent(const Vec3 &pos) _agents.push_back(std::make_pair(agent, animate)); } -void NavMeshBaseTestDemo::createObstacle(const Vec3 &pos) +void NavMeshBaseTestDemo::createObstacle(const Vec3& pos) { auto obstacle = NavMeshObstacle::create(2.0f, 8.0f); auto obstacleNode = Sprite3D::create("Sprite3DTest/cylinder.c3b"); @@ -223,17 +220,20 @@ Vec3 jump(const Vec3* pV1, const Vec3* pV2, float height, float t) return pOut; } -void NavMeshBaseTestDemo::moveAgents(const cocos2d::Vec3 &des) +void NavMeshBaseTestDemo::moveAgents(const cocos2d::Vec3& des) { - for (auto iter : _agents){ - NavMeshAgent::MoveCallback callback = [](NavMeshAgent *agent, float totalTimeAfterMove){ - AgentUserData *data = static_cast(agent->getUserData()); - if (agent->isOnOffMeshLink()){ + for (auto iter : _agents) + { + NavMeshAgent::MoveCallback callback = [](NavMeshAgent* agent, float totalTimeAfterMove) { + AgentUserData* data = static_cast(agent->getUserData()); + if (agent->isOnOffMeshLink()) + { agent->setAutoTraverseOffMeshLink(false); agent->setAutoOrientation(false); OffMeshLinkData linkdata = agent->getCurrentOffMeshLinkData(); - agent->getOwner()->setPosition3D(jump(&linkdata.startPosition, &linkdata.endPosition, 10.0f, data->time)); + agent->getOwner()->setPosition3D( + jump(&linkdata.startPosition, &linkdata.endPosition, 10.0f, data->time)); Vec3 dir = linkdata.endPosition - linkdata.startPosition; dir.y = 0.0f; dir.normalize(); @@ -244,7 +244,8 @@ void NavMeshBaseTestDemo::moveAgents(const cocos2d::Vec3 &des) float angle = Vec3::dot(refAxes, dir); agent->getOwner()->setRotationQuat(Quaternion(axes, acosf(angle))); data->time += 0.01f; - if (1.0f < data->time){ + if (1.0f < data->time) + { agent->completeOffMeshLink(); agent->setAutoOrientation(true); data->time = 0.0f; @@ -257,20 +258,16 @@ void NavMeshBaseTestDemo::moveAgents(const cocos2d::Vec3 &des) void NavMeshBaseTestDemo::update(float delta) { - for (auto iter : _agents){ + for (auto iter : _agents) + { float speed = iter.first->getCurrentVelocity().length() * 0.2f; iter.second->setSpeed(0.0f < speed ? speed : 0.0f); } } -NavMeshBasicTestDemo::NavMeshBasicTestDemo() -{ - -} +NavMeshBasicTestDemo::NavMeshBasicTestDemo() {} -NavMeshBasicTestDemo::~NavMeshBasicTestDemo() -{ -} +NavMeshBasicTestDemo::~NavMeshBasicTestDemo() {} std::string NavMeshBasicTestDemo::title() const { @@ -282,10 +279,12 @@ std::string NavMeshBasicTestDemo::subtitle() const return "Basic Test"; } -void NavMeshBasicTestDemo::touchesEnded(const std::vector& touches, cocos2d::Event *event) +void NavMeshBasicTestDemo::touchesEnded(const std::vector& touches, cocos2d::Event* event) { - if (!_needMoveAgents) return; - if (!touches.empty()){ + if (!_needMoveAgents) + return; + if (!touches.empty()) + { auto touch = touches[0]; auto location = touch->getLocationInView(); Vec3 nearP(location.x, location.y, 0.0f), farP(location.x, location.y, 1.0f); @@ -302,18 +301,21 @@ void NavMeshBasicTestDemo::touchesEnded(const std::vector& touc bool NavMeshBasicTestDemo::init() { - if (!NavMeshBaseTestDemo::init()) return false; + if (!NavMeshBaseTestDemo::init()) + return false; TTFConfig ttfConfig("fonts/arial.ttf", 15); _debugLabel = Label::createWithTTF(ttfConfig, "Debug Draw ON"); _debugLabel->retain(); - auto menuItem1 = MenuItemLabel::create(_debugLabel, [=](Ref*){ + auto menuItem1 = MenuItemLabel::create(_debugLabel, [=](Ref*) { bool enabledDebug = !getNavMesh()->isDebugDrawEnabled(); getNavMesh()->setDebugDrawEnable(enabledDebug); - if (enabledDebug){ + if (enabledDebug) + { _debugLabel->setString("Debug Draw ON"); } - else{ + else + { _debugLabel->setString("Debug Draw OFF"); } }); @@ -329,25 +331,20 @@ bool NavMeshBasicTestDemo::init() void NavMeshBasicTestDemo::onEnter() { NavMeshBaseTestDemo::onEnter(); - + Physics3DWorld::HitResult result; getPhysics3DWorld()->rayCast(Vec3(0.0f, 50.0f, 0.0f), Vec3(0.0f, -50.0f, 0.0f), &result); createAgent(result.hitPosition); } -NavMeshAdvanceTestDemo::NavMeshAdvanceTestDemo() -{ - -} - -NavMeshAdvanceTestDemo::~NavMeshAdvanceTestDemo() -{ +NavMeshAdvanceTestDemo::NavMeshAdvanceTestDemo() {} -} +NavMeshAdvanceTestDemo::~NavMeshAdvanceTestDemo() {} bool NavMeshAdvanceTestDemo::init() { - if (!NavMeshBaseTestDemo::init()) return false; + if (!NavMeshBaseTestDemo::init()) + return false; TTFConfig ttfConfig("fonts/arial.ttf", 15); _obstacleLabel = Label::createWithTTF(ttfConfig, "Create Obstacle"); @@ -357,7 +354,7 @@ bool NavMeshAdvanceTestDemo::init() _debugLabel = Label::createWithTTF(ttfConfig, "Debug Draw ON"); _debugLabel->retain(); - auto menuItem0 = MenuItemLabel::create(_obstacleLabel, [=](Ref*){ + auto menuItem0 = MenuItemLabel::create(_obstacleLabel, [=](Ref*) { float x = cocos2d::random(-50.0f, 50.0f); float z = cocos2d::random(-50.0f, 50.0f); Physics3DWorld::HitResult result; @@ -367,7 +364,7 @@ bool NavMeshAdvanceTestDemo::init() menuItem0->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); menuItem0->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 50)); - auto menuItem1 = MenuItemLabel::create(_agentLabel, [=](Ref*){ + auto menuItem1 = MenuItemLabel::create(_agentLabel, [=](Ref*) { float x = cocos2d::random(-50.0f, 50.0f); float z = cocos2d::random(-50.0f, 50.0f); Physics3DWorld::HitResult result; @@ -377,13 +374,15 @@ bool NavMeshAdvanceTestDemo::init() menuItem1->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); menuItem1->setPosition(Vec2(VisibleRect::left().x, VisibleRect::top().y - 100)); - auto menuItem2 = MenuItemLabel::create(_debugLabel, [=](Ref*){ + auto menuItem2 = MenuItemLabel::create(_debugLabel, [=](Ref*) { bool enabledDebug = !getNavMesh()->isDebugDrawEnabled(); getNavMesh()->setDebugDrawEnable(enabledDebug); - if (enabledDebug){ + if (enabledDebug) + { _debugLabel->setString("Debug Draw ON"); } - else{ + else + { _debugLabel->setString("Debug Draw OFF"); } }); @@ -393,14 +392,14 @@ bool NavMeshAdvanceTestDemo::init() auto menu = Menu::create(menuItem0, menuItem1, menuItem2, nullptr); menu->setPosition(Vec2::ZERO); addChild(menu); - + return true; } void NavMeshAdvanceTestDemo::onEnter() { NavMeshBaseTestDemo::onEnter(); - + Physics3DWorld::HitResult result; getPhysics3DWorld()->rayCast(Vec3(0.0f, 50.0f, 0.0f), Vec3(0.0f, -50.0f, 0.0f), &result); createAgent(result.hitPosition); @@ -416,10 +415,12 @@ std::string NavMeshAdvanceTestDemo::subtitle() const return "Advance Test"; } -void NavMeshAdvanceTestDemo::touchesEnded(const std::vector& touches, cocos2d::Event *event) +void NavMeshAdvanceTestDemo::touchesEnded(const std::vector& touches, cocos2d::Event* event) { - if (!_needMoveAgents) return; - if (!touches.empty()){ + if (!_needMoveAgents) + return; + if (!touches.empty()) + { auto touch = touches[0]; auto location = touch->getLocationInView(); Vec3 nearP(location.x, location.y, 0.0f), farP(location.x, location.y, 1.0f); diff --git a/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.h b/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.h index fc2d1a58ebe6..63e07ee041a7 100644 --- a/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.h +++ b/tests/cpp-tests/Classes/NavMeshTest/NavMeshTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ DEFINE_TEST_SUITE(NavMeshTests); -#if ( CC_USE_NAVMESH == 0 ) || ( CC_USE_PHYSICS == 0 ) +#if (CC_USE_NAVMESH == 0) || (CC_USE_PHYSICS == 0) class NavMeshDisabled : public TestCase { public: @@ -52,24 +52,23 @@ class NavMeshBaseTestDemo : public TestCase // overrides virtual bool init() override; virtual void update(float delta) override; - virtual void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); - virtual void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); - virtual void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); + virtual void onTouchesBegan(const std::vector& touches, cocos2d::Event* event); + virtual void onTouchesMoved(const std::vector& touches, cocos2d::Event* event); + virtual void onTouchesEnded(const std::vector& touches, cocos2d::Event* event); protected: - void initScene(); - void createAgent(const cocos2d::Vec3 &pos); - void createObstacle(const cocos2d::Vec3 &pos); - void moveAgents(const cocos2d::Vec3 &des); - virtual void touchesBegan(const std::vector& touches, cocos2d::Event *event){}; - virtual void touchesMoved(const std::vector& touches, cocos2d::Event *event){}; - virtual void touchesEnded(const std::vector& touches, cocos2d::Event *event){}; + void createAgent(const cocos2d::Vec3& pos); + void createObstacle(const cocos2d::Vec3& pos); + void moveAgents(const cocos2d::Vec3& des); + virtual void touchesBegan(const std::vector& touches, cocos2d::Event* event){}; + virtual void touchesMoved(const std::vector& touches, cocos2d::Event* event){}; + virtual void touchesEnded(const std::vector& touches, cocos2d::Event* event){}; protected: - cocos2d::Camera *_camera; + cocos2d::Camera* _camera; float _angle; - std::vector > _agents; + std::vector> _agents; bool _needMoveAgents; }; @@ -79,22 +78,21 @@ class NavMeshBasicTestDemo : public NavMeshBaseTestDemo CREATE_FUNC(NavMeshBasicTestDemo); NavMeshBasicTestDemo(); virtual ~NavMeshBasicTestDemo(); - + // overrides virtual bool init() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + virtual void onEnter() override; - -protected: - virtual void touchesBegan(const std::vector& touches, cocos2d::Event *event)override{}; - virtual void touchesMoved(const std::vector& touches, cocos2d::Event *event)override{}; - virtual void touchesEnded(const std::vector& touches, cocos2d::Event *event)override; +protected: + virtual void touchesBegan(const std::vector& touches, cocos2d::Event* event) override{}; + virtual void touchesMoved(const std::vector& touches, cocos2d::Event* event) override{}; + virtual void touchesEnded(const std::vector& touches, cocos2d::Event* event) override; protected: - cocos2d::Label *_debugLabel; + cocos2d::Label* _debugLabel; }; class NavMeshAdvanceTestDemo : public NavMeshBaseTestDemo @@ -108,19 +106,18 @@ class NavMeshAdvanceTestDemo : public NavMeshBaseTestDemo virtual bool init() override; virtual std::string title() const override; virtual std::string subtitle() const override; - + virtual void onEnter() override; protected: - - virtual void touchesBegan(const std::vector& touches, cocos2d::Event *event)override{}; - virtual void touchesMoved(const std::vector& touches, cocos2d::Event *event)override{}; - virtual void touchesEnded(const std::vector& touches, cocos2d::Event *event)override; + virtual void touchesBegan(const std::vector& touches, cocos2d::Event* event) override{}; + virtual void touchesMoved(const std::vector& touches, cocos2d::Event* event) override{}; + virtual void touchesEnded(const std::vector& touches, cocos2d::Event* event) override; protected: - cocos2d::Label *_obstacleLabel; - cocos2d::Label *_agentLabel; - cocos2d::Label *_debugLabel; + cocos2d::Label* _obstacleLabel; + cocos2d::Label* _agentLabel; + cocos2d::Label* _debugLabel; }; #endif diff --git a/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp b/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp index 36ad2e2dd571..8b63a52711ea 100644 --- a/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp +++ b/tests/cpp-tests/Classes/NetworkTest/DownloaderTest/DownloaderTest.cpp @@ -34,16 +34,13 @@ USING_NS_CC; -static const char* sURLList[] = -{ - "https://www.cocos2d-x.org/attachments/802/cocos2dx_landscape.png", - "https://cocos2d-x.org/images/logo.png", +static const char* sURLList[] = { + "https://www.cocos2d-x.org/attachments/802/cocos2dx_landscape.png", "https://cocos2d-x.org/images/logo.png", "https://www.cocos2d-x.org/attachments/1503/no_exist.txt", // try to download no exist file - "https://cdn-fastly.obsproject.com/downloads/OBS-Studio-27.0.1-Full-Installer-x64.exe" // "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1a.zip", + "https://cdn-fastly.obsproject.com/downloads/OBS-Studio-27.0.1-Full-Installer-x64.exe" // "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1a.zip", }; -const static int sListSize = (sizeof(sURLList)/sizeof(sURLList[0])); -static const char* sNameList[sListSize] = -{ +const static int sListSize = (sizeof(sURLList) / sizeof(sURLList[0])); +static const char* sNameList[sListSize] = { "cocos2dx_landscape.png", "logo.png", "inexist file", @@ -53,50 +50,47 @@ static const char* sNameList[sListSize] = struct DownloaderTest : public TestCase { CREATE_FUNC(DownloaderTest); - + virtual std::string title() const override { return "Downloader Test"; } - + std::unique_ptr downloader; - - DownloaderTest() + + DownloaderTest() { downloader.reset(new network::Downloader()); } + + enum { - downloader.reset(new network::Downloader()); - } - - enum { TAG_TITLE = 1, TAG_BUTTON, TAG_PROGRESS_BAR, TAG_STATUS, TAG_SPRITE, }; - - Node* createDownloadView(const char *name, const cocos2d::ui::Button::ccWidgetClickCallback &callback) + + Node* createDownloadView(const char* name, const cocos2d::ui::Button::ccWidgetClickCallback& callback) { Size viewSize(220, 120); float margin = 5; - + // create background auto bg = ui::Scale9Sprite::createWithSpriteFrameName("button_actived.png"); bg->setContentSize(viewSize); - + // add a title on the top - auto title = Label::createWithTTF(name,"fonts/arial.ttf",16); + auto title = Label::createWithTTF(name, "fonts/arial.ttf", 16); title->setTag(TAG_TITLE); title->setAnchorPoint(Vec2(0.5f, 1.0f)); title->setPosition(viewSize.width / 2, viewSize.height - margin); bg->addChild(title, 10); - + // add a button on the bottom - auto btn = ui::Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + auto btn = ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); btn->setTag(TAG_BUTTON); btn->setTitleText("Download"); btn->setAnchorPoint(Vec2(0.5f, 0.0f)); btn->setPosition(Vec2(viewSize.width / 2, margin)); btn->addClickEventListener(callback); bg->addChild(btn, 10); - + // add a progress bar auto bar = ui::LoadingBar::create("ccs-res/cocosui/sliderProgress.png"); bar->setTag(TAG_PROGRESS_BAR); @@ -108,7 +102,7 @@ struct DownloaderTest : public TestCase bg->addChild(bar, 10); // add a status label - auto label = Label::createWithTTF("","fonts/arial.ttf",14); + auto label = Label::createWithTTF("", "fonts/arial.ttf", 14); label->setTag(TAG_STATUS); label->setAnchorPoint(Vec2(0.5f, 0.5f)); label->setPosition(Vec2(viewSize.width / 2, viewSize.height / 2)); @@ -116,21 +110,20 @@ struct DownloaderTest : public TestCase label->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER); label->setDimensions(viewSize.width, viewSize.height); bg->addChild(label, 20); - + return bg; } - + virtual void onEnter() override { TestCase::onEnter(); _restartTestItem->setVisible(true); - + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_ui_plist); // add four download view in test case - Node* topRightView = createDownloadView(sNameList[0], [this](Ref*) - { - auto view = this->getChildByName(sNameList[0]); + Node* topRightView = createDownloadView(sNameList[0], [this](Ref*) { + auto view = this->getChildByName(sNameList[0]); auto sprite = view->getChildByTag(TAG_SPRITE); if (sprite) { @@ -149,9 +142,8 @@ struct DownloaderTest : public TestCase topRightView->setPosition(VisibleRect::center()); this->addChild(topRightView); - Node* topLeftView = createDownloadView(sNameList[1], [this](Ref*) - { - auto view = this->getChildByName(sNameList[1]); + Node* topLeftView = createDownloadView(sNameList[1], [this](Ref*) { + auto view = this->getChildByName(sNameList[1]); auto sprite = view->getChildByTag(TAG_SPRITE); if (sprite) { @@ -171,9 +163,8 @@ struct DownloaderTest : public TestCase topLeftView->setPosition(VisibleRect::center()); this->addChild(topLeftView); - Node* bottomLeftView = createDownloadView(sNameList[2], [this](Ref*) - { - auto view = this->getChildByName(sNameList[2]); + Node* bottomLeftView = createDownloadView(sNameList[2], [this](Ref*) { + auto view = this->getChildByName(sNameList[2]); auto sprite = view->getChildByTag(TAG_SPRITE); if (sprite) { @@ -194,10 +185,9 @@ struct DownloaderTest : public TestCase bottomLeftView->setPosition(VisibleRect::center()); this->addChild(bottomLeftView); - Node* bottomRightView = createDownloadView(sNameList[3], [this](Ref*) - { + Node* bottomRightView = createDownloadView(sNameList[3], [this](Ref*) { auto view = this->getChildByName(sNameList[3]); - auto btn = (ui::Button*)view->getChildByTag(TAG_BUTTON); + auto btn = (ui::Button*)view->getChildByTag(TAG_BUTTON); btn->setEnabled(false); btn->setVisible(false); auto bar = (ui::LoadingBar*)view->getChildByTag(TAG_PROGRESS_BAR); @@ -205,7 +195,8 @@ struct DownloaderTest : public TestCase bar->setVisible(true); bar->setEnabled(true); auto path = FileUtils::getInstance()->getWritablePath() + "CppTests/DownloaderTest/" + sNameList[3]; - auto task = this->downloader->createDownloadFileTask(sURLList[3], path, sNameList[3], "730cfe31b344ba77d87d0a896af710d4", false); + auto task = this->downloader->createDownloadFileTask(sURLList[3], path, sNameList[3], + "730cfe31b344ba77d87d0a896af710d4", false); task->progressInfo.totalBytesExpected = 89945032; }); bottomRightView->setName(sNameList[3]); @@ -214,22 +205,20 @@ struct DownloaderTest : public TestCase this->addChild(bottomRightView); // define progress callback - downloader->onTaskProgress = [this](const network::DownloadTask& task) - { - Node* view = this->getChildByName(task.identifier); - auto bar = (ui::LoadingBar*)view->getChildByTag(TAG_PROGRESS_BAR); + downloader->onTaskProgress = [this](const network::DownloadTask& task) { + Node* view = this->getChildByName(task.identifier); + auto bar = (ui::LoadingBar*)view->getChildByTag(TAG_PROGRESS_BAR); float percent = float(task.progressInfo.totalBytesReceived * 100) / task.progressInfo.totalBytesExpected; bar->setPercent(percent); char buf[128]; - sprintf(buf, "%.1f%%[total %d KB]", percent, int(task.progressInfo.totalBytesExpected/1024)); + sprintf(buf, "%.1f%%[total %d KB]", percent, int(task.progressInfo.totalBytesExpected / 1024)); auto status = (Label*)view->getChildByTag(TAG_STATUS); status->setString(buf); }; - + // define success callback downloader->onDataTaskSuccess = [this](const cocos2d::network::DownloadTask& task, - std::vector& data) - { + std::vector& data) { // create texture from data Texture2D* texture = nullptr; do @@ -239,21 +228,21 @@ struct DownloaderTest : public TestCase { break; } - + texture = new Texture2D(); if (false == texture->initWithImage(&img)) { break; } - auto sprite = Sprite::createWithTexture(texture); - auto view = this->getChildByName(task.identifier); + auto sprite = Sprite::createWithTexture(texture); + auto view = this->getChildByName(task.identifier); auto viewSize = view->getContentSize(); sprite->setPosition(viewSize.width / 2, viewSize.height / 2); auto spriteSize = sprite->getContentSize(); float scale = MIN((viewSize.height - 20) / spriteSize.height, (viewSize.width - 20) / spriteSize.width); sprite->setScale(scale); view->addChild(sprite, 5, TAG_SPRITE); - + auto btn = (ui::Button*)view->getChildByTag(TAG_BUTTON); btn->setEnabled(true); btn->setVisible(true); @@ -262,14 +251,14 @@ struct DownloaderTest : public TestCase } while (0); CC_SAFE_RELEASE(texture); }; - - downloader->onFileTaskSuccess = [this](const cocos2d::network::DownloadTask& task) - { + + downloader->onFileTaskSuccess = [this](const cocos2d::network::DownloadTask& task) { Texture2D* texture = nullptr; do { auto view = this->getChildByName(task.identifier); - if (task.storagePath.find(".png") != std::string::npos) { + if (task.storagePath.find(".png") != std::string::npos) + { // create sprite from file auto sprite = Sprite::create(task.storagePath); auto viewSize = view->getContentSize(); @@ -280,10 +269,12 @@ struct DownloaderTest : public TestCase sprite->setScale(scale); view->addChild(sprite, 5, TAG_SPRITE); CC_SAFE_RELEASE(texture); - } else { + } + else + { // download big file success - auto msg = StringUtils::format("Download [%s] success.", task.identifier.c_str()); - auto status = (Label*) view->getChildByTag(TAG_STATUS); + auto msg = StringUtils::format("Download [%s] success.", task.identifier.c_str()); + auto status = (Label*)view->getChildByTag(TAG_STATUS); status->setString(msg); } auto btn = (ui::Button*)view->getChildByTag(TAG_BUTTON); @@ -293,23 +284,16 @@ struct DownloaderTest : public TestCase bar->setVisible(false); } while (0); }; - + // define failed callback - downloader->onTaskError = [this](const cocos2d::network::DownloadTask& task, - int errorCode, - int errorCodeInternal, - std::string_view errorStr) - { - log("Failed to download : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)" - , task.requestURL.c_str() - , task.identifier.c_str() - , errorCode - , errorCodeInternal - , errorStr.data()); - auto view = this->getChildByName(task.identifier); + downloader->onTaskError = [this](const cocos2d::network::DownloadTask& task, int errorCode, + int errorCodeInternal, std::string_view errorStr) { + log("Failed to download : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)", + task.requestURL.c_str(), task.identifier.c_str(), errorCode, errorCodeInternal, errorStr.data()); + auto view = this->getChildByName(task.identifier); auto status = (Label*)view->getChildByTag(TAG_STATUS); status->setString(errorStr.length() ? errorStr : "Download failed."); - + auto btn = (ui::Button*)view->getChildByTag(TAG_BUTTON); btn->setEnabled(true); btn->setVisible(true); @@ -339,25 +323,22 @@ struct DownloaderMultiTask : public TestCase char path[256]; char name[64]; // add 64 download task at same time. - for(int i=0; i< 64;i++){ + for (int i = 0; i < 64; i++) + { sprintf(name, "%d_%s", i, sNameList[0]); sprintf(path, "%sCppTests/DownloaderTest/%s", FileUtils::getInstance()->getWritablePath().c_str(), name); log("downloader task create: %s", name); this->downloader->createDownloadFileTask(sURLList[0], path, name); } - downloader->onFileTaskSuccess = ([] (const network::DownloadTask& task) { - log("downloader task success: %s", task.identifier.c_str()); - }); + downloader->onFileTaskSuccess = + ([](const network::DownloadTask& task) { log("downloader task success: %s", task.identifier.c_str()); }); - downloader->onTaskError = ([] (const network::DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr) { - log("downloader task failed : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)" - , task.requestURL.c_str() - , task.identifier.c_str() - , errorCode - , errorCodeInternal - , errorStr.data()); - }); + downloader->onTaskError = + ([](const network::DownloadTask& task, int errorCode, int errorCodeInternal, std::string_view errorStr) { + log("downloader task failed : %s, identifier(%s) error code(%d), internal error code(%d) desc(%s)", + task.requestURL.c_str(), task.identifier.c_str(), errorCode, errorCodeInternal, errorStr.data()); + }); } }; diff --git a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp index 73821c55d96f..5c2c8a52bbeb 100644 --- a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp +++ b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.cpp @@ -3,17 +3,17 @@ Copyright (c) Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,7 +29,9 @@ USING_NS_CC; using namespace cocos2d::network; -#define CHROME_UA "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" +#define CHROME_UA \ + "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 " \ + "Safari/537.36" HttpClientTests::HttpClientTests() { @@ -37,8 +39,7 @@ HttpClientTests::HttpClientTests() ADD_TEST_CASE(HttpClientClearRequestsTest); } -HttpClientTest::HttpClientTest() -: _labelStatusCode(nullptr) +HttpClientTest::HttpClientTest() : _labelStatusCode(nullptr) { auto winSize = Director::getInstance()->getWinSize(); @@ -50,48 +51,49 @@ HttpClientTest::HttpClientTest() CCLOG("The http cookie will store to: %s", httpClient->getCookieFilename().data()); const int MARGIN = 40; - const int SPACE = 35; + const int SPACE = 35; - const int LEFT = winSize.width / 2; + const int LEFT = winSize.width / 2; const int RIGHT = winSize.width / 4 * 3; - + auto menuRequest = Menu::create(); menuRequest->setPosition(Vec2::ZERO); addChild(menuRequest); - - // Get + + // Get auto labelGet = Label::createWithTTF("Test Get", "fonts/arial.ttf", 22); - auto itemGet = MenuItemLabel::create(labelGet, CC_CALLBACK_1(HttpClientTest::onMenuGetTestClicked, this)); + auto itemGet = MenuItemLabel::create(labelGet, CC_CALLBACK_1(HttpClientTest::onMenuGetTestClicked, this)); itemGet->setPosition(LEFT, winSize.height - MARGIN - SPACE); menuRequest->addChild(itemGet); - + // Post auto labelPost = Label::createWithTTF("Test Post", "fonts/arial.ttf", 22); - auto itemPost = MenuItemLabel::create(labelPost, CC_CALLBACK_1(HttpClientTest::onMenuPostTestClicked, this)); + auto itemPost = MenuItemLabel::create(labelPost, CC_CALLBACK_1(HttpClientTest::onMenuPostTestClicked, this)); itemPost->setPosition(LEFT, winSize.height - MARGIN - 2 * SPACE); menuRequest->addChild(itemPost); - + // Post Binary auto labelPostBinary = Label::createWithTTF("Test Post Binary", "fonts/arial.ttf", 22); - auto itemPostBinary = MenuItemLabel::create(labelPostBinary, CC_CALLBACK_1(HttpClientTest::onMenuPostBinaryTestClicked, this)); + auto itemPostBinary = + MenuItemLabel::create(labelPostBinary, CC_CALLBACK_1(HttpClientTest::onMenuPostBinaryTestClicked, this)); itemPostBinary->setPosition(LEFT, winSize.height - MARGIN - 3 * SPACE); menuRequest->addChild(itemPostBinary); // Put auto labelPut = Label::createWithTTF("Test Put", "fonts/arial.ttf", 22); - auto itemPut = MenuItemLabel::create(labelPut, CC_CALLBACK_1(HttpClientTest::onMenuPutTestClicked, this)); + auto itemPut = MenuItemLabel::create(labelPut, CC_CALLBACK_1(HttpClientTest::onMenuPutTestClicked, this)); itemPut->setPosition(LEFT, winSize.height - MARGIN - 4 * SPACE); menuRequest->addChild(itemPut); // Delete auto labelDelete = Label::createWithTTF("Test Delete", "fonts/arial.ttf", 22); - auto itemDelete = MenuItemLabel::create(labelDelete, CC_CALLBACK_1(HttpClientTest::onMenuDeleteTestClicked, this)); + auto itemDelete = MenuItemLabel::create(labelDelete, CC_CALLBACK_1(HttpClientTest::onMenuDeleteTestClicked, this)); itemDelete->setPosition(LEFT, winSize.height - MARGIN - 5 * SPACE); menuRequest->addChild(itemDelete); - + // Response Code Label _labelStatusCode = Label::createWithTTF("HTTP Status Code", "fonts/arial.ttf", 18); - _labelStatusCode->setPosition(winSize.width / 2, winSize.height - MARGIN - 6 * SPACE); + _labelStatusCode->setPosition(winSize.width / 2, winSize.height - MARGIN - 6 * SPACE); addChild(_labelStatusCode); } @@ -100,8 +102,8 @@ HttpClientTest::~HttpClientTest() HttpClient::destroyInstance(); } -void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref *sender) -{ +void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref* sender) +{ // test 1(sync request test) { HttpRequest* request = new HttpRequest(); @@ -111,7 +113,8 @@ void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref *sender) // request->setResponseCallback(CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this)); request->setTag("GET test1"); HttpResponse* response = HttpClient::getInstance()->sendSync(request); - if (response) { + if (response) + { onHttpRequestCompleted(HttpClient::getInstance(), response); response->release(); } @@ -129,7 +132,7 @@ void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref *sender) HttpClient::getInstance()->send(request); request->release(); } - + // test 3 { HttpRequest* request = new HttpRequest(); @@ -143,8 +146,8 @@ void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref *sender) // don't forget to release it, pair to new request->release(); } - - // test 4 + + // test 4 { HttpRequest* request = new HttpRequest(); request->setUrl("https://httpbin.org/get"); @@ -167,13 +170,12 @@ void HttpClientTest::onMenuGetTestClicked(cocos2d::Ref *sender) HttpClient::getInstance()->send(request); request->release(); } - + // waiting _labelStatusCode->setString("waiting..."); - } -void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref *sender) +void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref* sender) { // test 1 { @@ -182,7 +184,7 @@ void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref *sender) request->setRequestType(HttpRequest::Type::POST); request->setHeaders(std::vector{CHROME_UA}); request->setResponseCallback(CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this)); - + // write the post data const char* postData = "visitor=cocos2d&TestSuite=Extensions Test/NetworkTest"; request->setRequestData(postData, strlen(postData)); @@ -190,7 +192,7 @@ void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref *sender) HttpClient::getInstance()->send(request); request->release(); } - + // test 2: set Content-Type { HttpRequest* request = new HttpRequest(); @@ -198,7 +200,7 @@ void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref *sender) request->setRequestType(HttpRequest::Type::POST); request->setHeaders(std::vector{CHROME_UA, "Content-Type: application/json; charset=utf-8"}); request->setResponseCallback(CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this)); - + // write the post data const char* postData = "visitor=cocos2d&TestSuite=Extensions Test/NetworkTest"; request->setRequestData(postData, strlen(postData)); @@ -206,32 +208,30 @@ void HttpClientTest::onMenuPostTestClicked(cocos2d::Ref *sender) HttpClient::getInstance()->send(request); request->release(); } - + // waiting _labelStatusCode->setString("waiting..."); } -void HttpClientTest::onMenuPostBinaryTestClicked(cocos2d::Ref *sender) +void HttpClientTest::onMenuPostBinaryTestClicked(cocos2d::Ref* sender) { HttpRequest* request = new HttpRequest(); request->setUrl("https://httpbin.org/post"); request->setRequestType(HttpRequest::Type::POST); request->setResponseCallback(CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this)); - + // write the post data char postData[22] = "binary=hello\0\0cocos2d"; // including \0, the strings after \0 should not be cut in response - request->setRequestData(postData, 22); + request->setRequestData(postData, 22); request->setTag("POST Binary test"); HttpClient::getInstance()->send(request); request->release(); - + // waiting _labelStatusCode->setString("waiting..."); } - - -void HttpClientTest::onMenuPutTestClicked(Ref *sender) +void HttpClientTest::onMenuPutTestClicked(Ref* sender) { // test 1 { @@ -270,7 +270,7 @@ void HttpClientTest::onMenuPutTestClicked(Ref *sender) _labelStatusCode->setString("waiting..."); } -void HttpClientTest::onMenuDeleteTestClicked(Ref *sender) +void HttpClientTest::onMenuDeleteTestClicked(Ref* sender) { // test 1 { @@ -298,35 +298,35 @@ void HttpClientTest::onMenuDeleteTestClicked(Ref *sender) _labelStatusCode->setString("waiting..."); } -void HttpClientTest::onHttpRequestCompleted(HttpClient *sender, HttpResponse *response) +void HttpClientTest::onHttpRequestCompleted(HttpClient* sender, HttpResponse* response) { if (!response) { return; } - + // You can get original request type from: response->request->reqType - if (0 != strlen(response->getHttpRequest()->getTag())) + if (0 != strlen(response->getHttpRequest()->getTag())) { log("%s completed", response->getHttpRequest()->getTag()); } - - int32_t statusCode = response->getResponseCode(); + + int32_t statusCode = response->getResponseCode(); char statusString[64] = {}; sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag()); _labelStatusCode->setString(statusString); log("response code: %d", statusCode); - - if (response->getResponseCode() != 200) + + if (response->getResponseCode() != 200) { log("response failed"); // log("error buffer: %s", response->getErrorBuffer()); return; } - + // dump data auto buffer = response->getResponseData(); - buffer->push_back('\0'); // to c_str + buffer->push_back('\0'); // to c_str log("Http Test, dump data: %s", buffer->data()); log("\n"); if (response->getHttpRequest()->getReferenceCount() != 2) @@ -335,43 +335,44 @@ void HttpClientTest::onHttpRequestCompleted(HttpClient *sender, HttpResponse *re } } -HttpClientClearRequestsTest::HttpClientClearRequestsTest() -: _labelStatusCode(nullptr) +HttpClientClearRequestsTest::HttpClientClearRequestsTest() : _labelStatusCode(nullptr) { auto winSize = Director::getInstance()->getWinSize(); - + const int MARGIN = 40; - const int SPACE = 35; - + const int SPACE = 35; + const int CENTER = winSize.width / 2; - + auto menuRequest = Menu::create(); menuRequest->setPosition(Vec2::ZERO); addChild(menuRequest); - + // Get auto labelGet = Label::createWithTTF("Test Clear all Get", "fonts/arial.ttf", 22); - auto itemGet = MenuItemLabel::create(labelGet, CC_CALLBACK_1(HttpClientClearRequestsTest::onMenuCancelAllClicked, this)); + auto itemGet = + MenuItemLabel::create(labelGet, CC_CALLBACK_1(HttpClientClearRequestsTest::onMenuCancelAllClicked, this)); itemGet->setPosition(CENTER, winSize.height - MARGIN - SPACE); menuRequest->addChild(itemGet); - + // Post auto labelPost = Label::createWithTTF("Test Clear but only with the tag DELETE", "fonts/arial.ttf", 22); - auto itemPost = MenuItemLabel::create(labelPost, CC_CALLBACK_1(HttpClientClearRequestsTest::onMenuCancelSomeClicked, this)); + auto itemPost = + MenuItemLabel::create(labelPost, CC_CALLBACK_1(HttpClientClearRequestsTest::onMenuCancelSomeClicked, this)); itemPost->setPosition(CENTER, winSize.height - MARGIN - 2 * SPACE); menuRequest->addChild(itemPost); - + // Response Code Label _labelStatusCode = Label::createWithTTF("HTTP Status Code", "fonts/arial.ttf", 18); - _labelStatusCode->setPosition(winSize.width / 2, winSize.height - MARGIN - 6 * SPACE); + _labelStatusCode->setPosition(winSize.width / 2, winSize.height - MARGIN - 6 * SPACE); addChild(_labelStatusCode); - + // Tracking Data Label _labelTrakingData = Label::createWithTTF("Got 0 of 0 expected http requests", "fonts/arial.ttf", 16); - _labelTrakingData->setPosition(CENTER, winSize.height - MARGIN - 5 * SPACE); + _labelTrakingData->setPosition(CENTER, winSize.height - MARGIN - 5 * SPACE); addChild(_labelTrakingData); - - _totalExpectedRequests = 0; + + _totalExpectedRequests = 0; _totalProcessedRequests = 0; } @@ -380,9 +381,9 @@ HttpClientClearRequestsTest::~HttpClientClearRequestsTest() HttpClient::destroyInstance(); } -void HttpClientClearRequestsTest::onMenuCancelAllClicked(cocos2d::Ref *sender) +void HttpClientClearRequestsTest::onMenuCancelAllClicked(cocos2d::Ref* sender) { - for (int i=0; i < 10; i++) + for (int i = 0; i < 10; i++) { HttpRequest* request = new HttpRequest(); std::stringstream url; @@ -390,28 +391,28 @@ void HttpClientClearRequestsTest::onMenuCancelAllClicked(cocos2d::Ref *sender) request->setUrl(url.str()); request->setRequestType(HttpRequest::Type::GET); request->setResponseCallback(CC_CALLBACK_2(HttpClientClearRequestsTest::onHttpRequestCompleted, this)); - + url.str(""); url << "TEST_" << std::to_string(i); request->setTag(url.str()); HttpClient::getInstance()->send(request); request->release(); } - + _totalProcessedRequests = 0; - _totalExpectedRequests = 1; - + _totalExpectedRequests = 1; + HttpClient::getInstance()->setClearResponsePredicate(nullptr); HttpClient::getInstance()->clearResponseQueue(); - + // waiting _labelStatusCode->setString("waiting..."); } -void HttpClientClearRequestsTest::onMenuCancelSomeClicked(cocos2d::Ref *sender) +void HttpClientClearRequestsTest::onMenuCancelSomeClicked(cocos2d::Ref* sender) { // test 1 - for (int i=0; i < 10; i++) + for (int i = 0; i < 10; i++) { HttpRequest* request = new HttpRequest(); std::stringstream url; @@ -419,57 +420,57 @@ void HttpClientClearRequestsTest::onMenuCancelSomeClicked(cocos2d::Ref *sender) request->setUrl(url.str()); request->setRequestType(HttpRequest::Type::GET); request->setResponseCallback(CC_CALLBACK_2(HttpClientClearRequestsTest::onHttpRequestCompleted, this)); - + url.str(""); - if (i < 5) { + if (i < 5) + { url << "TEST_" << std::to_string(i); _totalExpectedRequests++; } - else { + else + { url << "DELETE_" << std::to_string(i); } request->setTag(url.str()); HttpClient::getInstance()->send(request); request->release(); } - - /* HttpClient::getInstance()->setClearRequestPredicate([&](HttpRequest* req) - { - auto r = !!strstr(req->getTag(), "DELETE_"); - return r; - });*/ + + /* HttpClient::getInstance()->setClearRequestPredicate([&](HttpRequest* req) + { + auto r = !!strstr(req->getTag(), "DELETE_"); + return r; + });*/ HttpClient::getInstance()->setClearResponsePredicate(nullptr); HttpClient::getInstance()->clearResponseQueue(); - - + // waiting _labelStatusCode->setString("waiting..."); - } -void HttpClientClearRequestsTest::onHttpRequestCompleted(HttpClient *sender, HttpResponse *response) +void HttpClientClearRequestsTest::onHttpRequestCompleted(HttpClient* sender, HttpResponse* response) { if (!response) { return; } - + // You can get original request type from: response->request->reqType if (0 != strlen(response->getHttpRequest()->getTag())) { log("%s completed", response->getHttpRequest()->getTag()); } - - int32_t statusCode = response->getResponseCode(); + + int32_t statusCode = response->getResponseCode(); char statusString[64] = {}; sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag()); _labelStatusCode->setString(statusString); log("response code: %d", statusCode); - + _totalProcessedRequests++; sprintf(statusString, "Got %d of %d expected http requests", _totalProcessedRequests, _totalExpectedRequests); _labelTrakingData->setString(statusString); - + if (!response->isSucceed()) { log("response failed"); diff --git a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.h b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.h index 80c85ff28666..e188007e1c16 100644 --- a/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.h +++ b/tests/cpp-tests/Classes/NetworkTest/HttpClientTest/HttpClientTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,16 +39,16 @@ class HttpClientTest : public TestCase HttpClientTest(); virtual ~HttpClientTest(); - - //Menu Callbacks - void onMenuGetTestClicked(cocos2d::Ref *sender); - void onMenuPostTestClicked(cocos2d::Ref *sender); - void onMenuPostBinaryTestClicked(cocos2d::Ref *sender); - void onMenuPutTestClicked(cocos2d::Ref *sender); - void onMenuDeleteTestClicked(cocos2d::Ref *sender); - - //Http Response Callback - void onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response); + + // Menu Callbacks + void onMenuGetTestClicked(cocos2d::Ref* sender); + void onMenuPostTestClicked(cocos2d::Ref* sender); + void onMenuPostBinaryTestClicked(cocos2d::Ref* sender); + void onMenuPutTestClicked(cocos2d::Ref* sender); + void onMenuDeleteTestClicked(cocos2d::Ref* sender); + + // Http Response Callback + void onHttpRequestCompleted(cocos2d::network::HttpClient* sender, cocos2d::network::HttpResponse* response); virtual std::string title() const override { return "Http Request Test"; } @@ -60,19 +60,19 @@ class HttpClientClearRequestsTest : public TestCase { public: CREATE_FUNC(HttpClientClearRequestsTest); - + HttpClientClearRequestsTest(); virtual ~HttpClientClearRequestsTest(); - - //Menu Callbacks - void onMenuCancelAllClicked(cocos2d::Ref *sender); - void onMenuCancelSomeClicked(cocos2d::Ref *sender); - - //Http Response Callback - void onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response); - + + // Menu Callbacks + void onMenuCancelAllClicked(cocos2d::Ref* sender); + void onMenuCancelSomeClicked(cocos2d::Ref* sender); + + // Http Response Callback + void onHttpRequestCompleted(cocos2d::network::HttpClient* sender, cocos2d::network::HttpResponse* response); + virtual std::string title() const override { return "Http Request Test"; } - + private: int _totalExpectedRequests; int _totalProcessedRequests; @@ -80,4 +80,4 @@ class HttpClientClearRequestsTest : public TestCase cocos2d::Label* _labelStatusCode; }; -#endif //__HTTPREQUESTHTTP_H +#endif //__HTTPREQUESTHTTP_H diff --git a/tests/cpp-tests/Classes/NetworkTest/NetworkTest.cpp b/tests/cpp-tests/Classes/NetworkTest/NetworkTest.cpp index 4e320a70ffd7..1f518130f2f3 100644 --- a/tests/cpp-tests/Classes/NetworkTest/NetworkTest.cpp +++ b/tests/cpp-tests/Classes/NetworkTest/NetworkTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,7 +27,8 @@ #include "HttpClientTest/HttpClientTest.h" #include "DownloaderTest/DownloaderTest.h" -NetworkTests::NetworkTests() { +NetworkTests::NetworkTests() +{ addTest("HttpClientTest", []() { return new HttpClientTests; }); addTest("DownloaderTest", []() { return new DownloaderTests; }); } diff --git a/tests/cpp-tests/Classes/NetworkTest/NetworkTest.h b/tests/cpp-tests/Classes/NetworkTest/NetworkTest.h index 917e95d037a3..e0574e76c225 100644 --- a/tests/cpp-tests/Classes/NetworkTest/NetworkTest.h +++ b/tests/cpp-tests/Classes/NetworkTest/NetworkTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp index d7f90be78604..81dc4aea801e 100644 --- a/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp +++ b/tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp @@ -53,151 +53,153 @@ AudioEngineTests::AudioEngineTests() ADD_TEST_CASE(AudioIssue18597Test); ADD_TEST_CASE(AudioIssue11143Test); - - //FIXME: Please keep AudioSwitchStateTest to the last position since this test case doesn't work well on each platforms. + + // FIXME: Please keep AudioSwitchStateTest to the last position since this test case doesn't work well on each + // platforms. ADD_TEST_CASE(AudioSwitchStateTest); } -namespace { - - class TextButton : public cocos2d::Label +namespace +{ + +class TextButton : public cocos2d::Label +{ +public: + static TextButton* create(std::string_view text, const std::function& onTriggered) { - public: - - static TextButton *create(std::string_view text, const std::function &onTriggered) + auto ret = new TextButton(); + + TTFConfig ttfconfig("fonts/arial.ttf", 25); + if (ret->setTTFConfig(ttfconfig)) { - auto ret = new TextButton(); - - TTFConfig ttfconfig("fonts/arial.ttf",25); - if (ret->setTTFConfig(ttfconfig)) { - ret->setString(text); - ret->_onTriggered = onTriggered; - - ret->autorelease(); - - return ret; - } - - delete ret; - return nullptr; + ret->setString(text); + ret->_onTriggered = onTriggered; + + ret->autorelease(); + + return ret; } - - void setEnabled(bool enabled) + + delete ret; + return nullptr; + } + + void setEnabled(bool enabled) + { + _enabled = enabled; + if (_enabled) { - _enabled = enabled; - if(_enabled){ - this->setColor(Color3B::WHITE); - } - else { - this->setColor(Color3B::GRAY); - } + this->setColor(Color3B::WHITE); } - - private: - TextButton() - : _onTriggered(nullptr) - , _enabled(true) + else { - auto listener = EventListenerTouchOneByOne::create(); - listener->setSwallowTouches(true); - - listener->onTouchBegan = CC_CALLBACK_2(TextButton::onTouchBegan, this); - listener->onTouchEnded = CC_CALLBACK_2(TextButton::onTouchEnded, this); - listener->onTouchCancelled = CC_CALLBACK_2(TextButton::onTouchCancelled, this); - - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - + this->setColor(Color3B::GRAY); } - - bool touchHits(Touch *touch) + } + +private: + TextButton() : _onTriggered(nullptr), _enabled(true) + { + auto listener = EventListenerTouchOneByOne::create(); + listener->setSwallowTouches(true); + + listener->onTouchBegan = CC_CALLBACK_2(TextButton::onTouchBegan, this); + listener->onTouchEnded = CC_CALLBACK_2(TextButton::onTouchEnded, this); + listener->onTouchCancelled = CC_CALLBACK_2(TextButton::onTouchCancelled, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + } + + bool touchHits(Touch* touch) + { + auto hitPos = this->convertToNodeSpace(touch->getLocation()); + if (hitPos.x >= 0 && hitPos.y >= 0 && hitPos.x <= _contentSize.width && hitPos.y <= _contentSize.height) { - auto hitPos = this->convertToNodeSpace(touch->getLocation()); - if (hitPos.x >= 0 && hitPos.y >= 0 && hitPos.x <= _contentSize.width && hitPos.y <= _contentSize.height) { - return true; - } - return false; + return true; } - - bool onTouchBegan(Touch *touch, Event *event) + return false; + } + + bool onTouchBegan(Touch* touch, Event* event) + { + auto hits = touchHits(touch); + if (hits) { - auto hits = touchHits(touch); - if (hits){ - scaleButtonTo(0.95f); - } - return hits; + scaleButtonTo(0.95f); } - - void onTouchEnded(Touch *touch, Event *event) + return hits; + } + + void onTouchEnded(Touch* touch, Event* event) + { + if (_enabled) { - if(_enabled) { - auto hits = touchHits(touch); - if (hits && _onTriggered){ - _onTriggered(this); - } + auto hits = touchHits(touch); + if (hits && _onTriggered) + { + _onTriggered(this); } - - scaleButtonTo(1); } - - void onTouchCancelled(Touch *touch, Event *event) - { - scaleButtonTo(1); - } - - void scaleButtonTo(float scale) - { - auto action = ScaleTo::create(0.05f, scale); - action->setTag(10000); - stopActionByTag(10000); - runAction(action); - } - - std::function _onTriggered; - - bool _enabled; - }; - - class SliderEx : public Slider + + scaleButtonTo(1); + } + + void onTouchCancelled(Touch* touch, Event* event) { scaleButtonTo(1); } + + void scaleButtonTo(float scale) { - public: - static SliderEx* create(){ - auto ret = new SliderEx(); - if (ret->init()) - { - ret->loadBarTexture("cocosui/sliderTrack.png"); - ret->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); - ret->loadProgressBarTexture("cocosui/sliderProgress.png"); - ret->setTouchEnabled(true); - - ret->autorelease(); - - return ret; - } - CC_SAFE_DELETE(ret); + auto action = ScaleTo::create(0.05f, scale); + action->setTag(10000); + stopActionByTag(10000); + runAction(action); + } + + std::function _onTriggered; + + bool _enabled; +}; + +class SliderEx : public Slider +{ +public: + static SliderEx* create() + { + auto ret = new SliderEx(); + if (ret->init()) + { + ret->loadBarTexture("cocosui/sliderTrack.png"); + ret->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); + ret->loadProgressBarTexture("cocosui/sliderProgress.png"); + ret->setTouchEnabled(true); + + ret->autorelease(); + return ret; } - - void setRatio(float ratio) { - ratio = clampf(ratio, 0.0f, 1.0f); - - _ratio = ratio; - setPercent(100 * _ratio); - } - - float getRatio () { - _ratio = 1.0f * _percent / _maxPercent; - return _ratio; - } - - private: - float _ratio; - }; -} + CC_SAFE_DELETE(ret); + return ret; + } -AudioEngineTestDemo::AudioEngineTestDemo() -: _isDestroyed(std::make_shared(false)) -{ -} + void setRatio(float ratio) + { + ratio = clampf(ratio, 0.0f, 1.0f); + + _ratio = ratio; + setPercent(100 * _ratio); + } + + float getRatio() + { + _ratio = 1.0f * _percent / _maxPercent; + return _ratio; + } + +private: + float _ratio; +}; +} // namespace + +AudioEngineTestDemo::AudioEngineTestDemo() : _isDestroyed(std::make_shared(false)) {} void AudioEngineTestDemo::onExit() { @@ -220,173 +222,184 @@ void AudioEngineTestDemo::onBackCallback(cocos2d::Ref* sender) // AudioControlTest bool AudioControlTest::init() { - auto ret = AudioEngineTestDemo::init(); - _audioID = AudioEngine::INVALID_AUDIO_ID; - _loopEnabled = false; - _volume = 1.0f; - _duration = AudioEngine::TIME_UNKNOWN; - _timeRatio = 0.0f; + auto ret = AudioEngineTestDemo::init(); + _audioID = AudioEngine::INVALID_AUDIO_ID; + _loopEnabled = false; + _volume = 1.0f; + _duration = AudioEngine::TIME_UNKNOWN; + _timeRatio = 0.0f; _updateTimeSlider = true; - _isStopped = false; - + _isStopped = false; + std::string fontFilePath = "fonts/arial.ttf"; - + auto& layerSize = this->getContentSize(); - + _playOverLabel = Label::createWithSystemFont("Play Over", "", 30); - _playOverLabel->setPosition(Vec2(layerSize/2) + Vec2(0, 30)); + _playOverLabel->setPosition(Vec2(layerSize / 2) + Vec2(0, 30)); _playOverLabel->setVisible(false); addChild(_playOverLabel, 99999); - auto playItem = TextButton::create("play", [&](TextButton* button){ - if (_audioID == AudioEngine::INVALID_AUDIO_ID) { + auto playItem = TextButton::create("play", [&](TextButton* button) { + if (_audioID == AudioEngine::INVALID_AUDIO_ID) + { _audioID = AudioEngine::play2d("background.mp3", _loopEnabled, _volume); - - if(_audioID != AudioEngine::INVALID_AUDIO_ID) { + + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { _isStopped = false; - + button->setEnabled(false); - AudioEngine::setFinishCallback(_audioID, [&](int id, std::string_view filePath){ + AudioEngine::setFinishCallback(_audioID, [&](int id, std::string_view filePath) { log("_audioID(%d), _isStopped:(%d), played over!!!", _audioID, _isStopped); - + _playOverLabel->setVisible(true); - - scheduleOnce([&](float dt){ - _playOverLabel->setVisible(false); - }, 2.0f, "hide_play_over_label"); - - assert(!_isStopped); // Stop audio should not trigger finished callback + + scheduleOnce([&](float dt) { _playOverLabel->setVisible(false); }, 2.0f, "hide_play_over_label"); + + assert(!_isStopped); // Stop audio should not trigger finished callback _audioID = AudioEngine::INVALID_AUDIO_ID; ((TextButton*)_playItem)->setEnabled(true); - + _timeRatio = 0.0f; ((SliderEx*)_timeSlider)->setRatio(_timeRatio); }); } } }); - _playItem = playItem; - playItem->setPosition(layerSize.width * 0.3f,layerSize.height * 0.8f); + _playItem = playItem; + playItem->setPosition(layerSize.width * 0.3f, layerSize.height * 0.8f); addChild(playItem); - - auto stopItem = TextButton::create("stop", [&](TextButton* button){ - if (_audioID != AudioEngine::INVALID_AUDIO_ID ) { + + auto stopItem = TextButton::create("stop", [&](TextButton* button) { + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { _isStopped = true; AudioEngine::stop(_audioID); - + _audioID = AudioEngine::INVALID_AUDIO_ID; ((TextButton*)_playItem)->setEnabled(true); } }); - stopItem->setPosition(layerSize.width * 0.7f,layerSize.height * 0.8f); + stopItem->setPosition(layerSize.width * 0.7f, layerSize.height * 0.8f); addChild(stopItem); - - auto pauseItem = TextButton::create("pause", [&](TextButton* button){ - if (_audioID != AudioEngine::INVALID_AUDIO_ID ) { + + auto pauseItem = TextButton::create("pause", [&](TextButton* button) { + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { AudioEngine::pause(_audioID); } }); - pauseItem->setPosition(layerSize.width * 0.3f,layerSize.height * 0.7f); + pauseItem->setPosition(layerSize.width * 0.3f, layerSize.height * 0.7f); addChild(pauseItem); - - auto resumeItem = TextButton::create("resume", [&](TextButton* button){ - if (_audioID != AudioEngine::INVALID_AUDIO_ID ) { + + auto resumeItem = TextButton::create("resume", [&](TextButton* button) { + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { AudioEngine::resume(_audioID); } }); - resumeItem->setPosition(layerSize.width * 0.7f,layerSize.height * 0.7f); + resumeItem->setPosition(layerSize.width * 0.7f, layerSize.height * 0.7f); addChild(resumeItem); - - auto loopItem = TextButton::create("enable-loop", [&](TextButton* button){ + + auto loopItem = TextButton::create("enable-loop", [&](TextButton* button) { _loopEnabled = !_loopEnabled; - if (_audioID != AudioEngine::INVALID_AUDIO_ID) { + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { AudioEngine::setLoop(_audioID, _loopEnabled); } - if (_loopEnabled){ + if (_loopEnabled) + { button->setString("disable-loop"); } - else { + else + { button->setString("enable-loop"); } }); loopItem->setPosition(layerSize.width * 0.5f, layerSize.height * 0.5f); addChild(loopItem); - + auto volumeSlider = SliderEx::create(); volumeSlider->setPercent(100); - volumeSlider->addEventListener([&](Ref* sender, Slider::EventType event){ - SliderEx *slider = dynamic_cast(sender); - _volume = slider->getRatio(); - if (_audioID != AudioEngine::INVALID_AUDIO_ID ) { + volumeSlider->addEventListener([&](Ref* sender, Slider::EventType event) { + SliderEx* slider = dynamic_cast(sender); + _volume = slider->getRatio(); + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { AudioEngine::setVolume(_audioID, _volume); } }); - volumeSlider->setPosition(Vec2(layerSize.width * 0.5f,layerSize.height * 0.35f)); + volumeSlider->setPosition(Vec2(layerSize.width * 0.5f, layerSize.height * 0.35f)); addChild(volumeSlider); - + auto timeSlider = SliderEx::create(); - timeSlider->addEventListener([&](Ref* sender, Slider::EventType event){ - SliderEx *slider = dynamic_cast(sender); - switch(event){ - case Slider::EventType::ON_SLIDEBALL_DOWN: - _updateTimeSlider = false; - break; - case Slider::EventType::ON_SLIDEBALL_UP: - if (_audioID != AudioEngine::INVALID_AUDIO_ID && _duration != AudioEngine::TIME_UNKNOWN) { - float ratio = (float)slider->getPercent() / 100; - ratio = clampf(ratio, 0.0f, 1.0f); - AudioEngine::setCurrentTime(_audioID, _duration * ratio); - } - case Slider::EventType::ON_SLIDEBALL_CANCEL: - _updateTimeSlider = true; - case Slider::EventType::ON_PERCENTAGE_CHANGED: - default: - //ignore - break; + timeSlider->addEventListener([&](Ref* sender, Slider::EventType event) { + SliderEx* slider = dynamic_cast(sender); + switch (event) + { + case Slider::EventType::ON_SLIDEBALL_DOWN: + _updateTimeSlider = false; + break; + case Slider::EventType::ON_SLIDEBALL_UP: + if (_audioID != AudioEngine::INVALID_AUDIO_ID && _duration != AudioEngine::TIME_UNKNOWN) + { + float ratio = (float)slider->getPercent() / 100; + ratio = clampf(ratio, 0.0f, 1.0f); + AudioEngine::setCurrentTime(_audioID, _duration * ratio); + } + case Slider::EventType::ON_SLIDEBALL_CANCEL: + _updateTimeSlider = true; + case Slider::EventType::ON_PERCENTAGE_CHANGED: + default: + // ignore + break; } }); - timeSlider->setPosition(Vec2(layerSize.width * 0.5f,layerSize.height * 0.25f)); + timeSlider->setPosition(Vec2(layerSize.width * 0.5f, layerSize.height * 0.25f)); addChild(timeSlider); _timeSlider = timeSlider; - + auto& volumeSliderPos = volumeSlider->getPosition(); - auto& sliderSize = volumeSlider->getContentSize(); - auto volumeLabel = Label::createWithTTF("volume: ", fontFilePath, 20); + auto& sliderSize = volumeSlider->getContentSize(); + auto volumeLabel = Label::createWithTTF("volume: ", fontFilePath, 20); volumeLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); volumeLabel->setPosition(volumeSliderPos.x - sliderSize.width / 2, volumeSliderPos.y); addChild(volumeLabel); - + auto& timeSliderPos = timeSlider->getPosition(); - auto timeLabel = Label::createWithTTF("time: ", fontFilePath, 20); + auto timeLabel = Label::createWithTTF("time: ", fontFilePath, 20); timeLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); timeLabel->setPosition(timeSliderPos.x - sliderSize.width / 2, timeSliderPos.y); addChild(timeLabel); - + this->schedule(CC_CALLBACK_1(AudioControlTest::update, this), 0.1f, "update_key"); - + return ret; } void AudioControlTest::update(float dt) { - if (_audioID != AudioEngine::INVALID_AUDIO_ID ) { - if(_duration == AudioEngine::TIME_UNKNOWN){ + if (_audioID != AudioEngine::INVALID_AUDIO_ID) + { + if (_duration == AudioEngine::TIME_UNKNOWN) + { _duration = AudioEngine::getDuration(_audioID); } - if(_duration != AudioEngine::TIME_UNKNOWN){ - auto time = AudioEngine::getCurrentTime(_audioID); + if (_duration != AudioEngine::TIME_UNKNOWN) + { + auto time = AudioEngine::getCurrentTime(_audioID); _timeRatio = time / _duration; - if(_updateTimeSlider){ + if (_updateTimeSlider) + { ((SliderEx*)_timeSlider)->setRatio(_timeRatio); } } } } -AudioControlTest::~AudioControlTest() -{ -} +AudioControlTest::~AudioControlTest() {} std::string AudioControlTest::title() const { @@ -403,16 +416,16 @@ bool AudioLoadTest::init() stateLabel->setPosition(layerSize.width / 2, layerSize.height * 0.7f); addChild(stateLabel); - auto preloadItem = TextButton::create("preload", [&, stateLabel](TextButton* button){ + auto preloadItem = TextButton::create("preload", [&, stateLabel](TextButton* button) { stateLabel->setString("status:loading..."); auto isDestroyed = _isDestroyed; - AudioEngine::preload("audio/SoundEffectsFX009/FX082.mp3", [isDestroyed, stateLabel](bool isSuccess){ + AudioEngine::preload("audio/SoundEffectsFX009/FX082.mp3", [isDestroyed, stateLabel](bool isSuccess) { if (*isDestroyed) { CCLOG("AudioLoadTest scene was destroyed, no need to set the label text."); return; } - + if (isSuccess) { stateLabel->setString("status:load success"); @@ -426,13 +439,13 @@ bool AudioLoadTest::init() preloadItem->setPosition(layerSize.width * 0.35f, layerSize.height * 0.5f); addChild(preloadItem); - auto uncacheItem = TextButton::create("uncache", [&, stateLabel](TextButton* button){ + auto uncacheItem = TextButton::create("uncache", [&, stateLabel](TextButton* button) { stateLabel->setString("status:uncache"); AudioEngine::uncache("audio/SoundEffectsFX009/FX082.mp3"); }); uncacheItem->setPosition(layerSize.width * 0.65f, layerSize.height * 0.5f); addChild(uncacheItem); - + return true; } @@ -445,9 +458,7 @@ std::string AudioLoadTest::title() const } // AudioWavTest -AudioWavTest::~AudioWavTest() -{ -} +AudioWavTest::~AudioWavTest() {} std::string AudioWavTest::title() const { @@ -468,22 +479,26 @@ bool AudioWavTest::init() addChild(_stateLabel); auto playPrev = TextButton::create("Play Prev", [=](TextButton* button) { - if (_curIndex > 0) { + if (_curIndex > 0) + { AudioEngine::stop(_audioID); _audioID = AudioEngine::play2d(_wavFiles[--_curIndex]); - _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); + _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, + FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); } - }); + }); playPrev->setPosition(layerSize.width * 0.35f, layerSize.height * 0.5f); addChild(playPrev); auto playNext = TextButton::create("Play Next", [=](TextButton* button) { - if (_curIndex != -1 && _curIndex < (_wavFiles.size() - 1)) { + if (_curIndex != -1 && _curIndex < (_wavFiles.size() - 1)) + { AudioEngine::stop(_audioID); _audioID = AudioEngine::play2d(_wavFiles[++_curIndex]); - _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); + _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, + FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); } - }); + }); playNext->setPosition(layerSize.width * 0.65f, layerSize.height * 0.5f); addChild(playNext); @@ -497,10 +512,12 @@ void AudioWavTest::onEnter() { AudioEngineTestDemo::onEnter(); - if (!_wavFiles.empty()) { + if (!_wavFiles.empty()) + { _curIndex = 0; - _audioID = AudioEngine::play2d(_wavFiles[_curIndex]); - _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); + _audioID = AudioEngine::play2d(_wavFiles[_curIndex]); + _stateLabel->setString(StringUtils::format("[index: %d] %s", _curIndex, + FileUtils::getFileShortName(_wavFiles[_curIndex]).c_str())); } } @@ -508,48 +525,51 @@ void AudioWavTest::onEnter() bool PlaySimultaneouslyTest::init() { auto ret = AudioEngineTestDemo::init(); - + char text[36]; int tmp = 81; - for(int index = 0; index < TEST_COUNT; ++index){ - sprintf(text,"audio/SoundEffectsFX009/FX0%d.mp3",tmp + index); + for (int index = 0; index < TEST_COUNT; ++index) + { + sprintf(text, "audio/SoundEffectsFX009/FX0%d.mp3", tmp + index); _files[index] = text; } _playingcount = 0; - - auto playItem = TextButton::create("play-simultaneously", [&](TextButton* button){ + + auto playItem = TextButton::create("play-simultaneously", [&](TextButton* button) { int audioId; _playingcount = 0; button->setEnabled(false); auto startTime = utils::gettime(); - for(int index = 0; index < TEST_COUNT; ++index){ + for (int index = 0; index < TEST_COUNT; ++index) + { audioId = AudioEngine::play2d(_files[index]); - if(audioId != AudioEngine::INVALID_AUDIO_ID){ + if (audioId != AudioEngine::INVALID_AUDIO_ID) + { _playingcount += 1; - - AudioEngine::setFinishCallback(audioId, [&](int id, std::string_view filePath){ + + AudioEngine::setFinishCallback(audioId, [&](int id, std::string_view filePath) { _playingcount -= 1; - if(_playingcount <= 0){ + if (_playingcount <= 0) + { ((TextButton*)_playItem)->setEnabled(true); } }); } - else { - log("%s,%d,Fail to play file:%s",__FILE__,__LINE__ ,_files[index].c_str()); + else + { + log("%s,%d,Fail to play file:%s", __FILE__, __LINE__, _files[index].c_str()); } } - log("diff time:%lf",utils::gettime() - startTime); + log("diff time:%lf", utils::gettime() - startTime); }); - playItem->setPositionNormalized(Vec2(0.5f,0.5f)); + playItem->setPositionNormalized(Vec2(0.5f, 0.5f)); this->addChild(playItem); _playItem = playItem; - + return ret; } -PlaySimultaneouslyTest::~PlaySimultaneouslyTest() -{ -} +PlaySimultaneouslyTest::~PlaySimultaneouslyTest() {} std::string PlaySimultaneouslyTest::title() const { @@ -560,7 +580,7 @@ std::string PlaySimultaneouslyTest::title() const bool AudioProfileTest::init() { auto ret = AudioEngineTestDemo::init(); - + char text[30]; _files[0] = "background.mp3"; #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC @@ -568,82 +588,81 @@ bool AudioProfileTest::init() #else _files[1] = "background.ogg"; #endif - + std::string fontFilePath = "fonts/arial.ttf"; - _minDelay = 1.0f; - _time = 0.0f; + _minDelay = 1.0f; + _time = 0.0f; - _audioProfile.name = "AudioProfileTest"; + _audioProfile.name = "AudioProfileTest"; _audioProfile.maxInstances = 3; - _audioProfile.minDelay = 1.0; - - Vec2 pos(0.5f,0.7f); - for(int index = 0; index < FILE_COUNT; ++index){ - sprintf(text,"play %s",_files[index].c_str()); - - auto playItem = TextButton::create(text, [&](TextButton* button){ + _audioProfile.minDelay = 1.0; + + Vec2 pos(0.5f, 0.7f); + for (int index = 0; index < FILE_COUNT; ++index) + { + sprintf(text, "play %s", _files[index].c_str()); + + auto playItem = TextButton::create(text, [&](TextButton* button) { int index = button->getTag(); - auto id = AudioEngine::play2d(_files[index], false, 1.0f, &_audioProfile); - if(id != AudioEngine::INVALID_AUDIO_ID){ + auto id = AudioEngine::play2d(_files[index], false, 1.0f, &_audioProfile); + if (id != AudioEngine::INVALID_AUDIO_ID) + { _time = _minDelay; _audioCount += 1; char show[30]; - sprintf(show,"audio count:%d",_audioCount); + sprintf(show, "audio count:%d", _audioCount); _showLabel->setString(show); - - AudioEngine::setFinishCallback(id, [&](int id, std::string_view filePath){ + + AudioEngine::setFinishCallback(id, [&](int id, std::string_view filePath) { _audioCount -= 1; char show[30]; - sprintf(show,"audio count:%d",_audioCount); + sprintf(show, "audio count:%d", _audioCount); _showLabel->setString(show); }); } - }); playItem->setTag(index); playItem->setPositionNormalized(pos); this->addChild(playItem); pos.y -= 0.15f; - } - + Vec2 origin = Director::getInstance()->getVisibleOrigin(); - Size size = Director::getInstance()->getVisibleSize(); - - auto profileInfoLabel = Label::createWithTTF("AudioProfile Info:\n max instance:3 \n minimum delay:1.0", fontFilePath, 12); + Size size = Director::getInstance()->getVisibleSize(); + + auto profileInfoLabel = + Label::createWithTTF("AudioProfile Info:\n max instance:3 \n minimum delay:1.0", fontFilePath, 12); profileInfoLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT); profileInfoLabel->setPosition(Vec2(origin.x, origin.y + size.height * 0.65f)); addChild(profileInfoLabel); - + _audioCount = 0; - _showLabel = Label::createWithTTF("audio count:0", fontFilePath, 12); + _showLabel = Label::createWithTTF("audio count:0", fontFilePath, 12); _showLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_LEFT); _showLabel->setPosition(Vec2(origin.x, origin.y + size.height * 0.5f)); addChild(_showLabel); - + auto timeSlider = SliderEx::create(); timeSlider->setEnabled(false); timeSlider->setPositionNormalized(pos); addChild(timeSlider); _timeSlider = timeSlider; - + this->schedule(CC_CALLBACK_1(AudioProfileTest::update, this), 0.05f, "update_key"); - + return ret; } void AudioProfileTest::update(float dt) { - if(_time > 0.0f) + if (_time > 0.0f) { _time -= dt; ((SliderEx*)_timeSlider)->setRatio(_time / _minDelay); } } -AudioProfileTest::~AudioProfileTest() -{ -} +AudioProfileTest::~AudioProfileTest() {} std::string AudioProfileTest::title() const { @@ -659,29 +678,26 @@ std::string AudioProfileTest::subtitle() const bool InvalidAudioFileTest::init() { auto ret = AudioEngineTestDemo::init(); - - auto playItem = TextButton::create("play unsupported media type", [&](TextButton* button){ + + auto playItem = TextButton::create("play unsupported media type", [&](TextButton* button) { #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC AudioEngine::play2d("background.ogg"); #elif CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - AudioEngine::play2d("background.caf"); + AudioEngine::play2d("background.caf"); #endif }); playItem->setPositionNormalized(Vec2(0.5f, 0.6f)); this->addChild(playItem); - - auto playItem2 = TextButton::create("play not-existent file", [&](TextButton* button){ - AudioEngine::play2d("not-existent file.mp3"); - }); + + auto playItem2 = TextButton::create("play not-existent file", + [&](TextButton* button) { AudioEngine::play2d("not-existent file.mp3"); }); playItem2->setPositionNormalized(Vec2(0.5f, 0.4f)); this->addChild(playItem2); - + return ret; } -InvalidAudioFileTest::~InvalidAudioFileTest() -{ -} +InvalidAudioFileTest::~InvalidAudioFileTest() {} std::string InvalidAudioFileTest::title() const { @@ -697,19 +713,16 @@ std::string InvalidAudioFileTest::subtitle() const bool LargeAudioFileTest::init() { auto ret = AudioEngineTestDemo::init(); - - auto playItem = TextButton::create("play large audio file", [&](TextButton* button){ - AudioEngine::play2d("audio/LuckyDay.mp3"); - }); + + auto playItem = TextButton::create("play large audio file", + [&](TextButton* button) { AudioEngine::play2d("audio/LuckyDay.mp3"); }); playItem->setPositionNormalized(Vec2::ANCHOR_MIDDLE); this->addChild(playItem); - + return ret; } -LargeAudioFileTest::~LargeAudioFileTest() -{ -} +LargeAudioFileTest::~LargeAudioFileTest() {} std::string LargeAudioFileTest::title() const { @@ -722,36 +735,33 @@ bool AudioIssue18597Test::init() { auto& layerSize = this->getContentSize(); - //test case for https://github.com/cocos2d/cocos2d-x/issues/18597 - this->schedule([=](float dt) - { - CCLOG("issues 18597 audio crash test"); - for (int i = 0; i< 2;++i) - { - auto id = AudioEngine::play2d("audio/MUS_BGM_Battle_Round1_v1.caf", true, 1.0f); - this->runAction(Sequence::create( - DelayTime::create(8.0f), - CallFunc::create([=]() - { - AudioEngine::stop(id); - }), - nullptr - )); - } - }, 2.0, 10000, 0.0, "audio test"); + // test case for https://github.com/cocos2d/cocos2d-x/issues/18597 + this->schedule( + [=](float dt) { + CCLOG("issues 18597 audio crash test"); + for (int i = 0; i < 2; ++i) + { + auto id = AudioEngine::play2d("audio/MUS_BGM_Battle_Round1_v1.caf", true, 1.0f); + this->runAction(Sequence::create(DelayTime::create(8.0f), + CallFunc::create([=]() { AudioEngine::stop(id); }), nullptr)); + } + }, + 2.0, 10000, 0.0, "audio test"); // add label to show the side effect of "UnqueueBuffers Before alSourceStop" - _time = 0.0; + _time = 0.0; auto labelTime = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "time: "); labelTime->setPosition(layerSize.width * 0.5f, layerSize.height * 0.5f); labelTime->setTag(999); this->addChild(labelTime); // update label quickly - this->schedule([=](float dt){ - _time += dt; - char timeString[20] = {0}; - sprintf(timeString, "Time %2.2f", _time); - dynamic_castclick me"); + _richText = RichText::createWithXML( + "This link will redirect you to google: click me"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -959,7 +1003,7 @@ bool UIRichTextXMLUrl::init() return false; } -void UIRichTextXMLUrl::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLUrl::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -982,21 +1026,23 @@ void UIRichTextXMLUrl::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLUrl::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLUrl::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLUrl::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLUrl::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1011,16 +1057,17 @@ bool UIRichTextXMLUrlImg::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLUrlImg::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1028,7 +1075,8 @@ bool UIRichTextXMLUrlImg::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLUrlImg::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1036,20 +1084,22 @@ bool UIRichTextXMLUrlImg::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLUrlImg::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("This link will redirect you to google: "); + _richText = RichText::createWithXML( + "This link will redirect you to google: "); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1060,7 +1110,7 @@ bool UIRichTextXMLUrlImg::init() return false; } -void UIRichTextXMLUrlImg::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLUrlImg::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1083,21 +1133,23 @@ void UIRichTextXMLUrlImg::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLUrlImg::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLUrlImg::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLUrlImg::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLUrlImg::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1112,16 +1164,17 @@ bool UIRichTextXMLFace::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLFace::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1129,7 +1182,8 @@ bool UIRichTextXMLFace::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLFace::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1137,20 +1191,22 @@ bool UIRichTextXMLFace::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLFace::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("Marker Felt 20.Arial 20.Thonburi 24 blue"); + _richText = RichText::createWithXML( + "Marker Felt 20.Arial " + "20.Thonburi 24 blue"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(120, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1161,7 +1217,7 @@ bool UIRichTextXMLFace::init() return false; } -void UIRichTextXMLFace::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLFace::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1184,21 +1240,23 @@ void UIRichTextXMLFace::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLFace::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLFace::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLFace::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLFace::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1213,16 +1271,17 @@ bool UIRichTextXMLBR::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("RichText", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLBR::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1230,7 +1289,8 @@ bool UIRichTextXMLBR::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLBR::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1238,20 +1298,21 @@ bool UIRichTextXMLBR::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLBR::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("this is one line.
      this should be in another line.
      and this is another line"); + _richText = RichText::createWithXML( + "this is one line.
      this should be in another line.
      and this is another line"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1262,7 +1323,7 @@ bool UIRichTextXMLBR::init() return false; } -void UIRichTextXMLBR::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLBR::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1285,21 +1346,23 @@ void UIRichTextXMLBR::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLBR::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLBR::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLBR::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLBR::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1314,12 +1377,12 @@ bool UIRichTextXMLInvalid::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Invalid XML test", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Invalid XML test", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - // RichText _richText = RichText::createWithXML("this is an invalid xml. no closing tag"); if (_richText) @@ -1330,7 +1393,6 @@ bool UIRichTextXMLInvalid::init() _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1351,16 +1413,17 @@ bool UIRichTextXMLOutline::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Outline", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Outline", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLOutline::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1368,7 +1431,8 @@ bool UIRichTextXMLOutline::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLOutline::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1376,20 +1440,22 @@ bool UIRichTextXMLOutline::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLOutline::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("OUTLINE"); + _richText = RichText::createWithXML( + "OUTLINE"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1400,7 +1466,7 @@ bool UIRichTextXMLOutline::init() return false; } -void UIRichTextXMLOutline::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLOutline::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1423,21 +1489,23 @@ void UIRichTextXMLOutline::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLOutline::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLOutline::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLOutline::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLOutline::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1452,16 +1520,17 @@ bool UIRichTextXMLShadow::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Shadow", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Shadow", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLShadow::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1469,7 +1538,8 @@ bool UIRichTextXMLShadow::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLShadow::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1477,20 +1547,22 @@ bool UIRichTextXMLShadow::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLShadow::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("SHADOW"); + _richText = RichText::createWithXML( + "SHADOW"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(150, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1501,7 +1573,7 @@ bool UIRichTextXMLShadow::init() return false; } -void UIRichTextXMLShadow::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLShadow::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1524,21 +1596,23 @@ void UIRichTextXMLShadow::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLShadow::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLShadow::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLShadow::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLShadow::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1553,16 +1627,17 @@ bool UIRichTextXMLGlow::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Glow", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Glow", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLGlow::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1570,7 +1645,8 @@ bool UIRichTextXMLGlow::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLGlow::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1578,20 +1654,21 @@ bool UIRichTextXMLGlow::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLGlow::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("GLOW"); + _richText = RichText::createWithXML( + "GLOW"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1602,7 +1679,7 @@ bool UIRichTextXMLGlow::init() return false; } -void UIRichTextXMLGlow::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLGlow::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1625,21 +1702,23 @@ void UIRichTextXMLGlow::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLGlow::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLGlow::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLGlow::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLGlow::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1654,16 +1733,17 @@ bool UIRichTextXMLExtend::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Extend", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Extend", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLExtend::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1671,7 +1751,8 @@ bool UIRichTextXMLExtend::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLExtend::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1679,7 +1760,8 @@ bool UIRichTextXMLExtend::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLExtend::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); @@ -1690,46 +1772,45 @@ bool UIRichTextXMLExtend::init() return make_pair(ValueMap(), richElement); }); RichText::setTagDescription("CloseSelected", false, [](const ValueMap& tagAttrValueMap) { - RichElementImage* richElement = RichElementImage::create(0, Color3B::WHITE, 255, "cocosui/CloseSelected.png"); + RichElementImage* richElement = + RichElementImage::create(0, Color3B::WHITE, 255, "cocosui/CloseSelected.png"); return make_pair(ValueMap(), richElement); }); /* Defaults */ ValueMap defaults; - defaults[RichText::KEY_FONT_COLOR_STRING] = "#FFF"; - defaults[RichText::KEY_FONT_SIZE] = 12.0f; - defaults[RichText::KEY_FONT_FACE] = "fonts/Marker Felt.ttf"; + defaults[RichText::KEY_FONT_COLOR_STRING] = "#FFF"; + defaults[RichText::KEY_FONT_SIZE] = 12.0f; + defaults[RichText::KEY_FONT_FACE] = "fonts/Marker Felt.ttf"; defaults[RichText::KEY_ANCHOR_FONT_COLOR_STRING] = "#f0f8ff"; - defaults[RichText::KEY_ANCHOR_TEXT_BOLD] = false; - defaults[RichText::KEY_ANCHOR_TEXT_ITALIC] = false; - //defaults[RichText::KEY_ANCHOR_TEXT_LINE] = RichText::VALUE_TEXT_LINE_NONE; - //defaults[RichText::KEY_ANCHOR_TEXT_LINE] = RichText::VALUE_TEXT_LINE_DEL; + defaults[RichText::KEY_ANCHOR_TEXT_BOLD] = false; + defaults[RichText::KEY_ANCHOR_TEXT_ITALIC] = false; + // defaults[RichText::KEY_ANCHOR_TEXT_LINE] = RichText::VALUE_TEXT_LINE_NONE; + // defaults[RichText::KEY_ANCHOR_TEXT_LINE] = RichText::VALUE_TEXT_LINE_DEL; defaults[RichText::KEY_ANCHOR_TEXT_LINE] = RichText::VALUE_TEXT_LINE_UNDER; - //defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_NONE; - //defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_OUTLINE; - //defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_SHADOW; - //defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_GLOW; - defaults[RichText::KEY_ANCHOR_TEXT_OUTLINE_COLOR] = "#D2B48C"; - defaults[RichText::KEY_ANCHOR_TEXT_OUTLINE_SIZE] = 4; - defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_COLOR] = "#4169E1"; - defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_OFFSET_WIDTH] = 4.0f; + // defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_NONE; + // defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_OUTLINE; + // defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_SHADOW; + // defaults[RichText::KEY_ANCHOR_TEXT_STYLE] = RichText::VALUE_TEXT_STYLE_GLOW; + defaults[RichText::KEY_ANCHOR_TEXT_OUTLINE_COLOR] = "#D2B48C"; + defaults[RichText::KEY_ANCHOR_TEXT_OUTLINE_SIZE] = 4; + defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_COLOR] = "#4169E1"; + defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_OFFSET_WIDTH] = 4.0f; defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_OFFSET_HEIGHT] = -4.0f; - defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_BLUR_RADIUS] = 0; - defaults[RichText::KEY_ANCHOR_TEXT_GLOW_COLOR] = "#AFEEEE"; + defaults[RichText::KEY_ANCHOR_TEXT_SHADOW_BLUR_RADIUS] = 0; + defaults[RichText::KEY_ANCHOR_TEXT_GLOW_COLOR] = "#AFEEEE"; // RichText - _richText = RichText::createWithXML("CloseNormal-tag:


      CloseSelected-tag:
      ", - defaults, - [](std::string_view url) { - Application::getInstance()->openURL(url); - }); + _richText = RichText::createWithXML( + "CloseNormal-tag:


      CloseSelected-tag:
      ", + defaults, [](std::string_view url) { Application::getInstance()->openURL(url); }); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(100, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); _richText->setLocalZOrder(10); - _widget->addChild(_richText); // test remove all children, this call won't effect the test @@ -1740,7 +1821,7 @@ bool UIRichTextXMLExtend::init() return false; } -void UIRichTextXMLExtend::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLExtend::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1763,21 +1844,23 @@ void UIRichTextXMLExtend::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLExtend::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLExtend::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLExtend::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLExtend::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } @@ -1792,16 +1875,17 @@ bool UIRichTextXMLSpace::init() Size widgetSize = _widget->getContentSize(); // Add the alert - Text *alert = Text::create("Space", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Space", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.125)); _widget->addChild(alert); - Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setTouchEnabled(true); button->setTitleText("switch"); - button->setPosition(Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); + button->setPosition( + Vec2(widgetSize.width * 1 / 3, widgetSize.height / 2.0f + button->getContentSize().height * 2.5)); button->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLSpace::touchEvent, this)); button->setLocalZOrder(10); _widget->addChild(button); @@ -1809,7 +1893,8 @@ bool UIRichTextXMLSpace::init() Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setTouchEnabled(true); button2->setTitleText("wrap mode"); - button2->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button2->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button2->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLSpace::switchWrapMode, this)); button2->setLocalZOrder(10); _widget->addChild(button2); @@ -1817,13 +1902,17 @@ bool UIRichTextXMLSpace::init() Button* button3 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button3->setTouchEnabled(true); button3->setTitleText("alignment"); - button3->setPosition(Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); + button3->setPosition( + Vec2(widgetSize.width * 2 / 3, widgetSize.height / 2.0f + button2->getContentSize().height * 2.5)); button3->addTouchEventListener(CC_CALLBACK_2(UIRichTextXMLSpace::switchAlignment, this)); button3->setLocalZOrder(10); _widget->addChild(button3); // RichText - _richText = RichText::createWithXML("words should be divided with space.

      HELLO WORLD

      HELLO WORLD"); + _richText = RichText::createWithXML( + "words should be divided with space.

      HELLO " + "WORLD

      HELLO WORLD"); _richText->ignoreContentAdaptWithSize(false); _richText->setContentSize(Size(50, 100)); _richText->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2)); @@ -1839,7 +1928,7 @@ bool UIRichTextXMLSpace::init() return false; } -void UIRichTextXMLSpace::touchEvent(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLSpace::touchEvent(Ref* pSender, Widget::TouchEventType type) { switch (type) { @@ -1862,21 +1951,23 @@ void UIRichTextXMLSpace::touchEvent(Ref *pSender, Widget::TouchEventType type) } } -void UIRichTextXMLSpace::switchWrapMode(Ref *pSender, Widget::TouchEventType type) +void UIRichTextXMLSpace::switchWrapMode(Ref* pSender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { auto wrapMode = _richText->getWrapMode(); - wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; + wrapMode = (wrapMode == RichText::WRAP_PER_WORD) ? RichText::WRAP_PER_CHAR : RichText::WRAP_PER_WORD; _richText->setWrapMode(wrapMode); } } -void UIRichTextXMLSpace::switchAlignment(Ref *sender, Widget::TouchEventType type) { +void UIRichTextXMLSpace::switchAlignment(Ref* sender, Widget::TouchEventType type) +{ if (type == Widget::TouchEventType::ENDED) { auto alignment = _richText->getHorizontalAlignment(); - alignment = static_cast((static_cast::type>(alignment) + 1) % 3); + alignment = static_cast( + (static_cast::type>(alignment) + 1) % 3); _richText->setHorizontalAlignment(alignment); } } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.h index fb4923e8842b..515ce0573d17 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -22,8 +22,6 @@ THE SOFTWARE. ****************************************************************************/ - - #ifndef __TestCpp__UIRichTextTest__ #define __TestCpp__UIRichTextTest__ @@ -161,7 +159,7 @@ class UIRichTextXMLUrlImg : public UIScene { public: CREATE_FUNC(UIRichTextXMLUrlImg); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); @@ -214,7 +212,7 @@ class UIRichTextXMLOutline : public UIScene { public: CREATE_FUNC(UIRichTextXMLOutline); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); @@ -228,7 +226,7 @@ class UIRichTextXMLShadow : public UIScene { public: CREATE_FUNC(UIRichTextXMLShadow); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); @@ -242,7 +240,7 @@ class UIRichTextXMLGlow : public UIScene { public: CREATE_FUNC(UIRichTextXMLGlow); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); @@ -256,7 +254,7 @@ class UIRichTextXMLExtend : public UIScene { public: CREATE_FUNC(UIRichTextXMLExtend); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); @@ -270,7 +268,7 @@ class UIRichTextXMLSpace : public UIScene { public: CREATE_FUNC(UIRichTextXMLSpace); - + bool init() override; void touchEvent(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); void switchWrapMode(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp index f54a10237670..ca2801e6e464 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -64,37 +64,30 @@ UIScale9SpriteTests::UIScale9SpriteTests() } // UIScale9SpriteTest -UIScale9SpriteTest::UIScale9SpriteTest() -{ - -} +UIScale9SpriteTest::UIScale9SpriteTest() {} -UIScale9SpriteTest::~UIScale9SpriteTest() -{ -} +UIScale9SpriteTest::~UIScale9SpriteTest() {} bool UIScale9SpriteTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - - auto moveTo = MoveBy::create(1.0f, Vec2(30.0f,0.0f)); + + auto moveTo = MoveBy::create(1.0f, Vec2(30.0f, 0.0f)); auto moveBack = moveTo->reverse(); auto rotateBy = RotateBy::create(1.0f, 180.0f); - auto scaleBy = ScaleTo::create(1.0f, -2.0f); - auto action = Sequence::create(moveTo,moveBack, rotateBy,scaleBy, NULL); + auto scaleBy = ScaleTo::create(1.0f, -2.0f); + auto action = Sequence::create(moveTo, moveBack, rotateBy, scaleBy, NULL); - - Sprite *normalSprite1 = Sprite::create("cocosui/animationbuttonnormal.png"); + Sprite* normalSprite1 = Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite1->setPosition(100, 270); normalSprite1->setFlippedY(true); - this->addChild(normalSprite1); normalSprite1->runAction((FiniteTimeAction*)action->clone()); - - ui::Scale9Sprite *normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + + ui::Scale9Sprite* normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite2->setPosition(120, 270); normalSprite2->setScale9Enabled(false); normalSprite2->setOpacity(100); @@ -102,21 +95,21 @@ bool UIScale9SpriteTest::init() this->addChild(normalSprite2); normalSprite2->setColor(Color3B::GREEN); normalSprite2->runAction(action); - - auto action2 = action->clone(); - ui::Scale9Sprite *sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + + auto action2 = action->clone(); + ui::Scale9Sprite* sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp1->setPosition(100, 160); sp1->setScale(1.2f); - sp1->setContentSize(Size(100.0f,100.0f)); + sp1->setContentSize(Size(100.0f, 100.0f)); sp1->setColor(Color3B::GREEN); this->addChild(sp1); sp1->runAction((FiniteTimeAction*)action2); - cocos2d::ui::Scale9Sprite *sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + cocos2d::ui::Scale9Sprite* sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp2->setPosition(350.0f, 160.0f); sp2->setPreferredSize(sp1->getContentSize() * 1.2f); sp2->setColor(Color3B::GREEN); - sp2->setContentSize(Size(100.0f,100.0f)); + sp2->setContentSize(Size(100.0f, 100.0f)); this->addChild(sp2); auto action3 = action->clone(); @@ -127,111 +120,98 @@ bool UIScale9SpriteTest::init() return false; } +UIScale9SpriteHierarchialTest::UIScale9SpriteHierarchialTest() {} -UIScale9SpriteHierarchialTest::UIScale9SpriteHierarchialTest() -{ - -} - -UIScale9SpriteHierarchialTest::~UIScale9SpriteHierarchialTest() -{ -} +UIScale9SpriteHierarchialTest::~UIScale9SpriteHierarchialTest() {} bool UIScale9SpriteHierarchialTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - - auto moveTo = MoveBy::create(1.0f, Vec2(30.0f,0.0f)); + + auto moveTo = MoveBy::create(1.0f, Vec2(30.0f, 0.0f)); auto moveBack = moveTo->reverse(); auto rotateBy = RotateBy::create(1.0f, 180.0f); - auto fadeOut = FadeOut::create(2.0f); - auto scaleTo = ScaleTo::create(1.0f, 2.0f); - auto action = Sequence::create(moveTo,moveBack, rotateBy,fadeOut,scaleTo, NULL); - - Sprite *normalSprite1 = Sprite::create("cocosui/animationbuttonnormal.png"); + auto fadeOut = FadeOut::create(2.0f); + auto scaleTo = ScaleTo::create(1.0f, 2.0f); + auto action = Sequence::create(moveTo, moveBack, rotateBy, fadeOut, scaleTo, NULL); + + Sprite* normalSprite1 = Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite1->setPosition(100, 270); normalSprite1->setCascadeColorEnabled(true); normalSprite1->setCascadeOpacityEnabled(true); normalSprite1->setColor(Color3B::GREEN); - + this->addChild(normalSprite1); normalSprite1->runAction((FiniteTimeAction*)action->clone()); - - ui::Scale9Sprite *normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + + ui::Scale9Sprite* normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite2->setScale9Enabled(false); normalSprite2->setOpacity(100); normalSprite1->addChild(normalSprite2); - - auto action2 = action->clone(); - ui::Scale9Sprite *sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + + auto action2 = action->clone(); + ui::Scale9Sprite* sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp1->setPosition(200.0f, 160.0f); sp1->setScale(1.2f); - sp1->setContentSize(Size(100.0f,100.0f)); + sp1->setContentSize(Size(100.0f, 100.0f)); sp1->setColor(Color3B::GREEN); this->addChild(sp1); sp1->runAction((FiniteTimeAction*)action2); - - cocos2d::ui::Scale9Sprite *sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); + + cocos2d::ui::Scale9Sprite* sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp2->setPreferredSize(sp1->getContentSize() * 1.2f); sp2->setColor(Color3B::GREEN); sp2->setFlippedX(true); - sp2->setContentSize(Size(100.0f,100.0f)); + sp2->setContentSize(Size(100.0f, 100.0f)); sp1->addChild(sp2); - + return true; } return false; } -UIScale9SpriteTouchTest::UIScale9SpriteTouchTest() -{ - -} +UIScale9SpriteTouchTest::UIScale9SpriteTouchTest() {} -UIScale9SpriteTouchTest::~UIScale9SpriteTouchTest() -{ -} +UIScale9SpriteTouchTest::~UIScale9SpriteTouchTest() {} bool UIScale9SpriteTouchTest::init() { if (UIScene::init()) { - + Vec2 origin = Director::getInstance()->getVisibleOrigin(); - Size size = Director::getInstance()->getVisibleSize(); - + Size size = Director::getInstance()->getVisibleSize(); + auto containerForSprite1 = Node::create(); - auto sprite1 = cocos2d::ui::Scale9Sprite::create("Images/CyanSquare.png"); - sprite1->setPosition(origin+Vec2(size.width/2, size.height/2) + Vec2(-80.0f, 80.0f)); + auto sprite1 = cocos2d::ui::Scale9Sprite::create("Images/CyanSquare.png"); + sprite1->setPosition(origin + Vec2(size.width / 2, size.height / 2) + Vec2(-80.0f, 80.0f)); containerForSprite1->addChild(sprite1); addChild(containerForSprite1, 10); - - auto sprite2 = ui::Scale9Sprite::create("Images/MagentaSquare.png"); - sprite2->setPosition(origin+Vec2(size.width/2, size.height/2)); + auto sprite2 = ui::Scale9Sprite::create("Images/MagentaSquare.png"); + sprite2->setPosition(origin + Vec2(size.width / 2, size.height / 2)); addChild(sprite2, 20); - + auto sprite3 = ui::Scale9Sprite::create("Images/YellowSquare.png"); sprite3->setPosition(Vec2(0.0f, 0.0f)); sprite3->setCascadeOpacityEnabled(false); sprite2->addChild(sprite3, 1); - // Make sprite1 touchable auto listener1 = EventListenerTouchOneByOne::create(); listener1->setSwallowTouches(true); - - listener1->onTouchBegan = [](Touch* touch, Event* event){ + + listener1->onTouchBegan = [](Touch* touch, Event* event) { auto target = static_cast(event->getCurrentTarget()); - + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); - Size s = target->getContentSize(); - Rect rect = Rect(0, 0, s.width, s.height); - + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + if (rect.containsPoint(locationInNode)) { log("sprite began... x = %f, y = %f", locationInNode.x, locationInNode.y); @@ -240,13 +220,13 @@ bool UIScale9SpriteTouchTest::init() } return false; }; - - listener1->onTouchMoved = [](Touch* touch, Event* event){ + + listener1->onTouchMoved = [](Touch* touch, Event* event) { auto target = static_cast(event->getCurrentTarget()); target->setPosition(target->getPosition() + touch->getDelta()); }; - - listener1->onTouchEnded = [=](Touch* touch, Event* event){ + + listener1->onTouchEnded = [=](Touch* touch, Event* event) { auto target = static_cast(event->getCurrentTarget()); log("sprite onTouchesEnded.. "); target->setOpacity(255); @@ -254,16 +234,16 @@ bool UIScale9SpriteTouchTest::init() { containerForSprite1->setLocalZOrder(100); } - else if(target == sprite1) + else if (target == sprite1) { containerForSprite1->setLocalZOrder(0); } }; - + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, sprite1); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite2); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite3); - + return true; } return false; @@ -271,201 +251,202 @@ bool UIScale9SpriteTouchTest::init() bool UIS9BatchNodeBasic::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto sprite = Sprite::create("Images/blocks9.png"); - + auto blocks = ui::Scale9Sprite::create(); - + blocks->updateWithSprite(sprite, Rect(0, 0, 96, 96), false, Rect(0, 0, 96, 96)); - + blocks->setPosition(Vec2(x, y)); - + this->addChild(blocks); - - + return true; } - return false; } bool UIS9FrameNameSpriteSheet::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png"); blocks->setInsetLeft(0); blocks->setInsetRight(0); blocks->setInsetTop(0); blocks->setInsetBottom(0); - blocks->setPreferredSize(Size(400.0f,80.0f)); + blocks->setPreferredSize(Size(400.0f, 80.0f)); blocks->setPosition(Vec2(x, y)); - + this->addChild(blocks); - return true; } - + return false; } - bool UIS9FrameNameSpriteSheetRotated::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - - blocks->setPreferredSize(Size(400.0f,80.0f)); - + + blocks->setPreferredSize(Size(400.0f, 80.0f)); + blocks->setPosition(Vec2(x, y)); - + this->addChild(blocks); - + return true; } - + return false; } bool UIS9FrameNameSpriteSheetCropped::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9c.png"); - blocks->setPreferredSize(Size(400.0f,80.0f)); + blocks->setPreferredSize(Size(400.0f, 80.0f)); blocks->setPosition(Vec2(x, y + 45)); this->addChild(blocks); - + auto blocks2 = ui::Scale9Sprite::create("Images/blocks9c.png"); - blocks2->setPreferredSize(Size(400.0f,80.0f)); + blocks2->setPreferredSize(Size(400.0f, 80.0f)); blocks2->setPosition(Vec2(x, y - 45)); this->addChild(blocks2); - + return true; } - + return false; } bool UIS9FrameNameSpriteSheetCroppedRotated::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9cr.png"); - blocks->setPreferredSize(Size(400.0f,80.0f)); + blocks->setPreferredSize(Size(400.0f, 80.0f)); blocks->setPosition(Vec2(x, y + 45)); this->addChild(blocks); - + auto blocks2 = ui::Scale9Sprite::create("Images/blocks9cr.png"); - blocks2->setPreferredSize(Size(400.0f,80.0f)); + blocks2->setPreferredSize(Size(400.0f, 80.0f)); blocks2->setPosition(Vec2(x, y - 45)); this->addChild(blocks2); - + return true; } - + return false; } bool UIS9FrameNameSpriteSheetCroppedSimple::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9c.png"); blocks->setRenderingType(Scale9Sprite::RenderingType::SIMPLE); - blocks->setPreferredSize(Size(400.0f,80.0f)); + blocks->setPreferredSize(Size(400.0f, 80.0f)); blocks->setPosition(Vec2(x, y + 45)); this->addChild(blocks); - + auto blocksSprite = Sprite::createWithSpriteFrameName("blocks9c.png"); - blocksSprite->setScale(400/blocksSprite->getContentSize().width, 80/blocksSprite->getContentSize().height); + blocksSprite->setScale(400 / blocksSprite->getContentSize().width, 80 / blocksSprite->getContentSize().height); blocksSprite->setPosition(Vec2(x, y - 45)); this->addChild(blocksSprite); - + return true; } - + return false; } bool UIS9FrameNameSpriteSheetCroppedRotatedSimple::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto blocks = ui::Scale9Sprite::createWithSpriteFrameName("blocks9cr.png"); blocks->setRenderingType(Scale9Sprite::RenderingType::SIMPLE); - blocks->setPreferredSize(Size(400.0f,80.0f)); + blocks->setPreferredSize(Size(400.0f, 80.0f)); blocks->setPosition(Vec2(x, y + 45)); this->addChild(blocks); - + auto blocksSprite = Sprite::createWithSpriteFrameName("blocks9cr.png"); - blocksSprite->setScale(400/blocksSprite->getContentSize().width, 80/blocksSprite->getContentSize().height); + blocksSprite->setScale(400 / blocksSprite->getContentSize().width, 80 / blocksSprite->getContentSize().height); blocksSprite->setPosition(Vec2(x, y - 45)); this->addChild(blocksSprite); - + return true; } - + return false; } - bool UIS9BatchNodeScaledNoInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + // scaled without insets auto sprite_scaled = Sprite::create("Images/blocks9.png"); - + auto blocks_scaled = ui::Scale9Sprite::create(); blocks_scaled->updateWithSprite(sprite_scaled, Rect(0, 0, 96, 96), false, Rect(0, 0, 96, 96)); - + blocks_scaled->setPosition(Vec2(x, y)); - - blocks_scaled->setContentSize(Size(96 * 4, 96*2)); - + + blocks_scaled->setContentSize(Size(96 * 4, 96 * 2)); + this->addChild(blocks_scaled); return true; } @@ -474,18 +455,19 @@ bool UIS9BatchNodeScaledNoInsets::init() bool UIS9FrameNameSpriteSheetScaledNoInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto blocks_scaled = ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png"); - + blocks_scaled->setPosition(Vec2(x, y)); - - blocks_scaled->setContentSize(Size(96 * 4, 96*2)); - + + blocks_scaled->setContentSize(Size(96 * 4, 96 * 2)); + this->addChild(blocks_scaled); return true; } @@ -494,46 +476,46 @@ bool UIS9FrameNameSpriteSheetScaledNoInsets::init() bool UIS9FrameNameSpriteSheetRotatedScaledNoInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto blocks_scaled = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - + blocks_scaled->setPosition(Vec2(x, y)); - - blocks_scaled->setContentSize(Size(96 * 4, 96*2)); - + + blocks_scaled->setContentSize(Size(96 * 4, 96 * 2)); + this->addChild(blocks_scaled); - + return true; } return false; } - bool UIS9BatchNodeScaleWithCapInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto sprite_scaled_with_insets = Sprite::create("Images/blocks9.png"); - + auto blocks_scaled_with_insets = ui::Scale9Sprite::create(); - - blocks_scaled_with_insets->updateWithSprite(sprite_scaled_with_insets, Rect(0, 0, 96, 96), false, Rect(32, 32, 32, 32)); - + + blocks_scaled_with_insets->updateWithSprite(sprite_scaled_with_insets, Rect(0, 0, 96, 96), false, + Rect(32, 32, 32, 32)); + blocks_scaled_with_insets->setContentSize(Size(96 * 4.5, 96 * 2.5)); - + blocks_scaled_with_insets->setPosition(Vec2(x, y)); - + this->addChild(blocks_scaled_with_insets); return true; } @@ -542,19 +524,19 @@ bool UIS9BatchNodeScaleWithCapInsets::init() bool UIS9FrameNameSpriteSheetInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - - auto blocks_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + + auto blocks_with_insets = + ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); + blocks_with_insets->setPosition(Vec2(x, y)); - + this->addChild(blocks_with_insets); return true; } @@ -563,19 +545,21 @@ bool UIS9FrameNameSpriteSheetInsets::init() bool UIS9FrameNameSpriteSheetInsetsScaled::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - auto blocks_scaled_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + + auto blocks_scaled_with_insets = + ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); + blocks_scaled_with_insets->setContentSize(Size(96 * 4.5, 96 * 2.5)); - + blocks_scaled_with_insets->setPosition(Vec2(x, y)); - + this->addChild(blocks_scaled_with_insets); return true; } @@ -584,16 +568,17 @@ bool UIS9FrameNameSpriteSheetInsetsScaled::init() bool UIS9FrameNameSpriteSheetRotatedInsets::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto blocks_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png", Rect(32, 32, 32, 32)); - + blocks_with_insets->setPosition(Vec2(x, y)); - + this->addChild(blocks_with_insets); return true; } @@ -602,31 +587,32 @@ bool UIS9FrameNameSpriteSheetRotatedInsets::init() bool UIS9_TexturePacker::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_ui_plist); - + float x = winSize.width / 4; float y = 0 + (winSize.height / 2); - + auto s = ui::Scale9Sprite::createWithSpriteFrameName("button_normal.png"); - + s->setPosition(Vec2(x, y)); - + s->setContentSize(Size(14 * 16, 10 * 16)); - + this->addChild(s); - - x = winSize.width * 3/4; - + + x = winSize.width * 3 / 4; + auto s2 = ui::Scale9Sprite::createWithSpriteFrameName("button_actived.png"); - + s2->setPosition(Vec2(x, y)); - + s2->setContentSize(Size(14 * 16, 10 * 16)); - + this->addChild(s2); return true; } @@ -635,19 +621,21 @@ bool UIS9_TexturePacker::init() bool UIS9FrameNameSpriteSheetRotatedInsetsScaled::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - - auto blocks_scaled_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + + auto blocks_scaled_with_insets = + ui::Scale9Sprite::createWithSpriteFrameName("blocks9ss/blocks9.png", Rect(32, 32, 32, 32)); blocks_scaled_with_insets->setContentSize(Size(96 * 4.5, 96 * 2.5)); - + blocks_scaled_with_insets->setPosition(Vec2(x, y)); - + this->addChild(blocks_scaled_with_insets); return true; } @@ -656,19 +644,20 @@ bool UIS9FrameNameSpriteSheetRotatedInsetsScaled::init() bool UIS9FrameNameSpriteSheetRotatedSetCapInsetLater::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); auto blocks_scaled_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); blocks_scaled_with_insets->setInsetLeft(32); blocks_scaled_with_insets->setInsetRight(32); - blocks_scaled_with_insets->setPreferredSize(Size(32*5.5f, 32*4)); + blocks_scaled_with_insets->setPreferredSize(Size(32 * 5.5f, 32 * 4)); blocks_scaled_with_insets->setPosition(Vec2(x, y)); this->addChild(blocks_scaled_with_insets); @@ -679,32 +668,30 @@ bool UIS9FrameNameSpriteSheetRotatedSetCapInsetLater::init() bool UIS9CascadeOpacityAndColor::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - auto rgba = Layer::create(); + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto rgba = Layer::create(); rgba->setCascadeColorEnabled(true); rgba->setCascadeOpacityEnabled(true); this->addChild(rgba); - - + auto blocks_scaled_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - + blocks_scaled_with_insets->setPosition(Vec2(x, y)); - + rgba->addChild(blocks_scaled_with_insets); - auto actions = Sequence::create(FadeIn::create(1), - TintTo::create(1, 0, 255, 0), - TintTo::create(1, 255, 0, 255), - CallFunc::create([=](){ + auto actions = Sequence::create(FadeIn::create(1), TintTo::create(1, 0, 255, 0), TintTo::create(1, 255, 0, 255), + CallFunc::create([=]() { rgba->setCascadeColorEnabled(false); rgba->setCascadeOpacityEnabled(false); }), nullptr); - auto repeat = RepeatForever::create(actions); + auto repeat = RepeatForever::create(actions); rgba->runAction(repeat); return true; } @@ -713,31 +700,32 @@ bool UIS9CascadeOpacityAndColor::init() bool UIS9ZOrder::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto blocks_scaled_with_insets = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - + blocks_scaled_with_insets->setPosition(Vec2(x, y)); this->addChild(blocks_scaled_with_insets); - - Sprite *normalSprite = Sprite::createWithSpriteFrameName("blocks9r.png"); + + Sprite* normalSprite = Sprite::createWithSpriteFrameName("blocks9r.png"); normalSprite->setColor(Color3B::RED); blocks_scaled_with_insets->addChild(normalSprite); - + auto topLabel = Label::createWithSystemFont("I Must be On the Top", "Arial", 15); - topLabel->setPosition(Vec2(20.0f,20.0f)); + topLabel->setPosition(Vec2(20.0f, 20.0f)); blocks_scaled_with_insets->addChild(topLabel); - + auto bottomLabel = Label::createWithSystemFont("I Must be On the Bottom", "Arial", 15); - bottomLabel->setPosition(Vec2(80.0f,80.0f)); + bottomLabel->setPosition(Vec2(80.0f, 80.0f)); bottomLabel->setColor(Color3B::BLUE); - blocks_scaled_with_insets->addChild(bottomLabel,-1); - + blocks_scaled_with_insets->addChild(bottomLabel, -1); + return true; } return false; @@ -745,120 +733,132 @@ bool UIS9ZOrder::init() bool UIS9Flip::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2); + auto statusLabel = Label::createWithSystemFont("Scale9Enabled", "Arial", 10); statusLabel->setPosition(Vec2(x, winSize.height - statusLabel->getContentSize().height - 40)); this->addChild(statusLabel); - + auto normalSprite = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - - normalSprite->setPosition(Vec2(x, y )); + + normalSprite->setPosition(Vec2(x, y)); this->addChild(normalSprite); - - - auto normalLabel = Label::createWithSystemFont("Normal Sprite","Arial",10); - normalLabel->setPosition(normalSprite->getPosition() + Vec2(0.0f, normalSprite->getContentSize().height/2 + 10)); + + auto normalLabel = Label::createWithSystemFont("Normal Sprite", "Arial", 10); + normalLabel->setPosition(normalSprite->getPosition() + + Vec2(0.0f, normalSprite->getContentSize().height / 2 + 10)); this->addChild(normalLabel); - - - + auto flipXSprite = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - - flipXSprite->setPosition(Vec2(x - 120, y )); + + flipXSprite->setPosition(Vec2(x - 120, y)); flipXSprite->setScale(1.2f); this->addChild(flipXSprite); flipXSprite->setFlippedX(false); - - auto flipXLabel = Label::createWithSystemFont("sprite is not flipped!","Arial",10); - flipXLabel->setPosition(flipXSprite->getPosition() + Vec2(0.0f, flipXSprite->getContentSize().height/2 + 10)); + + auto flipXLabel = Label::createWithSystemFont("sprite is not flipped!", "Arial", 10); + flipXLabel->setPosition(flipXSprite->getPosition() + Vec2(0.0f, flipXSprite->getContentSize().height / 2 + 10)); this->addChild(flipXLabel); - - + auto flipYSprite = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - + flipYSprite->setPosition(Vec2(x + 120, y)); this->addChild(flipYSprite); - + flipYSprite->setScale(0.8f); flipYSprite->setFlippedY(true); - - auto flipYLabel = Label::createWithSystemFont("sprite is flipped!","Arial",10); - flipYLabel->setPosition(flipYSprite->getPosition() + Vec2(0.0f, flipYSprite->getContentSize().height/2 + 10)); + + auto flipYLabel = Label::createWithSystemFont("sprite is flipped!", "Arial", 10); + flipYLabel->setPosition(flipYSprite->getPosition() + Vec2(0.0f, flipYSprite->getContentSize().height / 2 + 10)); this->addChild(flipYLabel); - - + auto toggleFlipXButton = Button::create(); toggleFlipXButton->setTitleText("Toggle FlipX"); - toggleFlipXButton->setPosition(flipXSprite->getPosition() + Vec2(0.0f, - 20 - flipXSprite->getContentSize().height/2)); - toggleFlipXButton->addClickEventListener([=](Ref*){ - flipXSprite->setFlippedX(! flipXSprite->isFlippedX()); - if (flipXSprite->isFlippedX()) { + toggleFlipXButton->setPosition(flipXSprite->getPosition() + + Vec2(0.0f, -20 - flipXSprite->getContentSize().height / 2)); + toggleFlipXButton->addClickEventListener([=](Ref*) { + flipXSprite->setFlippedX(!flipXSprite->isFlippedX()); + if (flipXSprite->isFlippedX()) + { flipXLabel->setString("sprite is flipped!"); } - else{ + else + { flipXLabel->setString("sprite is not flipped!"); } }); this->addChild(toggleFlipXButton); - + auto toggleFlipYButton = Button::create(); toggleFlipYButton->setTitleText("Toggle FlipY"); - toggleFlipYButton->setPosition(flipYSprite->getPosition() + Vec2(0.0f, -20 - flipYSprite->getContentSize().height/2)); - toggleFlipYButton->addClickEventListener([=](Ref*){ + toggleFlipYButton->setPosition(flipYSprite->getPosition() + + Vec2(0.0f, -20 - flipYSprite->getContentSize().height / 2)); + toggleFlipYButton->addClickEventListener([=](Ref*) { flipYSprite->setFlippedY(!flipYSprite->isFlippedY()); - if (flipYSprite->isFlippedY()) { + if (flipYSprite->isFlippedY()) + { flipYLabel->setString("sprite is flipped!"); } - else{ + else + { flipYLabel->setString("sprite is not flipped!"); } }); this->addChild(toggleFlipYButton); - + auto toggleScale9Button = Button::create(); toggleScale9Button->setTitleText("Toggle Scale9"); - toggleScale9Button->setPosition(normalSprite->getPosition() + Vec2(0.0f, -20 - normalSprite->getContentSize().height/2)); - toggleScale9Button->addClickEventListener([=](Ref*){ + toggleScale9Button->setPosition(normalSprite->getPosition() + + Vec2(0.0f, -20 - normalSprite->getContentSize().height / 2)); + toggleScale9Button->addClickEventListener([=](Ref*) { flipXSprite->setScale9Enabled(!flipXSprite->isScale9Enabled()); flipYSprite->setScale9Enabled(!flipYSprite->isScale9Enabled()); - if (flipXSprite->isScale9Enabled()) { + if (flipXSprite->isScale9Enabled()) + { statusLabel->setString("Scale9Enabled"); - }else{ + } + else + { statusLabel->setString("Scale9Disabled"); } - + CCLOG("scaleX = %f", flipXSprite->getScaleX()); CCLOG("scaleY = %f", flipYSprite->getScale()); - if (flipXSprite->isFlippedX()) { + if (flipXSprite->isFlippedX()) + { CCLOG("xxxxxxx"); } - if (flipYSprite->isFlippedY()) { + if (flipYSprite->isFlippedY()) + { CCLOG("YYYYYY"); } - - if (flipXSprite->isFlippedX()) { + + if (flipXSprite->isFlippedX()) + { flipXLabel->setString("sprite is flipped!"); } - else{ + else + { flipXLabel->setString("sprite is not flipped!"); } - - if (flipYSprite->isFlippedY()) { + + if (flipYSprite->isFlippedY()) + { flipYLabel->setString("sprite is flipped!"); } - else{ + else + { flipYLabel->setString("sprite is not flipped!"); } - }); this->addChild(toggleScale9Button); - + return true; } return false; @@ -866,63 +866,56 @@ bool UIS9Flip::init() bool UIS9ChangeAnchorPoint::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(s_s9s_blocks9_plist); - + auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2 + 50); - - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2 + 50); + auto normalSprite = ui::Scale9Sprite::createWithSpriteFrameName("blocks9r.png"); - normalSprite->setPosition(Vec2(x, y )); -// normalSprite->setScale9Enabled(false); -// normalSprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT); + normalSprite->setPosition(Vec2(x, y)); + // normalSprite->setScale9Enabled(false); + // normalSprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT); this->addChild(normalSprite); - - + Button* button1 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button1->setPosition(Vec2(winSize.width/2 - 100,winSize.height/2 - 50)); + button1->setPosition(Vec2(winSize.width / 2 - 100, winSize.height / 2 - 50)); button1->setName("button2"); button1->setTitleText("Vec(0,0)"); - button1->addTouchEventListener([=](Ref*, Widget::TouchEventType type) - { - if (type == Widget::TouchEventType::ENDED) { - normalSprite->setAnchorPoint(Vec2::ZERO); - normalSprite->setScale9Enabled(true); - CCLOG("position = %f, %f, anchor point = %f, %f", normalSprite->getPosition().x, - normalSprite->getPosition().y, - normalSprite->getAnchorPoint().x, - normalSprite->getAnchorPoint().y); - CCLOG("tests:content size : width = %f, height = %f", - normalSprite->getContentSize().width, - normalSprite->getContentSize().height); - } - }); + button1->addTouchEventListener([=](Ref*, Widget::TouchEventType type) { + if (type == Widget::TouchEventType::ENDED) + { + normalSprite->setAnchorPoint(Vec2::ZERO); + normalSprite->setScale9Enabled(true); + CCLOG("position = %f, %f, anchor point = %f, %f", normalSprite->getPosition().x, + normalSprite->getPosition().y, normalSprite->getAnchorPoint().x, + normalSprite->getAnchorPoint().y); + CCLOG("tests:content size : width = %f, height = %f", normalSprite->getContentSize().width, + normalSprite->getContentSize().height); + } + }); this->addChild(button1); - + Button* button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button2->setPosition(Vec2(winSize.width/2 + 100,winSize.height/2 - 50)); + button2->setPosition(Vec2(winSize.width / 2 + 100, winSize.height / 2 - 50)); button2->setName("button2"); button2->setTitleText("Vec(1,1)"); - button2->addTouchEventListener([=](Ref*, Widget::TouchEventType type) - { - if (type == Widget::TouchEventType::ENDED) { - normalSprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT); - normalSprite->setScale9Enabled(false); - CCLOG("position = %f, %f, anchor point = %f, %f", normalSprite->getPosition().x, - normalSprite->getPosition().y, - normalSprite->getAnchorPoint().x, - normalSprite->getAnchorPoint().y); - CCLOG("tests:content size : width = %f, height = %f", - normalSprite->getContentSize().width, - normalSprite->getContentSize().height); - - } - }); + button2->addTouchEventListener([=](Ref*, Widget::TouchEventType type) { + if (type == Widget::TouchEventType::ENDED) + { + normalSprite->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT); + normalSprite->setScale9Enabled(false); + CCLOG("position = %f, %f, anchor point = %f, %f", normalSprite->getPosition().x, + normalSprite->getPosition().y, normalSprite->getAnchorPoint().x, + normalSprite->getAnchorPoint().y); + CCLOG("tests:content size : width = %f, height = %f", normalSprite->getContentSize().width, + normalSprite->getContentSize().height); + } + }); this->addChild(button2); - return true; } @@ -931,44 +924,44 @@ bool UIS9ChangeAnchorPoint::init() bool UIS9NinePatchTest::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile("cocosui/android9patch.plist"); auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2 + 50); + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2 + 50); - auto preferedSize = Size(99,99); + auto preferedSize = Size(99, 99); - //9-patch sprite with filename + // 9-patch sprite with filename auto playerSprite = ui::Scale9Sprite::create("cocosui/player.9.png"); playerSprite->setPosition(x, y); playerSprite->setContentSize(preferedSize); auto capInsets = playerSprite->getCapInsets(); - CCLOG("player sprite capInset = %g, %g %g, %g", capInsets.origin.x, - capInsets.origin.y, capInsets.size.width, capInsets.size.height); + CCLOG("player sprite capInset = %g, %g %g, %g", capInsets.origin.x, capInsets.origin.y, capInsets.size.width, + capInsets.size.height); this->addChild(playerSprite); auto animationBtnSprite = ui::Scale9Sprite::createWithSpriteFrameName("animationbuttonpressed.png"); - animationBtnSprite->setPosition(x-100, y-100); + animationBtnSprite->setPosition(x - 100, y - 100); capInsets = animationBtnSprite->getCapInsets(); - CCLOG("animationBtnSprite capInset = %g, %g %g, %g", capInsets.origin.x, - capInsets.origin.y, capInsets.size.width, capInsets.size.height); + CCLOG("animationBtnSprite capInset = %g, %g %g, %g", capInsets.origin.x, capInsets.origin.y, + capInsets.size.width, capInsets.size.height); this->addChild(animationBtnSprite); - - + auto monsterSprite = ui::Scale9Sprite::createWithSpriteFrameName("monster.9.png"); - monsterSprite->setPosition(x+100, y-100); + monsterSprite->setPosition(x + 100, y - 100); capInsets = monsterSprite->getCapInsets(); monsterSprite->setContentSize(preferedSize); - CCLOG("monsterSprite capInset = %g, %g %g, %g", capInsets.origin.x, - capInsets.origin.y, capInsets.size.width, capInsets.size.height); + CCLOG("monsterSprite capInset = %g, %g %g, %g", capInsets.origin.x, capInsets.origin.y, capInsets.size.width, + capInsets.size.height); this->addChild(monsterSprite); - auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("buttonnormal.9.png"); + auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("buttonnormal.9.png"); auto buttonScale9Sprite = Scale9Sprite::createWithSpriteFrame(spriteFrame); - buttonScale9Sprite->setContentSize(Size(150.0f,80.0f)); - buttonScale9Sprite->setPosition(Vec2(100.0f,200.0f)); + buttonScale9Sprite->setContentSize(Size(150.0f, 80.0f)); + buttonScale9Sprite->setPosition(Vec2(100.0f, 200.0f)); this->addChild(buttonScale9Sprite); return true; @@ -978,48 +971,55 @@ bool UIS9NinePatchTest::init() bool UIS9BatchTest::init() { - if (UIScene::init()) { + if (UIScene::init()) + { SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Images/blocks9ss.plist"); - + auto winSize = Director::getInstance()->getVisibleSize(); - - auto label = Label::createWithSystemFont("Click Button to Add Sprite and Slice Sprite\nThe draw call should always be 19 after adding sprites", "Arial", 15); - label->setPosition(Vec2(winSize.width/2, winSize.height - 60)); + + auto label = Label::createWithSystemFont( + "Click Button to Add Sprite and Slice Sprite\nThe draw call should always be 19 after adding sprites", + "Arial", 15); + label->setPosition(Vec2(winSize.width / 2, winSize.height - 60)); this->addChild(label); - - auto preferedSize = Size(150.0f,99.0f); - std::vector spriteFrameNameArray = {"blocks9ss/blocks9.png", "blocks9ss/blocks9r.png"}; - auto addSpriteButton = ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - addSpriteButton->setPosition(Vec2(winSize.width/2 - 50,winSize.height - 100)); + + auto preferedSize = Size(150.0f, 99.0f); + std::vector spriteFrameNameArray = {"blocks9ss/blocks9.png", "blocks9ss/blocks9r.png"}; + auto addSpriteButton = + ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); + addSpriteButton->setPosition(Vec2(winSize.width / 2 - 50, winSize.height - 100)); addSpriteButton->setTitleText("Add Normal Sprite"); std::srand((unsigned)time(nullptr)); - addSpriteButton->addClickEventListener([=](Ref*){ - auto spriteFrameName = spriteFrameNameArray[rand()%2]; - auto sprite = Sprite::createWithSpriteFrameName(spriteFrameName); - sprite->setPosition(Vec2(rand() % (int)winSize.width + 50.0f, winSize.height/2)); + addSpriteButton->addClickEventListener([=](Ref*) { + auto spriteFrameName = spriteFrameNameArray[rand() % 2]; + auto sprite = Sprite::createWithSpriteFrameName(spriteFrameName); + sprite->setPosition(Vec2(rand() % (int)winSize.width + 50.0f, winSize.height / 2)); this->addChild(sprite); }); this->addChild(addSpriteButton); - - auto addSliceSpriteButton = ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - addSliceSpriteButton->setPosition(Vec2(winSize.width/2 + 50,winSize.height - 100)); + + auto addSliceSpriteButton = + ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); + addSliceSpriteButton->setPosition(Vec2(winSize.width / 2 + 50, winSize.height - 100)); addSliceSpriteButton->setTitleText("Add Slice Sprite"); - addSliceSpriteButton->addClickEventListener([=](Ref*){ - int random = rand()%2; + addSliceSpriteButton->addClickEventListener([=](Ref*) { + int random = rand() % 2; auto spriteFrameName = spriteFrameNameArray[random]; - auto sprite = ui::Scale9Sprite::createWithSpriteFrameName(spriteFrameName); - sprite->setPosition(Vec2(rand() % (int)winSize.width + 50.0f, winSize.height/3)); - if (random == 0) { + auto sprite = ui::Scale9Sprite::createWithSpriteFrameName(spriteFrameName); + sprite->setPosition(Vec2(rand() % (int)winSize.width + 50.0f, winSize.height / 3)); + if (random == 0) + { sprite->setRenderingType(Scale9Sprite::RenderingType::SIMPLE); - }else{ + } + else + { sprite->setRenderingType(Scale9Sprite::RenderingType::SLICE); } sprite->setPreferredSize(preferedSize); this->addChild(sprite); }); this->addChild(addSliceSpriteButton); - - + return true; } return false; @@ -1027,107 +1027,109 @@ bool UIS9BatchTest::init() bool UIS9ToggleRenderingTypeTest::init() { - if (UIScene::init()) { - + if (UIScene::init()) + { + auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2 - 20); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2 - 20); + auto label = Label::createWithSystemFont("Click Button to toggle rendering type", "Arial", 15); - label->setPosition(Vec2(winSize.width/2, winSize.height - 60)); + label->setPosition(Vec2(winSize.width / 2, winSize.height - 60)); this->addChild(label); - + auto blocks = ui::Scale9Sprite::create("Images/blocks9.png"); - + blocks->setPosition(Vec2(x, y)); - blocks->setPreferredSize(Size(96*2, 96)); + blocks->setPreferredSize(Size(96 * 2, 96)); this->addChild(blocks); - - auto addSliceSpriteButton = ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - addSliceSpriteButton->setPosition(Vec2(winSize.width/2,winSize.height - 100)); + + auto addSliceSpriteButton = + ui::Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); + addSliceSpriteButton->setPosition(Vec2(winSize.width / 2, winSize.height - 100)); addSliceSpriteButton->setTitleText("Slice Rendering"); - addSliceSpriteButton->addClickEventListener([=](Ref*){ - if (blocks->getRenderingType() == Scale9Sprite::RenderingType::SLICE) { + addSliceSpriteButton->addClickEventListener([=](Ref*) { + if (blocks->getRenderingType() == Scale9Sprite::RenderingType::SLICE) + { blocks->setRenderingType(Scale9Sprite::RenderingType::SIMPLE); addSliceSpriteButton->setTitleText("Simple Rendering"); - }else{ + } + else + { blocks->setRenderingType(Scale9Sprite::RenderingType::SLICE); addSliceSpriteButton->setTitleText("Slice Rendering"); - blocks->setCapInsets(Rect(96/3,96/3,96/3,96/3)); + blocks->setCapInsets(Rect(96 / 3, 96 / 3, 96 / 3, 96 / 3)); } }); this->addChild(addSliceSpriteButton); - + return true; } return false; } - bool UIS9GlobalZOrderTest::init() { - if (UIScene::init()) { - + if (UIScene::init()) + { + auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2 - 20); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2 - 20); + auto label = Label::createWithSystemFont("The green scale9sprite is in the back.", "Arial", 15); - label->setPosition(Vec2(winSize.width/2, winSize.height - 60)); + label->setPosition(Vec2(winSize.width / 2, winSize.height - 60)); this->addChild(label); - + auto blocks = ui::Scale9Sprite::create("Images/blocks9.png"); - + blocks->setPosition(Vec2(x, y)); - blocks->setPreferredSize(Size(96*2, 96*1.5)); + blocks->setPreferredSize(Size(96 * 2, 96 * 1.5)); blocks->setColor(Color3B::RED); blocks->setGlobalZOrder(1); this->addChild(blocks); - - + auto blocks2 = ui::Scale9Sprite::create("Images/blocks9.png"); blocks2->setPosition(Vec2(x, y)); - blocks2->setPreferredSize(Size(96*3, 96)); + blocks2->setPreferredSize(Size(96 * 3, 96)); blocks2->setGlobalZOrder(0); blocks2->setColor(Color3B::GREEN); this->addChild(blocks2); - return true; } return false; } - bool UIS9EnableScale9FalseTest::init() { - if (UIScene::init()) { - + if (UIScene::init()) + { + auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2 + 50; - float y = 0 + (winSize.height / 2 + 10); - + float x = winSize.width / 2 + 50; + float y = 0 + (winSize.height / 2 + 10); + auto label = Label::createWithSystemFont("Only the yellow block intersect with the green one.", "Arial", 15); - label->setPosition(Vec2(winSize.width/2, winSize.height - 60)); + label->setPosition(Vec2(winSize.width / 2, winSize.height - 60)); this->addChild(label); - + auto blocks = ui::Scale9Sprite::create("Images/blocks9.png"); blocks->setScale9Enabled(false); blocks->setPosition(Vec2(x, y)); - blocks->setPreferredSize(Size(96*2.0f, 96.0f)); + blocks->setPreferredSize(Size(96 * 2.0f, 96.0f)); blocks->setColor(Color3B::RED); blocks->setGlobalZOrder(1); this->addChild(blocks); - - + auto blocks2 = ui::Scale9Sprite::create("Images/blocks9.png"); blocks2->setScale9Enabled(false); blocks2->setPosition(Vec2(0.0f, 0.0f)); - blocks2->setPreferredSize(Size(96*1.5f, 96.0f)); + blocks2->setPreferredSize(Size(96 * 1.5f, 96.0f)); blocks2->setGlobalZOrder(0); blocks2->setColor(Color3B::GREEN); blocks->addChild(blocks2); - + auto blocks3 = ui::Scale9Sprite::create("Images/blocks9.png"); blocks3->setScale9Enabled(false); blocks3->setPosition(Vec2(0.0f, 0.0f)); @@ -1135,8 +1137,7 @@ bool UIS9EnableScale9FalseTest::init() blocks3->setGlobalZOrder(2); blocks3->setColor(Color3B::YELLOW); blocks2->addChild(blocks3); - - + return true; } return false; @@ -1144,26 +1145,27 @@ bool UIS9EnableScale9FalseTest::init() bool UIS9GrayStateOpacityTest::init() { - if (UIScene::init()) { - + if (UIScene::init()) + { + auto winSize = Director::getInstance()->getWinSize(); - float x = winSize.width / 2; - float y = 0 + (winSize.height / 2 + 10); - + float x = winSize.width / 2; + float y = 0 + (winSize.height / 2 + 10); + auto label = Label::createWithSystemFont("Drap slider to change opacity of the scale9Sprite", "Arial", 15); - label->setPosition(Vec2(winSize.width/2, winSize.height - 60)); + label->setPosition(Vec2(winSize.width / 2, winSize.height - 60)); this->addChild(label); - + auto blocks = ui::Scale9Sprite::create("Images/blocks9.png"); - + blocks->setPosition(Vec2(x, y)); - blocks->setPreferredSize(Size(96*2, 96*1.5)); + blocks->setPreferredSize(Size(96 * 2, 96 * 1.5)); blocks->setOpacity(100); blocks->setState(Scale9Sprite::State::GRAY); blocks->setGlobalZOrder(1); blocks->setName("GrayScale9"); this->addChild(blocks); - + Slider* slider = Slider::create(); slider->loadBarTexture("cocosui/sliderTrack.png"); slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); @@ -1180,13 +1182,13 @@ bool UIS9GrayStateOpacityTest::init() return false; } -void UIS9GrayStateOpacityTest::sliderEvent(cocos2d::Ref *sender, cocos2d::ui::Slider::EventType type) +void UIS9GrayStateOpacityTest::sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { - Slider* slider = dynamic_cast(sender); - int percent = slider->getPercent(); - int maxPercent = slider->getMaxPercent(); + Slider* slider = dynamic_cast(sender); + int percent = slider->getPercent(); + int maxPercent = slider->getMaxPercent(); auto scale9Sprite = (Scale9Sprite*)this->getChildByName("GrayScale9"); scale9Sprite->setOpacity(1.0 * percent / maxPercent * 255.0); } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.h index dca6c3fd712a..ae1642036468 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -68,7 +68,7 @@ class UIS9BatchNodeBasic : public UIScene { public: CREATE_FUNC(UIS9BatchNodeBasic); - + virtual bool init() override; }; @@ -78,7 +78,7 @@ class UIS9FrameNameSpriteSheet : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheet); - + virtual bool init() override; }; @@ -88,7 +88,7 @@ class UIS9FrameNameSpriteSheetRotated : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetRotated); - + virtual bool init() override; }; @@ -98,7 +98,7 @@ class UIS9FrameNameSpriteSheetCroppedSimple : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetCroppedSimple); - + virtual bool init() override; }; @@ -108,18 +108,17 @@ class UIS9FrameNameSpriteSheetCroppedRotatedSimple : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetCroppedRotatedSimple); - + virtual bool init() override; }; - // S9FrameNameSpriteSheetCropped class UIS9FrameNameSpriteSheetCropped : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetCropped); - + virtual bool init() override; }; @@ -129,7 +128,7 @@ class UIS9FrameNameSpriteSheetCroppedRotated : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetCroppedRotated); - + virtual bool init() override; }; @@ -139,7 +138,7 @@ class UIS9BatchNodeScaledNoInsets : public UIScene { public: CREATE_FUNC(UIS9BatchNodeScaledNoInsets); - + virtual bool init() override; }; @@ -149,7 +148,7 @@ class UIS9FrameNameSpriteSheetScaledNoInsets : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetScaledNoInsets); - + virtual bool init() override; }; @@ -159,18 +158,17 @@ class UIS9FrameNameSpriteSheetRotatedScaledNoInsets : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetRotatedScaledNoInsets); - + virtual bool init() override; }; - // S9BatchNodeScaleWithCapInsets class UIS9BatchNodeScaleWithCapInsets : public UIScene { public: CREATE_FUNC(UIS9BatchNodeScaleWithCapInsets); - + virtual bool init() override; }; @@ -180,7 +178,7 @@ class UIS9FrameNameSpriteSheetInsets : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetInsets); - + virtual bool init() override; }; @@ -190,7 +188,7 @@ class UIS9FrameNameSpriteSheetInsetsScaled : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetInsetsScaled); - + virtual bool init() override; }; @@ -200,7 +198,7 @@ class UIS9FrameNameSpriteSheetRotatedInsets : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetRotatedInsets); - + virtual bool init() override; }; @@ -210,7 +208,7 @@ class UIS9_TexturePacker : public UIScene { public: CREATE_FUNC(UIS9_TexturePacker); - + virtual bool init() override; }; @@ -220,7 +218,7 @@ class UIS9FrameNameSpriteSheetRotatedInsetsScaled : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetRotatedInsetsScaled); - + virtual bool init() override; }; @@ -230,7 +228,7 @@ class UIS9FrameNameSpriteSheetRotatedSetCapInsetLater : public UIScene { public: CREATE_FUNC(UIS9FrameNameSpriteSheetRotatedSetCapInsetLater); - + virtual bool init() override; }; @@ -240,7 +238,7 @@ class UIS9CascadeOpacityAndColor : public UIScene { public: CREATE_FUNC(UIS9CascadeOpacityAndColor); - + virtual bool init() override; }; @@ -250,7 +248,7 @@ class UIS9ZOrder : public UIScene { public: CREATE_FUNC(UIS9ZOrder); - + virtual bool init() override; }; @@ -260,7 +258,7 @@ class UIS9Flip : public UIScene { public: CREATE_FUNC(UIS9Flip); - + virtual bool init() override; }; @@ -268,7 +266,7 @@ class UIS9ChangeAnchorPoint : public UIScene { public: CREATE_FUNC(UIS9ChangeAnchorPoint); - + virtual bool init() override; }; @@ -280,39 +278,39 @@ class UIS9NinePatchTest : public UIScene virtual bool init() override; }; -class UIS9BatchTest: public UIScene +class UIS9BatchTest : public UIScene { public: CREATE_FUNC(UIS9BatchTest); - + virtual bool init() override; }; -class UIS9ToggleRenderingTypeTest: public UIScene +class UIS9ToggleRenderingTypeTest : public UIScene { public: CREATE_FUNC(UIS9ToggleRenderingTypeTest); - + virtual bool init() override; }; -class UIS9GlobalZOrderTest: public UIScene +class UIS9GlobalZOrderTest : public UIScene { public: CREATE_FUNC(UIS9GlobalZOrderTest); - + virtual bool init() override; }; -class UIS9EnableScale9FalseTest: public UIScene +class UIS9EnableScale9FalseTest : public UIScene { public: CREATE_FUNC(UIS9EnableScale9FalseTest); - + virtual bool init() override; }; -class UIS9GrayStateOpacityTest: public UIScene +class UIS9GrayStateOpacityTest : public UIScene { public: CREATE_FUNC(UIS9GrayStateOpacityTest); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.cpp index cba747ec8ede..fad79ec11fd3 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,17 +31,9 @@ USING_NS_CC; using namespace cocos2d::ui; -UIScene::UIScene() -: _uiLayer(nullptr) -, _sceneTitle(nullptr) -{ - -} +UIScene::UIScene() : _uiLayer(nullptr), _sceneTitle(nullptr) {} -UIScene::~UIScene() -{ - -} +UIScene::~UIScene() {} bool UIScene::init() { @@ -49,25 +41,25 @@ bool UIScene::init() { _uiLayer = Layer::create(); addChild(_uiLayer); - - _widget = dynamic_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UITest/UITest.json")); + + _widget = dynamic_cast( + cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UITest/UITest.json")); _uiLayer->addChild(_widget); - + Size screenSize = Director::getInstance()->getWinSize(); - Size rootSize = _widget->getContentSize(); - _uiLayer->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - + Size rootSize = _widget->getContentSize(); + _uiLayer->setPosition(Vec2((screenSize.width - rootSize.width) / 2, (screenSize.height - rootSize.height) / 2)); + // disable these widgets because they are conflict with menu items created in `TestCase` - + auto restartButton = Helper::seekWidgetByName(_widget, "middle_Button"); restartButton->setVisible(false); restartButton->setEnabled(false); - + auto leftButton = Helper::seekWidgetByName(_widget, "left_Button"); leftButton->setVisible(false); leftButton->setEnabled(false); - + auto rightButton = Helper::seekWidgetByName(_widget, "right_Button"); rightButton->setVisible(false); rightButton->setEnabled(false); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.h index 9327bd672150..c84e7d496be7 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,7 +31,6 @@ #include "ui/CocosGUI.h" #include "BaseTest.h" - class UIScene : public TestCase { public: @@ -40,6 +39,7 @@ class UIScene : public TestCase virtual bool init() override; virtual void onEnter() override; + protected: cocos2d::Layer* _uiLayer; cocos2d::ui::Layout* _widget; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp index f41166c23a2c..7766e44252ea 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -21,4 +21,3 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ - diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h index 068378d8cfc8..fe29ec21ae33 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp index 322eb992090e..2c84f12f9830 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -43,154 +43,152 @@ UIScrollViewTests::UIScrollViewTests() } // UIScrollViewTest_Vertical -UIScrollViewTest_Vertical::UIScrollViewTest_Vertical() -: _displayValueLabel(nullptr) -{ -} +UIScrollViewTest_Vertical::UIScrollViewTest_Vertical() : _displayValueLabel(nullptr) {} -UIScrollViewTest_Vertical::~UIScrollViewTest_Vertical() -{ -} +UIScrollViewTest_Vertical::~UIScrollViewTest_Vertical() {} bool UIScrollViewTest_Vertical::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the scrollview alert will be displayed _displayValueLabel = Text::create("Move by vertical direction", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert Text* alert = Text::create("ScrollView vertical", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); - + // Create the scrollview by vertical ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setContentSize(Size(280.0f, 100.0f)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); - scrollView->setScrollBarWidth(4); - scrollView->setScrollBarPositionFromCorner(Vec2(2, 2)); - scrollView->setScrollBarColor(Color3B::WHITE); + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + scrollView->setScrollBarWidth(4); + scrollView->setScrollBarPositionFromCorner(Vec2(2, 2)); + scrollView->setScrollBarColor(Color3B::WHITE); scrollView->setGlobalZOrder(200); _uiLayer->addChild(scrollView); - + ImageView* imageView = ImageView::create("cocosui/ccicon.png"); - - float innerWidth = scrollView->getContentSize().width; + + float innerWidth = scrollView->getContentSize().width; float innerHeight = scrollView->getContentSize().height + imageView->getContentSize().height; - - scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); - + + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); + Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button->setPosition(Vec2(innerWidth / 2.0f, scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + button->setPosition(Vec2(innerWidth / 2.0f, + scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); scrollView->addChild(button); - + Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); titleButton->setTitleText("Title Button"); - titleButton->setPosition(Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); + titleButton->setPosition( + Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); scrollView->addChild(titleButton); - + Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); - button_scale9->setPosition(Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); + button_scale9->setPosition( + Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); scrollView->addChild(button_scale9); - + imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); - scrollView->addChild(imageView); + scrollView->addChild(imageView); scrollView->scrollToBottom(2.0, true); return true; } - + return false; } // UIScrollViewTest_Horizontal -UIScrollViewTest_Horizontal::UIScrollViewTest_Horizontal() -: _displayValueLabel(nullptr) -{ -} +UIScrollViewTest_Horizontal::UIScrollViewTest_Horizontal() : _displayValueLabel(nullptr) {} -UIScrollViewTest_Horizontal::~UIScrollViewTest_Horizontal() -{ -} +UIScrollViewTest_Horizontal::~UIScrollViewTest_Horizontal() {} bool UIScrollViewTest_Horizontal::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the scrollview alert will be displayed - _displayValueLabel = Text::create("Move by horizontal direction","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("Move by horizontal direction", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); - _uiLayer->addChild(_displayValueLabel); - - Text* alert = Text::create("ScrollView horizontal","fonts/Marker Felt.ttf",30); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _uiLayer->addChild(_displayValueLabel); + + Text* alert = Text::create("ScrollView horizontal", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); - + // Create the scrollview by horizontal ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setBounceEnabled(true); scrollView->setDirection(ui::ScrollView::Direction::HORIZONTAL); scrollView->setContentSize(Size(280.0f, 150.0f)); scrollView->setInnerContainerSize(scrollView->getContentSize()); - scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); - scrollView->setScrollBarColor(Color3B::YELLOW); + scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); + scrollView->setScrollBarColor(Color3B::YELLOW); Size backgroundSize = background->getContentSize(); scrollView->setPosition((widgetSize - scrollView->getContentSize()) / 2.0f); _uiLayer->addChild(scrollView); - + ImageView* imageView = ImageView::create("cocosui/ccicon.png"); - - float innerWidth = scrollView->getContentSize().width + imageView->getContentSize().width; + + float innerWidth = scrollView->getContentSize().width + imageView->getContentSize().width; float innerHeight = scrollView->getContentSize().height; - + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); - + Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setPosition(Vec2(button->getContentSize().width / 2.0f, - scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); scrollView->addChild(button); - + Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); titleButton->setTitleText("Title Button"); titleButton->setPosition(Vec2(button->getRightBoundary() + button->getContentSize().width / 2.0f, - button->getBottomBoundary() - button->getContentSize().height / 2.0f)); + button->getBottomBoundary() - button->getContentSize().height / 2.0f)); scrollView->addChild(titleButton); - + Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); - button_scale9->setPosition(Vec2(titleButton->getRightBoundary() + titleButton->getContentSize().width / 2.0f, - titleButton->getBottomBoundary() - titleButton->getContentSize().height / 2.0f)); + button_scale9->setPosition( + Vec2(titleButton->getRightBoundary() + titleButton->getContentSize().width / 2.0f, + titleButton->getBottomBoundary() - titleButton->getContentSize().height / 2.0f)); scrollView->addChild(button_scale9); - - imageView->setPosition(Vec2(innerWidth - imageView->getContentSize().width / 2.0f, - button_scale9->getBottomBoundary() - button_scale9->getContentSize().height / 2.0f)); + + imageView->setPosition( + Vec2(innerWidth - imageView->getContentSize().width / 2.0f, + button_scale9->getBottomBoundary() - button_scale9->getContentSize().height / 2.0f)); scrollView->addChild(imageView); // Jump to right @@ -198,43 +196,39 @@ bool UIScrollViewTest_Horizontal::init() return true; } - + return false; } // UIScrollViewTest_Both -UIScrollViewTest_Both::UIScrollViewTest_Both() -: _displayValueLabel(nullptr) -{ - -} +UIScrollViewTest_Both::UIScrollViewTest_Both() : _displayValueLabel(nullptr) {} -UIScrollViewTest_Both::~UIScrollViewTest_Both() -{ -} +UIScrollViewTest_Both::~UIScrollViewTest_Both() {} bool UIScrollViewTest_Both::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the dragpanel events will be displayed - _displayValueLabel = Text::create("Move by any direction","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("Move by any direction", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("ScrollView both","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("ScrollView both", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = static_cast(root->getChildByName("background_Panel")); - + // Create the dragpanel ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setDirection(ui::ScrollView::Direction::BOTH); @@ -243,20 +237,20 @@ bool UIScrollViewTest_Both::init() scrollView->setBackGroundImageScale9Enabled(true); scrollView->setBackGroundImage("cocosui/green_edit.png"); scrollView->setContentSize(Size(210, 122.5)); - scrollView->setScrollBarWidth(4); - scrollView->setScrollBarPositionFromCorner(Vec2(6, 6)); + scrollView->setScrollBarWidth(4); + scrollView->setScrollBarPositionFromCorner(Vec2(6, 6)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); ImageView* imageView = ImageView::create("Hello.png"); scrollView->addChild(imageView); - + scrollView->setInnerContainerSize(imageView->getContentSize()); Size innerSize = scrollView->getInnerContainerSize(); imageView->setPosition(Vec2(innerSize.width / 2.0f, innerSize.height / 2.0f)); - + _uiLayer->addChild(scrollView); // Jump to right bottom @@ -264,61 +258,60 @@ bool UIScrollViewTest_Both::init() return true; } - + return false; } // UIScrollViewTest_ScrollToPercentBothDirection UIScrollViewTest_ScrollToPercentBothDirection::UIScrollViewTest_ScrollToPercentBothDirection() -: _displayValueLabel(nullptr) -{ - -} + : _displayValueLabel(nullptr) +{} -UIScrollViewTest_ScrollToPercentBothDirection::~UIScrollViewTest_ScrollToPercentBothDirection() -{ -} +UIScrollViewTest_ScrollToPercentBothDirection::~UIScrollViewTest_ScrollToPercentBothDirection() {} bool UIScrollViewTest_ScrollToPercentBothDirection::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the dragpanel events will be displayed - _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf",30); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 30); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("ScrollView scroll to percent both direction without scroll bar","fonts/Marker Felt.ttf",20); + Text* alert = + Text::create("ScrollView scroll to percent both direction without scroll bar", "fonts/Marker Felt.ttf", 20); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 4.5)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 4.5)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = static_cast(root->getChildByName("background_Panel")); - + ui::ScrollView* sc = ui::ScrollView::create(); sc->setBackGroundColor(Color3B::GREEN); sc->setBackGroundColorType(Layout::BackGroundColorType::SOLID); sc->setDirection(ui::ScrollView::Direction::BOTH); sc->setInnerContainerSize(Size(480.0f, 320.0f)); - sc->setContentSize(Size(100.0f,100.0f)); - sc->setScrollBarEnabled(false); + sc->setContentSize(Size(100.0f, 100.0f)); + sc->setScrollBarEnabled(false); Size backgroundSize = background->getContentSize(); sc->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - sc->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - sc->getContentSize().height) / 2.0f)); + (backgroundSize.width - sc->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - sc->getContentSize().height) / 2.0f)); sc->scrollToPercentBothDirection(Vec2(50, 50), 1, true); ImageView* iv = ImageView::create("cocosui/Hello.png"); iv->setPosition(Vec2(240.0f, 160.0f)); sc->addChild(iv); _uiLayer->addChild(sc); - + return true; } return false; @@ -326,52 +319,50 @@ bool UIScrollViewTest_ScrollToPercentBothDirection::init() // UIScrollViewTest_ScrollToPercentBothDirection_Bounce UIScrollViewTest_ScrollToPercentBothDirection_Bounce::UIScrollViewTest_ScrollToPercentBothDirection_Bounce() -: _displayValueLabel(nullptr) -{ - -} + : _displayValueLabel(nullptr) +{} -UIScrollViewTest_ScrollToPercentBothDirection_Bounce::~UIScrollViewTest_ScrollToPercentBothDirection_Bounce() -{ -} +UIScrollViewTest_ScrollToPercentBothDirection_Bounce::~UIScrollViewTest_ScrollToPercentBothDirection_Bounce() {} bool UIScrollViewTest_ScrollToPercentBothDirection_Bounce::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the dragpanel events will be displayed - _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("ScrollView scroll to percent both direction bounce","fonts/Marker Felt.ttf",20); + Text* alert = Text::create("ScrollView scroll to percent both direction bounce", "fonts/Marker Felt.ttf", 20); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 4.5)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 4.5)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); - + ui::ScrollView* sc = ui::ScrollView::create(); sc->setBackGroundColor(Color3B::GREEN); sc->setBackGroundColorType(Layout::BackGroundColorType::SOLID); sc->setBounceEnabled(true); sc->setDirection(ui::ScrollView::Direction::BOTH); sc->setInnerContainerSize(Size(480.0f, 320.0f)); - sc->setContentSize(Size(100.0f,100.0f)); - sc->setScrollBarPositionFromCornerForHorizontal(Vec2(5.0f, sc->getContentSize().height - 5)); - sc->setScrollBarPositionFromCornerForVertical(Vec2(sc->getContentSize().width - 5, 5.0f)); - sc->setScrollBarAutoHideEnabled(false); + sc->setContentSize(Size(100.0f, 100.0f)); + sc->setScrollBarPositionFromCornerForHorizontal(Vec2(5.0f, sc->getContentSize().height - 5)); + sc->setScrollBarPositionFromCornerForVertical(Vec2(sc->getContentSize().width - 5, 5.0f)); + sc->setScrollBarAutoHideEnabled(false); Size backgroundSize = background->getContentSize(); sc->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - sc->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - sc->getContentSize().height) / 2.0f)); + (backgroundSize.width - sc->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - sc->getContentSize().height) / 2.0f)); sc->scrollToPercentBothDirection(Vec2(50.0f, 50.0f), 1, true); ImageView* iv = ImageView::create("cocosui/Hello.png"); iv->setPosition(Vec2(240.0f, 160.0f)); @@ -379,85 +370,82 @@ bool UIScrollViewTest_ScrollToPercentBothDirection_Bounce::init() _uiLayer->addChild(sc); return true; } - + return false; } // UIScrollViewNestTest -UIScrollViewNestTest::UIScrollViewNestTest() -: _displayValueLabel(nullptr) -{ -} +UIScrollViewNestTest::UIScrollViewNestTest() : _displayValueLabel(nullptr) {} -UIScrollViewNestTest::~UIScrollViewNestTest() -{ -} +UIScrollViewNestTest::~UIScrollViewNestTest() {} bool UIScrollViewNestTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the scrollview alert will be displayed _displayValueLabel = Text::create("Move by vertical direction", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert Text* alert = Text::create("ScrollView vertical", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); - + // Create the scrollview by vertical ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setContentSize(Size(280.0f, 150.0f)); scrollView->setDirection(ui::ScrollView::Direction::VERTICAL); - scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); + scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); - scrollView->setScrollBarPositionFromCornerForVertical(Vec2(scrollView->getContentSize().width - 4, 4.0f)); - scrollView->setScrollBarColor(Color3B::BLUE); + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + scrollView->setScrollBarPositionFromCornerForVertical(Vec2(scrollView->getContentSize().width - 4, 4.0f)); + scrollView->setScrollBarColor(Color3B::BLUE); _uiLayer->addChild(scrollView); - + ImageView* imageView = ImageView::create("cocosui/ccicon.png"); - - float innerWidth = scrollView->getContentSize().width; + + float innerWidth = scrollView->getContentSize().width; float innerHeight = scrollView->getContentSize().height + imageView->getContentSize().height; - + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); - + Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button->setPosition(Vec2(innerWidth / 2.0f, scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + button->setPosition(Vec2(innerWidth / 2.0f, + scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); scrollView->addChild(button); - + Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); titleButton->setTitleText("Title Button"); - titleButton->setPosition(Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); + titleButton->setPosition( + Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); scrollView->addChild(titleButton); - + Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); - button_scale9->setPosition(Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); + button_scale9->setPosition( + Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); scrollView->addChild(button_scale9); - + imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); scrollView->addChild(imageView); - - - + // Create the scrollview by both ui::ScrollView* sc = ui::ScrollView::create(); sc->setBackGroundColor(Color3B::GREEN); @@ -465,118 +453,106 @@ bool UIScrollViewNestTest::init() sc->setBounceEnabled(true); sc->setDirection(ui::ScrollView::Direction::BOTH); sc->setInnerContainerSize(Size(480.0f, 320.0f)); - sc->setContentSize(Size(100.0f,100.0f)); + sc->setContentSize(Size(100.0f, 100.0f)); sc->setPropagateTouchEvents(false); - sc->setPosition(Vec2(180.0f,100.0f)); + sc->setPosition(Vec2(180.0f, 100.0f)); sc->scrollToPercentBothDirection(Vec2(50.0f, 50.0f), 1, true); - sc->setScrollBarPositionFromCorner(Vec2(4.0f, 4.0f)); + sc->setScrollBarPositionFromCorner(Vec2(4.0f, 4.0f)); ImageView* iv = ImageView::create("cocosui/Hello.png"); iv->setPosition(Vec2(240.0f, 160.0f)); sc->addChild(iv); - scrollView->addChild(sc); - + return true; } - + return false; } - - - // UIScrollViewRotated -UIScrollViewRotated::UIScrollViewRotated() -: _displayValueLabel(nullptr) -{ -} +UIScrollViewRotated::UIScrollViewRotated() : _displayValueLabel(nullptr) {} -UIScrollViewRotated::~UIScrollViewRotated() -{ -} +UIScrollViewRotated::~UIScrollViewRotated() {} bool UIScrollViewRotated::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the scrollview alert will be displayed _displayValueLabel = Text::create("Move by vertical direction", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert Text* alert = Text::create("ScrollView vertical", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); - + // Create the scrollview by vertical ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setContentSize(Size(280.0f, 150.0f)); scrollView->setDirection(ui::ScrollView::Direction::VERTICAL); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f + 100) ); + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f + 100)); scrollView->setRotation(45); - scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); - scrollView->setScrollBarColor(Color3B::WHITE); + scrollView->setScrollBarPositionFromCorner(Vec2(4, 4)); + scrollView->setScrollBarColor(Color3B::WHITE); _uiLayer->addChild(scrollView); - + ImageView* imageView = ImageView::create("cocosui/ccicon.png"); - - float innerWidth = scrollView->getContentSize().width; + + float innerWidth = scrollView->getContentSize().width; float innerHeight = scrollView->getContentSize().height + imageView->getContentSize().height; - + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); - + Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button->setPosition(Vec2(innerWidth / 2.0f, scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + button->setPosition(Vec2(innerWidth / 2.0f, + scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); scrollView->addChild(button); - + Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); titleButton->setTitleText("Title Button"); - titleButton->setPosition(Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); + titleButton->setPosition( + Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); scrollView->addChild(titleButton); - + Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); - button_scale9->setPosition(Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); + button_scale9->setPosition( + Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); scrollView->addChild(button_scale9); - + imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); scrollView->addChild(imageView); - - - + return true; } - + return false; } // UIScrollViewDisableTest -UIScrollViewDisableTest::UIScrollViewDisableTest() -: _displayValueLabel(nullptr) -{ -} +UIScrollViewDisableTest::UIScrollViewDisableTest() : _displayValueLabel(nullptr) {} -UIScrollViewDisableTest::~UIScrollViewDisableTest() -{ -} +UIScrollViewDisableTest::~UIScrollViewDisableTest() {} bool UIScrollViewDisableTest::init() { @@ -587,14 +563,15 @@ bool UIScrollViewDisableTest::init() // Add a label in which the scrollview alert will be displayed _displayValueLabel = Text::create("ScrollView Disable Test", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); // Add the alert Text* alert = Text::create("ScrollView vertical", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); Layout* root = static_cast(_uiLayer->getChildByTag(81)); @@ -606,9 +583,9 @@ bool UIScrollViewDisableTest::init() scrollView->setContentSize(Size(280.0f, 100.0f)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); scrollView->setScrollBarWidth(4); scrollView->setTouchEnabled(false); scrollView->setScrollBarPositionFromCorner(Vec2(2, 2)); @@ -617,30 +594,32 @@ bool UIScrollViewDisableTest::init() ImageView* imageView = ImageView::create("cocosui/ccicon.png"); - float innerWidth = scrollView->getContentSize().width; + float innerWidth = scrollView->getContentSize().width; float innerHeight = scrollView->getContentSize().height + imageView->getContentSize().height; scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button->setPosition(Vec2(innerWidth / 2.0f, scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + button->setPosition(Vec2(innerWidth / 2.0f, + scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); scrollView->addChild(button); Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); titleButton->setTitleText("Title Button"); - titleButton->setPosition(Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); + titleButton->setPosition( + Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); scrollView->addChild(titleButton); Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); - button_scale9->setPosition(Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); + button_scale9->setPosition( + Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); scrollView->addChild(button_scale9); imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); scrollView->addChild(imageView); - return true; } @@ -649,14 +628,9 @@ bool UIScrollViewDisableTest::init() // UIScrollViewInnerSize -UIScrollViewInnerSize::UIScrollViewInnerSize() - : _displayValueLabel(nullptr) -{ -} +UIScrollViewInnerSize::UIScrollViewInnerSize() : _displayValueLabel(nullptr) {} -UIScrollViewInnerSize::~UIScrollViewInnerSize() -{ -} +UIScrollViewInnerSize::~UIScrollViewInnerSize() {} bool UIScrollViewInnerSize::init() { @@ -667,14 +641,16 @@ bool UIScrollViewInnerSize::init() // Add a label in which the scrollview alert will be displayed _displayValueLabel = Text::create("ScrollView InnerSize Test", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); // Add the alert - Text* alert = Text::create("ScrollView & InnerContainer should be align to the left and top point", "fonts/Marker Felt.ttf", 10); + Text* alert = Text::create("ScrollView & InnerContainer should be align to the left and top point", + "fonts/Marker Felt.ttf", 10); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); Layout* root = static_cast(_uiLayer->getChildByTag(81)); @@ -686,9 +662,9 @@ bool UIScrollViewInnerSize::init() scrollView->setContentSize(Size(200.0f, 50.0f)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); scrollView->setScrollBarWidth(4); scrollView->setTouchEnabled(false); scrollView->setScrollBarPositionFromCorner(Vec2(2, 2)); @@ -711,34 +687,32 @@ bool UIScrollViewInnerSize::init() // UIScrollViewTestEvents -UIScrollViewTestEvents::UIScrollViewTestEvents() - : _displayValueLabel(nullptr) -{ - -} +UIScrollViewTestEvents::UIScrollViewTestEvents() : _displayValueLabel(nullptr) {} bool UIScrollViewTestEvents::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the dragpanel events will be displayed - _displayValueLabel = Text::create("(no events)","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("(no events)", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("ScrollView events","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("ScrollView events", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + Layout* root = static_cast(_uiLayer->getChildByTag(81)); - + Layout* background = static_cast(root->getChildByName("background_Panel")); - + // Create the dragpanel ui::ScrollView* scrollView = ui::ScrollView::create(); scrollView->setDirection(ui::ScrollView::Direction::BOTH); @@ -751,53 +725,49 @@ bool UIScrollViewTestEvents::init() scrollView->setScrollBarPositionFromCorner(Vec2(6, 6)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f)); ImageView* imageView = ImageView::create("Hello.png"); scrollView->addChild(imageView); - + scrollView->setInnerContainerSize(imageView->getContentSize()); Size innerSize = scrollView->getInnerContainerSize(); imageView->setPosition(Vec2(innerSize.width / 2.0f, innerSize.height / 2.0f)); - + _uiLayer->addChild(scrollView); - + // Jump to right bottom scrollView->jumpToBottomRight(); - - auto getRandomColor = [] { - return Color4B(random(0, 255), random(0, 255), random(0, 255), 255); - }; + + auto getRandomColor = [] { return Color4B(random(0, 255), random(0, 255), random(0, 255), 255); }; scrollView->addEventListener([&](Ref*, ui::ScrollView::EventType e) { - switch ( e ) { - case ui::ScrollView::EventType::SCROLLING_BEGAN: - _displayValueLabel->setString("scrolling began!"); - _displayValueLabel->setTextColor(getRandomColor()); - break; - case ui::ScrollView::EventType::SCROLLING_ENDED: - _displayValueLabel->setString("scrolling ended!"); - _displayValueLabel->setTextColor(getRandomColor()); - break; - default: break; + switch (e) + { + case ui::ScrollView::EventType::SCROLLING_BEGAN: + _displayValueLabel->setString("scrolling began!"); + _displayValueLabel->setTextColor(getRandomColor()); + break; + case ui::ScrollView::EventType::SCROLLING_ENDED: + _displayValueLabel->setString("scrolling ended!"); + _displayValueLabel->setTextColor(getRandomColor()); + break; + default: + break; } }); - + return true; } - + return false; } // UIScrollViewStopScrollingTest UIScrollViewStopScrollingTest::UIScrollViewStopScrollingTest() - : _displayValueLabel(nullptr) - , _scrollView(nullptr) - , _remainingTime(0.0f) -{ - -} + : _displayValueLabel(nullptr), _scrollView(nullptr), _remainingTime(0.0f) +{} bool UIScrollViewStopScrollingTest::init() { @@ -808,13 +778,15 @@ bool UIScrollViewStopScrollingTest::init() // Add a label in which the time remaining till scrolling stop will be displayed. _displayValueLabel = Text::create("Scrolling stop isn't scheduled", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); // Add the alert Text* alert = Text::create("Click the button and start to scroll", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); Layout* root = static_cast(_uiLayer->getChildByTag(81)); @@ -833,9 +805,9 @@ bool UIScrollViewStopScrollingTest::init() _scrollView->setScrollBarPositionFromCorner(Vec2(6, 6)); Size backgroundSize = background->getContentSize(); _scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + - (backgroundSize.width - _scrollView->getContentSize().width) / 2.0f, - (widgetSize.height - backgroundSize.height) / 2.0f + - (backgroundSize.height - _scrollView->getContentSize().height) / 2.0f)); + (backgroundSize.width - _scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - _scrollView->getContentSize().height) / 2.0f)); ImageView* imageView = ImageView::create("Hello.png"); _scrollView->addChild(imageView); _scrollView->setInnerContainerSize(imageView->getContentSize()); @@ -844,8 +816,7 @@ bool UIScrollViewStopScrollingTest::init() _uiLayer->addChild(_scrollView); // Log some ScrollView events. - _scrollView->addEventListener([&] (Ref*, ui::ScrollView::EventType e) - { + _scrollView->addEventListener([&](Ref*, ui::ScrollView::EventType e) { switch (e) { case ui::ScrollView::EventType::SCROLLING_BEGAN: @@ -857,7 +828,8 @@ bool UIScrollViewStopScrollingTest::init() case ui::ScrollView::EventType::AUTOSCROLL_ENDED: CCLOG("auto-scrolling ended!"); break; - default: break; + default: + break; } }); @@ -870,7 +842,7 @@ bool UIScrollViewStopScrollingTest::init() button_scale9->setScale9Enabled(true); button_scale9->setContentSize(Size(120.0f, button_scale9->getVirtualRendererSize().height)); button_scale9->setPosition(Vec2(innerSize.width / 2.0f, innerSize.height / 2.0f)); - button_scale9->addClickEventListener([this] (Ref*) { this->_remainingTime = 3.0f; }); + button_scale9->addClickEventListener([this](Ref*) { this->_remainingTime = 3.0f; }); _scrollView->addChild(button_scale9); // Schedule update for this scene. @@ -889,7 +861,7 @@ void UIScrollViewStopScrollingTest::update(float dt) if (_remainingTime > 0.0f) { _remainingTime -= dt; - + if (_remainingTime > 0.0f) { // Update timer caption. @@ -906,13 +878,10 @@ void UIScrollViewStopScrollingTest::update(float dt) _displayValueLabel->setString(strRemainingTime); // Show hint label. - auto hintLabel = Label::createWithTTF("Stopped!", "fonts/Marker Felt.ttf", 32.0f); + auto hintLabel = Label::createWithTTF("Stopped!", "fonts/Marker Felt.ttf", 32.0f); Size contentSize = _uiLayer->getContentSize(); hintLabel->setPosition(Vec2(contentSize.width / 2.0f, contentSize.height / 2.0f)); - hintLabel->runAction(Spawn::createWithTwoActions( - FadeOut::create(0.3f), - ScaleTo::create(0.3f, 2.0f) - )); + hintLabel->runAction(Spawn::createWithTwoActions(FadeOut::create(0.3f), ScaleTo::create(0.3f, 2.0f))); _uiLayer->addChild(hintLabel); } } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h index fae82092ccd9..5aacaaf43782 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,9 +38,8 @@ class UIScrollViewTest_Vertical : public UIScene UIScrollViewTest_Vertical(); ~UIScrollViewTest_Vertical(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -52,9 +51,8 @@ class UIScrollViewTest_Horizontal : public UIScene UIScrollViewTest_Horizontal(); ~UIScrollViewTest_Horizontal(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -66,9 +64,8 @@ class UIScrollViewTest_Both : public UIScene UIScrollViewTest_Both(); ~UIScrollViewTest_Both(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -80,9 +77,8 @@ class UIScrollViewTest_ScrollToPercentBothDirection : public UIScene UIScrollViewTest_ScrollToPercentBothDirection(); ~UIScrollViewTest_ScrollToPercentBothDirection(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -94,9 +90,8 @@ class UIScrollViewTest_ScrollToPercentBothDirection_Bounce : public UIScene UIScrollViewTest_ScrollToPercentBothDirection_Bounce(); ~UIScrollViewTest_ScrollToPercentBothDirection_Bounce(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -108,9 +103,8 @@ class UIScrollViewNestTest : public UIScene UIScrollViewNestTest(); ~UIScrollViewNestTest(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -122,9 +116,8 @@ class UIScrollViewRotated : public UIScene UIScrollViewRotated(); ~UIScrollViewRotated(); virtual bool init() override; - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -138,7 +131,6 @@ class UIScrollViewDisableTest : public UIScene virtual bool init() override; protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -152,21 +144,19 @@ class UIScrollViewInnerSize : public UIScene virtual bool init() override; protected: - cocos2d::ui::Text* _displayValueLabel; }; class UIScrollViewTestEvents : public UIScene { public: - CREATE_FUNC(UIScrollViewTestEvents); - - UIScrollViewTestEvents(); - virtual bool init() override; - + CREATE_FUNC(UIScrollViewTestEvents); + + UIScrollViewTestEvents(); + virtual bool init() override; + protected: - - cocos2d::ui::Text* _displayValueLabel; + cocos2d::ui::Text* _displayValueLabel; }; class UIScrollViewStopScrollingTest : public UIScene @@ -180,7 +170,6 @@ class UIScrollViewStopScrollingTest : public UIScene virtual void update(float dt) override; protected: - cocos2d::ui::Text* _displayValueLabel; cocos2d::ui::ScrollView* _scrollView; float _remainingTime; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.cpp index cc4a4e92dcb4..4761b5add01f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -40,41 +40,37 @@ UISliderTests::UISliderTests() // UISliderTest -UISliderTest::UISliderTest() -: _displayValueLabel(nullptr) -{ - -} +UISliderTest::UISliderTest() : _displayValueLabel(nullptr) {} -UISliderTest::~UISliderTest() -{ -} +UISliderTest::~UISliderTest() {} bool UISliderTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the slider alert will be displayed _displayValueLabel = TextBMFont::create("Move the slider thumb", "ccb/markerfelt24shadow.fnt"); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("Slider","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("Slider", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); - _uiLayer->addChild(alert); - + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + _uiLayer->addChild(alert); + // Create the slider Slider* slider = Slider::create(); slider->loadBarTexture("cocosui/sliderTrack.png"); slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); slider->loadProgressBarTexture("cocosui/sliderProgress.png"); slider->setMaxPercent(10000); - slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f/* + slider->getSize().height * 2.0f*/)); + slider->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f /* + slider->getSize().height * 2.0f*/)); slider->addEventListener(CC_CALLBACK_2(UISliderTest::sliderEvent, this)); _uiLayer->addChild(slider); @@ -82,23 +78,24 @@ bool UISliderTest::init() TTFConfig ttfConfig("fonts/arial.ttf", 15); auto label1 = Label::createWithTTF(ttfConfig, "Print Resources"); - auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UISliderTest::printWidgetResources, this)); - item1->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); + auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UISliderTest::printWidgetResources, this)); + item1->setPosition( + Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); auto pMenu1 = Menu::create(item1, nullptr); pMenu1->setPosition(Vec2(0.0f, 0.0f)); this->addChild(pMenu1, 10); - + return true; } return false; } -void UISliderTest::sliderEvent(Ref *pSender, Slider::EventType type) +void UISliderTest::sliderEvent(Ref* pSender, Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { Slider* slider = dynamic_cast(pSender); - int percent = slider->getPercent(); + int percent = slider->getPercent(); int maxPercent = slider->getMaxPercent(); _displayValueLabel->setString(StringUtils::format("Percent %f", 10000.0 * percent / maxPercent)); } @@ -108,45 +105,44 @@ void UISliderTest::printWidgetResources(cocos2d::Ref* /*sender*/) cocos2d::ResourceData textureFile = _slider->getBackFile(); CCLOG("textureFile Name : %s, Type: %d", textureFile.file.c_str(), textureFile.type); cocos2d::ResourceData progressBarTextureFile = _slider->getProgressBarFile(); - CCLOG("progressBarTextureFile Name : %s, Type: %d", progressBarTextureFile.file.c_str(), progressBarTextureFile.type); + CCLOG("progressBarTextureFile Name : %s, Type: %d", progressBarTextureFile.file.c_str(), + progressBarTextureFile.type); cocos2d::ResourceData slidBallNormalTextureFile = _slider->getBallNormalFile(); - CCLOG("slidBallNormalTextureFile Name : %s, Type: %d", slidBallNormalTextureFile.file.c_str(), slidBallNormalTextureFile.type); + CCLOG("slidBallNormalTextureFile Name : %s, Type: %d", slidBallNormalTextureFile.file.c_str(), + slidBallNormalTextureFile.type); cocos2d::ResourceData slidBallPressedTextureFile = _slider->getBallPressedFile(); - CCLOG("slidBallPressedTextureFile Name : %s, Type: %d", slidBallPressedTextureFile.file.c_str(), slidBallPressedTextureFile.type); + CCLOG("slidBallPressedTextureFile Name : %s, Type: %d", slidBallPressedTextureFile.file.c_str(), + slidBallPressedTextureFile.type); cocos2d::ResourceData slidBallDisabledTextureFile = _slider->getBallDisabledFile(); - CCLOG("slidBallDisabledTextureFile Name : %s, Type: %d", slidBallDisabledTextureFile.file.c_str(), slidBallDisabledTextureFile.type); + CCLOG("slidBallDisabledTextureFile Name : %s, Type: %d", slidBallDisabledTextureFile.file.c_str(), + slidBallDisabledTextureFile.type); } // UISliderTest_Scale9 -UISliderTest_Scale9::UISliderTest_Scale9() -: _displayValueLabel(nullptr) -{ - -} +UISliderTest_Scale9::UISliderTest_Scale9() : _displayValueLabel(nullptr) {} -UISliderTest_Scale9::~UISliderTest_Scale9() -{ -} +UISliderTest_Scale9::~UISliderTest_Scale9() {} bool UISliderTest_Scale9::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the slider alert will be displayed - _displayValueLabel = Text::create("Move the slider thumb","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("Move the slider thumb", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text *alert = Text::create("Slider scale9 render","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("Slider scale9 render", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); - + // Create the slider Slider* slider = Slider::create(); slider->loadBarTexture("cocosui/sliderTrack2.png"); @@ -155,37 +151,31 @@ bool UISliderTest_Scale9::init() slider->setScale9Enabled(true); slider->setCapInsets(Rect(0.0f, 0.0f, 0.0f, 0.0f)); slider->setContentSize(Size(250.0f, 19.0f)); - slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f/* + slider->getSize().height * 3.0f*/)); + slider->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f /* + slider->getSize().height * 3.0f*/)); slider->addEventListener(CC_CALLBACK_2(UISliderTest_Scale9::sliderEvent, this)); _uiLayer->addChild(slider); - - + return true; } return false; } -void UISliderTest_Scale9::sliderEvent(Ref *pSender, Slider::EventType type) +void UISliderTest_Scale9::sliderEvent(Ref* pSender, Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { Slider* slider = dynamic_cast(pSender); - int percent = slider->getPercent(); + int percent = slider->getPercent(); _displayValueLabel->setString(StringUtils::format("Percent %d", percent)); } } // UISliderTest_Scale9_State_Change -UISliderTest_Scale9_State_Change::UISliderTest_Scale9_State_Change() - : _displayValueLabel(nullptr) -{ +UISliderTest_Scale9_State_Change::UISliderTest_Scale9_State_Change() : _displayValueLabel(nullptr) {} -} - -UISliderTest_Scale9_State_Change::~UISliderTest_Scale9_State_Change() -{ -} +UISliderTest_Scale9_State_Change::~UISliderTest_Scale9_State_Change() {} bool UISliderTest_Scale9_State_Change::init() { @@ -200,9 +190,10 @@ bool UISliderTest_Scale9_State_Change::init() _uiLayer->addChild(_displayValueLabel); // Add the alert - Text *alert = Text::create("Slider scale9 render", "fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Slider scale9 render", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); // Create the slider @@ -214,9 +205,11 @@ bool UISliderTest_Scale9_State_Change::init() slider->setScale9Enabled(true); slider->setCapInsets(Rect(0.0f, 0.0f, 0.0f, 0.0f)); slider->setContentSize(Size(200.0f, 60.0f)); - slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f/* + slider->getSize().height * 3.0f*/)); - slider->addTouchEventListener([=](Ref* /*sender*/, Widget::TouchEventType type){ - if (type == Widget::TouchEventType::ENDED) { + slider->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f /* + slider->getSize().height * 3.0f*/)); + slider->addTouchEventListener([=](Ref* /*sender*/, Widget::TouchEventType type) { + if (type == Widget::TouchEventType::ENDED) + { if (slider->isScale9Enabled()) { slider->setScale9Enabled(false); @@ -227,61 +220,53 @@ bool UISliderTest_Scale9_State_Change::init() }); _uiLayer->addChild(slider); - return true; } return false; } -void UISliderTest_Scale9_State_Change::sliderEvent(Ref *pSender, Slider::EventType type) +void UISliderTest_Scale9_State_Change::sliderEvent(Ref* pSender, Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { Slider* slider = dynamic_cast(pSender); - int percent = slider->getPercent(); + int percent = slider->getPercent(); _displayValueLabel->setString(StringUtils::format("Percent %d", percent)); } } // UISliderNormalDefaultTest -UISliderNormalDefaultTest::UISliderNormalDefaultTest() -: _displayValueLabel(nullptr) -{ - -} +UISliderNormalDefaultTest::UISliderNormalDefaultTest() : _displayValueLabel(nullptr) {} -UISliderNormalDefaultTest::~UISliderNormalDefaultTest() -{ -} +UISliderNormalDefaultTest::~UISliderNormalDefaultTest() {} bool UISliderNormalDefaultTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the slider alert will be displayed - _displayValueLabel = Text::create("","Arial",32); + _displayValueLabel = Text::create("", "Arial", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 100)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("when pressed, the slider ball should scale","fonts/Marker Felt.ttf",20); + Text* alert = Text::create("when pressed, the slider ball should scale", "fonts/Marker Felt.ttf", 20); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); _uiLayer->addChild(alert); - + // Create the slider Slider* slider = Slider::create(); slider->loadBarTexture("cocosui/sliderTrack.png"); slider->loadSlidBallTextures("cocosui/sliderThumb.png"); - slider->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + 50)); + slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 50)); _uiLayer->addChild(slider); - + Slider* sliderScale9 = (Slider*)slider->clone(); sliderScale9->setScale9Enabled(true); sliderScale9->setCapInsets(Rect(0.0f, 0.0f, 0.0f, 0.0f)); @@ -289,8 +274,7 @@ bool UISliderNormalDefaultTest::init() sliderScale9->setContentSize(Size(250.0f, 19.0f)); sliderScale9->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - 20)); _uiLayer->addChild(sliderScale9); - - + return true; } return false; @@ -298,45 +282,38 @@ bool UISliderNormalDefaultTest::init() // UISliderDisabledDefaultTest -UISliderDisabledDefaultTest::UISliderDisabledDefaultTest() -: _displayValueLabel(nullptr) -{ - -} +UISliderDisabledDefaultTest::UISliderDisabledDefaultTest() : _displayValueLabel(nullptr) {} -UISliderDisabledDefaultTest::~UISliderDisabledDefaultTest() -{ -} +UISliderDisabledDefaultTest::~UISliderDisabledDefaultTest() {} bool UISliderDisabledDefaultTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the slider alert will be displayed - _displayValueLabel = Text::create("","Arial",32); + _displayValueLabel = Text::create("", "Arial", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 100)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("slider ball should be gray.","fonts/Marker Felt.ttf",20); + Text* alert = Text::create("slider ball should be gray.", "fonts/Marker Felt.ttf", 20); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); _uiLayer->addChild(alert); - + // Create the slider Slider* slider = Slider::create(); slider->loadBarTexture("cocosui/slidbar.png"); slider->loadSlidBallTextureNormal("cocosui/sliderballnormal.png"); slider->setEnabled(false); slider->setBright(false); - slider->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + 50)); + slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 50)); _uiLayer->addChild(slider); - + Slider* sliderScale9 = (Slider*)slider->clone(); sliderScale9->setScale9Enabled(true); sliderScale9->setEnabled(false); @@ -345,26 +322,17 @@ bool UISliderDisabledDefaultTest::init() sliderScale9->setContentSize(Size(250.0f, 10.0f)); sliderScale9->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - 20)); _uiLayer->addChild(sliderScale9); - - + return true; } return false; } - - // UISliderNewEventCallbackTest -UISliderNewEventCallbackTest::UISliderNewEventCallbackTest() -: _displayValueLabel(nullptr) -{ - -} +UISliderNewEventCallbackTest::UISliderNewEventCallbackTest() : _displayValueLabel(nullptr) {} -UISliderNewEventCallbackTest::~UISliderNewEventCallbackTest() -{ -} +UISliderNewEventCallbackTest::~UISliderNewEventCallbackTest() {} bool UISliderNewEventCallbackTest::init() { @@ -373,7 +341,7 @@ bool UISliderNewEventCallbackTest::init() Size widgetSize = _widget->getContentSize(); // Add a label in which the slider alert will be displayed - _displayValueLabel = Text::create("","Arial",32); + _displayValueLabel = Text::create("", "Arial", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 100)); _uiLayer->addChild(_displayValueLabel); @@ -381,8 +349,8 @@ bool UISliderNewEventCallbackTest::init() // Add the alert Text* alert = Text::create("See console output for Slider Down and Up event.", "fonts/Marker Felt.ttf", 20); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.75f)); _uiLayer->addChild(alert); // Create the slider @@ -391,58 +359,48 @@ bool UISliderNewEventCallbackTest::init() slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", ""); slider->loadProgressBarTexture("cocosui/sliderProgress.png"); slider->setMaxPercent(1000); - slider->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f + 50)); - slider->addEventListener([=](Ref* widget,Slider::EventType type) - { + slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 50)); + slider->addEventListener([=](Ref* widget, Slider::EventType type) { Slider* slider = (Slider*)widget; CC_UNUSED_PARAM(slider); - if(type == Slider::EventType::ON_SLIDEBALL_DOWN) + if (type == Slider::EventType::ON_SLIDEBALL_DOWN) { CCLOG("slider button pressed!"); } - else if(type == Slider::EventType::ON_PERCENTAGE_CHANGED) + else if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { - CCLOG("slider is moving! percent = %f", 100.0f * slider->getPercent() / slider->getMaxPercent() ); + CCLOG("slider is moving! percent = %f", 100.0f * slider->getPercent() / slider->getMaxPercent()); } - else if(type == Slider::EventType::ON_SLIDEBALL_UP) + else if (type == Slider::EventType::ON_SLIDEBALL_UP) { CCLOG("slider button is released."); } }); _uiLayer->addChild(slider); - return true; } return false; } - // UISliderIssue12249Test -UISliderIssue12249Test::UISliderIssue12249Test() -: _displayValueLabel(nullptr) -{ - -} +UISliderIssue12249Test::UISliderIssue12249Test() : _displayValueLabel(nullptr) {} -UISliderIssue12249Test::~UISliderIssue12249Test() -{ -} +UISliderIssue12249Test::~UISliderIssue12249Test() {} bool UISliderIssue12249Test::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the slider alert will be displayed _displayValueLabel = TextBMFont::create("Move the slider thumb", "ccb/markerfelt24shadow.fnt"); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); _uiLayer->addChild(_displayValueLabel); - + // Create the slider Slider* slider = Slider::create(); slider->setScale9Enabled(true); @@ -451,22 +409,22 @@ bool UISliderIssue12249Test::init() slider->loadProgressBarTexture("cocosui/sliderProgress.png"); slider->setContentSize(Size(300, slider->getContentSize().height * 1.5)); slider->setMaxPercent(10000); - slider->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f/* + slider->getSize().height * 2.0f*/)); + slider->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f /* + slider->getSize().height * 2.0f*/)); slider->addEventListener(CC_CALLBACK_2(UISliderIssue12249Test::sliderEvent, this)); _uiLayer->addChild(slider); - - + return true; } return false; } -void UISliderIssue12249Test::sliderEvent(Ref *pSender, Slider::EventType type) +void UISliderIssue12249Test::sliderEvent(Ref* pSender, Slider::EventType type) { if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { Slider* slider = dynamic_cast(pSender); - int percent = slider->getPercent(); + int percent = slider->getPercent(); int maxPercent = slider->getMaxPercent(); _displayValueLabel->setString(StringUtils::format("Percent %f", 10000.0 * percent / maxPercent)); } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.h index 6d4eb294f7cc..ca16cab522f4 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -40,7 +40,7 @@ class UISliderTest : public UIScene virtual bool init() override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); void printWidgetResources(cocos2d::Ref* sender); - + protected: cocos2d::ui::TextBMFont* _displayValueLabel; cocos2d::ui::Slider* _slider; @@ -55,7 +55,7 @@ class UISliderTest_Scale9 : public UIScene ~UISliderTest_Scale9(); virtual bool init() override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); - + protected: cocos2d::ui::Text* _displayValueLabel; }; @@ -74,7 +74,6 @@ class UISliderTest_Scale9_State_Change : public UIScene cocos2d::ui::Text* _displayValueLabel; }; - class UISliderNormalDefaultTest : public UIScene { public: @@ -83,7 +82,7 @@ class UISliderNormalDefaultTest : public UIScene UISliderNormalDefaultTest(); ~UISliderNormalDefaultTest(); virtual bool init() override; - + protected: cocos2d::ui::Text* _displayValueLabel; }; @@ -96,7 +95,7 @@ class UISliderDisabledDefaultTest : public UIScene UISliderDisabledDefaultTest(); ~UISliderDisabledDefaultTest(); virtual bool init() override; - + protected: cocos2d::ui::Text* _displayValueLabel; }; @@ -118,12 +117,12 @@ class UISliderIssue12249Test : public UIScene { public: CREATE_FUNC(UISliderIssue12249Test); - + UISliderIssue12249Test(); ~UISliderIssue12249Test(); virtual bool init() override; void sliderEvent(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType type); - + protected: cocos2d::ui::TextBMFont* _displayValueLabel; }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.cpp index cc5de4ddcb7e..4a0fedbda86c 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright(c) 2016 cocos2d - x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http ://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE @@ -34,15 +34,9 @@ UITabControlTests::UITabControlTests() ADD_TEST_CASE(UITabControlTest); } +UITabControlTest::UITabControlTest() {} -UITabControlTest::UITabControlTest() -{ -} - -UITabControlTest::~UITabControlTest() -{ - -} +UITabControlTest::~UITabControlTest() {} bool UITabControlTest::init() { @@ -65,12 +59,12 @@ bool UITabControlTest::init() auto header1 = TabHeader::create(); header1->setTitleText("background"); header1->loadTextureBackGround("cocosui/check_box_normal_disable.png"); - auto header2 = TabHeader::create("cross", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active.png"); - auto header3 = TabHeader::create("press&cross", "cocosui/check_box_normal.png", - "cocosui/check_box_normal_press.png", - "cocosui/check_box_active.png", - "cocosui/check_box_normal_disable.png", - "cocosui/check_box_active_disable.png"); + auto header2 = + TabHeader::create("cross", "cocosui/check_box_normal_disable.png", "cocosui/check_box_active.png"); + auto header3 = + TabHeader::create("press&cross", "cocosui/check_box_normal.png", "cocosui/check_box_normal_press.png", + "cocosui/check_box_active.png", "cocosui/check_box_normal_disable.png", + "cocosui/check_box_active_disable.png"); auto container1 = Layout::create(); container1->setOpacity(255); @@ -93,23 +87,19 @@ bool UITabControlTest::init() tab->insertTab(2, header3, container3); tab->setSelectTab(2); - + _uiLayer->addChild(tab); tab->setPosition(Vec2(widgetSize.width * .5f, widgetSize.height * .5f)); - tab->setTabChangedEventListener( - [displayText](int index, TabControl::EventType evtType) - { + tab->setTabChangedEventListener([displayText](int index, TabControl::EventType evtType) { displayText->retain(); char display[20]; sprintf(display, "tab %d selected", index); displayText->setString(display); displayText->release(); - } - ); + }); return true; } return false; } - diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.h index 159f474c67c4..e2319d75248f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITabControlTest/UITabControlTest.h @@ -35,13 +35,10 @@ class UITabControlTest : public UIScene public: CREATE_FUNC(UITabControlTest); - UITabControlTest(); ~UITabControlTest(); bool init() override; - }; - -#endif //__TestCpp__UITabControlTest__ \ No newline at end of file +#endif //__TestCpp__UITabControlTest__ \ No newline at end of file diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.cpp index b24b7ae65893..f3987441c70f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,13 +39,14 @@ bool UITextAtlasTest::init() if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add the alert - Text* alert = Text::create("TextAtlas","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextAtlas", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); - + // Create the text atlas TextAtlas* textAtlas = nullptr; if (Director::getInstance()->getWinSizeInPixels().height > 320.f) @@ -57,13 +58,14 @@ bool UITextAtlasTest::init() textAtlas = TextAtlas::create("1234567890", "cocosui/labelatlas.png", 17, 22, "0"); } textAtlas->setPosition(Vec2((widgetSize.width) / 2, widgetSize.height / 2.0f)); - _uiLayer->addChild(textAtlas); + _uiLayer->addChild(textAtlas); _textAtlas = textAtlas; TTFConfig ttfConfig("fonts/arial.ttf", 15); auto label1 = Label::createWithTTF(ttfConfig, "Print Resources"); - auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UITextAtlasTest::printWidgetResources, this)); - item1->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); + auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UITextAtlasTest::printWidgetResources, this)); + item1->setPosition( + Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); auto pMenu1 = Menu::create(item1, nullptr); pMenu1->setPosition(Vec2(0, 0)); this->addChild(pMenu1, 10); @@ -84,13 +86,14 @@ bool UITextAtlasETC1ShadowTest::init() if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add the alert - Text* alert = Text::create("TextAtlas With ETC1 format","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextAtlas With ETC1 format", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); - + // Create the text atlas TextAtlas* textAtlas = nullptr; if (Director::getInstance()->getWinSizeInPixels().height > 320.f) @@ -106,11 +109,13 @@ bool UITextAtlasETC1ShadowTest::init() auto labelAtlas = (Label*)textAtlas->getVirtualRenderer(); labelAtlas->enableShadow(Color4B::GREEN); _textAtlas = textAtlas; - + TTFConfig ttfConfig("fonts/arial.ttf", 15); auto label1 = Label::createWithTTF(ttfConfig, "Print Resources"); - auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UITextAtlasETC1ShadowTest::printWidgetResources, this)); - item1->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); + auto item1 = + MenuItemLabel::create(label1, CC_CALLBACK_1(UITextAtlasETC1ShadowTest::printWidgetResources, this)); + item1->setPosition( + Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); auto pMenu1 = Menu::create(item1, nullptr); pMenu1->setPosition(Vec2(0, 0)); this->addChild(pMenu1, 10); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.h index 7944897d1043..2c6059f0c576 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -22,8 +22,6 @@ THE SOFTWARE. ****************************************************************************/ - - #ifndef __TestCpp__UITextAtlasTest__ #define __TestCpp__UITextAtlasTest__ @@ -38,6 +36,7 @@ class UITextAtlasTest : public UIScene virtual bool init() override; void printWidgetResources(cocos2d::Ref* sender); + protected: cocos2d::ui::TextAtlas* _textAtlas; }; @@ -46,9 +45,10 @@ class UITextAtlasETC1ShadowTest : public UIScene { public: CREATE_FUNC(UITextAtlasETC1ShadowTest); - + virtual bool init() override; void printWidgetResources(cocos2d::Ref* sender); + protected: cocos2d::ui::TextAtlas* _textAtlas; }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.cpp index 39fc6518b60e..83f405d86110 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -38,23 +38,26 @@ bool UITextBMFontTest::init() if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - - Text* alert = Text::create("TextBMFont","TextBMFont",30); + + Text* alert = Text::create("TextBMFont", "TextBMFont", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); - + // Create the TextBMFont TextBMFont* textBMFont = TextBMFont::create("BMFont", "cocosui/bitmapFontTest2.fnt"); - textBMFont->setPosition(Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + textBMFont->getContentSize().height / 8.0f)); + textBMFont->setPosition( + Vec2(widgetSize.width / 2, widgetSize.height / 2.0f + textBMFont->getContentSize().height / 8.0f)); _uiLayer->addChild(textBMFont); - + _textBMFont = textBMFont; TTFConfig ttfConfig("fonts/arial.ttf", 15); auto label1 = Label::createWithTTF(ttfConfig, "Print Resources"); - auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UITextBMFontTest::printWidgetResources, this)); - item1->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); + auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UITextBMFontTest::printWidgetResources, this)); + item1->setPosition( + Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3)); auto pMenu1 = Menu::create(item1, nullptr); pMenu1->setPosition(Vec2(0, 0)); this->addChild(pMenu1, 10); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.h index e43a29a837ee..0a26ad80b93f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -37,6 +37,7 @@ class UITextBMFontTest : public UIScene virtual bool init() override; void printWidgetResources(cocos2d::Ref* sender); + protected: cocos2d::ui::TextBMFont* _textBMFont; }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp index 75c72866fb73..1f3205bd035f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,277 +39,262 @@ UITextFieldTests::UITextFieldTests() } // UITextFieldTest -UITextFieldTest::UITextFieldTest() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest::UITextFieldTest() : _displayValueLabel(nullptr) {} -UITextFieldTest::~UITextFieldTest() -{ -} +UITextFieldTest::~UITextFieldTest() {} bool UITextFieldTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); - _uiLayer->addChild(_displayValueLabel); - + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _uiLayer->addChild(_displayValueLabel); + // Add the alert - Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextField", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input words here","Arial",30); + TextField* textField = TextField::create("input words here", "Arial", 30); textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest::textFieldEvent, this)); _uiLayer->addChild(textField); - - + return true; } return false; } -void UITextFieldTest::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME")); - } - break; - - case TextField::EventType::INSERT_TEXT: - _displayValueLabel->setString(StringUtils::format("insert words")); - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME")); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME")); + } + break; + + case TextField::EventType::INSERT_TEXT: + _displayValueLabel->setString(StringUtils::format("insert words")); + break; + + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word")); + break; + + default: + break; } } // UITextFieldTest_MaxLength -UITextFieldTest_MaxLength::UITextFieldTest_MaxLength() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest_MaxLength::UITextFieldTest_MaxLength() : _displayValueLabel(nullptr) {} -UITextFieldTest_MaxLength::~UITextFieldTest_MaxLength() -{ -} +UITextFieldTest_MaxLength::~UITextFieldTest_MaxLength() {} bool UITextFieldTest_MaxLength::init() { if (UIScene::init()) { Size screenSize = Director::getInstance()->getWinSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text *alert = Text::create("TextField max length","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextField max length", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input words here","Arial",30); + TextField* textField = TextField::create("input words here", "Arial", 30); textField->setMaxLengthEnabled(true); textField->setMaxLength(3); textField->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_MaxLength::textFieldEvent, this)); _uiLayer->addChild(textField); - + return true; } return false; } -void UITextFieldTest_MaxLength::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_MaxLength::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME max length %d", textField->getMaxLength())); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME max length %d", textField->getMaxLength())); - } - break; - - case TextField::EventType::INSERT_TEXT: - { - TextField* textField = dynamic_cast(pSender); - _displayValueLabel->setString(StringUtils::format("insert words max length %d", textField->getMaxLength())); - } - break; - - case TextField::EventType::DELETE_BACKWARD: - { - TextField* textField = dynamic_cast(pSender); - _displayValueLabel->setString(StringUtils::format("delete word max length %d", textField->getMaxLength())); - } - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME max length %d", textField->getMaxLength())); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME max length %d", textField->getMaxLength())); + } + break; + + case TextField::EventType::INSERT_TEXT: + { + TextField* textField = dynamic_cast(pSender); + _displayValueLabel->setString(StringUtils::format("insert words max length %d", textField->getMaxLength())); + } + break; + + case TextField::EventType::DELETE_BACKWARD: + { + TextField* textField = dynamic_cast(pSender); + _displayValueLabel->setString(StringUtils::format("delete word max length %d", textField->getMaxLength())); + } + break; + + default: + break; } } // UITextFieldTest_Password -UITextFieldTest_Password::UITextFieldTest_Password() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest_Password::UITextFieldTest_Password() : _displayValueLabel(nullptr) {} -UITextFieldTest_Password::~UITextFieldTest_Password() -{ -} +UITextFieldTest_Password::~UITextFieldTest_Password() {} bool UITextFieldTest_Password::init() { if (UIScene::init()) { Size screenSize = Director::getInstance()->getWinSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text *alert = Text::create("TextField password","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextField password", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + alert->setPosition( + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input password here","Arial",30); + TextField* textField = TextField::create("input password here", "Arial", 30); textField->setPasswordEnabled(true); textField->setPasswordStyleText("*"); textField->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_Password::textFieldEvent, this)); _uiLayer->addChild(textField); - + return true; } return false; } -void UITextFieldTest_Password::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_Password::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME password")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME password")); - } - break; - - case TextField::EventType::INSERT_TEXT: - _displayValueLabel->setString(StringUtils::format("insert words password")); - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word password")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME password")); } -} + break; + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME password")); + } + break; -// UITextFieldTest_LineWrap -UITextFieldTest_LineWrap::UITextFieldTest_LineWrap() -: _displayValueLabel(nullptr) -{ - -} + case TextField::EventType::INSERT_TEXT: + _displayValueLabel->setString(StringUtils::format("insert words password")); + break; -UITextFieldTest_LineWrap::~UITextFieldTest_LineWrap() -{ + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word password")); + break; + + default: + break; + } } +// UITextFieldTest_LineWrap +UITextFieldTest_LineWrap::UITextFieldTest_LineWrap() : _displayValueLabel(nullptr) {} + +UITextFieldTest_LineWrap::~UITextFieldTest_LineWrap() {} + bool UITextFieldTest_LineWrap::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",30); + _displayValueLabel = Text::create("No Event", "fonts/Marker Felt.ttf", 30); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text *alert = Text::create("TextField line wrap","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("TextField line wrap", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input words here","fonts/Marker Felt.ttf",30); + TextField* textField = TextField::create("input words here", "fonts/Marker Felt.ttf", 30); textField->ignoreContentAdaptWithSize(false); ((Label*)(textField->getVirtualRenderer()))->setLineBreakWithoutSpace(true); textField->setContentSize(Size(240.0f, 170.0f)); @@ -319,234 +304,224 @@ bool UITextFieldTest_LineWrap::init() textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_LineWrap::textFieldEvent, this)); _uiLayer->addChild(textField); - + return true; } return false; } -void UITextFieldTest_LineWrap::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_LineWrap::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size widgetSize = _widget->getContentSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 30))); - _displayValueLabel->setString(StringUtils::format("attach with IME")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - textField->setTextHorizontalAlignment(TextHAlignment::CENTER); - textField->setTextVerticalAlignment(TextVAlignment::CENTER); - - _displayValueLabel->setString(StringUtils::format("detach with IME")); - } - break; - - case TextField::EventType::INSERT_TEXT: - _displayValueLabel->setString(StringUtils::format("insert words")); - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size widgetSize = _widget->getContentSize(); + textField->runAction(MoveTo::create(0.225f, Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 30))); + _displayValueLabel->setString(StringUtils::format("attach with IME")); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + textField->setTextHorizontalAlignment(TextHAlignment::CENTER); + textField->setTextVerticalAlignment(TextVAlignment::CENTER); + + _displayValueLabel->setString(StringUtils::format("detach with IME")); + } + break; + + case TextField::EventType::INSERT_TEXT: + _displayValueLabel->setString(StringUtils::format("insert words")); + break; + + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word")); + break; + + default: + break; } } // UITextFieldTest_TrueTypeFont -UITextFieldTest_TrueTypeFont::UITextFieldTest_TrueTypeFont() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest_TrueTypeFont::UITextFieldTest_TrueTypeFont() : _displayValueLabel(nullptr) {} -UITextFieldTest_TrueTypeFont::~UITextFieldTest_TrueTypeFont() -{ -} +UITextFieldTest_TrueTypeFont::~UITextFieldTest_TrueTypeFont() {} bool UITextFieldTest_TrueTypeFont::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("True Type Font Test - No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("True Type Font Test - No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + Text* alert = Text::create("TextField", "fonts/Marker Felt.ttf", 30); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input words here","fonts/A Damn Mess.ttf",30); - + TextField* textField = TextField::create("input words here", "fonts/A Damn Mess.ttf", 30); + textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_TrueTypeFont::textFieldEvent, this)); _uiLayer->addChild(textField); - return true; } return false; } -void UITextFieldTest_TrueTypeFont::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_TrueTypeFont::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME")); - } - break; - - case TextField::EventType::INSERT_TEXT: - _displayValueLabel->setString(StringUtils::format("insert words")); - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME")); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME")); + } + break; + + case TextField::EventType::INSERT_TEXT: + _displayValueLabel->setString(StringUtils::format("insert words")); + break; + + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word")); + break; + + default: + break; } } // UITextFieldTest_BMFont -UITextFieldTest_BMFont::UITextFieldTest_BMFont() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest_BMFont::UITextFieldTest_BMFont() : _displayValueLabel(nullptr) {} -UITextFieldTest_BMFont::~UITextFieldTest_BMFont() -{ -} +UITextFieldTest_BMFont::~UITextFieldTest_BMFont() {} bool UITextFieldTest_BMFont::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("BMFont Test - No Event","fonts/Marker Felt.ttf",32); + _displayValueLabel = Text::create("BMFont Test - No Event", "fonts/Marker Felt.ttf", 32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + Text* alert = Text::create("TextField", "fonts/Marker Felt.ttf", 30); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("BMFont Text","fonts/bitmapFontTest3.fnt",30); + TextField* textField = TextField::create("BMFont Text", "fonts/bitmapFontTest3.fnt", 30); textField->setCursorEnabled(true); textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_BMFont::textFieldEvent, this)); _uiLayer->addChild(textField); - + return true; } return false; } -void UITextFieldTest_BMFont::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_BMFont::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME")); - } - break; - - case TextField::EventType::INSERT_TEXT: - _displayValueLabel->setString(StringUtils::format("insert words")); - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME")); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME")); + } + break; + + case TextField::EventType::INSERT_TEXT: + _displayValueLabel->setString(StringUtils::format("insert words")); + break; + + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word")); + break; + + default: + break; } } // UITextFieldTest_PlaceHolderColor -UITextFieldTest_PlaceHolderColor::UITextFieldTest_PlaceHolderColor() -: _displayValueLabel(nullptr) -{ - -} +UITextFieldTest_PlaceHolderColor::UITextFieldTest_PlaceHolderColor() : _displayValueLabel(nullptr) {} -UITextFieldTest_PlaceHolderColor::~UITextFieldTest_PlaceHolderColor() -{ -} +UITextFieldTest_PlaceHolderColor::~UITextFieldTest_PlaceHolderColor() {} bool UITextFieldTest_PlaceHolderColor::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add a label in which the textfield events will be displayed - _displayValueLabel = Text::create("You should see 16.50000, 34.0000 in the output window the first time you type","fonts/Marker Felt.ttf",12); + _displayValueLabel = + Text::create("You should see 16.50000, 34.0000 in the output window the first time you type", + "fonts/Marker Felt.ttf", 12); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); - _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _displayValueLabel->setPosition(Vec2( + widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); _uiLayer->addChild(_displayValueLabel); - + // Add the alert - Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + Text* alert = Text::create("TextField", "fonts/Marker Felt.ttf", 30); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); _uiLayer->addChild(alert); - + // Create the textfield - TextField* textField = TextField::create("input words here","Arial",30); + TextField* textField = TextField::create("input words here", "Arial", 30); textField->setPlaceHolder("input text here"); textField->setPlaceHolderColor(Color4B::GREEN); textField->setTextColor(Color4B::RED); @@ -558,41 +533,43 @@ bool UITextFieldTest_PlaceHolderColor::init() return false; } -void UITextFieldTest_PlaceHolderColor::textFieldEvent(Ref *pSender, TextField::EventType type) +void UITextFieldTest_PlaceHolderColor::textFieldEvent(Ref* pSender, TextField::EventType type) { switch (type) { - case TextField::EventType::ATTACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.225f, - Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("attach with IME")); - } - break; - - case TextField::EventType::DETACH_WITH_IME: - { - TextField* textField = dynamic_cast(pSender); - Size screenSize = Director::getInstance()->getWinSize(); - textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); - _displayValueLabel->setString(StringUtils::format("detach with IME")); - } - break; - - case TextField::EventType::INSERT_TEXT: - { - _displayValueLabel->setString(StringUtils::format("insert words")); - CCLOG("%f, %f", dynamic_cast(pSender)->getContentSize().width, dynamic_cast(pSender)->getContentSize().height); - } - break; - - case TextField::EventType::DELETE_BACKWARD: - _displayValueLabel->setString(StringUtils::format("delete word")); - break; - - default: - break; + case TextField::EventType::ATTACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create( + 0.225f, + Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("attach with IME")); + } + break; + + case TextField::EventType::DETACH_WITH_IME: + { + TextField* textField = dynamic_cast(pSender); + Size screenSize = Director::getInstance()->getWinSize(); + textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f))); + _displayValueLabel->setString(StringUtils::format("detach with IME")); + } + break; + + case TextField::EventType::INSERT_TEXT: + { + _displayValueLabel->setString(StringUtils::format("insert words")); + CCLOG("%f, %f", dynamic_cast(pSender)->getContentSize().width, + dynamic_cast(pSender)->getContentSize().height); + } + break; + + case TextField::EventType::DELETE_BACKWARD: + _displayValueLabel->setString(StringUtils::format("delete word")); + break; + + default: + break; } } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.h index 532dd191bcf9..058d63a2856f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -39,9 +39,8 @@ class UITextFieldTest : public UIScene ~UITextFieldTest(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -54,9 +53,8 @@ class UITextFieldTest_MaxLength : public UIScene ~UITextFieldTest_MaxLength(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -69,9 +67,8 @@ class UITextFieldTest_Password : public UIScene ~UITextFieldTest_Password(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -84,9 +81,8 @@ class UITextFieldTest_LineWrap : public UIScene ~UITextFieldTest_LineWrap(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -99,9 +95,8 @@ class UITextFieldTest_TrueTypeFont : public UIScene ~UITextFieldTest_TrueTypeFont(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -109,14 +104,13 @@ class UITextFieldTest_BMFont : public UIScene { public: CREATE_FUNC(UITextFieldTest_BMFont); - + UITextFieldTest_BMFont(); ~UITextFieldTest_BMFont(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; @@ -129,9 +123,8 @@ class UITextFieldTest_PlaceHolderColor : public UIScene ~UITextFieldTest_PlaceHolderColor(); virtual bool init() override; void textFieldEvent(cocos2d::Ref* sender, cocos2d::ui::TextField::EventType type); - + protected: - cocos2d::ui::Text* _displayValueLabel; }; #endif /* defined(__TestCpp__UITextFieldTest__) */ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.cpp index 9ca3ef615506..d24c4bc6f4ef 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -47,18 +47,16 @@ bool UITextTest::init() { Size widgetSize = _widget->getContentSize(); - Text* alert = Text::create("Text","fonts/Marker Felt.ttf", 30); + Text* alert = Text::create("Text", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); // Create the text Text* text = Text::create("Text", "AmericanTypewriter", 30); - text->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - + text->getContentSize().height / 4.0f)); + text->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + text->getContentSize().height / 4.0f)); _uiLayer->addChild(text); return true; @@ -74,37 +72,34 @@ bool UITextTest_LineWrap::init() { Size widgetSize = _widget->getContentSize(); - Text* alert = Text::create("Text line wrap","fonts/Marker Felt.ttf",30); + Text* alert = Text::create("Text line wrap", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); // Create the line wrap - Text* text = Text::create("TextArea Widget can line wrap", - "AmericanTypewriter",32); + Text* text = Text::create("TextArea Widget can line wrap", "AmericanTypewriter", 32); text->ignoreContentAdaptWithSize(false); text->setContentSize(Size(280.0f, 150.0f)); text->setTextHorizontalAlignment(TextHAlignment::CENTER); text->setTouchScaleChangeEnabled(true); text->setTouchEnabled(true); - text->addTouchEventListener([=](Ref* sender, Widget::TouchEventType type) - { + text->addTouchEventListener([=](Ref* sender, Widget::TouchEventType type) { if (type == Widget::TouchEventType::ENDED) { if ((int)text->getContentSize().width == 280) { - text->setContentSize(Size(380.0f,100.0f)); - }else + text->setContentSize(Size(380.0f, 100.0f)); + } + else { text->setContentSize(Size(280.0f, 150.0f)); } } }); - text->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - text->getContentSize().height / 8.0f)); + text->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - text->getContentSize().height / 8.0f)); _uiLayer->addChild(text); return true; @@ -114,7 +109,6 @@ bool UITextTest_LineWrap::init() // UILabelTest_Effect - bool UILabelTest_Effect::init() { if (UIScene::init()) @@ -126,65 +120,53 @@ bool UILabelTest_Effect::init() alert->setFontName("fonts/Marker Felt.ttf"); alert->setFontSize(30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - alert->getContentSize().height * 3.05f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.05f)); _uiLayer->addChild(alert); - // create the shadow only label Text* shadow_label = Text::create(); shadow_label->enableShadow(); shadow_label->setString("Shadow"); shadow_label->setFontName("fonts/Marker Felt.ttf"); - shadow_label->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - + shadow_label->getContentSize().height + 20)); + shadow_label->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + shadow_label->getContentSize().height + 20)); _uiLayer->addChild(shadow_label); - // create the stroke only label Text* glow_label = Text::create(); glow_label->setFontName("fonts/Marker Felt.ttf"); glow_label->setString("Glow"); glow_label->enableGlow(Color4B::RED); - - glow_label->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - 20)); + glow_label->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - 20)); _uiLayer->addChild(glow_label); - // create the label stroke and shadow Text* outline_label = Text::create(); outline_label->setString("Outline"); - CCLOG("content size without outline: %f %f", - outline_label->getContentSize().width, + CCLOG("content size without outline: %f %f", outline_label->getContentSize().width, outline_label->getContentSize().height); outline_label->enableOutline(Color4B::GREEN, 4); - outline_label->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - shadow_label->getContentSize().height - 50)); + outline_label->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - shadow_label->getContentSize().height - 50)); _uiLayer->addChild(outline_label); - CCLOG("content size after applying outline: %f %f", - outline_label->getContentSize().width, + CCLOG("content size after applying outline: %f %f", outline_label->getContentSize().width, outline_label->getContentSize().height); - //create buttons to disable effect and add - auto disableOutlineBtn= Button::create(); + // create buttons to disable effect and add + auto disableOutlineBtn = Button::create(); disableOutlineBtn->setTitleText("Disable outline"); disableOutlineBtn->setTitleFontName("fonts/Marker Felt.ttf"); - disableOutlineBtn->setPosition(Vec2(widgetSize.width * 0.3f, - widgetSize.height * 0.7f)); + disableOutlineBtn->setPosition(Vec2(widgetSize.width * 0.3f, widgetSize.height * 0.7f)); disableOutlineBtn->setPressedActionEnabled(true); - disableOutlineBtn->addClickEventListener([=](Ref*){ + disableOutlineBtn->addClickEventListener([=](Ref*) { outline_label->disableEffect(LabelEffect::OUTLINE); - CCLOG("content size after disable outline: %f %f", - outline_label->getContentSize().width, + CCLOG("content size after disable outline: %f %f", outline_label->getContentSize().width, outline_label->getContentSize().height); }); this->addChild(disableOutlineBtn); @@ -192,30 +174,22 @@ bool UILabelTest_Effect::init() auto buttonWidth = disableOutlineBtn->getContentSize().width; auto disableGlowBtn = (Button*)disableOutlineBtn->clone(); - disableGlowBtn->setPosition(disableOutlineBtn->getPosition() - + Vec2(buttonWidth + 40,0.0f)); + disableGlowBtn->setPosition(disableOutlineBtn->getPosition() + Vec2(buttonWidth + 40, 0.0f)); disableGlowBtn->setTitleText("Disable Glow"); - disableGlowBtn->addClickEventListener([=](Ref*){ - glow_label->disableEffect(LabelEffect::GLOW); - }); + disableGlowBtn->addClickEventListener([=](Ref*) { glow_label->disableEffect(LabelEffect::GLOW); }); this->addChild(disableGlowBtn); auto disableShadowBtn = (Button*)disableGlowBtn->clone(); - disableShadowBtn->setPosition(disableGlowBtn->getPosition() - + Vec2(buttonWidth + 40,0.0f)); + disableShadowBtn->setPosition(disableGlowBtn->getPosition() + Vec2(buttonWidth + 40, 0.0f)); disableShadowBtn->setTitleText("Disable Shadow"); - disableShadowBtn->addClickEventListener([=](Ref*){ - shadow_label->disableEffect(LabelEffect::SHADOW); - }); + disableShadowBtn->addClickEventListener([=](Ref*) { shadow_label->disableEffect(LabelEffect::SHADOW); }); this->addChild(disableShadowBtn); - return true; } return false; } - // UITextTest_TTF bool UITextTest_TTF::init() @@ -224,19 +198,16 @@ bool UITextTest_TTF::init() { Size widgetSize = _widget->getContentSize(); - Text* alert = Text::create("Text set TTF font", - "fonts/Marker Felt.ttf",30); + Text* alert = Text::create("Text set TTF font", "fonts/Marker Felt.ttf", 30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - - alert->getContentSize().height * 1.75f)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f)); _uiLayer->addChild(alert); // Create the text, and set font with .ttf - Text* text = Text::create("Text","fonts/A Damn Mess.ttf",30); - text->setPosition(Vec2(widgetSize.width / 2.0f, - widgetSize.height / 2.0f - + text->getContentSize().height / 4.0f)); + Text* text = Text::create("Text", "fonts/A Damn Mess.ttf", 30); + text->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + text->getContentSize().height / 4.0f)); _uiLayer->addChild(text); return true; @@ -252,37 +223,31 @@ bool UITextTest_IgnoreContentSize::init() { Size widgetSize = _widget->getContentSize(); - Text* leftText = Text::create("ignore content", - "fonts/Marker Felt.ttf",10); - leftText->setPosition(Vec2(widgetSize.width / 2.0f - 50, - widgetSize.height / 2.0f)); + Text* leftText = Text::create("ignore content", "fonts/Marker Felt.ttf", 10); + leftText->setPosition(Vec2(widgetSize.width / 2.0f - 50, widgetSize.height / 2.0f)); leftText->ignoreContentAdaptWithSize(false); - leftText->setTextAreaSize(Size(60.0f,60.0f)); + leftText->setTextAreaSize(Size(60.0f, 60.0f)); leftText->setString("Text line with break\nText line with break\nText line with break\nText line with break\n"); leftText->setTouchScaleChangeEnabled(true); leftText->setTouchEnabled(true); _uiLayer->addChild(leftText); - - Text* rightText = Text::create("ignore content", - "fonts/Marker Felt.ttf",10); - rightText->setPosition(Vec2(widgetSize.width / 2.0f + 50, - widgetSize.height / 2.0f)); - rightText->setString("Text line with break\nText line with break\nText line with break\nText line with break\n"); - //note:setTextAreaSize must be used with ignoreContentAdaptWithSize(false) - rightText->setTextAreaSize(Size(100.0f,30.0f)); + Text* rightText = Text::create("ignore content", "fonts/Marker Felt.ttf", 10); + rightText->setPosition(Vec2(widgetSize.width / 2.0f + 50, widgetSize.height / 2.0f)); + rightText->setString( + "Text line with break\nText line with break\nText line with break\nText line with break\n"); + // note:setTextAreaSize must be used with ignoreContentAdaptWithSize(false) + rightText->setTextAreaSize(Size(100.0f, 30.0f)); rightText->ignoreContentAdaptWithSize(false); _uiLayer->addChild(rightText); - auto halighButton = Button::create(); halighButton->setTitleText("Alignment Right"); - halighButton->addClickEventListener([=](Ref*){ + halighButton->addClickEventListener([=](Ref*) { leftText->setTextHorizontalAlignment(TextHAlignment::RIGHT); rightText->setTextHorizontalAlignment(TextHAlignment::RIGHT); }); - halighButton->setPosition(Vec2(widgetSize.width/2 - 50, - widgetSize.height/2 - 50)); + halighButton->setPosition(Vec2(widgetSize.width / 2 - 50, widgetSize.height / 2 - 50)); _uiLayer->addChild(halighButton); return true; @@ -298,20 +263,17 @@ bool UITextTest_Clone::init() { Size widgetSize = _widget->getContentSize(); - Text* singleText = Text::create("ignore content", - "fonts/Marker Felt.ttf", 30); - singleText->setPosition(Vec2(widgetSize.width / 2.0f - 80, - widgetSize.height / 2.0f)); + Text* singleText = Text::create("ignore content", "fonts/Marker Felt.ttf", 30); + singleText->setPosition(Vec2(widgetSize.width / 2.0f - 80, widgetSize.height / 2.0f)); singleText->setString("CHUKONG"); singleText->setTouchScaleChangeEnabled(true); singleText->setTouchEnabled(true); - singleText->enableOutline(Color4B(255,0,0,100), 10); - singleText->enableShadow(Color4B::YELLOW, Size(2,-2), 0); + singleText->enableOutline(Color4B(255, 0, 0, 100), 10); + singleText->enableShadow(Color4B::YELLOW, Size(2, -2), 0); _uiLayer->addChild(singleText); auto cloneText = singleText->clone(); - cloneText->setPosition(Vec2(widgetSize.width / 2.0f + 80, - widgetSize.height / 2.0f)); + cloneText->setPosition(Vec2(widgetSize.width / 2.0f + 80, widgetSize.height / 2.0f)); _uiLayer->addChild(cloneText); return true; @@ -329,12 +291,10 @@ bool Issue16073Test::init() Text* singleText = Text::create("mwhahaha\360", "Verdana", 40); - singleText->setPosition(Vec2(widgetSize.width / 2.0f - 80, - widgetSize.height / 2.0f)); + singleText->setPosition(Vec2(widgetSize.width / 2.0f - 80, widgetSize.height / 2.0f)); _uiLayer->addChild(singleText); return true; } return false; } - diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.h index cd3569e8ff26..88faa4cd6f38 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -46,7 +46,6 @@ class UITextTest_LineWrap : public UIScene virtual bool init() override; }; - class UILabelTest_Effect : public UIScene { public: @@ -54,7 +53,6 @@ class UILabelTest_Effect : public UIScene virtual bool init() override; }; - class UITextTest_TTF : public UIScene { diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.cpp index 9ff803730708..339bc8b59abc 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,11 +35,11 @@ VideoPlayerTests::VideoPlayerTests() bool VideoPlayerTest::init() { - if ( !UIScene::init() ) + if (!UIScene::init()) { return false; } - + _visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect(); // Should create video first to make sure video is destryed first. If not, then may crash. @@ -48,55 +48,61 @@ bool VideoPlayerTest::init() MenuItemFont::setFontSize(16); - auto fullSwitch = MenuItemFont::create("FullScreenSwitch", CC_CALLBACK_1(VideoPlayerTest::menuFullScreenCallback, this)); + auto fullSwitch = + MenuItemFont::create("FullScreenSwitch", CC_CALLBACK_1(VideoPlayerTest::menuFullScreenCallback, this)); fullSwitch->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - fullSwitch->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 50)); + fullSwitch->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 50)); auto pauseItem = MenuItemFont::create("Pause", CC_CALLBACK_1(VideoPlayerTest::menuPauseCallback, this)); pauseItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - pauseItem->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 100)); + pauseItem->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 100)); auto resumeItem = MenuItemFont::create("Resume", CC_CALLBACK_1(VideoPlayerTest::menuResumeCallback, this)); resumeItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - resumeItem->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 150)); + resumeItem->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 150)); auto stopItem = MenuItemFont::create("Stop", CC_CALLBACK_1(VideoPlayerTest::menuStopCallback, this)); stopItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - stopItem->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 200)); + stopItem->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 200)); auto hintItem = MenuItemFont::create("Hint", CC_CALLBACK_1(VideoPlayerTest::menuHintCallback, this)); hintItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - hintItem->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 250)); + hintItem->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 250)); //------------------------------------------------------------------------------------------------------------------- - auto resourceVideo = MenuItemFont::create("Play resource video", CC_CALLBACK_1(VideoPlayerTest::menuResourceVideoCallback, this)); + auto resourceVideo = + MenuItemFont::create("Play resource video", CC_CALLBACK_1(VideoPlayerTest::menuResourceVideoCallback, this)); resourceVideo->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - resourceVideo->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 50)); + resourceVideo->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 50)); - auto onlineVideo = MenuItemFont::create("Play online video", CC_CALLBACK_1(VideoPlayerTest::menuOnlineVideoCallback, this)); + auto onlineVideo = + MenuItemFont::create("Play online video", CC_CALLBACK_1(VideoPlayerTest::menuOnlineVideoCallback, this)); onlineVideo->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - onlineVideo->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 100)); + onlineVideo->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 100)); auto ratioSwitch = MenuItemFont::create("KeepRatioSwitch", CC_CALLBACK_1(VideoPlayerTest::menuRatioCallback, this)); ratioSwitch->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - ratioSwitch->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 150)); - + ratioSwitch->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 150)); + auto loopToggle = MenuItemFont::create("LoopToogle", CC_CALLBACK_1(VideoPlayerTest::menuLoopCallback, this)); loopToggle->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - loopToggle->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 170)); + loopToggle->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 170)); - auto menu = Menu::create(resourceVideo,onlineVideo,ratioSwitch,loopToggle,fullSwitch,pauseItem,resumeItem,stopItem,hintItem,nullptr); + auto menu = Menu::create(resourceVideo, onlineVideo, ratioSwitch, loopToggle, fullSwitch, pauseItem, resumeItem, + stopItem, hintItem, nullptr); menu->setPosition(Vec2::ZERO); _uiLayer->addChild(menu); - _videoStateLabel = Label::createWithSystemFont("IDLE","Arial",16); + _videoStateLabel = Label::createWithSystemFont("IDLE", "Arial", 16); _videoStateLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - _videoStateLabel->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 200)); + _videoStateLabel->setPosition( + Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 200)); _uiLayer->addChild(_videoStateLabel); - - _loopStatusLabel = Label::createWithSystemFont("(1)","Arial",10); + + _loopStatusLabel = Label::createWithSystemFont("(1)", "Arial", 10); _loopStatusLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT); - _loopStatusLabel->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10,_visibleRect.origin.y + 185)); + _loopStatusLabel->setPosition( + Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 185)); _uiLayer->addChild(_loopStatusLabel); return true; @@ -111,7 +117,7 @@ void VideoPlayerTest::menuFullScreenCallback(Ref* sender) { if (_videoPlayer) { - _videoPlayer->setFullScreenEnabled(! _videoPlayer->isFullScreenEnabled()); + _videoPlayer->setFullScreenEnabled(!_videoPlayer->isFullScreenEnabled()); } } @@ -119,7 +125,7 @@ void VideoPlayerTest::menuRatioCallback(Ref* sender) { if (_videoPlayer) { - _videoPlayer->setKeepAspectRatioEnabled(! _videoPlayer->isKeepAspectRatioEnabled()); + _videoPlayer->setKeepAspectRatioEnabled(!_videoPlayer->isKeepAspectRatioEnabled()); } } @@ -127,12 +133,11 @@ void VideoPlayerTest::menuLoopCallback(Ref* sender) { if (_videoPlayer) { - _videoPlayer->setLooping(! _videoPlayer->isLooping()); + _videoPlayer->setLooping(!_videoPlayer->isLooping()); _loopStatusLabel->setString(_videoPlayer->isLooping() ? "(OO)" : "(1)"); } } - void VideoPlayerTest::menuResourceVideoCallback(Ref* sender) { if (_videoPlayer) @@ -179,28 +184,30 @@ void VideoPlayerTest::menuHintCallback(Ref* sender) { if (_videoPlayer) { - _videoPlayer->setVisible(! _videoPlayer->isVisible()); + _videoPlayer->setVisible(!_videoPlayer->isVisible()); } } void VideoPlayerTest::createVideo() { - auto centerPos = Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2,_visibleRect.origin.y + _visibleRect.size.height /2); + auto centerPos = + Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2, _visibleRect.origin.y + _visibleRect.size.height / 2); auto widgetSize = _widget->getContentSize(); _videoPlayer = VideoPlayer::create(); _videoPlayer->setPosition(centerPos); _videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE); - _videoPlayer->setContentSize(Size(widgetSize.width * 0.4f,widgetSize.height * 0.4f)); + _videoPlayer->setContentSize(Size(widgetSize.width * 0.4f, widgetSize.height * 0.4f)); _uiLayer->addChild(_videoPlayer); - + _videoPlayer->addEventListener(CC_CALLBACK_2(VideoPlayerTest::videoEventCallback, this)); } void VideoPlayerTest::createSlider() { - auto centerPos = Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2,_visibleRect.origin.y + _visibleRect.size.height /2); + auto centerPos = + Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2, _visibleRect.origin.y + _visibleRect.size.height / 2); auto hSlider = ui::Slider::create(); hSlider->setTouchEnabled(true); @@ -210,7 +217,7 @@ void VideoPlayerTest::createSlider() hSlider->setPosition(Vec2(centerPos.x, _visibleRect.origin.y + _visibleRect.size.height * 0.15f)); hSlider->setPercent(50); hSlider->addEventListener(CC_CALLBACK_2(VideoPlayerTest::sliderCallback, this)); - _uiLayer->addChild(hSlider,0,1); + _uiLayer->addChild(hSlider, 0, 1); auto vSlider = ui::Slider::create(); vSlider->setTouchEnabled(true); @@ -221,54 +228,54 @@ void VideoPlayerTest::createSlider() vSlider->setRotation(90); vSlider->setPercent(50); vSlider->addEventListener(CC_CALLBACK_2(VideoPlayerTest::sliderCallback, this)); - _uiLayer->addChild(vSlider,0,2); + _uiLayer->addChild(vSlider, 0, 2); } -void VideoPlayerTest::sliderCallback(Ref *sender, ui::Slider::EventType eventType) +void VideoPlayerTest::sliderCallback(Ref* sender, ui::Slider::EventType eventType) { if (eventType == Slider::EventType::ON_PERCENTAGE_CHANGED && _videoPlayer) { - Slider* hSlider = (Slider*)this->getChildByTag(1); - Slider* vSlider = (Slider*)this->getChildByTag(2); + Slider* hSlider = (Slider*)this->getChildByTag(1); + Slider* vSlider = (Slider*)this->getChildByTag(2); auto newPosX = _visibleRect.origin.x + _visibleRect.size.width / 2 + hSlider->getPercent() - 50; auto newPosY = _visibleRect.origin.y + _visibleRect.size.height / 2 + 50 - vSlider->getPercent(); - _videoPlayer->setPosition(Vec2(newPosX,newPosY)); + _videoPlayer->setPosition(Vec2(newPosX, newPosY)); } } void VideoPlayerTest::videoEventCallback(Ref* sender, VideoPlayer::EventType eventType) { - switch (eventType) { - case VideoPlayer::EventType::PLAYING: - _videoStateLabel->setString("PLAYING"); - break; - case VideoPlayer::EventType::PAUSED: - _videoStateLabel->setString("PAUSED"); - break; - case VideoPlayer::EventType::STOPPED: - _videoStateLabel->setString("STOPPED"); - break; - case VideoPlayer::EventType::COMPLETED: - _videoStateLabel->setString("COMPLETED"); - break; - default: - break; + switch (eventType) + { + case VideoPlayer::EventType::PLAYING: + _videoStateLabel->setString("PLAYING"); + break; + case VideoPlayer::EventType::PAUSED: + _videoStateLabel->setString("PAUSED"); + break; + case VideoPlayer::EventType::STOPPED: + _videoStateLabel->setString("STOPPED"); + break; + case VideoPlayer::EventType::COMPLETED: + _videoStateLabel->setString("COMPLETED"); + break; + default: + break; } } - // Simple Video Test SimpleVideoPlayerTest::SimpleVideoPlayerTest() { - _videoPlayer = nullptr; - _style = cocos2d::ui::VideoPlayer::StyleType::NONE; + _videoPlayer = nullptr; + _style = cocos2d::ui::VideoPlayer::StyleType::NONE; _userInputEnabled = true; - + _switchUserInputEnabled = nullptr; - _switchStyle = nullptr; + _switchStyle = nullptr; } void SimpleVideoPlayerTest::updateButtonsTexts() @@ -278,53 +285,55 @@ void SimpleVideoPlayerTest::updateButtonsTexts() std::string str = _userInputEnabled ? "< User Input Enabled >" : "< User Input Disabled >"; _switchUserInputEnabled->setString(str); } - + if (_switchStyle) { std::string str = " - "; - switch(_style) + switch (_style) { - case cocos2d::ui::VideoPlayer::StyleType::NONE: - _switchUserInputEnabled->setVisible(false); - str = "< NO Sytle >"; - break; - - case cocos2d::ui::VideoPlayer::StyleType::DEFAULT: - str = "< Default Style >"; - _switchUserInputEnabled->setVisible(true); - break; - - default: - break; + case cocos2d::ui::VideoPlayer::StyleType::NONE: + _switchUserInputEnabled->setVisible(false); + str = "< NO Sytle >"; + break; + + case cocos2d::ui::VideoPlayer::StyleType::DEFAULT: + str = "< Default Style >"; + _switchUserInputEnabled->setVisible(true); + break; + + default: + break; } - + _switchStyle->setString(str); } } bool SimpleVideoPlayerTest::init() { - if ( !UIScene::init() ) + if (!UIScene::init()) { return false; } - + _visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect(); - + MenuItemFont::setFontSize(16); - - _switchStyle = MenuItemFont::create("Switch Style", CC_CALLBACK_1(SimpleVideoPlayerTest::switchStyleCallback, this)); + + _switchStyle = + MenuItemFont::create("Switch Style", CC_CALLBACK_1(SimpleVideoPlayerTest::switchStyleCallback, this)); _switchStyle->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - _switchStyle->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 50)); - - _switchUserInputEnabled = MenuItemFont::create("Enable User Input", CC_CALLBACK_1(SimpleVideoPlayerTest::switchUserInputCallback, this)); + _switchStyle->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 50)); + + _switchUserInputEnabled = + MenuItemFont::create("Enable User Input", CC_CALLBACK_1(SimpleVideoPlayerTest::switchUserInputCallback, this)); _switchUserInputEnabled->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); - _switchUserInputEnabled->setPosition(Vec2(_visibleRect.origin.x + 10,_visibleRect.origin.y + 100)); - - auto menu = Menu::create(_switchUserInputEnabled,_switchStyle,nullptr); + _switchUserInputEnabled->setPosition(Vec2(_visibleRect.origin.x + 10, _visibleRect.origin.y + 100)); + + auto menu = Menu::create(_switchUserInputEnabled, _switchStyle, nullptr); menu->setPosition(Vec2::ZERO); _uiLayer->addChild(menu); - + createVideo(); updateButtonsTexts(); @@ -334,34 +343,34 @@ bool SimpleVideoPlayerTest::init() void SimpleVideoPlayerTest::menuCloseCallback(Ref* sender) { Director::getInstance()->end(); - + #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0); #endif } - void SimpleVideoPlayerTest::switchStyleCallback(Ref* sender) { - switch (_style) { - case cocos2d::ui::VideoPlayer::StyleType::NONE: - _style = cocos2d::ui::VideoPlayer::StyleType::DEFAULT; - break; - - case cocos2d::ui::VideoPlayer::StyleType::DEFAULT: - _style = cocos2d::ui::VideoPlayer::StyleType::NONE; - break; - - default: - break; + switch (_style) + { + case cocos2d::ui::VideoPlayer::StyleType::NONE: + _style = cocos2d::ui::VideoPlayer::StyleType::DEFAULT; + break; + + case cocos2d::ui::VideoPlayer::StyleType::DEFAULT: + _style = cocos2d::ui::VideoPlayer::StyleType::NONE; + break; + + default: + break; } - + if (_videoPlayer) { _videoPlayer->setStyle(_style); } - - //createVideo(); + + // createVideo(); updateButtonsTexts(); } @@ -372,34 +381,34 @@ void SimpleVideoPlayerTest::switchUserInputCallback(Ref* sender) { _videoPlayer->setUserInputEnabled(_userInputEnabled); } - - //createVideo(); + + // createVideo(); updateButtonsTexts(); } - void SimpleVideoPlayerTest::createVideo() { if (_videoPlayer) { _uiLayer->removeChild(_videoPlayer); } - auto centerPos = Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2,_visibleRect.origin.y + _visibleRect.size.height /2); - + auto centerPos = + Vec2(_visibleRect.origin.x + _visibleRect.size.width / 2, _visibleRect.origin.y + _visibleRect.size.height / 2); + auto widgetSize = _widget->getContentSize(); - + _videoPlayer = VideoPlayer::create(); _videoPlayer->setPosition(centerPos); _videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE); - _videoPlayer->setContentSize(Size(widgetSize.width * 0.4f,widgetSize.height * 0.4f)); + _videoPlayer->setContentSize(Size(widgetSize.width * 0.4f, widgetSize.height * 0.4f)); _videoPlayer->setLooping(true); _videoPlayer->setStyle(_style); _videoPlayer->setUserInputEnabled(_userInputEnabled); - + _uiLayer->addChild(_videoPlayer); - - // _videoPlayer->addEventListener(CC_CALLBACK_2(SimpleVideoPlayerTest::videoEventCallback, this)); - + + // _videoPlayer->addEventListener(CC_CALLBACK_2(SimpleVideoPlayerTest::videoEventCallback, this)); + _videoPlayer->setFileName("cocosvideo.mp4"); _videoPlayer->play(); } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.h index 6cdc84bc4f02..e453728e331b 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIVideoPlayerTest/UIVideoPlayerTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -48,7 +48,7 @@ class VideoPlayerTest : public UIScene void menuStopCallback(cocos2d::Ref* sender); void menuHintCallback(cocos2d::Ref* sender); void menuLoopCallback(cocos2d::Ref* sender); - + void sliderCallback(cocos2d::Ref* sender, cocos2d::ui::Slider::EventType eventType); void videoEventCallback(cocos2d::Ref* sender, cocos2d::ui::VideoPlayer::EventType eventType); @@ -63,35 +63,32 @@ class VideoPlayerTest : public UIScene cocos2d::Rect _visibleRect; }; - class SimpleVideoPlayerTest : public UIScene { public: CREATE_FUNC(SimpleVideoPlayerTest); - + SimpleVideoPlayerTest(); - + virtual bool init() override; - + void menuCloseCallback(cocos2d::Ref* sender); void switchStyleCallback(cocos2d::Ref* sender); void switchUserInputCallback(cocos2d::Ref* sender); - + private: void createVideo(); - + cocos2d::Rect _visibleRect; cocos2d::ui::VideoPlayer* _videoPlayer; - - cocos2d::MenuItemFont* _switchUserInputEnabled; - cocos2d::MenuItemFont* _switchStyle; - - + + cocos2d::MenuItemFont* _switchUserInputEnabled; + cocos2d::MenuItemFont* _switchStyle; + bool _userInputEnabled; cocos2d::ui::VideoPlayer::StyleType _style; - + void updateButtonsTexts(); }; - -#endif // __tests__VideoPlayerTest__ +#endif // __tests__VideoPlayerTest__ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp index 97d97241abcd..8a078afd73fa 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,175 +35,158 @@ WebViewTests::WebViewTests() bool WebViewTest::init() { - if (UIScene::init()) { + if (UIScene::init()) + { Size winSize = Director::getInstance()->getVisibleSize(); - _webView = cocos2d::ui::WebView::create(); - _webView->setPosition(winSize/2); + _webView->setPosition(winSize / 2); _webView->setContentSize(winSize * 0.5); _webView->loadURL("https://www.baidu.com"); _webView->setScalesPageToFit(true); - + _webView->setOnShouldStartLoading(CC_CALLBACK_2(WebViewTest::onWebViewShouldStartLoading, this)); _webView->setOnDidFinishLoading(CC_CALLBACK_2(WebViewTest::onWebViewDidFinishLoading, this)); _webView->setOnDidFailLoading(CC_CALLBACK_2(WebViewTest::onWebViewDidFailLoading, this)); - + this->addChild(_webView); - + auto spriteHello = Sprite::create("Hello.png"); - spriteHello->setPosition(winSize/2); + spriteHello->setPosition(winSize / 2); this->addChild(spriteHello); - - TextField *urlTextField = TextField::create("Input a URL here", "Arial", 20); + + TextField* urlTextField = TextField::create("Input a URL here", "Arial", 20); urlTextField->setPlaceHolderColor(Color3B::RED); - urlTextField->setPosition(Vec2(winSize/2) + Vec2(-80, _webView->getContentSize().height/2 + - urlTextField->getContentSize().height/2 + 10)); + urlTextField->setPosition(Vec2(winSize / 2) + Vec2(-80, _webView->getContentSize().height / 2 + + urlTextField->getContentSize().height / 2 + 10)); this->addChild(urlTextField); - - Text *httpLabel = Text::create("https:// ", "Arial", 20); + + Text* httpLabel = Text::create("https:// ", "Arial", 20); httpLabel->setTextColor(Color4B::GREEN); - httpLabel->setAnchorPoint(Vec2(1.0,0.5)); - httpLabel->setPosition(urlTextField->getPosition() - Vec2(urlTextField->getContentSize().width/2,0)); + httpLabel->setAnchorPoint(Vec2(1.0, 0.5)); + httpLabel->setPosition(urlTextField->getPosition() - Vec2(urlTextField->getContentSize().width / 2, 0)); this->addChild(httpLabel); - - - Button *resetBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* resetBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); resetBtn->setTitleText("Visit URL"); - resetBtn->setPosition(Vec2(winSize/2) + Vec2(50, _webView->getContentSize().height/2 + - resetBtn->getContentSize().height/2 + 10)); - resetBtn->addClickEventListener([=](Ref*){ + resetBtn->setPosition(Vec2(winSize / 2) + Vec2(50, _webView->getContentSize().height / 2 + + resetBtn->getContentSize().height / 2 + 10)); + resetBtn->addClickEventListener([=](Ref*) { if (urlTextField->getString().size() != 0) { _webView->loadURL(std::string("https://") + urlTextField->getString()); } }); this->addChild(resetBtn); - - - Button *reloadBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* reloadBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); reloadBtn->setTitleText("Reload"); - reloadBtn->setPosition(Vec2(winSize/2) + Vec2( _webView->getContentSize().width/2 + - reloadBtn->getContentSize().width/2 + 10,50 )); - reloadBtn->addClickEventListener([=](Ref*){ - _webView->reload(); - }); + reloadBtn->setPosition( + Vec2(winSize / 2) + + Vec2(_webView->getContentSize().width / 2 + reloadBtn->getContentSize().width / 2 + 10, 50)); + reloadBtn->addClickEventListener([=](Ref*) { _webView->reload(); }); this->addChild(reloadBtn); - - Button *forwardBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* forwardBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); forwardBtn->setTitleText("Forward"); - forwardBtn->setPosition(Vec2(winSize/2) + Vec2( _webView->getContentSize().width/2 + - forwardBtn->getContentSize().width/2 + 10,0 )); - forwardBtn->addClickEventListener([=](Ref*){ - _webView->goForward(); - }); + forwardBtn->setPosition( + Vec2(winSize / 2) + + Vec2(_webView->getContentSize().width / 2 + forwardBtn->getContentSize().width / 2 + 10, 0)); + forwardBtn->addClickEventListener([=](Ref*) { _webView->goForward(); }); this->addChild(forwardBtn); - - - - Button *backBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* backBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); backBtn->setTitleText("Back"); - backBtn->setPosition(Vec2(winSize/2) + Vec2( _webView->getContentSize().width/2 + - backBtn->getContentSize().width/2 + 10,-50 )); - backBtn->addClickEventListener([=](Ref*){ - _webView->goBack(); - }); + backBtn->setPosition( + Vec2(winSize / 2) + + Vec2(_webView->getContentSize().width / 2 + backBtn->getContentSize().width / 2 + 10, -50)); + backBtn->addClickEventListener([=](Ref*) { _webView->goBack(); }); this->addChild(backBtn); - - - Button *loadFileBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* loadFileBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); loadFileBtn->setTitleText("Load FILE"); - loadFileBtn->setPosition(Vec2(winSize/2) - Vec2( _webView->getContentSize().width/2 + - loadFileBtn->getContentSize().width/2 + 10,50 )); - loadFileBtn->addClickEventListener([=](Ref*){ - _webView->loadFile("Test.html"); - }); + loadFileBtn->setPosition( + Vec2(winSize / 2) - + Vec2(_webView->getContentSize().width / 2 + loadFileBtn->getContentSize().width / 2 + 10, 50)); + loadFileBtn->addClickEventListener([=](Ref*) { _webView->loadFile("Test.html"); }); this->addChild(loadFileBtn); - - Button *loadHTMLBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* loadHTMLBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); loadHTMLBtn->setTitleText("Load Data"); - loadHTMLBtn->setPosition(Vec2(winSize/2) - Vec2( _webView->getContentSize().width/2 + - loadHTMLBtn->getContentSize().width/2 + 10,0 )); - loadHTMLBtn->addClickEventListener([=](Ref*){ - _webView->loadHTMLString("Hello World ","Images/"); + loadHTMLBtn->setPosition( + Vec2(winSize / 2) - + Vec2(_webView->getContentSize().width / 2 + loadHTMLBtn->getContentSize().width / 2 + 10, 0)); + loadHTMLBtn->addClickEventListener([=](Ref*) { + _webView->loadHTMLString("Hello World ", + "Images/"); }); this->addChild(loadHTMLBtn); - - - - - Button *evalJsBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* evalJsBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); evalJsBtn->setTitleText("Evaluate JS"); - evalJsBtn->setPosition(Vec2(winSize/2) - Vec2( _webView->getContentSize().width/2 + - evalJsBtn->getContentSize().width/2 + 10,-50 )); - evalJsBtn->addClickEventListener([=](Ref*){ - _webView->evaluateJS("alert(\"hello\")"); - }); + evalJsBtn->setPosition( + Vec2(winSize / 2) - + Vec2(_webView->getContentSize().width / 2 + evalJsBtn->getContentSize().width / 2 + 10, -50)); + evalJsBtn->addClickEventListener([=](Ref*) { _webView->evaluateJS("alert(\"hello\")"); }); evalJsBtn->setName("evalJs"); this->addChild(evalJsBtn); - - Button *opacityBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* opacityBtn = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); opacityBtn->setTitleText("Opacity 1.f"); - opacityBtn->setPosition(Vec2(winSize/2) - Vec2( _webView->getContentSize().width/2 + - opacityBtn->getContentSize().width/2 + 10, 100 )); - opacityBtn->addClickEventListener([=](Ref*){ + opacityBtn->setPosition( + Vec2(winSize / 2) - + Vec2(_webView->getContentSize().width / 2 + opacityBtn->getContentSize().width / 2 + 10, 100)); + opacityBtn->addClickEventListener([=](Ref*) { auto currentOpacity = _webView->getOpacityWebView(); - if(currentOpacity ==1.f){ + if (currentOpacity == 1.f) + { _webView->setOpacityWebView(.5f); opacityBtn->setTitleText("Opacity .5f"); - }else if(currentOpacity == .5f){ + } + else if (currentOpacity == .5f) + { _webView->setOpacityWebView(0); opacityBtn->setTitleText("Opacity 0.f"); - }else{ + } + else + { _webView->setOpacityWebView(1.f); opacityBtn->setTitleText("Opacity 1.f"); } - }); opacityBtn->setName("Opacity"); this->addChild(opacityBtn); - - - Button *transparentBgBtn = Button::create("cocosui/animationbuttonnormal.png", - "cocosui/animationbuttonpressed.png"); + + Button* transparentBgBtn = + Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); transparentBgBtn->setTitleText("Transparent BG"); - transparentBgBtn->setPosition(Vec2(winSize/2) + Vec2( _webView->getContentSize().width/2 + - transparentBgBtn->getContentSize().width/2 + 10,-100 )); - transparentBgBtn->addClickEventListener([=](Ref*){ - _webView->setBackgroundTransparent(); - }); + transparentBgBtn->setPosition( + Vec2(winSize / 2) + + Vec2(_webView->getContentSize().width / 2 + transparentBgBtn->getContentSize().width / 2 + 10, -100)); + transparentBgBtn->addClickEventListener([=](Ref*) { _webView->setBackgroundTransparent(); }); transparentBgBtn->setName("Transparent"); this->addChild(transparentBgBtn); - + return true; } return false; } -bool WebViewTest::onWebViewShouldStartLoading(ui::WebView *sender, const std::string &url) +bool WebViewTest::onWebViewShouldStartLoading(ui::WebView* sender, const std::string& url) { CCLOG("onWebViewShouldStartLoading, url is %s", url.c_str()); - //don't do any OpenGL operation here!! It's forbidden! + // don't do any OpenGL operation here!! It's forbidden! return true; } -void WebViewTest::onWebViewDidFinishLoading(ui::WebView *sender, const std::string &url) +void WebViewTest::onWebViewDidFinishLoading(ui::WebView* sender, const std::string& url) { auto node = (ui::Button*)this->getChildByName("evalJs"); node->setTitleText("start loading..."); CCLOG("onWebViewDidFinishLoading, url is %s", url.c_str()); } -void WebViewTest::onWebViewDidFailLoading(ui::WebView *sender, const std::string &url) +void WebViewTest::onWebViewDidFailLoading(ui::WebView* sender, const std::string& url) { CCLOG("onWebViewDidFailLoading, url is %s", url.c_str()); } - diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h index eb9eee1de8ce..99e8b51930aa 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,16 +35,14 @@ class WebViewTest : public UIScene { public: CREATE_FUNC(WebViewTest); - + virtual bool init() override; - bool onWebViewShouldStartLoading(cocos2d::ui::WebView *sender, const std::string &url); - void onWebViewDidFinishLoading(cocos2d::ui::WebView *sender, const std::string &url); - void onWebViewDidFailLoading(cocos2d::ui::WebView *sender, const std::string &url); - - + bool onWebViewShouldStartLoading(cocos2d::ui::WebView* sender, const std::string& url); + void onWebViewDidFinishLoading(cocos2d::ui::WebView* sender, const std::string& url); + void onWebViewDidFailLoading(cocos2d::ui::WebView* sender, const std::string& url); + private: - cocos2d::ui::WebView *_webView; - + cocos2d::ui::WebView* _webView; }; #endif /* defined(__cocos2d_tests__UIWebViewTest__) */ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.cpp index fe20dfa92081..bc645f2edf89 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,39 +34,35 @@ UIWidgetAddNodeTests::UIWidgetAddNodeTests() // UIWidgetAddNodeTest -UIWidgetAddNodeTest::UIWidgetAddNodeTest() -{ - -} +UIWidgetAddNodeTest::UIWidgetAddNodeTest() {} -UIWidgetAddNodeTest::~UIWidgetAddNodeTest() -{ -} +UIWidgetAddNodeTest::~UIWidgetAddNodeTest() {} bool UIWidgetAddNodeTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); - + // Add the alert Text* alert = Text::create(); alert->setString("Widget Add Node"); alert->setFontName("fonts/Marker Felt.ttf"); alert->setFontSize(30); alert->setColor(Color3B(159, 168, 176)); - alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75)); + alert->setPosition( + Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 1.75)); _uiLayer->addChild(alert); - + // Create the ui node container Widget* widget = Widget::create(); widget->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); _uiLayer->addChild(widget); - + Sprite* sprite = Sprite::create("cocosui/ccicon.png"); sprite->setPosition(Vec2(0.0f, sprite->getBoundingBox().size.height / 4)); widget->addChild(sprite); - + return true; } return false; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.h index 99efd875897d..8c88ca662d10 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/tests/cpp-tests/Classes/UITest/UITest.cpp b/tests/cpp-tests/Classes/UITest/UITest.cpp index 711f9d3180c9..8703414cf8aa 100644 --- a/tests/cpp-tests/Classes/UITest/UITest.cpp +++ b/tests/cpp-tests/Classes/UITest/UITest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,12 +25,9 @@ #include "UITest.h" #include "CocoStudioGUITest/CocosGUIScene.h" - UITests::UITests() { - addTest("GUI Dynamic Create Test", [](){ return new GUIDynamicCreateTests; }); + addTest("GUI Dynamic Create Test", []() { return new GUIDynamicCreateTests; }); } -UITests::~UITests() -{ -} +UITests::~UITests() {} diff --git a/tests/cpp-tests/Classes/UITest/UITest.h b/tests/cpp-tests/Classes/UITest/UITest.h index 5ea74e4058e5..1fcea1a82e8d 100644 --- a/tests/cpp-tests/Classes/UITest/UITest.h +++ b/tests/cpp-tests/Classes/UITest/UITest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,8 +34,6 @@ class UITests : public TestList ~UITests(); private: - }; - #endif /* defined(__cocos2d_tests__UITest__) */ diff --git a/tests/cpp-tests/Classes/UnitTest/RefPtrTest.h b/tests/cpp-tests/Classes/UnitTest/RefPtrTest.h index 8852a582d09c..6104c1253eee 100644 --- a/tests/cpp-tests/Classes/UnitTest/RefPtrTest.h +++ b/tests/cpp-tests/Classes/UnitTest/RefPtrTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,11 +30,10 @@ class RefPtrTest : public UnitTestDemo { public: - CREATE_FUNC(RefPtrTest); - + virtual void onEnter() override; - + virtual std::string subtitle() const override; }; diff --git a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp index 4e1f44012bdf..03c1b847738f 100644 --- a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp +++ b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. Copyright (c) 2021 Bytedance Inc. - + https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,33 +32,33 @@ USING_NS_CC; using namespace cocos2d::network; #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#if defined (__arm64__) -#define USE_NEON64 -#define INCLUDE_NEON64 -#elif defined (__ARM_NEON__) -#define USE_NEON32 -#define INCLUDE_NEON32 -#else -#endif +# if defined(__arm64__) +# define USE_NEON64 +# define INCLUDE_NEON64 +# elif defined(__ARM_NEON__) +# define USE_NEON32 +# define INCLUDE_NEON32 +# else +# endif #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#if defined (__arm64__) || defined (__aarch64__) -#define USE_NEON64 -#define INCLUDE_NEON64 -#elif defined (__ARM_NEON__) -#define INCLUDE_NEON32 -#else -#endif +# if defined(__arm64__) || defined(__aarch64__) +# define USE_NEON64 +# define INCLUDE_NEON64 +# elif defined(__ARM_NEON__) +# define INCLUDE_NEON32 +# else +# endif #else #endif -#if defined (__SSE__) -#define USE_SSE -#define INCLUDE_SSE +#if defined(__SSE__) +# define USE_SSE +# define INCLUDE_SSE #endif -#if (defined INCLUDE_NEON64) || (defined INCLUDE_NEON32) // FIXME: || (defined INCLUDE_SSE) -#define UNIT_TEST_FOR_OPTIMIZED_MATH_UTIL +#if (defined INCLUDE_NEON64) || (defined INCLUDE_NEON32) // FIXME: || (defined INCLUDE_SSE) +# define UNIT_TEST_FOR_OPTIMIZED_MATH_UTIL #endif #define EXPECT_EQ(a, b) assert((a) == (b)) @@ -144,7 +144,7 @@ void TemplateVectorTest::onEnter() // Test move constructor - auto createVector = [](){ + auto createVector = []() { Vector ret; for (int i = 0; i < 20; i++) @@ -235,46 +235,48 @@ void TemplateVectorTest::onEnter() vec6.eraseObject(vec6.at(2)); CCASSERT(vec6.at(2)->getTag() == 1013, "vec6's 3rd element's tag is 1013."); vec6.clear(); - - auto objA = Node::create(); // retain count is 1 + + auto objA = Node::create(); // retain count is 1 auto objB = Node::create(); auto objC = Node::create(); { Vector array1; Vector array2; - + // push back objA 3 times - array1.pushBack(objA); // retain count is 2 - array1.pushBack(objA); // retain count is 3 - array1.pushBack(objA); // retain count is 4 - - array2.pushBack(objA); // retain count is 5 + array1.pushBack(objA); // retain count is 2 + array1.pushBack(objA); // retain count is 3 + array1.pushBack(objA); // retain count is 4 + + array2.pushBack(objA); // retain count is 5 array2.pushBack(objB); array2.pushBack(objC); - - for (auto obj : array1) { + + for (auto obj : array1) + { array2.eraseObject(obj); } CCASSERT(objA->getReferenceCount() == 4, "objA's reference count is 4."); } CCASSERT(objA->getReferenceCount() == 1, "objA's reference count is 1."); - + { Vector array1; // push back objA 3 times - array1.pushBack(objA); // retain count is 2 - array1.pushBack(objA); // retain count is 3 - array1.pushBack(objA); // retain count is 4 + array1.pushBack(objA); // retain count is 2 + array1.pushBack(objA); // retain count is 3 + array1.pushBack(objA); // retain count is 4 CCASSERT(objA->getReferenceCount() == 4, "objA's reference count is 4."); - array1.eraseObject(objA, true); // Remove all occurrences in the Vector. + array1.eraseObject(objA, true); // Remove all occurrences in the Vector. CCASSERT(objA->getReferenceCount() == 1, "objA's reference count is 1."); - - array1.pushBack(objA); // retain count is 2 - array1.pushBack(objA); // retain count is 3 - array1.pushBack(objA); // retain count is 4 - + + array1.pushBack(objA); // retain count is 2 + array1.pushBack(objA); // retain count is 3 + array1.pushBack(objA); // retain count is 4 + array1.eraseObject(objA, false); - CCASSERT(objA->getReferenceCount() == 3, "objA's reference count is 3."); // Only remove the first occurrence in the Vector. + CCASSERT(objA->getReferenceCount() == 3, + "objA's reference count is 3."); // Only remove the first occurrence in the Vector. } // Check the retain count in vec7 @@ -287,9 +289,7 @@ void TemplateVectorTest::onEnter() // Sort Vector vecForSort = createVector(); - std::sort(vecForSort.begin(), vecForSort.end(), [](Node* a, Node* b){ - return a->getTag() >= b->getTag(); - }); + std::sort(vecForSort.begin(), vecForSort.end(), [](Node* a, Node* b) { return a->getTag() >= b->getTag(); }); for (int i = 0; i < 20; ++i) { @@ -333,7 +333,7 @@ void TemplateVectorTest::onEnter() // Self assignment Vector vecSelfAssign = createVector(); - vecSelfAssign = vecSelfAssign; + vecSelfAssign = vecSelfAssign; CCASSERT(vecSelfAssign.size() == 20, "vecSelfAssign's size is 20."); for (const auto& child : vecSelfAssign) @@ -366,14 +366,13 @@ std::string TemplateVectorTest::subtitle() const return "Vector, should not crash"; } - //--------------------------------------------------------------- void TemplateMapTest::onEnter() { UnitTestDemo::onEnter(); - auto createMap = [](){ + auto createMap = []() { Map ret; for (int i = 0; i < 20; ++i) { @@ -411,7 +410,7 @@ void TemplateMapTest::onEnter() // Move assignment operator Map map4; auto unusedNode = Node::create(); - map4.insert("unused",unusedNode); + map4.insert("unused", unusedNode); map4 = createMap(); CCASSERT(unusedNode->getReferenceCount() == 1, "unusedNode's reference count is 1."); for (const auto& e : map4) @@ -519,7 +518,7 @@ void TemplateMapTest::onEnter() // clear Map mapForClear = createMap(); - auto mapForClearCopy = mapForClear; + auto mapForClearCopy = mapForClear; mapForClear.clear(); for (const auto& e : mapForClearCopy) @@ -541,7 +540,7 @@ void TemplateMapTest::onEnter() // Self assignment Map mapForSelfAssign = createMap(); - mapForSelfAssign = mapForSelfAssign; + mapForSelfAssign = mapForSelfAssign; CCASSERT(mapForSelfAssign.size() == 20, "mapForSelfAssign's size is 20."); for (const auto& e : mapForSelfAssign) @@ -576,73 +575,72 @@ std::string TemplateMapTest::subtitle() const void ValueTest::onEnter() { UnitTestDemo::onEnter(); - + Value v1; CCASSERT(v1.getType() == Value::Type::NONE, "v1's value type should be VALUE::Type::NONE."); CCASSERT(v1.isNull(), "v1 is null."); - + Value v2(100); CCASSERT(v2.getType() == Value::Type::INTEGER, "v2's value type should be VALUE::Type::INTEGER."); CCASSERT(!v2.isNull(), "v2 is not null."); - + Value v3(101.4f); CCASSERT(v3.getType() == Value::Type::FLOAT, "v3's value type should be VALUE::Type::FLOAT."); CCASSERT(!v3.isNull(), "v3 is not null."); - + Value v4(106.1); CCASSERT(v4.getType() == Value::Type::DOUBLE, "v4's value type should be VALUE::Type::DOUBLE."); CCASSERT(!v4.isNull(), "v4 is not null."); - + unsigned char byte = 50; Value v5(byte); CCASSERT(v5.getType() == Value::Type::INT_UI32, "v5's value type should be Value::Type::INT_UI32."); CCASSERT(!v5.isNull(), "v5 is not null."); - + Value v6(true); CCASSERT(v6.getType() == Value::Type::BOOLEAN, "v6's value type is Value::Type::BOOLEAN."); CCASSERT(!v6.isNull(), "v6 is not null."); - + Value v7("string"); CCASSERT(v7.getType() == Value::Type::STRING, "v7's value type is Value::type::STRING."); CCASSERT(!v7.isNull(), "v7 is not null."); - + Value v8(std::string("string2")); CCASSERT(v8.getType() == Value::Type::STRING, "v8's value type is Value::Type::STRING."); CCASSERT(!v8.isNull(), "v8 is not null."); - auto createValueVector = [&](){ + auto createValueVector = [&]() { ValueVector ret; ret.push_back(v1); ret.push_back(v2); ret.push_back(v3); return ret; }; - - + Value v9(createValueVector()); CCASSERT(v9.getType() == Value::Type::VECTOR, "v9's value type is Value::Type::VECTOR."); CCASSERT(!v9.isNull(), "v9 is not null."); - auto createValueMap = [&](){ + auto createValueMap = [&]() { ValueMap ret; ret["aaa"] = v1; ret["bbb"] = v2; ret["ccc"] = v3; return ret; }; - + Value v10(createValueMap()); CCASSERT(v10.getType() == Value::Type::MAP, "v10's value type is Value::Type::MAP."); CCASSERT(!v10.isNull(), "v10 is not null."); - - auto createValueMapIntKey = [&](){ + + auto createValueMapIntKey = [&]() { ValueMapIntKey ret; ret[111] = v1; ret[222] = v2; ret[333] = v3; return ret; }; - + Value v11(createValueMapIntKey()); CCASSERT(v11.getType() == Value::Type::INT_KEY_MAP, "v11's value type is Value::Type::INT_KEY_MAP."); CCASSERT(!v11.isNull(), "v11 is not null."); @@ -653,149 +651,102 @@ std::string ValueTest::subtitle() const return "Value Test, should not crash"; } -void ValueTest::constFunc(const Value& /*value*/) const -{ -} +void ValueTest::constFunc(const Value& /*value*/) const {} // UTFConversionTest // FIXME: made as define to prevent compile warnings in release mode. Better is to be a `const static int` #define TEST_CODE_NUM 11 -static const char16_t __utf16Code[] = -{ - 0x3042, - 0x3044, - 0x3046, - 0x3048, - 0x304A, - 0x3042, - 0x3044, - 0x3046, - 0x3048, - 0x304A, - 0x0041, - 0x0000, +static const char16_t __utf16Code[] = { + 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x0041, 0x0000, }; // to avoid Xcode error, char => unsigned char // If you use this table, please cast manually as (const char *). -static const unsigned char __utf8Code[] = -{ - 0xE3,0x81,0x82, - 0xE3,0x81,0x84, - 0xE3,0x81,0x86, - 0xE3,0x81,0x88, - 0xE3,0x81,0x8A, - 0xE3,0x81,0x82, - 0xE3,0x81,0x84, - 0xE3,0x81,0x86, - 0xE3,0x81,0x88, - 0xE3,0x81,0x8A, - 0x41, - 0x00, +static const unsigned char __utf8Code[] = { + 0xE3, 0x81, 0x82, 0xE3, 0x81, 0x84, 0xE3, 0x81, 0x86, 0xE3, 0x81, 0x88, 0xE3, 0x81, 0x8A, 0xE3, + 0x81, 0x82, 0xE3, 0x81, 0x84, 0xE3, 0x81, 0x86, 0xE3, 0x81, 0x88, 0xE3, 0x81, 0x8A, 0x41, 0x00, }; - -static const char16_t WHITE_SPACE_CODE[] = -{ - 0x0009, - 0x000A, - 0x000B, - 0x000C, - 0x000D, - 0x0020, - 0x0085, - 0x00A0, - 0x1680, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x2028, - 0x2029, - 0x202F, - 0x205F, - 0x3000 -}; +static const char16_t WHITE_SPACE_CODE[] = {0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x0020, 0x0085, 0x00A0, 0x1680, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, + 0x2009, 0x200A, 0x2028, 0x2029, 0x202F, 0x205F, 0x3000}; static void doUTFConversion() { bool isSuccess = false; - - std::string originalUTF8 = (const char*)__utf8Code; + + std::string originalUTF8 = (const char*)__utf8Code; std::u16string originalUTF16 = __utf16Code; - + //--------------------------- std::string utf8Str; isSuccess = StringUtils::UTF16ToUTF8(originalUTF16, utf8Str); - + if (isSuccess) { - isSuccess = memcmp(utf8Str.data(), originalUTF8.data(), originalUTF8.length()+1)==0; + isSuccess = memcmp(utf8Str.data(), originalUTF8.data(), originalUTF8.length() + 1) == 0; } - + CCASSERT(isSuccess, "StringUtils::UTF16ToUTF8 failed"); - + //--------------------------- std::u16string utf16Str; isSuccess = StringUtils::UTF8ToUTF16(originalUTF8, utf16Str); - + if (isSuccess) { - isSuccess = memcmp(utf16Str.data(), originalUTF16.data(), originalUTF16.length()+1)==0; + isSuccess = memcmp(utf16Str.data(), originalUTF16.data(), originalUTF16.length() + 1) == 0; } - + CCASSERT(isSuccess && (utf16Str.length() == TEST_CODE_NUM), "StringUtils::UTF8ToUTF16 failed"); - + //--------------------------- auto vec1 = StringUtils::getChar16VectorFromUTF16String(originalUTF16); - + CCASSERT(vec1.size() == originalUTF16.length(), "StringUtils::getChar16VectorFromUTF16String failed"); - + //--------------------------- - std::vector vec2( vec1 ); + std::vector vec2(vec1); vec2.push_back(0x2009); vec2.push_back(0x2009); vec2.push_back(0x2009); vec2.push_back(0x2009); - - std::vector vec3( vec2 ); + + std::vector vec3(vec2); StringUtils::trimUTF16Vector(vec2); - + CCASSERT(vec1.size() == vec2.size(), "StringUtils::trimUTF16Vector failed"); - - for (size_t i = 0; i < vec2.size(); i++ ) + + for (size_t i = 0; i < vec2.size(); i++) { CCASSERT(vec1.at(i) == vec2.at(i), "StringUtils::trimUTF16Vector failed"); } - + //--------------------------- - CCASSERT(StringUtils::getCharacterCountInUTF8String(originalUTF8) == TEST_CODE_NUM, "StringUtils::getCharacterCountInUTF8String failed"); - + CCASSERT(StringUtils::getCharacterCountInUTF8String(originalUTF8) == TEST_CODE_NUM, + "StringUtils::getCharacterCountInUTF8String failed"); + //--------------------------- - CCASSERT(StringUtils::getIndexOfLastNotChar16(vec3, 0x2009) == (vec1.size()-1), "StringUtils::getIndexOfLastNotChar16 failed"); - + CCASSERT(StringUtils::getIndexOfLastNotChar16(vec3, 0x2009) == (vec1.size() - 1), + "StringUtils::getIndexOfLastNotChar16 failed"); + //--------------------------- - CCASSERT(originalUTF16.length() == TEST_CODE_NUM, "The length of the original utf16 string isn't equal to TEST_CODE_NUM"); - + CCASSERT(originalUTF16.length() == TEST_CODE_NUM, + "The length of the original utf16 string isn't equal to TEST_CODE_NUM"); + //--------------------------- size_t whiteCodeNum = sizeof(WHITE_SPACE_CODE) / sizeof(WHITE_SPACE_CODE[0]); - for( size_t i = 0; i < whiteCodeNum; i++ ) + for (size_t i = 0; i < whiteCodeNum; i++) { CCASSERT(StringUtils::isUnicodeSpace(WHITE_SPACE_CODE[i]), "StringUtils::isUnicodeSpace failed"); } - + CCASSERT(!StringUtils::isUnicodeSpace(0xFFFF), "StringUtils::isUnicodeSpace failed"); - - CCASSERT(!StringUtils::isCJKUnicode(0xFFFF) && StringUtils::isCJKUnicode(0x3100), "StringUtils::isCJKUnicode failed"); + + CCASSERT(!StringUtils::isCJKUnicode(0xFFFF) && StringUtils::isCJKUnicode(0x3100), + "StringUtils::isCJKUnicode failed"); } void UTFConversionTest::onEnter() @@ -873,9 +824,12 @@ void UIHelperSubStringTest::onEnter() CC_ASSERT(Helper::getSubStringOfUTF8String(source, 8, 1) == ""); CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 1) == "\xe8\xbf\x99"); CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 4) == "\xe8\xbf\x99\xe9\x87\x8c\xe6\x98\xaf\xe4\xb8\xad"); - CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 8) == "\xe8\xbf\x99\xe9\x87\x8c\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbe\x8b"); - CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 100) == "\xe8\xbf\x99\xe9\x87\x8c\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbe\x8b"); - CC_ASSERT(Helper::getSubStringOfUTF8String(source, 2, 5) == "\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95"); + CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 8) == + "\xe8\xbf\x99\xe9\x87\x8c\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbe\x8b"); + CC_ASSERT(Helper::getSubStringOfUTF8String(source, 0, 100) == + "\xe8\xbf\x99\xe9\x87\x8c\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbe\x8b"); + CC_ASSERT(Helper::getSubStringOfUTF8String(source, 2, 5) == + "\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95"); CC_ASSERT(Helper::getSubStringOfUTF8String(source, 6, 2) == "\xe8\xaf\x95\xe4\xbe\x8b"); CC_ASSERT(Helper::getSubStringOfUTF8String(source, 6, 100) == "\xe8\xaf\x95\xe4\xbe\x8b"); @@ -924,7 +878,8 @@ std::string UIHelperSubStringTest::subtitle() const } // ParseIntegerListTest -void ParseIntegerListTest::onEnter() { +void ParseIntegerListTest::onEnter() +{ UnitTestDemo::onEnter(); { @@ -1173,10 +1128,11 @@ void ParseUriTest::onEnter() { // test query parameters std::string s("http://localhost?&key1=foo&key2=&key3&=bar&=bar=&"); - Uri u = Uri::parse(s); + Uri u = Uri::parse(s); auto paramsList = u.getQueryParams(); std::map params; - for (auto& param : paramsList) { + for (auto& param : paramsList) + { params[param.first] = param.second; } EXPECT_EQ(3, params.size()); @@ -1190,7 +1146,7 @@ void ParseUriTest::onEnter() { // test query parameters std::string s("http://localhost?&&&&&&&&&&&&&&&"); - Uri u = Uri::parse(s); + Uri u = Uri::parse(s); auto params = u.getQueryParams(); EXPECT_TRUE(params.empty()); } @@ -1198,10 +1154,11 @@ void ParseUriTest::onEnter() { // test query parameters std::string s("http://localhost?&=invalid_key&key2&key3=foo"); - Uri u = Uri::parse(s); + Uri u = Uri::parse(s); auto paramsList = u.getQueryParams(); std::map params; - for (auto& param : paramsList) { + for (auto& param : paramsList) + { params[param.first] = param.second; } EXPECT_EQ(2, params.size()); @@ -1213,10 +1170,11 @@ void ParseUriTest::onEnter() { // test query parameters std::string s("http://localhost?&key1=====&&=key2&key3="); - Uri u = Uri::parse(s); + Uri u = Uri::parse(s); auto paramsList = u.getQueryParams(); std::map params; - for (auto& param : paramsList) { + for (auto& param : paramsList) + { params[param.first] = param.second; } EXPECT_EQ(1, params.size()); @@ -1227,10 +1185,11 @@ void ParseUriTest::onEnter() { // test query parameters std::string s("ws://localhost:90?key1=foo=bar&key2=foobar&"); - Uri u = Uri::parse(s); + Uri u = Uri::parse(s); auto paramsList = u.getQueryParams(); std::map params; - for (auto& param : paramsList) { + for (auto& param : paramsList) + { params[param.first] = param.second; } EXPECT_EQ(1, params.size()); @@ -1350,16 +1309,16 @@ void ParseUriTest::onEnter() } { - Uri http = Uri::parse("http://google.com"); - Uri https = Uri::parse("https://www.google.com:90"); - Uri query = Uri::parse("http://google.com:8080/foo/bar?foo=bar"); - Uri localhost = Uri::parse("http://localhost:8080"); - Uri ipv6 = Uri::parse("https://[2001:0db8:85a3:0042:1000:8a2e:0370:7334]"); - Uri ipv6short = Uri::parse("http://[2001:db8:85a3:42:1000:8a2e:370:7334]"); - Uri ipv6port = Uri::parse("http://[2001:db8:85a3:42:1000:8a2e:370:7334]:90"); + Uri http = Uri::parse("http://google.com"); + Uri https = Uri::parse("https://www.google.com:90"); + Uri query = Uri::parse("http://google.com:8080/foo/bar?foo=bar"); + Uri localhost = Uri::parse("http://localhost:8080"); + Uri ipv6 = Uri::parse("https://[2001:0db8:85a3:0042:1000:8a2e:0370:7334]"); + Uri ipv6short = Uri::parse("http://[2001:db8:85a3:42:1000:8a2e:370:7334]"); + Uri ipv6port = Uri::parse("http://[2001:db8:85a3:42:1000:8a2e:370:7334]:90"); Uri ipv6abbrev = Uri::parse("http://[2001::7334:a:90]"); - Uri ipv6http = Uri::parse("http://[2001::7334:a]:90"); - Uri ipv6query = Uri::parse("http://[2001::7334:a]:90/foo/bar?foo=bar"); + Uri ipv6http = Uri::parse("http://[2001::7334:a]:90"); + Uri ipv6query = Uri::parse("http://[2001::7334:a]:90/foo/bar?foo=bar"); EXPECT_EQ(http.getScheme(), "http"); EXPECT_EQ(http.getPort(), 80); @@ -1443,7 +1402,6 @@ void ParseUriTest::onEnter() EXPECT_EQ(u6.getPathEtc(), "?&foo=321&bbb=1"); EXPECT_EQ(u6.getQuery(), "&foo=321&bbb=1"); } - } std::string ParseUriTest::subtitle() const @@ -1453,23 +1411,24 @@ std::string ParseUriTest::subtitle() const // MathUtilTest -namespace UnitTest { +namespace UnitTest +{ #ifdef INCLUDE_NEON32 -#include "math/MathUtilNeon.inl" +# include "math/MathUtilNeon.inl" #endif #ifdef INCLUDE_NEON64 -#include "math/MathUtilNeon64.inl" +# include "math/MathUtilNeon64.inl" #endif #ifdef INCLUDE_SSE -//FIXME: #include "math/MathUtilSSE.inl" +// FIXME: #include "math/MathUtilSSE.inl" #endif #include "math/MathUtil.inl" -} // namespace UnitTest { +} // namespace UnitTest // I know the next line looks ugly, but it's a way to test MathUtil. :) using namespace UnitTest::cocos2d; @@ -1480,7 +1439,7 @@ static void __checkMathUtilResult(const char* description, const float* a1, cons // Check whether the result of the optimized instruction is the same as which is implemented in C for (int i = 0; i < size; ++i) { - bool r = fabs(a1[i] - a2[i]) < 0.00001f;//FLT_EPSILON; + bool r = fabs(a1[i] - a2[i]) < 0.00001f; // FLT_EPSILON; if (r) { log("Correct: a1[%d]=%f, a2[%d]=%f", i, a1[i], i, a2[i]); @@ -1496,234 +1455,241 @@ static void __checkMathUtilResult(const char* description, const float* a1, cons void MathUtilTest::onEnter() { UnitTestDemo::onEnter(); - + const int MAT4_SIZE = 16; const int VEC4_SIZE = 4; - + const float inMat41[MAT4_SIZE] = { - 0.234023f, 2.472349f, 1.984244f, 2.23348f, - 0.634124f, 0.234975f, 6.384572f, 0.82368f, - 0.738028f, 1.845237f, 1.934721f, 1.62343f, - 0.339023f, 3.472452f, 1.324714f, 4.23852f, + 0.234023f, 2.472349f, 1.984244f, 2.23348f, 0.634124f, 0.234975f, 6.384572f, 0.82368f, + 0.738028f, 1.845237f, 1.934721f, 1.62343f, 0.339023f, 3.472452f, 1.324714f, 4.23852f, }; - + const float inMat42[MAT4_SIZE] = { - 1.640232f, 4.472349f, 0.983244f, 1.23343f, - 2.834124f, 8.234975f, 0.082572f, 3.82464f, - 3.238028f, 2.845237f, 0.331721f, 4.62544f, - 4.539023f, 9.472452f, 3.520714f, 2.23252f, + 1.640232f, 4.472349f, 0.983244f, 1.23343f, 2.834124f, 8.234975f, 0.082572f, 3.82464f, + 3.238028f, 2.845237f, 0.331721f, 4.62544f, 4.539023f, 9.472452f, 3.520714f, 2.23252f, }; - + const float scalar = 1.323298f; - const float x = 0.432234f; - const float y = 1.333229f; - const float z = 2.535292f; - const float w = 4.632234f; - - const float inVec4[VEC4_SIZE] = {2.323478f, 0.238482f, 4.223783f, 7.238238f}; + const float x = 0.432234f; + const float y = 1.333229f; + const float z = 2.535292f; + const float w = 4.632234f; + + const float inVec4[VEC4_SIZE] = {2.323478f, 0.238482f, 4.223783f, 7.238238f}; const float inVec42[VEC4_SIZE] = {0.322374f, 8.258883f, 3.293683f, 2.838337f}; - + float outMat4Opt[MAT4_SIZE] = {0}; - float outMat4C[MAT4_SIZE] = {0}; + float outMat4C[MAT4_SIZE] = {0}; float outVec4Opt[VEC4_SIZE] = {0}; - float outVec4C[VEC4_SIZE] = {0}; - + float outVec4C[VEC4_SIZE] = {0}; + // inline static void addMatrix(const float* m, float scalar, float* dst); MathUtilC::addMatrix(inMat41, scalar, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::addMatrix(inMat41, scalar, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::addMatrix(inMat41, scalar, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void addMatrix(const float* m, float scalar, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void addMatrix(const float* m, float scalar, float* dst);", outMat4C, + outMat4Opt, MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void addMatrix(const float* m1, const float* m2, float* dst); MathUtilC::addMatrix(inMat41, inMat42, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::addMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::addMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void addMatrix(const float* m1, const float* m2, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void addMatrix(const float* m1, const float* m2, float* dst);", outMat4C, + outMat4Opt, MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); // inline static void subtractMatrix(const float* m1, const float* m2, float* dst); MathUtilC::subtractMatrix(inMat41, inMat42, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::subtractMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::subtractMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void subtractMatrix(const float* m1, const float* m2, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void subtractMatrix(const float* m1, const float* m2, float* dst);", outMat4C, + outMat4Opt, MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void multiplyMatrix(const float* m, float scalar, float* dst); MathUtilC::multiplyMatrix(inMat41, scalar, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::multiplyMatrix(inMat41, scalar, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::multiplyMatrix(inMat41, scalar, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void multiplyMatrix(const float* m, float scalar, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void multiplyMatrix(const float* m, float scalar, float* dst);", outMat4C, + outMat4Opt, MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void multiplyMatrix(const float* m1, const float* m2, float* dst); MathUtilC::multiplyMatrix(inMat41, inMat42, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::multiplyMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::multiplyMatrix(inMat41, inMat42, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void multiplyMatrix(const float* m1, const float* m2, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void multiplyMatrix(const float* m1, const float* m2, float* dst);", outMat4C, + outMat4Opt, MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void negateMatrix(const float* m, float* dst); MathUtilC::negateMatrix(inMat41, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::negateMatrix(inMat41, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::negateMatrix(inMat41, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void negateMatrix(const float* m, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void negateMatrix(const float* m, float* dst);", outMat4C, outMat4Opt, + MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void transposeMatrix(const float* m, float* dst); MathUtilC::transposeMatrix(inMat41, outMat4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::transposeMatrix(inMat41, outMat4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::transposeMatrix(inMat41, outMat4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void transposeMatrix(const float* m, float* dst);", outMat4C, outMat4Opt, MAT4_SIZE); + + __checkMathUtilResult("inline static void transposeMatrix(const float* m, float* dst);", outMat4C, outMat4Opt, + MAT4_SIZE); // Clean memset(outMat4C, 0, sizeof(outMat4C)); memset(outMat4Opt, 0, sizeof(outMat4Opt)); - + // inline static void transformVec4(const float* m, float x, float y, float z, float w, float* dst); MathUtilC::transformVec4(inMat41, x, y, z, w, outVec4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::transformVec4(inMat41, x, y, z, w, outVec4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::transformVec4(inMat41, x, y, z, w, outVec4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void transformVec4(const float* m, float x, float y, float z, float w, float* dst);", outVec4C, outVec4Opt, VEC4_SIZE); + + __checkMathUtilResult( + "inline static void transformVec4(const float* m, float x, float y, float z, float w, float* dst);", outVec4C, + outVec4Opt, VEC4_SIZE); // Clean memset(outVec4C, 0, sizeof(outVec4C)); memset(outVec4Opt, 0, sizeof(outVec4Opt)); - + // inline static void transformVec4(const float* m, const float* v, float* dst); MathUtilC::transformVec4(inMat41, inVec4, outVec4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::transformVec4(inMat41, inVec4, outVec4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::transformVec4(inMat41, inVec4, outVec4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void transformVec4(const float* m, const float* v, float* dst);", outVec4C, outVec4Opt, VEC4_SIZE); + + __checkMathUtilResult("inline static void transformVec4(const float* m, const float* v, float* dst);", outVec4C, + outVec4Opt, VEC4_SIZE); // Clean memset(outVec4C, 0, sizeof(outVec4C)); memset(outVec4Opt, 0, sizeof(outVec4Opt)); - + // inline static void crossVec3(const float* v1, const float* v2, float* dst); MathUtilC::crossVec3(inVec4, inVec42, outVec4C); - + #ifdef INCLUDE_NEON32 MathUtilNeon::crossVec3(inVec4, inVec42, outVec4Opt); #endif - + #ifdef INCLUDE_NEON64 MathUtilNeon64::crossVec3(inVec4, inVec42, outVec4Opt); #endif - + #ifdef INCLUDE_SSE // FIXME: #endif - - __checkMathUtilResult("inline static void crossVec3(const float* v1, const float* v2, float* dst);", outVec4C, outVec4Opt, VEC4_SIZE); + + __checkMathUtilResult("inline static void crossVec3(const float* v1, const float* v2, float* dst);", outVec4C, + outVec4Opt, VEC4_SIZE); // Clean memset(outVec4C, 0, sizeof(outVec4C)); memset(outVec4Opt, 0, sizeof(outVec4Opt)); @@ -1757,5 +1723,3 @@ std::string ResizableBufferAdapterTest::subtitle() const { return "ResiziableBufferAdapter Test"; } - - diff --git a/tests/cpp-tests/Classes/UnitTest/UnitTest.h b/tests/cpp-tests/Classes/UnitTest/UnitTest.h index 23ce9ad675ab..c4b1ee53784e 100644 --- a/tests/cpp-tests/Classes/UnitTest/UnitTest.h +++ b/tests/cpp-tests/Classes/UnitTest/UnitTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -112,5 +112,4 @@ class ResizableBufferAdapterTest : public UnitTestDemo virtual std::string subtitle() const override; }; - #endif /* __UNIT_TEST__ */ diff --git a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp index 07859f508460..78e90beb221a 100644 --- a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp +++ b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. Copyright (c) 2020 c4games.com. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -41,10 +41,10 @@ UserDefaultTests::UserDefaultTests() UserDefaultTest::UserDefaultTest() { - auto s = Director::getInstance()->getWinSize(); + auto s = Director::getInstance()->getWinSize(); auto label = Label::createWithTTF("CCUserDefault test Log data see console", "fonts/arial.ttf", 22); addChild(label, 0); - label->setPosition( Vec2(s.width/2, s.height-50) ); + label->setPosition(Vec2(s.width / 2, s.height - 50)); this->_label = Label::createWithTTF("result", "fonts/arial.ttf", 12); addChild(this->_label, 0); @@ -55,54 +55,55 @@ UserDefaultTest::UserDefaultTest() doTest(); } -//template -//void logData(const char* key) +// template +// void logData(const char* key) //{ -// Data data = UserDefault::getInstance()->getDataForKey(key); -// T* buffer = (T*) data.getBytes(); -// ssize_t length = data.getSize() / sizeof(T); +// Data data = UserDefault::getInstance()->getDataForKey(key); +// T* buffer = (T*) data.getBytes(); +// ssize_t length = data.getSize() / sizeof(T); // -// std::ostringstream ss; -// ss << setprecision(2) << std::fixed; -// for (int i = 0; i < length; i++) -// { -// ss << buffer[i] << " "; -// } +// std::ostringstream ss; +// ss << setprecision(2) << std::fixed; +// for (int i = 0; i < length; i++) +// { +// ss << buffer[i] << " "; +// } // -// CCLOG("%s is %s", key, ss.str().c_str()); -//} +// CCLOG("%s is %s", key, ss.str().c_str()); +// } -//template -//void setData(const char* key) +// template +// void setData(const char* key) //{ -// Data data; -// vector v; +// Data data; +// vector v; // -// for (int i = 0; i <= 5; i++) -// { -// v.push_back(static_cast(i)); -// } -// data.copy((unsigned char*) v.data(), v.size() * sizeof(T)); -// UserDefault::getInstance()->setDataForKey(key, data); -//} +// for (int i = 0; i <= 5; i++) +// { +// v.push_back(static_cast(i)); +// } +// data.copy((unsigned char*) v.data(), v.size() * sizeof(T)); +// UserDefault::getInstance()->setDataForKey(key, data); +// } // -//template -//void setData2(const char* key) +// template +// void setData2(const char* key) //{ -// Data data; -// vector v; +// Data data; +// vector v; // -// for (int i = 5; i >= 0; i--) -// { -// v.push_back(static_cast(i)); -// } -// data.copy((unsigned char*) v.data(), v.size() * sizeof(T)); -// UserDefault::getInstance()->setDataForKey(key, data); -//} +// for (int i = 5; i >= 0; i--) +// { +// v.push_back(static_cast(i)); +// } +// data.copy((unsigned char*) v.data(), v.size() * sizeof(T)); +// UserDefault::getInstance()->setDataForKey(key, data); +// } void UserDefaultTest::doTest() { - this->_label->setString(this->_label->getString() + "\n" + "********************** init value ***********************"); + this->_label->setString(this->_label->getString() + "\n" + + "********************** init value ***********************"); // set default value @@ -113,19 +114,20 @@ void UserDefaultTest::doTest() UserDefault::getInstance()->setBoolForKey("bool", true); // test saving of Data buffers -// setData("int_data"); -// setData("float_data"); -// setData("double_data"); + // setData("int_data"); + // setData("float_data"); + // setData("double_data"); printValue(); -// logData("int_data"); -// logData("float_data"); -// logData("double_data"); + // logData("int_data"); + // logData("float_data"); + // logData("double_data"); - //CCUserDefault::getInstance()->flush(); + // CCUserDefault::getInstance()->flush(); - this->_label->setString(this->_label->getString() + "\n" + "********************** after change value ***********************"); + this->_label->setString(this->_label->getString() + "\n" + + "********************** after change value ***********************"); // change the value @@ -135,20 +137,21 @@ void UserDefaultTest::doTest() UserDefault::getInstance()->setDoubleForKey("double", 2.6); UserDefault::getInstance()->setBoolForKey("bool", false); -// setData2("int_data"); -// setData2("float_data"); -// setData2("double_data"); + // setData2("int_data"); + // setData2("float_data"); + // setData2("double_data"); UserDefault::getInstance()->flush(); // print value printValue(); -// logData("int_data"); -// logData("float_data"); -// logData("double_data"); + // logData("int_data"); + // logData("float_data"); + // logData("double_data"); - this->_label->setString(this->_label->getString() + "\n" + "********************** after delete value ***********************"); + this->_label->setString(this->_label->getString() + "\n" + + "********************** after delete value ***********************"); UserDefault::getInstance()->deleteValueForKey("string"); UserDefault::getInstance()->deleteValueForKey("integer"); @@ -193,8 +196,4 @@ void UserDefaultTest::printValue() } } -UserDefaultTest::~UserDefaultTest() -{ -} - - +UserDefaultTest::~UserDefaultTest() {} diff --git a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.h b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.h index 17f74654cdc3..1f8fba6215ae 100644 --- a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.h +++ b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -44,4 +44,4 @@ class UserDefaultTest : public TestCase cocos2d::Label* _label; }; -#endif // _USERDEFAULT_TEST_H_ +#endif // _USERDEFAULT_TEST_H_ diff --git a/tests/cpp-tests/Classes/VRTest/VRTest.cpp b/tests/cpp-tests/Classes/VRTest/VRTest.cpp index 4605f10c90b5..84107c502fbb 100644 --- a/tests/cpp-tests/Classes/VRTest/VRTest.cpp +++ b/tests/cpp-tests/Classes/VRTest/VRTest.cpp @@ -44,11 +44,10 @@ VRTest1::VRTest1() auto size = Director::getInstance()->getVisibleSize(); auto image = Sprite::create("Images/background.png"); - image->setPosition(size/2); + image->setPosition(size / 2); addChild(image); - auto button = MenuItemFont::create("Enable / Disable VR", [](Ref* ref){ - + auto button = MenuItemFont::create("Enable / Disable VR", [](Ref* ref) { auto glview = Director::getInstance()->getOpenGLView(); auto vrimpl = glview->getVR(); if (vrimpl) @@ -65,7 +64,7 @@ VRTest1::VRTest1() auto menu = Menu::create(button, nullptr); addChild(menu); - menu->setPosition(size / 6 ); + menu->setPosition(size / 6); } std::string VRTest1::title() const @@ -77,6 +76,3 @@ std::string VRTest1::subtitle() const { return "Enable / Disable it with the button"; } - - - diff --git a/tests/cpp-tests/Classes/VRTest/VRTest.h b/tests/cpp-tests/Classes/VRTest/VRTest.h index cd0ef455adfd..b72cff7196de 100644 --- a/tests/cpp-tests/Classes/VRTest/VRTest.h +++ b/tests/cpp-tests/Classes/VRTest/VRTest.h @@ -35,7 +35,7 @@ DEFINE_TEST_SUITE(VRTests); class VRTestDemo : public TestCase { protected: - std::string _title; + std::string _title; public: }; @@ -49,5 +49,4 @@ class VRTest1 : public VRTestDemo virtual std::string subtitle() const override; }; - #endif diff --git a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp index f77f2458c1fa..39025fc9fb6f 100644 --- a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp +++ b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.cpp @@ -36,220 +36,236 @@ VibrateTests::VibrateTests() ADD_TEST_CASE(VibrateControlTest); } -namespace { - class TextButton : public cocos2d::Label +namespace +{ +class TextButton : public cocos2d::Label +{ +public: + static TextButton* create(std::string_view text, const std::function& onTriggered) { - public: - - static TextButton *create(std::string_view text, const std::function &onTriggered) + auto ret = new TextButton(); + + TTFConfig ttfconfig("fonts/arial.ttf", 25); + if (ret->setTTFConfig(ttfconfig)) { - auto ret = new TextButton(); - - TTFConfig ttfconfig("fonts/arial.ttf",25); - if (ret->setTTFConfig(ttfconfig)) { - ret->setString(text); - ret->_onTriggered = onTriggered; - - ret->autorelease(); - - return ret; - } - - delete ret; - return nullptr; + ret->setString(text); + ret->_onTriggered = onTriggered; + + ret->autorelease(); + + return ret; } - - void setEnabled(bool enabled) + + delete ret; + return nullptr; + } + + void setEnabled(bool enabled) + { + _enabled = enabled; + if (_enabled) { - _enabled = enabled; - if(_enabled){ - this->setColor(Color3B::WHITE); - } - else { - this->setColor(Color3B::GRAY); - } + this->setColor(Color3B::WHITE); } - - private: - TextButton() + else { - auto listener = EventListenerTouchOneByOne::create(); - listener->setSwallowTouches(true); - - listener->onTouchBegan = CC_CALLBACK_2(TextButton::onTouchBegan, this); - listener->onTouchEnded = CC_CALLBACK_2(TextButton::onTouchEnded, this); - listener->onTouchCancelled = CC_CALLBACK_2(TextButton::onTouchCancelled, this); - - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + this->setColor(Color3B::GRAY); } - - bool touchHits(Touch *touch) + } + +private: + TextButton() + { + auto listener = EventListenerTouchOneByOne::create(); + listener->setSwallowTouches(true); + + listener->onTouchBegan = CC_CALLBACK_2(TextButton::onTouchBegan, this); + listener->onTouchEnded = CC_CALLBACK_2(TextButton::onTouchEnded, this); + listener->onTouchCancelled = CC_CALLBACK_2(TextButton::onTouchCancelled, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + } + + bool touchHits(Touch* touch) + { + auto hitPos = this->convertToNodeSpace(touch->getLocation()); + if (hitPos.x >= 0 && hitPos.y >= 0 && hitPos.x <= _contentSize.width && hitPos.y <= _contentSize.height) { - auto hitPos = this->convertToNodeSpace(touch->getLocation()); - if (hitPos.x >= 0 && hitPos.y >= 0 && hitPos.x <= _contentSize.width && hitPos.y <= _contentSize.height) { - return true; - } - return false; + return true; } - - bool onTouchBegan(Touch *touch, Event *event) + return false; + } + + bool onTouchBegan(Touch* touch, Event* event) + { + auto hits = touchHits(touch); + if (hits) { - auto hits = touchHits(touch); - if (hits){ - scaleButtonTo(0.95f); - } - return hits; + scaleButtonTo(0.95f); } - - void onTouchEnded(Touch *touch, Event *event) + return hits; + } + + void onTouchEnded(Touch* touch, Event* event) + { + if (_enabled) { - if(_enabled) { - auto hits = touchHits(touch); - if (hits && _onTriggered){ - _onTriggered(this); - } + auto hits = touchHits(touch); + if (hits && _onTriggered) + { + _onTriggered(this); } - - scaleButtonTo(1); } - - void onTouchCancelled(Touch *touch, Event *event) + + scaleButtonTo(1); + } + + void onTouchCancelled(Touch* touch, Event* event) { scaleButtonTo(1); } + + void scaleButtonTo(float scale) + { + auto action = ScaleTo::create(0.05f, scale); + action->setTag(10000); + stopActionByTag(10000); + runAction(action); + } + + std::function _onTriggered = nullptr; + + bool _enabled = true; +}; + +class SliderEx : public Slider +{ +public: + enum class TouchEvent + { + DOWN, + MOVE, + UP, + CANCEL + }; + typedef std::function ccSliderExCallback; + + static SliderEx* create() + { + auto ret = new SliderEx(); + if (ret->init()) { - scaleButtonTo(1); + ret->_callback = nullptr; + ret->loadBarTexture("ccs-res/cocosui/sliderTrack.png"); + ret->loadSlidBallTextures("ccs-res/cocosui/sliderThumb.png", "ccs-res/cocosui/sliderThumb.png", ""); + ret->loadProgressBarTexture("ccs-res/cocosui/sliderProgress.png"); + + ret->autorelease(); + + return ret; } - - void scaleButtonTo(float scale) + CC_SAFE_DELETE(ret); + return ret; + } + + void setCallBack(const ccSliderExCallback& callback) { _callback = callback; } + + void setRatio(float ratio) + { + if (ratio > 1.0f) { - auto action = ScaleTo::create(0.05f, scale); - action->setTag(10000); - stopActionByTag(10000); - runAction(action); + ratio = 1.0f; } - - std::function _onTriggered = nullptr; - - bool _enabled = true; - }; - - class SliderEx : public Slider - { - public: - enum class TouchEvent + else if (ratio < 0.0f) { - DOWN, - MOVE, - UP, - CANCEL - }; - typedef std::function ccSliderExCallback; - - static SliderEx* create(){ - auto ret = new SliderEx(); - if (ret->init()) - { - ret->_callback = nullptr; - ret->loadBarTexture("ccs-res/cocosui/sliderTrack.png"); - ret->loadSlidBallTextures("ccs-res/cocosui/sliderThumb.png", "ccs-res/cocosui/sliderThumb.png", ""); - ret->loadProgressBarTexture("ccs-res/cocosui/sliderProgress.png"); - - ret->autorelease(); - - return ret; - } - CC_SAFE_DELETE(ret); - return ret; + ratio = 0.0f; } - - void setCallBack(const ccSliderExCallback& callback){ - _callback = callback; + + _ratio = ratio; + _percent = 100 * _ratio; + + float dis = _barLength * _ratio; + _slidBallRenderer->setPosition(Vec2(dis, _contentSize.height / 2.0f)); + if (_scale9Enabled) + { + _progressBarRenderer->setPreferredSize(Size(dis, _progressBarTextureSize.height)); } - - void setRatio(float ratio) { - if (ratio > 1.0f){ - ratio = 1.0f; - } - else if (ratio < 0.0f){ - ratio = 0.0f; - } - - _ratio = ratio; - _percent = 100 * _ratio; - - float dis = _barLength * _ratio; - _slidBallRenderer->setPosition(Vec2(dis, _contentSize.height / 2.0f)); - if (_scale9Enabled){ - _progressBarRenderer->setPreferredSize(Size(dis,_progressBarTextureSize.height)); - } - else + else + { + auto spriteRenderer = _progressBarRenderer->getSprite(); + + if (nullptr != spriteRenderer) { - auto spriteRenderer = _progressBarRenderer->getSprite(); - - if (nullptr != spriteRenderer) { - Rect rect = spriteRenderer->getTextureRect(); - rect.size.width = _progressBarTextureSize.width * _ratio; - spriteRenderer->setTextureRect(rect, spriteRenderer->isTextureRectRotated(), rect.size); - } - } - } - - virtual bool onTouchBegan(Touch *touch, Event *unusedEvent) override{ - auto ret = Slider::onTouchBegan(touch, unusedEvent); - if(ret && _callback){ - _touchEvent = TouchEvent::DOWN; - Vec2 nsp = convertToNodeSpace(_touchBeganPosition); - _ratio = nsp.x / _barLength; - if(_ratio < 0.0f) - _ratio = 0.0f; - else if(_ratio > 1.0f) - _ratio = 1.0f; - _callback(this,_ratio,_touchEvent); + Rect rect = spriteRenderer->getTextureRect(); + rect.size.width = _progressBarTextureSize.width * _ratio; + spriteRenderer->setTextureRect(rect, spriteRenderer->isTextureRectRotated(), rect.size); } - return ret; } - - virtual void onTouchMoved(Touch *touch, Event *unusedEvent) override{ - _touchEvent = TouchEvent::MOVE; - Slider::onTouchMoved(touch, unusedEvent); - Vec2 nsp = convertToNodeSpace(_touchMovePosition); - _ratio = nsp.x / _barLength; - if(_ratio < 0.0f) + } + + virtual bool onTouchBegan(Touch* touch, Event* unusedEvent) override + { + auto ret = Slider::onTouchBegan(touch, unusedEvent); + if (ret && _callback) + { + _touchEvent = TouchEvent::DOWN; + Vec2 nsp = convertToNodeSpace(_touchBeganPosition); + _ratio = nsp.x / _barLength; + if (_ratio < 0.0f) _ratio = 0.0f; - else if(_ratio > 1.0f) + else if (_ratio > 1.0f) _ratio = 1.0f; - if(_callback){ - _callback(this,_ratio,_touchEvent); - } + _callback(this, _ratio, _touchEvent); } - - virtual void onTouchEnded(Touch *touch, Event *unusedEvent) override{ - _touchEvent = TouchEvent::UP; - Slider::onTouchEnded(touch, unusedEvent); - Vec2 nsp = convertToNodeSpace(_touchEndPosition); - _ratio = nsp.x / _barLength; - if(_ratio < 0.0f) - _ratio = 0.0f; - else if(_ratio > 1.0f) - _ratio = 1.0f; - if(_callback){ - _callback(this,_ratio,_touchEvent); - } + return ret; + } + + virtual void onTouchMoved(Touch* touch, Event* unusedEvent) override + { + _touchEvent = TouchEvent::MOVE; + Slider::onTouchMoved(touch, unusedEvent); + Vec2 nsp = convertToNodeSpace(_touchMovePosition); + _ratio = nsp.x / _barLength; + if (_ratio < 0.0f) + _ratio = 0.0f; + else if (_ratio > 1.0f) + _ratio = 1.0f; + if (_callback) + { + _callback(this, _ratio, _touchEvent); } - - virtual void onTouchCancelled(Touch *touch, Event *unusedEvent) override{ - _touchEvent = TouchEvent::CANCEL; - Slider::onTouchCancelled(touch, unusedEvent); - - if(_callback){ - _callback(this,_ratio,_touchEvent); - } + } + + virtual void onTouchEnded(Touch* touch, Event* unusedEvent) override + { + _touchEvent = TouchEvent::UP; + Slider::onTouchEnded(touch, unusedEvent); + Vec2 nsp = convertToNodeSpace(_touchEndPosition); + _ratio = nsp.x / _barLength; + if (_ratio < 0.0f) + _ratio = 0.0f; + else if (_ratio > 1.0f) + _ratio = 1.0f; + if (_callback) + { + _callback(this, _ratio, _touchEvent); } - - private: - TouchEvent _touchEvent; - float _ratio; - ccSliderExCallback _callback; - }; -} + } + + virtual void onTouchCancelled(Touch* touch, Event* unusedEvent) override + { + _touchEvent = TouchEvent::CANCEL; + Slider::onTouchCancelled(touch, unusedEvent); + + if (_callback) + { + _callback(this, _ratio, _touchEvent); + } + } + +private: + TouchEvent _touchEvent; + float _ratio; + ccSliderExCallback _callback; +}; +} // namespace void VibrateTestDemo::onExit() { @@ -264,19 +280,17 @@ std::string VibrateTestDemo::title() const // VibrateControlTest bool VibrateControlTest::init() { - auto ret = VibrateTestDemo::init(); + auto ret = VibrateTestDemo::init(); _duration = 0.1f; - + std::string fontFilePath = "fonts/arial.ttf"; - + auto& layerSize = this->getContentSize(); - auto vibrateItem = TextButton::create("vibrate", [&](TextButton* button){ - Device::vibrate(_duration); - }); + auto vibrateItem = TextButton::create("vibrate", [&](TextButton* button) { Device::vibrate(_duration); }); vibrateItem->setPosition(layerSize.width * 0.5f, layerSize.height * 0.7f); addChild(vibrateItem); - + auto durationLabelValue = StringUtils::format("duration: %.3fs", _duration); auto durationLabel = Label::createWithTTF(durationLabelValue, fontFilePath, 20); @@ -287,21 +301,19 @@ bool VibrateControlTest::init() auto durationSlider = SliderEx::create(); durationSlider->setPercent(0); - durationSlider->setCallBack([&](SliderEx* sender, float ratio, SliderEx::TouchEvent event){ - _duration = ratio * 1.9f + 0.1f; // From 0.1s to 2s + durationSlider->setCallBack([&](SliderEx* sender, float ratio, SliderEx::TouchEvent event) { + _duration = ratio * 1.9f + 0.1f; // From 0.1s to 2s auto durationLabelValue = StringUtils::format("duration: %.3fs", _duration); (static_cast(_durationLabel))->setString(durationLabelValue); }); durationSlider->setPosition(Vec2(layerSize.width * 0.5f, layerSize.height * 0.35f)); addChild(durationSlider); _durationSlider = durationSlider; - + return ret; } -VibrateControlTest::~VibrateControlTest() -{ -} +VibrateControlTest::~VibrateControlTest() {} std::string VibrateControlTest::title() const { diff --git a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.h b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.h index fc05417e7fbb..2db3a0ec060d 100644 --- a/tests/cpp-tests/Classes/VibrateTest/VibrateTest.h +++ b/tests/cpp-tests/Classes/VibrateTest/VibrateTest.h @@ -26,10 +26,10 @@ #include "platform/CCPlatformConfig.h" #ifndef __VIBRATE_TEST_H_ -#define __VIBRATE_TEST_H_ +# define __VIBRATE_TEST_H_ -#include "cocos2d.h" -#include "../BaseTest.h" +# include "cocos2d.h" +# include "../BaseTest.h" DEFINE_TEST_SUITE(VibrateTests); @@ -38,24 +38,22 @@ class VibrateTestDemo : public TestCase public: virtual std::string title() const override; virtual void onExit() override; - }; class VibrateControlTest : public VibrateTestDemo { public: - CREATE_FUNC(VibrateControlTest); + CREATE_FUNC(VibrateControlTest); virtual ~VibrateControlTest(); - - virtual bool init()override; + + virtual bool init() override; virtual std::string title() const override; - + private: float _duration = 0.f; - - void* _durationLabel = nullptr; + + void* _durationLabel = nullptr; void* _durationSlider = nullptr; }; - #endif /* defined(__VIBRATE_TEST_H_) */ diff --git a/tests/cpp-tests/Classes/VisibleRect.cpp b/tests/cpp-tests/Classes/VisibleRect.cpp index 504a16b7d3d2..6d391c042d3c 100644 --- a/tests/cpp-tests/Classes/VisibleRect.cpp +++ b/tests/cpp-tests/Classes/VisibleRect.cpp @@ -45,43 +45,46 @@ Rect VisibleRect::getVisibleRect() Vec2 VisibleRect::left() { lazyInit(); - return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y+s_visibleRect.size.height/2); + return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y + s_visibleRect.size.height / 2); } Vec2 VisibleRect::right() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y+s_visibleRect.size.height/2); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width, + s_visibleRect.origin.y + s_visibleRect.size.height / 2); } Vec2 VisibleRect::top() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y+s_visibleRect.size.height); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width / 2, + s_visibleRect.origin.y + s_visibleRect.size.height); } Vec2 VisibleRect::bottom() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width / 2, s_visibleRect.origin.y); } Vec2 VisibleRect::center() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width/2, s_visibleRect.origin.y+s_visibleRect.size.height/2); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width / 2, + s_visibleRect.origin.y + s_visibleRect.size.height / 2); } Vec2 VisibleRect::leftTop() { lazyInit(); - return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y+s_visibleRect.size.height); + return Vec2(s_visibleRect.origin.x, s_visibleRect.origin.y + s_visibleRect.size.height); } Vec2 VisibleRect::rightTop() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y+s_visibleRect.size.height); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width, s_visibleRect.origin.y + s_visibleRect.size.height); } Vec2 VisibleRect::leftBottom() @@ -93,5 +96,5 @@ Vec2 VisibleRect::leftBottom() Vec2 VisibleRect::rightBottom() { lazyInit(); - return Vec2(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y); + return Vec2(s_visibleRect.origin.x + s_visibleRect.size.width, s_visibleRect.origin.y); } diff --git a/tests/cpp-tests/Classes/VisibleRect.h b/tests/cpp-tests/Classes/VisibleRect.h index 8e6b5743d1af..0f08da26d54b 100644 --- a/tests/cpp-tests/Classes/VisibleRect.h +++ b/tests/cpp-tests/Classes/VisibleRect.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -41,6 +41,7 @@ class VisibleRect static cocos2d::Vec2 rightTop(); static cocos2d::Vec2 leftBottom(); static cocos2d::Vec2 rightBottom(); + private: static void lazyInit(); static cocos2d::Rect s_visibleRect; diff --git a/tests/cpp-tests/Classes/WindowTest/WindowTest.cpp b/tests/cpp-tests/Classes/WindowTest/WindowTest.cpp index 49a79b076dd1..050152eb863f 100644 --- a/tests/cpp-tests/Classes/WindowTest/WindowTest.cpp +++ b/tests/cpp-tests/Classes/WindowTest/WindowTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,10 +24,12 @@ #include "WindowTest.h" -#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || \ + CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) USING_NS_CC; -WindowTests::WindowTests() { +WindowTests::WindowTests() +{ ADD_TEST_CASE(WindowTestWindowed1); ADD_TEST_CASE(WindowTestWindowed2); ADD_TEST_CASE(WindowTestFullscreen1); @@ -35,27 +37,32 @@ WindowTests::WindowTests() { ADD_TEST_CASE(WindowTestFullscreen3); } -std::string WindowTest::title() const { +std::string WindowTest::title() const +{ return "Window Test"; } -void WindowTestWindowed1::onEnter() { +void WindowTestWindowed1::onEnter() +{ WindowTest::onEnter(); GLViewImpl* view = (GLViewImpl*)Director::getInstance()->getOpenGLView(); view->setWindowed(480, 320); } -std::string WindowTestWindowed1::subtitle() const { +std::string WindowTestWindowed1::subtitle() const +{ return "Windowed 480x320"; } -void WindowTestWindowed2::onEnter() { +void WindowTestWindowed2::onEnter() +{ WindowTest::onEnter(); GLViewImpl* view = (GLViewImpl*)Director::getInstance()->getOpenGLView(); view->setWindowed(960, 640); } -std::string WindowTestWindowed2::subtitle() const { +std::string WindowTestWindowed2::subtitle() const +{ return "Windowed 960x640"; } @@ -68,27 +75,32 @@ bool WindowTestFullscreen1::init() return WindowTest::init(); } -std::string WindowTestFullscreen1::subtitle() const { +std::string WindowTestFullscreen1::subtitle() const +{ return "Fullscreen"; } -bool WindowTestFullscreen2::init() { +bool WindowTestFullscreen2::init() +{ GLViewImpl* view = (GLViewImpl*)Director::getInstance()->getOpenGLView(); view->setFullscreen(1); return WindowTest::init(); } -std::string WindowTestFullscreen2::subtitle() const { +std::string WindowTestFullscreen2::subtitle() const +{ return "Fullscreen Monitor 2 (if present)"; } -bool WindowTestFullscreen3::init() { +bool WindowTestFullscreen3::init() +{ GLViewImpl* view = (GLViewImpl*)Director::getInstance()->getOpenGLView(); view->setFullscreen(2); return WindowTest::init(); } -std::string WindowTestFullscreen3::subtitle() const { +std::string WindowTestFullscreen3::subtitle() const +{ return "Fullscreen Monitor 3 (if present)"; } diff --git a/tests/cpp-tests/Classes/WindowTest/WindowTest.h b/tests/cpp-tests/Classes/WindowTest/WindowTest.h index f5ee4e734047..e1b2ab766507 100644 --- a/tests/cpp-tests/Classes/WindowTest/WindowTest.h +++ b/tests/cpp-tests/Classes/WindowTest/WindowTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,8 +25,9 @@ #ifndef __WINDOWTEST_H__ #define __WINDOWTEST_H__ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) -#include "../BaseTest.h" +#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || \ + CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) +# include "../BaseTest.h" DEFINE_TEST_SUITE(WindowTests); diff --git a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp index 31f53bd0eade..ddb715271db4 100644 --- a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp +++ b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp @@ -31,61 +31,70 @@ using namespace cocos2d; -ZipTests::ZipTests() { +ZipTests::ZipTests() +{ ADD_TEST_CASE(UnZipNormalFile); ADD_TEST_CASE(UnZipWithPassword); } -std::string ZipTest::title() const { +std::string ZipTest::title() const +{ return "Unzip Test"; } - -static void unzipTest(Label *label, const std::string &originFile, const std::string &tmpName, const std::string &zipFile, std::string_view password = "") +static void unzipTest(Label* label, + const std::string& originFile, + const std::string& tmpName, + const std::string& zipFile, + std::string_view password = "") { auto fu = FileUtils::getInstance(); cocos2d::Data origContent; const int BUFF_SIZE = 1024; - char *buff = nullptr; + char* buff = nullptr; std::vector fileData; - bool hasError = false; + bool hasError = false; unz_file_info fileInfo = {0}; - char fileName[40] = {0}; + char fileName[40] = {0}; auto newLocal = fu->getWritablePath() + tmpName; - //copy file to support android + // copy file to support android - if(fu->isFileExist(newLocal)) { + if (fu->isFileExist(newLocal)) + { CCLOG("Remove file %s", newLocal.c_str()); fu->removeFile(newLocal); } CCLOG("Copy %s to %s", zipFile.c_str(), newLocal.c_str()); auto writeSuccess = fu->writeDataToFile(fu->getDataFromFile(zipFile), newLocal); - if(!writeSuccess) { + if (!writeSuccess) + { label->setString("Failed to copy zip file to writable path"); return; } unzFile fp = unzOpen(newLocal.c_str()); - if(!fp) { + if (!fp) + { CCLOG("Failed to open zip file %s", newLocal.c_str()); label->setString("Failed to open zip file"); return; } int err = unzGoToFirstFile(fp); - if(err != UNZ_OK) { + if (err != UNZ_OK) + { label->setString("Failed to local first file"); goto close_and_return; } - unzGetCurrentFileInfo(fp, &fileInfo, fileName, sizeof(fileName) -1, nullptr, 0, nullptr, 0 ); + unzGetCurrentFileInfo(fp, &fileInfo, fileName, sizeof(fileName) - 1, nullptr, 0, nullptr, 0); CCASSERT(strncmp("10k.txt", fileName, 7) == 0, "file name should be 10k.txt"); - if(password.empty()) + if (password.empty()) { err = unzOpenCurrentFile(fp); } @@ -94,20 +103,24 @@ static void unzipTest(Label *label, const std::string &originFile, const std::st err = unzOpenCurrentFilePassword(fp, password.c_str()); } - if(err != UNZ_OK) { + if (err != UNZ_OK) + { label->setString("failed to open zip file"); goto close_and_return; } buff = new char[BUFF_SIZE]; - for(;;) { - int retSize = unzReadCurrentFile(fp, buff, BUFF_SIZE); - if(retSize < 0) { + for (;;) + { + int retSize = unzReadCurrentFile(fp, buff, BUFF_SIZE); + if (retSize < 0) + { hasError = true; break; } - else if(retSize == 0) { + else if (retSize == 0) + { break; } @@ -116,52 +129,59 @@ static void unzipTest(Label *label, const std::string &originFile, const std::st delete[] buff; - if(hasError) { + if (hasError) + { label->setString("unzip error! read error!"); goto close_and_return; } origContent = FileUtils::getInstance()->getDataFromFile(originFile); - if(origContent.getSize() == fileData.size() && - memcmp(origContent.getBytes(), fileData.data(), fileData.size()) == 0) { + if (origContent.getSize() == fileData.size() && + memcmp(origContent.getBytes(), fileData.data(), fileData.size()) == 0) + { label->setString("unzip ok!"); - } else { + } + else + { label->setString("unzip error! data mismatch!"); } close_and_return: unzClose(fp); } - -void UnZipNormalFile::onEnter() { +void UnZipNormalFile::onEnter() +{ TestCase::onEnter(); const auto winSize = Director::getInstance()->getWinSize(); - Label *label = Label::createWithTTF("unziping file", "fonts/Marker Felt.ttf", 23); - label->setPosition(winSize.width/2, winSize.height/2); + Label* label = Label::createWithTTF("unziping file", "fonts/Marker Felt.ttf", 23); + label->setPosition(winSize.width / 2, winSize.height / 2); addChild(label); unzipTest(label, "zip/10k.txt", "10-nopasswd.zip", "zip/10k-nopass.zip"); } -std::string UnZipNormalFile::subtitle() const { +std::string UnZipNormalFile::subtitle() const +{ return "unzip without password"; } -void UnZipWithPassword::onEnter() { +void UnZipWithPassword::onEnter() +{ TestCase::onEnter(); const auto winSize = Director::getInstance()->getWinSize(); - Label *label = Label::createWithTTF("unziping file", "fonts/Marker Felt.ttf", 23); - label->setPosition(winSize.width/2, winSize.height/2); + Label* label = Label::createWithTTF("unziping file", "fonts/Marker Felt.ttf", 23); + label->setPosition(winSize.width / 2, winSize.height / 2); addChild(label); unzipTest(label, "zip/10k.txt", "10.zip", "zip/10k.zip", "123456"); } -std::string UnZipWithPassword::subtitle() const { +std::string UnZipWithPassword::subtitle() const +{ return "unzip with password"; } diff --git a/tests/cpp-tests/Classes/ZipTest/ZipTests.h b/tests/cpp-tests/Classes/ZipTest/ZipTests.h index 623c902f0c8f..7b11581fe4aa 100644 --- a/tests/cpp-tests/Classes/ZipTest/ZipTests.h +++ b/tests/cpp-tests/Classes/ZipTest/ZipTests.h @@ -49,4 +49,3 @@ class UnZipWithPassword : public ZipTest virtual void onEnter() override; virtual std::string subtitle() const override; }; - diff --git a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp index 7a82a9ec4ef9..739a99b30a80 100644 --- a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp +++ b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -45,31 +45,33 @@ void ZwoptexGenericTest::onEnter() SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zwoptex/grossini.plist"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zwoptex/grossini-generic.plist"); - + auto layer1 = LayerColor::create(Color4B(255, 0, 0, 255), 85, 121); - layer1->setPosition(Vec2(s.width/2-80 - (85.0f * 0.5f), s.height/2 - (121.0f * 0.5f))); + layer1->setPosition(Vec2(s.width / 2 - 80 - (85.0f * 0.5f), s.height / 2 - (121.0f * 0.5f))); addChild(layer1); - sprite1 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("grossini_dance_01.png")); - sprite1->setPosition(Vec2( s.width/2-80, s.height/2)); + sprite1 = + Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("grossini_dance_01.png")); + sprite1->setPosition(Vec2(s.width / 2 - 80, s.height / 2)); addChild(sprite1); sprite1->setFlippedX(false); sprite1->setFlippedY(false); auto layer2 = LayerColor::create(Color4B(255, 0, 0, 255), 85, 121); - layer2->setPosition(Vec2(s.width/2+80 - (85.0f * 0.5f), s.height/2 - (121.0f * 0.5f))); + layer2->setPosition(Vec2(s.width / 2 + 80 - (85.0f * 0.5f), s.height / 2 - (121.0f * 0.5f))); addChild(layer2); - - sprite2 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("grossini_dance_generic_01.png")); - sprite2->setPosition(Vec2( s.width/2 + 80, s.height/2)); + + sprite2 = Sprite::createWithSpriteFrame( + SpriteFrameCache::getInstance()->getSpriteFrameByName("grossini_dance_generic_01.png")); + sprite2->setPosition(Vec2(s.width / 2 + 80, s.height / 2)); addChild(sprite2); sprite2->setFlippedX(false); sprite2->setFlippedY(false); schedule(CC_SCHEDULE_SELECTOR(ZwoptexGenericTest::startIn05Secs), 1.0f); - + sprite1->retain(); sprite2->retain(); @@ -89,26 +91,26 @@ void ZwoptexGenericTest::flipSprites(float dt) bool fx = false; bool fy = false; - int i = counter % 4; + int i = counter % 4; - switch ( i ) + switch (i) { - case 0: - fx = false; - fy = false; - break; - case 1: - fx = true; - fy = false; - break; - case 2: - fx = false; - fy = true; - break; - case 3: - fx = true; - fy = true; - break; + case 0: + fx = false; + fy = false; + break; + case 1: + fx = true; + fy = false; + break; + case 2: + fx = false; + fy = true; + break; + case 3: + fx = true; + fy = true; + break; } sprite1->setFlippedX(fx); @@ -116,7 +118,7 @@ void ZwoptexGenericTest::flipSprites(float dt) sprite1->setFlippedY(fy); sprite2->setFlippedY(fy); - if(++spriteFrameIndex > 14) + if (++spriteFrameIndex > 14) { spriteFrameIndex = 1; } diff --git a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.h b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.h index 47f18f374cfa..06e498d23d67 100644 --- a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.h +++ b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -49,9 +49,9 @@ class ZwoptexGenericTest : public ZwoptexTest virtual std::string subtitle() const override; protected: - cocos2d::Sprite* sprite1; - cocos2d::Sprite* sprite2; + cocos2d::Sprite* sprite1; + cocos2d::Sprite* sprite2; int counter; }; -#endif // __ZWOPTEX_TEST_H__ +#endif // __ZWOPTEX_TEST_H__ diff --git a/tests/cpp-tests/Classes/controller.cpp b/tests/cpp-tests/Classes/controller.cpp index 4132ff6a0657..2b4acdb08acc 100644 --- a/tests/cpp-tests/Classes/controller.cpp +++ b/tests/cpp-tests/Classes/controller.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -45,16 +45,15 @@ class RootTests : public TestList { // addTest("Node: Scene3D", [](){return new Scene3DTests(); }); #if defined(CC_PLATFORM_PC) - addTest("ImGuiEXT", []() {return new ImGuiEXTTests(); }); + addTest("ImGuiEXT", []() { return new ImGuiEXTTests(); }); #endif - addTest("Texture2D", []() {return new Texture2DTests(); }); - addTest("ActionManager", [](){return new ActionManagerTests(); }); - addTest("Actions - Basic", [](){ return new ActionsTests(); }); - addTest("Actions - Ease", [](){return new ActionsEaseTests(); }); - addTest("Actions - Progress", [](){return new ActionsProgressTests(); }); + addTest("Texture2D", []() { return new Texture2DTests(); }); + addTest("ActionManager", []() { return new ActionManagerTests(); }); + addTest("Actions - Basic", []() { return new ActionsTests(); }); + addTest("Actions - Ease", []() { return new ActionsEaseTests(); }); + addTest("Actions - Progress", []() { return new ActionsProgressTests(); }); addTest("Audio - NewAudioEngine", []() { return new AudioEngineTests(); }); - addTest("Box2D - Basic", []() { return new Box2DTests(); }); #if defined(CC_PLATFORM_PC) addTest("Box2D - TestBed", []() { return new Box2DTestBedTests(); }); @@ -64,7 +63,7 @@ class RootTests : public TestList addTest("Chipmunk2D - TestBed", []() { return new ChipmunkTestBedTests(); }); #endif addTest("Bugs", []() { return new BugsTests(); }); - addTest("Click and Move", [](){return new ClickAndMoveTest(); }); + addTest("Click and Move", []() { return new ClickAndMoveTest(); }); addTest("Configuration", []() { return new ConfigurationTests(); }); addTest("Console", []() { return new ConsoleTests(); }); addTest("Curl", []() { return new CurlTests(); }); @@ -72,80 +71,78 @@ class RootTests : public TestList addTest("Network Test", []() { return new NetworkTests(); }); addTest("EventDispatcher", []() { return new EventDispatcherTests(); }); addTest("Effects - Advanced", []() { return new EffectAdvanceTests(); }); - addTest("Effects - Basic", [](){return new EffectTests(); }); + addTest("Effects - Basic", []() { return new EffectTests(); }); addTest("Extensions", []() { return new ExtensionsTests(); }); addTest("FileUtils", []() { return new FileUtilsTests(); }); addTest("Fonts", []() { return new FontTests(); }); - addTest("Interval", [](){return new IntervalTests(); }); + addTest("Interval", []() { return new IntervalTests(); }); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) addTest("JNIHelper", []() { return new JNITests(); }); #endif - addTest("Material System", [](){return new MaterialSystemTest(); }); - addTest("Navigation Mesh", [](){return new NavMeshTests(); }); - addTest("Node: BillBoard Test", [](){ return new BillBoardTests(); }); - addTest("Node: Camera3D Test", [](){ return new Camera3DTests(); }); + addTest("Material System", []() { return new MaterialSystemTest(); }); + addTest("Navigation Mesh", []() { return new NavMeshTests(); }); + addTest("Node: BillBoard Test", []() { return new BillBoardTests(); }); + addTest("Node: Camera3D Test", []() { return new Camera3DTests(); }); addTest("Node: Clipping", []() { return new ClippingNodeTests(); }); - addTest("Node: Draw", [](){return new DrawPrimitivesTests(); }); - addTest("Node: Label - New API", [](){return new NewLabelTests(); }); - addTest("Node: Layer", [](){return new LayerTests(); }); - addTest("Node: Light", [](){return new LightTests(); }); - addTest("Node: Menu", [](){return new MenuTests(); }); - addTest("Node: MotionStreak", [](){return new MotionStreakTests(); }); - addTest("Node: Node", [](){return new CocosNodeTests(); }); - addTest("Node: Parallax", [](){return new ParallaxTests(); }); - addTest("Node: Particles", [](){return new ParticleTests(); }); - addTest("Node: Particle3D (PU)", [](){return new Particle3DTests(); }); + addTest("Node: Draw", []() { return new DrawPrimitivesTests(); }); + addTest("Node: Label - New API", []() { return new NewLabelTests(); }); + addTest("Node: Layer", []() { return new LayerTests(); }); + addTest("Node: Light", []() { return new LightTests(); }); + addTest("Node: Menu", []() { return new MenuTests(); }); + addTest("Node: MotionStreak", []() { return new MotionStreakTests(); }); + addTest("Node: Node", []() { return new CocosNodeTests(); }); + addTest("Node: Parallax", []() { return new ParallaxTests(); }); + addTest("Node: Particles", []() { return new ParticleTests(); }); + addTest("Node: Particle3D (PU)", []() { return new Particle3DTests(); }); #if CC_USE_PHYSICS addTest("Node: Physics", []() { return new PhysicsTests(); }); #endif - addTest("Node: Physics3D", []() { return new Physics3DTests(); } ); - addTest("Node: RenderTexture", [](){return new RenderTextureTests(); }); - addTest("Node: Scene", [](){return new SceneTests(); }); - addTest("Node: Spine", [](){return new SpineTests(); }); - addTest("Node: Sprite", [](){return new SpriteTests(); }); - addTest("Node: Sprite3D", [](){ return new Sprite3DTests(); }); - addTest("Node: SpritePolygon", [](){return new SpritePolygonTest(); }); - addTest("Node: Terrain", [](){ return new TerrainTests(); }); - addTest("Node: FastTileMap", [](){return new FastTileMapTests(); }); - addTest("Node: Text Input", [](){return new TextInputTests(); }); - addTest("Node: UI", [](){ return new UITests(); }); + addTest("Node: Physics3D", []() { return new Physics3DTests(); }); + addTest("Node: RenderTexture", []() { return new RenderTextureTests(); }); + addTest("Node: Scene", []() { return new SceneTests(); }); + addTest("Node: Spine", []() { return new SpineTests(); }); + addTest("Node: Sprite", []() { return new SpriteTests(); }); + addTest("Node: Sprite3D", []() { return new Sprite3DTests(); }); + addTest("Node: SpritePolygon", []() { return new SpritePolygonTest(); }); + addTest("Node: Terrain", []() { return new TerrainTests(); }); + addTest("Node: FastTileMap", []() { return new FastTileMapTests(); }); + addTest("Node: Text Input", []() { return new TextInputTests(); }); + addTest("Node: UI", []() { return new UITests(); }); addTest("Mouse", []() { return new MouseTests(); }); addTest("MultiTouch", []() { return new MultiTouchTests(); }); addTest("Renderer", []() { return new NewRendererTests(); }); - addTest("ReleasePool", [](){ return new ReleasePoolTests(); }); - addTest("Rotate World", [](){return new RotateWorldTests(); }); - addTest("Scheduler", [](){return new SchedulerTests(); }); + addTest("ReleasePool", []() { return new ReleasePoolTests(); }); + addTest("Rotate World", []() { return new RotateWorldTests(); }); + addTest("Scheduler", []() { return new SchedulerTests(); }); addTest("Shader - Basic", []() { return new ShaderTests(); }); addTest("Shader - Sprite", []() { return new Shader2Tests(); }); addTest("TextureCache", []() { return new TextureCacheTests(); }); addTest("TexturePacker Encryption", []() { return new TextureAtlasEncryptionTests(); }); - addTest("Touches", [](){return new TouchesTests(); }); - addTest("Transitions", [](){return new TransitionsTests(); }); + addTest("Touches", []() { return new TouchesTests(); }); + addTest("Transitions", []() { return new TransitionsTests(); }); addTest("Unit Test", []() { return new UnitTests(); }); - addTest("Unzip Test", []() {return new ZipTests();}); + addTest("Unzip Test", []() { return new ZipTests(); }); addTest("URL Open Test", []() { return new OpenURLTests(); }); addTest("UserDefault", []() { return new UserDefaultTests(); }); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) addTest("Vibrate", []() { return new VibrateTests(); }); #endif addTest("Zwoptex", []() { return new ZwoptexTests(); }); - addTest("SpriteFrameCache", []() { return new SpriteFrameCacheTests(); }); // TODO -#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) - addTest("Window Test", []() { return new WindowTests(); }); // TODO wrong effect + addTest("SpriteFrameCache", []() { return new SpriteFrameCacheTests(); }); // TODO +#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || \ + CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) + addTest("Window Test", []() { return new WindowTests(); }); // TODO wrong effect #endif } }; -TestController::TestController() -: _stopAutoTest(true) -, _isRunInBackground(false) -, _testSuite(nullptr) +TestController::TestController() : _stopAutoTest(true), _isRunInBackground(false), _testSuite(nullptr) { _rootTestList = new RootTests; _rootTestList->runThisTest(); _director = Director::getInstance(); - _touchListener = EventListenerTouchOneByOne::create(); + _touchListener = EventListenerTouchOneByOne::create(); _touchListener->onTouchBegan = CC_CALLBACK_2(TestController::blockTouchBegan, this); _touchListener->setSwallowTouches(true); @@ -164,7 +161,7 @@ void TestController::startAutoTest() { if (!_autoTestThread.joinable()) { - _stopAutoTest = false; + _stopAutoTest = false; _logIndentation = ""; _autoTestThread = std::thread(&TestController::traverseThreadFunc, this); _autoTestThread.detach(); @@ -174,8 +171,9 @@ void TestController::startAutoTest() void TestController::stopAutoTest() { _stopAutoTest = true; - - if (_autoTestThread.joinable()) { + + if (_autoTestThread.joinable()) + { _sleepCondition.notify_all(); _autoTestThread.join(); } @@ -184,7 +182,7 @@ void TestController::stopAutoTest() void TestController::traverseThreadFunc() { std::mutex sleepMutex; - auto lock = std::unique_lock(sleepMutex); + auto lock = std::unique_lock(sleepMutex); _sleepUniqueLock = &lock; traverseTestList(_rootTestList); _sleepUniqueLock = nullptr; @@ -204,10 +202,11 @@ void TestController::traverseTestList(TestList* testList) logEx("%s%sBegin traverse TestList:%s", LOG_TAG, _logIndentation.c_str(), testList->getTestName().c_str()); auto scheduler = _director->getScheduler(); - int testIndex = 0; + int testIndex = 0; for (auto& callback : testList->_testCallbacks) { - if (_stopAutoTest) break; + if (_stopAutoTest) + break; while (_isRunInBackground) { logEx("_director is paused"); @@ -220,9 +219,7 @@ void TestController::traverseTestList(TestList* testList) test->setTestName(testList->_childTestNames[testIndex++]); if (test->isTestList()) { - scheduler->performFunctionInCocosThread([&](){ - test->runThisTest(); - }); + scheduler->performFunctionInCocosThread([&]() { test->runThisTest(); }); traverseTestList((TestList*)test); } @@ -241,22 +238,20 @@ void TestController::traverseTestList(TestList* testList) { if (!_stopAutoTest) { - //Backs up one level and release TestList object. - scheduler->performFunctionInCocosThread([&](){ - testList->_parentTest->runThisTest(); - }); + // Backs up one level and release TestList object. + scheduler->performFunctionInCocosThread([&]() { testList->_parentTest->runThisTest(); }); _sleepCondition.wait_for(*_sleepUniqueLock, std::chrono::milliseconds(500)); testList->release(); } - + _logIndentation.erase(_logIndentation.rfind(LOG_INDENTATION)); } } void TestController::traverseTestSuite(TestSuite* testSuite) { - auto scheduler = _director->getScheduler(); - int testIndex = 0; + auto scheduler = _director->getScheduler(); + int testIndex = 0; float testCaseDuration = 0.0f; _logIndentation += LOG_INDENTATION; logEx("%s%sBegin traverse TestSuite:%s", LOG_TAG, _logIndentation.c_str(), testSuite->getTestName().c_str()); @@ -268,37 +263,40 @@ void TestController::traverseTestSuite(TestSuite* testSuite) for (auto& callback : testSuite->_testCallbacks) { auto testName = testSuite->_childTestNames[testIndex++]; - - Scene* testScene = nullptr; - TestCase* testCase = nullptr; + + Scene* testScene = nullptr; + TestCase* testCase = nullptr; TransitionScene* transitionScene = nullptr; - if (_stopAutoTest) break; + if (_stopAutoTest) + break; while (_isRunInBackground) { logEx("_director is paused"); _sleepCondition.wait_for(*_sleepUniqueLock, std::chrono::milliseconds(500)); } - //Run test case in the cocos[GL] thread. - scheduler->performFunctionInCocosThread([&, logIndentation, testName](){ - if (_stopAutoTest) return; + // Run test case in the cocos[GL] thread. + scheduler->performFunctionInCocosThread([&, logIndentation, testName]() { + if (_stopAutoTest) + return; logEx("%s%sRun test:%s.", LOG_TAG, logIndentation.c_str(), testName.c_str()); auto scene = callback(); - if (_stopAutoTest) return; + if (_stopAutoTest) + return; if (scene) { transitionScene = dynamic_cast(scene); if (transitionScene) { - testCase = (TestCase*)transitionScene->getInScene(); + testCase = (TestCase*)transitionScene->getInScene(); testCaseDuration = transitionScene->getDuration() + 0.5f; } else { - testCase = (TestCase*)scene; + testCase = (TestCase*)scene; testCaseDuration = testCase->getDuration(); } testSuite->_currTestIndex++; @@ -310,9 +308,10 @@ void TestController::traverseTestSuite(TestSuite* testSuite) } }); - if (_stopAutoTest) break; + if (_stopAutoTest) + break; - //Wait for the test case be created. + // Wait for the test case be created. float waitTime = 0.0f; while (!testScene && !_stopAutoTest) { @@ -330,9 +329,10 @@ void TestController::traverseTestSuite(TestSuite* testSuite) } } - if (_stopAutoTest) break; + if (_stopAutoTest) + break; - //Wait for test completed. + // Wait for test completed. _sleepCondition.wait_for(*_sleepUniqueLock, std::chrono::milliseconds(int(1000 * testCaseDuration))); if (transitionScene == nullptr) @@ -356,7 +356,7 @@ void TestController::traverseTestSuite(TestSuite* testSuite) if (!_stopAutoTest) { - //Check the result of test. + // Check the result of test. checkTest(testCase); } } @@ -364,11 +364,9 @@ void TestController::traverseTestSuite(TestSuite* testSuite) if (!_stopAutoTest) { - //Backs up one level and release TestSuite object. + // Backs up one level and release TestSuite object. auto parentTest = testSuite->_parentTest; - scheduler->performFunctionInCocosThread([&](){ - parentTest->runThisTest(); - }); + scheduler->performFunctionInCocosThread([&]() { parentTest->runThisTest(); }); _sleepCondition.wait_for(*_sleepUniqueLock, std::chrono::milliseconds(1000)); testSuite->release(); @@ -434,7 +432,7 @@ void TestController::onEnterForeground() _isRunInBackground = false; } -void TestController::logEx(const char * format, ...) +void TestController::logEx(const char* format, ...) { char buff[1024]; @@ -447,7 +445,7 @@ void TestController::logEx(const char * format, ...) __android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", "%s", buff); #elif CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - WCHAR wszBuf[1024] = { 0 }; + WCHAR wszBuf[1024] = {0}; MultiByteToWideChar(CP_UTF8, 0, buff, -1, wszBuf, sizeof(wszBuf)); OutputDebugStringW(wszBuf); @@ -492,7 +490,7 @@ bool TestController::blockTouchBegan(Touch* touch, Event* event) //================================================================================================== #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 -#include +# include static long __stdcall windowExceptionFilter(_EXCEPTION_POINTERS* excp) { @@ -513,30 +511,18 @@ static void disableCrashCatch() SetUnhandledExceptionFilter(UnhandledExceptionFilter); } -#elif CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID +#elif CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || \ + CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID -#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID +# if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID static int s_fatal_signals[] = { - SIGILL, - SIGABRT, - SIGBUS, - SIGFPE, - SIGSEGV, - SIGSTKFLT, - SIGPIPE, + SIGILL, SIGABRT, SIGBUS, SIGFPE, SIGSEGV, SIGSTKFLT, SIGPIPE, }; -#else +# else static int s_fatal_signals[] = { - SIGABRT, - SIGBUS, - SIGFPE, - SIGILL, - SIGSEGV, - SIGTRAP, - SIGTERM, - SIGKILL, + SIGABRT, SIGBUS, SIGFPE, SIGILL, SIGSEGV, SIGTRAP, SIGTERM, SIGKILL, }; -#endif +# endif static void signalHandler(int sig) { @@ -564,12 +550,8 @@ static void disableCrashCatch() #else -static void initCrashCatch() -{ -} +static void initCrashCatch() {} -static void disableCrashCatch() -{ -} +static void disableCrashCatch() {} #endif diff --git a/tests/cpp-tests/Classes/controller.h b/tests/cpp-tests/Classes/controller.h index 1d9028996a1d..37aa88cdeed9 100644 --- a/tests/cpp-tests/Classes/controller.h +++ b/tests/cpp-tests/Classes/controller.h @@ -37,11 +37,11 @@ class TestCase; namespace cocos2d { - class Director; - class Touch; - class Event; - class EventListenerTouchOneByOne; -} +class Director; +class Touch; +class Event; +class EventListenerTouchOneByOne; +} // namespace cocos2d class TestController { @@ -64,6 +64,7 @@ class TestController void setCurrTestSuite(TestSuite* testSuite) { _testSuite = testSuite; } TestSuite* getCurrTestSuite() { return _testSuite; } bool isAutoTestRunning() const { return !_stopAutoTest; } + private: TestController(); @@ -73,7 +74,7 @@ class TestController void traverseTestSuite(TestSuite* testSuite); bool checkTest(TestCase* testCase); - void logEx(const char * format, ...); + void logEx(const char* format, ...); std::atomic _stopAutoTest; bool _isRunInBackground; diff --git a/tests/cpp-tests/Classes/testBasic.h b/tests/cpp-tests/Classes/testBasic.h index 000123162fe5..1907aa629d62 100644 --- a/tests/cpp-tests/Classes/testBasic.h +++ b/tests/cpp-tests/Classes/testBasic.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,13 +30,13 @@ #include "VisibleRect.h" /** -* TestScene is retained for compatibility with older versions. -* @warning It should soon be removed. -*/ + * TestScene is retained for compatibility with older versions. + * @warning It should soon be removed. + */ class TestScene : public cocos2d::Scene { -public: - TestScene(bool bPortrait = false, bool physics = false){} +public: + TestScene(bool bPortrait = false, bool physics = false) {} virtual void onEnter() override {} virtual void runThisTest() = 0; @@ -44,7 +44,12 @@ class TestScene : public cocos2d::Scene // C++ 11 -#define CL(__className__) [](){ return __className__::create();} -#define CLN(__className__) [](){ auto obj = new __className__(); obj->autorelease(); return obj; } +#define CL(__className__) []() { return __className__::create(); } +#define CLN(__className__) \ + []() { \ + auto obj = new __className__(); \ + obj->autorelease(); \ + return obj; \ + } #endif diff --git a/tests/cpp-tests/Classes/testResource.h b/tests/cpp-tests/Classes/testResource.h index 8e9a10c5e627..1e1454f0239a 100644 --- a/tests/cpp-tests/Classes/testResource.h +++ b/tests/cpp-tests/Classes/testResource.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,48 +25,48 @@ #ifndef _TEST_RESOURCE_H_ #define _TEST_RESOURCE_H_ -static const char s_pathGrossini[] = "Images/grossini.png"; -static const char s_pathSister1[] = "Images/grossinis_sister1.png"; -static const char s_pathSister2[] = "Images/grossinis_sister2.png"; -static const char s_pathB1[] = "Images/b1.png"; -static const char s_pathB2[] = "Images/b2.png"; -static const char s_pathR1[] = "Images/r1.png"; -static const char s_pathR2[] = "Images/r2.png"; -static const char s_pathF1[] = "Images/f1.png"; -static const char s_pathF2[] = "Images/f2.png"; -static const char s_pathBlock[] = "Images/blocks.png"; -static const char s_back[] = "Images/background.png"; -static const char s_back1[] = "Images/background1.png"; -static const char s_back2[] = "Images/background2.png"; -static const char s_back3[] = "Images/background3.png"; -static const char s_stars1[] = "Images/stars.png"; -static const char s_stars2[] = "Images/stars2.png"; -static const char s_fire[] = "Images/fire.png"; -static const char s_snow[] = "Images/snow.png"; -static const char s_streak[] = "Images/streak.png"; -static const char s_PlayNormal[] = "Images/btn-play-normal.png"; -static const char s_PlaySelect[] = "Images/btn-play-selected.png"; -static const char s_AboutNormal[] = "Images/btn-about-normal.png"; -static const char s_AboutSelect[] = "Images/btn-about-selected.png"; -static const char s_HighNormal[] = "Images/btn-highscores-normal.png"; -static const char s_HighSelect[] = "Images/btn-highscores-selected.png"; -static const char s_Ball[] = "Images/ball.png"; -static const char s_Paddle[] = "Images/paddle.png"; -static const char s_pathClose[] = "Images/close.png"; -static const char s_MenuItem[] = "Images/menuitemsprite.png"; -static const char s_SendScore[] = "Images/SendScoreButton.png"; -static const char s_PressSendScore[] = "Images/SendScoreButtonPressed.png"; -static const char s_Power[] = "Images/powered.png"; -static const char s_AtlasTest[] = "Images/atlastest.png"; +static const char s_pathGrossini[] = "Images/grossini.png"; +static const char s_pathSister1[] = "Images/grossinis_sister1.png"; +static const char s_pathSister2[] = "Images/grossinis_sister2.png"; +static const char s_pathB1[] = "Images/b1.png"; +static const char s_pathB2[] = "Images/b2.png"; +static const char s_pathR1[] = "Images/r1.png"; +static const char s_pathR2[] = "Images/r2.png"; +static const char s_pathF1[] = "Images/f1.png"; +static const char s_pathF2[] = "Images/f2.png"; +static const char s_pathBlock[] = "Images/blocks.png"; +static const char s_back[] = "Images/background.png"; +static const char s_back1[] = "Images/background1.png"; +static const char s_back2[] = "Images/background2.png"; +static const char s_back3[] = "Images/background3.png"; +static const char s_stars1[] = "Images/stars.png"; +static const char s_stars2[] = "Images/stars2.png"; +static const char s_fire[] = "Images/fire.png"; +static const char s_snow[] = "Images/snow.png"; +static const char s_streak[] = "Images/streak.png"; +static const char s_PlayNormal[] = "Images/btn-play-normal.png"; +static const char s_PlaySelect[] = "Images/btn-play-selected.png"; +static const char s_AboutNormal[] = "Images/btn-about-normal.png"; +static const char s_AboutSelect[] = "Images/btn-about-selected.png"; +static const char s_HighNormal[] = "Images/btn-highscores-normal.png"; +static const char s_HighSelect[] = "Images/btn-highscores-selected.png"; +static const char s_Ball[] = "Images/ball.png"; +static const char s_Paddle[] = "Images/paddle.png"; +static const char s_pathClose[] = "Images/close.png"; +static const char s_MenuItem[] = "Images/menuitemsprite.png"; +static const char s_SendScore[] = "Images/SendScoreButton.png"; +static const char s_PressSendScore[] = "Images/SendScoreButtonPressed.png"; +static const char s_Power[] = "Images/powered.png"; +static const char s_AtlasTest[] = "Images/atlastest.png"; // tilemaps resource -static const char s_TilesPng[] = "TileMaps/tiles.png"; -static const char s_LevelMapTga[] = "TileMaps/levelmap.tga"; +static const char s_TilesPng[] = "TileMaps/tiles.png"; +static const char s_LevelMapTga[] = "TileMaps/levelmap.tga"; // Scale9Sprite resource -static const char s_s9s_blocks9[] = "Images/blocks9ss.png"; -static const char s_s9s_blocks9_plist[] = "Images/blocks9ss.plist"; -static const char s_s9s_ui[] = "Images/ui.png"; -static const char s_s9s_ui_plist[] = "Images/ui.plist"; +static const char s_s9s_blocks9[] = "Images/blocks9ss.png"; +static const char s_s9s_blocks9_plist[] = "Images/blocks9ss.plist"; +static const char s_s9s_ui[] = "Images/ui.png"; +static const char s_s9s_ui_plist[] = "Images/ui.plist"; #endif diff --git a/tests/cpp-tests/Classes/tests.h b/tests/cpp-tests/Classes/tests.h index bb05d67b0948..e54046b6e986 100644 --- a/tests/cpp-tests/Classes/tests.h +++ b/tests/cpp-tests/Classes/tests.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,33 +25,32 @@ #ifndef _TESTS_H_ #define _TESTS_H_ - #include "Box2DTest/Box2dTest.h" #include "Box2DTestBed/Box2DTestBed.h" - #include "ChipmunkTest/ChipmunkTest.h" #if defined(CC_PLATFORM_PC) -#include "ChipmunkTestBed/ChipmunkTestBed.h" +# include "ChipmunkTestBed/ChipmunkTestBed.h" #endif #if (CC_TARGET_PLATFORM != CC_PLATFORM_MARMALADE) -#include "ClippingNodeTest/ClippingNodeTest.h" +# include "ClippingNodeTest/ClippingNodeTest.h" #endif #include "NewAudioEngineTest/NewAudioEngineTest.h" #if (CC_TARGET_PLATFORM != CC_PLATFORM_EMSCRIPEN) -#if (CC_TARGET_PLATFORM != CC_PLATFORM_MARMALADE) +# if (CC_TARGET_PLATFORM != CC_PLATFORM_MARMALADE) // bada don't support libcurl -#if (CC_TARGET_PLATFORM != CC_PLATFORM_BADA) -#include "CurlTest/CurlTest.h" -#endif -#endif +# if (CC_TARGET_PLATFORM != CC_PLATFORM_BADA) +# include "CurlTest/CurlTest.h" +# endif +# endif #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#include "JNITest/JNITest.h" +# include "JNITest/JNITest.h" #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) -#include "WindowTest/WindowTest.h" +#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || \ + CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) +# include "WindowTest/WindowTest.h" #endif // sort them alphabetically. thanks @@ -121,6 +120,6 @@ #include "SpriteFrameCacheTest/SpriteFrameCacheTest.h" #include "ZipTest/ZipTests.h" #if defined(CC_PLATFORM_PC) -#include "ImGuiEXTTest/ImGuiEXTTest.h" +# include "ImGuiEXTTest/ImGuiEXTTest.h" #endif #endif diff --git a/tests/cpp-tests/proj.android/app/jni/main.cpp b/tests/cpp-tests/proj.android/app/jni/main.cpp index 6cab47cbb306..ccd4757e4c78 100644 --- a/tests/cpp-tests/proj.android/app/jni/main.cpp +++ b/tests/cpp-tests/proj.android/app/jni/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,14 +29,16 @@ #include "AppDelegate.h" -#define LOG_TAG "main" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -namespace { +namespace +{ std::unique_ptr appDelegate; } -void cocos_android_app_init(JNIEnv* env) { +void cocos_android_app_init(JNIEnv* env) +{ LOGD("cocos_android_app_init"); appDelegate.reset(new AppDelegate()); } diff --git a/tests/cpp-tests/proj.ios/Classes/RootViewController.h b/tests/cpp-tests/proj.ios/Classes/RootViewController.h index b291b78a03d3..e172880c2199 100644 --- a/tests/cpp-tests/proj.ios/Classes/RootViewController.h +++ b/tests/cpp-tests/proj.ios/Classes/RootViewController.h @@ -26,9 +26,7 @@ #import - @interface RootViewController : UIViewController { - } - (BOOL)prefersStatusBarHidden; @end diff --git a/tests/cpp-tests/proj.ios/Classes/RootViewController.mm b/tests/cpp-tests/proj.ios/Classes/RootViewController.mm index 3f484988f3a8..28d2cca40a6d 100644 --- a/tests/cpp-tests/proj.ios/Classes/RootViewController.mm +++ b/tests/cpp-tests/proj.ios/Classes/RootViewController.mm @@ -26,11 +26,11 @@ of this software and associated documentation files (the "Software"), to deal #import "RootViewController.h" - @implementation RootViewController /* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. + // The designated initializer. Override if you create the controller programmatically and want to perform +customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization @@ -50,53 +50,58 @@ - (void)loadView { - (void)viewDidLoad { [super viewDidLoad]; } - + */ // Override to allow orientations other than the default portrait orientation. // This method is deprecated on ios6 -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return UIInterfaceOrientationIsLandscape( interfaceOrientation ); +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return UIInterfaceOrientationIsLandscape(interfaceOrientation); } // For ios6, use supportedInterfaceOrientations & shouldAutorotate instead -- (NSUInteger) supportedInterfaceOrientations{ +- (NSUInteger)supportedInterfaceOrientations +{ #ifdef __IPHONE_6_0 return UIInterfaceOrientationMaskAllButUpsideDown; #endif } -- (BOOL) shouldAutorotate { +- (BOOL)shouldAutorotate +{ return YES; } -//fix not hide status on ios7 +// fix not hide status on ios7 - (BOOL)prefersStatusBarHidden { return YES; } // Controls the application's preferred home indicator auto-hiding when this view controller is shown. -- (BOOL)prefersHomeIndicatorAutoHidden { +- (BOOL)prefersHomeIndicatorAutoHidden +{ return YES; } -- (void)didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning +{ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - + // Release any cached data, images, etc that aren't in use. } -- (void)viewDidUnload { +- (void)viewDidUnload +{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - -- (void)dealloc { +- (void)dealloc +{ [super dealloc]; } - @end diff --git a/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.h b/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.h index da488ccd7290..c679dbf8ea38 100644 --- a/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.h +++ b/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.h @@ -29,9 +29,8 @@ @class RootViewController; @interface AppController : NSObject { - UIWindow *window; - RootViewController *viewController; + UIWindow* window; + RootViewController* viewController; } @end - diff --git a/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.mm b/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.mm index 061027154bcf..1eefe497729c 100644 --- a/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.mm +++ b/tests/cpp-tests/proj.ios/Classes/testsAppDelegate.mm @@ -39,26 +39,26 @@ @implementation AppController // cocos2d application instance static AppDelegate s_sharedApplication; -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { - cocos2d::Application *app = cocos2d::Application::getInstance(); + cocos2d::Application* app = cocos2d::Application::getInstance(); app->initGLContextAttrs(); cocos2d::GLViewImpl::convertAttrs(); // Override point for customization after application launch. // Add the view controller's view to the window and display. - window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; + window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Init the CCEAGLView - CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds] - pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat - depthFormat: cocos2d::GLViewImpl::_depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO - numberOfSamples: cocos2d::GLViewImpl::_multisamplingCount ]; + CCEAGLView* eaglView = [CCEAGLView viewWithFrame:[window bounds] + pixelFormat:(NSString*)cocos2d::GLViewImpl::_pixelFormat + depthFormat:cocos2d::GLViewImpl::_depthFormat + preserveBackbuffer:NO + sharegroup:nil + multiSampling:cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO + numberOfSamples:cocos2d::GLViewImpl::_multisamplingCount]; #if !defined(CC_TARGET_OS_TVOS) [eaglView setMultipleTouchEnabled:YES]; @@ -72,25 +72,25 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( viewController.view = eaglView; // Set RootViewController to window - if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) + if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 - [window addSubview: viewController.view]; + [window addSubview:viewController.view]; } else { // use this method on ios6 [window setRootViewController:viewController]; } - + [window makeKeyAndVisible]; #if !defined(CC_TARGET_OS_TVOS) [viewController prefersStatusBarHidden]; #endif - + // IMPORTANT: Setting the GLView should be done after creating the RootViewController - cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView); + cocos2d::GLView* glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView); cocos2d::Director::getInstance()->setOpenGLView(glview); app->run(); @@ -98,61 +98,70 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( return YES; } - -- (void)applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication*)application +{ /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + Sent when the application is about to move from active to inactive state. This can occur for certain types of + temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and + it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and + throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ - //We don't need to call this method any more. It will interrupt user defined game pause&resume logic -// cocos2d::Director::getInstance()->pause(); + // We don't need to call this method any more. It will interrupt user defined game pause&resume logic + // cocos2d::Director::getInstance()->pause(); } -- (void)applicationDidBecomeActive:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication*)application +{ /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was + previously in the background, optionally refresh the user interface. */ - //We don't need to call this method any more. It will interrupt user defined game pause&resume logic -// cocos2d::Director::getInstance()->resume(); + // We don't need to call this method any more. It will interrupt user defined game pause&resume logic + // cocos2d::Director::getInstance()->resume(); } -- (void)applicationDidEnterBackground:(UIApplication *)application { +- (void)applicationDidEnterBackground:(UIApplication*)application +{ /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. + Use this method to release shared resources, save user data, invalidate timers, and store enough application state + information to restore your application to its current state in case it is terminated later. If your application + supports background execution, called instead of applicationWillTerminate: when the user quits. */ cocos2d::Application::getInstance()->applicationDidEnterBackground(); } -- (void)applicationWillEnterForeground:(UIApplication *)application { +- (void)applicationWillEnterForeground:(UIApplication*)application +{ /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. + Called as part of transition from the background to the inactive state: here you can undo many of the changes made + on entering the background. */ cocos2d::Application::getInstance()->applicationWillEnterForeground(); } -- (void)applicationWillTerminate:(UIApplication *)application { +- (void)applicationWillTerminate:(UIApplication*)application +{ /* Called when the application is about to terminate. See also applicationDidEnterBackground:. */ } - #pragma mark - #pragma mark Memory management -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { +- (void)applicationDidReceiveMemoryWarning:(UIApplication*)application +{ /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. + Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) + later. */ } - -- (void)dealloc { +- (void)dealloc +{ [window release]; [super dealloc]; } - @end diff --git a/tests/cpp-tests/proj.linux/main.cpp b/tests/cpp-tests/proj.linux/main.cpp index 042c94fef689..c03ce74184e9 100644 --- a/tests/cpp-tests/proj.linux/main.cpp +++ b/tests/cpp-tests/proj.linux/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ USING_NS_CC; -int main(int argc, char **argv) +int main(int argc, char** argv) { // create the application instance AppDelegate app; diff --git a/tests/cpp-tests/proj.mac/main.cpp b/tests/cpp-tests/proj.mac/main.cpp index 832be47ee5fb..1fdbdb2b12af 100644 --- a/tests/cpp-tests/proj.mac/main.cpp +++ b/tests/cpp-tests/proj.mac/main.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2010 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,7 +26,7 @@ USING_NS_CC; -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { AppDelegate app; return Application::getInstance()->run(); diff --git a/tests/cpp-tests/proj.win32/main.cpp b/tests/cpp-tests/proj.win32/main.cpp index 208289a61953..887d55ca1ff7 100644 --- a/tests/cpp-tests/proj.win32/main.cpp +++ b/tests/cpp-tests/proj.win32/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,10 +27,7 @@ USING_NS_CC; -int WINAPI _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) +int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); diff --git a/tests/cpp-tests/proj.win32/main.h b/tests/cpp-tests/proj.win32/main.h index 13b6f36fd230..64d684e652a4 100644 --- a/tests/cpp-tests/proj.win32/main.h +++ b/tests/cpp-tests/proj.win32/main.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,7 +25,7 @@ #ifndef __MAIN_H__ #define __MAIN_H__ -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include @@ -34,4 +34,4 @@ // C RunTime Header Files #include "platform/CCStdC.h" -#endif // __MAIN_H__ +#endif // __MAIN_H__ diff --git a/tests/lua-tests/project/Classes/AppDelegate.cpp b/tests/lua-tests/project/Classes/AppDelegate.cpp index 5e294048da8e..b2239ed652e0 100644 --- a/tests/lua-tests/project/Classes/AppDelegate.cpp +++ b/tests/lua-tests/project/Classes/AppDelegate.cpp @@ -3,17 +3,17 @@ Copyright (c) 2021 Bytedance Inc. https://adxe.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,13 +32,9 @@ USING_NS_CC; -AppDelegate::AppDelegate() -{ -} +AppDelegate::AppDelegate() {} -AppDelegate::~AppDelegate() -{ -} +AppDelegate::~AppDelegate() {} void AppDelegate::initGLContextAttrs() { @@ -53,16 +49,16 @@ bool AppDelegate::applicationDidFinishLaunching() LuaEngine* pEngine = LuaEngine::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(pEngine); - LuaStack* stack = pEngine->getLuaStack(); - lua_State* L = stack->getLuaState(); - + lua_State* L = stack->getLuaState(); + lua_module_register(L); lua_getglobal(L, "_G"); - if (lua_istable(L,-1))//stack:...,_G, + if (lua_istable(L, -1)) // stack:...,_G, { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID ||CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || \ + CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) register_assetsmanager_test_sample(L); #endif register_test_binding(L); diff --git a/tests/lua-tests/project/Classes/AppDelegate.h b/tests/lua-tests/project/Classes/AppDelegate.h index fd8b0d1e48ba..0776bf01ae66 100644 --- a/tests/lua-tests/project/Classes/AppDelegate.h +++ b/tests/lua-tests/project/Classes/AppDelegate.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ Private inheritance here hides part of interface from Director. */ -class AppDelegate : private cocos2d::Application +class AppDelegate : private cocos2d::Application { public: AppDelegate(); @@ -60,4 +60,3 @@ class AppDelegate : private cocos2d::Application }; #endif // __APP_DELEGATE_H__ - diff --git a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.cpp b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.cpp index 7f4bb8f7ad89..2c4f6d1c525b 100644 --- a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.cpp +++ b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -36,31 +36,30 @@ extern "C" { #include "extensions/cocos-ext.h" #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) -#include -#include +# include +# include #endif USING_NS_CC; USING_NS_CC_EXT; - static int lua_cocos2dx_createDownloadDir(lua_State* L) { if (nullptr == L) return 0; - + int argc = lua_gettop(L); if (0 == argc) { std::string pathToSave = FileUtils::getInstance()->getWritablePath(); pathToSave += "tmpdir"; - + #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) - DIR *pDir = NULL; - - pDir = opendir (pathToSave.c_str()); - if (! pDir) + DIR* pDir = NULL; + + pDir = opendir(pathToSave.c_str()); + if (!pDir) { mkdir(pathToSave.c_str(), S_IRWXU | S_IRWXG | S_IRWXO); } @@ -73,7 +72,7 @@ static int lua_cocos2dx_createDownloadDir(lua_State* L) tolua_pushstring(L, pathToSave.c_str()); return 1; } - + CCLOG("'createDownloadDir' function wrong number of arguments: %d, was expecting %d\n", argc, 0); return 0; } @@ -82,17 +81,18 @@ static int lua_cocos2dx_deleteDownloadDir(lua_State* L) { if (nullptr == L) return 0; - + int argc = lua_gettop(L); - + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - + if (1 == argc) { #if COCOS2D_DEBUG >= 1 - if (!tolua_isstring(L, 1, 0, &tolua_err)) goto tolua_lerror; + if (!tolua_isstring(L, 1, 0, &tolua_err)) + goto tolua_lerror; #endif std::string pathToSave = tolua_tostring(L, 1, ""); @@ -105,13 +105,13 @@ static int lua_cocos2dx_deleteDownloadDir(lua_State* L) FileUtils::getInstance()->removeDirectory(pathToSave); return 0; } - + CCLOG("'resetDownloadDir' function wrong number of arguments: %d, was expecting %d\n", argc, 1); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'resetDownloadDir'.",&tolua_err); + tolua_error(L, "#ferror in function 'resetDownloadDir'.", &tolua_err); return 0; #endif } @@ -120,23 +120,21 @@ static int lua_cocos2dx_addSearchPath(lua_State* L) { if (nullptr == L) return 0; - + int argc = lua_gettop(L); - + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + if (2 == argc) { #if COCOS2D_DEBUG >= 1 - if (!tolua_isstring(L, 1, 0, &tolua_err) || - !tolua_isboolean(L, 2, 0, &tolua_err)) + if (!tolua_isstring(L, 1, 0, &tolua_err) || !tolua_isboolean(L, 2, 0, &tolua_err)) goto tolua_lerror; #endif std::string pathToSave = tolua_tostring(L, 1, ""); - bool before = tolua_toboolean(L, 2, 0); + bool before = tolua_toboolean(L, 2, 0); FileUtils::getInstance()->addSearchPath(pathToSave, before); return 0; } @@ -145,7 +143,7 @@ static int lua_cocos2dx_addSearchPath(lua_State* L) #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'addSearchPath'.",&tolua_err); + tolua_error(L, "#ferror in function 'addSearchPath'.", &tolua_err); return 0; #endif } diff --git a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h index 37f711ae98c4..22ddaf5822ca 100644 --- a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h +++ b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,8 +34,9 @@ extern "C" { #endif /** - * The apis which are bound in this file are temporary for the assetsmanager test sample.After the completion of some systems like fileutils,these apis will be deprecated + * The apis which are bound in this file are temporary for the assetsmanager test sample.After the completion of some + * systems like fileutils,these apis will be deprecated */ TOLUA_API int register_assetsmanager_test_sample(lua_State* tolua_S); -#endif // #ifndef COCOS2DX_COCOS_SCRIPTING_LUA_BINDINGS_LUA_ASSETSMANAGER_TEST_SAMPLE_H +#endif // #ifndef COCOS2DX_COCOS_SCRIPTING_LUA_BINDINGS_LUA_ASSETSMANAGER_TEST_SAMPLE_H diff --git a/tests/lua-tests/project/Classes/lua_test_bindings.cpp b/tests/lua-tests/project/Classes/lua_test_bindings.cpp index e3eafa0a5fd8..54d6cf6908f5 100644 --- a/tests/lua-tests/project/Classes/lua_test_bindings.cpp +++ b/tests/lua-tests/project/Classes/lua_test_bindings.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,17 +31,17 @@ NS_CC_BEGIN /** * Copy DrawNode for 3D geometry drawing. */ -class DrawNode3D: public Node +class DrawNode3D : public Node { public: /** creates and initialize a DrawNode3D node */ static DrawNode3D* create(); - + /** * Draw 3D Line */ - void drawLine(const Vec3 &from, const Vec3 &to, const Color4F &color); - + void drawLine(const Vec3& from, const Vec3& to, const Color4F& color); + /** * Draw 3D cube * @param point to a vertex array who has 8 element. @@ -55,17 +55,17 @@ class DrawNode3D: public Node * vertices[7]:Left-top-back. * @param color */ - void drawCube(Vec3* vertices, const Color4F &color); - + void drawCube(Vec3* vertices, const Color4F& color); + /** Clear the geometry in the node's buffer. */ void clear(); - + /** * @js NA * @lua NA */ const BlendFunc& getBlendFunc() const; - + /** * @code * When this function bound into js or lua,the parameter will be changed @@ -73,48 +73,41 @@ class DrawNode3D: public Node * @endcode * @lua NA */ - void setBlendFunc(const BlendFunc &blendFunc); - - + void setBlendFunc(const BlendFunc& blendFunc); + // Overrides - virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override; - -CC_CONSTRUCTOR_ACCESS: - DrawNode3D(); + virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override; + + CC_CONSTRUCTOR_ACCESS : DrawNode3D(); virtual ~DrawNode3D(); virtual bool init() override; - + protected: struct V3F_C4B { - Vec3 vertices; - Color4B colors; + Vec3 vertices; + Color4B colors; }; void ensureCapacity(int count); - - std::vector _buffer; - - BlendFunc _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; - CustomCommand _customCommand; - backend::ProgramState * _programState = nullptr; - bool _dirty = false; - backend::UniformLocation _locMVPMatrix; - + + std::vector _buffer; + + BlendFunc _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + CustomCommand _customCommand; + backend::ProgramState* _programState = nullptr; + bool _dirty = false; + backend::UniformLocation _locMVPMatrix; + private: CC_DISALLOW_COPY_AND_ASSIGN(DrawNode3D); - bool _rendererDepthTestEnabled = false; + bool _rendererDepthTestEnabled = false; void onBeforeDraw(); void onAfterDraw(); }; - - - -DrawNode3D::DrawNode3D() -{ -} +DrawNode3D::DrawNode3D() {} DrawNode3D::~DrawNode3D() { @@ -132,26 +125,26 @@ DrawNode3D* DrawNode3D::create() { CC_SAFE_DELETE(ret); } - + return ret; } void DrawNode3D::ensureCapacity(int count) { - CCASSERT(count>=0, "capacity must be >= 0"); - - if(_buffer.size() + count > _buffer.capacity()) + CCASSERT(count >= 0, "capacity must be >= 0"); + + if (_buffer.size() + count > _buffer.capacity()) { - auto newSize = MAX(_buffer.capacity() + (_buffer.capacity() >> 1) , count + _buffer.size()); + auto newSize = MAX(_buffer.capacity() + (_buffer.capacity() >> 1), count + _buffer.size()); _buffer.reserve(newSize); - } + } } bool DrawNode3D::init() { - _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; - auto program = backend::Program::getBuiltinProgram(backend::ProgramType::LINE_COLOR_3D); + _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + auto program = backend::Program::getBuiltinProgram(backend::ProgramType::LINE_COLOR_3D); _programState = new backend::ProgramState(program); _locMVPMatrix = _programState->getUniformLocation("u_MVPMatrix"); @@ -162,10 +155,11 @@ bool DrawNode3D::init() _customCommand.setDrawType(CustomCommand::DrawType::ARRAY); _customCommand.setPrimitiveType(CustomCommand::PrimitiveType::LINE); - auto layout = _programState->getVertexLayout(); - const auto &attributeInfo = _programState->getProgram()->getActiveAttributes(); - auto iter = attributeInfo.find("a_position"); - if (iter != attributeInfo.end()) { + auto layout = _programState->getVertexLayout(); + const auto& attributeInfo = _programState->getProgram()->getActiveAttributes(); + auto iter = attributeInfo.find("a_position"); + if (iter != attributeInfo.end()) + { layout->setAttribute(iter->first, iter->second.location, backend::VertexFormat::FLOAT3, 0, false); } iter = attributeInfo.find("a_color"); @@ -175,7 +169,8 @@ bool DrawNode3D::init() } layout->setLayout(sizeof(V3F_C4B)); - _customCommand.createVertexBuffer(sizeof(V3F_C4B), INITIAL_VERTEX_BUFFER_LENGTH, CustomCommand::BufferUsage::DYNAMIC); + _customCommand.createVertexBuffer(sizeof(V3F_C4B), INITIAL_VERTEX_BUFFER_LENGTH, + CustomCommand::BufferUsage::DYNAMIC); _customCommand.getPipelineDescriptor().programState = _programState; @@ -186,7 +181,7 @@ bool DrawNode3D::init() #if CC_ENABLE_CACHE_TEXTURE_DATA // Need to listen the event only when not use batchnode, because it will use VBO - auto listener = EventListenerCustom::create(EVENT_COME_TO_FOREGROUND, [this](EventCustom* event){ + auto listener = EventListenerCustom::create(EVENT_COME_TO_FOREGROUND, [this](EventCustom* event) { /** listen the event that coming to foreground on Android */ this->init(); }); @@ -197,17 +192,18 @@ bool DrawNode3D::init() return true; } -void DrawNode3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) +void DrawNode3D::draw(Renderer* renderer, const Mat4& transform, uint32_t flags) { _customCommand.init(_globalZOrder); - //update mvp matrix - auto &matrixP = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); - auto mvp = matrixP * transform; + // update mvp matrix + auto& matrixP = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); + auto mvp = matrixP * transform; _programState->setUniform(_locMVPMatrix, mvp.m, sizeof(mvp.m)); - if (_customCommand.getVertexCapacity() < _buffer.size()) { + if (_customCommand.getVertexCapacity() < _buffer.size()) + { auto s = _buffer.size(); - _customCommand.createVertexBuffer(sizeof(V3F_C4B), s + s/2, CustomCommand::BufferUsage::DYNAMIC); + _customCommand.createVertexBuffer(sizeof(V3F_C4B), s + s / 2, CustomCommand::BufferUsage::DYNAMIC); } if (_dirty && !_buffer.empty()) @@ -225,34 +221,36 @@ void DrawNode3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) } } - -void DrawNode3D::drawLine(const Vec3 &from, const Vec3 &to, const Color4F &color) +void DrawNode3D::drawLine(const Vec3& from, const Vec3& to, const Color4F& color) { unsigned int vertex_count = 2; ensureCapacity(vertex_count); - + Color4B col = Color4B(color); - V3F_C4B a = {Vec3(from.x, from.y, from.z), col}; - V3F_C4B b = {Vec3(to.x, to.y, to.z), col, }; + V3F_C4B a = {Vec3(from.x, from.y, from.z), col}; + V3F_C4B b = { + Vec3(to.x, to.y, to.z), + col, + }; _buffer.emplace_back(a); _buffer.emplace_back(b); _dirty = true; } -void DrawNode3D::drawCube(Vec3* vertices, const Color4F &color) +void DrawNode3D::drawCube(Vec3* vertices, const Color4F& color) { // front face drawLine(vertices[0], vertices[1], color); drawLine(vertices[1], vertices[2], color); drawLine(vertices[2], vertices[3], color); drawLine(vertices[3], vertices[0], color); - + // back face drawLine(vertices[4], vertices[5], color); drawLine(vertices[5], vertices[6], color); drawLine(vertices[6], vertices[7], color); drawLine(vertices[7], vertices[4], color); - + // edge drawLine(vertices[0], vertices[7], color); drawLine(vertices[1], vertices[6], color); @@ -271,26 +269,26 @@ const BlendFunc& DrawNode3D::getBlendFunc() const return _blendFunc; } -void DrawNode3D::setBlendFunc(const BlendFunc &blendFunc) +void DrawNode3D::setBlendFunc(const BlendFunc& blendFunc) { _blendFunc = blendFunc; - //update blend mode - auto &blend = _customCommand.getPipelineDescriptor().blendDescriptor; - blend.blendEnabled = true; + // update blend mode + auto& blend = _customCommand.getPipelineDescriptor().blendDescriptor; + blend.blendEnabled = true; blend.sourceRGBBlendFactor = blend.sourceAlphaBlendFactor = _blendFunc.src; blend.destinationRGBBlendFactor = blend.destinationAlphaBlendFactor = _blendFunc.dst; } void DrawNode3D::onBeforeDraw() { - auto *renderer = Director::getInstance()->getRenderer(); + auto* renderer = Director::getInstance()->getRenderer(); _rendererDepthTestEnabled = renderer->getDepthTest(); renderer->setDepthTest(true); } void DrawNode3D::onAfterDraw() { - auto *renderer = Director::getInstance()->getRenderer(); + auto* renderer = Director::getInstance()->getRenderer(); renderer->setDepthTest(_rendererDepthTestEnabled); } @@ -301,7 +299,7 @@ void DrawNode3D::onAfterDraw() If call `create` by passing {index1 = 111, index2 = 112, index3 = 113} from lua, the type 111,112,113 would be judged as string type before 3.3rc1 **/ -class ValueTypeJudgeInTable:public Node +class ValueTypeJudgeInTable : public Node { public: static ValueTypeJudgeInTable* create(ValueMap valueMap); @@ -311,245 +309,247 @@ ValueTypeJudgeInTable* ValueTypeJudgeInTable::create(ValueMap valueMap) { ValueTypeJudgeInTable* ret = new ValueTypeJudgeInTable(); ret->autorelease(); - + int index = 0; for (const auto& iter : valueMap) { Value::Type type = iter.second.getTypeFamily(); - if (type == Value::Type::STRING) { + if (type == Value::Type::STRING) + { CCLOG("The type of index %d is string", index); } - - if (type == Value::Type::INTEGER || type == Value::Type::DOUBLE || type == Value::Type::FLOAT) { + + if (type == Value::Type::INTEGER || type == Value::Type::DOUBLE || type == Value::Type::FLOAT) + { CCLOG("The type of index %d is number", index); } - + ++index; } - + return ret; } NS_CC_END int lua_cocos2dx_DrawNode3D_getBlendFunc(lua_State* L) { - int argc = 0; + int argc = 0; cocos2d::DrawNode3D* cobj = nullptr; - bool ok = true; - + bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - - cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); - + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L, 1, 0); + #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'", nullptr); + tolua_error(L, "invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'", nullptr); return 0; } #endif - - argc = lua_gettop(L)-1; + + argc = lua_gettop(L) - 1; if (argc == 0) { - if(!ok) + if (!ok) return 0; const cocos2d::BlendFunc& ret = cobj->getBlendFunc(); blendfunc_to_luaval(L, ret); return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:getBlendFunc",argc, 0); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:getBlendFunc", argc, 0); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'.", &tolua_err); #endif - + return 0; } int lua_cocos2dx_DrawNode3D_setBlendFunc(lua_State* L) { - int argc = 0; + int argc = 0; cocos2d::DrawNode3D* cobj = nullptr; - bool ok = true; - + bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - - cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); - + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L, 1, 0); + #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'", nullptr); + tolua_error(L, "invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'", nullptr); return 0; } #endif - - argc = lua_gettop(L)-1; + + argc = lua_gettop(L) - 1; if (argc == 1) { cocos2d::BlendFunc arg0; - + ok &= luaval_to_blendfunc(L, 2, &arg0, "cc.Sprite3D:setBlendFunc"); - if(!ok) + if (!ok) { - tolua_error(L,"invalid arguments in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'", nullptr); + tolua_error(L, "invalid arguments in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'", nullptr); return 0; } cobj->setBlendFunc(arg0); return 0; } - - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:setBlendFunc",argc, 1); + + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:setBlendFunc", argc, 1); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'.", &tolua_err); #endif - + return 0; } int lua_cocos2dx_DrawNode3D_drawLine(lua_State* L) { - int argc = 0; + int argc = 0; cocos2d::DrawNode3D* cobj = nullptr; - bool ok = true; - + bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - - cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); - + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L, 1, 0); + #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawLine'", nullptr); + tolua_error(L, "invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawLine'", nullptr); return 0; } #endif - - argc = lua_gettop(L)-1; + + argc = lua_gettop(L) - 1; if (argc == 3) { cocos2d::Vec3 arg0; cocos2d::Vec3 arg1; cocos2d::Color4F arg2; - + ok &= luaval_to_vec3(L, 2, &arg0, "cc.DrawNode3D:drawLine"); - + ok &= luaval_to_vec3(L, 3, &arg1, "cc.DrawNode3D:drawLine"); - - ok &=luaval_to_color4f(L, 4, &arg2, "cc.DrawNode3D:drawLine"); - if(!ok) + + ok &= luaval_to_color4f(L, 4, &arg2, "cc.DrawNode3D:drawLine"); + if (!ok) return 0; cobj->drawLine(arg0, arg1, arg2); return 0; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawLine",argc, 3); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawLine", argc, 3); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_drawLine'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_drawLine'.", &tolua_err); #endif - + return 0; } int lua_cocos2dx_DrawNode3D_clear(lua_State* L) { - int argc = 0; + int argc = 0; cocos2d::DrawNode3D* cobj = nullptr; - bool ok = true; - + bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - - cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); - + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L, 1, 0); + #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_clear'", nullptr); + tolua_error(L, "invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_clear'", nullptr); return 0; } #endif - - argc = lua_gettop(L)-1; + + argc = lua_gettop(L) - 1; if (argc == 0) { - if(!ok) + if (!ok) return 0; cobj->clear(); return 0; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:clear",argc, 0); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:clear", argc, 0); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_clear'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_clear'.", &tolua_err); #endif - + return 0; } int lua_cocos2dx_DrawNode3D_drawCube(lua_State* L) { - int argc = 0; + int argc = 0; cocos2d::DrawNode3D* cobj = nullptr; - bool ok = true; - + bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - - cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); - + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L, 1, 0); + #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawCube'", nullptr); + tolua_error(L, "invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawCube'", nullptr); return 0; } #endif - - argc = lua_gettop(L)-1; + + argc = lua_gettop(L) - 1; if (argc == 2) { std::vector arg0; @@ -572,7 +572,7 @@ int lua_cocos2dx_DrawNode3D_drawCube(lua_State* L) } #endif ok &= luaval_to_vec3(L, lua_gettop(L), &vec3); - + #if COCOS2D_DEBUG >= 1 if (!ok) { @@ -580,25 +580,25 @@ int lua_cocos2dx_DrawNode3D_drawCube(lua_State* L) goto tolua_lerror; } #endif - //arg0[i] = vec3; + // arg0[i] = vec3; arg0.push_back(vec3); lua_pop(L, 1); } - - ok &=luaval_to_color4f(L, 3, &arg1, "cc.DrawNode3D:drawCube"); - if(!ok) + + ok &= luaval_to_color4f(L, 3, &arg1, "cc.DrawNode3D:drawCube"); + if (!ok) return 0; cobj->drawCube(&arg0[0], arg1); return 0; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawCube",argc, 2); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawCube", argc, 2); return 0; - + #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_drawCube'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_drawCube'.", &tolua_err); #endif - + return 0; } @@ -606,47 +606,48 @@ int lua_cocos2dx_DrawNode3D_create(lua_State* L) { int argc = 0; bool ok = true; - + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertable(L, 1, "cc.DrawNode3D", 0, &tolua_err)) + goto tolua_lerror; #endif - + argc = lua_gettop(L) - 1; - + if (argc == 0) { - if(!ok) + if (!ok) return 0; cocos2d::DrawNode3D* ret = cocos2d::DrawNode3D::create(); - object_to_luaval(L, "cc.DrawNode3D",(cocos2d::DrawNode3D*)ret); + object_to_luaval(L, "cc.DrawNode3D", (cocos2d::DrawNode3D*)ret); return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.DrawNode3D:create",argc, 0); + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.DrawNode3D:create", argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_create'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_DrawNode3D_create'.", &tolua_err); #endif return 0; } int lua_register_cocos2dx_DrawNode3D(lua_State* L) { - tolua_usertype(L,"cc.DrawNode3D"); - tolua_cclass(L,"DrawNode3D","cc.DrawNode3D","cc.Node",nullptr); - - tolua_beginmodule(L,"DrawNode3D"); - tolua_function(L,"getBlendFunc",lua_cocos2dx_DrawNode3D_getBlendFunc); - tolua_function(L,"drawLine",lua_cocos2dx_DrawNode3D_drawLine); - tolua_function(L,"clear",lua_cocos2dx_DrawNode3D_clear); - tolua_function(L,"drawCube",lua_cocos2dx_DrawNode3D_drawCube); - tolua_function(L,"create", lua_cocos2dx_DrawNode3D_create); + tolua_usertype(L, "cc.DrawNode3D"); + tolua_cclass(L, "DrawNode3D", "cc.DrawNode3D", "cc.Node", nullptr); + + tolua_beginmodule(L, "DrawNode3D"); + tolua_function(L, "getBlendFunc", lua_cocos2dx_DrawNode3D_getBlendFunc); + tolua_function(L, "drawLine", lua_cocos2dx_DrawNode3D_drawLine); + tolua_function(L, "clear", lua_cocos2dx_DrawNode3D_clear); + tolua_function(L, "drawCube", lua_cocos2dx_DrawNode3D_drawCube); + tolua_function(L, "create", lua_cocos2dx_DrawNode3D_create); tolua_endmodule(L); - auto typeName = typeid(cocos2d::DrawNode3D).name(); + auto typeName = typeid(cocos2d::DrawNode3D).name(); g_luaType[reinterpret_cast(typeName)] = "cc.DrawNode3D"; g_typeCast[typeName] = "cc.DrawNode3D"; return 1; @@ -656,47 +657,49 @@ int lua_cocos2dx_ValueTypeJudgeInTable_create(lua_State* L) { int argc = 0; bool ok = true; - + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif - + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(L,1,"cc.ValueTypeJudgeInTable",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertable(L, 1, "cc.ValueTypeJudgeInTable", 0, &tolua_err)) + goto tolua_lerror; #endif - + argc = lua_gettop(L) - 1; - + if (argc == 1) { cocos2d::ValueMap arg0; ok &= luaval_to_ccvaluemap(L, 2, &arg0, "cc.ValueTypeJudgeInTable:create"); - if(!ok) + if (!ok) return 0; cocos2d::ValueTypeJudgeInTable* ret = cocos2d::ValueTypeJudgeInTable::create(arg0); - object_to_luaval(L, "cc.ValueTypeJudgeInTable",(cocos2d::ValueTypeJudgeInTable*)ret); + object_to_luaval(L, "cc.ValueTypeJudgeInTable", + (cocos2d::ValueTypeJudgeInTable*)ret); return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.ValueTypeJudgeInTable:create",argc, 1); + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.ValueTypeJudgeInTable:create", argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(L, "#ferror in function 'lua_cocos2dx_ValueTypeJudgeInTable_create'.",&tolua_err); + tolua_error(L, "#ferror in function 'lua_cocos2dx_ValueTypeJudgeInTable_create'.", &tolua_err); #endif return 0; } int lua_register_cocos2dx_ValueTypeJudgeInTable(lua_State* L) { - tolua_usertype(L,"cc.ValueTypeJudgeInTable"); - tolua_cclass(L,"ValueTypeJudgeInTable","cc.ValueTypeJudgeInTable","cc.Node",nullptr); - - tolua_beginmodule(L,"ValueTypeJudgeInTable"); - tolua_function(L,"create", lua_cocos2dx_ValueTypeJudgeInTable_create); + tolua_usertype(L, "cc.ValueTypeJudgeInTable"); + tolua_cclass(L, "ValueTypeJudgeInTable", "cc.ValueTypeJudgeInTable", "cc.Node", nullptr); + + tolua_beginmodule(L, "ValueTypeJudgeInTable"); + tolua_function(L, "create", lua_cocos2dx_ValueTypeJudgeInTable_create); tolua_endmodule(L); - auto typeName = typeid(cocos2d::ValueTypeJudgeInTable).name(); + auto typeName = typeid(cocos2d::ValueTypeJudgeInTable).name(); g_luaType[reinterpret_cast(typeName)] = "cc.ValueTypeJudgeInTable"; - g_typeCast[typeName] = "cc.ValueTypeJudgeInTable"; + g_typeCast[typeName] = "cc.ValueTypeJudgeInTable"; return 1; } @@ -705,8 +708,8 @@ int register_test_binding(lua_State* L) tolua_open(L); tolua_module(L, "cc", 0); tolua_beginmodule(L, "cc"); - lua_register_cocos2dx_DrawNode3D(L); - lua_register_cocos2dx_ValueTypeJudgeInTable(L); + lua_register_cocos2dx_DrawNode3D(L); + lua_register_cocos2dx_ValueTypeJudgeInTable(L); tolua_endmodule(L); return 0; } diff --git a/tests/lua-tests/project/Classes/lua_test_bindings.h b/tests/lua-tests/project/Classes/lua_test_bindings.h index 738bba49c480..9315698713a5 100644 --- a/tests/lua-tests/project/Classes/lua_test_bindings.h +++ b/tests/lua-tests/project/Classes/lua_test_bindings.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,4 +35,4 @@ extern "C" { TOLUA_API int register_test_binding(lua_State* tolua_S); -#endif // #ifndef COCOS2DX_TEST_LUA_TESTS_PROJECT_CLASSES_LUA_TEST_BINDINGS_H +#endif // #ifndef COCOS2DX_TEST_LUA_TESTS_PROJECT_CLASSES_LUA_TEST_BINDINGS_H diff --git a/tests/lua-tests/project/proj.android/app/jni/main.cpp b/tests/lua-tests/project/proj.android/app/jni/main.cpp index 6cab47cbb306..ccd4757e4c78 100644 --- a/tests/lua-tests/project/proj.android/app/jni/main.cpp +++ b/tests/lua-tests/project/proj.android/app/jni/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,14 +29,16 @@ #include "AppDelegate.h" -#define LOG_TAG "main" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -namespace { +namespace +{ std::unique_ptr appDelegate; } -void cocos_android_app_init(JNIEnv* env) { +void cocos_android_app_init(JNIEnv* env) +{ LOGD("cocos_android_app_init"); appDelegate.reset(new AppDelegate()); } diff --git a/tests/lua-tests/project/proj.ios_mac/ios/AppController.h b/tests/lua-tests/project/proj.ios_mac/ios/AppController.h index d7906fbfd9a0..ce24366200ea 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/AppController.h +++ b/tests/lua-tests/project/proj.ios_mac/ios/AppController.h @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2010 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,9 +26,8 @@ @class RootViewController; @interface AppController : NSObject { - UIWindow *window; - RootViewController *viewController; + UIWindow* window; + RootViewController* viewController; } @end - diff --git a/tests/lua-tests/project/proj.ios_mac/ios/AppController.mm b/tests/lua-tests/project/proj.ios_mac/ios/AppController.mm index 260767392cc8..b25b63f68ff3 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/AppController.mm +++ b/tests/lua-tests/project/proj.ios_mac/ios/AppController.mm @@ -38,22 +38,23 @@ @implementation AppController // cocos2d application instance static AppDelegate s_sharedApplication; -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { +- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions +{ - cocos2d::Application *app = cocos2d::Application::getInstance(); + cocos2d::Application* app = cocos2d::Application::getInstance(); app->initGLContextAttrs(); cocos2d::GLViewImpl::convertAttrs(); // Override point for customization after application launch. // Add the view controller's view to the window and display. - window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; - CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds] - pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat - depthFormat: cocos2d::GLViewImpl::_depthFormat - preserveBackbuffer: NO - sharegroup: nil - multiSampling: cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO - numberOfSamples: cocos2d::GLViewImpl::_multisamplingCount ]; + window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + CCEAGLView* eaglView = [CCEAGLView viewWithFrame:[window bounds] + pixelFormat:(NSString*)cocos2d::GLViewImpl::_pixelFormat + depthFormat:cocos2d::GLViewImpl::_depthFormat + preserveBackbuffer:NO + sharegroup:nil + multiSampling:cocos2d::GLViewImpl::_multisamplingCount > 0 ? YES : NO + numberOfSamples:cocos2d::GLViewImpl::_multisamplingCount]; #if !defined(CC_TARGET_OS_TVOS) [eaglView setMultipleTouchEnabled:YES]; @@ -67,91 +68,99 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( viewController.view = eaglView; // Set RootViewController to window - if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) + if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 - [window addSubview: viewController.view]; + [window addSubview:viewController.view]; } else { // use this method on ios6 [window setRootViewController:viewController]; } - + [window makeKeyAndVisible]; #if !defined(CC_TARGET_OS_TVOS) - [[UIApplication sharedApplication] setStatusBarHidden: YES]; + [[UIApplication sharedApplication] setStatusBarHidden:YES]; #endif - //Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. - if ( [[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) + // Launching the app with the arguments -NSAllowsDefaultLineBreakStrategy NO to force back to the old behavior. + if ([[UIDevice currentDevice].systemVersion floatValue] >= 13.0f) { [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAllowsDefaultLineBreakStrategy"]; } // IMPORTANT: Setting the GLView should be done after creating the RootViewController - cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView); + cocos2d::GLView* glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView); cocos2d::Director::getInstance()->setOpenGLView(glview); app->run(); return YES; } - -- (void)applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication*)application +{ /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + Sent when the application is about to move from active to inactive state. This can occur for certain types of + temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and + it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and + throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ cocos2d::Director::getInstance()->pause(); } -- (void)applicationDidBecomeActive:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication*)application +{ /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was + previously in the background, optionally refresh the user interface. */ cocos2d::Director::getInstance()->resume(); } -- (void)applicationDidEnterBackground:(UIApplication *)application { +- (void)applicationDidEnterBackground:(UIApplication*)application +{ /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. + Use this method to release shared resources, save user data, invalidate timers, and store enough application state + information to restore your application to its current state in case it is terminated later. If your application + supports background execution, called instead of applicationWillTerminate: when the user quits. */ cocos2d::Application::getInstance()->applicationDidEnterBackground(); } -- (void)applicationWillEnterForeground:(UIApplication *)application { +- (void)applicationWillEnterForeground:(UIApplication*)application +{ /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. + Called as part of transition from the background to the inactive state: here you can undo many of the changes made + on entering the background. */ cocos2d::Application::getInstance()->applicationWillEnterForeground(); } -- (void)applicationWillTerminate:(UIApplication *)application { +- (void)applicationWillTerminate:(UIApplication*)application +{ /* Called when the application is about to terminate. See also applicationDidEnterBackground:. */ } - #pragma mark - #pragma mark Memory management -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { +- (void)applicationDidReceiveMemoryWarning:(UIApplication*)application +{ /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. + Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) + later. */ - cocos2d::Director::getInstance()->purgeCachedData(); + cocos2d::Director::getInstance()->purgeCachedData(); } - -- (void)dealloc { +- (void)dealloc +{ [super dealloc]; } - @end - diff --git a/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.h b/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.h index cbeac2bb740f..9302af48bf4b 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.h +++ b/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,18 +29,18 @@ @interface LuaObjectCBridgeTest : NSObject { int _scriptHandler; } -+ (LuaObjectCBridgeTest*) getInstance; -+ (void) destroyInstance; ++ (LuaObjectCBridgeTest*)getInstance; ++ (void)destroyInstance; -+ (void) registerScriptHandler:(NSDictionary *)dict; -+ (void) unregisterScriptHandler; ++ (void)registerScriptHandler:(NSDictionary*)dict; ++ (void)unregisterScriptHandler; -+ (int) addTwoNumbers:(NSDictionary *)dict; -+ (void) callbackScriptHandler; ++ (int)addTwoNumbers:(NSDictionary*)dict; ++ (void)callbackScriptHandler; -+ (void) printLuaTableToDictionary:(NSDictionary *)dict; ++ (void)printLuaTableToDictionary:(NSDictionary*)dict; -- (id) init; +- (id)init; @end #endif // COCOS2DX_SAMPLES_TESTLUA_PROJ_IOS_LUAOBJECTCBRIDGETEST_H diff --git a/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.mm b/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.mm index 07c722752fd6..f715a6b69dce 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.mm +++ b/tests/lua-tests/project/proj.ios_mac/ios/LuaObjectCBridgeTest.mm @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,23 +34,23 @@ @implementation LuaObjectCBridgeTest static LuaObjectCBridgeTest* s_instance = nil; -+ (LuaObjectCBridgeTest*) getInstance ++ (LuaObjectCBridgeTest*)getInstance { if (!s_instance) { s_instance = [LuaObjectCBridgeTest alloc]; [s_instance init]; } - + return s_instance; } -+ (void) destroyInstance ++ (void)destroyInstance { [s_instance release]; } -- (void) setScriptHandler:(int)scriptHandler +- (void)setScriptHandler:(int)scriptHandler { if (_scriptHandler) { @@ -60,45 +60,44 @@ - (void) setScriptHandler:(int)scriptHandler _scriptHandler = scriptHandler; } -- (int) getScriptHandler +- (int)getScriptHandler { return _scriptHandler; } - -+(void) registerScriptHandler:(NSDictionary *)dict ++ (void)registerScriptHandler:(NSDictionary*)dict { [[LuaObjectCBridgeTest getInstance] setScriptHandler:[[dict objectForKey:@"scriptHandler"] intValue]]; } - -+ (void) unregisterScriptHandler ++ (void)unregisterScriptHandler { [[LuaObjectCBridgeTest getInstance] setScriptHandler:0]; } -+ (int) addTwoNumbers:(NSDictionary *)dict ++ (int)addTwoNumbers:(NSDictionary*)dict { int num1 = [[dict objectForKey:@"num1"] intValue]; int num2 = [[dict objectForKey:@"num2"] intValue]; - + return num1 + num2; } -+ (void) callbackScriptHandler ++ (void)callbackScriptHandler { int scriptHandler = [[LuaObjectCBridgeTest getInstance] getScriptHandler]; if (scriptHandler) { LuaBridge::pushLuaFunctionById(scriptHandler); - LuaStack *stack = LuaBridge::getStack(); + LuaStack* stack = LuaBridge::getStack(); stack->pushString("success"); stack->executeFunction(1); } } -+(void) printLuaTableToDictionary:(NSDictionary *)dict{ - NSLog(@"lua to OC data is :%@",dict); ++ (void)printLuaTableToDictionary:(NSDictionary*)dict +{ + NSLog(@"lua to OC data is :%@", dict); } - (id)init diff --git a/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.h b/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.h index 1c51096c578c..1b70ba81b1c2 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.h +++ b/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.h @@ -2,19 +2,19 @@ Copyright (c) 2010-2011 cocos2d-x.org Copyright (c) 2010 Ricardo Quesada Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,9 +26,7 @@ #import - @interface RootViewController : UIViewController { - } - (BOOL)prefersStatusBarHidden; @end diff --git a/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.mm b/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.mm index 8002ff82d09b..abfc10af528c 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.mm +++ b/tests/lua-tests/project/proj.ios_mac/ios/RootViewController.mm @@ -2,19 +2,19 @@ Copyright (c) 2010-2011 cocos2d-x.org Copyright (c) 2010 Ricardo Quesada Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,11 +26,11 @@ of this software and associated documentation files (the "Software"), to deal #import "RootViewController.h" - @implementation RootViewController /* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. + // The designated initializer. Override if you create the controller programmatically and want to perform +customization that is not appropriate for viewDidLoad. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { // Custom initialization @@ -50,53 +50,58 @@ - (void)loadView { - (void)viewDidLoad { [super viewDidLoad]; } - + */ // Override to allow orientations other than the default portrait orientation. // This method is deprecated on ios6 -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return UIInterfaceOrientationIsLandscape( interfaceOrientation ); +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return UIInterfaceOrientationIsLandscape(interfaceOrientation); } // For ios6, use supportedInterfaceOrientations & shouldAutorotate instead -- (NSUInteger) supportedInterfaceOrientations{ +- (NSUInteger)supportedInterfaceOrientations +{ #ifdef __IPHONE_6_0 return UIInterfaceOrientationMaskAllButUpsideDown; #endif } -- (BOOL) shouldAutorotate { +- (BOOL)shouldAutorotate +{ return YES; } -//fix not hide status on ios7 +// fix not hide status on ios7 - (BOOL)prefersStatusBarHidden { return YES; } // Controls the application's preferred home indicator auto-hiding when this view controller is shown. -- (BOOL)prefersHomeIndicatorAutoHidden { +- (BOOL)prefersHomeIndicatorAutoHidden +{ return YES; } -- (void)didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning +{ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - + // Release any cached data, images, etc that aren't in use. } -- (void)viewDidUnload { +- (void)viewDidUnload +{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - -- (void)dealloc { +- (void)dealloc +{ [super dealloc]; } - @end diff --git a/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.h b/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.h index cbeac2bb740f..9302af48bf4b 100644 --- a/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.h +++ b/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,18 +29,18 @@ @interface LuaObjectCBridgeTest : NSObject { int _scriptHandler; } -+ (LuaObjectCBridgeTest*) getInstance; -+ (void) destroyInstance; ++ (LuaObjectCBridgeTest*)getInstance; ++ (void)destroyInstance; -+ (void) registerScriptHandler:(NSDictionary *)dict; -+ (void) unregisterScriptHandler; ++ (void)registerScriptHandler:(NSDictionary*)dict; ++ (void)unregisterScriptHandler; -+ (int) addTwoNumbers:(NSDictionary *)dict; -+ (void) callbackScriptHandler; ++ (int)addTwoNumbers:(NSDictionary*)dict; ++ (void)callbackScriptHandler; -+ (void) printLuaTableToDictionary:(NSDictionary *)dict; ++ (void)printLuaTableToDictionary:(NSDictionary*)dict; -- (id) init; +- (id)init; @end #endif // COCOS2DX_SAMPLES_TESTLUA_PROJ_IOS_LUAOBJECTCBRIDGETEST_H diff --git a/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.mm b/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.mm index 07c722752fd6..f715a6b69dce 100644 --- a/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.mm +++ b/tests/lua-tests/project/proj.ios_mac/mac/LuaObjectCBridgeTest.mm @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -34,23 +34,23 @@ @implementation LuaObjectCBridgeTest static LuaObjectCBridgeTest* s_instance = nil; -+ (LuaObjectCBridgeTest*) getInstance ++ (LuaObjectCBridgeTest*)getInstance { if (!s_instance) { s_instance = [LuaObjectCBridgeTest alloc]; [s_instance init]; } - + return s_instance; } -+ (void) destroyInstance ++ (void)destroyInstance { [s_instance release]; } -- (void) setScriptHandler:(int)scriptHandler +- (void)setScriptHandler:(int)scriptHandler { if (_scriptHandler) { @@ -60,45 +60,44 @@ - (void) setScriptHandler:(int)scriptHandler _scriptHandler = scriptHandler; } -- (int) getScriptHandler +- (int)getScriptHandler { return _scriptHandler; } - -+(void) registerScriptHandler:(NSDictionary *)dict ++ (void)registerScriptHandler:(NSDictionary*)dict { [[LuaObjectCBridgeTest getInstance] setScriptHandler:[[dict objectForKey:@"scriptHandler"] intValue]]; } - -+ (void) unregisterScriptHandler ++ (void)unregisterScriptHandler { [[LuaObjectCBridgeTest getInstance] setScriptHandler:0]; } -+ (int) addTwoNumbers:(NSDictionary *)dict ++ (int)addTwoNumbers:(NSDictionary*)dict { int num1 = [[dict objectForKey:@"num1"] intValue]; int num2 = [[dict objectForKey:@"num2"] intValue]; - + return num1 + num2; } -+ (void) callbackScriptHandler ++ (void)callbackScriptHandler { int scriptHandler = [[LuaObjectCBridgeTest getInstance] getScriptHandler]; if (scriptHandler) { LuaBridge::pushLuaFunctionById(scriptHandler); - LuaStack *stack = LuaBridge::getStack(); + LuaStack* stack = LuaBridge::getStack(); stack->pushString("success"); stack->executeFunction(1); } } -+(void) printLuaTableToDictionary:(NSDictionary *)dict{ - NSLog(@"lua to OC data is :%@",dict); ++ (void)printLuaTableToDictionary:(NSDictionary*)dict +{ + NSLog(@"lua to OC data is :%@", dict); } - (id)init diff --git a/tests/lua-tests/project/proj.ios_mac/mac/main.cpp b/tests/lua-tests/project/proj.ios_mac/mac/main.cpp index 32debbd1c94f..820418a1678e 100644 --- a/tests/lua-tests/project/proj.ios_mac/mac/main.cpp +++ b/tests/lua-tests/project/proj.ios_mac/mac/main.cpp @@ -1,19 +1,19 @@ /**************************************************************************** Copyright (c) 2010 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,7 +27,7 @@ USING_NS_CC; -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { AppDelegate app; return Application::getInstance()->run(); diff --git a/tests/lua-tests/project/proj.linux/main.cpp b/tests/lua-tests/project/proj.linux/main.cpp index 042c94fef689..c03ce74184e9 100644 --- a/tests/lua-tests/project/proj.linux/main.cpp +++ b/tests/lua-tests/project/proj.linux/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,7 +32,7 @@ USING_NS_CC; -int main(int argc, char **argv) +int main(int argc, char** argv) { // create the application instance AppDelegate app; diff --git a/tests/lua-tests/project/proj.win32/main.cpp b/tests/lua-tests/project/proj.win32/main.cpp index a0ed7a9a4212..0c8360204bba 100644 --- a/tests/lua-tests/project/proj.win32/main.cpp +++ b/tests/lua-tests/project/proj.win32/main.cpp @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,10 +31,7 @@ USING_NS_CC; // uncomment below line, open debug console #define USE_WIN32_CONSOLE -int WINAPI _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) +int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); diff --git a/tests/lua-tests/project/proj.win32/main.h b/tests/lua-tests/project/proj.win32/main.h index 34889a4540cd..059e4dccacbf 100644 --- a/tests/lua-tests/project/proj.win32/main.h +++ b/tests/lua-tests/project/proj.win32/main.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -25,10 +25,10 @@ #ifndef __MAIN_H__ #define __MAIN_H__ -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers // Windows Header Files: #include #include -#endif // __WINMAIN_H__ +#endif // __WINMAIN_H__ diff --git a/tests/lua-tests/project/proj.win32/resource.h b/tests/lua-tests/project/proj.win32/resource.h index 2cbcafdca9e8..558baed6e6ad 100644 --- a/tests/lua-tests/project/proj.win32/resource.h +++ b/tests/lua-tests/project/proj.win32/resource.h @@ -1,18 +1,18 @@ /**************************************************************************** Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. - + http://www.cocos2d-x.org - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,18 +27,18 @@ // Used by lua-tests.RC // -#define IDS_PROJNAME 100 -#define IDR_TESTLUA 100 +#define IDS_PROJNAME 100 +#define IDR_TESTLUA 100 -#define ID_FILE_NEW_WINDOW 32771 +#define ID_FILE_NEW_WINDOW 32771 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 201 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 32775 -#endif +# ifndef APSTUDIO_READONLY_SYMBOLS +# define _APS_NEXT_RESOURCE_VALUE 201 +# define _APS_NEXT_CONTROL_VALUE 1000 +# define _APS_NEXT_SYMED_VALUE 101 +# define _APS_NEXT_COMMAND_VALUE 32775 +# endif #endif From d90d0b3bb9282e4d50bcb7cc7aeac8f707295049 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 17:07:49 +0800 Subject: [PATCH 17/58] Use std::forward let user decide whether give up ownership of key --- thirdparty/tsl/robin_map.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/tsl/robin_map.h b/thirdparty/tsl/robin_map.h index 64909c406d34..b6c1577c0ce1 100644 --- a/thirdparty/tsl/robin_map.h +++ b/thirdparty/tsl/robin_map.h @@ -456,7 +456,7 @@ class robin_map { template < class K, class KE = KeyEqual, typename std::enable_if::value>::type* = nullptr> - T& operator[](K&& key) { return m_ht[std::move(key)]; } + T& operator[](K&& key) { return m_ht[std::forward(key)]; } size_type count(const Key& key) const { return m_ht.count(key); } From 7ece7b2cea74a222a2e319fe22c3b94ffa711f27 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 17:18:54 +0800 Subject: [PATCH 18/58] Improve code style --- cocos/base/CCMap.h | 5 +++-- cocos/platform/CCFileUtils.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cocos/base/CCMap.h b/cocos/base/CCMap.h index 475b017b3bb4..af45abeacf17 100644 --- a/cocos/base/CCMap.h +++ b/cocos/base/CCMap.h @@ -27,6 +27,7 @@ #define __CCMAP_H__ #define USE_STD_UNORDERED_MAP 1 +#define USE_ROBIN_MAP 1 #include "base/ccMacros.h" #include "base/CCRef.h" @@ -148,7 +149,7 @@ class Map /** Returns the number of elements in bucket n. */ ssize_t bucketSize(ssize_t n) const { -#if USE_STD_UNORDERED_MAP +#if USE_STD_UNORDERED_MAP && !defined(USE_ROBIN_MAP) return _data.bucket_size(n); #else return 0; @@ -158,7 +159,7 @@ class Map /** Returns the bucket number where the element with key k is located. */ ssize_t bucket(const K& k) const { -#if USE_STD_UNORDERED_MAP +#if USE_STD_UNORDERED_MAP && !defined(USE_ROBIN_MAP) return _data.bucket(k); #else return 0; diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index dd1c96a44b1c..a122a054e5aa 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -157,8 +157,8 @@ class DictMaker : public SAXDelegator // add a new dictionary into the pre dictionary CCASSERT(!_dictStack.empty(), "The state is wrong!"); ValueMap* preDict = _dictStack.top(); - (*preDict)[_curKey] = Value(ValueMap()); - _curDict = &(*preDict)[_curKey].asValueMap(); + auto& curVal = hlookup::set_item(*preDict, _curKey, Value(ValueMap()))->second; + _curDict = &curVal.asValueMap(); } // record the dict state From 1e9ad9d2407a118aab8cbb51254e84f25cf68704 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 17:20:17 +0800 Subject: [PATCH 19/58] string_view for cpp-tests --- .../NewRendererTest/NewRendererTest.cpp | 6 ++-- tests/cpp-tests/Classes/NodeTest/NodeTest.cpp | 2 +- .../Classes/ShaderTest/ShaderTest.cpp | 4 +-- .../cpp-tests/Classes/ShaderTest/ShaderTest.h | 6 ++-- .../Classes/ShaderTest/ShaderTest2.cpp | 6 ++-- .../Classes/ShaderTest/ShaderTest2.h | 2 +- .../Classes/Sprite3DTest/Sprite3DTest.cpp | 2 +- .../SpriteFrameCacheTest.cpp | 22 +++++++------ .../SpriteFrameCacheTest.h | 6 ++-- .../SpritePolygonTest/SpritePolygonTest.cpp | 6 ++-- .../UIPageViewTest/UIPageViewTest.cpp | 2 +- .../UIRadioButtonTest/UIRadioButtonTest.cpp | 4 +-- .../UIWebViewTest/UIWebViewTest.cpp | 14 ++++----- .../UIWebViewTest/UIWebViewTest.h | 6 ++-- tests/cpp-tests/Classes/UnitTest/UnitTest.cpp | 20 ++++++------ tests/cpp-tests/Classes/UnitTest/UnitTest.h | 2 +- .../UserDefaultTest/UserDefaultTest.cpp | 31 ++++++++++--------- tests/cpp-tests/Classes/ZipTest/ZipTests.cpp | 13 ++++---- 18 files changed, 80 insertions(+), 74 deletions(-) diff --git a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp index 504298b3a7ad..cd0707a2b544 100644 --- a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp +++ b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp @@ -43,9 +43,9 @@ USING_NS_CC; class DurationRecorder { public: - void startTick(const std::string& key) { _durations[key] = -now(); } + void startTick(std::string_view key) { _durations[key] = -now(); } - int endTick(const std::string& key) + int endTick(std::string_view key) { auto n = now(); auto itr = _durations.find(key); @@ -69,7 +69,7 @@ class DurationRecorder void reset() { _durations.clear(); } private: - std::map _durations; + hlookup::string_map _durations; }; NewRendererTests::NewRendererTests() diff --git a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp index 2d98a27f8a79..dc5f9d5ccf9b 100644 --- a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp +++ b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp @@ -936,7 +936,7 @@ std::string NodeGlobalZValueTest::subtitle() const class MySprite : public Sprite { public: - static MySprite* create(const std::string& spritefilename) + static MySprite* create(std::string_view spritefilename) { auto sprite = new MySprite; sprite->initWithFile(spritefilename); diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp index afae608595c2..4638da7eafe5 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp @@ -86,7 +86,7 @@ ShaderNode* ShaderNode::shaderNodeWithVertex(std::string_view vert, std::string_ return node; } -bool ShaderNode::initWithVertex(std::string_view vert, const std::string& frag) +bool ShaderNode::initWithVertex(std::string_view vert, std::string_view frag) { _vertFileName = vert; _fragFileName = frag; @@ -124,7 +124,7 @@ bool ShaderNode::initWithVertex(std::string_view vert, const std::string& frag) return true; } -void ShaderNode::loadShaderVertex(const std::string& vert, const std::string& frag) +void ShaderNode::loadShaderVertex(std::string_view vert, std::string_view frag) { auto fileUtiles = FileUtils::getInstance(); diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.h b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.h index 03685e398fc6..de6b78e69f92 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.h +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.h @@ -140,7 +140,7 @@ class ShaderNode : public cocos2d::Node { public: CREATE_FUNC(ShaderNode); - static ShaderNode* shaderNodeWithVertex(const std::string& vert, const std::string& frag); + static ShaderNode* shaderNodeWithVertex(std::string_view vert, std::string_view frag); virtual void update(float dt) override; virtual void setPosition(const cocos2d::Vec2& newPosition) override; @@ -150,8 +150,8 @@ class ShaderNode : public cocos2d::Node ShaderNode(); ~ShaderNode(); - bool initWithVertex(const std::string& vert, const std::string& frag); - void loadShaderVertex(const std::string& vert, const std::string& frag); + bool initWithVertex(std::string_view vert, std::string_view frag); + void loadShaderVertex(std::string_view vert, std::string_view frag); virtual bool setProgramState(cocos2d::backend::ProgramState* programState, bool needsRetain = true) override { diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp index ca301f7b58fd..aad7e72045ab 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp @@ -181,7 +181,7 @@ class EffectSprite : public Sprite // Effect // -bool Effect::initProgramState(const std::string& fragmentFilename) +bool Effect::initProgramState(std::string_view fragmentFilename) { auto fileUtiles = FileUtils::getInstance(); auto fragmentFullPath = fileUtiles->fullPathForFilename(fragmentFilename); @@ -407,7 +407,7 @@ class EffectNormalMapped : public Effect { public: CREATE_FUNC(EffectNormalMapped); - static EffectNormalMapped* create(std::string_viewnormalMapFileName) + static EffectNormalMapped* create(std::string_view normalMapFileName) { EffectNormalMapped* normalMappedSprite = new EffectNormalMapped(); if (normalMappedSprite->init() && normalMappedSprite->initNormalMap(normalMapFileName)) @@ -426,7 +426,7 @@ class EffectNormalMapped : public Effect protected: bool init(); - bool initNormalMap(std::string_viewnormalMapFileName); + bool initNormalMap(std::string_view normalMapFileName); virtual void setTarget(EffectSprite* sprite) override; EffectSprite* _sprite; Vec3 _lightPos; diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h index e3f50c0c9c40..dd7620d9db15 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h @@ -48,7 +48,7 @@ class Effect : public cocos2d::Ref virtual void setTarget(EffectSprite* sprite) {} protected: - bool initProgramState(const std::string& fragmentFilename); + bool initProgramState(std::string_view fragmentFilename); Effect(); virtual ~Effect(); cocos2d::backend::ProgramState* _programState = nullptr; diff --git a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp index 1dd6070f275f..f26008eef706 100644 --- a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp +++ b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp @@ -2591,7 +2591,7 @@ void Sprite3DPropertyTest::printMeshName(cocos2d::Ref* sender) Vector meshes = _sprite->getMeshes(); for (Mesh* mesh : meshes) { - log("MeshName: %s ", mesh->getName().c_str()); + log("MeshName: %s ", mesh->getName().data()); } CCLOG("MeshName End"); } diff --git a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp index 7563301833ad..8500905a8a62 100644 --- a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp +++ b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.cpp @@ -74,7 +74,7 @@ SpriteFrameCachePixelFormatTest::SpriteFrameCachePixelFormatTest() Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8); } -void SpriteFrameCachePixelFormatTest::loadSpriteFrames(const std::string& file, +void SpriteFrameCachePixelFormatTest::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file); @@ -86,8 +86,9 @@ void SpriteFrameCachePixelFormatTest::loadSpriteFrames(const std::string& file, #ifndef CC_USE_METAL CC_ASSERT(texture->getPixelFormat() == expectedFormat); #endif - const std::string textureInfo = StringUtils::format("%s: %.2f KB\r\n", texture->getStringForFormat(), memorySize); - infoLabel->setString(infoLabel->getString() + textureInfo); + const std::string textureInfo = + StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), texture->getStringForFormat(), memorySize); + infoLabel->setString(textureInfo); SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(file); Director::getInstance()->getTextureCache()->removeTexture(texture); @@ -104,7 +105,7 @@ SpriteFrameCacheLoadMultipleTimes::SpriteFrameCacheLoadMultipleTimes() loadSpriteFrames("Images/sprite_frames_test/test_RGBA8888.plist", backend::PixelFormat::RGBA8); } -void SpriteFrameCacheLoadMultipleTimes::loadSpriteFrames(const std::string& file, +void SpriteFrameCacheLoadMultipleTimes::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file); @@ -123,7 +124,7 @@ SpriteFrameCacheFullCheck::SpriteFrameCacheFullCheck() loadSpriteFrames("Images/test_polygon.plist", backend::PixelFormat::RGBA8); } -void SpriteFrameCacheFullCheck::loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat) +void SpriteFrameCacheFullCheck::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { auto cache = SpriteFrameCache::getInstance(); @@ -157,7 +158,7 @@ class GenericJsonArraySpriteSheetLoader : public SpriteSheetLoader if (fullPath.empty()) { // return if plist file doesn't exist - CCLOG("GenericJsonArraySpriteSheetLoader: can not find %s", filePath.c_str()); + CCLOG("GenericJsonArraySpriteSheetLoader: can not find %s", filePath.data()); return; } @@ -481,7 +482,7 @@ SpriteFrameCacheJsonAtlasTest::SpriteFrameCacheJsonAtlasTest() infoLabel->setPosition(screenSize.width * 0.5f, screenSize.height * 0.7f); addChild(infoLabel); - loadSpriteFrames("Images/sprite_frames_test/test_RGB8888_generic.json", backend::PixelFormat::RGBA8); + loadSpriteFrames("Images/sprite_frames_test/test_RGB8888_generic.json"sv, backend::PixelFormat::RGBA8); } SpriteFrameCacheJsonAtlasTest::~SpriteFrameCacheJsonAtlasTest() @@ -494,7 +495,7 @@ void SpriteFrameCacheJsonAtlasTest::loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat) { SpriteFrameCache::getInstance()->addSpriteFramesWithFile(file, GenericJsonArraySpriteSheetLoader::FORMAT); - SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("sprite_frames_test/grossini.png"); + SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName("sprite_frames_test/grossini.png"sv); Texture2D* texture = spriteFrame->getTexture(); const ssize_t bitsPerKB = 8 * 1024; const double memorySize = 1.0 * texture->getBitsPerPixelForFormat() * texture->getContentSizeInPixels().width * @@ -502,8 +503,9 @@ void SpriteFrameCacheJsonAtlasTest::loadSpriteFrames(std::string_view file, #ifndef CC_USE_METAL CC_ASSERT(texture->getPixelFormat() == expectedFormat); #endif - const std::string textureInfo = StringUtils::format("%s: %.2f KB\r\n", texture->getStringForFormat(), memorySize); - infoLabel->setString(infoLabel->getString() + textureInfo); + const std::string textureInfo = + StringUtils::format("%s%s: %.2f KB\r\n", infoLabel->getString().data(), texture->getStringForFormat(), memorySize); + infoLabel->setString(textureInfo); SpriteFrameCache::getInstance()->removeSpriteFramesFromFile(file); Director::getInstance()->getTextureCache()->removeTexture(texture); diff --git a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h index 496881a96104..6d8562dc2e34 100644 --- a/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h +++ b/tests/cpp-tests/Classes/SpriteFrameCacheTest/SpriteFrameCacheTest.h @@ -41,7 +41,7 @@ class SpriteFrameCachePixelFormatTest : public TestCase SpriteFrameCachePixelFormatTest(); private: - void loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat); + void loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat); private: cocos2d::Label* infoLabel; @@ -58,7 +58,7 @@ class SpriteFrameCacheLoadMultipleTimes : public TestCase SpriteFrameCacheLoadMultipleTimes(); private: - void loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat); + void loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat); }; class SpriteFrameCacheFullCheck : public TestCase @@ -72,7 +72,7 @@ class SpriteFrameCacheFullCheck : public TestCase SpriteFrameCacheFullCheck(); private: - void loadSpriteFrames(const std::string& file, cocos2d::backend::PixelFormat expectedFormat); + void loadSpriteFrames(std::string_view file, cocos2d::backend::PixelFormat expectedFormat); }; class SpriteFrameCacheJsonAtlasTest : public TestCase diff --git a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp index a9660427b7e9..0947969e2fc9 100644 --- a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp +++ b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp @@ -348,11 +348,11 @@ void SpritePolygonTestSlider::updateLabel(const cocos2d::Sprite* sp, const Polyg Label* label = (Label*)(sp->getChildByName(sp->getName())); auto filename = sp->getName(); auto size = pinfo.getRect().size / Director::getInstance()->getContentScaleFactor(); - label->setString(filename + "\nVerts: " + Value((int)pinfo.getVertCount()).asString() + + label->setString((std::string)filename + "\nVerts: " + Value((int)pinfo.getVertCount()).asString() + "\nPixels: " + Value((int)(pinfo.getArea() / (size.width * size.height) * 100)).asString() + "%"); } -Sprite* SpritePolygonTestSlider::makeSprite(const std::string& filename, const Vec2& pos) +Sprite* SpritePolygonTestSlider::makeSprite(std::string_view filename, const Vec2& pos) { // Sprite auto quadSize = Sprite::create(filename)->getContentSize(); @@ -374,7 +374,7 @@ Sprite* SpritePolygonTestSlider::makeSprite(const std::string& filename, const V // Label auto ttfConfig = TTFConfig("fonts/arial.ttf", 8); auto spArea = Label::createWithTTF( - ttfConfig, filename + "\nVerts: " + Value((int)pinfo.getVertCount()).asString() + + ttfConfig, (std::string)filename + "\nVerts: " + Value((int)pinfo.getVertCount()).asString() + "\nPixels: " + Value((int)(pinfo.getArea() / originalSize * 100)).asString() + "%"); ret->addChild(spArea); spArea->setAnchorPoint(Vec2(0.0f, 1.0f)); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp index ab3a33de7f58..107961b35298 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp @@ -219,7 +219,7 @@ void UIPageViewButtonTest::onButtonClicked(Ref* sender, Widget::TouchEventType t { if (type == Widget::TouchEventType::ENDED) { - log("button %s clicked", static_cast(sender)->getName().c_str()); + log("button %s clicked", static_cast(sender)->getName().data()); } } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp index 2c2b9f1e925b..a20fc29a83e4 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIRadioButtonTest/UIRadioButtonTest.cpp @@ -291,12 +291,12 @@ void UIRadioButtonTwoGroupsTest::clearRadioButtonGroup(Ref* sender) void UIRadioButtonTwoGroupsTest::addLog(std::string_view log) { - std::string existingLog = _logConsole->getString(); + std::string existingLog{_logConsole->getString()}; if (!existingLog.empty()) { existingLog = existingLog + "\n"; } - existingLog = existingLog + log; + existingLog += log; ++_numberOfLogLines; if (_numberOfLogLines > 10) diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp index 8a078afd73fa..895b4af29707 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.cpp @@ -74,7 +74,7 @@ bool WebViewTest::init() resetBtn->addClickEventListener([=](Ref*) { if (urlTextField->getString().size() != 0) { - _webView->loadURL(std::string("https://") + urlTextField->getString()); + _webView->loadURL(std::string("https://").append(urlTextField->getString())); } }); this->addChild(resetBtn); @@ -172,21 +172,21 @@ bool WebViewTest::init() return false; } -bool WebViewTest::onWebViewShouldStartLoading(ui::WebView* sender, const std::string& url) +bool WebViewTest::onWebViewShouldStartLoading(ui::WebView* sender, std::string_view url) { - CCLOG("onWebViewShouldStartLoading, url is %s", url.c_str()); + CCLOG("onWebViewShouldStartLoading, url is %s", url.data()); // don't do any OpenGL operation here!! It's forbidden! return true; } -void WebViewTest::onWebViewDidFinishLoading(ui::WebView* sender, const std::string& url) +void WebViewTest::onWebViewDidFinishLoading(ui::WebView* sender, std::string_view url) { auto node = (ui::Button*)this->getChildByName("evalJs"); node->setTitleText("start loading..."); - CCLOG("onWebViewDidFinishLoading, url is %s", url.c_str()); + CCLOG("onWebViewDidFinishLoading, url is %s", url.data()); } -void WebViewTest::onWebViewDidFailLoading(ui::WebView* sender, const std::string& url) +void WebViewTest::onWebViewDidFailLoading(ui::WebView* sender, std::string_view url) { - CCLOG("onWebViewDidFailLoading, url is %s", url.c_str()); + CCLOG("onWebViewDidFailLoading, url is %s", url.data()); } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h index 99e8b51930aa..7b02cfdba3fc 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWebViewTest/UIWebViewTest.h @@ -37,9 +37,9 @@ class WebViewTest : public UIScene CREATE_FUNC(WebViewTest); virtual bool init() override; - bool onWebViewShouldStartLoading(cocos2d::ui::WebView* sender, const std::string& url); - void onWebViewDidFinishLoading(cocos2d::ui::WebView* sender, const std::string& url); - void onWebViewDidFailLoading(cocos2d::ui::WebView* sender, const std::string& url); + bool onWebViewShouldStartLoading(cocos2d::ui::WebView* sender, std::string_view url); + void onWebViewDidFinishLoading(cocos2d::ui::WebView* sender, std::string_view url); + void onWebViewDidFailLoading(cocos2d::ui::WebView* sender, std::string_view url); private: cocos2d::ui::WebView* _webView; diff --git a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp index 03c1b847738f..68fc720f33c9 100644 --- a/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp +++ b/tests/cpp-tests/Classes/UnitTest/UnitTest.cpp @@ -373,7 +373,7 @@ void TemplateMapTest::onEnter() UnitTestDemo::onEnter(); auto createMap = []() { - Map ret; + StringMap ret; for (int i = 0; i < 20; ++i) { auto node = Node::create(); @@ -392,7 +392,7 @@ void TemplateMapTest::onEnter() CCASSERT(map1.keys(Node::create()).empty(), "map1's keys don't contain a empty Node."); // Move constructor - Map map2 = createMap(); + auto map2 = createMap(); for (const auto& e : map2) { CC_UNUSED_PARAM(e); @@ -400,7 +400,7 @@ void TemplateMapTest::onEnter() } // Copy constructor - Map map3(map2); + auto map3(map2); for (const auto& e : map3) { CC_UNUSED_PARAM(e); @@ -408,7 +408,7 @@ void TemplateMapTest::onEnter() } // Move assignment operator - Map map4; + StringMap map4; auto unusedNode = Node::create(); map4.insert("unused", unusedNode); map4 = createMap(); @@ -420,7 +420,7 @@ void TemplateMapTest::onEnter() } // Copy assignment operator - Map map5; + StringMap map5; map5 = map4; for (const auto& e : map5) { @@ -500,7 +500,7 @@ void TemplateMapTest::onEnter() CCASSERT(map6.at("insert03") == node3, "The element at insert03 is equal to node3."); // erase - Map mapForErase = createMap(); + StringMap mapForErase = createMap(); mapForErase.erase(mapForErase.find("9")); CCASSERT(mapForErase.find("9") == mapForErase.end(), "9 is already removed."); CCASSERT(mapForErase.size() == 19, "mapForErase's size is 19."); @@ -517,7 +517,7 @@ void TemplateMapTest::onEnter() CCASSERT(mapForErase.size() == 15, "mapForErase's size is 15."); // clear - Map mapForClear = createMap(); + StringMap mapForClear = createMap(); auto mapForClearCopy = mapForClear; mapForClear.clear(); @@ -530,7 +530,7 @@ void TemplateMapTest::onEnter() // get random object // Set the seed by time std::srand((unsigned)time(nullptr)); - Map mapForRandom = createMap(); + StringMap mapForRandom = createMap(); log("<--- begin ---->"); for (int i = 0; i < mapForRandom.size(); ++i) { @@ -539,7 +539,7 @@ void TemplateMapTest::onEnter() log("<---- end ---->"); // Self assignment - Map mapForSelfAssign = createMap(); + StringMap mapForSelfAssign = createMap(); mapForSelfAssign = mapForSelfAssign; CCASSERT(mapForSelfAssign.size() == 20, "mapForSelfAssign's size is 20."); @@ -559,7 +559,7 @@ void TemplateMapTest::onEnter() } } -void TemplateMapTest::constFunc(const Map& map) const +void TemplateMapTest::constFunc(const StringMap& map) const { log("[%s]=(tag)%d", "0", map.at("0")->getTag()); log("[%s]=(tag)%d", "1", map.find("1")->second->getTag()); diff --git a/tests/cpp-tests/Classes/UnitTest/UnitTest.h b/tests/cpp-tests/Classes/UnitTest/UnitTest.h index c4b1ee53784e..b75181fcb0b5 100644 --- a/tests/cpp-tests/Classes/UnitTest/UnitTest.h +++ b/tests/cpp-tests/Classes/UnitTest/UnitTest.h @@ -52,7 +52,7 @@ class TemplateMapTest : public UnitTestDemo CREATE_FUNC(TemplateMapTest); virtual void onEnter() override; virtual std::string subtitle() const override; - void constFunc(const cocos2d::Map& map) const; + void constFunc(const cocos2d::StringMap& map) const; }; class ValueTest : public UnitTestDemo diff --git a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp index 78e90beb221a..02536423e608 100644 --- a/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp +++ b/tests/cpp-tests/Classes/UserDefaultTest/UserDefaultTest.cpp @@ -102,8 +102,9 @@ UserDefaultTest::UserDefaultTest() void UserDefaultTest::doTest() { - this->_label->setString(this->_label->getString() + "\n" + - "********************** init value ***********************"); + std::string strVal{this->_label->getString()}; + this->_label->setString(strVal.append("\n" + "********************** init value ***********************")); // set default value @@ -126,8 +127,9 @@ void UserDefaultTest::doTest() // CCUserDefault::getInstance()->flush(); - this->_label->setString(this->_label->getString() + "\n" + - "********************** after change value ***********************"); + strVal = this->_label->getString(); + this->_label->setString(strVal.append("\n" + "********************** after change value ***********************")); // change the value @@ -150,8 +152,9 @@ void UserDefaultTest::doTest() // logData("float_data"); // logData("double_data"); - this->_label->setString(this->_label->getString() + "\n" + - "********************** after delete value ***********************"); + strVal = this->_label->getString(); + this->_label->setString(strVal.append("\n" + "********************** after delete value ***********************")); UserDefault::getInstance()->deleteValueForKey("string"); UserDefault::getInstance()->deleteValueForKey("integer"); @@ -167,32 +170,32 @@ void UserDefaultTest::printValue() { char strTemp[256] = ""; // print value - std::string ret = UserDefault::getInstance()->getStringForKey("string"); - sprintf(strTemp, "string is %s", ret.c_str()); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + std::string_view ret = UserDefault::getInstance()->getStringForKey("string"); + sprintf(strTemp, "string is %s", ret.data()); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); double d = UserDefault::getInstance()->getDoubleForKey("double"); sprintf(strTemp, "double is %f", d); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); int i = UserDefault::getInstance()->getIntegerForKey("integer"); sprintf(strTemp, "integer is %d", i); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); float f = UserDefault::getInstance()->getFloatForKey("float"); sprintf(strTemp, "float is %f", f); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); bool b = UserDefault::getInstance()->getBoolForKey("bool"); if (b) { sprintf(strTemp, "bool is true"); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); } else { sprintf(strTemp, "bool is false"); - this->_label->setString(this->_label->getString() + "\n" + strTemp); + this->_label->setString((std::string)this->_label->getString() + "\n" + strTemp); } } diff --git a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp index ddb715271db4..0d6dee7fc6a4 100644 --- a/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp +++ b/tests/cpp-tests/Classes/ZipTest/ZipTests.cpp @@ -43,9 +43,9 @@ std::string ZipTest::title() const } static void unzipTest(Label* label, - const std::string& originFile, - const std::string& tmpName, - const std::string& zipFile, + std::string_view originFile, + std::string_view tmpName, + std::string_view zipFile, std::string_view password = "") { @@ -58,7 +58,8 @@ static void unzipTest(Label* label, unz_file_info fileInfo = {0}; char fileName[40] = {0}; - auto newLocal = fu->getWritablePath() + tmpName; + std::string newLocal{fu->getWritablePath()}; + newLocal += tmpName; // copy file to support android if (fu->isFileExist(newLocal)) @@ -67,7 +68,7 @@ static void unzipTest(Label* label, fu->removeFile(newLocal); } - CCLOG("Copy %s to %s", zipFile.c_str(), newLocal.c_str()); + CCLOG("Copy %s to %s", zipFile.data(), newLocal.c_str()); auto writeSuccess = fu->writeDataToFile(fu->getDataFromFile(zipFile), newLocal); if (!writeSuccess) { @@ -100,7 +101,7 @@ static void unzipTest(Label* label, } else { - err = unzOpenCurrentFilePassword(fp, password.c_str()); + err = unzOpenCurrentFilePassword(fp, password.data()); } if (err != UNZ_OK) From ff332f667a93dede5ce638c545454fddf3031287 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 17:52:41 +0800 Subject: [PATCH 20/58] Fix ci --- cocos/renderer/backend/Program.h | 2 +- cocos/renderer/backend/metal/ProgramMTL.h | 2 +- cocos/renderer/backend/metal/ProgramMTL.mm | 2 +- cocos/renderer/backend/opengl/ProgramGL.cpp | 2 +- cocos/renderer/backend/opengl/ProgramGL.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cocos/renderer/backend/Program.h b/cocos/renderer/backend/Program.h index 4ac6ccc01fc4..fceb28f8f456 100644 --- a/cocos/renderer/backend/Program.h +++ b/cocos/renderer/backend/Program.h @@ -99,7 +99,7 @@ class CC_DLL Program : public Ref * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - virtual hlookup::string_map getActiveAttributes() const = 0; + virtual const hlookup::string_map getActiveAttributes() const = 0; /** * Get vertex shader. diff --git a/cocos/renderer/backend/metal/ProgramMTL.h b/cocos/renderer/backend/metal/ProgramMTL.h index a8af638c31db..c6c0be6b9595 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.h +++ b/cocos/renderer/backend/metal/ProgramMTL.h @@ -94,7 +94,7 @@ class ProgramMTL : public Program * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - hlookup::string_map getActiveAttributes() const override; + const hlookup::string_map getActiveAttributes() const override; /** * Get maximum vertex location. diff --git a/cocos/renderer/backend/metal/ProgramMTL.mm b/cocos/renderer/backend/metal/ProgramMTL.mm index d252ce63bbad..3bbe43cae42e 100644 --- a/cocos/renderer/backend/metal/ProgramMTL.mm +++ b/cocos/renderer/backend/metal/ProgramMTL.mm @@ -118,7 +118,7 @@ of this software and associated documentation files (the "Software"), to deal return _fragmentShader->getMaxLocation(); } -hlookup::string_map ProgramMTL::getActiveAttributes() const +const hlookup::string_map ProgramMTL::getActiveAttributes() const { return _vertexShader->getAttributeInfo(); } diff --git a/cocos/renderer/backend/opengl/ProgramGL.cpp b/cocos/renderer/backend/opengl/ProgramGL.cpp index 7a8702a93eaa..1c2f8b431707 100644 --- a/cocos/renderer/backend/opengl/ProgramGL.cpp +++ b/cocos/renderer/backend/opengl/ProgramGL.cpp @@ -210,7 +210,7 @@ bool ProgramGL::getAttributeLocation(std::string_view attributeName, unsigned in return true; } -hlookup::string_map ProgramGL::getActiveAttributes() const +const hlookup::string_map ProgramGL::getActiveAttributes() const { hlookup::string_map attributes; diff --git a/cocos/renderer/backend/opengl/ProgramGL.h b/cocos/renderer/backend/opengl/ProgramGL.h index e6489bc7e404..d433e94c7d16 100644 --- a/cocos/renderer/backend/opengl/ProgramGL.h +++ b/cocos/renderer/backend/opengl/ProgramGL.h @@ -128,7 +128,7 @@ class ProgramGL : public Program * Get active vertex attributes. * @return Active vertex attributes. key is active attribute name, Value is corresponding attribute info. */ - virtual hlookup::string_map getActiveAttributes() const override; + virtual const hlookup::string_map getActiveAttributes() const override; /** * Get uniform buffer size in bytes that can hold all the uniforms. From a982fdf3e6f96b25fb8982feb50a68f14a4c387d Mon Sep 17 00:00:00 2001 From: deal Date: Tue, 28 Dec 2021 17:59:44 +0800 Subject: [PATCH 21/58] Update hlookup.h --- cocos/base/hlookup.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cocos/base/hlookup.h b/cocos/base/hlookup.h index f271224defea..a58ddbbf99c6 100644 --- a/cocos/base/hlookup.h +++ b/cocos/base/hlookup.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "tsl/robin_map.h" #include "tsl/robin_set.h" @@ -47,13 +48,13 @@ using string_map = tsl::robin_map; using string_set = tsl::robin_set; template -inline auto set_item(_Cont& cont, std::string_view key, _Valty&& _Val) +inline auto set_item(_Cont& cont, std::string_view k, _Valty&& v) { - typename _Cont::iterator it = cont.find(key); + typename _Cont::iterator it = cont.find(k); if (it != cont.end()) - it->second = std::move(_Val); + it->second = std::forward<_Valty>(v); else - it = cont.emplace(std::string{key}, std::forward<_Valty>(_Val)).first; + it = cont.emplace(std::string{key}, std::forward<_Valty>(v)).first; return it; } From 7bb593deaf171ba1eb2335179c6a283e9c35ba97 Mon Sep 17 00:00:00 2001 From: deal Date: Tue, 28 Dec 2021 18:10:22 +0800 Subject: [PATCH 22/58] Update hlookup.h --- cocos/base/hlookup.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cocos/base/hlookup.h b/cocos/base/hlookup.h index a58ddbbf99c6..290acd9cb417 100644 --- a/cocos/base/hlookup.h +++ b/cocos/base/hlookup.h @@ -1,3 +1,4 @@ +// Heterogeneous lookup support on c++17 with robin_hash // C++20 demo: Heterogeneous lookup for unordered containers (transparent hashing) // https://en.cppreference.com/w/cpp/container/unordered_map/find #pragma once @@ -54,7 +55,7 @@ inline auto set_item(_Cont& cont, std::string_view k, _Valty&& v) if (it != cont.end()) it->second = std::forward<_Valty>(v); else - it = cont.emplace(std::string{key}, std::forward<_Valty>(v)).first; + it = cont.emplace(k, std::forward<_Valty>(v)).first; return it; } From a1e348f1733a35e9e435d2ceb7e5f2506e78d73e Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 18:21:18 +0800 Subject: [PATCH 23/58] string_view for ios --- cocos/platform/ios/CCApplication-ios.mm | 2 +- cocos/platform/ios/CCES2Renderer-ios.h | 2 +- cocos/platform/ios/CCES2Renderer-ios.m | 2 +- cocos/platform/ios/CCESRenderer-ios.h | 2 +- cocos/ui/UIWebView/UIWebViewImpl-ios.h | 2 ++ cocos/ui/UIWebView/UIWebViewImpl-ios.mm | 20 ++++++++++---------- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/cocos/platform/ios/CCApplication-ios.mm b/cocos/platform/ios/CCApplication-ios.mm index b280722f26ef..79d3576b03e3 100644 --- a/cocos/platform/ios/CCApplication-ios.mm +++ b/cocos/platform/ios/CCApplication-ios.mm @@ -125,7 +125,7 @@ of this software and associated documentation files (the "Software"), to deal bool Application::openURL(std::string_view url) { - NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; + NSString* msg = [NSString stringWithCString:url.data() encoding:NSUTF8StringEncoding]; NSURL* nsUrl = [NSURL URLWithString:msg]; id application = [UIApplication sharedApplication]; diff --git a/cocos/platform/ios/CCES2Renderer-ios.h b/cocos/platform/ios/CCES2Renderer-ios.h index d0ac908bb3cf..7aec434db774 100644 --- a/cocos/platform/ios/CCES2Renderer-ios.h +++ b/cocos/platform/ios/CCES2Renderer-ios.h @@ -37,7 +37,7 @@ # import # import -# import "platform/CCPlatformMacros.h" +//# import "platform/CCPlatformMacros.h" @interface CCES2Renderer : NSObject { // The pixel dimensions of the CAEAGLLayer diff --git a/cocos/platform/ios/CCES2Renderer-ios.m b/cocos/platform/ios/CCES2Renderer-ios.m index c1f04ab98e83..fd49e8f1f459 100644 --- a/cocos/platform/ios/CCES2Renderer-ios.m +++ b/cocos/platform/ios/CCES2Renderer-ios.m @@ -33,7 +33,7 @@ of this software and associated documentation files (the "Software"), to deal #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS #import "platform/ios/CCES2Renderer-ios.h" -#import "platform/CCPlatformMacros.h" +// #import "platform/CCPlatformMacros.h" #import "platform/ios/OpenGL_Internal-ios.h" #if !defined(COCOS2D_DEBUG) || COCOS2D_DEBUG == 0 diff --git a/cocos/platform/ios/CCESRenderer-ios.h b/cocos/platform/ios/CCESRenderer-ios.h index 7498b3099170..c21fb928c578 100644 --- a/cocos/platform/ios/CCESRenderer-ios.h +++ b/cocos/platform/ios/CCESRenderer-ios.h @@ -32,7 +32,7 @@ #include "platform/CCPlatformConfig.h" #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS -# include "platform/CCPlatformMacros.h" +// # include "platform/CCPlatformMacros.h" # import # import diff --git a/cocos/ui/UIWebView/UIWebViewImpl-ios.h b/cocos/ui/UIWebView/UIWebViewImpl-ios.h index 4e55c87f4a92..0d9294fd541c 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-ios.h +++ b/cocos/ui/UIWebView/UIWebViewImpl-ios.h @@ -27,6 +27,8 @@ #include #include +#include +#include @class UIWebViewWrapper; diff --git a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm index 6aa0d355906f..7c1979f0a6de 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-ios.mm +++ b/cocos/ui/UIWebView/UIWebViewImpl-ios.mm @@ -191,7 +191,7 @@ - (void)setFrameWithX:(float)x y:(float)y width:(float)width height:(float)heigh - (void)setJavascriptInterfaceScheme:(std::string_view)scheme { - self.jsScheme = @(scheme.c_str()); + self.jsScheme = @(scheme.data()); } - (void)loadData:(std::string_view)data @@ -200,12 +200,12 @@ - (void)loadData:(std::string_view)data baseURL:(std::string_view)baseURL { auto path = [[NSBundle mainBundle] resourcePath]; - path = [path stringByAppendingPathComponent:@(baseURL.c_str())]; + path = [path stringByAppendingPathComponent:@(baseURL.data())]; auto url = [NSURL fileURLWithPath:path]; - [self.wkWebView loadData:[NSData dataWithBytes:data.c_str() length:data.length()] - MIMEType:@(MIMEType.c_str()) - characterEncodingName:@(encodingName.c_str()) + [self.wkWebView loadData:[NSData dataWithBytes:data.data() length:data.length()] + MIMEType:@(MIMEType.data()) + characterEncodingName:@(encodingName.data()) baseURL:url]; } @@ -216,9 +216,9 @@ - (void)loadHTMLString:(std::string_view)string baseURL:(std::string_view)baseUR [self setupWebView]; } auto path = [[NSBundle mainBundle] resourcePath]; - path = [path stringByAppendingPathComponent:@(baseURL.c_str())]; + path = [path stringByAppendingPathComponent:@(baseURL.data())]; auto url = [NSURL fileURLWithPath:path]; - [self.wkWebView loadHTMLString:@(string.c_str()) baseURL:url]; + [self.wkWebView loadHTMLString:@(string.data()) baseURL:url]; } - (void)loadUrl:(std::string_view)urlString cleanCachedData:(BOOL)needCleanCachedData @@ -227,7 +227,7 @@ - (void)loadUrl:(std::string_view)urlString cleanCachedData:(BOOL)needCleanCache { [self setupWebView]; } - NSURL* url = [NSURL URLWithString:@(urlString.c_str())]; + NSURL* url = [NSURL URLWithString:@(urlString.data())]; NSURLRequest* request = nil; if (needCleanCachedData) @@ -246,7 +246,7 @@ - (void)loadFile:(std::string_view)filePath { [self setupWebView]; } - NSURL* url = [NSURL fileURLWithPath:@(filePath.c_str())]; + NSURL* url = [NSURL fileURLWithPath:@(filePath.data())]; NSURLRequest* request = [NSURLRequest requestWithURL:url]; [self.wkWebView loadRequest:request]; } @@ -287,7 +287,7 @@ - (void)evaluateJS:(std::string_view)js { [self setupWebView]; } - [self.wkWebView evaluateJavaScript:@(js.c_str()) completionHandler:nil]; + [self.wkWebView evaluateJavaScript:@(js.data()) completionHandler:nil]; } - (void)setScalesPageToFit:(const bool)scalesPageToFit From 3dab9cb8b219309cbd34a3ad059ed01d2eff1986 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 19:01:28 +0800 Subject: [PATCH 24/58] Fix ci --- cocos/platform/linux/CCFileUtils-linux.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cocos/platform/linux/CCFileUtils-linux.cpp b/cocos/platform/linux/CCFileUtils-linux.cpp index 91edc069101e..31ab5ada2e1a 100644 --- a/cocos/platform/linux/CCFileUtils-linux.cpp +++ b/cocos/platform/linux/CCFileUtils-linux.cpp @@ -2,8 +2,9 @@ Copyright (c) 2011 Laschweinski Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. +Copyright (c) 2021 Bytedance Inc. -http://www.cocos2d-x.org +https://adxeproject.github.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -115,22 +116,23 @@ std::string FileUtilsLinux::getNativeWritableAbsolutePath() const return _writablePath; } -bool FileUtilsLinux::isFileExistInternal(std::string_view strFilePath) const +bool FileUtilsLinux::isFileExistInternal(std::string_view path) const { DECLARE_GUARD; - if (strFilePath.empty()) + if (path.empty()) { return false; } - std::string strPath = strFilePath; - if (!isAbsolutePath(strPath)) + std::string strPath; + if (!isAbsolutePath(path)) { // Not absolute path, add the default root path at the beginning. - strPath.insert(0, _defaultResRootPath); + strPath.assign(_defaultResRootPath).append(path); + path = strPath; } struct stat sts; - return (stat(strPath.c_str(), &sts) == 0) && S_ISREG(sts.st_mode); + return (stat(path.data(), &sts) == 0) && S_ISREG(sts.st_mode); } NS_CC_END From a7e153c9b0c22184101d323c2893756180a7694e Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 19:10:50 +0800 Subject: [PATCH 25/58] Fix ci --- cocos/ui/UIRichText.cpp | 9 +++++---- .../cocostudio/ActionTimeline/CCActionTimelineCache.cpp | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cocos/ui/UIRichText.cpp b/cocos/ui/UIRichText.cpp index 1188abaa007b..a65700cc4ea2 100644 --- a/cocos/ui/UIRichText.cpp +++ b/cocos/ui/UIRichText.cpp @@ -1,8 +1,9 @@ /**************************************************************************** Copyright (c) 2013 cocos2d-x.org Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. + Copyright (c) 2021 Bytedance Inc. - http://www.cocos2d-x.org + https://adxeproject.github.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -1402,7 +1403,7 @@ cocos2d::Color3B RichText::color3BWithString(std::string_view color) { if (color.length() == 4) { - int r, g, b; + unsigned int r, g, b; sscanf(color.data(), "%*c%1x%1x%1x", &r, &g, &b); r += r * 16; g += g * 16; @@ -1411,13 +1412,13 @@ cocos2d::Color3B RichText::color3BWithString(std::string_view color) } else if (color.length() == 7) { - int r, g, b; + unsigned int r, g, b; sscanf(color.data(), "%*c%2x%2x%2x", &r, &g, &b); return Color3B(r, g, b); } else if (color.length() == 9) { - int r, g, b, a; + unsigned int r, g, b, a; sscanf(color.data(), "%*c%2x%2x%2x%2x", &r, &g, &b, &a); return Color3B(r, g, b); } diff --git a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp index 40b966a8295b..5ca337f08400 100644 --- a/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp +++ b/extensions/cocostudio/ActionTimeline/CCActionTimelineCache.cpp @@ -441,8 +441,6 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithFlatBuffersFile(std: if (action) return action; - auto path = fileName; - std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); CC_ASSERT(FileUtils::getInstance()->isFileExist(fullPath)); @@ -461,8 +459,6 @@ ActionTimeline* ActionTimelineCache::loadAnimationWithDataBuffer(const cocos2d:: if (action) return action; - auto path = fileName; - std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); CC_ASSERT(FileUtils::getInstance()->isFileExist(fullPath)); From d3edb0acefa365d796c7a3e99992e443ecfc5b5d Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 19:12:53 +0800 Subject: [PATCH 26/58] Fix CWE-126 --- cocos/base/CCConsole.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index 79739b01a23f..60c03d7aa6da 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -1630,7 +1630,7 @@ void Console::sendHelp(socket_native_type fd, const hlookup::string_mapgetName().data()); - ssize_t tabs = strlen(command->getName().data()) / 8; + ssize_t tabs = command->getName().length() / 8; tabs = 3 - tabs; for (int j = 0; j < tabs; j++) { From 6639f55c0fd98702d83e86737e2672e918591570 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 19:16:15 +0800 Subject: [PATCH 27/58] Fix linux build --- extensions/Particle3D/PU/CCPUMaterialManager.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extensions/Particle3D/PU/CCPUMaterialManager.cpp b/extensions/Particle3D/PU/CCPUMaterialManager.cpp index 323a2055beb1..3e1d3469e5a3 100644 --- a/extensions/Particle3D/PU/CCPUMaterialManager.cpp +++ b/extensions/Particle3D/PU/CCPUMaterialManager.cpp @@ -178,9 +178,9 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) struct dirent* file; // readdir struct stat statbuf; - if (!(d = opendir(fileFolder.c_str()))) + if (!(d = opendir(fileFolder.data()))) { - CCLOG("error opendir %s!!!\n", fileFolder.c_str()); + CCLOG("error opendir %s!!!\n", fileFolder.data()); return false; } while ((file = readdir(d)) != NULL) @@ -192,7 +192,8 @@ bool PUMaterialCache::loadMaterialsFromSearchPaths(std::string_view fileFolder) if (FileUtils::getInstance()->getFileExtension(file->d_name) == ".material") { - std::string fullpath = fileFolder + "/" + file->d_name; + std::string fullpath{fileFolder}; + fullpath.append("/"sv).append(file->d_name); CCLOG("%s", fullpath.c_str()); loadMaterials(fullpath); state = true; From bc85d545eebe2d2dda44ca7dcf711297161a3411 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 21:28:04 +0800 Subject: [PATCH 28/58] Update version --- README.md | 8 ++++---- README_CN.md | 6 +++--- cocos/adxe.cpp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c85f86c3332e..5b06e3af35aa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # adxe [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) -[![dev](https://img.shields.io/badge/v1.0.0-beta4-yellow.svg)](https://github.com/adxeproject/adxe/releases) +[![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) @@ -9,7 +9,7 @@ [![Linux Build Status](https://github.com/adxeproject/adxe/workflows/linux/badge.svg)](https://github.com/adxeproject/adxe/actions?query=workflow%3Alinux) [![macOS Build Status](https://github.com/adxeproject/adxe/workflows/osx/badge.svg)](https://github.com/adxeproject/adxe/actions?query=workflow%3Aosx) -**This is another more radical fork of *Cocos2d-x-4.0*, use OpenAL for all platforms, single texture multi GPU texture handler, C++ 14/17 and some more (see 'Highlight Features' for more info).** +**This is another more radical fork of *Cocos2d-x-4.0*, use OpenAL for all platforms, single texture multi GPU texture handler, C++ 17 and some more (see 'Highlight Features' for more info).** ### View code with vscode online: - [![github1s](https://img.shields.io/badge/github1s-green.svg)](https://github1s.com/adxeproject/adxe) @@ -36,7 +36,7 @@ * Implement all .wav formats supported by ```OpenAL Soft```, such as MS-ADPCM, ADPCM, ... * Use modern GL loader ```Glad``` * Google [angle](https://github.com/google/angle) renderer backend support -* C++ 14 standard +* C++ 17 standard * IOS SDK 9.0 as minimal deployment * Use fast pugixml * Use [curl](https://github.com/curl/curl) for transferring data with URL syntax @@ -136,7 +136,7 @@ https://github.com/adxeproject/adxe/discussions/411 - @aismann - @weiwest -### Fullly changes since cocos2d-x-4.0 +### Fully changes since cocos2d-x-4.0 - [HIGHLIGHT] Implement Windows WebView using WebView2 Edge Chromium, thanks to @rh101 - [HIGHLIGHT] Windows x64 build support diff --git a/README_CN.md b/README_CN.md index d52c00e6a883..fce3921000b0 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,7 +1,7 @@ # adxe [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) -[![dev](https://img.shields.io/badge/v1.0.0-beta4-yellow.svg)](https://github.com/adxeproject/adxe/releases) +[![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) @@ -11,7 +11,7 @@ [![macOS Build Status](https://github.com/adxeproject/adxe/workflows/osx/badge.svg)](https://github.com/adxeproject/adxe/actions?query=workflow%3Aosx) -**这是另外一个基于 *Cocos2d-x-4.0* 持续维护的分支, 全平台基于OpenAL, c++14/17...** +**这是另外一个基于 *Cocos2d-x-4.0* 持续维护的分支, 全平台基于OpenAL, c++17...** **[English](README.md)** @@ -33,7 +33,7 @@ * AudioEngine实现wav所有 ```openal-soft``` 支持的封装格式, 例如MS-ADPCM, ADPCM等 * 使用现代化的GL加载器glad代替glew * 增加google angle渲染后端支持 -* 设置默认C++标准为C++14 +* C++最低标准要求: C++17 * 设置ios下最低目标平台为ios9.0 * 使用更快的xml解析库pugixml代替tinyxml2 * Downloader全平台统一实现,均基于curl diff --git a/cocos/adxe.cpp b/cocos/adxe.cpp index 1dc63f4fb608..559aea4e0af2 100644 --- a/cocos/adxe.cpp +++ b/cocos/adxe.cpp @@ -33,7 +33,7 @@ NS_CC_BEGIN CC_DLL const char* adxeVersion() { - return "adxe-1.0.0b4"; + return "adxe-1.0.0b5"; } NS_CC_END From 3490c3e95908a8f3fbc22d9e777bc70eefdda704 Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 21:32:25 +0800 Subject: [PATCH 29/58] Update badges --- README.md | 4 ++-- README_CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5b06e3af35aa..66f3515a0e98 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) [![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/adxeproject/adxe/pulls) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) [![Android Build Status](https://github.com/adxeproject/adxe/workflows/android/badge.svg)](https://github.com/adxeproject/adxe/actions?query=workflow%3Aandroid) @@ -19,10 +20,9 @@ **[简体中文](README_CN.md)** ### Purpose Summary -* C++ 14/17 +* C++ 17 * Focus on native game dev (quick starting, easy to use, fast) * Bugfixes ASAP -* Usefull PRs from **you** are welcome (review/merge ASAP) ### Highlight Features * Windows x64 build support diff --git a/README_CN.md b/README_CN.md index fce3921000b0..4ebd5c37b997 100644 --- a/README_CN.md +++ b/README_CN.md @@ -3,6 +3,7 @@ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) [![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/adxeproject/adxe/pulls) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) [![Android Build Status](https://github.com/adxeproject/adxe/workflows/android/badge.svg)](https://github.com/adxeproject/adxe/actions?query=workflow%3Aandroid) @@ -16,11 +17,10 @@ **[English](README.md)** ### 宗旨: -* C++14/17 +* C++17 * Focus on native game dev only * Fix bugs ASAP * Review PR ASAP -* Excellent PRs from any guys are welcome, we will review & merge ASAP ### 主要特性: * Windows x64编译支持 From d4e20643ab7a4c29317882ea417a18a4b721264d Mon Sep 17 00:00:00 2001 From: halx99 Date: Tue, 28 Dec 2021 21:50:41 +0800 Subject: [PATCH 30/58] Update badges --- README.md | 3 ++- README_CN.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 66f3515a0e98..b27f735bfbd9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # adxe -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) + [![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/adxeproject/adxe/pulls) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) diff --git a/README_CN.md b/README_CN.md index 4ebd5c37b997..8784b18e7480 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,8 +1,8 @@ # adxe -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) [![dev](https://img.shields.io/badge/v1.0.0-beta5-yellow.svg)](https://github.com/adxeproject/adxe/releases) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/adxeproject/adxe/blob/master/LICENSE) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1c5628dea478449ea0c6e1b0e30c3be9)](https://app.codacy.com/gh/adxeproject/adxe?utm_source=github.com&utm_medium=referral&utm_content=adxeproject/adxe&utm_campaign=Badge_Grade_Settings) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/adxeproject/adxe/pulls) [![Windows Build Status](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml/badge.svg)](https://github.com/adxeproject/adxe/actions/workflows/windows-ci.yml) From f8ff6a8481a17e7a65829fcaacc31eda73ba3d2c Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 11:25:42 +0800 Subject: [PATCH 31/58] Tidy robin-map --- cocos/CMakeLists.txt | 1 + cocos/base/hlookup.h | 2 +- thirdparty/CMakeLists.txt | 6 ++ thirdparty/README.md | 12 +-- .../include}/tsl/robin_growth_policy.h | 0 .../{ => robin-map/include}/tsl/robin_hash.h | 0 .../{ => robin-map/include}/tsl/robin_map.h | 0 .../{ => robin-map/include}/tsl/robin_set.h | 0 thirdparty/robin-map/tsl-robin-map.natvis | 78 +++++++++++++++++++ 9 files changed, 93 insertions(+), 6 deletions(-) rename thirdparty/{ => robin-map/include}/tsl/robin_growth_policy.h (100%) rename thirdparty/{ => robin-map/include}/tsl/robin_hash.h (100%) rename thirdparty/{ => robin-map/include}/tsl/robin_map.h (100%) rename thirdparty/{ => robin-map/include}/tsl/robin_set.h (100%) create mode 100644 thirdparty/robin-map/tsl-robin-map.natvis diff --git a/cocos/CMakeLists.txt b/cocos/CMakeLists.txt index 389e4295a86e..db93507d5151 100644 --- a/cocos/CMakeLists.txt +++ b/cocos/CMakeLists.txt @@ -179,6 +179,7 @@ add_subdirectory(${ADXE_ROOT_PATH}/extensions ${ENGINE_BINARY_PATH}/extensions) if(MSVC_IDE) target_sources(${ADXE_CORE_LIB} PRIVATE ../thirdparty/yasio/yasio.natvis) + target_sources(${ADXE_CORE_LIB} PRIVATE ../thirdparty/robin-map/tsl-robin-map.natvis) endif() # copy all thirdparty libraries to ${CMAKE_BINARY_DIR}/lib/$ diff --git a/cocos/base/hlookup.h b/cocos/base/hlookup.h index 290acd9cb417..6a6694933316 100644 --- a/cocos/base/hlookup.h +++ b/cocos/base/hlookup.h @@ -37,7 +37,7 @@ struct equal_to return static_cast<_Ty1&&>(_Left) == static_cast<_Ty2&&>(_Right); } - using is_transparent = int; + using is_transparent = void; }; template diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 1b875f49fb98..1ce8941ee94b 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -304,6 +304,7 @@ if(BUILD_DEP_LLHTTP) target_link_libraries(thirdparty llhttp) endif() +# yaml if(BUILD_DEP_YAML_CPP) set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE) @@ -316,6 +317,7 @@ if(BUILD_DEP_YAML_CPP) # target_link_libraries(thirdparty yaml-cpp) endif() +# kcp if(BUILD_DEP_KCP) add_subdirectory(kcp) configure_target_outdir(kcp) @@ -323,6 +325,7 @@ if(BUILD_DEP_KCP) target_compile_definitions(thirdparty PUBLIC YASIO_HAVE_KCP=1) endif() +# fmt-lib add_subdirectory(fmt) target_link_libraries(thirdparty fmt-header-only) configure_target_outdir(fmt) @@ -330,6 +333,9 @@ configure_target_outdir(fmt) # put "thirdparty" into thirdparty folder, too configure_target_outdir(thirdparty) +# robin-map +target_include_directories(thirdparty PUBLIC "robin-map/include") + if(MACOSX OR IOS) add_subdirectory(glsl-optimizer) target_link_libraries(thirdparty diff --git a/thirdparty/README.md b/thirdparty/README.md index 7c206677ea8c..d8d26abfec17 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -181,6 +181,13 @@ - Version: git 65b314a (747) with dtCrowd::getEditableAgentAnim - License: zlib +## robin-map +- Upstream: https://github.com/Tessil/robin-map +- Version: git 0.6.3-84c1bee (101) with modified for more compatible with stl + - Modify `robin_map::iterator->second` to mutable same with `stl map/unordered_map` + - Modify `robin_map::operator[]` key forward by `std::forward` same with `stl map/unordered_map` +- License: MIT + ## stb (stb_image) - Upstream: https://github.com/nothings/stb - Version: 2.27 @@ -191,11 +198,6 @@ - Version: git 1.2.4-ec6bff2 (168) - License: BSD-2-Clause -## tsl (robin-map) -- Upstream: https://github.com/Tessil/robin-map -- Version: git 0.6.3-84c1bee (100) -- License: MIT - ## unzip (minizip-1.2) - Upstream: https://github.com/simdsoft/mz12 - Version: 1.2 with bugfixs & improvements diff --git a/thirdparty/tsl/robin_growth_policy.h b/thirdparty/robin-map/include/tsl/robin_growth_policy.h similarity index 100% rename from thirdparty/tsl/robin_growth_policy.h rename to thirdparty/robin-map/include/tsl/robin_growth_policy.h diff --git a/thirdparty/tsl/robin_hash.h b/thirdparty/robin-map/include/tsl/robin_hash.h similarity index 100% rename from thirdparty/tsl/robin_hash.h rename to thirdparty/robin-map/include/tsl/robin_hash.h diff --git a/thirdparty/tsl/robin_map.h b/thirdparty/robin-map/include/tsl/robin_map.h similarity index 100% rename from thirdparty/tsl/robin_map.h rename to thirdparty/robin-map/include/tsl/robin_map.h diff --git a/thirdparty/tsl/robin_set.h b/thirdparty/robin-map/include/tsl/robin_set.h similarity index 100% rename from thirdparty/tsl/robin_set.h rename to thirdparty/robin-map/include/tsl/robin_set.h diff --git a/thirdparty/robin-map/tsl-robin-map.natvis b/thirdparty/robin-map/tsl-robin-map.natvis new file mode 100644 index 000000000000..f6eb842e29e3 --- /dev/null +++ b/thirdparty/robin-map/tsl-robin-map.natvis @@ -0,0 +1,78 @@ + + + + + + + + {{ size={m_ht.m_nb_elements} }} + + m_ht.m_buckets_data._Mypair._Myval2._Mylast - m_ht.m_buckets_data._Mypair._Myval2._Myfirst + + ((float)m_ht.m_nb_elements) / ((float)(m_ht.m_buckets_data._Mypair._Myval2._Mylast - m_ht.m_buckets_data._Mypair._Myval2._Myfirst)) + + + 0 + + m_ht.m_max_load_factor + + + + m_ht.m_nb_elements + + *bucket + + ++bucket + + + + + + + + {{ size={m_ht.m_nb_elements} }} + + m_ht.m_buckets_data._Mypair._Myval2._Mylast - m_ht.m_buckets_data._Mypair._Myval2._Myfirst + + ((float)m_ht.m_nb_elements) / ((float)(m_ht.m_buckets_data._Mypair._Myval2._Mylast - m_ht.m_buckets_data._Mypair._Myval2._Myfirst)) + + + 0 + + m_ht.m_max_load_factor + + + + m_ht.m_nb_elements + + *bucket + + ++bucket + + + + + + + {*m_bucket} + + *m_bucket + + + + + empty + {*reinterpret_cast<$T1*>(&m_value)} + + *reinterpret_cast<$T1*>(&m_value) + + + + + empty + {reinterpret_cast<$T1*>(&m_value)->second} + + *reinterpret_cast<$T1*>(&m_value) + + + From 60d5896cf24ca97df37a52093e986b6037fdf989 Mon Sep 17 00:00:00 2001 From: deal Date: Wed, 29 Dec 2021 11:35:29 +0800 Subject: [PATCH 32/58] Update README.md [skip ci] --- thirdparty/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/README.md b/thirdparty/README.md index d8d26abfec17..b9b82b7b0b36 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -185,7 +185,7 @@ - Upstream: https://github.com/Tessil/robin-map - Version: git 0.6.3-84c1bee (101) with modified for more compatible with stl - Modify `robin_map::iterator->second` to mutable same with `stl map/unordered_map` - - Modify `robin_map::operator[]` key forward by `std::forward` same with `stl map/unordered_map` + - Forward `robin_map::operator[]` key by `std::forward` same with `stl map/unordered_map` - License: MIT ## stb (stb_image) From d1de186f5ef94d3d710bf2352efb599b76209ff3 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 11:51:07 +0800 Subject: [PATCH 33/58] Fix ci --- thirdparty/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 1ce8941ee94b..3d5309044118 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -334,7 +334,7 @@ configure_target_outdir(fmt) configure_target_outdir(thirdparty) # robin-map -target_include_directories(thirdparty PUBLIC "robin-map/include") +include_directories("robin-map/include") if(MACOSX OR IOS) add_subdirectory(glsl-optimizer) From 822226b89e6c661e29ae601b3f3572bd94d6f4b1 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 11:52:09 +0800 Subject: [PATCH 34/58] Fix ci --- thirdparty/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 3d5309044118..555106d7c633 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -65,6 +65,9 @@ endif() add_library(thirdparty STATIC empty.cpp) +# robin-map +include_directories("robin-map/include") + if(MACOSX OR ANDROID OR WINDOWS) add_subdirectory(zlib) target_link_libraries(thirdparty @@ -333,9 +336,6 @@ configure_target_outdir(fmt) # put "thirdparty" into thirdparty folder, too configure_target_outdir(thirdparty) -# robin-map -include_directories("robin-map/include") - if(MACOSX OR IOS) add_subdirectory(glsl-optimizer) target_link_libraries(thirdparty From 1581e70918aa9a320c3ae7a107e36b03dc801313 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 12:22:59 +0800 Subject: [PATCH 35/58] Fix ci --- thirdparty/CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 555106d7c633..edb7647a3873 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -65,8 +65,11 @@ endif() add_library(thirdparty STATIC empty.cpp) -# robin-map -include_directories("robin-map/include") +# header only libs +target_include_directories(thirdparty + PUBLIC "robin-map/include" + INTERFACE "robin-map/include" +) if(MACOSX OR ANDROID OR WINDOWS) add_subdirectory(zlib) From 8fd4a8afc3ef64025e1166f7b600bc31aa3b2ae6 Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 13:44:39 +0800 Subject: [PATCH 36/58] Fix android ci --- cocos/platform/CMakeLists.txt | 8 ++++++ cocos/platform/android/CMakeLists.txt | 26 ------------------- templates/cpp-template-default/CMakeLists.txt | 7 +++-- templates/lua-template-default/CMakeLists.txt | 7 +++-- tests/cpp-tests/CMakeLists.txt | 8 +++--- tests/fairygui-tests/CMakeLists.txt | 8 +++--- tests/lua-tests/project/CMakeLists.txt | 7 ++--- thirdparty/CMakeLists.txt | 3 +-- 8 files changed, 25 insertions(+), 49 deletions(-) delete mode 100644 cocos/platform/android/CMakeLists.txt diff --git a/cocos/platform/CMakeLists.txt b/cocos/platform/CMakeLists.txt index c91d63fdd5cf..1b60199c7b56 100644 --- a/cocos/platform/CMakeLists.txt +++ b/cocos/platform/CMakeLists.txt @@ -30,6 +30,14 @@ if(ANDROID) platform/android/CCGLViewImpl-android.cpp platform/android/CCFileUtils-android.cpp platform/android/CCEnhanceAPI-android.cpp + platform/android/CCDevice-android.cpp + platform/android/javaactivity-android.cpp + platform/android/jni/JniHelper.cpp + platform/android/jni/TouchesJni.cpp + platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxAccelerometer.cpp + platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp + platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp + platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp ) elseif(WINDOWS) set(COCOS_PLATFORM_SPECIFIC_HEADER diff --git a/cocos/platform/android/CMakeLists.txt b/cocos/platform/android/CMakeLists.txt deleted file mode 100644 index fb10db45a146..000000000000 --- a/cocos/platform/android/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# need to whole-archive this lib -set(target_name cpp_android_spec) - -project(${target_name}) - -set(${target_name}_src - CCDevice-android.cpp - javaactivity-android.cpp - jni/JniHelper.cpp - jni/TouchesJni.cpp - jni/Java_org_cocos2dx_lib_Cocos2dxAccelerometer.cpp - jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp - jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp - jni/Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp -) - -add_library(${target_name} STATIC - ${${target_name}_src} -) - -target_include_directories(${target_name} - PRIVATE .. - PRIVATE ../.. - PRIVATE ../../../thirdparty -) - diff --git a/templates/cpp-template-default/CMakeLists.txt b/templates/cpp-template-default/CMakeLists.txt index 210f150edec0..04bebd1d1ca1 100644 --- a/templates/cpp-template-default/CMakeLists.txt +++ b/templates/cpp-template-default/CMakeLists.txt @@ -133,15 +133,14 @@ set(all_code_files ) if(NOT ANDROID) add_executable(${APP_NAME} ${all_code_files}) + target_link_libraries(${APP_NAME} ${ADXE_LUA_LIB}) else() add_library(${APP_NAME} SHARED ${all_code_files}) - add_subdirectory(${ADXE_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) - + # whole archive ${ADXE_LUA_LIB} to make sure JNI_Onload can be invoke from java + target_link_libraries(${APP_NAME} -Wl,--whole-archive ${ADXE_LUA_LIB} -Wl,--no-whole-archive) config_android_shared_libs("org.cocos2dx.lib" "${CMAKE_CURRENT_SOURCE_DIR}/proj.android/app/src") endif() -target_link_libraries(${APP_NAME} ${ADXE_CORE_LIB}) target_include_directories(${APP_NAME} PRIVATE Classes PRIVATE ${ADXE_ROOT_PATH}/cocos/audio/include/ diff --git a/templates/lua-template-default/CMakeLists.txt b/templates/lua-template-default/CMakeLists.txt index c2f896ee0073..b5559c79d40c 100644 --- a/templates/lua-template-default/CMakeLists.txt +++ b/templates/lua-template-default/CMakeLists.txt @@ -132,17 +132,16 @@ set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) # mark app complie info and libs info if(NOT ANDROID) add_executable(${APP_NAME} ${APP_SRC}) + target_link_libraries(${APP_NAME} ${ADXE_LUA_LIB}) else() add_library(${APP_NAME} SHARED ${APP_SRC}) - add_subdirectory(${ADXE_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) add_subdirectory(${ADXE_ROOT_PATH}/extensions/scripting/lua-bindings/proj.android ${ENGINE_BINARY_PATH}/cocos/lua-android) target_link_libraries(${APP_NAME} -Wl,--whole-archive lua_android_spec -Wl,--no-whole-archive) - + # whole archive ${ADXE_LUA_LIB} to make sure JNI_Onload can be invoke from java + target_link_libraries(${APP_NAME} -Wl,--whole-archive ${ADXE_LUA_LIB} -Wl,--whole-archive) config_android_shared_libs("org.cocos2dx.lib" "${CMAKE_CURRENT_SOURCE_DIR}/frameworks/runtime-src/proj.android/app/src") endif() -target_link_libraries(${APP_NAME} ${ADXE_LUA_LIB}) target_include_directories(${APP_NAME} PRIVATE ${RUNTIME_SRC_ROOT}/Classes) # mark app resources, resource will be copy auto after mark diff --git a/tests/cpp-tests/CMakeLists.txt b/tests/cpp-tests/CMakeLists.txt index 3e73a2fa571b..f8ed4d47810d 100644 --- a/tests/cpp-tests/CMakeLists.txt +++ b/tests/cpp-tests/CMakeLists.txt @@ -524,16 +524,14 @@ set(all_code_files if(NOT ANDROID) add_executable(${APP_NAME} ${all_code_files}) + target_link_libraries(${APP_NAME} ${ADXE_CORE_LIB}) else() add_library(${APP_NAME} SHARED ${all_code_files}) - add_subdirectory(${ADXE_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) - + # whole archive ${ADXE_LUA_LIB} to make sure JNI_Onload can be invoke from java + target_link_libraries(${APP_NAME} -Wl,--whole-archive ${ADXE_CORE_LIB} -Wl,--no-whole-archive) config_android_shared_libs("org.cocos2dx.lib" "${CMAKE_CURRENT_SOURCE_DIR}/proj.android/app/src") endif() -target_link_libraries(${APP_NAME} ${ADXE_CORE_LIB}) - target_include_directories(${APP_NAME} PRIVATE Classes ) diff --git a/tests/fairygui-tests/CMakeLists.txt b/tests/fairygui-tests/CMakeLists.txt index 79860ee1c8f9..45cd00b9218a 100644 --- a/tests/fairygui-tests/CMakeLists.txt +++ b/tests/fairygui-tests/CMakeLists.txt @@ -114,16 +114,14 @@ set(all_code_files # mark app complie info if(NOT ANDROID) add_executable(${APP_NAME} ${all_code_files}) + target_link_libraries(${APP_NAME} ${ADXE_CORE_LIB}) else() add_library(${APP_NAME} SHARED ${all_code_files}) - add_subdirectory(${ADXE_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/platform) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) - + # whole archive ${ADXE_LUA_LIB} to make sure JNI_Onload can be invoke from java + target_link_libraries(${APP_NAME} -Wl,--whole-archive ${ADXE_CORE_LIB} -Wl,--no-whole-archive) config_android_shared_libs("org.cocos2dx.lib" "${CMAKE_CURRENT_SOURCE_DIR}/proj.android/app/src") endif() -target_link_libraries(${APP_NAME} ${ADXE_CORE_LIB}) - target_include_directories(${APP_NAME} PRIVATE Classes) setup_cocos_app_config(${APP_NAME}) diff --git a/tests/lua-tests/project/CMakeLists.txt b/tests/lua-tests/project/CMakeLists.txt index d99dc3cf9714..4a584a28532d 100644 --- a/tests/lua-tests/project/CMakeLists.txt +++ b/tests/lua-tests/project/CMakeLists.txt @@ -104,10 +104,9 @@ set(APP_SRC ${GAME_HEADER} ${GAME_SOURCE}) if(NOT ANDROID) add_executable(${APP_NAME} ${APP_SRC}) + target_link_libraries(${APP_NAME} ${ADXE_LUA_LIB}) else() add_library(${APP_NAME} SHARED ${APP_SRC}) - add_subdirectory(${ADXE_ROOT_PATH}/cocos/platform/android ${ENGINE_BINARY_PATH}/cocos/cpp-android) - target_link_libraries(${APP_NAME} -Wl,--whole-archive cpp_android_spec -Wl,--no-whole-archive) add_subdirectory(${ADXE_ROOT_PATH}/extensions/scripting/lua-bindings/proj.android ${ENGINE_BINARY_PATH}/cocos/lua-android) if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL "x86") #add `-Wl,--no-warn-shared-textrel` to fix warning "shared library text segment is not shareable clang" @@ -116,9 +115,11 @@ else() target_link_libraries(${APP_NAME} -Wl,--whole-archive lua_android_spec -Wl,--no-whole-archive) endif() + # whole archive ${ADXE_LUA_LIB} to make sure JNI_Onload can be invoke from java + target_link_libraries(${APP_NAME} -Wl,--whole-archive ${ADXE_CORE_LIB} -Wl,--no-whole-archive) config_android_shared_libs("org.cocos2dx.lib" "${CMAKE_CURRENT_SOURCE_DIR}/proj.android/app/src") endif() -target_link_libraries(${APP_NAME} ${ADXE_LUA_LIB}) + target_include_directories(${APP_NAME} PRIVATE Classes) if(WIN64) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index edb7647a3873..a5325bbe6a96 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -66,8 +66,7 @@ endif() add_library(thirdparty STATIC empty.cpp) # header only libs -target_include_directories(thirdparty - PUBLIC "robin-map/include" +target_include_directories(thirdparty INTERFACE "robin-map/include" ) From 1af24d145268d5adb0862c3d1b0e5f730000caef Mon Sep 17 00:00:00 2001 From: halx99 Date: Wed, 29 Dec 2021 16:08:20 +0800 Subject: [PATCH 37/58] Improve jni call by jni.hpp Generate literal signature avoid GC allocs --- cocos/base/CCController-android.cpp | 2 +- .../android/CCApplication-android.cpp | 10 +- cocos/platform/android/CCCommon-android.cpp | 2 +- cocos/platform/android/CCDevice-android.cpp | 14 +- .../platform/android/CCFileUtils-android.cpp | 2 +- .../platform/android/CCGLViewImpl-android.cpp | 14 +- .../platform/android/javaactivity-android.cpp | 4 + .../Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp | 6 +- .../Java_org_cocos2dx_lib_Cocos2dxHelper.cpp | 10 +- cocos/platform/android/jni/JniHelper.cpp | 6 +- cocos/platform/android/jni/JniHelper.h | 104 +-- cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp | 34 +- cocos/ui/UIVideoPlayer-android.cpp | 36 +- cocos/ui/UIWebView/UIWebViewImpl-android.cpp | 42 +- thirdparty/CMakeLists.txt | 1 + thirdparty/README.md | 5 + thirdparty/jni.hpp/LICENSE.txt | 17 + thirdparty/jni.hpp/README.md | 94 +++ .../include/jni/advanced_ownership.hpp | 112 +++ thirdparty/jni.hpp/include/jni/array.hpp | 147 ++++ thirdparty/jni.hpp/include/jni/arraylike.hpp | 41 ++ thirdparty/jni.hpp/include/jni/boxing.hpp | 159 ++++ thirdparty/jni.hpp/include/jni/class.hpp | 137 ++++ .../jni.hpp/include/jni/constructor.hpp | 15 + thirdparty/jni.hpp/include/jni/errors.hpp | 125 ++++ thirdparty/jni.hpp/include/jni/field.hpp | 27 + thirdparty/jni.hpp/include/jni/functions.hpp | 684 ++++++++++++++++++ thirdparty/jni.hpp/include/jni/jni.hpp | 26 + thirdparty/jni.hpp/include/jni/make.hpp | 12 + thirdparty/jni.hpp/include/jni/method.hpp | 31 + .../jni.hpp/include/jni/native_method.hpp | 381 ++++++++++ thirdparty/jni.hpp/include/jni/npe.hpp | 24 + thirdparty/jni.hpp/include/jni/object.hpp | 153 ++++ thirdparty/jni.hpp/include/jni/ownership.hpp | 225 ++++++ .../jni.hpp/include/jni/static_field.hpp | 27 + .../jni.hpp/include/jni/static_method.hpp | 31 + thirdparty/jni.hpp/include/jni/string.hpp | 35 + .../jni.hpp/include/jni/string_conversion.hpp | 21 + thirdparty/jni.hpp/include/jni/tagging.hpp | 131 ++++ thirdparty/jni.hpp/include/jni/traits.hpp | 34 + .../jni.hpp/include/jni/type_signature.hpp | 89 +++ .../jni.hpp/include/jni/typed_methods.hpp | 147 ++++ thirdparty/jni.hpp/include/jni/types.hpp | 97 +++ thirdparty/jni.hpp/include/jni/unique.hpp | 220 ++++++ .../jni.hpp/include/jni/weak_reference.hpp | 40 + thirdparty/jni.hpp/include/jni/wrapping.hpp | 152 ++++ 46 files changed, 3572 insertions(+), 154 deletions(-) create mode 100644 thirdparty/jni.hpp/LICENSE.txt create mode 100644 thirdparty/jni.hpp/README.md create mode 100644 thirdparty/jni.hpp/include/jni/advanced_ownership.hpp create mode 100644 thirdparty/jni.hpp/include/jni/array.hpp create mode 100644 thirdparty/jni.hpp/include/jni/arraylike.hpp create mode 100644 thirdparty/jni.hpp/include/jni/boxing.hpp create mode 100644 thirdparty/jni.hpp/include/jni/class.hpp create mode 100644 thirdparty/jni.hpp/include/jni/constructor.hpp create mode 100644 thirdparty/jni.hpp/include/jni/errors.hpp create mode 100644 thirdparty/jni.hpp/include/jni/field.hpp create mode 100644 thirdparty/jni.hpp/include/jni/functions.hpp create mode 100644 thirdparty/jni.hpp/include/jni/jni.hpp create mode 100644 thirdparty/jni.hpp/include/jni/make.hpp create mode 100644 thirdparty/jni.hpp/include/jni/method.hpp create mode 100644 thirdparty/jni.hpp/include/jni/native_method.hpp create mode 100644 thirdparty/jni.hpp/include/jni/npe.hpp create mode 100644 thirdparty/jni.hpp/include/jni/object.hpp create mode 100644 thirdparty/jni.hpp/include/jni/ownership.hpp create mode 100644 thirdparty/jni.hpp/include/jni/static_field.hpp create mode 100644 thirdparty/jni.hpp/include/jni/static_method.hpp create mode 100644 thirdparty/jni.hpp/include/jni/string.hpp create mode 100644 thirdparty/jni.hpp/include/jni/string_conversion.hpp create mode 100644 thirdparty/jni.hpp/include/jni/tagging.hpp create mode 100644 thirdparty/jni.hpp/include/jni/traits.hpp create mode 100644 thirdparty/jni.hpp/include/jni/type_signature.hpp create mode 100644 thirdparty/jni.hpp/include/jni/typed_methods.hpp create mode 100644 thirdparty/jni.hpp/include/jni/types.hpp create mode 100644 thirdparty/jni.hpp/include/jni/unique.hpp create mode 100644 thirdparty/jni.hpp/include/jni/weak_reference.hpp create mode 100644 thirdparty/jni.hpp/include/jni/wrapping.hpp diff --git a/cocos/base/CCController-android.cpp b/cocos/base/CCController-android.cpp index 983b60bcf3a6..d7084d06cc63 100644 --- a/cocos/base/CCController-android.cpp +++ b/cocos/base/CCController-android.cpp @@ -159,7 +159,7 @@ Controller::Controller() void Controller::receiveExternalKeyEvent(int externalKeyCode, bool receive) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.GameControllerHelper"sv, "receiveExternalKeyEvent"sv, _deviceId, + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.GameControllerHelper", "receiveExternalKeyEvent", _deviceId, externalKeyCode, receive); } diff --git a/cocos/platform/android/CCApplication-android.cpp b/cocos/platform/android/CCApplication-android.cpp index 4464e487c602..16927d40d5c7 100644 --- a/cocos/platform/android/CCApplication-android.cpp +++ b/cocos/platform/android/CCApplication-android.cpp @@ -43,7 +43,7 @@ extern "C" size_t __ctype_get_mb_cur_max(void) } #endif -static constexpr std::string_view helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"sv; +static const char* helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"; NS_CC_BEGIN @@ -75,7 +75,7 @@ int Application::run() void Application::setAnimationInterval(float interval) { - JniHelper::callStaticVoidMethod("org/cocos2dx/lib/Cocos2dxRenderer"sv, "setAnimationInterval"sv, interval); + JniHelper::callStaticVoidMethod("org/cocos2dx/lib/Cocos2dxRenderer", "setAnimationInterval", interval); } ////////////////////////////////////////////////////////////////////////// @@ -96,7 +96,7 @@ Application* Application::sharedApplication() const char* Application::getCurrentLanguageCode() { static char code[3] = {0}; - std::string language = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage"sv); + std::string language = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage"); strncpy(code, language.c_str(), 2); code[2] = '\0'; return code; @@ -116,12 +116,12 @@ Application::Platform Application::getTargetPlatform() std::string Application::getVersion() { - return JniHelper::callStaticStringMethod(helperClassName, "getVersion"sv); + return JniHelper::callStaticStringMethod(helperClassName, "getVersion"); } bool Application::openURL(std::string_view url) { - return JniHelper::callStaticBooleanMethod(helperClassName, "openURL"sv, url); + return JniHelper::callStaticBooleanMethod(helperClassName, "openURL", url); } void Application::applicationScreenSizeChanged(int newWidth, int newHeight) {} diff --git a/cocos/platform/android/CCCommon-android.cpp b/cocos/platform/android/CCCommon-android.cpp index e7b99340a190..4dda378de29c 100644 --- a/cocos/platform/android/CCCommon-android.cpp +++ b/cocos/platform/android/CCCommon-android.cpp @@ -35,7 +35,7 @@ NS_CC_BEGIN void ccMessageBox(const char* pszMsg, const char* pszTitle) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "showDialog"sv, pszTitle, pszMsg); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper", "showDialog", pszTitle, pszMsg); } void LuaLog(const char* pszFormat) diff --git a/cocos/platform/android/CCDevice-android.cpp b/cocos/platform/android/CCDevice-android.cpp index be9042b3e017..e5e994fc3a3d 100644 --- a/cocos/platform/android/CCDevice-android.cpp +++ b/cocos/platform/android/CCDevice-android.cpp @@ -33,7 +33,7 @@ THE SOFTWARE. #include "platform/CCFileUtils.h" #include "yasio/cxx17/string_view.hpp" -static constexpr std::string_view helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"sv; +static const char* helperClassName = "org.cocos2dx.lib.Cocos2dxHelper"; NS_CC_BEGIN @@ -42,7 +42,7 @@ int Device::getDPI() static int dpi = -1; if (dpi == -1) { - dpi = JniHelper::callStaticIntMethod(helperClassName, "getDPI"sv); + dpi = JniHelper::callStaticIntMethod(helperClassName, "getDPI"); } return dpi; } @@ -51,17 +51,17 @@ void Device::setAccelerometerEnabled(bool isEnabled) { if (isEnabled) { - JniHelper::callStaticVoidMethod(helperClassName, "enableAccelerometer"sv); + JniHelper::callStaticVoidMethod(helperClassName, "enableAccelerometer"); } else { - JniHelper::callStaticVoidMethod(helperClassName, "disableAccelerometer"sv); + JniHelper::callStaticVoidMethod(helperClassName, "disableAccelerometer"); } } void Device::setAccelerometerInterval(float interval) { - JniHelper::callStaticVoidMethod(helperClassName, "setAccelerometerInterval"sv, interval); + JniHelper::callStaticVoidMethod(helperClassName, "setAccelerometerInterval", interval); } class BitmapDC @@ -176,12 +176,12 @@ Data Device::getTextureDataForText(const char* text, void Device::setKeepScreenOn(bool value) { - JniHelper::callStaticVoidMethod(helperClassName, "setKeepScreenOn"sv, value); + JniHelper::callStaticVoidMethod(helperClassName, "setKeepScreenOn", value); } void Device::vibrate(float duration) { - JniHelper::callStaticVoidMethod(helperClassName, "vibrate"sv, duration); + JniHelper::callStaticVoidMethod(helperClassName, "vibrate", duration); } NS_CC_END diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index fc960983243f..89678cb87ead 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -424,7 +424,7 @@ std::string FileUtilsAndroid::getNativeWritableAbsolutePath() const // Fix for Nexus 10 (Android 4.2 multi-user environment) // the path is retrieved through Java Context.getCacheDir() method std::string path = - JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "getCocos2dxWritablePath"sv); + JniHelper::callStaticStringMethod("org.cocos2dx.lib.Cocos2dxHelper", "getCocos2dxWritablePath"); if (!path.empty()) path.append("/"); diff --git a/cocos/platform/android/CCGLViewImpl-android.cpp b/cocos/platform/android/CCGLViewImpl-android.cpp index 79a2be88241d..8a0ff6eb3c6b 100644 --- a/cocos/platform/android/CCGLViewImpl-android.cpp +++ b/cocos/platform/android/CCGLViewImpl-android.cpp @@ -110,7 +110,7 @@ bool GLViewImpl::isOpenGLReady() void GLViewImpl::end() { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper"sv, "terminateProcess"sv); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxHelper", "terminateProcess"); } void GLViewImpl::swapBuffers() {} @@ -119,11 +119,11 @@ void GLViewImpl::setIMEKeyboardState(bool bOpen) { if (bOpen) { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView"sv, "openIMEKeyboard"sv); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView", "openIMEKeyboard"); } else { - JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView"sv, "closeIMEKeyboard"sv); + JniHelper::callStaticVoidMethod("org.cocos2dx.lib.Cocos2dxGLSurfaceView", "closeIMEKeyboard"); } } @@ -143,9 +143,9 @@ Rect GLViewImpl::getSafeAreaRect() const float marginX = DEFAULT_MARGIN_ANDROID / _scaleX; float marginY = DEFAULT_MARGIN_ANDROID / _scaleY; - bool isScreenRound = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "isScreenRound"sv); - bool hasSoftKeys = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "hasSoftKeys"sv); - bool isCutoutEnabled = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "isCutoutEnabled"sv); + bool isScreenRound = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "isScreenRound"); + bool hasSoftKeys = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "hasSoftKeys"); + bool isCutoutEnabled = JniHelper::callStaticBooleanMethod("org/cocos2dx/lib/Cocos2dxHelper", "isCutoutEnabled"); if (isScreenRound) { @@ -204,7 +204,7 @@ Rect GLViewImpl::getSafeAreaRect() const { // screen with enabled cutout area (ex. Google Pixel 3 XL, Huawei P20, Asus ZenFone 5, etc) static int* safeInsets = - JniHelper::callStaticIntArrayMethod("org/cocos2dx/lib/Cocos2dxHelper"sv, "getSafeInsets"sv); + JniHelper::callStaticIntArrayMethod("org/cocos2dx/lib/Cocos2dxHelper", "getSafeInsets"); if (safeInsets != nullptr) { float safeInsetBottom = safeInsets[0] / _scaleY; diff --git a/cocos/platform/android/javaactivity-android.cpp b/cocos/platform/android/javaactivity-android.cpp index 2865ba594206..de0e05490501 100644 --- a/cocos/platform/android/javaactivity-android.cpp +++ b/cocos/platform/android/javaactivity-android.cpp @@ -35,6 +35,8 @@ THE SOFTWARE. #include #include +#include "jni/jni.hpp" + #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) @@ -72,6 +74,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { JniHelper::setJavaVM(vm); + const char* signature = jni::TypeSignature{}(); + cocos_android_app_init(JniHelper::getEnv()); return JNI_VERSION_1_4; diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp index 70a45a07bbc9..daad8b2d6dad 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxBitmap.cpp @@ -31,16 +31,16 @@ THE SOFTWARE. #include "platform/CCFileUtils.h" #include "base/ccUTF8.h" -static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxBitmap"sv; +static const char* className = "org.cocos2dx.lib.Cocos2dxBitmap"; using namespace cocos2d; int getFontSizeAccordingHeightJni(int height) { - return JniHelper::callStaticIntMethod(className, "getFontSizeAccordingHeight"sv, height); + return JniHelper::callStaticIntMethod(className, "getFontSizeAccordingHeight", height); } std::string getStringWithEllipsisJni(const char* text, float width, float fontSize) { - return JniHelper::callStaticStringMethod(className, "getStringWithEllipsis"sv, text, width, fontSize); + return JniHelper::callStaticStringMethod(className, "getStringWithEllipsis", text, width, fontSize); } diff --git a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp index e8e6cb4a2700..945873ac6d78 100644 --- a/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp +++ b/cocos/platform/android/jni/Java_org_cocos2dx_lib_Cocos2dxHelper.cpp @@ -37,7 +37,7 @@ THE SOFTWARE. #define LOG_TAG "Java_org_cocos2dx_lib_Cocos2dxHelper.cpp" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) -static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxHelper"sv; +static const char* className = "org.cocos2dx.lib.Cocos2dxHelper"; static EditTextCallback s_editTextCallback = nullptr; static void* s_ctx = nullptr; @@ -126,7 +126,7 @@ const char* getApkPath() { if (g_apkPath.empty()) { - g_apkPath = JniHelper::callStaticStringMethod(className, "getAssetsPath"sv); + g_apkPath = JniHelper::callStaticStringMethod(className, "getAssetsPath"); } return g_apkPath.c_str(); @@ -134,7 +134,7 @@ const char* getApkPath() std::string getPackageNameJNI() { - return JniHelper::callStaticStringMethod(className, "getCocos2dxPackageName"sv); + return JniHelper::callStaticStringMethod(className, "getCocos2dxPackageName"); } int getObbAssetFileDescriptorJNI(const char* path, int64_t* startOffset, int64_t* size) @@ -142,7 +142,7 @@ int getObbAssetFileDescriptorJNI(const char* path, int64_t* startOffset, int64_t JniMethodInfo methodInfo; int fd = 0; - if (JniHelper::getStaticMethodInfo(methodInfo, className.data(), "getObbAssetFileDescriptor", + if (JniHelper::getStaticMethodInfo(methodInfo, className, "getObbAssetFileDescriptor", "(Ljava/lang/String;)[J")) { jstring stringArg = methodInfo.env->NewStringUTF(path); @@ -181,7 +181,7 @@ void conversionEncodingJNI(const char* src, int byteSize, const char* fromCharse { JniMethodInfo methodInfo; - if (JniHelper::getStaticMethodInfo(methodInfo, className.data(), "conversionEncoding", + if (JniHelper::getStaticMethodInfo(methodInfo, className, "conversionEncoding", "([BLjava/lang/String;Ljava/lang/String;)[B")) { jbyteArray strArray = methodInfo.env->NewByteArray(byteSize); diff --git a/cocos/platform/android/jni/JniHelper.cpp b/cocos/platform/android/jni/JniHelper.cpp index b75845c64c74..9580ce3c8c60 100644 --- a/cocos/platform/android/jni/JniHelper.cpp +++ b/cocos/platform/android/jni/JniHelper.cpp @@ -343,10 +343,10 @@ void JniHelper::deleteLocalRefs(JNIEnv* env, LocalRefMapType& localRefs) localRefs[env].clear(); } -void JniHelper::reportError(std::string_view className, std::string_view methodName, std::string_view signature) +void JniHelper::reportError(const char* className, const char* methodName, const char* signature) { - LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className.data(), - methodName.data(), signature.data()); + LOGE("Failed to find static java method. Class name: %s, method name: %s, signature: %s ", className, + methodName, signature); } } // namespace cocos2d diff --git a/cocos/platform/android/jni/JniHelper.h b/cocos/platform/android/jni/JniHelper.h index ffc65fc55985..46f98761ef85 100644 --- a/cocos/platform/android/jni/JniHelper.h +++ b/cocos/platform/android/jni/JniHelper.h @@ -2,8 +2,9 @@ Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2013-2016 Chukong Technologies Inc. Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. +Copyright (c) 2021 Bytedance Inc. -http://www.cocos2d-x.org +https://adxeproject.github.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -31,8 +32,17 @@ THE SOFTWARE. #include #include #include +#include #include "platform/CCPlatformMacros.h" #include "math/Vec3.h" +#include "jni/jni.hpp" + +namespace jni { + template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; + template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; + template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; + template <> struct TypeSignature { constexpr auto operator()() const { return TypeSignature{}(); } }; +} NS_CC_BEGIN @@ -74,11 +84,11 @@ class CC_DLL JniHelper @if no such method will log error */ template - static void callStaticVoidMethod(std::string_view className, std::string_view methodName, Ts... xs) + static void callStaticVoidMethod(const char* className, const char* methodName, Ts&&... xs) { cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")V"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; t.env->CallStaticVoidMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -96,12 +106,12 @@ class CC_DLL JniHelper @return value from Java static boolean method if there are proper JniMethodInfo; otherwise false. */ template - static bool callStaticBooleanMethod(std::string_view className, std::string_view methodName, Ts... xs) + static bool callStaticBooleanMethod(const char* className, const char* methodName, Ts&&... xs) { jboolean jret = JNI_FALSE; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")Z"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; jret = t.env->CallStaticBooleanMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -120,12 +130,12 @@ class CC_DLL JniHelper @return value from Java static int method if there are proper JniMethodInfo; otherwise 0. */ template - static int callStaticIntMethod(std::string_view className, std::string_view methodName, Ts... xs) + static int callStaticIntMethod(const char* className, const char* methodName, Ts&&... xs) { jint ret = 0; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")I"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; ret = t.env->CallStaticIntMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -144,12 +154,12 @@ class CC_DLL JniHelper @return value from Java static float method if there are proper JniMethodInfo; otherwise 0. */ template - static float callStaticFloatMethod(std::string_view className, std::string_view methodName, Ts... xs) + static float callStaticFloatMethod(const char* className, const char* methodName, Ts&&... xs) { jfloat ret = 0.0; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; ret = t.env->CallStaticFloatMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -168,12 +178,12 @@ class CC_DLL JniHelper @return address of JniMethodInfo if there are proper JniMethodInfo; otherwise nullptr. */ template - static float* callStaticFloatArrayMethod(std::string_view className, std::string_view methodName, Ts... xs) + static float* callStaticFloatArrayMethod(const char* className, const char* methodName, Ts&&... xs) { static float ret[32]; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature(std::decay_t...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; jfloatArray array = @@ -204,12 +214,12 @@ class CC_DLL JniHelper @return address of JniMethodInfo if there are proper JniMethodInfo; otherwise nullptr. */ template - static int* callStaticIntArrayMethod(std::string_view className, std::string_view methodName, Ts... xs) + static int* callStaticIntArrayMethod(const char* className, const char* methodName, Ts&&... xs) { static int ret[32]; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[I"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature(std::decay_t...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; jintArray array = @@ -240,12 +250,12 @@ class CC_DLL JniHelper @return JniMethodInfo of Vec3 type if there are proper JniMethodInfo; otherwise Vec3(0, 0, 0). */ template - static Vec3 callStaticVec3Method(std::string_view className, std::string_view methodName, Ts... xs) + static Vec3 callStaticVec3Method(const char* className, const char* methodName, Ts&&... xs) { Vec3 ret; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")[F"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature(std::decay_t...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; jfloatArray array = @@ -274,12 +284,12 @@ class CC_DLL JniHelper @return value from Java static double method if there are proper JniMethodInfo; otherwise 0. */ template - static double callStaticDoubleMethod(std::string_view className, std::string_view methodName, Ts... xs) + static double callStaticDoubleMethod(const char* className, const char* methodName, Ts&&... xs) { jdouble ret = 0.0; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")D"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; ret = t.env->CallStaticDoubleMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -298,13 +308,13 @@ class CC_DLL JniHelper @return JniMethodInfo of string type if there are proper JniMethodInfo; otherwise empty string. */ template - static std::string callStaticStringMethod(std::string_view className, std::string_view methodName, Ts... xs) + static std::string callStaticStringMethod(const char* className, const char* methodName, Ts&&... xs) { std::string ret; cocos2d::JniMethodInfo t; - std::string signature = "(" + std::string(getJNISignature(xs...)) + ")Ljava/lang/String;"; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), methodName.data(), signature.c_str())) + const char* signature = jni::TypeSignature...)>{}(); + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, methodName, signature)) { LocalRefMapType localRefs; jstring jret = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID, convert(localRefs, t, xs)...); @@ -379,43 +389,7 @@ class CC_DLL JniHelper static void deleteLocalRefs(JNIEnv* env, LocalRefMapType& localRefs); - static std::string getJNISignature() { return ""; } - - static std::string getJNISignature(bool) { return "Z"; } - - static std::string getJNISignature(char) { return "C"; } - - static std::string getJNISignature(short) { return "S"; } - - static std::string getJNISignature(int) { return "I"; } - - static std::string getJNISignature(long) { return "J"; } - - static std::string getJNISignature(float) { return "F"; } - - static std::string getJNISignature(double) { return "D"; } - - static std::string getJNISignature(const char*) { return "Ljava/lang/String;"; } - - static std::string getJNISignature(std::string_view) { return "Ljava/lang/String;"; } - - static std::string getJNISignature(const std::string&) { return "Ljava/lang/String;"; } - - template - static std::string getJNISignature(T x) - { - // This template should never be instantiated - static_assert(sizeof(x) == 0, "Unsupported argument type"); - return ""; - } - - template - static std::string getJNISignature(T x, Ts... xs) - { - return getJNISignature(x) + getJNISignature(xs...); - } - - static void reportError(std::string_view className, std::string_view methodName, std::string_view signature); + static void reportError(const char* className, const char* methodName, const char* signature); }; NS_CC_END diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp index f184ee5919f1..d99aaea1cd38 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-android.cpp @@ -43,7 +43,7 @@ NS_CC_BEGIN -static constexpr std::string_view editBoxClassName = "org.cocos2dx.lib.Cocos2dxEditBoxHelper"sv; +static const char* editBoxClassName = "org.cocos2dx.lib.Cocos2dxEditBoxHelper"; namespace ui { @@ -90,7 +90,7 @@ EditBoxImplAndroid::EditBoxImplAndroid(EditBox* pEditText) : EditBoxImplCommon(p EditBoxImplAndroid::~EditBoxImplAndroid() { s_allEditBoxes.erase(_editBoxIndex); - JniHelper::callStaticVoidMethod(editBoxClassName, "removeEditBox"sv, _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "removeEditBox", _editBoxIndex); } void EditBoxImplAndroid::createNativeControl(const Rect& frame) @@ -110,7 +110,7 @@ void EditBoxImplAndroid::createNativeControl(const Rect& frame) auto uiWidth = (rightTop.x - leftBottom.x) * glView->getScaleX(); auto uiHeight = (rightTop.y - leftBottom.y) * glView->getScaleY(); LOGD("scaleX = %f", glView->getScaleX()); - _editBoxIndex = JniHelper::callStaticIntMethod(editBoxClassName, "createEditBox"sv, (int)uiLeft, (int)uiTop, + _editBoxIndex = JniHelper::callStaticIntMethod(editBoxClassName, "createEditBox", (int)uiLeft, (int)uiTop, (int)uiWidth, (int)uiHeight, (float)glView->getScaleX()); s_allEditBoxes[_editBoxIndex] = this; } @@ -130,13 +130,13 @@ void EditBoxImplAndroid::setNativeFont(const char* pFontName, int fontSize) realFontPath = realFontPath.substr(sizeof("assets/") - 1); // Chop out the 'assets/' portion of the path. } } - JniHelper::callStaticVoidMethod(editBoxClassName, "setFont"sv, _editBoxIndex, realFontPath, + JniHelper::callStaticVoidMethod(editBoxClassName, "setFont", _editBoxIndex, realFontPath, (float)fontSize * glView->getScaleX()); } void EditBoxImplAndroid::setNativeFontColor(const Color4B& color) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setFontColor"sv, _editBoxIndex, (int)color.r, (int)color.g, + JniHelper::callStaticVoidMethod(editBoxClassName, "setFontColor", _editBoxIndex, (int)color.r, (int)color.g, (int)color.b, (int)color.a); } @@ -147,33 +147,33 @@ void EditBoxImplAndroid::setNativePlaceholderFont(const char* pFontName, int fon void EditBoxImplAndroid::setNativePlaceholderFontColor(const Color4B& color) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderTextColor"sv, _editBoxIndex, (int)color.r, + JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderTextColor", _editBoxIndex, (int)color.r, (int)color.g, (int)color.b, (int)color.a); } void EditBoxImplAndroid::setNativeInputMode(EditBox::InputMode inputMode) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setInputMode"sv, _editBoxIndex, static_cast(inputMode)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setInputMode", _editBoxIndex, static_cast(inputMode)); } void EditBoxImplAndroid::setNativeMaxLength(int maxLength) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setMaxLength"sv, _editBoxIndex, maxLength); + JniHelper::callStaticVoidMethod(editBoxClassName, "setMaxLength", _editBoxIndex, maxLength); } void EditBoxImplAndroid::setNativeInputFlag(EditBox::InputFlag inputFlag) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setInputFlag"sv, _editBoxIndex, static_cast(inputFlag)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setInputFlag", _editBoxIndex, static_cast(inputFlag)); } void EditBoxImplAndroid::setNativeReturnType(EditBox::KeyboardReturnType returnType) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setReturnType"sv, _editBoxIndex, static_cast(returnType)); + JniHelper::callStaticVoidMethod(editBoxClassName, "setReturnType", _editBoxIndex, static_cast(returnType)); } void EditBoxImplAndroid::setNativeTextHorizontalAlignment(cocos2d::TextHAlignment alignment) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setTextHorizontalAlignment"sv, _editBoxIndex, + JniHelper::callStaticVoidMethod(editBoxClassName, "setTextHorizontalAlignment", _editBoxIndex, static_cast(alignment)); } @@ -184,33 +184,33 @@ bool EditBoxImplAndroid::isEditing() void EditBoxImplAndroid::setNativeText(const char* pText) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setText"sv, _editBoxIndex, pText); + JniHelper::callStaticVoidMethod(editBoxClassName, "setText", _editBoxIndex, pText); } void EditBoxImplAndroid::setNativePlaceHolder(const char* pText) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderText"sv, _editBoxIndex, pText); + JniHelper::callStaticVoidMethod(editBoxClassName, "setPlaceHolderText", _editBoxIndex, pText); } void EditBoxImplAndroid::setNativeVisible(bool visible) { // don't need to be implemented on android platform. - JniHelper::callStaticVoidMethod(editBoxClassName, "setVisible"sv, _editBoxIndex, visible); + JniHelper::callStaticVoidMethod(editBoxClassName, "setVisible", _editBoxIndex, visible); } void EditBoxImplAndroid::updateNativeFrame(const Rect& rect) { - JniHelper::callStaticVoidMethod(editBoxClassName, "setEditBoxViewRect"sv, _editBoxIndex, (int)rect.origin.x, + JniHelper::callStaticVoidMethod(editBoxClassName, "setEditBoxViewRect", _editBoxIndex, (int)rect.origin.x, (int)rect.origin.y, (int)rect.size.width, (int)rect.size.height); } void EditBoxImplAndroid::nativeOpenKeyboard() { - JniHelper::callStaticVoidMethod(editBoxClassName, "openKeyboard"sv, _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "openKeyboard", _editBoxIndex); } void EditBoxImplAndroid::nativeCloseKeyboard() { - JniHelper::callStaticVoidMethod(editBoxClassName, "closeKeyboard"sv, _editBoxIndex); + JniHelper::callStaticVoidMethod(editBoxClassName, "closeKeyboard", _editBoxIndex); } void editBoxEditingDidBegin(int index) diff --git a/cocos/ui/UIVideoPlayer-android.cpp b/cocos/ui/UIVideoPlayer-android.cpp index c3e1a4563861..0f61d490fc31 100644 --- a/cocos/ui/UIVideoPlayer-android.cpp +++ b/cocos/ui/UIVideoPlayer-android.cpp @@ -38,7 +38,7 @@ //----------------------------------------------------------------------------------------------------------- -static constexpr std::string_view videoHelperClassName = "org.cocos2dx.lib.Cocos2dxVideoHelper"sv; +static const char* videoHelperClassName = "org.cocos2dx.lib.Cocos2dxVideoHelper"; USING_NS_CC; @@ -60,7 +60,7 @@ int createVideoWidgetJNI() { JniMethodInfo t; int ret = -1; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "createVideoWidget", "()I")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName, "createVideoWidget", "()I")) { ret = t.env->CallStaticIntMethod(t.classID, t.methodID); @@ -73,7 +73,7 @@ int createVideoWidgetJNI() void setLoopingJNI(int index, bool looping) { JniMethodInfo t; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "setLooping", "(IZ)V")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName, "setLooping", "(IZ)V")) { t.env->CallStaticVoidMethod(t.classID, t.methodID, index, looping); @@ -84,7 +84,7 @@ void setLoopingJNI(int index, bool looping) void setUserInputEnabledJNI(int index, bool enableInput) { JniMethodInfo t; - if (JniHelper::getStaticMethodInfo(t, videoHelperClassName.data(), "setUserInputEnabled", "(IZ)V")) + if (JniHelper::getStaticMethodInfo(t, videoHelperClassName, "setUserInputEnabled", "(IZ)V")) { t.env->CallStaticVoidMethod(t.classID, t.methodID, index, enableInput); @@ -121,14 +121,14 @@ VideoPlayer::VideoPlayer() VideoPlayer::~VideoPlayer() { s_allVideoPlayers.erase(_videoPlayerIndex); - JniHelper::callStaticVoidMethod(videoHelperClassName, "removeVideoWidget"sv, _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "removeVideoWidget", _videoPlayerIndex); } void VideoPlayer::setFileName(std::string_view fileName) { _videoURL = FileUtils::getInstance()->fullPathForFilename(fileName); _videoSource = VideoPlayer::Source::FILENAME; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl"sv, _videoPlayerIndex, (int)Source::FILENAME, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl", _videoPlayerIndex, (int)Source::FILENAME, _videoURL); } @@ -136,7 +136,7 @@ void VideoPlayer::setURL(std::string_view videoUrl) { _videoURL = videoUrl; _videoSource = VideoPlayer::Source::URL; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl"sv, _videoPlayerIndex, (int)Source::URL, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoUrl", _videoPlayerIndex, (int)Source::URL, _videoURL); } @@ -164,7 +164,7 @@ void VideoPlayer::draw(Renderer* renderer, const Mat4& transform, uint32_t flags if (flags & FLAGS_TRANSFORM_DIRTY) { auto uiRect = cocos2d::ui::Helper::convertBoundingBoxToScreen(this); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoRect"sv, _videoPlayerIndex, (int)uiRect.origin.x, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoRect", _videoPlayerIndex, (int)uiRect.origin.x, (int)uiRect.origin.y, (int)uiRect.size.width, (int)uiRect.size.height); } @@ -183,7 +183,7 @@ void VideoPlayer::setFullScreenEnabled(bool enabled) _fullScreenEnabled = enabled; auto frameSize = Director::getInstance()->getOpenGLView()->getFrameSize(); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setFullScreenEnabled"sv, _videoPlayerIndex, enabled, + JniHelper::callStaticVoidMethod(videoHelperClassName, "setFullScreenEnabled", _videoPlayerIndex, enabled, (int)frameSize.width, (int)frameSize.height); } } @@ -198,7 +198,7 @@ void VideoPlayer::setKeepAspectRatioEnabled(bool enable) if (_keepAspectRatioEnabled != enable) { _keepAspectRatioEnabled = enable; - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoKeepRatioEnabled"sv, _videoPlayerIndex, enable); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoKeepRatioEnabled", _videoPlayerIndex, enable); } } @@ -225,7 +225,7 @@ void VideoPlayer::play() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "startVideo"sv, _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "startVideo", _videoPlayerIndex); } } @@ -233,7 +233,7 @@ void VideoPlayer::pause() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "pauseVideo"sv, _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "pauseVideo", _videoPlayerIndex); } } @@ -241,7 +241,7 @@ void VideoPlayer::resume() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "resumeVideo"sv, _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "resumeVideo", _videoPlayerIndex); } } @@ -249,7 +249,7 @@ void VideoPlayer::stop() { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "stopVideo"sv, _videoPlayerIndex); + JniHelper::callStaticVoidMethod(videoHelperClassName, "stopVideo", _videoPlayerIndex); } } @@ -257,7 +257,7 @@ void VideoPlayer::seekTo(float sec) { if (!_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "seekVideoTo"sv, _videoPlayerIndex, int(sec * 1000)); + JniHelper::callStaticVoidMethod(videoHelperClassName, "seekVideoTo", _videoPlayerIndex, int(sec * 1000)); } } @@ -282,7 +282,7 @@ void VideoPlayer::setVisible(bool visible) if (!visible || isRunning()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, visible); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, visible); } } @@ -291,14 +291,14 @@ void VideoPlayer::onEnter() Widget::onEnter(); if (isVisible() && !_videoURL.empty()) { - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, true); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, true); } } void VideoPlayer::onExit() { Widget::onExit(); - JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible"sv, _videoPlayerIndex, false); + JniHelper::callStaticVoidMethod(videoHelperClassName, "setVideoVisible", _videoPlayerIndex, false); } void VideoPlayer::addEventListener(const VideoPlayer::ccVideoPlayerCallback& callback) diff --git a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp index 1fe19d175627..13df2a5546ad 100644 --- a/cocos/ui/UIWebView/UIWebViewImpl-android.cpp +++ b/cocos/ui/UIWebView/UIWebViewImpl-android.cpp @@ -37,7 +37,7 @@ #include "ui/UIHelper.h" #include "yasio/cxx17/string_view.hpp" -static constexpr std::string_view className = "org.cocos2dx.lib.Cocos2dxWebViewHelper"sv; +static const char* className = "org.cocos2dx.lib.Cocos2dxWebViewHelper"; #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "", __VA_ARGS__) @@ -155,7 +155,7 @@ namespace int createWebViewJNI() { cocos2d::JniMethodInfo t; - if (cocos2d::JniHelper::getStaticMethodInfo(t, className.data(), "createWebView", "()I")) + if (cocos2d::JniHelper::getStaticMethodInfo(t, className, "createWebView", "()I")) { // LOGD("error: %s,%d",__func__,__LINE__); jint viewTag = t.env->CallStaticIntMethod(t.classID, t.methodID); @@ -209,7 +209,7 @@ WebViewImpl::WebViewImpl(WebView* webView) : _viewTag(-1), _webView(webView) WebViewImpl::~WebViewImpl() { - JniHelper::callStaticVoidMethod(className, "removeWebView"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "removeWebView", _viewTag); s_WebViewImpls.erase(_viewTag); } @@ -219,13 +219,13 @@ void WebViewImpl::loadData(const Data& data, std::string_view baseURL) { std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, dataString, MIMEType, + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, dataString, MIMEType, encoding, baseURL); } void WebViewImpl::loadHTMLString(std::string_view string, std::string_view baseURL) { - JniHelper::callStaticVoidMethod(className, "loadHTMLString"sv, _viewTag, string, getFixedBaseUrl(baseURL)); + JniHelper::callStaticVoidMethod(className, "loadHTMLString", _viewTag, string, getFixedBaseUrl(baseURL)); } void WebViewImpl::loadURL(std::string_view url) @@ -235,58 +235,58 @@ void WebViewImpl::loadURL(std::string_view url) void WebViewImpl::loadURL(std::string_view url, bool cleanCachedData) { - JniHelper::callStaticVoidMethod(className, "loadUrl"sv, _viewTag, url, cleanCachedData); + JniHelper::callStaticVoidMethod(className, "loadUrl", _viewTag, url, cleanCachedData); } void WebViewImpl::loadFile(std::string_view fileName) { auto fullPath = getUrlStringByFileName(fileName); - JniHelper::callStaticVoidMethod(className, "loadFile"sv, _viewTag, fullPath); + JniHelper::callStaticVoidMethod(className, "loadFile", _viewTag, fullPath); } void WebViewImpl::stopLoading() { - JniHelper::callStaticVoidMethod(className, "stopLoading"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "stopLoading", _viewTag); } void WebViewImpl::reload() { - JniHelper::callStaticVoidMethod(className, "reload"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "reload", _viewTag); } bool WebViewImpl::canGoBack() { - return JniHelper::callStaticBooleanMethod(className, "canGoBack"sv, _viewTag); + return JniHelper::callStaticBooleanMethod(className, "canGoBack", _viewTag); } bool WebViewImpl::canGoForward() { - return JniHelper::callStaticBooleanMethod(className, "canGoForward"sv, _viewTag); + return JniHelper::callStaticBooleanMethod(className, "canGoForward", _viewTag); } void WebViewImpl::goBack() { - JniHelper::callStaticVoidMethod(className, "goBack"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "goBack", _viewTag); } void WebViewImpl::goForward() { - JniHelper::callStaticVoidMethod(className, "goForward"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "goForward", _viewTag); } void WebViewImpl::setJavascriptInterfaceScheme(std::string_view scheme) { - JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme"sv, _viewTag, scheme); + JniHelper::callStaticVoidMethod(className, "setJavascriptInterfaceScheme", _viewTag, scheme); } void WebViewImpl::evaluateJS(std::string_view js) { - JniHelper::callStaticVoidMethod(className, "evaluateJS"sv, _viewTag, js); + JniHelper::callStaticVoidMethod(className, "evaluateJS", _viewTag, js); } void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) { - JniHelper::callStaticVoidMethod(className, "setScalesPageToFit"sv, _viewTag, scalesPageToFit); + JniHelper::callStaticVoidMethod(className, "setScalesPageToFit", _viewTag, scalesPageToFit); } bool WebViewImpl::shouldStartLoading(const int viewTag, std::string_view url) @@ -348,29 +348,29 @@ void WebViewImpl::draw(cocos2d::Renderer* renderer, cocos2d::Mat4 const& transfo if (flags & cocos2d::Node::FLAGS_TRANSFORM_DIRTY) { auto uiRect = cocos2d::ui::Helper::convertBoundingBoxToScreen(_webView); - JniHelper::callStaticVoidMethod(className, "setWebViewRect"sv, _viewTag, (int)uiRect.origin.x, + JniHelper::callStaticVoidMethod(className, "setWebViewRect", _viewTag, (int)uiRect.origin.x, (int)uiRect.origin.y, (int)uiRect.size.width, (int)uiRect.size.height); } } void WebViewImpl::setVisible(bool visible) { - JniHelper::callStaticVoidMethod(className, "setVisible"sv, _viewTag, visible); + JniHelper::callStaticVoidMethod(className, "setVisible", _viewTag, visible); } void WebViewImpl::setOpacityWebView(const float opacity) { - JniHelper::callStaticVoidMethod(className, "setOpacityWebView"sv, _viewTag, opacity); + JniHelper::callStaticVoidMethod(className, "setOpacityWebView", _viewTag, opacity); }; float WebViewImpl::getOpacityWebView() const { - return JniHelper::callStaticFloatMethod(className, "getOpacityWebView"sv, _viewTag); + return JniHelper::callStaticFloatMethod(className, "getOpacityWebView", _viewTag); }; void WebViewImpl::setBackgroundTransparent() { - JniHelper::callStaticVoidMethod(className, "setBackgroundTransparent"sv, _viewTag); + JniHelper::callStaticVoidMethod(className, "setBackgroundTransparent", _viewTag); }; void WebViewImpl::setBounces(bool bounces) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index a5325bbe6a96..2a85d27d8b69 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -68,6 +68,7 @@ add_library(thirdparty STATIC empty.cpp) # header only libs target_include_directories(thirdparty INTERFACE "robin-map/include" + INTERFACE "jni.hpp/include" ) if(MACOSX OR ANDROID OR WINDOWS) diff --git a/thirdparty/README.md b/thirdparty/README.md index b9b82b7b0b36..79cd1af021c6 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -79,6 +79,11 @@ - Version: git d78c3d2 - License: MIT +## jni.hpp +- Upstream: https://github.com/mapbox/jni.hpp +- Version: v4.0.0 +- License: MIT-like + ## jpeg (libjpeg-turbo) - Upstream: https://github.com/libjpeg-turbo/libjpeg-turbo - Version: 2.1.2 diff --git a/thirdparty/jni.hpp/LICENSE.txt b/thirdparty/jni.hpp/LICENSE.txt new file mode 100644 index 000000000000..b55eda305dda --- /dev/null +++ b/thirdparty/jni.hpp/LICENSE.txt @@ -0,0 +1,17 @@ +Copyright © 2016, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +The above license excludes the files test/android/jni.h and test/openjdk/jni.h, which are +included for testing purposes and covered by their respective copyrights and licenses. diff --git a/thirdparty/jni.hpp/README.md b/thirdparty/jni.hpp/README.md new file mode 100644 index 000000000000..f17e64f40736 --- /dev/null +++ b/thirdparty/jni.hpp/README.md @@ -0,0 +1,94 @@ +jni.hpp is a modern, type-safe, header-only, C++14 wrapper for [JNI (Java Native Interface)](http://docs.oracle.com/javase/7/docs/technotes/guides/jni/). Its aim is to make calling Java from C++, or C++ from Java, convenient and safe, without sacrificing low-level control, as you commonly do with code generation approaches. + +Two levels of wrappers are provided. + +## Low-level wrappers + +The low-level wrappers match JNI, type-for-type and function-for-function, with modern C++ equivalents in a `jni` namespace. The matching uniformly follows a set of rules. + +**Rules for Names** +* Everything in jni.hpp is in the `jni` namespace. +* When a name exists in JNI, the same name is used in the namespace. +* When the original name is a macro, a lowercase name is used instead, e.g. `jni::jni_ok` for `JNI_OK`. + +**Rules for Types** +* Types corresponding to Java primitive types (`jni::jboolean`, `jni::jint`, `jni::jdouble`, etc.) are matched unchanged. +* Types corresponding to Java reference types (`jni::jobject`, `jni::jclass`, `jni::jarray`, etc.) are non-copyable and non-constructible. Their references and pointers automatically convert to base types as expected. (These types do not hide pointer-ness behind a confusing typedef, like the underlying JNI headers do.) +* `jni::jsize` is `std::size_t`, not a signed integer. jni.hpp checks for overflow in the necessary places. +* Ownership types are instantiations of `unique_ptr`, and `using` declarations are provided for each specific instantiation, e.g. `jni::UniqueGlobalRef`. +* Families of functions, such as `Call*Method` and `CallStatic*Method`, are matched with a single template function, such as `jni::CallMethod` and `jni::CallStaticMethod`. +* `jni::jvalue` and the `Call*MethodV` and `Call*MethodA` function families are made redundant by type safety, and omitted. + +**Rules for Parameters and Results** +* Parameters are passed, and results returned, by value or reference, not by pointer. An exception is made for possibly-null `jni::jobject` parameters and results, which _are_ pointers. +* When transferring ownership out of a function, the return type is an ownership type. +* When transferring ownership into a function, the parameter type is an ownership type. +* Output parameters are returned, not passed as pointer-to-pointer. When there are multiple outputs, they are returned as a `std::tuple`. +* Whenever a function receives paired "pointer to `T` and length" parameters, an overload is provided that accepts a statically-sized array, `std::array`, `std::vector`, or (if `T` is a character type) `std::basic_string` argument. These overloads compute the length automatically. +* In string-related functions, `char16_t` replaces `jchar`. + +**Rules for Error Handling** + +* Errors are thrown, not returned or otherwise left to be explicitly checked. +* Pending Java exceptions are checked after every JNI call that may produce a pending Java exception, and thrown as `jni::PendingJavaException`. +* [Invocation API](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp9502) errors are thrown as `std::system_error`s containing `std::error_code`s with a custom category. + +## High-level wrappers + +The high-level wrappers provide additional syntactic convenience and type safety when working with non-primitive Java types. They are built around the concept of _class tags_. A class tag is a C++ type that provides a static `Name` method returning a fully-qualified Java class name, thus associating a unique C++ type with the corresponding Java class. For example: + +```C++ +struct Math { static constexpr auto Name() { return "java/lang/Math"; } }; +``` + +The high-level wrappers consist of a set of classes templated on class tag: + +* `jni::Class`, a wrapper for a reference to the Java class associated with the tag. +* `jni::Object`, a wrapper for a (possibly-null) reference to an instance of the Java class associated with the tag. +* `jni::Array`, a wrapper for a (possibly-null) reference to a Java array. The element type `E` is a jni.hpp primitive type or `Object`. +* `jni::Constructor`, a wrapper for a constructor for the the Java class associated with the tag. The result type `R` and each argument type in `Args` is a jni.hpp primitive type or `Object`. +* `jni::Method`, a wrapper for an instance method of the Java class associated with the tag. The result type `R` and each argument type in `Args` is a jni.hpp primitive type or `Object`. +* `jni::StaticMethod`, a wrapper for a static method of the Java class associated with the tag. The result type `R` and each argument type in `Args` is a jni.hpp primitive type or `Object`. +* `jni::Field`, a wrapper for an instance field of the Java class associated with the tag, and providing `Get` and `Set` methods. The field type `T` is a jni.hpp primitive type or `Object`. +* `jni::StaticField`, a wrapper for a static field of the Java class associated with the tag, and providing `Get` and `Set` methods. The field type `T` is a jni.hpp primitive type or `Object`. + +## Method Registration + +Registering native methods is a central part of JNI, and jni.hpp provides several features that make this task safer and more convenient. The jni.hpp wrapper method `jni::RegisterNatives` has the following signature: + +```C++ +template < class... Methods > +void RegisterNatives(jni::JNIEnv& env, jni::jclass&, const Methods&... methods); +``` + +In other words, rather than receiving a length and pointer to an array of `JNIMethod`s, it takes a variable number of variable types. This allows `jni::RegisterNatives` to type check the methods, ensuring that their type signatures are valid for JNI. + +Use the helper function `jni::MakeNativeMethod` to construct method arguments for `jni::RegisterNatives`. `jni::MakeNativeMethod` wraps your method in a `try` / `catch` block that translates C++ exceptions to Java exceptions. It is overloaded on the following combinations of arguments: + +* A `const char *` name, `const char *` signature, and lambda. The type of the first parameter of the lambda must be `jni::JNIEnv&`. The type of the second parameter must be either `jni::jclass*` (for a native static method) or `jni::jobject*` (for a native instance method). The result type must be a JNI primitive type or type convertable to `jni::jobject*`. (These requirements are type checked.) +* A `const char *` name, `const char *` signature, and function pointer. The function has the same parameter and return type requirements as the lambda. In order to guarantee a unique exception-handling wrapper for each unique function pointer, the function pointer must be provided as a _template parameter_ rather than method parameter: + + ```C++ + jni::MakeNativeMethod(name, signature) + ``` + + The repetition of `myFunction` with `decltype` is necessary because it is not possible to infer the function type from the non-type template parameter. You may wish to define and use a macro to avoid the repetition. +* A `const char *` name and lamba whose parameter and return types use high-level jni.hpp wrapper types. In this case, jni.hpp will compute the signature automatically. +* A `const char *` name and function pointer whose parameter and return types use high-level jni.hpp wrapper types. Again, jni.hpp will compute the signature automatically, and again, the function pointer must be provided as a template parameter rather than method parameter. + +Finally, jni.hpp provides a mechanism for registering a "native peer": a long-lived native object corresponding to a Java object, usually created when the Java object is created and destroyed when the Java object's finalizer runs. Between creation and finalization, a pointer to the native peer is stored in a `long` field on the Java object. jni.hpp will take care of wrapping lambdas, function pointers, or member function pointers with code that automatically gets the value of this field, casts it to a pointer to the peer, and calls the member function (or passes a reference to the peer as an argument to the lambda or function pointer). See the example code for details. + +## Example code + +Example code for both the low-level and high-level wrappers is provided in [the `examples` subdirectory](https://github.com/mapbox/jni.hpp/tree/master/examples). This code shows the use of jni.hpp for: + +* Registering native methods such that they can be called from Java. +* Calling back into Java methods from native methods. +* Native peer registration. + +## Prior art + +* Many code generation approaches. SWIG, [JavaCPP](https://github.com/bytedeco/javacpp), and so on. But jni.hpp is explicitly not a binding generator. +* [JniHelpers](https://github.com/spotify/JniHelpers) is similar in spirit. In comparison, jni.hpp takes advantage of modern C++ features such as `unique_ptr` and variadic templates, introduces no preprocessor macros, and is header-only -- no build step required. +* I hear that Boost.Python is similar, but I did not reference it in building this library. +* The low-level wrapping strategy is inspired by [Lisa Lippincott's presentation "How to call C libraries from C++"](https://github.com/jfirebaugh/PlusPlus) from Cppcon 2014, and by her previous work ["The Nitrogen Manifesto"](http://nitric.sourceforge.net/The%20Nitrogen%20Manifesto.pdf). However jni.hpp does not use "PlusPlus", the wrapping library abstraction mentioned in the presentation; I found it to be a poor economy compared to simply writing out the wrappers manually. diff --git a/thirdparty/jni.hpp/include/jni/advanced_ownership.hpp b/thirdparty/jni.hpp/include/jni/advanced_ownership.hpp new file mode 100644 index 000000000000..aada43fbce52 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/advanced_ownership.hpp @@ -0,0 +1,112 @@ +#pragma once + +#include + +namespace jni + { + // A deleter that gets the JNIEnv via GetEnv, rather than storing the value passed to the constructor. + // The deleting thread must have a JVM attachment. + // + // Useful when deletion will happen on an auxiliary thread, particularly the finalizer thread. In such + // cases, you may use one of the following: + // + // low-level: UniqueGlobalRef and NewGlobalRef + // high-level: Global, EnvGettingDeleter> and obj.NewGlobalRef + // + template < RefDeletionMethod DeleteRef > + class EnvGettingDeleter + { + private: + JavaVM* vm = nullptr; + + public: + EnvGettingDeleter() = default; + EnvGettingDeleter(JNIEnv& e) : vm(&GetJavaVM(e)) {} + + void operator()(jobject* p) const + { + if (p) + { + assert(vm); + (GetEnv(*vm).*DeleteRef)(Unwrap(p)); + } + } + }; + + // A deleter that first tries GetEnv, but falls back to AttachCurrentThread if a JVM is not already attached. + // In the latter case, it detaches after deleting the reference. + // + // Useful when deletion will happen on an auxiliary thread which may or may not have a JVM attachment. In such + // cases, you may use one of the following: + // + // low-level: UniqueGlobalRef and NewGlobalRef + // high-level: Global, EnvAttachingDeleter> and obj.NewGlobalRef + // + template < RefDeletionMethod DeleteRef > + class EnvAttachingDeleter + { + private: + JavaVM* vm = nullptr; + + public: + EnvAttachingDeleter() = default; + EnvAttachingDeleter(JNIEnv& e) : vm(&GetJavaVM(e)) {} + + void operator()(jobject* p) const + { + if (p) + { + assert(vm); + JNIEnv* env = nullptr; + jint err = vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_1); + if (err == JNI_OK) + { + (env->*DeleteRef)(Unwrap(p)); + } + else if (err == JNI_EDETACHED) + { + ((*AttachCurrentThread(*vm)).*DeleteRef)(Unwrap(p)); + } + else + { + CheckErrorCode(err); + } + } + } + }; + + // A deleter that tries to get the JNIEnv via GetEnv, and does nothing if that fails. + // + // This is used to ignore GlobalRef deletions that happen after a thread has been detached, + // for instance during process shutdown, when there's no need to release the reference anyway. + // Specifically, it's what Class::Singleton uses. + // + template < RefDeletionMethod DeleteRef > + class EnvIgnoringDeleter + { + private: + JavaVM* vm = nullptr; + + public: + EnvIgnoringDeleter() = default; + EnvIgnoringDeleter(JNIEnv& e) : vm(&GetJavaVM(e)) {} + + void operator()(jobject* p) const + { + if (p) + { + assert(vm); + JNIEnv* env = nullptr; + jint err = vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_1); + if (err == JNI_OK) + { + (env->*DeleteRef)(Unwrap(p)); + } + else if (err != JNI_EDETACHED) + { + CheckErrorCode(err); + } + } + } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/array.hpp b/thirdparty/jni.hpp/include/jni/array.hpp new file mode 100644 index 000000000000..9c3338d79d66 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/array.hpp @@ -0,0 +1,147 @@ +#pragma once + +#include +#include +#include +#include + +namespace jni + { + template < class E, class Enable > + class Array; + + template < class E > + class Array< E, std::enable_if_t::value> > : public Object< ArrayTag > + { + public: + using SuperType = Object< ArrayTag >; + using UntaggedType = typename SuperType::UntaggedType; + using ElementType = E; + + protected: + explicit Array(std::nullptr_t = nullptr) + {} + + explicit Array(UntaggedType* p) + : SuperType(p) + {} + + Array(const Array&) = delete; + Array& operator=(const Array&) = delete; + + public: + jsize Length(JNIEnv& env) const + { + return GetArrayLength(env, SafeDereference(env, this->get())); + } + + ElementType Get(JNIEnv& env, jsize index) const + { + ElementType e; + GetArrayRegion(env, SafeDereference(env, this->get()), index, 1, &e); + return e; + } + + void Set(JNIEnv& env, jsize index, const ElementType& value) + { + SetArrayRegion(env, SafeDereference(env, this->get()), index, 1, &value); + } + + template < class Array > + void GetRegion(JNIEnv& env, jsize start, Array& buf) const + { + GetArrayRegion(env, SafeDereference(env, this->get()), start, buf); + } + + template < class Array > + void SetRegion(JNIEnv& env, jsize start, const Array& buf) + { + SetArrayRegion(env, SafeDereference(env, this->get()), start, buf); + } + + static Local> New(JNIEnv& env, jsize length) + { + return Local>(env, &NewArray(env, length)); + } + }; + + template < class TheTag > + class Array< Object > : public Object< ArrayTag> > + { + public: + using SuperType = Object< ArrayTag> >; + using UntaggedType = typename SuperType::UntaggedType; + using TagType = TheTag; + using ElementType = Object; + using UntaggedElementType = typename ElementType::UntaggedType; + + protected: + explicit Array(std::nullptr_t = nullptr) + {} + + explicit Array(UntaggedType* p) + : SuperType(p) + {} + + Array(const Array&) = delete; + Array& operator=(const Array&) = delete; + + public: + jsize Length(JNIEnv& env) const + { + return GetArrayLength(env, SafeDereference(env, this->get())); + } + + Local Get(JNIEnv& env, jsize index) const + { + return Local(env, + reinterpret_cast( + GetObjectArrayElement(env, SafeDereference(env, this->get()), index))); + } + + void Set(JNIEnv& env, jsize index, const ElementType& value) + { + SetObjectArrayElement(env, SafeDereference(env, this->get()), index, Untag(value)); + } + + static Local>> New(JNIEnv& env, jsize length, const Object* initialElement = nullptr) + { + return Local>>(env, &NewObjectArray(env, length, *Class::Singleton(env), initialElement ? initialElement->get() : nullptr)); + } + }; + + template < class T > + std::vector MakeAnything(ThingToMake>, JNIEnv& env, const Array& array) + { + NullCheck(env, array.get()); + std::vector result(GetArrayLength(env, *array)); + GetArrayRegion(env, *array, 0, result); + return result; + } + + template < class T > + Local> MakeAnything(ThingToMake>, JNIEnv& env, const std::vector& array) + { + Local> result = Local>(env, &NewArray(env, array.size())); + SetArrayRegion(env, *result, 0, array); + return result; + } + + inline + std::string MakeAnything(ThingToMake, JNIEnv& env, const Array& array) + { + NullCheck(env, array.get()); + std::string result; + result.resize(GetArrayLength(env, *array)); + GetArrayRegion(env, *array, 0, result.size(), reinterpret_cast(&result[0])); + return result; + } + + inline + Local> MakeAnything(ThingToMake>, JNIEnv& env, const std::string& string) + { + Local> result(env, &NewArray(env, string.size())); + SetArrayRegion(env, *result, 0, string.size(), reinterpret_cast(&string[0])); + return result; + } + } diff --git a/thirdparty/jni.hpp/include/jni/arraylike.hpp b/thirdparty/jni.hpp/include/jni/arraylike.hpp new file mode 100644 index 000000000000..d605f8493ed8 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/arraylike.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include +#include + +namespace jni + { + template < class T > struct IsArraylike: std::false_type {}; + + template < class E, std::size_t n > struct IsArraylike< E[n] > : std::true_type {}; + template < class E, std::size_t n > struct IsArraylike< std::array > : std::true_type {}; + template < class E, class A > struct IsArraylike< std::vector > : std::true_type {}; + template < class C, class T, class A > struct IsArraylike< std::basic_string > : std::true_type {}; + + + template < class T > struct ArraylikeElementType; + + template < class E, std::size_t n > struct ArraylikeElementType< E[n] > { using Type = E; }; + template < class E, std::size_t n > struct ArraylikeElementType< std::array > { using Type = E; }; + template < class E, class A > struct ArraylikeElementType< std::vector > { using Type = E; }; + template < class C, class T, class A > struct ArraylikeElementType< std::basic_string > { using Type = C; }; + + template < class T > using ArraylikeElement = typename ArraylikeElementType::type; + + + template < class E, std::size_t n > E * ArraylikeData(E(&a)[n]) { return a; } + template < class E, std::size_t n > E * ArraylikeData( std::array& a) { return a.data(); } + template < class E, std::size_t n > E const * ArraylikeData(const std::array& a) { return a.data(); } + template < class E, class A > E * ArraylikeData( std::vector& a) { return a.data(); } + template < class E, class A > E const * ArraylikeData(const std::vector& a) { return a.data(); } + template < class C, class T, class A > C * ArraylikeData( std::basic_string& a) { return &a[0]; } + template < class C, class T, class A > C const * ArraylikeData(const std::basic_string& a) { return &a[0]; } + + + template < class E, std::size_t n > std::size_t ArraylikeSize(E(&)[n]) { return n; } + template < class E, std::size_t n > std::size_t ArraylikeSize(const std::array&) { return n; } + template < class E, class A > std::size_t ArraylikeSize(const std::vector& a) { return a.size(); } + template < class C, class T, class A > std::size_t ArraylikeSize(const std::basic_string& a) { return a.size(); } + } diff --git a/thirdparty/jni.hpp/include/jni/boxing.hpp b/thirdparty/jni.hpp/include/jni/boxing.hpp new file mode 100644 index 000000000000..566036164101 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/boxing.hpp @@ -0,0 +1,159 @@ +#pragma once + +#include +#include + +namespace jni + { + template < class > struct Boxer; + template < class > struct Unboxer; + + template < class Unboxed > + decltype(auto) Box(JNIEnv& env, Unboxed&& unboxed) + { + return Boxer::type>().Box(env, std::forward(unboxed)); + } + + template < class T > + decltype(auto) Unbox(JNIEnv& env, const T& boxed) + { + return Unboxer().Unbox(env, boxed); + } + + + struct BooleanTag + { + using SuperTag = ObjectTag; + static constexpr auto Name() { return "java/lang/Boolean"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "booleanValue"; } + }; + + struct CharacterTag + { + using SuperTag = ObjectTag; + static constexpr auto Name() { return "java/lang/Character"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "charValue"; } + }; + + struct NumberTag + { + using SuperTag = ObjectTag; + static constexpr auto Name() { return "java/lang/Number"; } + }; + + struct ByteTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Byte"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "byteValue"; } + }; + + struct ShortTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Short"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "shortValue"; } + }; + + struct IntegerTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Integer"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "intValue"; } + }; + + struct LongTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Long"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "longValue"; } + }; + + struct FloatTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Float"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "floatValue"; } + }; + + struct DoubleTag + { + using SuperTag = NumberTag; + static constexpr auto Name() { return "java/lang/Double"; } + static constexpr auto BoxStaticMethodName() { return "valueOf"; } + static constexpr auto UnboxMethodName() { return "doubleValue"; } + }; + + + using Boolean = Object; + using Character = Object; + using Number = Object; + using Byte = Object; + using Short = Object; + using Integer = Object; + using Long = Object; + using Float = Object; + using Double = Object; + + + template < class Tag, class Unboxed > + struct PrimitiveTypeBoxer + { + Local> Box(JNIEnv& env, Unboxed unboxed) const + { + static auto& klass = Class::Singleton(env); + static auto box = klass.template GetStaticMethod (Unboxed)>(env, Tag::BoxStaticMethodName()); + return klass.Call(env, box, unboxed); + } + }; + + template <> struct Boxer< jboolean > : PrimitiveTypeBoxer< BooleanTag , jboolean > {}; + template <> struct Boxer< jbyte > : PrimitiveTypeBoxer< ByteTag , jbyte > {}; + template <> struct Boxer< jchar > : PrimitiveTypeBoxer< CharacterTag , jchar > {}; + template <> struct Boxer< jshort > : PrimitiveTypeBoxer< ShortTag , jshort > {}; + template <> struct Boxer< jint > : PrimitiveTypeBoxer< IntegerTag , jint > {}; + template <> struct Boxer< jlong > : PrimitiveTypeBoxer< LongTag , jlong > {}; + template <> struct Boxer< jfloat > : PrimitiveTypeBoxer< FloatTag , jfloat > {}; + template <> struct Boxer< jdouble > : PrimitiveTypeBoxer< DoubleTag , jdouble > {}; + + + template < class Tag, class Unboxed > + struct PrimitiveTypeUnboxer + { + Unboxed Unbox(JNIEnv& env, const Object& boxed) const + { + static auto& klass = Class::Singleton(env); + static auto unbox = klass.template GetMethod(env, Tag::UnboxMethodName()); + return boxed.Call(env, unbox); + } + }; + + template <> struct Unboxer< BooleanTag > : PrimitiveTypeUnboxer< BooleanTag , jboolean > {}; + template <> struct Unboxer< ByteTag > : PrimitiveTypeUnboxer< ByteTag , jbyte > {}; + template <> struct Unboxer< CharacterTag > : PrimitiveTypeUnboxer< CharacterTag , jchar > {}; + template <> struct Unboxer< ShortTag > : PrimitiveTypeUnboxer< ShortTag , jshort > {}; + template <> struct Unboxer< IntegerTag > : PrimitiveTypeUnboxer< IntegerTag , jint > {}; + template <> struct Unboxer< LongTag > : PrimitiveTypeUnboxer< LongTag , jlong > {}; + template <> struct Unboxer< FloatTag > : PrimitiveTypeUnboxer< FloatTag , jfloat > {}; + template <> struct Unboxer< DoubleTag > : PrimitiveTypeUnboxer< DoubleTag , jdouble > {}; + + + template < class Tag > + struct Boxer> + { + const Object& Box(JNIEnv&, const jni::Object& o) const { return o; } + }; + + template < class Tag > + struct Unboxer + { + const Object& Unbox(JNIEnv&, const jni::Object& o) const { return o; } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/class.hpp b/thirdparty/jni.hpp/include/jni/class.hpp new file mode 100644 index 000000000000..6cf96c2caacc --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/class.hpp @@ -0,0 +1,137 @@ +#pragma once + +#include +#include +#include +#include + +namespace jni + { + template < class TheTag, class... > class Constructor; + template < class TheTag, class > class Field; + template < class TheTag, class > class StaticField; + template < class TheTag, class > class Method; + template < class TheTag, class > class StaticMethod; + + template < class TheTag > + class Class : public Object + { + public: + using TagType = TheTag; + using SuperType = Object; + using UntaggedType = jclass; + + protected: + explicit Class(std::nullptr_t = nullptr) + {} + + explicit Class(UntaggedType* p) + : SuperType(p) + {} + + Class(const Class&) = delete; + Class& operator=(const Class&) = delete; + + public: + template < class... ExpectedArgs, class... ActualArgs > + auto New(JNIEnv& env, const Constructor& method, const ActualArgs&... args) const + -> std::enable_if_t< Conjunction...>::value, Local> > + { + return Local>(env, &NewObject(env, *this->get(), method, Untag(args)...)); + } + + template < class T > + auto Get(JNIEnv& env, const StaticField& field) const + -> std::enable_if_t< IsPrimitive::value, T > + { + return jni::GetStaticField(env, *this->get(), field); + } + + template < class T > + auto Get(JNIEnv& env, const StaticField& field) const + -> std::enable_if_t< !IsPrimitive::value, Local > + { + return Local(env, reinterpret_cast(jni::GetStaticField(env, *this->get(), field))); + } + + template < class T > + auto Set(JNIEnv& env, const StaticField& field, T value) const + -> std::enable_if_t< IsPrimitive::value > + { + SetStaticField(env, *this->get(), field, value); + } + + template < class Expected, class Actual > + auto Set(JNIEnv& env, const StaticField& field, const Actual& value) const + -> std::enable_if_t< !IsPrimitive::value + && std::is_convertible::value > + { + SetStaticField(env, *this->get(), field, value.get()); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const StaticMethod& method, const ActualArgs&... args) const + -> std::enable_if_t< IsPrimitive::value + && Conjunction...>::value, R > + { + return CallStaticMethod(env, *this->get(), method, Untag(args)...); + } + + template < class R, class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const StaticMethod& method, const ActualArgs&... args) const + -> std::enable_if_t< !IsPrimitive::value + && !std::is_void::value + && Conjunction...>::value, Local > + { + return Local(env, reinterpret_cast(CallStaticMethod(env, *this->get(), method, Untag(args)...))); + } + + template < class... ExpectedArgs, class... ActualArgs > + auto Call(JNIEnv& env, const StaticMethod& method, const ActualArgs&... args) const + -> std::enable_if_t< Conjunction...>::value > + { + CallStaticMethod(env, *this->get(), method, Untag(args)...); + } + + static Local Find(JNIEnv& env) + { + return Local(env, &FindClass(env, TagType::Name())); + } + + static const Class& Singleton(JNIEnv& env) + { + static Global singleton = NewGlobal(env, Find(env)); + return singleton; + } + + template < class... Args > + Constructor GetConstructor(JNIEnv& env) const + { + return Constructor(env, *this); + } + + template < class T > + Field GetField(JNIEnv& env, const char* name) const + { + return Field(env, *this, name); + } + + template < class T > + StaticField GetStaticField(JNIEnv& env, const char* name) const + { + return StaticField(env, *this, name); + } + + template < class T > + Method GetMethod(JNIEnv& env, const char* name) const + { + return Method(env, *this, name); + } + + template < class T > + StaticMethod GetStaticMethod(JNIEnv& env, const char* name) const + { + return StaticMethod(env, *this, name); + } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/constructor.hpp b/thirdparty/jni.hpp/include/jni/constructor.hpp new file mode 100644 index 000000000000..97896c95acee --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/constructor.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace jni + { + template < class TagType, class... Args > + class Constructor : public Method + { + public: + Constructor(JNIEnv& env, const Class& clazz) + : Method(env, clazz, "") + {} + }; + } diff --git a/thirdparty/jni.hpp/include/jni/errors.hpp b/thirdparty/jni.hpp/include/jni/errors.hpp new file mode 100644 index 000000000000..3d91f0d03c73 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/errors.hpp @@ -0,0 +1,125 @@ +#pragma once + +#include +#include + +#include +#include + +namespace std + { + template <> struct is_error_code_enum : public true_type {}; + } + +namespace jni + { + inline const std::error_category& ErrorCategory() + { + class Impl : public std::error_category + { + public: + const char* name() const noexcept override + { + return "JNI"; + } + + std::string message(int ev) const override + { + switch (static_cast(ev)) + { + case jni_ok: return "OK"; + case jni_err: return "Unspecified error"; + case jni_edetached: return "Detached error"; + case jni_eversion: return "Version error"; + } + return "Unknown error"; + } + }; + + static Impl impl; + return impl; + } + + inline void CheckErrorCode(jint err) + { + if (err != JNI_OK) throw std::system_error(err, ErrorCategory()); + } + + + // An exception class indicating the presence of a pending Java exception. + // Note that it does not extract the message or other information from the + // Java exception; it's not possible to do so without clearing the pending + // Java exception, and the calling code needs the option not to do that. + // In most cases, the desired behavior is that the thrown PendingJavaException + // is caught by an exception handler just before returning to JVM control, and + // discarded there. Upon returning to JVM control, Java exception handling + // will take over, processing the still-pending Java exception. + + class PendingJavaException {}; + + template < class R > + R CheckJavaException(JNIEnv& env, R&& r) + { + if (env.ExceptionCheck()) { + env.ExceptionDescribe(); + throw PendingJavaException(); + } + return std::move(r); + } + + inline void CheckJavaException(JNIEnv& env) + { + if (env.ExceptionCheck()) { + env.ExceptionDescribe(); + throw PendingJavaException(); + } + } + + inline void CheckJavaExceptionThenErrorCode(JNIEnv& env, jint err) + { + CheckJavaException(env); + CheckErrorCode(err); + } + + + inline ::jclass JavaErrorClass(JNIEnv& env) + { + return env.FindClass("java/lang/Error"); + } + + // A function to be called from within a try / catch wrapper for a native method: + // + // void nativeMethod(JNIEnv* env, ...) + // { + // try + // { + // ... + // } + // catch (...) + // { + // jni::ThrowJavaError(*env, std::current_exception()); + // } + // } + // + // `PendingJavaException` is caught and ignored, other exceptions are converted to + // a pending Java exception of class `java.lang.Error`. + + inline void ThrowJavaError(JNIEnv& env, std::exception_ptr e) + { + try + { + std::rethrow_exception(e); + } + catch (const PendingJavaException&) + { + } + catch (const std::exception& e) + { + env.ThrowNew(JavaErrorClass(env), e.what()); + } + catch (...) + { + env.ThrowNew(JavaErrorClass(env), "unknown native exception"); + } + } + } diff --git a/thirdparty/jni.hpp/include/jni/field.hpp b/thirdparty/jni.hpp/include/jni/field.hpp new file mode 100644 index 000000000000..0f7b7140955d --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/field.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace jni + { + template < class TheTag, class T > + class Field + { + private: + jfieldID& field; + + public: + using TagType = TheTag; + using FieldType = T; + + Field(JNIEnv& env, const Class& clazz, const char* name) + : field(GetFieldID(env, *clazz, name, TypeSignature()())) + {} + + operator jfieldID&() const { return field; } + }; + } diff --git a/thirdparty/jni.hpp/include/jni/functions.hpp b/thirdparty/jni.hpp/include/jni/functions.hpp new file mode 100644 index 000000000000..b559d205628f --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/functions.hpp @@ -0,0 +1,684 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace jni + { + inline jint GetVersion(JNIEnv& env) + { + return env.GetVersion(); + } + + + inline jclass& DefineClass(JNIEnv& env, const char* name, jobject& loader, const jbyte* buf, jsize size) + { + return *CheckJavaException(env, + Wrap(env.DefineClass(name, Unwrap(loader), buf, Unwrap(size)))); + } + + template < class Array > + auto DefineClass(JNIEnv& env, const char* name, jobject& loader, const Array& buf) + -> std::enable_if_t< IsArraylike::value, jclass& > + { + return DefineClass(env, name, loader, ArraylikeData(buf), ArraylikeSize(buf)); + } + + inline jclass& FindClass(JNIEnv& env, const char* name) + { + return *CheckJavaException(env, Wrap(env.FindClass(name))); + } + + + inline jmethodID* FromReflectedMethod(JNIEnv& env, jobject* obj) + { + return CheckJavaException(env, + Wrap(env.FromReflectedMethod(Unwrap(obj)))); + } + + inline jfieldID* FromReflectedField(JNIEnv& env, jobject* obj) + { + return CheckJavaException(env, + Wrap(env.FromReflectedField(Unwrap(obj)))); + } + + inline jobject& ToReflectedMethod(JNIEnv& env, jclass& clazz, jmethodID& method, bool isStatic) + { + return *CheckJavaException(env, + Wrap(env.ToReflectedMethod(Unwrap(clazz), Unwrap(method), isStatic))); + } + + inline jobject& ToReflectedField(JNIEnv& env, jclass& clazz, jfieldID& field, bool isStatic) + { + return *CheckJavaException(env, + Wrap(env.ToReflectedField(Unwrap(clazz), Unwrap(field), isStatic))); + } + + + inline jclass* GetSuperclass(JNIEnv& env, jclass& clazz) + { + return CheckJavaException(env, + Wrap(env.GetSuperclass(Unwrap(clazz)))); + } + + inline bool IsAssignableFrom(JNIEnv& env, jclass& clazz1, jclass& clazz2) + { + return CheckJavaException(env, + env.IsAssignableFrom(Unwrap(clazz1), Unwrap(clazz2))); + } + + + [[noreturn]] inline void Throw(JNIEnv& env, jthrowable& obj) + { + CheckErrorCode(env.Throw(Unwrap(obj))); + throw PendingJavaException(); + } + + [[noreturn]] inline void ThrowNew(JNIEnv& env, jclass& clazz, const char* msg = nullptr) + { + CheckErrorCode(env.ThrowNew(Unwrap(clazz), msg)); + throw PendingJavaException(); + } + + inline bool ExceptionCheck(JNIEnv& env) + { + return env.ExceptionCheck(); + } + + inline jthrowable* ExceptionOccurred(JNIEnv& env) + { + return Wrap(env.ExceptionOccurred()); + } + + inline void ExceptionDescribe(JNIEnv& env) + { + env.ExceptionDescribe(); + } + + inline void ExceptionClear(JNIEnv& env) + { + env.ExceptionClear(); + } + + [[noreturn]] inline void FatalError(JNIEnv& env, const char* msg) + { + env.FatalError(msg); + std::abort(); + } + + + inline UniqueLocalFrame PushLocalFrame(JNIEnv& env, jint capacity) + { + CheckJavaExceptionThenErrorCode(env, env.PushLocalFrame(capacity)); + return UniqueLocalFrame(&env, LocalFrameDeleter()); + } + + inline jobject* PopLocalFrame(JNIEnv& env, UniqueLocalFrame&& frame, jobject* result = nullptr) + { + frame.release(); + return CheckJavaException(env, + Wrap(env.PopLocalFrame(Unwrap(result)))); + } + + + template < template < RefDeletionMethod > class Deleter, class T > + UniqueGlobalRef NewGlobalRef(JNIEnv& env, T* t) + { + jobject* obj = Wrap(env.NewGlobalRef(Unwrap(t))); + CheckJavaException(env); + if (t && !obj) + throw std::bad_alloc(); + return UniqueGlobalRef(reinterpret_cast(obj), Deleter<&JNIEnv::DeleteGlobalRef>(env)); + } + + template < class T > + UniqueGlobalRef NewGlobalRef(JNIEnv& env, T* t) + { + return NewGlobalRef(env, t); + } + + // Attempt to promote a weak reference to a strong one. Returns an empty result + // if the weak reference has expired. + template < template < RefDeletionMethod > class Deleter, class T, template < RefDeletionMethod > class WeakDeleter > + UniqueGlobalRef NewGlobalRef(JNIEnv& env, const UniqueWeakGlobalRef& t) + { + jobject* obj = Wrap(env.NewGlobalRef(Unwrap(t))); + CheckJavaException(env); + return UniqueGlobalRef(reinterpret_cast(obj), Deleter<&JNIEnv::DeleteGlobalRef>(env)); + } + + template < class T, template < RefDeletionMethod > class WeakDeleter > + UniqueGlobalRef NewGlobalRef(JNIEnv& env, const UniqueWeakGlobalRef& t) + { + return NewGlobalRef(env, t); + } + + template < class T, template < RefDeletionMethod > class Deleter > + void DeleteGlobalRef(JNIEnv& env, UniqueGlobalRef&& ref) + { + env.DeleteGlobalRef(Unwrap(ref.release())); + CheckJavaException(env); + } + + + template < class T > + UniqueLocalRef NewLocalRef(JNIEnv& env, T* t) + { + jobject* obj = Wrap(env.NewLocalRef(Unwrap(t))); + CheckJavaException(env); + if (t && !obj) + throw std::bad_alloc(); + return UniqueLocalRef(reinterpret_cast(obj), DefaultRefDeleter<&JNIEnv::DeleteLocalRef>(env)); + } + + // Attempt to promote a weak reference to a strong one. Returns an empty result + // if the weak reference has expired. + template < class T, template < RefDeletionMethod > class WeakDeleter > + UniqueLocalRef NewLocalRef(JNIEnv& env, const UniqueWeakGlobalRef& t) + { + jobject* obj = Wrap(env.NewLocalRef(Unwrap(t))); + CheckJavaException(env); + return UniqueLocalRef(reinterpret_cast(obj), DefaultRefDeleter<&JNIEnv::DeleteLocalRef>(env)); + } + + template < class T > + void DeleteLocalRef(JNIEnv& env, UniqueLocalRef&& ref) + { + env.DeleteLocalRef(Unwrap(ref.release())); + CheckJavaException(env); + } + + inline void EnsureLocalCapacity(JNIEnv& env, jint capacity) + { + CheckJavaExceptionThenErrorCode(env, env.EnsureLocalCapacity(capacity)); + } + + + template < template < RefDeletionMethod > class Deleter, class T > + UniqueWeakGlobalRef NewWeakGlobalRef(JNIEnv& env, T* t) + { + jobject* obj = Wrap(env.NewWeakGlobalRef(Unwrap(t))); + CheckJavaException(env); + if (t && !obj) + throw std::bad_alloc(); + return UniqueWeakGlobalRef(reinterpret_cast(obj), Deleter<&JNIEnv::DeleteWeakGlobalRef>(env)); + } + + template < class T > + UniqueWeakGlobalRef NewWeakGlobalRef(JNIEnv& env, T* t) + { + return NewWeakGlobalRef(env, t); + } + + template < class T, template < RefDeletionMethod > class Deleter > + void DeleteWeakGlobalRef(JNIEnv& env, UniqueWeakGlobalRef&& ref) + { + env.DeleteWeakGlobalRef(Unwrap(ref.release())); + CheckJavaException(env); + } + + + inline bool IsSameObject(JNIEnv& env, jobject* ref1, jobject* ref2) + { + return CheckJavaException(env, + env.IsSameObject(Unwrap(ref1), Unwrap(ref2))); + } + + inline jobject& AllocObject(JNIEnv& env, jclass& clazz) + { + return *CheckJavaException(env, + Wrap(env.AllocObject(Unwrap(clazz)))); + } + + template < class... Args > + jobject& NewObject(JNIEnv& env, jclass& clazz, jmethodID& method, Args&&... args) + { + return *CheckJavaException(env, + Wrap(env.NewObject(Unwrap(clazz), Unwrap(method), Unwrap(std::forward(args))...))); + } + + inline jclass& GetObjectClass(JNIEnv& env, jobject& obj) + { + return *CheckJavaException(env, + Wrap(env.GetObjectClass(Unwrap(obj)))); + } + + inline bool IsInstanceOf(JNIEnv& env, jobject* obj, jclass& clazz) + { + return CheckJavaException(env, + env.IsInstanceOf(Unwrap(obj), Unwrap(clazz))) == JNI_TRUE; + } + + + inline jmethodID& GetMethodID(JNIEnv& env, jclass& clazz, const char* name, const char* sig) + { + return *CheckJavaException(env, + Wrap(env.GetMethodID(Unwrap(clazz), name, sig))); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallMethod(JNIEnv& env, jobject* obj, jmethodID& method, Args&&... args) + { + return CheckJavaException(env, + Wrap((env.*(TypedMethods::CallMethod))(Unwrap(obj), Unwrap(method), Unwrap(std::forward(args))...))); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallMethod(JNIEnv& env, jobject* obj, jmethodID& method, Args&&... args) + { + env.CallVoidMethod(Unwrap(obj), Unwrap(method), Unwrap(std::forward(args))...); + CheckJavaException(env); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallNonvirtualMethod(JNIEnv& env, jobject* obj, jclass& clazz, jmethodID& method, Args&&... args) + { + return CheckJavaException(env, + Wrap((env.*(TypedMethods::CallNonvirtualMethod))(Unwrap(obj), Unwrap(clazz), Unwrap(method), Unwrap(std::forward(args))...))); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallNonvirtualMethod(JNIEnv& env, jobject* obj, jclass& clazz, jmethodID& method, Args&&... args) + { + env.CallNonvirtualVoidMethod(Unwrap(obj), Unwrap(clazz), Unwrap(method), Unwrap(std::forward(args))...); + CheckJavaException(env); + } + + + inline jfieldID& GetFieldID(JNIEnv& env, jclass& clazz, const char* name, const char* sig) + { + return *CheckJavaException(env, + Wrap(env.GetFieldID(Unwrap(clazz), name, sig))); + } + + template < class T > + T GetField(JNIEnv& env, jobject* obj, jfieldID& field) + { + return CheckJavaException(env, + Wrap((env.*(TypedMethods::GetField))(Unwrap(obj), Unwrap(field)))); + } + + template < class T > + void SetField(JNIEnv& env, jobject* obj, jfieldID& field, T value) + { + (env.*(TypedMethods::SetField))(Unwrap(obj), Unwrap(field), Unwrap(value)); + CheckJavaException(env); + } + + + inline jmethodID& GetStaticMethodID(JNIEnv& env, jclass& clazz, const char* name, const char* sig) + { + return *CheckJavaException(env, + Wrap(env.GetStaticMethodID(Unwrap(clazz), name, sig))); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallStaticMethod(JNIEnv& env, jclass& clazz, jmethodID& method, Args&&... args) + { + return CheckJavaException(env, + Wrap((env.*(TypedMethods::CallStaticMethod))(Unwrap(clazz), Unwrap(method), Unwrap(std::forward(args))...))); + } + + template < class R, class... Args > + std::enable_if_t::value, R> + CallStaticMethod(JNIEnv& env, jclass& clazz, jmethodID& method, Args&&... args) + { + env.CallStaticVoidMethod(Unwrap(clazz), Unwrap(method), Unwrap(std::forward(args))...); + CheckJavaException(env); + } + + + inline jfieldID& GetStaticFieldID(JNIEnv& env, jclass& clazz, const char* name, const char* sig) + { + return *CheckJavaException(env, + Wrap(env.GetStaticFieldID(Unwrap(clazz), name, sig))); + } + + template < class T > + T GetStaticField(JNIEnv& env, jclass& clazz, jfieldID& field) + { + return CheckJavaException(env, + Wrap((env.*(TypedMethods::GetStaticField))(Unwrap(clazz), Unwrap(field)))); + } + + template < class T > + void SetStaticField(JNIEnv& env, jclass& clazz, jfieldID& field, T value) + { + (env.*(TypedMethods::SetStaticField))(Unwrap(clazz), Unwrap(field), Unwrap(value)); + CheckJavaException(env); + } + + + inline jstring& NewString(JNIEnv& env, const char16_t* chars, jsize len) + { + return *CheckJavaException(env, + Wrap(env.NewString(Unwrap(chars), Unwrap(len)))); + } + + template < class Array > + auto NewString(JNIEnv& env, const Array& chars) + -> std::enable_if_t< IsArraylike::value, jstring& > + { + return NewString(env, ArraylikeData(chars), ArraylikeSize(chars)); + } + + inline jsize GetStringLength(JNIEnv& env, jstring& string) + { + return CheckJavaException(env, + Wrap(env.GetStringLength(Unwrap(string)))); + } + + inline std::tuple GetStringChars(JNIEnv& env, jstring& string) + { + ::jboolean isCopy = JNI_FALSE; + const char16_t* result = CheckJavaException(env, + Wrap(env.GetStringChars(Unwrap(string), &isCopy))); + return std::make_tuple(UniqueStringChars(result, StringCharsDeleter(env, string)), isCopy); + } + + inline void ReleaseStringChars(JNIEnv& env, jstring& string, UniqueStringChars&& chars) + { + env.ReleaseStringChars(Unwrap(string), Unwrap(chars.release())); + CheckJavaException(env); + } + + inline jstring& NewStringUTF(JNIEnv& env, const char* bytes) + { + return *CheckJavaException(env, + Wrap(env.NewStringUTF(bytes))); + } + + inline jsize GetStringUTFLength(JNIEnv& env, jstring& string) + { + return CheckJavaException(env, + Wrap(env.GetStringUTFLength(Unwrap(string)))); + } + + inline std::tuple GetStringUTFChars(JNIEnv& env, jstring& string) + { + ::jboolean isCopy = JNI_FALSE; + const char* result = CheckJavaException(env, + env.GetStringUTFChars(Unwrap(string), &isCopy)); + return std::make_tuple(UniqueStringUTFChars(result, StringUTFCharsDeleter(env, string)), isCopy); + } + + inline void ReleaseStringUTFChars(JNIEnv& env, jstring& string, UniqueStringUTFChars&& chars) + { + env.ReleaseStringUTFChars(Unwrap(string), chars.release()); + CheckJavaException(env); + } + + inline void GetStringRegion(JNIEnv& env, jstring& string, jsize start, jsize len, char16_t* buf) + { + env.GetStringRegion(Unwrap(string), Unwrap(start), Unwrap(len), Unwrap(buf)); + CheckJavaException(env); + } + + template < class Array > + auto GetStringRegion(JNIEnv& env, jstring& string, jsize start, Array& buf) + -> std::enable_if_t< IsArraylike::value > + { + GetStringRegion(env, string, start, ArraylikeSize(buf), ArraylikeData(buf)); + } + + inline void GetStringUTFRegion(JNIEnv& env, jstring& string, jsize start, jsize len, char* buf) + { + env.GetStringUTFRegion(Unwrap(string), Unwrap(start), Unwrap(len), buf); + CheckJavaException(env); + } + + template < class Array > + auto GetStringUTFRegion(JNIEnv& env, jstring& string, jsize start, Array& buf) + -> std::enable_if_t< IsArraylike::value > + { + GetStringUTFRegion(env, string, start, ArraylikeSize(buf), ArraylikeData(buf)); + } + + inline std::tuple GetStringCritical(JNIEnv& env, jstring& string) + { + ::jboolean isCopy = JNI_FALSE; + const char16_t* result = CheckJavaException(env, + Wrap(env.GetStringCritical(Unwrap(string), &isCopy))); + return std::make_tuple(UniqueStringCritical(result, StringCriticalDeleter(env, string)), isCopy); + } + + inline void ReleaseStringCritical(JNIEnv& env, jstring& string, UniqueStringCritical&& chars) + { + env.ReleaseStringCritical(Unwrap(string), Unwrap(chars.release())); + CheckJavaException(env); + } + + + template < class E > + jsize GetArrayLength(JNIEnv& env, jarray& array) + { + return CheckJavaException(env, + Wrap(env.GetArrayLength(Unwrap(array)))); + } + + template < class E > + jarray& NewArray(JNIEnv& env, jsize length) + { + return *CheckJavaException(env, + Wrap*>((env.*(TypedMethods::NewArray))(Unwrap(length)))); + } + + template < class E > + std::tuple, bool> GetArrayElements(JNIEnv& env, jarray& array) + { + ::jboolean isCopy = JNI_FALSE; + E* result = CheckJavaException(env, + (env.*(TypedMethods::GetArrayElements))(Unwrap(array), &isCopy)); + return std::make_tuple(UniqueArrayElements(result, ArrayElementsDeleter(env, array)), isCopy); + } + + template < class E > + void ReleaseArrayElements(JNIEnv& env, jarray& array, E* elems) + { + (env.*(TypedMethods::ReleaseArrayElements))(Unwrap(array), elems, JNI_COMMIT); + CheckJavaException(env); + } + + template < class E > + void ReleaseArrayElements(JNIEnv& env, jarray& array, UniqueArrayElements&& elems) + { + (env.*(TypedMethods::ReleaseArrayElements))(Unwrap(array), elems.release(), 0); + CheckJavaException(env); + } + + template < class E > + std::tuple, bool> GetPrimitiveArrayCritical(JNIEnv& env, jarray& array) + { + ::jboolean isCopy = JNI_FALSE; + void* result = CheckJavaException(env, + env.GetPrimitiveArrayCritical(Unwrap(array), &isCopy)); + return std::make_tuple(UniquePrimitiveArrayCritical(result, PrimitiveArrayCriticalDeleter(env, array)), isCopy); + } + + template < class E > + void ReleasePrimitiveArrayCritical(JNIEnv& env, jarray& array, void* carray) + { + env.ReleasePrimitiveArrayCritical(Unwrap(array), carray, 0); + CheckJavaException(env); + } + + template < class E > + void ReleasePrimitiveArrayCritical(JNIEnv& env, jarray& array, UniquePrimitiveArrayCritical&& carray) + { + env.ReleasePrimitiveArrayCritical(Unwrap(array), carray.release(), JNI_COMMIT); + CheckJavaException(env); + } + + template < class T > + void GetArrayRegion(JNIEnv& env, jarray& array, jsize start, jsize len, T* buf) + { + (env.*(TypedMethods::GetArrayRegion))(Unwrap(array), Unwrap(start), Unwrap(len), buf); + CheckJavaException(env); + } + + template < class T, class Array > + auto GetArrayRegion(JNIEnv& env, jarray& array, jsize start, Array& buf) + -> std::enable_if_t< IsArraylike::value > + { + GetArrayRegion(env, array, start, ArraylikeSize(buf), ArraylikeData(buf)); + } + + template < class T > + void SetArrayRegion(JNIEnv& env, jarray& array, jsize start, jsize len, const T* buf) + { + (env.*(TypedMethods::SetArrayRegion))(Unwrap(array), Unwrap(start), Unwrap(len), buf); + CheckJavaException(env); + } + + template < class T, class Array > + auto SetArrayRegion(JNIEnv& env, jarray& array, jsize start, const Array& buf) + -> std::enable_if_t< IsArraylike::value > + { + SetArrayRegion(env, array, start, ArraylikeSize(buf), ArraylikeData(buf)); + } + + + inline jarray& NewObjectArray(JNIEnv& env, jsize length, jclass& elementClass, jobject* initialElement = nullptr) + { + return *CheckJavaException(env, + Wrap*>(env.NewObjectArray(Unwrap(length), Unwrap(elementClass), Unwrap(initialElement)))); + } + + inline jobject* GetObjectArrayElement(JNIEnv& env, jarray& array, jsize index) + { + return CheckJavaException(env, + Wrap(env.GetObjectArrayElement(Unwrap(array), Unwrap(index)))); + } + + inline void SetObjectArrayElement(JNIEnv& env, jarray& array, jsize index, jobject* value) + { + env.SetObjectArrayElement(Unwrap(array), Unwrap(index), Unwrap(value)); + CheckJavaException(env); + } + + + template < class... Methods > + inline void RegisterNatives(JNIEnv& env, jclass& clazz, const Methods&... methods) + { + ::JNINativeMethod unwrapped[sizeof...(methods)] = { Unwrap(methods)... }; + CheckJavaExceptionThenErrorCode(env, + env.RegisterNatives(Unwrap(clazz), unwrapped, sizeof...(methods))); + } + + inline void UnregisterNatives(JNIEnv& env, jclass& clazz) + { + CheckJavaExceptionThenErrorCode(env, env.UnregisterNatives(Unwrap(clazz))); + } + + + inline UniqueMonitor MonitorEnter(JNIEnv& env, jobject* obj) + { + CheckJavaExceptionThenErrorCode(env, env.MonitorEnter(Unwrap(obj))); + return UniqueMonitor(obj, MonitorDeleter(env)); + } + + inline void MonitorExit(JNIEnv& env, UniqueMonitor&& monitor) + { + CheckJavaExceptionThenErrorCode(env, env.MonitorExit(Unwrap(monitor.release()))); + } + + + inline JavaVM& GetJavaVM(JNIEnv& env) + { + JavaVM* result = nullptr; + CheckJavaExceptionThenErrorCode(env, env.GetJavaVM(&result)); + return *result; + } + + + inline jobject& NewDirectByteBuffer(JNIEnv& env, void* address, jlong capacity) + { + return *CheckJavaException(env, + Wrap(env.NewDirectByteBuffer(address, Unwrap(capacity)))); + } + + inline void* GetDirectBufferAddress(JNIEnv& env, jobject& buf) + { + return CheckJavaException(env, + env.GetDirectBufferAddress(Unwrap(buf))); + } + + inline jlong GetDirectBufferCapacity(JNIEnv& env, jobject& buf) + { + return CheckJavaException(env, + env.GetDirectBufferCapacity(Unwrap(buf))); + } + + + inline jobjectRefType GetObjectRefType(JNIEnv& env, jobject* obj) + { + return env.GetObjectRefType(Unwrap(obj)); + } + + + namespace { + // Some implementations type the parameter as JNIEnv**, others as void**. + // See https://bugs.openjdk.java.net/browse/JDK-6569899 + struct JNIEnvCast + { + using FunVoid = jint (JavaVM::*)(void**, void*); + using FunEnv = jint (JavaVM::*)(JNIEnv**, void*); + + template ::value>> + void** operator()(JNIEnv** env, Fun) noexcept { + return reinterpret_cast(env); + } + + template ::value>> + JNIEnv** operator()(JNIEnv** env, Fun) noexcept { + return env; + } + }; + } + + inline UniqueEnv AttachCurrentThread(JavaVM& vm) + { + JNIEnv* result; + CheckErrorCode(vm.AttachCurrentThread(JNIEnvCast()(&result, &JavaVM::AttachCurrentThread), nullptr)); + return UniqueEnv(result, JNIEnvDeleter(vm)); + } + + inline void DetachCurrentThread(JavaVM& vm, UniqueEnv&& env) + { + env.release(); + CheckErrorCode(vm.DetachCurrentThread()); + } + + inline JNIEnv& GetEnv(JavaVM& vm, version version = jni_version_1_1) + { + JNIEnv* env = nullptr; + CheckErrorCode(vm.GetEnv(reinterpret_cast(&env), Unwrap(version))); + return *env; + } + + inline UniqueEnv GetAttachedEnv(JavaVM& vm, version version = jni_version_1_1) + { + JNIEnv* env = nullptr; + auto code = vm.GetEnv(reinterpret_cast(&env), Unwrap(version)); + switch (code) + { + case JNI_OK: return UniqueEnv(env,JNIEnvDeleter(vm, false)); + case JNI_EDETACHED: return AttachCurrentThread(vm); + default: + CheckErrorCode(code); + return nullptr; + } + } + } diff --git a/thirdparty/jni.hpp/include/jni/jni.hpp b/thirdparty/jni.hpp/include/jni/jni.hpp new file mode 100644 index 000000000000..e99325b1c164 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/jni.hpp @@ -0,0 +1,26 @@ +#pragma once + +// Low-level + +#include +#include +#include + + +// High-level + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/thirdparty/jni.hpp/include/jni/make.hpp b/thirdparty/jni.hpp/include/jni/make.hpp new file mode 100644 index 000000000000..f10c9e00bb27 --- /dev/null +++ b/thirdparty/jni.hpp/include/jni/make.hpp @@ -0,0 +1,12 @@ +#pragma once + +namespace jni + { + template < class Result > struct ThingToMake {}; + + template < class Result, class... P > + auto Make(P&&... p) + { + return MakeAnything(ThingToMake(), std::forward

      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%0D9wNBQjAZWR;IK^#mdsPFy7&}CL| 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

    nNFM=JMYfDK`5G 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 z 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 >pZy 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⋘cdpCY2HL~(WpTf1uVP@q$Mcv_ym2*fpMM?;8 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

    fU2D3@ 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

    N({#TRAM}^Xx$G#U3jtGa?$M7;5@=OM~e1 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%0Ad~@9IEAo% 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

  • w@%jO*W%;;(aRYW$+Xp^O7m_87>+qC8k&<(qC5T5c)2G#U@D758 zf{+eP$c?1}lDjnB%z0rQ3lH(Z=BWUCPw#(4#~Ld=HdmqIh<5_B@Ho++9a(4?`hx{@ z*ttZq(#&zN%jGI5If~;wR2qOxNRB@3ZjZ`kE&sc>PbUny{X}T&gUoPQ(U8NLVhC^m zZAqPmsn8V}YA(yCb`ME3k}@lloymmcy!TTxQ>>6ZCFgQy*>7dJY3Uk$)FzF)1GT@GOaKp z*-6futW55BHXc2r3o_qi^(^`5^F^LV?V1@p4NfAlB3{i5w_4KXh!FT+h>w^>e51In zA?vB9%Zn+JXs&{yn)f(rw_IZ(r{xa>YIGm(f53DW>87>dP9wqk>fvIpspyso zs8&%+%FcEp;oi42fbB=SP6_Y(IZf)M@zJ#>#=hbT)zMNxvsi?quE)bjyL1^r_~q(` zT1wB(6+PTsovc(NB|&kXv4#(gHB_9;frAEU*F#Dv2YuoPnkXa$G!%R%B{Nj3GU&o? z>?mMh^jF4W(xN%gnQK54^EmhdrSM*q-JubexZ#d^@) zD3xz8l__PG>9(0y#73jB*&;-yNyyQM`XrWT=lsJ zAqUnKX5Rnb1UvDbdbPDh|PVdXf2B-f>p7Q`~l-MF|#K%*T>R6-Dl43nJCgj+b4L3pFxLkN4ozE zgt~d>HB?KUjOL9t&2qyq^p3~b=5ablRdTD3q1$9BQ5YDQVyPVSICLHSS($mY>fM>T z6oQ9h3&8XA_^&i^|ya&8JUCM}D7`?0x$E z-Wq8UhG-Cny*Lqi52@J2qDKQKRNpx=?bAPpA`FQY$PbBuGbjmYtu$SSXH3MAJdWiN zG|M9jbx>N{MgmkRWqQ*R03L>|$|wyjuY-0b8GWSIsp+K!HU^5;{(XgC_wgu5=B9J> zu?G)BhJ-S{JWm2Gvsm{qFRlP#*Z`i+qL6q|c4pLwYEUkkjI!>ZKE_Uw!4})}T~HVw zEu8LXc10z2Sw@$|Y6VH{D8CiWYP2_r z`?v73MDzY=_%s;(3V?+|WGO=M0*C^IluDJ+{{}V28^v;~)6Z%cfYn)>15B7r^2c@S zreiv;gt2Ve5?V)2_eOu#W14^tBMs1C{V~GM%I~OkMI1@(rl{YRv>gq4p3SGyhGz@j zJ}!@>W1W+$jJccqDb zwpOV(yG_bVWr+<=p`?G9sr0fK9Bmi3JZRZMr$#>&DoF%?<=FZWCy*ynXp8JQAY$y_3SE<52oWV7ZeVN$+sr7OvAt zM;cJv%vNhDMHYhUO?f2~v#3Y5xFgbglq5vgNpUDhPaFs5YBb2zAL4zYR;U(a+!Hu! z+)Kd3$C_HCaCzCMyF1hKL-av+Grv@^f(n~>W>`m7L|9ZpaOYev{DVO7&n$kJZbFWI zz9vB`rs)a0*-+hgCh4qhvthHQCiai3XIKKM+~&9pyDt^))9aeZ=~DuC{3ojoka2tQcJWe>9WJG1NEo*9=Q!1%Va|#k0Rd$H{cvoI&9XRyDQxy9@tI9bQ^0M7 zHqDE16R*XZeZ)?A7T20K?&yA1n3STJy$w=I)GT3By!F;osx{Y@UXGVt$(b+=dQZw* z*6moV1GKnm6Mm*C>;lfr!5OrVUhgb(lEpIK6jbRpcVSdgkkw68%TC?Jn$}rSusW60 z81$=!m}?qGL;?VN6e^twL{f_+-|Tw+*!-uCv-XlW@thToKUI+%6XmX!+`y2USt>SA z14&CZF)}Ghc1!I%T@7iLG6R{joW(gdP{-`0`K!pJVze(em9Bvw0+U-;*QR-Stl`uR z{@;eH^tjDFciWds^l(t5m>CI(bMI-s@$-8wC#K~JgsWWo%2oTl3sGjm`L3OUCrSso zJF-eO91=4kNxBe8%PPgYnn|3>PJt^Unqy-=IKN(&HeY+kHAjOU7$D1@zjj&MCFA6l z9@vwsp%8@skoAO5q+WMu=_pOf-fdJBOM}T~8*BWA~Z%SNI4{kw9~_*UMgLxFa!Clal8^eH-P)Erg= z@+@-QTpnHW;gAkV?tJD2N3X&60~?kGS(!{^oJzfW ztPVTXgd^dc2C3w<_d^dT|Nc=4!M(k%6gYk4z^@#R0sEu*{uFmzC~L)~NAAr=pvu}+l2`C-1PpsByCTlfp<5P3Kiz|H{2izW%<3V2beWoPRB}I zYq3KV!{wrnQ#Ot=%p(zmZI_A=9!JB{1}9mH`Fsu+ZkN}cl^(Eh43)7u-}e^%a#} zM}J28W7R27G2rkz52d$PGWTiY55R@K^|#nMpZS9f6BqVkhs8`2)s6%@yG2Id`5D$v zX|qVH;wrhnkltQ33p#$+qq1^Z>|Xb15r4cI^dDg*O^rTooDk=<6p&a&^tln|h%QI_ z=n@B6y*fnqJ&;7*dF4}0My0-CmnV65wQIW$v$0G|=Re7fryaY1|M}3rz<^suNC*!2 zL=l;$#EVd=bDcwCTbb*L1+_lsdb3-sz{Hy0{pt>aE;$-^_qm6ADvwp2oEyx)9)h45 z5{y-?;!UQe^cwUeVr!$1!k0}71TvAxr>g&c3 zlYKRkWL(S3KRsl zpl*&0y^?Z$izD>L^RK0el;VF{dwmpxgsTU@X?U4`54=vd2A;2f`f50sM203Q`*(Z& z1r5HNuk#s(#5$OFE-?=RBZ+q?!^V9B9S%zqp_#H)Sub!Xs-|adOxTlPb5G>h|Cijb6O3s;ONRlSnVSo}et9@;mxDIB}j)wyJDC&oHrJT;Lt9GC}sG$+xX zuoKsc->v9Kx%j5udivl_^-%_q5b;WQR^D`wtE`i6>7V50(#BE$McZimCgboRtDFt^ zxBCAfI5J$Wx=6|8uBXeq7+g>fJqY|krtS9oy5vf|^9%tKpCY(HrTKQ#?M5913;A7w zJdP|npx43~0MyK^JPCxzwAn2;!i|jg88Ugx)i7*NKTX!$PxcD4@sLijq-96$?Ac~@ z=nC7NF>=$m;S)`-b2HL|q0Gxp{D`GzlM#SJY3)Ghv*T`lvF&fIDRF4ZFp)7rYe_ks zL(YCyj{wic?(gh3QOO22m0(+)J-^#(QR&uZ=URnnPy2L{t^r6O`)X}NFzn1$h=_6Q zLu~{HTa!)%7ZZO=Iq?$qs`|3D1@~*3WJiGoCl?Mb{tjsYZ$D)-FT_FmuyYK(jhr`& zBdSI$YL3syg1l0TsaUahqq06d?4@2-^pWU=+8l;)QADkJ23IRj z*}}fmB812n14E$xO=fJRu+%<42;Wk!=VuT|Ed(#|z{qjE&_kEHHz3ogb+vvEBnFv^=r0~UE)6AmK1^4$iO7|=Aw z9PqNy;@DUg+NqSp{oNXkU$|n%RRx=@%E#RQrc)~N0xY_md|Fh=K5Vm5Pf_4;bIF2j zE_Ty=-@#ZC3Y%Z8q#n<~;;v^6^eBq{Np2QzOdAX?5)`@5fzhBMedtT$n*V(0 z$eE2RwVOS}2;6-+a3d&g?eV#bF~jARmnUXD0M%%Rh6zoSkwiFZ7#lk_8k?N+I(NpT zpscmfk+nbq50bAI^*u|FLuQbe%NjRR(KmBRsL>+(6~wH*{ViyU=T^E`X%kI2a5kUX zZc3;L)Ubv92s)h4`D$8QLN2b&AlA=LqBKm?oaF!DK5Z#_ywvi5DEkoqL!?7{@8lwZ z!!E1iTvzWR9`XW-YrbsM&7;7R+u-(IOrgsP|{F&UXLa&HZ7)`G*g^}`_7x1 z9CGK}tmdS;nG20>R}av&sjo@lRyXHBVySpRPZ+sZ}~;U|1e)Vi)2>ZN!!v_;8Pn9F>M6 zLuYDsye=wY(hNQ>a}sp^JU3I1&G2gX;^!!22>af}2XCDi4Supjp%`FP)42?8Fb&qj z8?!(I&RV~%i$fA~X}86sUs}Rzej2;sO)%}@2#;55Yr@uldlo#?KPvwI`wo6)e#>k5 z`}=Q^m{s7@46ZPxb62bXgybw^@G-f-AS%R^|NWeGy2Ul` zixt%+Xm`Glq-qqX{fsbxK$PY zL2zzr&M)%eA>Z}J@fu~;EByB2K%XoutdlH{$54HyO+04V22&aP7HKQ$cZg;@0BW9* z*63`Rw@^tQK(CoxZpe?T@rxKK|Z5^Ly>`>8{7)$6eT-EYnSjM!@}VlP;ZM7rdvL=+{cA5>eD9#y~$H(3joBT977IdvL3*y78bO z4&_YGJIsr4XUQY(+3E;E>Rd_++Az|Mx%qb%gM0-coh4Qi?l1b!+p(a=WwX^HCKl_T z+~<#|$X6l$R#r2)hLts>8plzlPJ$VrVnaLx#MI|$ARkEe7y|- zCY6EmZY@<$0Xx}LM(Vjb8?N4e&HDzKVWT=`QK14_+TidhVs#lH9uK4@ODOMy8gIE` zENA@*LuKU#)qChx5U)w@3<2m9GG$cAdu6=PI;V&XO+GLuu^KIlgMzC&W3%#3Mq_8q z$xKIQtCzc_|3o2s23an{HjL5*BP+fcWulx)*PD2imyruT(8K20MO!@ zeR|pWv2wUB9Y}Ki(pk-o_cb}1;=6lcu>13GgMEWke8vhe1;G%-xzz z4An10wJu)7G#BL@|2MYe!p_ueBGkSVbTyLw;a`5Uq-%n-4}wemyuNt+$^u4 ziwt9RsN+oiz#g)J>>Gkq8b)qzzJ;fW;DRXVyIZOh;>5~GOuRBVL?i?HlV9$oe^kN9 z=Ie{k8q|dH0mTyF8>tnNX^((rxi#kL4UDd^jyJD1=HD99hD_brl$5VICu3o76&i~3 z$BCo2$eq_aB`DnRc!W$5Q>!+7RXaBIAv?0{qpo=`oW>QGyIAVjPJ!26kaZpBhy{FM zHO9Mqu1yUkw_48VryV!@q8HFSZw#n9*%uhfWhvq`vOPgtyfDrhw?X~WJ(Aa?{I&SowfmrhPoYyIZS^bL@f9N8jf@IdA=)d(wB z-kJ$xbf5_ew~wM>zo3gpkrgr#)H0#W^0ycZ9QmHXLu*cYFK5bQOM%f}ZzE^n6*;cH z713?#<@TA4>vAIlbxf>`N??g-Ac4Ro>=x(d zsMD8DqfX2@!xu!ySeD~oqd;=UYMU5zY0UMzw^wUll>mU3nD`P;Db;?UdNy5mRw*1z z;CI&ooKa#*|6}0P`G6bFXHoKknlBq-H!6+aKXH@yXZn34(V@A1Du`uY41D{+7LMyae5-#igLR73)pM$_pa9K|#jgfznTg4kg)dv^hiQK2*U_T%onkH~d zWXd@|qO|rLzjh$R?|cd2tD(`kR1A}gZ`j%HkM?RT-8sEM`>_f@Qc>-{L`feC*&3jw zQh$jav0JB9nBGw0Uzkg_r+NIXSdegj^jhWqG@cn|e<94P#hB96kIc5M{xlt00{;Er z)*y>3(pHi&b++e)s~sZk$ZC~|5+D^i7xyzVsP$Vo5(=PAM)$V$Ky}0 z5a=)`fppFw@VZ_Wfmnui^H0y=sj{QqB-*=~2@T?MR%*WuPR{1H;b#C_2 zg;=Bhn4_3Oh4E#)qp;psun;d8@pu@Zp9B3fza$c&jS=Wmf{$3M!|kqmnBbE}RF(2? zRJ7^bw9tCE&X>78XSPMJzw(1Cvn8}mM;H&|LPaCP;@vfQ$)X)G-NHP#6nObK%^t$vuVBk;YhJl0FH zE+@TfLe)v|oq$f=- za9_O1ms{!)@t5aU-ASi3AJ?sB?z|pPuT6iNR`RN&Xw;#+TtJb-RbWWlYGkGOB&1cL+ zq$_%Vd_QmbK{`!`q~5UHRFEAbRMYF^?>EuBYKDsFH6&^QfZMBSP(b9zCo(jf!PXyB z+4A34fcmy8icqneu?Xc_Mn+H4j}U|Mqny~nxFsGZX7v3pCfFBEV#y9;Dh=m`9NHM> z9$t{rdB@pIdS-Tm4w5l(g}_Q3|NG+RnGPhhziHAmTV==oq?$ zqd2Z?=JgEl#pK0%ViTw&gW3%%hFrF(BDmdJKG^&6sgew_g1hD~*(%xy7N;L}cuyul zMQqdVH5LbjnuYETHkui}d*SnyCXxy0uMpX)?y30S}2hwWfp%QRG9zJ`4Y;O z9%+u%=W~%I8uuTu4jGBwjvBKmD4{xcJ-EMo)M)tpCIbDRRz*@^!q8&?DstUjC=zv^Lj;n|Du zxq}y$Hd)PZm&it4mc_sJsDqP$BPSop&e=H!2kINmHRMbZH{Eafz#!BVBi8 z*>j)|?|8iaB0nGh{{1D(Of3_Gp+_#Y_gPqL_z%gBHG@>vyzh@ie9RZ6@AF-%-ko}M z%|BS2Wj#EzW!8TFMvfGhn2h-yjl)o6G>xruQ*V~Y=STuPBIF@@N{WqKX<*Z8`Zfh& zn^tBaWEa_2M`&ikjM?7)^CQ8ijYhSJziDzOJ{X9g?s(qfhHwQNsJ4F~X4fgWY-Emk zHM}h4*BdeguXjxy1*9n&w`CKoI$Lw^rVgq7oc{65CEmJ2` zs|8G_&uq^*QgqL>3FpRb^GjM)4x+gBZ4#ALl@AlA)NF_TNp70}v&iKC6rAAc23Bai zjY)u|%0JXsEc<2MBYkj63JP&Ww$gcqyom2ihL#B$CA*aZlXVW(T%Rxjjw=)@##|ih zz^BW$SK*lHM^7)=>IR1Wka`ik@v zjh8IU=&>rB#o8trSaQW;xHgJ%xzao))#;o$fJhNWR8n7Y zfEumUwiU23CWm1eY$DEkaoDuqezd{&ch9x73$y%*Bdk#(zj2UgdFd&5h=@)ouU?WF zER>fkn6JukB*EVBQ;Gk5J;R#|R|gdps^c%OdmGM&G*T++GoqAEwZgw|jaN*Ci!)~9 zf0EMmSB3ccwb+>hN2p7g310b5lJHnG|W_&3~tNbG*GJacmaP6KjpuA7fy;YQIq4PA=|h;ush9S3Vr) zOmIsQdge2xYi@JKbch%pbU66Z#g^Oi1ixR_46wF+R5`QFJApX(imI*NSk!!4G4!+^gOHJfe zuu1*Dvs~(QZ!LF80zBAvYb$#c6ZfptxBmMg=v&C>crst?9lV%PnR9k2{&y{*#|kk= zJ0nB!TY*6RgGMoP2B%kBkh44S0DaYO?-rE5_57}J>6XM<5{d*QpdHAlWpq<%VR=84 zJ#1uXI^!-ES+0uX@!Z$24yf2xcZV|FBtj`o1}lE~U#aun6rSC_k^S@Sztu)@f?D5O zeR--?3F)I^^239-*T1~}^Lq3Cqj%3XM8Dr-?MK~@roU0Y27QuqoN5VaoB!EKfc0ra zP7pTfI|4_7YL$X^pK63PJdk+#v9nLn1Q)vRjv~gdi8Ayuo%mP3BH=QLrPWM@*|SVG z0&PIpIOJEaaV2AZA5HdLJOe~YUQO4Ky32GZ&;rW)MSvJ|k^8pGvHBz#POFKLO4#T^ z?OVgg%&IWjub4Lw;2`w0I<^UqzSK?#PzdOyNxyMZ7%!c={!g>^dVF5&{WE9GC)=Xk zf^h&-6RWd5Zcxa-BWXWa{1Z z^`N(m(uD}Gt?iu%*ROn^3rlC*ZzUIsp8x)3r71b{`gr^ITUy?AjGFSD=8?Rk#*qvR{g9N~P%+0ZpA@s#f`w>=o7^J@yq2w&L9r8ff{V7!$ZJYOC7N~%eThnwj<@H1@>YTDDUFhHHz)6qQ?WSwT0PjB*7F5i58BOqZy zGxZjGl6yN0plWvxXCK8vBseV!s~Ex^r*eWrhsvQBkh+|IMQ(-wL&U(KNZ0L5)vXs%aOI@1gghG)B&5Yt+`^CI^yaMm|IRCNJG;4Viy)^V`&6@n?hshg6{y64X zd=FoL=iSU%Q^MfP!5d%usWZQtHxed51CFv603}pOAs00V9ARb{!KBlt22qR6LPCDd zVRRbO9ty!N)enUY$1G3fL0xDam(45Nqi^0_{eAO5DlA5d%?p@e`r1KEt&5cx@hxX7 zU)t%pS=5i`ab77y**j3xrU;Al^wDtOlOIWGtR6y|q`+D+42rCD!8ya9_-yT{@HPKt zCK|{PIr2 z+j^F)$X2or=V}(f+Fjr?gLK<^T2`;r#YS%c*G}g$YB-`u>^_E@swTnQJQ_y@gINPD z!2ron$VV-1f{ILhspmKz9*&%mImlOTu_sqo#+1#7X9-uyH<-7R7iXT$rNtS20(~Wp zL8x(kwe|Qg^;KCEo40dkP$oMGgN^0#nTqS}yJmvfreH|F+wMQfEu@W)nd%`y!M?#z zH&SGgBkPh?_y@sRtUmuoB*EUU6z&8H;$D~Yem@Kd8o7ZxZyZRI^yG?tKwx+bdO>Gq z|4TPi^AWl)C=Sd&uffxoe0^!0+=`;ag`pysD-msRkk8$|?P+km50*vyE~da%m|zcP zXs9RUE2d|0#G1A3u;%n!*EBo=UP2yFqkC!XPvZN?B(E{bP= zdZSM`bSPN|c!9dl@Kka@Kp?M0%jCme?T%30pw7T>Qj;Zj{O~KaZNggywwLQOEeji_ z2RiG{u=>19>sPO?P2Ad~zVQzBwlfk5=8jv#B+`(|rYdt(^HUne)7{X=1Emj_@s%v>)9&{jZj~|f0A2@$7nH}e{W|0B@76> zcRI2$4lt6@l~3MmtmE#A%MDI!8VHprf} zt`<7>@zplG?nu%vW|xpCoS3$ehb9)v511SWa%ILBunJ}4nQ|)17d%x6FEO-tEmy0O zK~*b=$C(a|_cXUoSrcN$7<_K$1^klxq_U9i5tR=xlr+XJk0<(MJ+0ejv369q4SBWOhjT~*7!Ol zQQFRDqR?JfM@7-tr?Y19pvd`G5N3uuRmB@#|E7A#u z{(`0#3xMA8+7t744t;)8g&|$-hA*WH(d4QV8;lw?{!byg#F$ZW#=hV)kj7#4wG<7r zySOd;`m`z!$xDOiOtlidLLm~(<_x~n7VP%Df=vJUTHE%5;{-z(L`2PY1U*oN48rH_ zQGZe@eV9s2Os7vuZT-@9iEPbyrkjGPno|v0+nK9ZNp-ID>!0M-2#)`N7mD;j_i5Na zR{mwi#i`06Avn{&YR;zf;bH#wTrqcwUf~Vc12UeI3u1-nUOf)5a$uO>C(GOVZWTOi zBI5c4bKB^4^&FjA0Tn(`IJU23p;H2R{SoTWcLANtr|fZ_1{tf;-d^5Snr!~N;~5-F zNGi<1+bg_(GUYP-U1}nEQ}xnC2-!(4UlJtm*UO4q&^zkJ+I8WUC$czV&Ah!dOe(cq zWfE*TUK}NY-l;>oAjRXoOY1{yjUl4+NlS~*#s)-^LEKcDa_3H!)a`+WZEL%}=s ztMk;+_CEP8dott2uc4y}nG6!KnT{MUzUdTXgferaRYA-NYLh9fX?zHfl$wQ2TSMm++ z{S9ZQV927FJYEX@e zB}SLA;1NtrT@4p^V4&h*F{6s6zC_K{A`?Jk+0S8dhMfy&7EfA1IT}(A4Ac`0R?(@4 zF*)|fP*Bw%+KKYVD{z-0w0Ath;*;wuGBY;17 zkd2jbz(vOM41fBV)2;KFIe3!{g;mAEu1;F%bXmk=H&KgVocBXMjOr7vcXc`hin^-a zRBORKvvd%ka5pO1_(I-&PzrWc;x!>yF4uJGX3%>Y#%Q$!aW z$%03KCq!xVPUYYyCbCl-Wi{ymrg;HW)6(3&RmuG_CyEk{Nmn&D;f+h4Htl7Dka$qhJj#}Ifljtm`$=mXZ7-{PTES$cyjg#4^Vfb(X zD9LCi>Q68m8x`K=N+R=*Z?1<6!7hL7T$;FkzAJ|@;O6joQIZNOV)=#Z(rBGH z6YOL~4Y2@RED2O&^7_x;s3(kIMH@-p8GC$VoGM#Zzhre#Tz)O;e*<828TD=A8KaRe ztRHYmktW100C6?n3N@KNz~sx#NnL2%fn)!A1) zh#BbdVe?7R1SlF{Icf~_Dkrq0c${2JeB4$Kd&hIF$%WT?nKYwhN!TcHy5&ro3rVK* zids}WS?=OZ^S3^JXDyI>F1zk}DI`m)$vy1BZ|~S}mji@mnz{p<&UKP4{4Y1>_4UbU zFWEAl%nW$^JB}_yS28dnlA1% z2tSeHG(EV$tGI|$S;d!_!c0Nz0?QIfPHnx@;+fjx7jCzDhBeuJqQ8Dk?@UN9@wdt? zTjqO5vn*)tw4>=VoA<2>XL*e;YXPuvzHX)-AZob)c5%+)-wt|}(n)`Iu4Xu~;<`K+ z8+Y{a5Ohma7x&3midOx?@GWm)>35-TQ+ZX2pSxHe=WOQza$Oj46tCG?aEhBK5(=asdyGGjO zxG%Gjs}IC&s$dtSU5=LP@?Ye1EvMf{KM950Xxe(AyKr zaX!FY-7{Nvr{8oY6Cz#mL~Wna-xleED>P&#PS$y$vCFvi-bbF(S!q{-{(3{~uvzaA z!h`I)B^kM=_8h~b*fuCChkU15CL-p?0h~p^i{r3CDVCzP&FKf~d1zHeFDM)92^P@C zm{88E%GZcEcKE39cE)6G#8!>lBhGh%DJ!Kt1`I<6I0?BEEigBzcath(aV<-0;J2!=CZfjCqg{cLUV?{SdQnx+( zR4Zra*}1d4D7#mhclVQw_EIkh)ToF)cq(GPp@SwRK^m_yswCa!Bc9g(LvC*Sz-c&y)`X{-mwBuAHDfr(OD-Xy4 z`KnK5XpVGfrXoBzx#p0s`YQf~XrC?ihOSbNi9W0d3rf$$ks8O1lcg!Xe2&>3T>n%N zY-TV~SMyCcb1Td_jFZl0ddMi6ZULoE0MpUdz5+9ghl}bdKTjS29B)QUzeezRceY{7@fL zg^ODjrD6|cVddI9HryDBf2P3Jv1L1X_DErChRI zOmf%E@Xd%{PF;N5kQk@=W>8P#S^3b8*zp9nShQ#ZQ7NePpr4b)xjY!-vn&ETzVa6v zGfh>p&+`G41bx-e7CA+RF%|ek=sG91(e$D#1z^F8rW^)`)jUDf_+)A+hvy9p+4#d+ z*|TUB_!iqFbzu`2#pCgPPkFrJfm$GqfXgNw2HjZcM61F^R^6%-^hW2-ii@9PK>;mc zG^=tSZ$O@1$-F&&ChH)%?hKJ;g&;0|uSeu($V>$KR6n#P~*%40~ttbr_ z5jJj$){q^gZmGQP9A0Wi8-A!PjuYF6Mjc-|_-+`Z7b|Qp`knui+z`Q7p8g80J~HJTL1XlP zBZ(@K6wEt9%LPqEMouFpX>M|qs`?AocX-1c(&{SSp`YAtG8^~MMz^Lt!j&4@b2XoM z$LKEVzOT2aJO27n@&cNXMOOF_}ieS|)xN)-6X0ijUdkb$` zwU96cG{2p5MnOQ-&8=I22+k(BG8V6vPHK9koSp{eW1Pb~kn)jrZ?2tVsiNlE#Ak}a zB>&JyCrU48Yl?;MXFPX6Cb(uTu~uC8aU}Gev?K|iu!7iHLl?Z{!-s`hP0h5Q z?|2`???(wQU2$?dH*LK9W_rjSjq7!e%XSLwrlpKk% zw$?SWv0`!8>mnnkkG~DK%!=}SYfJ=|^>ruiYFRWDuj}bqhm=(xbIH{9jyo9SxOc45 zdq!ewc-v3b>cpC3a7X3X)t2!WstU?V2{@{D)k+htMz4S_z=x&gpJY{F<+8gPx4g7!9#`a0iy^vn6q%BE6AIPlWa=JaPs=eg7StrtmZ zKDCRl#VsyC9hANQE#PxbA6>4fS~Rd!Pl2`i)KZiz=;m4Qw`_8*=B>o@$FB~v%UE=ZKkB$# z0AwR&qvZ;B@sTPcgjCtnu44E(syeZB%u-e&?@Jgds6Whi=C(fwvw49`Iz2e3cH11L zm9f(rV5R-fUQa#aEdL|vEWDcj-!?wFyHmQmyL0py9nuZb(lSb7)L=A7$LKCWTDm*@ z(v5_IVm|Zt{0BQ{*Li>LxbD}b7DH+8U$J7tp@Lnr1Z<&?rqxPCRR5Vo`yPDT>%C)x z3@@D1U$7F$^$6>FM|gJR!cZlmpe@`~BR~e|b2PEvFe*ik+W@FgObQ_qAteAcdZoWh zOw239fV-D`@CTxbn4#s9y_jVoL*E%+9t?BScCX&jT1M(nYFK?YMdE&!r{K@m_WbkY z+d6+ts9Mlb$;$f2Q-owTH6sp3uOuepQ*z@*%YY{_`Puy8|0L(Mlr~;!Xi%8v@DPC{ z1^-J^@)lR{u}_)St8q<2epm-Br2V+{p611I0#e~_b(M0bc!pcV;$ZtLA9C=@t~n(-5uY!4w6I&Vc=v*Da>8{1b zD;^(DCMyd)$??gZEN|A5I`YqbwZ+xef2I?)2#AfQ*!;}-shJ8vjj5mVpi6C2hiaL< zvaq`t9VOWwh86&Fol+R$3mw+nr92WgU((+GLU>S(MAkPbi+_H}2hf;;-TGu1zP{aYce8IiD*n+>sflE$hMl zRCkgoN@LQhJ?92P+%V7cZr6j&5*_M~z)1aa;eD-TJ@bFTT z%hsGgRYJi2YIvrqZZA7Oa=va^S}I<~tb_iuH};w%nJDus6??XAq6LzhTqCz{KHlHd zKUg5b)OXh1?KPj0|M1aGjDKDILf-kO!qepW54JE}Tnb;FVC)1Ybef(->D@V{d^R2) zi~YR@+bc?Nog$GCWSkQtC9Q`3m?z64`EQf`(Om3%wx zc>&WyQAr>iJmlF)OpB*bwOq)*?oU^~Ci3-*O}~PuaON~?nGz`=O1=QuHS~~3IjmK0 zQ{&SJDScty6k`>SSf;vb!RDe-D|b7bIn~Id^PIP)M?$C^>pa;EC0rm){iQQ|W1Lb= z^%&thWZXtMFXE)f%h-ZwR@+GbD6T2*d!bG?;BevKp-DlazY;Q*)IM0^h-4JyW>!*V zLv_IjzPvq;7-jD)Zp%*T3Aw0{PB_^2@0yLg|0Jm;*oHfYRAJ!c3Q^5LVv#aDQE#il zU@RBWiaCAsYNMln+kN_I!Qyd2CK`npgTcTzfjtkGqDAt`J!g611b!IzQ{4AKkCnw_ z@Dn?#mg`&SHxRw#i__z5%OXe@uwu#og<~iXRXT<|R0PWl&8O?vEq{Mj)VrV`_}>OA zI)BceTvs}))i#A^kYzm23(8Kp%)F!dO%7aBe6dgI)}!f9>=wv`#!9Fy610R^wiB`w zQRGRy=XuL&O<+sS$TJYcU~WHVv)Y7izhLw_wN$*y3+w=C=Fxp6^3Pj9xnoJF)Vvj3e4109{1F>mqY_6jF-;Q;TFn$ND|Bs>RtKFAu z&tYp?rYxm*a5a2b>z10GABx-FXnj}&yWvaL#F7#b?U6dfZ}IHegf1|^Q~T@R$;Rcq z3PPxND*|n4VV9Z$PKieKD)3x7rcCe? z%$OlIZkq~=GQ^q0EL`ZiTHu{*Eoao$Bs*@L28!vEaN9iR+UmXp9MKu@(^zSn!9*r& z%{Gsy=;sgce$Q~|LbqJz_LYRJr}lz2`jssA0C7Zx%TWN0-xJQ_YWk`;Mh-$=?o)H8 z2l9)thltZhiy;4msmcZ6bA2`NbZy1dTE&c?Psyx~=lEO(mgS$0m0S{Y<>Yj*uzxFd ze^Zeg?$asF)p6V{bmmwZy0z#TxK`kvIH`=u0b7lvYIXX3-R`bGn_!~uW6318s{59j zZ)`8`$o2C;Z-xoufO1Eht3D$0?C&BV&h{w&T|9#ThQ2;4H>n*PRK8CuI}@wrx<{cw z#OpnnKWpX;WvjqpmaX$>f@0Istd99DiveyYp;+BB$a@U0OD6s`s6~fh`k=Uqf!b#j zu^ZH#XT*xrpwT&qi>c(-!Yk1^GJXTv3Buo%h*DbP6 zN7e6>L`jSk<)PwoEEujdDLW5cB29_GerHsgM~H#4ctbt=ua^4=9lg;574jiX!8|;y z&Plcw>aHqY12;2h4d(}DQV*ROK5W(B2{ z9bJ9jdEM=jrnB&?#|_2tvYWm4s(NYin>%u%A>S1uE^HoUh8**tKF2A44Q&n?;dln9 zQS=tqmeUREl%qzMK2a{)pIdV`3^W#(2vui4C>&`7@6;!>H2R?W7xk=dYjo_Ap)_>6 zTmKIGlD6~xSo+m(bPE=$LWK;2kK_VY)Hdk^tPmyyF^;oybTk7$HI+)tX2*9uMTUSOq4t50(HACah+{ReGwPGHd)xHZ{!3X2a^!zWR%A1Sky> zp`SO+w@QnygRCM=j*sN7diOuQPQCULVpM#%bX{y(ot_hj;_+xrr zuP$r{h4rz`tJ&qe(I;Ca*u=8Z4m&=ZOG{C$PK?~aF&TdOK?}TpsKfy#5qYKXLn~P% zR=C=-X2soy8+S!%nly&Gv;6Djw~!UT|7=gp#Az6Jp%8;gp5xAD^A^qRX#i1$NErP* zt_pVkD2ItTp)7rtYWC-B{dAcb-^VhxVy*y2*JWYcPzw7bZJEx0AJ&RAjD2%Z=52Ve zjV3VOZo-;;;N}1L5HT!>^Di{M`H5R%8=7hqGD#OWna0>XRO`+GXkHHAV>DX$2kfrm zsas~lBKBd5{I(5)`A@TT^q9O^FXR%e`ZHQGHV0q2pYt^uah6FzvKcLVvO@;rzXPw^ zvlB1ZzNeY?eW)HV=(DlGY8%tMla+p0Sv0G&vR!eWQxq$>L6s&(A=FW+jV!}XfLCwO zd{WB67U67m>tqLLd#Nb?{m-R|RybSobhy*zbGO3ZzccI_B({+XvatA8@?@Qt&ZOtV z^O)NU^<;{4k|Jr!l5+PUFE@GiPW9sM*UMCA6;1wm0Epmh@~wyUBHgi-<_x58sk8=h zE_b8SBFmmiW;G9sL>=b5w<^ve9L$$pp|82cRko_E)Sa#Qf;;P|BzSju>X6 zkgcUiTOxiIGb<}DGm0GtUPhT0Sf~>&XA-!|$+wtfcZpL#yFSjQsluhxHlw90-*Bf| zFY)jrdb}*czM;=n_D>k_vq(&mQ+Yyv4THz~E-S^(n?_RrDKoLQ0FF=-p9W+&Ggj>3 zHZB&*7-mbS@#VJs5qaalcC(hmbj%>irg-+NHGO}zx4ht z!Hx+M9giqSY<9DfbL|bG+ihy8PDKBGjD9EO{4qv?4bZbnRsfhy#APGl;=l7FT@kQ5 zPOjaTS8q%ptk9ho9)-*4sL$FJqhMlW_`q2CaL*6H0nAthd?%_py@^)3)n@4YgxL2Z zY3!U+O(jlJWR>@nSs5S1d2$R`)Fu^E0w`bB^WB4!LMkLJ!C(GKt{)SF$lO>KU&r71 zf(Ictij2m5iOm1Knd;(l-;2u+A=0n39T^?Bh+2Ee3|)^Xkr}Y7x7N9IAd6Vq%K6kH zDf(ibKkWh)9kaI3?=^7w)^2R|$Kzml-A>zIQM0j<+~=>|-8E0Klq(yG%60&aTLQ2Q z4js1|mG@q691kobo|8EbTaT(lsGy*(v%B3)+RGxfGV9IXzk7d#Ie!m6U9orY%Q@Ml z7=4>#WoHPW&QYkX^-qfEaB8n;3)dr2nxd9Hl(-v)X4B_WMRGoVGJez7TO2a0lUjvT zRK%txF^8zGA=gJMzvTv82^wnDG6enV3c?Vv5aY#ro_ynmBh)v8#X`^gmVctveJgsI zBJ_P)e2A*Na(o4K=*j0JpT?D?jcvw)=reZRo7JhcoVGI`>SlqYReyFdQ)0c9B>sZj zTqLI}F2Q6(jvB5$qpyS3#mBK)A_F&@cA|FlAZ;V_Qt92M8Oiky*7;uW)o+v9>EiVX zuQcCJqh@uPywi^KLl>TPhW8uY2bK2T>Huu?XuxZ%%|7nzva%pytoZ+8n7;3gZyv0n zP}YzEvghY<2S3Y^VGH!rwyx{aetS;({pC*KYUMH{|I{Na<<-?i-(^?rehA_{e6|yg zp3M`RKq<&4*T;BozX)FSdPtNC=9{2UQMNxHQ(5E7A3{MzPa|$Z#h6V3Oronmn4`7X zUTU5%m zMPP+Fcc^9O{9;VhEq&~fpRf069+vpy_<;#ZkK;1|X4n>_Vi7F<=g^!X!sszG{AXVB z#l^KmwhyMAFO>)mQm5uQ>VgtzLf)t1YjcxoKlqd@fSg9MZ%AvC9zRa!h&_z^zSx|q zbgfnAV0`&_wS4qw|V`zg;5*8P5Z{-$B5m5wr?Qt zLLtxP%P+6!-5c)V%RuKpw%pQ0=os&*WA>^%7Pye9Y+J-y=7bHvY~O8Tz2( z?|Xq@L1xCSpIFIxAEXYqv!AC{Q-oGc4ny|4UZ#>4(!(@Il$Rhr81?Ep(?H_?tgpV? zj(F$rtNeVC#~<-i_ubi>u3lh&ilE>~L|eVBW6fbM&qgc7m-f1L!D!BPYycW+9Z9|t zHrS|GrUEZ@4Kd29Q`tw)6d9*QbikQD-ue0A$I`c?E%vX8qRO>RV^xYCTV6lrR{PPT zCn{u^vWlVQHN{$AB#Y`b%Wus1}78Ux5r;D;9H6HQX7r68!&^QktqAGNUOiy?yJIr|avi3L`|VWX@cP4!BOG zJ()5=NvhRmPtHmw{KEE=rCBX535Ap>SBlv*4B|wM7B;8_cvSk5Dooa-)^E03uxd zIy;Y#?zUhK8HS9xo!_!p88TA3I0y~TgtZIU1^UVnO2PjlYMQ|RqfG-QT(=M-J#N9F zi*YPd2xObsnn+pCGGqPKq<2D9FyWKSF5seNVU`(D(re@;}v_a3Oi=XgtM!1a8& zBM`A)?qntSe#O}Y15Nl@1oe9wbjILf4F7f)7NTX6Qf_Gv?aE|+a&YT7_}MqSb8ij5 z>5cMNOmO=c_0k(PS^p0zDgcEGzj7fCjl{yGWq)x3<;~gQ{R7MHNB>yg16qEfQ$B64 zOS*uc7HQ7Bvgq(xC=#HkVPFvXmuh8q-g%*c_jLTQNn!B#i(|y!PI$=-MkE1@k9_10ur2SWjqe(5lBSo<;l~r zMEwZJ$Q^?3hY`EotYCQ%a&K{jalW5KTUEJy0V5NJnRT?r{0M-ryZn>f0-<_7*nkc> zBYEw9N%hYZ9Iq&&H;}T7!g)4_-0HKP={9(g@Y)R=>htDH_;Jo%+Le{#G4_x3h=7Mi& z;HCgBwzaU~C^Z%Zh8m}~Yc8MW$69lv$;AhA3dd7`Wg?ES%3i|V52mp?^T2Xrv@u6o z3`ddzxCz&1doGHv{FG2NQlk(pU0swl%;7`dtO>O+U1w_2c#eOz_>uLJ4y2& zAR9l4#XSm;&gp=9qK%s*f0UP#qEL*5gACWXV?)A^tcoU3e~P8Dz#MXXl~>qIhe_3m zW$*#|8;K)SLdOoCO@n}6pXG@nYF!8z9g7j;h$Hn|p$QfE!e zyg9r$8+`$HZ6|4bwd!P?*=aO0np%Ls(M<_j-78`zvh?gxZ8T=R6Gv>GEeHU;NM)Jz z4$7u?7@f+Djw0nj@FiHda`AjftEKD=2MJb-Z}s<4m!gDWB-y5TDGxcCD6^B+VirN6 zP`2oM*SMzUmWAMekgc#?(c{jSyfkSk z=F|q2AqW2??CsNIEW7*eXq6oz(q8+N6ggOa$D!=3wk8Vv^c@iioF8x@$B``w(v#!x zD>9a|>;rd@%WP1^mrkx7QNvrghQa5VS)KF&HUF^j^RDe9s$XICRkDV%Iv-4{i+%Oa7 z@@eslwhi5dwof87nodEKbJU{4T|_Ix?D>=b77 z;}`TR^ZwU2dZWEg2hPF?lr);8N|6v6tPWE~-8>ZbZ2#KKf0A2F8&5HuD@=EI2*1ex zf;=e%Noy*2%gszPRh_BVRE06ETA+SZPK1;M0PhrVha^>o=#}XWWbT2OO=T#*0CD*E z<0QnpjE`2?dl9Ojm(-)rj1yWBW&$E|pN_~DtgHW%@S1)CjR#&CFljC4p!4|WvjH;^miz3p1xU#fgUkVUb zAH(o^M!lYF!lni4k0h|*8kpMZNsg>hkk((^P5^<&#Mrw2lmi%b^ zJYpqmie=41dw?5_$m$xl+6bx00)!YH5UB6RL#pH&(vpeZet?P*J#_ik_P>=vNCqm%2GDv{s$atJC!{{c+Vgc`70o{1uizzKFZLCjB?;$ z3f+lFLqJ?=U@y2lE#}Ti#m*eaxxlh%`=VNhrZh!n{$teu5i=p@!Q^i_K0Jcj1kwrT zCaa9M=|-5bka?@wPDebNo;VS?SzI*;JDua_MaDhI*_ycSt@Plxzu!XZ95cB6hcNxZ zNye;1uEb3lTPrio6y6uHF?gp&m=7cnYM)}{7`}>)CMG7*`%#pa+;cadGy%j$Pm8=} zPQpb&Ro#k6-<}jj4(e`y-LT81D`x(1M1|? z2e+8MKL37i0`v=btM?!J?B0#0uOV5GC8&$S%b5cK+iFjQsAhH_4%ai*c$_gO$F$yiHE z9<9p)VST@EVCKxbKC1bjXMl6tzCIfc+d<_a`n@Ga=10a(nk)Bx2>j%vTfN!#FWfnW z)zVmQr@>L-UVi|gkZ<>|>y2~@OCB1g+`t4~zE+HOFH7O?(w832L9LT2F`~p!Y0@yM zy|r2rzyX%6$~R;M$l5aC2XNw$W_HH=64ALRXSCTDj+|NW^O;YPVihWHjLkHC>DgV~ z$da$+R_ks3f%v`@Zj&g|xcx)R@m^j}q1w{TaT7$o(7gNrlZcvgO?k07{onm-&sbFgi}uiAVjBrm;S;i^#Ht3rRvJ`a!}l*(33BdB?R5MvH(Llt1PQ;K%ZOU91!g-m!_ zmRhq(r$q(2NrPf@sJ@McByYK3aigZVbZUQ#} zZH)$>uw|ivxo~Db_*uxD@%_u?SQvlETu#8hGQ1Ub9^s3&x(IU#; za7{_p1LJb6cd*F-A)!+$>f157`z|BCX4A^&WFzv5-!^w~sfgC;K0#SB;Ab z+&y3!bKScK?@rpiF7HI*;3erd6F6uXk4auK$p7&DPeNu{0`tO{j2Boa$YEd1Lo3Vt ztK7=sLZkL-eeJO9OdQ__Qc~l_E?{3O znb!M^uEzox;tii*BDqPM#dY2ScXP*?Rk7H{npF?@RnQa{gtB((StIvG6gT0lU;l82 zy%wT<=@YmqdSWQ+!Bn2my9ow(ZXKk6v> z#a#Z34v`TzYT^Qo#_rDbG%l5X;`Q2uj;I)*iY;cynrol10aGfCbuTNd9$H>9DJ309 zb|jeCTyyKkbhLk6doPwV4^by(n)j}k-1 zAKdX#+)1)CeN&ZF1S4L=J%XsAJJRa0*ci!8C4D$tK3-?a+sw7Vp+$`<7T&`(OKTiY z7XFLrnpYs2%ZUgn9^DfM0=AGcro|QOx=oMzI>=p+*2efh$@LLdzA{|s>``M% z1lkp#P4T`gB3d*#9xYvlUppQL6+J=8k;Kgl-UR%}C5Q*Bv@OIP#gVF31f6Te6eX?p~!!i~^Ur^#Zf)`0yRO4{4Imnz}oD*toRiZ%PwBJqT z3%JfaxqK27+Z+NfZ_As9k5zP>ZhL8Scs&VN_ujv%B9+9Rn4`DFnoHt*1EcHrKmtn2 z;&W%wf4DMf#gL+MXJKRv9icEd8VwNJC|kav`HFz^j9eRhPJp>#0o+t5yRr{{v-&L` z;+36_aBR1)0S)`gy!7kP7ie*)U?LOlWu)Xak^>C8h>CY}Ne!LihC(OLJdNqq7BYpl zcLi3|UM_Ir5_>V8^V;IK+|(0%91~7H-s9OM96-@@D24T}Mr6&~fJq$3BYVEw!4#8_ z2~c$&`qh7ZM{wk3GjR~ZPBtoNu7V$<+af``2rMcM^(PW4JBbshK7y6O8?1_%IRdYt;7+gJbY-<9u$h}l5o zSgtjrhs!iuK}Md0+%zGzi1FbXDzP7dHCt?)$^=d zT}Y!=cs--b4$|Fk2*3@9(O2>W&{9H=@oBHSUPN7NH!?9VC32l0;HnfZD4%@GQc)D+ z*?Nm{N2+Gb;NvA|M!))_PY9ZJqDFRD*l|h5t7&A#Ejc=9#FK$AnmTp_OL9-Su2%(D z+PGX&=R6%_GMe^BeyOe;?a@Sv&1M>TrmHA^GgZCTP?;=_czzrkN~W>H_$))XtSoYB z@|%5RGDd=QGE}JSV-j%~^@j!26|yh!mz$@mW@-aQAdyjO8E}Kcr?-;CEFBlZL>j@X zGf8lWB(M$@IbxD~+3KU)qT48g`*641D4WjQ%et+x|IxyBa7jFMua>MGI8*XO-;n%5 zWj)8?+-L5#RkT4fG&1&Ev!_5pmq&Y4_570_N2KNHW&hIpr~iJv_?>R~Ow_NAWClx7 zSo&1v&m_zm%53_fR9xYgCEIRg5K8NsuJUD)cvi-=aew|Vb}`F_$Yfh<25l=@4qm5B!oJ{BNsXFb3jks{W;SdYS&u)m>5y`@eVwh& z&l0OJE?lK}*IApGN(B4y!C9QR-xWKAtzDRd6(kxzV+SdPpAr9O>`2MBcIR&PM}ARuDai)s$M;Q&RVx;GXScQI!ArA zS@9ry`fT^T0hdXtSCh2q5#@=coTg6neLwt)rQ`IUkwk4G?RXlzQYh%~087UGCpi!e zGBXZIm*eE-{&)Ides|ay*LIFVuv60lR%Q1oD6Mb^?TZKIT2EXn*Nqaagor?MFX(% zA1;^?{QRTe-KU8t#+**pUitK1VbPD|Mkm~)!GIxhtBnlSoL&2vUhL(eF09S zu9k~u`J65w)7~nirkrG=ST85b;jm4W%eE**;Uw0H$QXmZ>eOgz>cVdksx4Od&Zx5~9)v*>RLMbh6=n^R8b13|Rx=`)fPLk!(}po= z%UxS<*uz6g{?<9Q^@N~tBA~_ExR21yG`ZpUaN%mrzpsn@rX=G%&vnDh^{K*xAWy>n zwY+>Uc20K>Z(r5WyEGnq&xH%>6u%d|BJQCN#B34(79tnp za_}Xgu%uq1NT7Ya9w_<7+diUChq3U#ZkLNB&rjZWhDmJ7x?}?F&nOxj{bzU~NxJmp zt`0g;RK(-U-n&vh842UeqbwL|jTr@-SjoFdFq86slABID-ZugjN;y1~XkVhe!nXy@ zDgRG$LR_`~;MC_-Cgohl{tj9Pn6Bk1o6ISgGdz2}-i1%x^VpXK)>+p~opqRYdsQay z{D13F%x%K3_|xFaMqPS>M-U){nD~c%G+GaeVFpO61@Xjz8MRB@Lf29s6UoPjCC4W2 zRyA}X2&&JZ&h!hE#`i$dzq`hK${P59J$Dkj71EoByd+xfY?Q$5nqTCmkEBZ$!2%+d z)V~8vt3<=Jo1G)*pEcmF>37t2_}W8jzI! zqI{SA#wfV$0||x;ImZF)xYFU}^vpg&xvQ?Zj@(Z(3s0tH+1@u{Y&@5mh-IxSJ6C6% zMZC69Z|D`bGvW+~d?caaeoQTZ`Gq1(2z3WVJMR-W7|n)=IG>n5$c!mXWjWY zLR;2*6@-hp>^qsNtFM3&PW|S395luB7LyqGC%MtIF?YSyfBC=32;6^gY7+t^5B=b3 zM4$6q?>&2ny{SxeD<!*(UwbjQ;er=l%vz@TZ^>e>(x~B{kI*bg?ozCmGUM`k$ zofT%{StKrRjWpJ$aiakkN=iNMq8yekBZ&YD7)xsK>qmFhyIs&tJ`&C5G>Cr@; z&D-%%QJ~0Pz*!36LMrSVBeMnzpZ0IPa6SpJd- zi4n1sz%i7r*0$Q_*k7|%W}RHu*}jG#GFnr-Bhv9!4>EgB4Q#5o-{$Lx;u18!_Y*&L z`Cxo<_gX4(pzmP;76dA*bgxKejMJ-NF=Q`^uNS+PuO+;z$R#PZe6a0;74&{ibz)Ma zU|SSU8Jp7ZOdJi6<#0XWB+|+i3Ucn%^*75&LyUt!l+b2bVsb*6cf^YI^CF|zq zhmMqdw8P_?94v^FM3elFUv|GMa~>;VZhBDZBn>eU zO3~Q*pU}}0r{X8LE_@gv%!a`0H;z6tE?Wotgfh!8M)dImMq3Tjp5@9a81hc}T` zU-V~)J~wu}NFSbCErXxuoH4+a?1l(qQi172Z3;GpoHmo- zFsIDeWgA{S4~sfZ`4mBeM{Cd0%&5!QgRA2|Ysh|K&|Ie0P;D1DoRxO8jguzlJ}l~> z4D$R`Xo;rx<}IA%jVX?Gd$m|h<1Di?O2gOk4xdVg0%k%P?JU$fCHsSMX6{am6{YbK zcQR9EPFuVb`wiCyuXnGYHP|G=Cc2sM2elL;k->J>22hA(5<_)rhjRg+sp+%dP4UF4 zYwypL>h*4d1ufm}r2WCFM!dt4h|~K*R%5f3*^}d^PKPQ7f{9cBs{b#zhD(wXD=v0N zEjp>?GTCLW1g7+4l=N7L3Pg5oBtGAq-8|QmU{+h|tiyXY1H=)y-(7?I>rkW*Q;v1Y zj(4)@wvknSbF;0DeKV%YpMqwBy~&TP1+?t`6)zzbZ^S?=jWutO7qq#*SlBw3DUP zv{9s=UhLXLRCH;vIV`xSDV3TELPIE9Q9pA2N3|M4=DW(*RZuRH`F#NGAc?Pc&CwSg zY;FvsA`wz{7`z~7*U%3lA&z@ze#sJ0d&%{`$ms>>xUk_eomALen)dX+SI%fk5qUX{ zOns=S#i^+ZhwoP03(*e=B~CBcYr$w$D$D2ezze41=jApQ^IzOkO#>Jg0r>3qTi?Mv zm~wdduBupRvFo01Fepp;RKu7*`(?tFzk#1O1Ii@P%kpT6;TXHvXXXzo+2@ezO3vA{ z&@cn;5+RvNv3~yYj=1c=6|710zl8MGX?{@C1{r&=s`X0BK^G^ZDbsi27ID-KaWo!H zMy3)S82HcfVVXpqG-iIhE}>FKo9;04@wP9MHZ2B}NZp|fxN=D0!G@;T+%0Y6&7Gi~ z`(H2)0iIOSDH&Z9<%gN(>gjP?*9j^1WBhJqhY8F>D4)xnC9w?CE0V5oqKH4H@p*h@ z!?{xR&DXFx>?Fc6ck=gh9D($a%}#{!Nn9_Zx5=e26q`S7HWWCPY-F0r6?(2WCta9l zyh;Wwu&9n@QqxH4+8=p7AH0WLr0W_LA6pMW@`zmuHY%-#08I-@qkRDM{19-`xG8D@ zHK0#xP!5DxNEy-_q|AC1wl(6@Tu!8}ntz$fhHtonJ+bOn(ZyL`bu6MjT}S*A)Y?Ao zQrwt1(kj(xKPi_}p5|smA4qN_HZMqPs-z*|Rz|>1LEmret!!OCA@G?~3WCO40Yhcc z%FJOR1+l8ZC}Pm;1CE@~Zh^w~i8#v%zcgvu3G~>lHm$sKJ`)45ttM!u;msVgCJ%}; z8Bef^&tnJj-~{MJ!uPR99v{+Lk0(k=DJ@`QSQrnfcJ>M_b-g@}2o;|9440=@ea1zm z!+_})g+x3E^=+YBT)G2?9*xY$eS;ijiGLr~Il^&4LnMMf?4iKJ@}J~D@*dNi{gG&3hZuP=~fqEVj-*ybRvS4(id17vm-= z(WZ?deNe)$rA9S`h3IAmT&7c#9LR9dssTAN)#)wpvZPjr2_#hXiN_S>NzoJad)Ws` zcDyT&W+|Gxg0s`M&=xuNHAqT65|=wyp$J!He(wsiDSoZ@6qWq0C}|avCGmWo1wO>gi0WFc_Vl zib9>RiC%#*hMBF$-K@piFUvhEx53D0%oeo~++!B~b?IA?hZybcEad5fF@q}76wEvA zz~zq2DGW8c(l4f)irjOd_^Hdn0mKuR1s-ajR%0m1@RZU_R}_Oknp1Z=|K(3TGdYd2 zdU60Z3R|z>vW&zJf;5@gHbZ)7^*+~#>5`*AishmP-vkG#SccJ?bo+#S-yXB8%0qjEF;&>}84u~#yK6Ov8wY(g@(Vs293Ve1n zwzO$0?iy@G;zB&J<@Lx%u9$%$T9bLARH}B2-Z!i9Qvt{; zK5Cj>2v=8g`=&eC_M43R1&YhHGVxmr?6vQyHlZaL6k+>y&wQ}JGTj9uoqNmd)ny?W zmbmKXvXRQERJIC!!c(4wV#t}E;U3%HmcZ5GCYM{mq)zuGE5ySF2evW4`@++zZA*u% zN#53tWoH!CPD-h3v-i!rD5=oyGXM2ps})P00$5K~KN8)8Qlb^At_t^ z8rm$QQmZ2Lzk7@)4AWTL;1JV6%{(eNWsU%;G?;S8sQ-@TNOs0!3|ZmpEnjxH#P9G1 zF}c%3K@yg|ECr>$Zv*A3>_L62OW}|Id*pD(0m#E?YKMo+X`X+joMEP-v98?A@EsTT z9P-%4j+wNAkj3Gpkun(}g4d&f;KzX0+I#wsIDX|k06_M4(`l1v$CzVT(jr5Z#gPBl zSlE@E#F_kXKRuEoTg#pL-Raq_9u3(y~bRCh6edoevrE!CEi})f_{KDuFyy z1QHYse2-tDwVscLk0RT#7Qf1M?$5>paIbUv{XrB6{>-lh+SjeBBh`C|WvZL7z^`ou zwk%@|dG-N38|twR(Q^zcF83nW2aVHXzcF1H>b@Z8Qz<4*vLYhJ&Cy`ch-)y`cwK#My$ouHlfDX+nmkwt=a&#Sh<`$KD&wkr_W@d?q~_1|SCeJD;~6&Vf9 z3NJs=vR=VfH@1i2eMeSu{ZL;Uo6`IJ9UhiTl_$eOVsmi4SI~w^>7fy1s94tEn0Dx&%X{8HWRmUb)O+5C*wZZf}EmH=1Bgb+C zweG2Jt3u*VZ&&&S74-|<{JlPLiY&eRwTg zR)`)-e&c6t@C~{mJqruRXp*B<4XeoM^LB8k38y}_d}knWWaYayb7l|c@ATMSGjE{i zNg~B;2_*-qm}q@;B#3y|Fgjj+1cF;3x(E_I+(cvr?xy>3ZgW2c5%j8aYT5PXZ$zb% zAd}aCn{LV}=#ELWb^w?L%NNqXOqSgdwra!8Qd*bntXCem6YOpE!fb#KSr^r6`Tm<| z((paEz!uQ)o7y8`hQ?}VWdemtKe3M$y+dJu5IITI`|hqmtj(5__^xdXNaz*T z&B|Gp!8QD=RH~BT8odl$T^?BNjQogkmLPk`Ph`s}IwmQ|TzKYR8$ z6>U4u(}f?2yC!Poj{eR)HO&-_nvyM!n7#!E=l*Ih-j^cPQjTX3eT?!Vv z!h1*VXeVF%5mrnoqC0pQN(~MP0k4%@7I%na_Sm!OewolwdFE)TxU2C*J6kRd)|W8i zY8i_2fV)bPconxJ8@R`~1$RBDTKH31aEK~ZY{hpE%-djATiM)n9S#R=YaQPF$rI4w zF#pNvDNc5?i2ml#i`nJ10{sD%UW4m`da7pG#fx|pC>79rBhnw7fC1Q*Sz0n{$YKn$*Mt%qX>LKNT zgvG&lH+}^?Az!GHP=f`FdIJ=vFSRvU< zlb|J)t8IHSFASq;#iWxihm&f;W56=zpXB;uD$NZ{`tgAeQ1|Ird#J4;T-EfNop&0O z%ftF>Rp^$KcbkQo9<7@RM@mrxN!uyZ86T8 zEy-;Y^`hQug|${H2}qB6u>~2CQs=fuSLI34kzZ$!WmTK+PLk7}n0s5Dg!I(1q&{i( z(GC)RV#DmN$@@kpfVUdh5V(Je9rrZK8>XjzwM z1W6X@LG=l%{VXjXw3_tl*LZo7YpqzyH>vXuL~@Hc*7`ydoXB{?m{o}Dw0B%d@`*UH zTBQ#EkEFA3Yx?cNI5E1rkr*{XxS#PKDR}qYoDY%6qPND|v@ytxX#$2ms+M6}8AtX4|k1S?Y2C-zeb7hjtb%v-%{3n`4tsdK;%4((Ocv z9F5uJ?6g_Md-fBG(lgi*lLWWb$1eW z!k$Zipri^=&V$ zAnVr1-6h@`Nlxg$MH0*DBnpq594U@Z?#lMH#-&cOQb~cX-jQ_=uI{33I~hG3ojkj< z&8dac)@3+TxVWnX?7Gx^u4I=@51%P4qaKfTG^sCQDqS2X$pZfhZc}N4Hshx0N6zA-dvLC?vsE zYouU1M+cid+Kmx)R5i=pG@G<5`SCHi&1&E%-zvXqNffq|f0RE;n(>x@dqg#)lMi^*6v*8FtcUHg_}K8|uVsN5n^&`^ZbNeD*ozr4MBHlESw=ieg4 zTeqwS?{!p~_$)_>t&qiGqst%%6i9Q!qMoa1JN}$2LEK9;sn~*vN8+Qx=YQ_(u{QTT@i@PE` zg$z@h+Wh38Raexqqps`AI1Fc==5!*u(`t3jvRvbqTUvT2%Ev12#O-YxXB?Gz!`>8; z_^?%&-3cU%#ERNQ{#cf^F)8P0`2~e?#H$2t%cS*xmO`bO*rRR;B=b4=A#Vm(2zi&& z)q0_OiQLfS;`&c=v~1E@`7Ty#xu&nBC1`n$O@6Q+GlZdxohQ86+hOx;TSk?UQ#PNI zBY5`uCX7X1!5BWP!Wnl49Og`s8Xc6T057jpJ2~jjRd+0@y17z8pAFhtdu8X~xgM2Y zU}`oMX3S?I?kFE~ppNU^W3!xjk(DWRCmIqCUr1D90u}Tj>aCPF!o`CJY*a7lO*xP& zoU64j<9=^>IkpB{t$>5iM)d7Y-Dm%tBTuK$0T))%mTAB$_L#}p;|dlDkF%l)nwokv zBfmPcCT_UMwtVahLfvC3)_iFUy{Q;H8cl^5uUioK5Wk$B#tRQth@K+)!t*&ty>SYofi1w2MRN5 zJXGy&c@W2B=hMkRzsPGCm{_U0#v?3}H_wm;wAU1j%& zYoccvo^5{?n*f)Ia-uvPQrb9AW-kh0V&Y+tX5i3bwt%WDqNQUS$?PA)nbB(pq60IZ z)s%;^s6UqJ=G3~}rTa-A7%`x)Z9t_wQUvq9vw5c~orjSgb{#N*F)`|KNLNVC$1^%u zTZ(Ty&RO&ZS#oD}L`wpza7ON2iO>DKdb%0hjFHg>SuQ@)>XuO$C z{Fd(1`ZL6jF^9_Mo|=4sL4C~ltp+`p-VozgjS4p*`mlafK2Z*e6%Q$?ISB^QO8}d8 z*!aDMkMp9h&iH-Mj;3cCBl-&U<#+smd_$v!LSt%;%MRn%*mNlvc`(3+ zo#E3qkG8791-UyaX70)y#AqJMJ zPB_Z=!hqMrs3p9YBy`W6`K48QCD|>9Fawb6A8~NT{g)v3YhTL)PXZ^P+Xr})%+84NR_;C>cdW5y)blCUZN1y>I1P| z3JpA>u_%6rm&6=UBOYWt(ObjJ;QR{Oq8J?}B3zgXBwF_O;vu~C+87oJ+SW_A-1cK99`ZxVseOyh#kX1qA<8JwQPaSqqkocHN}V7xUZEoj@rgW_RJ4t? zGGw;>&#PZo3!1xQ4r)`vo5HAFB64+iRGivSN-sJe^t>nw>^XWUaiVbM-V=ukNoRLtTq6Hz6k((^s-%z^9-LQZVE21FOB(BkC)fGe)`!QN+jjpS(aT zNqGXMoS{&FQLuf?k9-yZU-`Gfn?Y|`>fR{It}r?X(W1XF<=K16SDFO$64PeB%(iE? z(zL9U5-t6v_kkSe37BG?N}{5m3Z($NNR4CsqUOO!O*_BZmg;s*!01 zcx|j!a#paHUmIC=*;06bsZ{Iwxag;CR<$4(5l|z zV#EWLymkr!+g1W$ut&?$Mt1c=A6|C*%S}{RB`Vu4r`*KYC1i4WPx7^3#N6qPiu`iQ z4W6VIlPeas=<<}&sbAN#Kkt!AK>vQf-+k4RyX-8CACaogG;VNB&She{dyY)j7JQP6 zTM1u`0>cUkg?ox67rX@f&1d^)Xe3RI_(g2GO;E3)z6AhI{+aN2W?Ed8;fRCS88g9J z$8O{hC5T)jZbkD7wUz=@gN2ULN;hlH1FTDLCA&9m(3)ndEC=h?X6D74HT-r90sP9~ zPtY~=z~2>1o{QB~8e?O7H39ce)KH%xZG>ngbY)filiX}7#ywJU;`TlsI0eX9Co75! zTd)T*Gj6fEZaywQ$STkpV(F0BD1S0c+MAnJDqeo8s&VMCQ<0ir=aWd2y4@alQQWni zyFEIoGvLO(eo?;p!u^YNH3;Hco%Wvc%X~PRrx!j70Zz`4iBNTVTUS2*n7AIC{xY^$ z_)W~#Fiop9qm0qRc4sxs;76(TZzi}2gSUSt8~)nAd+&6QaRZz1E887HVnf@~GLNn|{k}niG;K@nFHeZQqO3n}su11`{4cw`Bqw zLzt4Bm`MqTz~WGDXx~*Z955A?!?J`&lGt`EVb2YqkoWrbhI~N3?IO{$zLZ_9_&IP? z$6AN`$LCrH8A3f_NtJotiyBf--fbbCH`Sc>qPDroAZom9HfBaIU@a!UoNhf%_@ZDa zMAi_+P$hO;>6*C>0-4KEa#84=pSuA-YDoJPrt|8#nx-GbI@*<++$>+i1XrG8HynN9 z&=%V1o4vi4fjZDJcL4U4hcuNohEa!^-G=6?`LmzLMB|a+E4htlBMIkEOkcGvAD6ym zPai&GykGxXyrM5kR=;@I{Vr0jHe7Nt>w*Qlz`$jjG|j%KA>J%!!|lxe@v-Ue-;y`q zAPG@geQnc}EC*!=S>J?|oukJoZ4!NMyfPKsg!lpbW0@a`rLaDQ67#pMQZNb24H2JZ z#EB`Ck#@v~t0WboRm-88FvDhEXl0E7E=(vMvb5&BI2{n9WwaWR(K!}-J8fh+S*~LE z{aJX9tL`KdG(a0oNi;`MCZlP=uX0Au@|;kzrsI_VgHt2tT`k6Xg-GXgP{Ovo?WvWq zp0$DpGQg{hqi#MsJ1DrUjnp?ee7=w=K|+$Vf}|y!#bv8aynw7gny)M|z2(8HWd`}8 z_ikqmv!bF!4J<~JjQ=Bu|PqwKTt*gfv&w~ zrr?L@XES%5Hr+vog}&iP8@}`_h<7DEq(>OID&$4)pFdUn{ngP|^7o{A?@n1E9p1IJV-QuLwE7EPUXFd(K7O4p2tZP4atMXC<9XjpyzOP~VK zbJ(dw&h{`C#J-7zp-F6)z(Jft>)6yq=?5-$W zQLg;HcBv#tDum~451Z$7V!+FeHa989WcZo4PmGouQKed|4AV%hqIoJUvt+z zE7c8&ok> z(}J?4=M+CS1>z?yKMon5&@#I6t6V79*_^z^2eH_pk4<3|Xp!z_hg01ch;B!>+Dk@G z71Na!D@4Tu%AZjj;4qKAjY?Jux2B@V-jD9iv{TS>cVQry<5ZuClQ9&k*I={=58q;r zStYHsL?d(BmxPMyDQ(eID~D0)Mem2sE|;*dxhAP2{!7N3O^u1tTSB6~uH85hQMT+B zhMgJ;9s}Id9ubbNM*q~>o$^e=} z&}~q?-c9w-kAJt`2>spr$$RDG27B(dQ;a1~Y%I8WggzJdN9;oX;i=}!UbkR14r79g zMC*(u0j1i8>)@v*T$fXz5xpYn(`h|1pf69wCM+GVFvLA2%w0l&+7uZJ{I)d6 zb^w$XhqF4~3B^NpCTM#dR4`_i4^HW_qk0s9D;0sRmLvD?VBIEEq10QX%d@-jO-NLA zMBe2nq~!id?q^M{Rs&67q&B>(h+4h~su0;G3u<4rgxfZ1R_I68*N7VxaJ3cq@;!@^ z+(aE~`aXrigduMvUqK06>yJfoX^H%;DT^EdbCZ)P#97j~BT(EjGkW?M91XIW;wUk_ z_cZVy2s72YKNz{J-98sJuN(N}R`Ob^$g*I=p*-j8`LE=uH;-NobA1{gufM(E_Pp&I zKeMc0ey@IsXmiAa{~ZYGu~A?((z5$nve8X~<=2FQlGs1WG=JzvO>Tq6dQhF{M~KO< z%Oo!uI2kbvppGNTHfxD%Paeuj1IvqoQ^w*&u}HFN@N_3F3GX-u>XTp+pY*4W75ZTn z!oLyM8JtUpQxmZm5H|7jz-4SYmt=7K8TU330hQhe3Cd8k*P)LjEna3~j;C=Eex(LSJT%-H3=ii8WMt?h3J&JADUs zLA5a1LBt)BJ)GB-L0xkNWbkDH8yW0RHy{#_Cmw4*)4xR$hn3XhU|rpRq+tKEM6{Ra zRz?SwNF)jG@MyJ*dUr|)he?K!Zh7?7tZWV|B`awt^0yc|>Cfyb;%%S> zO8(_f&gwJ%TONTd;0p0I3WzW|dX;>c3LlH*Ej_uygT+8GwM4j}mm<~lr&JbN$6=qr zv}xR|ogbO|7x(JHd=^DURxOauPVRd*$4A8={GcdSDpdoP>eiheQ|$H;U<_o$n^aPp zB{|7p3cwi%Eb~gcFb06S)+Cm2<dcT{LEmocs{`Rid}Eq|EN z+@r1b|O(;%Xf8l*-P^ILg<8qx^ ziBTBD_}ROOjlMZK%F(T_dv1Q+PL1XHJkUI633N+OOJ^Y>M|_c~$tiFs=Y<2+q}DR5 zx&rVyl*_BOHa<53EN$YMnO>Q?4|^=E`sma`8-xO({f<6Ghk6K;ore#?R5!FeqSq?S zd4C0E<{QxPGE10~cq$ZZq9bU0j?;yw>bXFUn7i9x7n^^QTTP7_($)S)3J$O1dO)U} z8zd;pc^q(0cX6E6Wzhsi5DoXxu*WC0+Lg+D@*ZK)mqLuDS9^a#9kld+Tr`}x@!krp5-7(H z6Kb<8bHHL>jO^$VMH2LnH+Q#Nx?579pk?(Nwp@@W-%TxIB)5#`=b1236Aw<|G&DpY z0P5n;<5nMhc7sdm#zC~c%&PKJ))l!CsWAT3x0QFFxefSJ^EXz!h)0VJ5{;L2w@p#> zKCiI5Bq#2Wr^Y;1Lp%<*)l$l!({x^>aJHBo_ptta1t^J_s(!|fC7LD{aj8t&sCsI2 zjKXkj$GEs$1Xuj>C(7BJQA8n!rMv=mH`lqZ+n%hv;m!GJxPpF!nf4C_R9sSime$1q z*Bx}}Hr93BMjJ(QmeLG{S{uHyDx&dFS~>QIca?=fPdRdPIk(o}7B?S-r#b1;e+J z-D_HRxHmZ6%3mg^WlJAJ=zBuU9s`PA(d*Dr-0=!zHmTP7Mn-C@dEYZz@E7Xwu2(!D_-P(&kb-??_& zu43D5STmS5`#pKCcdr+8lP&i_z2%90S1ww7#a2TQE@BRx*EO=Vqs(Pbf=OpES?1V< zr!jKr8}rN**!0)Is`cdQlz2Y@7vfVG1G)QN{BG%cP%8|{zQ&zLy*ETYTD?Yu(3NpD zM~($I8=}Q+_VddW_lG#iRT7s*K9KuGzmr?y?i^dN#Dv^+m+kitM?rY_%ud8v6OEf$ z9dyL(sBIVVnKg^59oF(!2TxZOfbP7HsYmI*bQRTviCBfIQ75osrnM4)cTuejml#<52psbW?CoL0A){84o2cludj8uh|xGc zoev}Ldl^-VXFS;X+bt}sf`DfjU}6z|_89!P{;|>oVHuKS9AA7cmEf)5?f}~z=ZwjU z70jx3|1?P`K{5|gv6uf$LPS9&KA&7Xo~S9fa)~OAMeO?k(^@!L$&(C~texH|LZZceGzG3z0Jjv?4!@pP0ie)7wSyZvfR&HP1|@ zrNqF|bafqVK>^ix%LOkTZe<7{1}-s&;i9vyF;CY8q!li+WHtk67DeC7L0119WK9fI!qumh~nd@9JCee|_k((zw zToiu4C3CmmoPFEtybozXLE)N{`m}MUM6D(fjlz%ZH;WOzQ^W`TzBal&We_h@rAr8WhM4c{|WnBrXB55!(HE3qh%<9^*NPHcj z&#SK4VW%t;qQU4l{L@i2eG^VAG;=jz_C1H_yx>llOsMPe-crNa|9fG8Rigi!LH}@} zel2kxRfaS7`riC9JflU}|j#N86t|?}z=m)vG5-ApB${6z?+Zdza6T4cDaEOpA$6is2=P4@ckg%gzu;Nwe&6c#7 zoy~n_|I~LYI{*8_n?pmI9o-iu+bbR1-K;F6;wfCYCIQ)xb@hzM@t1{qKWu9O7&_PWDw!0E`%Fv=(guB z6fOb_b~!2?Bh|{{c}^YV>>su{YTK0<1W|5Qe;u9u?$^lG1 zt*Qq9@DReabt%Z*CCn#s8%dzUkFMNtGi#g&$fmzDOW<`qO7M!IS<=cV$vDtb@cjI% z&)P6alkr#StZ3=Z5@BZFI?g?xj%np8_hd7d##=S*+t~$h#qIc>!(-tY&$+L zThE)gV0xQGJwzStV`fN^IVp@BoJKJTF>ybUKZf3F1DCsObxS>5kAfqtl8tN)S}G+H z?N?ZO@Ga^&d@nsY?UE#nO(ndvES+>O=RAB8Zz(;`w(h?5Kz02PK~UJ|j=ExJuDL6j zO3x!YPrG}|q|3FZ^QstQ{|lWsv6nA2`zZ!w85G}byoS;_fB)_%XoW11CA##$Y^B(S z8H^rSOH+J2xdVH3(JN?KPxXh{p9HfuG5yK9=D694-o$#xr-iD@%wZ;U=jW}&36r^Z z_Z-V|R~l!ZmoPp^oA5>Wx!5F5Me#nzcH>80(4q}=v_okSu-`PVc-WHlmXeXJyo#YfKD9lX_9C4V{ImD2O6UNC!u9!C^-5t8qyQQk-9^wMB-k8 z6fHNiREawwmB0_iZMoHGH*bpD%9aUE?FFifrIv<$3>$d(i92VikJC8Mj>e4q0-C27Y48VA_hJ_C ziIGwm>l?(em|Vv3jr+UxcEb- zAS%5SNGI2q;XqA#Z3JI^(hDZb^!16-Sx6>FS7*ch?_7TaDb2Iet%8tu48h6w)r_g8 zhgkQtpgfei@G<#Ob$=Gr;#%c^W7<$iT|^E@Z^)28s|BYu(TV=1ijit#IeFpaHL=M2 z4Rx$^X8u(+912s}K8nD*2c&mo;1t8j}H=#dG!-5&ZpEI|{ zMQaB@hx_W7%r6o9v$i&_r7(NMdTI%e5?}artP9C^GLk4}X{nuVK2FsPS69^>LEZE! za+h8II!?rEzs#Iu>wNMQ{e4&!?Uo&3A(d80vN!oMx8E*XZDR~3=L9Fx+mFI@eTvVn z3Dd~|$c4+7Gq9^WM(3Xd-;6JQ+6}J{N5ti#r>mI|XSTHDMFYaznXt)u<(_FC-}u-S zx`#;7<9N*-9aP)53cIRW^e|V^D2h_$knu^ba$R`a`eCnXkuUkCOUsRzWTmK-Y6L!N zskm;djnT8mR>N3MD-$*O6Z~-2n!F9C`BvVUN0(4eHY`2Ak1}z>#6TUgiJ-?Fh$W&P zvytnisXN+wjV1vhtrjX!lCXMJzBK7ZN;+jPoNV}?Z}xsgRe8Ew}p^<==!!u z$;n*IXx1XV`c*;e87jS5={*q$Z0z!FIh|%FJzOo3_Tl7_vSdwfXLe{KOD{mv@)F9} zGR>pqsczSw;yN_(RZCxXJtbv*_iO8MR5!!P*1&3G198aSWP;WghO2tlt%a{wrXR(7 z!-VOSKDZ@{SD{x5oo%9!m!jG+l|@hB5@ZzXD$AhPDzXJ;>>IyVs}{TDBAfAwle2rR zHW!bk(2H?C^vf7fd<491r-AOU5>dxLbXyZSfQJXp;jxh|6-pDqX;GvecO{`kL%MjiI|WXZGKwvd%X$VinlVowH0@RM#&6`Pe>uV# zkxGbRhYZ8{9X)h0^;SM9@203xDFLPFi7iSnM`t^7GV8Jh+dHE3#Dxf2PqUp>qv7JKwi-ujU%~`||ya{qPCWF+a_$cRAWRWg6u!%O-(6sAy zOPWJ}5hr7Tsa=Ix{B#|=q;4!uQkp&&8TVKcj795`V&UO&jK<uR5SK2g3zk2#9;;_3JqVH6U%y(C=Qel9M0;lhAvV^-@D$xV6^NM!c z%FAL@8l@{hWpL6E9I#={u9!2T_9ZaJK(Goj*4k5WBTfJ(q0Jk;yKv3_pHuLbhHluw#ENV_&c#JQ(vMIr_o zs#BLUF$PLvzByeb^S07E`?%*L(&4k)Dj%x%7U&wseD*a<=yWe|rqS3lc~oLpwDLD} z9%$6r4&jMyy#c?Cp-$T+Er=RRk#a!E)rIT1JEb-wLA8>9J~PZygBsg|>iG!LT0#B+ z@~atcli)*H=Ap!W$jlocE={7MRqYJP@|ehdq2UWR!^seFW^iPF?TJAmjpLviM^m@8 zns|5TqdVm)3Njp7t2OL5Nv`E%Y@GsSbl%Ijc`fccA)fCUq_z!;21{O8<9@!}7K7hs zylLxnZrqvAb9Cd{7@Xs5rgx)gJ}L+^(bpP$@4VVJM-iLaP<`oN_ITzRj#4Mipl2Em zCrn&nTl%qkw;$n%2s1HOHlCVA{gYX9TM6t3TIY(#S1m`+GcFRgf8trndrt(+hiBNb z!L`4s)=IO~fY-D_onPV{b$Da`#mLrrHJkw2<_c1;D1S(w%LKwnw54xkK_&^lO$GYM z{EzljKQdly72N_|%?!LvD>erw##d4SR%2+*cD09{RQ3(ZdCxYe!DOIVFkKwE(|B-I zM?7DikIMTdfVC;JooMfTA*iMyAPrx^OhHa*(%Zh+JQ5Ev|AwnY@8P=lbX}gWalg>li z3;Ky!g_O>piJ$xD+CLHY$(VM3BI)Z0`Dl0hT7$g-@nas#Oqa}ry;C~k+{_# z@h*{X=JIe5Ad_WN_4?ev7E-@T67MhApe1KC01=Q*BkRjA&Vqe)nRmVw4vRa*2^tJfZj~t zq)fr=4n)mirBHo)aoW=2J9Q`7FMT?r^)GdGn!E$ZgB9&%*iYr4k%|AY0YMH|Uovb%{-ko>oysduLQ&p188RC`8% zlpHD=`8a;!ng_`Qf`g_=Z~`%1L_N?M z+O#s7xo=R(;mB#@c$jZ}kj3dR`}mAv$_)CYFRj~R7zG7V zriQo9pbw-~8j(zm`5Up9-Qp;yUbFSup)W&r>|2o_sY2*Tl?C=*99l+xqu`Ap?$R8* zNf_arr;hO1A$>)X9L^qDORiDE4K!_Y-QRBOG`DDzhV||?_0B2;hd(ZQDuwS@IRpW- zBT{mA?Qp-#c3J(t^zY=Ah+iQc5Y=lIM;pIyDsB6E{N#{qIr5e%T3R)$-W&>)$3x+y z4}gW{Uyt$?#5ys&4aVejFE=kc^D`wVaq^iw@%3geAc#vKfl?bt2$5H33yZbmqQz>& z&=T^e^jcG+>au^V%Ig+8(c=9lxq;N^T3vlQ0~%Z z;EA{6N&}X33_DWNYS5qYTsWBi;;0yBDz;7k>Z6Zxt?Y^pE4OIV!R+;lDiL$&ON_uk z*K~-Pz}lYs(m()Nr&p`NUQMPJR+awLbT&oFBq>6e6IBE=0-N@!Jnte+2bt|`u>gsL zO+7z|B{=X56ZENrbRy2Pm-DmHP*4hsL{`4Tb=%WfqH0=Z8R@93{n4y|m!6fz$J?z7 zmE&}%D}P!hJ37|Rcjdg|A6V&9?VNax>MqE#X&=ANsA2gEp#8xlaDc5;Y(G>tdy-xV z-2hi&nZLt&R9t0)62x!ZmY-5!=37%8Yvk6p?<}k4_djf@Y49ctoHj2}-1uz9mdV*H zjSk0y%p(u#12{k6k8!;kCQ_Gwwy7vo8m8a#k=M=TiN){0rYA6d0AE0Hd#&VaSmvOo}w}}E=z6j&wAy1cQ?QA&Zo7! zgW0nf;H#ZU&mMO4pke**_A>uTZXz|>L>r0vQn-1O@MMgXoFRiA5`vR7Q{2Fbq|3ei zJ{fB~C{wz3DiLgtk?_pwopqOH4?!KhD?6U!$@ec$nny3b;vt>+*slt@V&Vi#e1Zk#hS*Y>S+K|D8s9T_VQ9hTAuh2mW* z&IX(lwNt?9H{n(cpX< zprBhbo`j@Dv2d_0VOvJ5R=D`RR2X*1ODk%N{sV zejm`~C-}bzuK<`YvniaR3@qNZed_En?B7;bi2Y=<$Fh(0-zLeyaE>wI(5NG{QF%QD ze6DgNo&Uf`xz$^J#Shcqt2f{Z4PV_y1@tn5Ct28OyU0Y#>0JDM7L$&+eVGyc32?$p zxe+5hO-A37GeaVXgEI^G0IRwWF&yr~2e zxK;YuCx*eyjd&^D7~oi|k)vjH!cP4Ya<<|%YRqgbBXUS(5;DDvT{nkg^+MKZB?ODD zltR5PzhxG~eRk%hM3%gBqs;YmO6u4< z9@}}2kg25&hpbtAPe85*QYb*yoybL*jv$>pW?#t%4h*$ zNkG9uIk@1}ndI8Brhue`f;UT5p{H#lbE#YFc4Ss0*ivL*tNB-$N z4XD|9xt(jYW#tQ3z+X>i(HGqhNAum> zQVV^So=_UgZ|^o;T2Kf&Gk2E&MW&MB`2rIznuiI(t;E9FoY>fL&pw}eQy$TX$;WNi zDo1q9d6S8naKfulAk?bmG{kM&P5L#aDK}NAc+l>&Gt{@>a{ zV^%D?Nzh#B*h?dtg>KazUn9|OMT57(?NcL1cK%DS@z~|o8CV@ufJeh_ke5p|#iSWL zA*lDX=5T+u?qf;*ik0f*pX3%(#|E^K1~0ptvcyCM=%rP9r}BT2!{T*BdR|l~n zALy*3Xeuk1V@#2vV4Uf2Z(5ERQ$;4N@o`r(BaOJ_s#Kn^3|4_|dNqJzJ`M}U(LIA% zalz-JkZD%YmC~9KOxYZYCsisDJ!YZ%4ep-KF{8T)Q@^w91`HW%rk#!x5*eZusey`ze zcER{vLjXY`yQGh`zwh_B7dEy8ICj4q+ge0BCjRtZxDRyez7JXN@TH(HwhG?W?&!sB zB^;O1tV!DQ@nJ&2F`zbZD#-t4Mn7~=g~=f-zrF>-z)a5}LBU)uGf5$dHdc8S^UGZG z#z#v&-P3{+TUJ2N52e1hjxKjcLGASEjdn$Th@RL!UPjTzca|)*>j!Thp4D3qSV-s ziIdDVSRN2d%0JI&VhAAqIg60jZl9|u-I^lY3)rxP98wilakVMQ2p=|+i-;}@IF}@R z0Odz@l}l;ZEHoEyP5hJGM)EPM4y2IU?xq~)T<9MJ2SY&jA48L>=0ApJ%&&Z9+%&tg zqD&KAPaGD@C9!v1^Uvd{dS2d2#);5W7U>C0hOGa&k+UR1|KVhdtyOdzuZe#*If5f{ z%;*Qcd+M0xAj)T8O@-YG%+fpAyk%`kwYA}Bm|`0$;xHZ5Sdrjt%zqWqHWF;&=(NW!AXoPW{8&l!k`QZX3_&hLv-Mh&Yj1*&1)e z_JcXfb85D}*K8C)>aTxHn7Ai}Sm|&RofM@IQ_O6^G_gZkiE9S)^{D+#>br%X4SzuX z6}AFdZJ?rXv=&TYBT13t^GbBm=WPSQtAx70eCEy-h3iBn2=$U@r`K*2Gmjs*n(j3> zUP9XNl6T&hl)o^|E3-XGlcmXfu3z*q3f6WhVDuPNalI$B7j`Z(aJLn?CEPuB6nuY@ z@x9@4R2ekvgh73 za)y|?w`dEKcvG`_dhK0gKtuj-<-bb5*B!XM9VIp|PZD^KQB*drqmhIE30>=&&tyl2=mzIyVj5& z#p~r;l~SE!ZG8T>yM&yv0yh4&g6*zT&z_v22}p+K3-CY5Y1W)Ukq4{p42MMAIIfH1 z$(oScw6eF2H4d3pK0NvJ{i><_^BuZ>VQ}Ew$gg?g`PnqBjF@>mL@N1pp=`jhQrds;==mABWtHmU+HW@i>dVT4LEU1dH>BjXmIZo?&Q*F_4MX zLzLSxP0>l#NNn5P6`NflF4~pxdiJe6^&U;3W5?Q2Xxf>?loY(w3wmwBG`y~5;Ch!O znN|zE^QWTsMn}pLk02y3b7;U$4K3OPEosbz9zLx6Ge$ZVH2#aoeMZ%l%#rqOag$(l zhq!$g<4Y`olQ9n&S65~DF75al+4xxmXg^zN$rD`lQbf6Yd_(Jm@D@SC2^GG5Y(=cK z=VP`Rd2e0JFS)mpslryH=9QZ(T;z+{Y9p&b#bFB2@|~5wq@CUpf1_4MN;~Za$V3KcPjV3vJrODzu5&I+V*JMV_8s||#CJ39mQr_G@OGQoTOGyo zVFJ1QD#O04RD6}h%W7<|<17ORbsDgFPQ`;L-sUIvjzniFrz0B&SF=mmq`fVGI~P*8 zx8_LhNJ1xhAAsjpVVGr?B~O~OO6(AJ$O`xaB4m{{Orc>W(9{~QLr_pgs2Pg+ZZ z?!$gpwc|`Kl5_IcX?lCdrl!j1E0%%Wh-t2IL^iczH$m(L?iar{U!%2zpCKF&Uvr+K zTSuldFy(dx>MEx1|i$JmB6|;Na9kP9JhYlwH-Ns4FQZ zwX1ZknKJR166bmKu3_Jfc!mvVbe(yF4x2pi@}44s*ovHN(2}xeaMAdx>LkPsh9Z+= zBw~n@IkVHK4Pw?^Ae#_kv|~PmxdT{UgW3^v1^PA(XK59#^vRLGWh3S!RQKDYiM&z& zW>%HT{PyVP2_WdN@tPYF-E6YA7hSG3(rM`E@UUB>pG=FGu#6UP75VDQgRrb{qV=FN zpO$p|&WM~>4MBBRG{~do@$cr2&Wd|6Xzg3={bLB($w{{w6Us9<-aA|Nn71%rOAwC< zkiB9ZjtDESCfIs3=+R<4#3Gl(a<{r)n60`oIYNxa7A4TS4p-!Jx~e+}D5+J0ol=KS zKUry-b26%HK62E0^0YL|ewj?PtbU=4NfV&%BJkN2zNhHEd!7rcEeT91vZY0A(>^yr zK}88Cg%wdBR!5-bC6X{b^Bci=E_q}+Pg*J4)zK(nayj5Brye2|@nw7eZSVOk_qZg( z+c`-ij`{4j?sRUE$5Q4~21kZm%{1qlmB+9Q-dgxnrXa8SQT*y&j+KIotg5kTp|R^= zI|Ww{8{bAJ2_hc{?Tb)HQHp}LUZv@iNc_@0V%wiP*_HfpmJ<^l`F%`=Y?cF;w{nfC z4@KH+*rPj#W~%Cq`j)nff&D3K>7$odHdXfHc!&w=QFHhky}GfNPCVjCS_R5w-q;$j z{7W;v>Oa7vslCG6vMt;L1=4D)(S@n=j&1A(OK`_Gg0A=6z8(OuCA^?=kmaIS$H?{Y zerL)0>~FEvKglhp0y=f{kWG@C6r3k8@?h0(RF(5MP8#8=Vw$A^BA_s5fNC>(72Lu}&FtQfJxC1I+8v>4oLsjN=CH;F4f9q&2NA|yhv74nxi*fa3ubAEI9f_k_0ylO+VeVIQ3 zkSc&9oN+7($W!XS&#w9wba? z(%s$CB`BbPBL4X1x4+=MuATRJ-gDn4h}yW$DU>uq(F9&`ZqnpBNkMCdrggazTcWtj zFQpw$U(>pzBX~myZoq`H%07hbC>hda{#f+Qk@KMel836_ak2-KFTMUZmVmy*&&*<4p!!&Yfs{Ok{Zr@ za5HiI3wmJuFkt}sYNC;OPWi9k3>{?Zgu#YyZfjfl2Gyph!b8FU;51Tn5hzhCY*=CH zlUF^3w1sVOkr5f;nA$0n7PEK@Wrx{|H<|BiJTb5ulEJJ$q3AF#!b+z@7cA~}t#Pt%kCu{!=MjVsIE@Xa-Z z8x-25RB!s=otOJxnv&ZOT#|(T%}<2ikmUog)O12hA^{~QFL+J3bb?eUiCy?Bihr06 z6v7hUjaB=UC2UQ6V;z?_49%!S$w|J8)uL8ab`RLu_>c5eMwxG;ZMmUHq8C<-5M*7X zF7J0I=;o8&;ae{faf13Fopb3z7N*CaBN42!_RunoWVWO`wKpzXNw30f&)3>_;`(#X1BnSyJxg%T3)e?}LJze58^~fP7%XTf+ZasEzsaPqn^qY5ZQ8=a@&%vbJkw1| z`dRI(ZE#Wr6%WRoym6qF{?T1(Dpt-RL zHeHEKQzmng08_CLJJu$}b@#O^+UQE2OFP zjv^z;x7XD}(20Hkz#@gK4hT%@8b%d9N+E(_#+_he`&F9V%o&z`$yL?gqNe;6nl5Fg zH*I^OqMj*#+M>^HS(Z&sHWRbv?&XY^*IfBjw!e&>VXXz_8PS*aVoG)6-)T`(Rmz0U zyyX(s;bPg4UFP2AjdR|HTF6>vR;XEAC~O28(v3XO`XT*wF# z5=#U|#$%zfsFY=lJ|!oWOKNLV4y2~hqc_$>(o7XE{*0R+)=&XsKfu*`1q{7Gp$HFe z*74vKLybVX@#kRj^&Bj=K3D#j+-Pa$TQk;lb?Y>1O0&wU^K4+=n&tP%E9u8H$Cl5% zom=6H7hG$}Np4~K#nPzP@N1*p44GxkMuxYyj7o>+6$B7wNVF1wR4*Rx7sAhZJW{Et z4BO`U{zfg$-_A^m40#63h-*RA?yBD;3z_xzv=ma=rX&8bN+Lyl^3~wBL*razz#3-2 zY(SfM|8pk7wKUoXS5yDT4=)zc{?#&UNzdgV?!@&Jr;0N10K?7e&vcj6rvVmlHqXec z2R&kAzt6Iii&>9x-}1yubf*buj${YNG9Qpbx5F$3QWqr6^}A78Q5#QSmO}!9;J9aD zv6yjXQD1srx<8m%!z;TMynefnF%9GJm%1lWn57D<-%O~~XH6Cxf0QV*4PMKn%dBiKVEV<3?{h(#kn z{1aowa7&!+{e-nZw%Fm>i9FRO;wjmXfqg2>w~Z`K>D2C@pot7ztds=t>3G`XIQ6~M z>Y_eDVkin>6ICr<8dC3_QlbvO`iZMI&oP_+piROAfRO)!bv8ii$kU-{wgy*+`t)gp z+9OX__!*SOa$(jGeoKyr*ugZUOPL>+Cf*#|Qj?pjt%1c8VroS4=^PkwRb}SIgvspV zHWzF#`ft*Y+kMurX>tYQKD=q@7J&G!X1kVGCcfR*DBh1=K?z?16CRVJh~f}$#;+nI z>K5qpViAm~j?7|K!w*wS0)~ZWt0Rd#y?u1K`H5PB-z=ynnmRn}l_eyzjnb#cPLNKg zT580mt9|vbRp09ooZ9S?5P@DtZw9f9BlQ;wAv6Q5VfvYS(x)@&NocptH^>v@irRC?p6fb{@4$;t?-x(rO zWe%+71ZRnGo-7Ws2hR?Xc{*IMQz$LgI|i z5s`8U9s#4)if#V3{rwMeeF?DlCVJF->Rv{0(;R6QOG9Z36^*|5%|&*n^9RNNPNDSL ztXhp0eL2ROc)2^}=0A!{ryH+pvcGGct$XH9jq8t^L%Iw4KSK)o^)`iMWN0Wddl>+( zECF;)S`^XK5g`m~k+@1@j3!sSX_*a@b0%B~D=qR8ZsVSo;6z)m?zQsA_Gqt%?MSIX z8*~Di>F4K_nH9Bh_vnYo$*z^aT3pK6XWMR6r&#d`!V9 zBP8O7Yw9Z?tB+y@PG!=ArW+p0<|W#STM>CuUt8`zy@@-PPdboHp9uCQLPY|&LO9vO zLQDEWx>HAHHHnbPl|#az1zW)O76!*2!Ed5YimA+ELoSRw%4^WIP~!2~mgp8;@WQws zX;mCKh#Zm?r-x5w#LXlXw=gP%7s;n@W@^&N0FbNdvC1SP)$xdi>7x`=sa{@B`bB&@ z>KR!0Sh~oMOBUH?ce_Znvf`?p*zlLY^C$L-;k)<50@$Ps1{G4lY})r)ZXR)SeBDwM`zdV)SAh6iQN-W;qvb^P!mLQf#z%tSslmCrA;>7@%N2>_mx* z!STqRjSyK~dzl4YKZP)ey;)>2xPiQ0tD$&M8J` z#|*5PSJwM=xs^CI!g?l7cm@m1?dE>W+cSZ}a=s?bLC?s=Za(u>ak^sB3}0p@lq`A_ zC_uE(6)AAxhXPN?kbjU{N*MhJSFJ*LOoJ6bGa4;USS+CO%bJw$)f)4&hxJ)+6SY$rGpJpA zx0MTA{4Zy}o8-Jw(#S3XB&e=hd6RJoJ6M-0{t8b-(l1>&Dm8Gw5SH8WU=u zlY0sl&ryaelCH=QJS^-)A#7juMlpwKzS|kWCq50Z2*703@dc1%(Mh`ta4T3%oSDU4 zrRBTv!!_=FvK4U`h-vV2zrCSONV!ti6__%R1*JQHCgnBI7$BQUl0+Q%t+28|0|j*@ zErO(ELb#kxGV~`~#PLzil1d~_HUswLGL4U8$>?{E>@^L!;8#TeKq&Hd*BeGs zTBtAt{aF9QJzI%5?S+Yay?N5vC!Z)o1~|rH7Nj$fw4kki)Mh1VXGCF%eA8NQCiP;-mh7{=ds$%@fYC<*La4ZFN z9a>8isz(=S{{szf8JTQ z>fL`CN$H=x?WIxH@$Sp7Pc^!hrA)!Jl{IDjPa!+eRIYI$f_P1ui>Zua>3G}*aHJvc z*VdT>DuXuFY~)Gwu&RHMo5F|L>M!JKtKE62PQ^$&A`(duUVSLnun?6h?6S2knww`n8Ni zG_E$IkngrXn&jViH2Q5O{kao*aVU8AzGA1w1b(2bK|U+8CP!-vT&9aFrezUf(8MM_ zkvQmib0yc+z90vt6xZ**Rzv7SkU~6`zK|$k2WU09Dt(@Lo(DS-#=KRVJ88RnsHs{Z zbX2iq2iFtyf%usY2UtN{?{ZR_1y5Rf^C=a~{HA|SQ<_)NiBxg4MRXeYs)>nN+%s!6Q@_*63{tpU8j)P*lB~Rz+cTy4>G89*^BZxd3{&`G z)90*SMov}pFrHk!h_U=j-;Jg7xo$s!AMSzC}Wz(k05W~#`XoxAF5niG&}7_!&-S>#Ntafu^TIcLo8 z1vGz&gqO7ezKE$&)u>oMiq$R3T9BcI=O~azm3fQ=F2MSPFiid{HL6@*SRv+Prlc=c zBR`SE`H?*v4?A*IjQv;oU^_78IWpSP zhofgS2fS}w`@7#`qnT>g#|-yTTwdmlp-$xasvA&S!}m@gA!ZWCVODKAF4ugzc*#pE zti@SuGxo`B+x@Zh*D{tR`AA+V6WwdAJNx02iIjY?`T%0y{`nY6pMA`+1c zceDhGJcu&dBcSYvAgN&^WP*SRfRm*{ zx;QAsgN9#`v2|E*VoT-q#UN?=FyXb2WIL9E=C)>RXM6icd<{v}SV>a>lJsvU8m?2{ zk0Pq3*D8ln`zZ2Crsec}%1lR9?a8y1SbzEEt_ioCP`GJ~s3ISiT*1e4CBplk>}W5) znA&~)u;uQ#q7$wvqXJ0DKS0kqY=st?CdXHksOB*7EQFXeajFY&C1Ewe?UE$qP_RR2 zO0+PHNfe>Y;u7gBPtmMCiYAiGwV{1#a>^+13#cuP2j$U>U4bo1k`M{sds7TQHf5mE z(KMp+7H!TO82HLcgxHuc=O5%|aA90}+Np@7;7C=c0|a4B&X-eiZJHipuROcREDtz7 zam$k?=9eRM)s?uZ6KB7jW-rUSY}1$gE~Je{`_42O6F`WLTob|;w;vTHQXqKxIyF-M zX&@2MY|E~0B;Ew7|9YjpWDm;2tIRPW|9eT8?iGdJ<-t$+J@i6HBGar?ufWCW-G8rZ z^dg8R?J#H98l~9yhi{n$Vp7tU+Yx0WLT)@GHImWKIKL*PH#n%B$>2j=cB}d>gOdMg zdruxO`sIa@eH4mA z? z9tYm!DeeyWoH4VYiFG#?!^|?i%3S$TUm`XYhIGP9G{rJU;$9)*lVss3;iZHgmAybO zTtgvV?uT)3uN_X;MF_xZ7=S0np6W3SUw)gkkZ%KoiFt+&@r&o3^ozlHl?X3Q*)3g} z%DtCye{2VOyF0)$L@`9Cxv*^(Q|@o}`U<4n4VBD9^m0TM)g;Bd#knZR98*TkuBH&B zOnqRgD4&UY&UQHt)*SDNLH;{n(WQZS3%)!y1qG?+87?g{;5ma7WA%Il8MpV9uD+5r zTPFX2cW|6oQIZZ(NG|}*P#`wB-VpVjGVZjYs+P{JoX#4*tWgg@c5&sxll(Td(Ql-v zXfR&SHNpccXu7BT#>8Qb-($_p&v#20>cTskOf3zE67KV8vT!h|WRIm!6S37Yp*(nD z@6~Z9{&Fh)!ngXiVn?|F`yb?%a3i*~7XLM4M!~!95H8mBQLr%2!Pm(t){A>Y)K|sN z4`g3w;ArWmo4E%RKlzuzhAu?Ld|O49IH;I6HbNbumiXM)&+oQw=|{rmjb|ug>Cg*} zsVbz8%eE-FP)YPNVLKBAB0!LdgGG!|KJQV(&Ax(`ttx*)gx~DYFiHBM zapfPuJAbE_R33-!C3rLTd(#mMh-{vfvPA&1ib<%lja5!{=o|j^0aZ-oL4oB^5p8xI z7=(Y)TY@HDWI|mY^39l!IjRtNX7ezLwNztNlk~_eU!6Ve>>O80L6XDF?Kr~(R_6!D zRe8dqYOot6(zan-F`AtDbj+MX9dtTNiAq!CrLAp`lRn4qhS|WJDe;t---_(mD>{_C zL83L$|FJMvl>NZKY=6!m}r zB%q)2*5HCFv(#Rhdg;{aSO__3b9O#<%|AQPtNV2Rw|LHc>d!t#mM1ScDykp9s^1ODX9&2sz?!^CW-x8$?nX8+BV{Yw?y}LI`{ba zlI*~G<3(>dbt;FOdDrAfKC*c2?Tx8@J;BhM=~=$Q4nJv&(-ABRs}i0XEerE9LO;o4 zX9qK@R|~1=KLq(3yBMq0AOiq70r)UOqBcX8M!}mj0l6bgunH=pFDZMl{wmR2y{V}r zUi%colW{`{NI&{SpK>K%rP_uUDq5SpZ7m`d(pCuPjyfXqbWm+O;vFOgA(PsHPGYbr zOfIkqu1$loA0ATLkOK zoV{3&yvzWIXPWZ%lggTLql-)sZ}z-~?sa%vIkl7j82w!$}urCnEOiiNa) zkd%Ny%jJ?zV@mVsqJ;BU_5x*nSG&PZJS&#vGZ;`oQVam>N0GVbW`@55Fe9s$1Zam4irThQ-d)``q#VSO{ry- z9BQ}FJ9&NDcFOKNc<=uq7aftMr7KCGb{BHdBLPKh^#zobT${P3jM&dq5d~h4(oU*B zgBbw)q?pbsVUb8JAyFt{`Eql~Ip}b#HVb~$gs`9_$rXF5yP}_1!?g5t5J%V#QoCGL zmUhPHWSK%<_7KLH-v$JG(zWs*c`liZL|7-;kQXh#0ZUw}=NWQ?X3}UoPB}a1F@12k zLt4JrU<&uDbHh+wbQonT&*0IX;^NJ6(|rsTUmVE|_0h^P7svGDwxIXT=4Rapo?tGf z0YxkfHKn>x53S|Kicm|GP=Pf3_2`78QGre#3-vjfHzTOy=rCOYq!5tW`%bSvA@bKv zzo0r|H#C}@8^IsZ+C+rRCv=r9!utuie64h{1paf@-Dcl7ZvRa(^@q*;jTUl<7#?cK zF+7BOr@-H9cnx)OKTAuSCm~9G3j!g;#h9-;mCR0f``Jef>vB&_7fEm-zc4%8lZP5? z;2Ssp|J;yB)kf)O97Vb#_&~X%;8UTUzq?htokD)CkmwONrOC!U5YKEEYybplw0trSBY0 z6Z9gwKW29Ni;uIIkuyp@{tYaZIo|OVX(GLRcKH!+HHg^c>6oBy(ZLr74N-WwH?464ekyK=K3XZIlI8&!+x znQ^6k>!XZT&~t)(!=a_b*HYA>ZBD8ot%|sLPU_13V!ur`b+ zJC&Ox?0T&RCbTFodfO0AEF0;m+v>^8FdQIKC)MF<8!0g)tR$+y$F8-9k)oB(ug3wd zZl+&$qroySkS1AvT#E2Al=$)YWPz z_K6+jeD#e|1=G4F^=*+p^>EHu+JBFHR`GVc>U}n?B@?{$VWr|HVp z5KWdhj_8}RD3`+nd90d0ep*9PM|5RFYVD)%e>_ao^s?pRR|Xn$miw(mzWS`)K#WyM zPAwC?Z&X*EtVT&$>iQS-Ye$_O0XfB{gyTA6L&__4uQ;r&Qp72zyC|;b&=-r4%W-N( zQU-pqWY>(N_DsahjM>pU*An9VWja9$m}g6W%_1vAo*7Fhk+)wsw{v|Hz<@%nH~$NvRh{CZGJ0R$buaeOu+xB@>$v z%Za}z@nK4MY${uZfj+mmi#9Jm6CH-F_5M9MRkZ{caNynjGW*|<*ZDa}7-B`4-l2m| zB#}SYL?2=jjLo7M+dGP_zS6KZ7!Y+QyJGD38wp;z2ovhf2%5;GE z>=UxSD&EK<|JDz2d5(CvuagFJ&Wb>2BZ_)^!SyQcY7@5Gs(kJ zx|K)E(LPf0L|DVjOERT&&P+UFa4&=MmAZ4piqn{mV>IZ%uR&&GeBjzj&p^zyo+y-k zq(8!#-iVA_wb}LjNk~37J^I4Q0?UQ1EX@KlrY_7-Ko$aLimwa!OYFPli?zc0#wus= zkNRfn12lTKR;yFBLTDS!%los0Wn#&v091f%95ziZnw7W_s@>~}{I|DOS}N>)yA{Xg zA+Gc-C~{U#a~8rRFTgy~W>>L*s;#VfR+|O}~4vlSlGj|5Xr7!?y96m8*25`kOEgG`zfK8pbteL`ZKl6)4 zQyt04by26lb|`afeZeJ&-sJic!K*b>oKOwJtjUd+Kbw zco|NhrGf5h?I#fKyrcjCOcb0Ntoq{B3o(ZdiyP+h$U;CuTymr^6p-vKKn$A%hJk8{ z67b+EEf9~Rft+B6UWZvC22kP&ZNm;xBC<0Q2A>)74_wI463I3pg;gYf*jV;wr99EY z+Fx9qg4Lt99kJwfQc?VEiI?;_$*Rj2MZ3OR;%R81Mn(f5X z1qsHJngYuhF2neJxhaGXMq(9Nv-YVGp>vIFxBck7Rr+UaOKA0JX~1p zUiJhS&!i6*ru>`{FWKwuD0O~X^Q<2#j3Ffk05Af`M|k0N0`S+kfeVL37k!?N z8a;niE09sAW)s#lJhxKiAndUuENFt}WI-8O4R{T>4BU>+r@XA78IWx<7{j;1gadr0 zr6e>U@?jOX&MRR_2;cp$iQ~E|TaTZ>^t#=TT%$=9BXg#(yF?K2mBH7(HuZ|*^Y-#^ zmv7uij2?Rws???5Xu?puT+KexQ2m443O?(Zu{KF|u%9!>ls}Z+(pV0W6by}@jIZS6 zh)55-4u}>5jtMEKnF!Oz@JU?^+6J?67@xW*mNNc&PlJWE$;Hj!qPun?su}acNJA_C z4Ntw~a({YsUYV-}9`@|BXy@$5`A6xh4Tns=T;o6W+6^D)mcB~kNFb8@GzWD;BlxyZ zD9ev~LoKQenFaM8%2W(;CbGii_TMjsi#nhQ6&e@?m)OYE+`oK%dHMa{@51e)Ddq@U zu|<~PTJ!TzgeYMgyCym+4MUDdD4v51d(Ml0h#}MjJ)>UvxgBwunGaZN2Iu|6!?(qJ zzmIF}0J2s%6kr%)*dNg+B9A8)BplBjG4nP2kV3|E$wLZK=-{FSa&uu9=5=8fi6JRJ`GjwufdF_BfuE@$mTg&})X=qN-!0)ly(<&}{ zW-!X(vW40ke@nH8JF9!r&c(O->iY39z^A}(025jC8o5byLh^8uy!TxS9y(Tr85~dh ztOKGVv5=Fh+>@Huv;R_wseN3WYv|$-cy!A42b@JE%w-n`WY=#lUntA8#~Au6g%!E5 z?dNUqj&FD4x6^JiXOf#~*2GV*80-WFg$}Xy6vq}@*~2;X_vPBNA#aF;q_+rurfREf z<)Ts2FmE?n7x|FuBrotSFO^EEAAG=WS&m8q14?k^o`Yz|s8~ROlpHqv zpYkQ%7}1|y{A!EL=1+@r%s9=w(Mw)F{|C8Ad~`u$?c9K1FYog$2gJh5P#P-lCe1UM z$Kvc8ksavuyo5=jp$8d=1Lp4YHcO`@P}5@5gt!u0- zD;w!oGu>-)MQiNG7lq9BHROIjf&ta@ANC%6EBZJ);)#)rr}aDg5}$SsS~0o=c=+tqkjBaLlu&-jbm%ewR5Y0Uzu z*GhXI*IOn3D?;P)zIF?1q{WpE72@FMKWe4IMnPv3ke&`imu{9zqZsWYSBob4MPCua zic|%|z7--_ACv8->6B3q6;!S&LYIeo+$@Ep%2Xt`Cn_~tS1&OlAG4^SIi_NVfkTp( zajPb(G0i{L&8mfDFIZ;XcKPg!GUpVy?2`k%V zXLbNAj6*TPPjn!?+1gQ7FswcgVtdh1QR@*FM{m6XW>%>e6Ad9|Axt8F#jIY+^4_&N zkZ1SVE)fEdM=oJ=*RaN5B^FkbAe2H^(ug$L-Jn7*mg@>;Jfw?vHzG`Sp>OcOOEEve z%u8AmYF_%CPVJ%bjyJEgf%bF46XbUWc{E|2YP0Z8M_CX%JA6DZhR<&Ee1ovX+?EvL zze=e>E2y|um)bm&C0!r;r6Iey|Ne83xx2qN@7h)9yt7U_02${KpURTsD|cjZR7^_&I^OB=I=;({wY}V#ZR+p0}AtU~8)V6Kj9L_I6W8uDw!Y zrwz?ZC{#hd%$5~{uwoHYlvAu_nan34wsMbaJA+qhsG`_j(Yq*tlg2&tNF0S% zV4Cb@?Q|HuKC|Aa$-~Y8YOk4FQl*`Um!2Gqu}eA+q&@pW7zUU^zRvdfe0@Q#bH_P$ z*r2G!%^c?$=+={aa9}M#J7dVl^M^@o=XUe4s~Z|fGc)_b_50`PbPDVAb${pY&!>{( zFCDMG{ibKxE423O{PW@aNgavD&k<&gA4S+xBB-ot9Pmk%f(I~eeZ3*#yyuN(jvv2T zS)X|yFuXhwp9T#FdTja|2O5yVs*&;2xONI~Jrbj6F;%hku~+$KjMW5n?tp`+Trf# z(>u>g(s=LK@#Ar^KaFiiQ#g1-t_}YJ4JUC&j3A)M1d%DlKSC9Vd8Ot)c_NyYM`Kb~~yq=p9LJAN@w#sUZ zB!e<0H6Lf8k-sHVO%+AEBozqQ7XMidE{;Vq*J2P#eE+^V{R@!qiY$H1XvB_s+vHOM z!AAKmh`lHd6%`rvEM;h#t?S8uA*e3_v}T%EZ@rqI;UlkCQ$IVly&BZ*&s8kXr8qao(7_pE6N+t;8m1d*!rYKC15|^w*6j87OQsi zNl2Khm)}8Azzh-lpvYY0$v!YF_b|$+R~EzgW{X)~QE@qx6u0yhv(c23s^2)R=z)$j znX!P7>zfs?8tZ!rW8j#PryNX$Qh@cyLxJ}5bKlD|@R1lG%M5S?XbbZWOyB|;d=2Tz z`BzJ>?p=omWQuFbhbpK8w<^pFZ_JdP8umWO+#H?!e1zi_Ag_``6?HCY&_6A4KQE?m z(&B~fK@e_qAJT&woJ$F}xz}`UbXBdIqp7bhW@l{Ef~zir>CeROPFafgi;^G)DQLsR zj3t>E34+u9KOIp?3l6*)ZRZtbyEWxRmdPxIj);dDyJc(969Jdx6U+oVwn zja67mn=0q7ka&e%*KWG)^s5%xlz)fZ0xnD$ajzl{x$r4Y45xETJz7;IH^f*@yrNPS zk=klUOTP3pyz*zEkvhR-vzFHOKUE00Ca1r!fsv;DjQjC#FIdMehD#sjl5!-#EDiG7=bBa;V`tHhXe;qCUJ9xvAN_Ai(df9Nf z(Qx{Y&0pXEXD6td6S0$?g5M(msfnB^{O77MF)r)KAhtE`CmrPSaC4iobXuHrZ&lg1 z-Bg?+o8GEQr{;hx zgc`~Dy<`xb%QHtis?qsIZtB(Oe~?>DIDXcjPt{g?h{ftYL^vM|bY&zo`(hWjD-mX! z?7(^BI=#}G$nTtGUYBQ?yblGd5)W1RF`R3^*S0v{K>WVTG_UtP zlX+{FK+K(GKS+61Q4G}LIp`V|FV-J)+~S=t+j>8k6y@+)8){?t*7M%E{I16VcD|S- z$@OPjHhz1b@VGn&IR=9Q>sn`t<>+&NOxv7Vz6M(y1fMYmnj(6$X73yJ@JVtXRW7Gl zX;P>^7w#YmMOuMiY0@98DCE|{x2SUDBI+%&z8gcNv*iQM4uU(iY_Xb=maK#e5K1^s zF=#))Er2;(!v4Ciy=00Gll*lxX^ZUATIu2U-WzVc8P*D-U%9qc_+>44LAJBJ=Kqo5 z^C9soaMAP^M<53nbIlVQX;0f^kH}*XOEggz7iEYQ0D6eWCjR%1;0T3O^drH%BKqI0zg;L2PC+ z8C704LyvOYEFPqQyg_D0G?C#dPBQL*J&7C{Gi{VIv`~jrM?=&P5m%Z@2%L}{MItg_ z(6J4rBuvJ)RnzQEDFlBo+x6=Q`^NI5-Y35w$`8i&9qe3P3v5coDYbNJG-TGUD=a@~ zk8LGpu@j%It4}GUOJr~$cv(O?iv0m6i7%42UM^Yio=o^|>W5R5PVfUyjS<{b!&9mH zOD!U)3xm<)mCmW1YXveqFEHj076=&8PUuvk1J-4b8WZnH<;-gYC1Yr%Z@r#?nMnPB#A>vTkf0N)zx@y{p za*w5jFPy2Bi%C6_1sdY38gB3>P@Zuw@)B1<}547-@~Z7>u~ zQfs`cpjnCHoNvmVs9PMYJm6|OOzXYYKI^A6!`1;CS&KM37!Dd7#;q_!>#F(B`v^e) zf$KUk!%I3@hDu74=|LQ?sd}s-UNnsT;LS3Q4a8{`5NuGdCUX{PU;M9#xdsg+hh>g` zB2gjX+rvs{2vx;R)?*_jLxzG$#tw^$ zR7nS<(!BgDY2WvqkwNN;@~wAtjXf&WZ$lvSrc z`sSCWsV@N{kdUW6FszVu>4fn=QDjm=jl|lbC!hMf%ubhfUBAOcfPAgbGyg~x;`d)X zt0oA}B%I6{*NCV1#yMMX$}6uJ1#&pPPsPZqtIBZvx^<~6F2{%yZ--Iku33&i>dW^Z zFCpTwB{?ILDVbEVgw{9~f&kWj13bNCSuuG>P)XCcfi!E9QqkKZFCDp1cI@S-%w_lX zt#JF~E_~q`+}>2QVHeNQssFl?jb}3v#&dF%kF_#&F!iiyOZUVTTGp_V%z`o#7GB)r z-x9th6#@$kUfsFqA6|WTN*RV0Ke0^YdWk6-A z)hI$|@~KZ0k5Z}6CcpAiU&s7sH~&m5S-Bx^Tv?3oR0w-*mpJAYZk!^+Bnl$PssmiD z6~PXffvaNjXJhpe$L(TZ-UAgdmoa~-s%|(@$@WP{L@G1A=dLm@CyPS*FF{x<>#X~^ zwx(!NkDb6|X@240UNUIKh(&HGRROvRuDtoSYvc!P)MsCLX8xhyLp>(|YEgDG4f!3P z9Y1A0aQj9f2l2vk(Mc`0a^+C_bn-x;qgvDIN^qsqooRFu)R}m==p+NDh&tzm`e@yo zTG@1a4}dISP(KdScT9s9USG~P>dz%QvUHoP0&GWPKh#12l9jT@@F&`iSYS}?Lf`B4 z85w^3>-!3`D?AoMPNLg-@Vh)ty_v|hK7Z8A zNOnIco!fi);|jnBFpyo`AOTg*j~dWBRa6+ke?3Wd7sa2sVsgB}XXQ__;7YWlP-~@w zx40F#d=0i@&Oua7(xpn^UOZ`vE7Dyz!^+k-m{Yh+cG490*X@}V-dh7{D5~+4)iY2H z1b*IZ{ADzVbk1%qKRsW|O6&9f2RVd7vq~R9ScC3dFM`c!Ln%-`ryJ(IEdl9Tpc?R_a@s*5D*H5>aYlD83v5NnuaLk z08w?zFhKf2Aj?vAqar0wTMnLGtH$pyQ3V(oMv2~VGpRz(n&(C`kC!DW-L-j~D5Vfl zpFkqJ0722$vUY7u`*ADRa@MCKIdrnFfrw3$rq1T^7?YTpl*Yx>a24)dW*IJ{2#S+g z4NaYlfC%vnBmH<;8o!SFqQLORo(mKvnUyayPWiO7%9+1f>unLnWnPgN^MnfkEP3E# zQxjKM+UnN73M0)U;1P=Scv@O?Oo`Bz9n-;ENZjEzLM#5g^ase+d&%P#%$jTFhT^Ox+`&`t_mV^4xV$V0*CUp!x z5@rgq*n6+;T3Ez0RB<5B5~@53iO>=2`++U61-&SGHOz2~=G-J*In;H8Edm8<5w~H< zH+hh;T?sCNd}&U@%&T}Sk)Jd^7dU{HSLA6veOwYt;6xct=EfIh>^tBKLUUva-H8uocH3$Vu;Yo8%wjibwk(5E+ z$?ltF2QwP?4F-zBEKCe6V$E$FT-Bl(qA_@%5<+b;K=B-WFdcS_$>N+vA)Bqq&^JwJ zK-%nzi;091*_NzZBNi0p;^Am_rl>eQF?I0D&b!0b9T_`Dr)c_3A7x|E4ETT6l zmbR4JPHpOWfl1w8O@12SocOfbD%f(B2Wbzs#8N75nR)viyXTD@MK4oM-(nb~jTL5O zsKErR2B?T5LjhSLgO=<=OpAsi@|n!MH+bg&yoyOX2Xxu}me{)-~<+ z^-E4ED0aTGF)93^^=$lkB8E90Lz{Fh|E%z_txmnW+*ap_B>cThU{xsc&`qr|N4P-o}$#u)xGC?)T%`G=S%zX z!tp75gWG6cL;3Yh8u#trc#}tOkF6uAo6(kg@8a*u>UWx{8)-^%;M140W7o6Wb2<0( ze}cXoZ3jSQHhbQ6T1i_mAgRjA7UAXRUC1SP3yC&rt(5`&N)=_!C6pnLYz(HBz9vRNY*ogLIu4@6ow}fCu+&yQ8m>UP z&HARI|2>;6KDheOYor3=w0>l_8p{RQ<68~%tl|Ijp*xx~-a^_;)Ysds>_9s39+tPcqJDEG7rww^?) zj+IDQLDFi-&{=W4k{2f8v2Nn!B8V9E5ge%goLnxkPZPk#WrN-Sv>>sE9<+ISnMDu++8>MmEIX*NTN`2ksrwt zD5fSfU^t(&`a>I6H&r>UV_ zjp~dFrqvXgH^o$SVa%?EDvrfZ>f@%4JGun4k5wC@^Z%^9G9XPFaZOVw2r*h3<;cdm z{Wb7boP3q@y*L5ps;Qrp5Bn)3Y#^$o0`ExL+nD@pTvAx5?jm5P?Q~q;r+=>wCS*(E zyH%};)SsX>Gu*R!<`#?g08+njbr+_Q`Se|M`rU9My7?J!{ORtiajK^r#R4WdbC{lw zXh@77TgyssFH^_YMljY-flwihw-SL98o~IM^(E`-<8R`mqa&{aum9e~*>0Wsm3PF5 za$0VSlg+on6~G6|6f&)57eXI*+Y=sUxzEayS78PpV;gvlUPVy)oluy4)KRQtR|$%B zBA$Q@i(85*=VAJuM$UoFs3ir_?Qn!7^wmf=pB>l?u4_QYQ&T?q$BdAS|Iu_7Ty1t; zx5nMAcyS2s?w&w!cY?dS6qn%c?(SYF?oixmai>KJeSpfBzT=#KaF2|cwf9HG0oP|mj% z{Ft5{^h+aR&2?^XQwpwj4L;l3uH_W=Ok7u8^$QBvH5;BPCKkc~D=Y{Vx$X}6h;3>9 z;%+%WW(6T&+6yv2N~S$Wlh-d)IrmWZep=7?kwh4Mo86z$x9yX;klhtXJL&@kvpbtu3zC4T?# zR{VvDnWMUlQ!hJF;;ws%ys*zE-Zvz3VJ3O3rG=X$^vI~&_}f5g;cy?RG%8j;HzP`9sRy?L4Iu_H145p& zxCI6oLHx`n8nv`(gaGAPlyWM$q822a1`8TB5KN$0M>BsauH0@-3NV4>7D%>RJ5!{$g2s3l%PQ{ zn#wJd82DH1)R`}PT!ni2J)cOQL}J6b;NFS+@S1u`C#F@Aw?!1gs}`a*#?^|P1CKvc zd7I@Vc3|!C&AjHt-SNaf&5#9?ls9T^CBXmMi>7kRLGBDFQld)=o)&`=`wy#AUDu%A z7Q||ehOw({e95RtpY}M)GK#rHmm>zN;{21`Bo4BZ{u0bn=;<@F!wjRGliXTKI!oNn z1kyXQj1hYrvb0ND(b_?1fj~>HRW+<|_!{oq( z)N)MRm8HBWP6Fve!qF@n^;ZA>`ui1=W`exDIgNy7 z=`JjRCyI{2Nj_Rnr7!|xe$?z)wd*A7_rI0Ru_{bE{&6&g@Mx9ck!{gzfV|+8KHn#V z!tpv3-XwWxGo~y#no$ogrm8Mp@91zmQ6Om>foGsNBB?4`Cx^IG#rT%ec5LGcCuqDb zKQ#MYT$&j_vGNc8pZp2SARn$4bo|=%)GIEuEHTm%Sq!AkQ_%f*g+BRb@X?Q$qNudo zWic53qQ7Xug}aVFa|t$>E0q>V<4}d}<<@(Riapy-tS6C>PQT1y|Q->iw#2f zmLDQD7h>|{)=zJ<&Y01Yl)0ISxK)H(q2h`1twCa)@c!FJ3(3x3cfdNCQ3lco6XC;g zs9Zqb3AoaeP0x1;A4r{nbrc?7f5v^p;NIUYr2(z9t!t9g!MMvuBVDh?sv}zb(Q#Gx zHMH3-)28@8fB&6)@8rJk()}RhN{sG#vi?tU%Qz?j28$HxL7pBnS3>_5NfeA>$Z6Q_ zQkkRmBboc?%;5`MyD>Tv{7s>~vu&U_`V{iW!CkhxaKxfy8Zd$)T7iZ2OW)Ox zMxtpUkGstY&rF}Jey6pi1MmNl!5+MOc_!1-Jf}Lj`uFZt_$>&C*g6+fwC8*H=KX_hx<|J(uyo+4UFo z7Qj4rtR3p|(Wb7kv;PxTvjN$hGfLTwbpk?aTanCi8ebOE+S(UMDgY6N-st50;jmZP z*gck&elc?bWJS}!n*xb}{cG)>*OFqF z!t7rvMI67*pp@8Jc6u^9F}6F0!EX1GPVbwQm4R=Rf7V|L2Zvj-TR@6fh`^b|d8`sj z5n29sp7SG#LvWib3I>NXFj7kn$?VWs{ni8wAEqF1%_}1=(?g$Fn~>eq2bmsUfzPtaY;$3n>!zJ zv)9&?$*Lb!zWlewD*lv$eI52*w24yhnja=P`T69t3}dYV;UE~n3x+BD?y7??r}qyu z;#zz452qBnrEQa}LZ{0p%jr>XF0MnF)qn9IUwm{BE!5d0+&XN*?82REnDtrTi`)4+ z4>a%A)QtPA%sA1TPC3-OvU;{cN!g?Z7uRDQQ{aQ5ai6<2omtx7?(TS ze$*Gn_?ddV_-rDqkWER}Q5z8Vnp*5?KiIwOz`W;pe)h@C@k%1NFTnT+ET1Dc5#JNB zr4ZVR;T1RnG;Z=(bH@ER?n+&jfU@?WJ~98Y5lAtgRhNACl z)o{aQ=y%+(HKzVG$oIh?bb*dv%F_DKhXBitKW+H7E9j-8pS5`yeDC-lP1ygF_^Rr;mfo4l5&GZRyvdhu0P9g^i+4=O{a1i5fO$pRxD8sRxi7 z8`!g7_EvT#J;m1q8JjlGM)YjHGp-%gUcPX~PFB1EEzekuLmH34ytpaS>?`aBDL)a+ z)QJFccj2GJbqs_$BZDW6iC4R`*josl@m{mAVTsyg*$PE zUj+0!K)=I!C$jJ*EQUVB%vr|h#WpS&g}mo+L7jc{Ywl=rx+-SK${=8YllcTk8b&Hl z89Q~bP`=Sx=>!cu$kSMHva@Gq(@o6Dm(2CE~ja(b!*8n zGs5Vk`pg*MW$#aezCgYjNI8NabM!lb(?p1503nRATo}i@+7fA)?UPE#zH7!kX|Qti z<5==9ob9i5wKqQPikUpW0(!8-JCoM0KF|by&-jEoSyNK0`U@HK6I6Rf_t5<-bvP_Q zLnTc5zf3d+atjpVae>KM8vHC`6ypL&1s`N@?PfY3>1bLBsPSM}AX~Rhm0-jq%^hP; zqG>2&;{iCM&_GxU;77^BZCCDKP4&haYcM`lf{`&aF~W?~@B9!-jh3D397>xZ-M!?& zvmS5<-*-N7(}fSd4Sir_Z+wRm(q%~GHyivQ(mAsVqF>7S@;7y>%aLggi!m-|vd_Cs zKu`89pV>4xXA-RK+Qa96sRsB`<5>X$kgS35Uyu&9TO8Ro7#mWpM~Gn~!Ql5ga4gE6 zJGoTYIPJ^XvpHxY(dGP#H0H8Oe1II#=5VirM@*che9=6jPqx*3zPNo^Or&M#^g5jb zL!7!~1B$FmBU;CrG?d360CB#H=+LeiOs&N#$~nRLz*r-NdXlC>o7?W!RQ6cJ*KEqZsban&G&)##Ck9edp*BI0l`8GK za0CuJtGFuD6_Az9eTQDu?C`3R#|-;~?_ae8X4&ms#>*cwbSrtzI&T&0+^2nfQp+aL zk(D8F{^1oYsSW4@Hz@#O%7!+T7lKu@%RkEblYAs%Pn{AW*EO|qTKzgP`~_{*R}Yfq z?HSVbzjd(E6{dAAbfag6h_bj?;R-KJg7p4Xxy%x#kmb&RwFm=X90X#Hc` zs8%~9!3jaT#0Fy1dCXkQvM+coGQ4GvNWp!mQAdVGEo6>urPZ=! zZEPnavZy5100T?5gIiF(Nu4@6L1JnJw!sZipk*DkH_^d?Lx#AUY4ReoTo_ zScQj8dJM{|BpYzPP#%h*iz80MS3DsMD38f~c2~4YTf{k1`!Gbn$g}pJ5V4y8FG19h zg;?&vo~X$?R_!sUqIFFS7@ddgc_VLzJw4koyWxHc(9B->jZIG$swLkx|Y)P9=Ge zZK7|0($$-6-K%vs6w~4m3PcK^Shv;L$U{4FyIT#0(%+GgYgkdnGG=d?P^I*0x9+$S z$K#_h)VQMIU@Qj(>%bzHt3IO#=Q}$Lf%j3p!a~b`&Dd zBw8TRd0%^Ea#?s!h6K5zcjdMB-_O3%a0o#KYXnOclVs9(DBMl1MN&ni)$`dRdW_Z1~x>FdC?Vcx$TK9EO@gwN6WM@RSJ+Ga}%m z&pkJptf8Wqy+{B7HGWNV$ZI4sn`kOKi?cuym~s`bTtBYdv31*2T~oxVkf4 zV!l2@VHooQWzpS0m|v5Xs>YwCta84rC)+u0;ORUH6f|>OR;6>D68Ja8f zH4aIIWd8Q}m0cg~=+1Q?F9Das9*S29U6;1RK0Ga zO;rrG+EA{o!c-}S>SHth%nAhOjQ0#-iS&GB3Fv!%8zBd-_0DKcBt}2%S@4Cno%nO{ zaU21jdJH@E%&bDJdkHC~!PI2VZ4-$cFLmnmjWs2bSHmQ?v#ti8_*7ydmMdEWlaD=e zH`5b&#EEj(lE;b&$q%j+%Rv?Cq@1Y?vlF#{R$d{Ovg#rk@&k-DrKU7}$`f7UufT(J zQJ%v%hoejh7cw|F#E*MrJc-XJS^6j8Sdm1|ruOTZthN)hZt~3Sp_J9HslS2+u;kl) z=KV4@r(VC=V36AkdbJ)|aAC%wHrgU=xy$NjQ)uc=2V*gcbSf`XV3wLH;+_FLMZ{bH zLP72m8HG&$wYj^Np6qDbv`tNC9s>CI9xLkDZS*u7DD{4hRfZRW06PJ#H9Cq?7Jfl3 zt?+Ok(dxrHin37P&?pVK5vlF!*uVGVuE5JjaZ_)LWfR6;ZVXq_qw5@ly2<;DDL(?v z>^b9v8hs(|YpLYV_oTIBclT=;&2k4}<+n32X>I)Ibt!*TDl)pSz+dksYTOGRna0+< zwSyVCsQ2<%W~z%3}Fp|NTpst4JQtR9`FL0zD*ypkDtnG>iV_p(o6$ zvN&SHsvOSap8mSq7v4g`rXdv=avn8#=cwG;bg)D9-TU|k=s7W6`WK7NJfkNNA$39a zrY4`mTC28N=Osu&RVUoJ`zR$GxS&}@8L`aplJM!P0mCbQw^Od?^@p5!@MrM1(}xaQ zlcN>w4t_VMA4b1C9#qlNfyU>tu&7Dmb7~8Cq%&QQ@q8m9&P_efUlu&LSi+oGwp%}R z>PkN8C#-xqYgA>@z2ZB&rzy)28P(;j!|Q#?dz=;+E38&kq3t9QWpj|>v9e#FW{(P1 zgJP-GyB=7ltB<^4nvENmLoVpKNL3Mxpy6_jJ_N5m}Ks+c!FFWlQ#%$6NjuTLVY z`MsgJaFr`(OfO{)o8KXP#2dXER$I+u=b~0?T*wnlT2w zjF;9SAO0x#`TR<0MyZ9CwZQS-n@LhRtV20(%$cRbmPo$6NkI?2Nz1Rj5wF_i4%+O? zT{X4Zc?v+At#Z;k)^nq4G0AvvP&XT$aavKrO?A9$t$LRa61>W$sn3w8&HeY|96)gF z4I^oA87=du_-*HZAITCC6p$NAfE<3=I$n8ZN7y|kZznG6<(}|>!J!;xkaU0w&@<4^ zGw!hBBr0A!ZXVpKX$||9PNPHvru?RB)?+|VYof`GrOIcuwK|jlt&J{MNv3`1(~>#U z?q+Md(T}vTqaCO{emq}(I*+P4RkfVr~<}})6^6(aF$>j6=Y@w z7c%;T-F0rr!>X)5WcHJuQp>AKG62|BS1tu)&H{*Zm?E%TtiAG^$J^G7wM~7VbQtYU z(Yjn6$el~38qmQRN>DX{rS^quY=tu+EB9Hju+?LUx8Yg=l@@h`VwyCDJJ!LKss$N- zIc8^T%4uyVgvEv&sYwoO8Thq2e$tw_jE^%d7@~jK5g9Q zxNog0Nk^1M$e+YiOD!j_shpo`y`j{hPj7IgVkOd2U&bb$Nzdk80M7XDzfo=LH)dw? zd=f)-Re_}3%nF~2EBDC)-bBG0}rHZnx9R%|7QACinzYUj4PWYK0_Fa zSMA9nV1pTOXL`b~9mTZ_3uwJ_6E1~!msxC&fGb7NX}(V^Fo2IiUqr3_+3WF%2~gmm zHlG8;Cg!OhAE% z5q-JS(PfVPU1)JqpIxrA^{1oN%$2|VZ!(!XGEB73qAck_;8H#mXtQng8i87cXn_`Z z+!WZ}$$ECyWq`NbSK}-s@?u+)ygjp`;56(0*KR1Za@3F{)ruF)0C05nxi_ z7+h~d9KvgeQm2I&55&-oq_FN?;PhtQ-Oj95iV{K#Dl#gpj49`EL2Lk4Vt+Ay1W)WH zb&2WGzGg1xh44>T2_+~g&s8zaa{iNCJM_d%Z9@zOV@;YR|96$sOq0<07l#hx|1K0( z`M(!qcSTEgF-=y__O5r5`f?;8Uo1zqW?Hgs$M}tcznX-I3ngE=-F{OWa%sbdYjji8 zo}lNzSi_az{VHxqW%EY+#kQXuSgV2uupD<<#Nr|Nur~tLQp?7WHjvdbLK=@)i@Az# z+vBtXhC&0fwgzoc&-bzyHp{vo=AIqbzPdVDu zST+{}Lfdlb&yzdam^Ad2U`iJ60Y`AQ^(Ddi8|my(s6ugN%Ld)^C#x|?`x@-!A8XHU zQ~{z!_X0Y=GK(T{Suridp!zy$RO1-9dTCoFfK?xkT~2aW60_nmC++OZrX=K46lr|j z=&2tg-iB;4S2Z9{i%zASgJ6AX!>h3Ld~GOae?+X@Qo;OrG6AFQMYMW9=Qd3Yi3(dV zoGth@&_lKCn-btpO2@;`mFxuxT%Sj;^>c^2DNOtu-pBhkBr>L|cL?qm zv(^b^PpjtIIs$YX4S06l_Ovi4FhID$!fxS58+# zb@VJFh~XCPA;#tO^B&sLW}0g>a%6&yIw3=PHk|3w91zLRG@)$tgANlO>B|jc>Tjta zf>o{5bcoqSyZ>OEjW1KiYxx~w=AJ#5N_plREg9k-Ds%&YuQ3ZPqej$_wij@Rm(>qqT-iMf33@9uFN83jXhACtlm8=Dr!m8YQ5=NC` zBEyP}f&9FWqHP^^DOhSP%A<40x8nNDdGVBk|2t=_tf=SQ8hv?x{^p7ID-*_9M6R0TVUC`< zKyy$LnY9Zg!MK9XCpt&Va<@1y^?tICyJwj^+JrM-&Gwb65Y_5C*W|B56;o5|WhfGf zWc**F+}s5J`06I8Qg_WUOz!-LPdyR}xEJfQ|b82~Xn{vaIzY!MlsBcukL zpxE|Pv&+jeiaSxtwz3da8lT3J1{o{Y@ygqcjXhe7$_mU@f z0LsK8n47~s8i$7OpX6q7Drf&6j1}r==Y(#iu`KmJv<*ouAPJT(7y6a!5Ggvt^kT)u zjb!UCi^eyw@yWyWqxd1(Dy8A(Q&>=VYk<}uji$R^7(uISx1!U4ESQbFi71ecD?4jv z)resDoCHi#hjWECXC5(eIxhVuX2o^XwdPg;LQP9eymNRqanHC~fapq6i#y=1#Bw zoBaN?JZ`Fm=2y0}Nk>PDI{|(v8Cus{w#aSRv=U`sSGFq8Yf=mJ+r=Qpm_%F-|18KK z8|ut(QbdZ(L1ur~(Bd`vDqkwX?y%A)g)OJk5mcEh^vN-jFP%UxjU8)t+rTJ03!Afa zeU$;DmC=5cc+xk{u)>%QL6d5UDp#qU`+Q(x z#N;t3@YcTVh6h!;+YuhC?yIDW7#`b$yO+mxqq6l0g)WMU@j6ha64QVwEQlK zpy+S2MoZ?JS9r|7wVAks?3E*(EcfNjhWv5j!%?E&9)H&>tMw8i!9k) zroVfk=4c84uNIM=p1Ljjg^5#}?qxnHpj}V!S~_;rk5Nxpag1rPvcINGutt9+MRp@~ zIJQkr%~xGf>yAghDBKA1&*!rC^CYVM^tQ@75A!*^M8Mr!W-6H2xvuJ&)jVsAD91*} z^F`;0ga7#hTNi9kbqh%yA%9uUYc>W$&p+w+N~DnhH(4 zx=#9515L+yp4kNg9OomG#c2}zg9lF+7gr@de7AhDH|l%xtA*z{T#m|t74)mM=0~5b z)qS^1&n!!XabEwUj4ZY}?hde#u@hL-Bq@Zk8n&lYGMP zzq$Ab%JQ8;%R|~J<0@=^Z}j{6(z{v@)ZW9!3E0SL8_N-!T$B~!k~hhtXXWGsZ=zpz znV?4LcHCZ zs2}jG<-~3MEw|PldxV;kj1@+Yc4Cu0y=|fq*V$WV0*Z2}e1*2!U~C;33J5}O92Up9 z9gGTGMU?+ZZUSdqO;hjR!I}gDWjL{z5zNSFIoq(!dcvw)V^u)zZee?_X~wc<7V);$ zZ`Hl}ms?={yhXe`Q0ujQuJ?Fi!xi?IZ6O)TtERv{eV?%vTcM|)G4rm30WZ87 ze>y883Zq#%uFKQ@NDKegS=_)zw{6;?$@Y=q972Sv3+O)1T*ZB3(MIomYMq6ytf<%J zWqqQzc~`*G1SCkHFHC#4pHkee?F91}z@Z0)XX^9Amz!AfNDpVqr6kxjv*=S-5oNL4 zGj#6UzE4G={=i7oOf&@FzV2gWvf*QtZ%AGlc`DVQIgPU}@o1(%0%A$KPoz=Z7m2rw z@)Q_yi~wea*{Y>CF)6}nO&`zy`LR*&>nc4UdXQm#=koOT!h=wgKuG8tOvEl5K`#qMt zw=j);k?rgR0%Gmdc@qIkc4-f*&2*bBK5xddTMVsNy{brI!aJ(op*)*R6obS~<#inb zeL^ZV_xjc%uwRz0zRq7VR#^ZRi%nyrAHWvP#tHkD{tqX3~T$KOYbtpl{Q{hfWA zUkp*C)!33Q@IJiCjUFH~h0kQy?%JFso-Eu7a?1i4V4Og}fXrjrKG87#%eDFE=7&oN z>y?sevhkVYck>dn4MS-A?kaf^zaPNCnW1*kZ2u{wmaKT}l?0rKx8*b@y?9MhrM--Pr`!vN!7zmIZ=24vY9 z%yF<6oAG7bF4k*Y?Nu~uw=El;>SSnV2Gd=iK~3HpJCW6EDhnYQwr9ItR>-c2Vwwt% z0XnlMaKhj+f8s=ekGVBw6=7>yERR-j!rup)8%M|6c!VfZ<$88A9(_qQkj=jCL|oc% zXc1_z^ObuvE1upu!f9(THH30mPEC3i9T}NY6etlx(xW%%1 zDD12i+2!>40~@p18gC&!K6s~*r`4m8W&awmWRrN#i{~7E=8Qmjhoa5h)>@14>?9Y~ zNU0I|qp%-3>Ivag=s{nY7?zH-E1s27VO-a9VIB}(c*vUkBBG=DcQBhfl+SZ{jPf=Nl@N)J;tJm)<@9nS=QkO-j5Aq<$+T~*jK;e(TW>CV zmqjcew_JIs9#~~{nZ9n0Y^m6_rZC_0lnDZz49%^KD>o*BYt zQ|r&Q&mhyD-<{esgcA4fy6U9T(g~Az)&m*abHMB2Untg^NAt@lC?h)Nn(Gld?6iEZ z{8HvyH`@3gLL}oMOy(ihs%`3q7_UwFdP4?*Hw;x=SzF7m+r@u}B)$cK=bxmyeThii zjJk*mlDjq>BDt6cY}kk4K>nnIy-Imi1cX$i8rua(2xzs{o~&@Ko`ggYPo&k(jjy$2 zp2O~|)r)ym4D_TfKh0ZLer0)zq4kl*^}Dg_0ex@OjHUR3$mBjI$-|}{~JcY9& zE|P&OT)wy?(q6ga+>He|1gE4_%#j-FypkyXy4?iZM9r|`PUW|&%n1j z7q?4=JQ)JFPlHP7oRdy)NQDQ(>O2@pqzF-Cy7R)Ca4$WMW=|cSg{`eUMaRjux$#q+ z-LqM4j`{)noOm_8iBkkkulnQ7#$2b4DSfqGL}lwow;nPyj8>SqGF8JdRZVQ~S$otZ zqjd8$A8~7&u-RWHnz8(&aEj->)^3|_?(?%hJEvBqx?i)OQ=bx23oeGhoak743Zs@X z)$OySNETs}Cc>7-=%J%|cwsU=aO6u>pW)(Y90I+8`?`0-g@<_SJICI)+`a~R=#B+< z=Y%fT;SeFRdzmvv4pEfM!Q~t!^jG{#G-2iY9sR_4JpE1(Q~AjSYU2Aiu6nIxAEUqh zB}uy+K0)8PL~}EW0F?mTfGG_ZzU@i2Bz=Mu5Kx~{*r2d+Y|nqyn2pZuKvtk-d(5uh5Hpt_3UMX zP57R|`&Iw~!Cy`9TAqFy$I%z ze>#XW@ORsh=cI|dvLnSt3_JZD%Gri3dYl|k)NU+Ts~lB3xrxWh zyfl-Ofr8#ViI1U9CT_7Zo0catvl{_r$TT*43+f$J#+Tlaa%gMYGF8Y?n4XigPwESu zw_y?Zz?f9KGS}|N3)#B0?gHt3g+rFVQ!ewk6LFb`lb*ym&hCbRrL+2#b+#v6zL@W3 zoc!5Ik|nk(K01#66YSiz_p1EeZ^|;+&+z->s1(|qJI(%(mHCDpz2%2F4c@k4tM0ZR z?1L)nV-1}@>yt^lzYL{%`@V&6-r7nAUE+>OnRT>)uT3tm^&K9U28nniP{W2t82)Nz zuS}uf=ib>`lmaqkCQ;wziZd{vpg;>z=;qQ(#hvQ@hU^^QT*#GIMp{(+BL9aOwxp1@ zPx9V>SIwvng+jb7_oyy@Mp=_CQCA9IS{2bthTsUM%d6xazSn3>zx8F;)IZ*umwWFqbP zMgJmCA7eYy!V3yOC|B5!>-f=9S&yQhkTg`(b?~Or0g?F9*_soRX#aP!lYgJf?TIX_ z93?xobDDF2y9#bxiKWVk3oP4+Zy1n$ksh^c2+NWc5E}Iat@3ilFVUJZF9an z_LH(q-Qemw+-Pc>g@cc@rtcn*R1KZ;Rpl0psiIlZkWTAbD{@M@3MVC0U_fcm#=$km=2`Px?;8;I!jwi% ziwV2Xp^dkCI84<-iY?%f;Zs#XRzA`idp2nk7O^g(03@alos(u>R6W&tF!?`CCJ`=t z+9}YcFe$BWbI5VZHu{BG7TU9yJb(7RsC8_8^I|WNDj7Mx9SKfr!k?I*-;;L7>zgvd zSTFh@t1SU7k-Ea=PsT9@;_ojMp7ZPNhx_U;pQPOWoc(-h-mOE$j+&Ee`)M2lm&8mz zM_ZupU%aA3{j)$0UsFO3 z7c&pe|AY5Nz#)-mu))AAK8+#^r(%KM;=*qVA7*FmMRT8YO1zU+3XJ<~!BvNJRo6Bs z;`OAnPL$# znL;sT4MLiKRc-+%xTM%yP_*;rNX{vANyM^{6cUTH%PDp0! zeF*UN=~*&Z>O&tuB06x0rc+YfeV=9%9z00qBCUx{hU#Q?Evpd=^>h6kkCfU0wJ~d% zwZP#KfGI5$Dkz(wi@-yN(*2H^d$|(G%@d7b*-+_yC(6@npUOP4j)Pr6M-OsJ0irvg zTy|I;Ve!?@!>FN(l zw%4J08^O(r?{DYDM9)$$3VKsaf1h5@e}De;{=?Tle@o8aHXNOc35Dt^JaX~_x&&5^ z?30&2vl|L^q)E$=ZA$>xT{sNN2aXB29ci-2c^0xKv$p;Wl-A-fOMj78rL-Q2nLD#! ziVjITUJhD*zH0)7k93T(NJr+^3sZGYW$7$dQ;7)0{ z=eY#4oIa;Q2Gj4hL48Z1}c8EdWADDGCaOS3eMX_osQb5SwZh!|_HB0jdy__JMF@iKH9w#Z!L~PW~ zS=ghSWgS#c2`Zu|bQ1K2jfTVSxNxzF95j#>DdDVKXIuXTnZ4zt|)~n_MBU64d_Z#T}6Yml&lEyH!+$DNr zBOkn=Tg-y0F<0uOenwTv$7EvX8TH1}pVpgf?zl2=ikw*%jL7pFVk&+AIAYnA1a6wT zc`axiLZvhY#*luk{9`*oHbaJOTGaPLQz}*F!{AYbx=J}*(jp44BU018J?3;^${V9A zhp$0B=%LZE%#Z@3=0-sdiWH8-Nfr}@&7U)CLOb0Up@1O7by2}=2Sb@Do- zv2?_M?;NJ!(BiAb0lD6=A)aX0{ED>0^g1#1$?KgN7Y~~ap{wke!PR=p7sg+$NAr~~ zL_(IxIg|FigFmvum&F4n$>0=;;9cZ1B6Hhw`jK^Q8_CNWbImZ&{6tct@JTIhEnEda z)Ghgc0v zF6Gi#?sf6aeu;mQn@>je*7{r!0C|W2vC3J&+J_`LMHlh8nZ0U29V~*shWu^=WK*+? z!-uq`WyWd4#SujQsdt3A2~nOWhPn0;EMo?RBbAnqQ5vC}oc+G9?fajwyVmPWyZ|yj z_Q$GJ>-9e=#&0eP9WNdHHzCU-Kb;zC9C^VYW9WD{KjhV5?%bawR2S{^LU5i6--#A=OrmW zxF-};rTtl{?PMqOg-;T(IFG(3;NWGJ;}q~CkqFM#fR$;K`E_d2qR(^yOx1W1N2T_| zTr3%Jay?JJt(f0BLW^~Gm7s8z&4@j$UX@&i+}Omxco>23NFmml7&p^F`GqyIo$N}> zsZwDQ-J>I0w@GzvEI;Plbfs)|jD(lzLcc-RRLQL&IZg8GpkH=#uBH%nLw1F~#Jlkd zlsQ}VnTJK?w*nRL<^%?831nDJh#MubWu5@pT8==L^$g*_s0m1HffdruZw}&N`bo)^4}rK@l=_|tqJY9I_VzSeOB4>f4VzOJ z3l>M3Rl3&43>=e4s(=7XtN>#C7*!_l*tS)aLdE4P0k4+T;{+$8Y~op6aV0y4|A_g< z=h>=SSK+R@f$8gilG{#>F4R`1fJrVGxMKusABgtlVEGUUGk3Lhrg3Ec6z^=l4#|J+ z@R`?Z6)}wd>Uqc6!Ooul$+1trLP>q^QyXuOCLI2hzY2nD#po?{B2f(QX4)^u&ZE0j z83Y=v={k*Z!wE%h%29)LW^S5`%&0GcA7#MPg;w(pYd_r^XSD zO{(*8!W##bzNoTq>90e!br(lHV-`eHme93y2jE#8NW~-hTX_idPY9<(c9wiO_2A&f z{Anb8BH`hV=$ZnXRI$_ey!@;C(Uvw3+Zd-lUww9zsb{TLv}NCzBCpchM1+SMMX+Uo zjegQ}#3hP(w96Sz0KyqMU&81%;mm~sIYi8Esq}!+ii^B&b)Tiz@mCmm45yA;hBp+9 zjpz&$RW^GBeZMJMuW)EC!NE<3P5C=YyZ0%dl;0jHD16;2xTZt00O{7=N)qQ>ZUv;K z!G|lCe!ynv!14nJ_Bc{L4cS6pB@2!9@{j)h{Qa3~z*f%g%NH}Ou(?$EnQbHPb`1Cr zvpc|#QvoH;*JGJJ8F&f{K)RQkFnh&8z$!oW(jY3Gkx8fNs@sw@dY?b*Hi;s#hPh9F z*qT9L8pfU{jVTW5&2MO;kg;teL-fhDynQ`by#N%`J&vx$oGL2*a zFh}U9Ta;n$16W38{z+~#F4`Nsm;vipLjnE&B&U_91iF=A8+l>6to=n60ys0!h!(*+ zx|2c9q;Fp2Vk(2fL+`{wY?a0${0~=A*t@T69)abg4?0oeurIv+>&mW~i}#nR-lzf( ztcttOiG5tm$n-a^DY`AlGj7uv?x*JFt-Vvlt5n18R2D^R;!|)0$bOAzFnC~kPKwW; zn@nET&0niY+y;=#TwNkSGsp@;`54l^3)w!b11Lh&Vb7_m26N_LQ2ywTG&a+fb5Y$M`+*>*VD}{Gmh*@Td(+jZ{H9x#)>L{hrDe-;NuM^^| zJIT!8U8if}%HSg*birC5yAj5!R`0y#!AsD(_3si2%M1Rk8m>Z_lb}o8~WEN0rxhLbz`CKFpD0sdzKB zWde$Avi6_Y=SYtRM(dSY6}Atg(s8r0g1R0O!9L5pidi*cN?y{@?vJD~0ZxoHYdxZI z3k|JsXhM#B{3yH%9r##u47`<*j>u?mJn#z5HGAQ33@1%->2=tuom_Y7(`0w;lQMkdZzuA!@g`cRp>@nkp?E238;5IlNlmQ8W4dgb z-BAyathVvE)|39O%@QU?QBQrnAKg_}0`ddbpI50p^;&|hPrvN)uKEnJJb99Ai19z? zQLF3MuU%uSR4Ks1saxg0qK$j1YipB&UK4s;P%eFqawumF9BaP%EV#w?1Yf~R?KMmBLcFhCV*DmbH zbD_|PrYE~%xiYd>h!iuZg0Ux(;KqMX(hmyuEk8%w?{pb^2?@(f5!n|jOV2x?%0?^8 z0=}kmQ9@nQ;j5<|dJkrB1eFs9*m=60N2eFkq)I0<9w1t@jzVP4?@7~3^r~%Bi6J$_ zvCXlcQ{m9HB2Ow(@wCI65xbB$+bRBwa@n#zDfO?bCQ=nx#S!4|xBS)kUG5%u8QTmE zb*Y%UF~}<)P)J-*`Pk&t<@Tj#G$_0N)u%-*pCCYaHrh&vcBU&`R*yQ{i;AkfQfo(N z&9+%ak1n<%Q$wb0%>hb*J;T8-+HB-hnwVOn!d+hz3z=N~@qR)& z&Rn@qaHw5TcX?gpf)zRW`NVNo^_71#rQ~`HLfD3;_JWkS3+#zimW4U~Bbh&{Q?9nz z06v2PsswwahfkY}Y=&*;n0@(<2XGOh?<%iy0f&lX7&VF(#el-XYDddN&dy-nHBEC?(Cp%_5KoLN`hA3r}F2Yf`-ba-@qH`bb zc|ZJ3`Y9}iW{`!-UmW^54F#9u7K3kLV&U*HwTRVEim@yHY>51x?nYBbzLRD(;`7<8 zp1R;NO`5d}U|PyJN9nHV3|0oQ5RCmIE2}o1ssbZW5sZ7`kRH~zlyA$;jbt*f47B6V>8TK&hSW45IKo@wXL z%{0S6N*ngC?&OF+zD;(qEC8;>V_*&%h~D%eoFGo)HNmLOzItY&`lY#WHBxa?_jSWx zfgD_QX`I3RS8sx+uRe|Ro*PV7%Ti%&v`J%Wqjt!<0zy+IkdX%TtRORVc&1dpV(F#A zp-H7CDW}`OCxz*$8o<#rlp(8m4byHw2qWX`XLU*$dcFNOlTpK&$VafJbHx$iJ~T=; z93n5RyJ^VU@Zl%ykbq-8>D}VSrg_kQ)}3do-QHNB1tvLGNdI zdNXd0Y{fEwsJvT|`Janbei3avS3^r1hAB*kiW0(hm$Y3J#KAUfJKO-4BpBqp_E>oI zIn^}GS(XzNr1y!ic{k} zk2(8*H^RrPRZ+!TEiXqWZD6ARG-I$eZ$>NuDPdejILOB0ROqR|fIxvNUH~?I*@00-53; zGwzT;8mlTa;dC4q;KeQ5T5JxQM-K7>Jz?Mw);oO*i)=O;`FMg4kBtC+(pVJ?9Vn->NY;B}-jO4lZ`yFn(fmE;mu1guF~!XCM<6uP$f8&G!Mg2kQqi%oO&UHgA!Y z39*o-D~i=YmdU07`Juq^APk`C;L3{WNqG@L6axaDS!ae-YetgtOEhUg`3{~rb-l{} zv2+dGaW!0bVp|h7wr$(CZQDs>+iq;zw#~*((j-sZpvgCV*Y^iz-8FaLgMH3EyV-06 zN#SJsNf|R+b@k4oToRXyuws%co=C5x;)5u3M<` z(Rl5~@F}7DPNPHB4ItN6uZnzBd7zVyW$-S+W*=8FhMjn!N&g^wXtODc2X zDE~VJhMCT0+iEVuqh~$y5hW7qN{Y4!w4M}Y!ma{1oWxK6V0@F3mAEE0cx^^SxFiyi z0Xv)jcs4!tgtOoyvWq`7S5tuU72tZphtu`vmJqpdd-1#HJ`rfyJ?IN{GcoJ*w^J2v(cQy#kZ_YhjL3~*}*<+7ys*54J9 z*(73+MJ5rO+b*F@F+Aj-~(y&4&b+Mj!Iuq-7By*i5Lnq6P=4 zAuhiQb0)+nvj!6nnVrlEALmoN@`_w(t3llR+reHY?RcY}GNjHT$TJ82V<^6$ zH{F_SYsnu)_vV7iETgU0QL`NRpvx$6nfM3 zcKPgtMr0J*@-Bktr+ZrPVTzpzl+=k0s$)I%6vR?Qi%EhxU?~d`vW#FEM_I97gCXmm)H~%ij|?W@oAXHWLvt+sNemt=(`di} z*Xg07E)?BRq$!&+RxL0`qb^kCoyFqA7xdgh&zRiQ14s*EtamnvOPc~S__CtR0mU?T zq{i_rFY_DYpye4^KSIO~zfyNO!j1l0^~GDITZ7!vsNdTgcGZ2UT#3MNzn27q-Z!s3 z?d35zv>}ZzMEgD1FVu@Qzb zXLGV-bb#P6E*(8vb~bgD(Bhcl+WBiT*7nGn+v8j9qdE>`?&R2AnQ)<|yM=#{TSXotQv;ntH~lZa8jsE5x1k1>k+Qu&{PYq%O?+lw7fdq4 zHz0deXZr3(cPBYvMC%l&l@!d&MzlU;WO8_RL}gm9G5E+hv@@xV13K18W|h8B<1Y zA-3tXZ->GJ6+MiPiPhmSW9t>a>OKCWjHZhELHYUf?&KFY2*Uc8>H9FjX$Y%TO9mMX z6d&zdtfp*OD=3red`l4GIpi^5nvWU5MEu(Xfrg35vZ4J8{ysLfImw-BJ&2>`3OpVh z6AAe{YSjN70`b-(7qfD%w^G^@c%Q?l;aUC*;6Xp3h1YIlJQFPnBwaLL!Y9+&jL3se zUnWvor4rXh&cU(_B^t~V=V5Md={9x_VN*-fP{ZTYlHnZZ^t5nodiY-Md7cvx<9~Jb zTC2FlxKn+O%y@Lp(e_gJm3_^aDtuWSrVDm*BJlfhS6Ct-mzA0BNz+o=g(dPo{3Vqv z6H~U4doYR+zb=72eN&Fyt?JRAU73iKkE7sy&`O-^!gXT0X&%kBX4rPf95xdBa`heE zv%3TEt$fRNLRCKcR7U6B^eBW%f6at3vT7YBD-n`1kl%=gCg*&lxoCgO>>pU+nd&AZ6;ciKD%P7nq+Y>394G9=f*cMmKNYi- z=dr324N~9gJlfEE-fz4!+n8o^0whc-8-W5V+h^t z;_E!glOYGWSV>qIt_sCHQ|Q56)|yIUNS6B3;3Ze6iJ=9^Qe52! zCp+eprN-(-!sw=xbPzX@^ZpNVoe9vy+AAPy8)yCT?kSM94UP?n(!PkFY9z6%d?|C` zuW&W+G=SLh)@SIII9x@eh?NtI<|yTD6cnb4pPw*6^ayUib;zafnmR&@wOM6i%4T4b z4Ar0@B&an)lqbj=R5ri1X&xIb+oCP9(=?>t3^Xqd&0o)=V?k~~2~?c#`8=7Om9xo? zf8YlIMky#hAa+^cdbsdZ~wdEN-op#0QXIu}`OV-da>r_6vk1 z%RLvFBwB$s>iXa;faWR_E@Ih;={lRW{o2T^Jj1Se)631)PITNq?KJ9lb1@F_6f$#@ zN?!#`QpO##R~v~X`rVM-QBRPQ(n`H*|p2n({jxn)f{!T zt0p#W&~cYI<7L=uGpWTeTwKTMJMa}K-ohH@RABIpv%LHRSSDm?1#yI2x36yZ|jw-Q+$+UXPHYHsw#4yuRY zHR=c{fsa#G!QY1-g~27+@24)gpWo29b@eDi+HEYabgArI)_tb1a9s`oTFPaVnT{s^;yx4Yd!8hE0XRq6m@GagiiKn;#+v=h)nT zPi5*j$|a^sSvKDaCgJ&kUY547@6xV(G2WOdR#ipiP-U8y+M3#m-L6H_ikPXQPOngx zHp_#IFZ|7dCr`}-ne0FZ^Q_=sV(mpfu~5|jY4!h$x0U^;)mNbr`KKuyCa$EJ18Mb# zRwN1(nEQ+tbRcccIK69&T&e?05~u2`vFdM4R#MCG>9-8F#8gvttIemhvcq9e9yhLYJL1`QFi!?IHD< zb1^Iat%D%fHERNgv?e}~sDtB2Rp|e;H$FTrs@W_MA(4@+V9CKz%{?0G^aOe@wye9F zWUDQVoy@x_*>Id0dmV}l9$q>oi5ybVCZ=f7W`Fi<%sI8wy0I8-RjQ)Adm+re6SGIk zNSH}X!-fu8FB$+fp}<4U$7NtuzQ@ne($prIL1J%nQ2S=Z>9X+5H05>_Ua8nxQ?|*t_+w?^k|w8- zUr?%;i_eicpoD<+s1Lz2`|`Vu~~ zYQ9rVH`NB$V7SiUaMXoJNalS?ANd*_Elt2do?r})Z}=9D0?zG}T!O#2DQ6;k>K=yU zoL-Kmh^M@^NR%7~3e4&HF^W@=HzbQPHNVtN<3MxG=o%%)qn7j@J;kgp1}%s8EPLH( z&m)Z~5e(bh1I)nEikfi{6Z~&ObM&v$3cj}NeJ0JD8iND}(* zKRR+Axdb*84m6)Q(V8;{FddHVh~ujuXnDn6BEmb`Uj_j*N^t-+N#Nmk<1u?3*W9)< z7$~h~OEBC%S!0aM8HFgb2@Yw|j5L+4AAODq9<-Y3(<6|U(-`NH5A_@$~ zth7>mT}6D`d^*m5jMSiCZ)wq}I;g!TlT{}#7!lIalHQ>of3h7=~HWl#a?ggR^ zOB^*bSlW?R?W|-&P&-2#FRR1)@bJY^K_(Y5;hwFH4X9Ls5^NLi?)g1TcB(9m1-9yy zZ_*{Q)`{)f%)ItF=d`vt9ehj%ScI%oQl#$mPb+AQBT&T12v?0C@>b3Vt8s6Ez zAzez(es}#Dmsn!Vy9}Z@aIaXg*iltb4G)tTJg@YLfP+^+`(q2qXxUtnGTb$fqb$cY z=VnPn=~!GuGiL$yo4%N}^2jL<>C`uire{(i5aX4R)Z#zpFo&=d4g>MkI;^|EOrf0O zstBG(7Xsz%WCxcl^{HXYh)!$@)dIMm%k4*jV%s?M+77wjwdT3J%=Fy3O1M27`s~gi zH3j1ZJmj08MdYU!C_H8?{wIA{N(g(*OoJb zWpg>shNH{x=I;0}-Ik`&QH`uULvln#{17;`^EI7p@aXH7$^gxrwv^<2<%oK&Bg+-* z-RMO5czob*7N?F(-sOD!$Cn(20rLaGpSZifkR<@97`=$zN#&?W>Ex5igegceQDGhl zwP8g+Of^x&Xs6T8u*n0aGulir)AN_(h`$m0zSIiJqDDkdVp^`|C`>%J^Y|#Ky7FDT ziT~A)N5Ae*c=E{7bejD-weSgY^#*_e&@l#rt<$ZBFSoMJNz#PzEoBH-OQ}~KAWorCgN2H z_1zTNjcJg|*QJaZSgsn(o`#ILxE>NGYjK|$7Zoc5W=B%#iUr&-R1+l(-rx#_sDbWknFB(EmTQ^ltc;QaAU6avgB-6Liaz1{a78?OA%^qLeN=(@VKK61HdG4%p^g8$S; zW{ON<%AhlLO2iC#*>oS>kB0C|SI}Q6(Tjcw3n;B4=KzOw8e;UySp{Fz$|2u1q7);% zpYb`y5}j6OXW~3n9#m9?OrQGjz-P=kE{47vB6^A>%+KKGnvU>znYB+Om0?)-U$Gph zJ=IM=O&^&`7{S_@)8RGHF4@YPf4TJ;J*HppRqnFsO1kt7PCEIkW?rTrW>J=@>IScF z5i56ft=J>;cJ}x+J8v~&6Y4Pt4gla1&$tnKkC!2XqE8w!GUack^SyGGdz>;yHLpEg zu8fG;-w}isT&GJwMl4e?baz_4$SnPN4&$t}XU(gd-Veu&Jy&94O;&L_;gHbi-tk>V zw#^C^3570G)bM>l)frip(OZAam>teTiaDzGWOvx9X-IJ!`bXnr!XKlUm4_#aB9dsz zxt@o8y0z1BLZ8nyD+sWV;7%uah{b66r;(^}ulnn85^+;mGczfsutZfhsTIpL=<~|c z^INciw1Q9iio<_57GKL+4R>m25Rz+7p38DwYxTU?@A&_^cTeEjgA<3{*Ss6_Ubb}{ zdpOE!s>6n%NXu{Wd~c9~#hm*Gx%sHlS#33t|F3gqOg9&ZmqYV0QT)xqFzilS8DA^l zBNK_O0k0BhCQD->S4=@hhb|OpgYQ~JanIvtQ;_$i4M!6a><*dV44|0M{{;u$YkmY? zr-O`6@=f1&arx8Zx|Oc2^4Q%a@=cHZzY%rR-D9j4IUeG8+4HLf5f<8I0+Q~B#<2_9 zknDwuwFUP5`#Zjm^?vQPnpgVQW~;eK#}|9c&PXrr%-NvYOGc8F50gFW_axr-vA{M) z25Y374EB3Vt(EqhB+9T)q{H>r3}g=jLx0=Ng}3+Kh#LS%n1QxMVksRyr#nJNbStaY z0)-Ja$jY0<<72i$hp3)|>VU3R^(HfvwW5h|`h@ws+)W_ipzs&~%By4zLFEzj3igQf4#g25&LfGq-XpAad3S4Qe^h>V5@ zL&6-vA4aYLBb_^l00%`HkgmI<0Ux5tkBN4vfHmzk-u)KC+mDx{TaB-WrQlS|Mf2Z| zw3OYe@u-`b?>*;%X=;Z>_XFEtzz&eGeNc^AG8*4-ZT8D|p6fctuq(u_xlJR{bh=d} z@w`4~fgK&(GHjYa;ee^RaMRS_M-~qJ3pdss7TU?k%+RXA$i7oU-`64SyC3+xnJHLO zDd~l?=waD5Ae(B4D(-8 zf7St^9+iEh6Y@dE+ZcKH{>xqn{~$MoJbI=Lnz8yhSIACd*xWj*I+)2iuv`zDR$qX4 zIUmXDx)KfLnuhmJN)w(S=>xrayRU&N`OkpgIvBPbJ8@X=vTtm>zGRdXwi%72V>S5u zd*lYUu4czPFB4zKUmvxr?flX|!BxMqUhrT`!Sz#{vld3HVnyrtV2Y}pXY9K2S_^WP z(r=iFPSx=Cs`T&`G{*}>dMP)t{IZmOT%TaN(;7;p3XI#}Vft@xjXtPy>Z~PgX4&-| zJ?A=C>^0x=)_=NO1YyPC*dM}*A^3c5&i44niY~wNq{3sqCx3M5Xqy{U>aX?4bFw?u zt6XSfxBA>Y4q@p zK5+3OaOjcW$Lmz&sC4dugPPZ3%{p(erZ8Q=l6dKJCt;ltwGzp@lf#SJYMBXxmo!)h#hJJ&vL?$j zUJdEus^P4cc^IAe@K5zST20_~w+PxY13 zTEDb8KPk5>T9Po4ibP8*#Lw>n?XFo-Q3GhQ^!(FN3QJbJYGYpZ(O|U0x^~pRk*VWMOC5D5!JT0 zT1DPPiU2?nD7?5li+>kqf}EzP|bTf<~*b*~h4UV`qPUPI2ORXG8|Nx~_Nhm~0C z;Lw=tVwQIIlk%P^js`Scs%Sejgc{z(n2@%a%AOCbFRiSx&&=U*>DXXskmc>qU3%<PQC zQ*9@olN6VPtI~i8bC>~-I1O{GLn66c1?Nf6cjQK^;0pN8t#Evl<2i72sH1nB6+t^) z>de_VfG1Fr>;gQ;(mknaeQm97Sw`kxlpBbFbkb5&W72btn7*{Nh;~#9Fp<0#WEc*q z`DIWm(3OorVIl(kmK^LMxy36n7eBR}o$WsRwk*AdRVtpXuFAn6v%D5Zm@nI~@idR$ zTW(tfs#su~-o>rY3DFM2Ra&!f?Qvz7%RP5P0WQ4w@nME;X{>)&wlXQzt_v;Z4Ym}v z?`ADFOkH!HnAB#No*nCSTl*Tn+TrbOYUK6iUCZhu6WQKx9M*|?lV@ygP??_SIp1v8 z?RyK2{%!~f;sl@xqKmYVlQ^N_!2B6DK(Q*NqH{vj3h!`P|CQ4smQXThlW*qty7A9p z?Pk9JTbt6qL3;yI3l_Ox@Ue?wuetS}L<>T22Op3c{}O<3gz6pYjtO zjuO-AOBrI&(8-fPVP|ggf2oH;M-TA5a`z*zD7HQfiU@=>!ERD z-hZM#kxB-7tsR_5`)f9nIM@}2>RIxITN$*Dvc?0yzF2we>{&ShU{NHP48x{?X&hwP zf>n4sy5no8v5oItxnTGh6sF;^o&jQiY0&SSN2hnZbMiAh?L@qwp#`q(RNJ+f=OTf% z%p{KNRypi0Sv4gu2L20LOtBi9HyjnT;6uYl)7|oG&f`&iA?HpLd0zE9Fx{e`f4|k_3|{ zb3)C-iMLIvD?|9MRORue)kMD(;)}EGx&14P zzsCW?o8D4}5sMzh(usW#W)^-kLFa=e=$dZmz!i%{EI_cvzVZ0vN{SIQo9lC>CJGX2 zzOH(Ujdnu>#4>db1rduNE9wxq?6^`sVj%L*^3A+r#`GJ-t>ida=XzD{dZM<|-#Bno z>jo2voeu3jp_d#63>{(y3eeCT277JmMQTEx4ewtLGQtG0Khgy7#r?T)3j~u<3p(}% zFRU|NVi|DR5HLfm_K5=6>W=mHo}9kEdOq)pK~WZPI75U-Qx%#3q;`pqiG+edek*lk z;5bG|M8f`ch;|QNZ=)gSt~-^4LN-KucoQ5PCKOo6hHGpRuR7Qbx~F0II%gwXKtl1v z`6N9&K!#*0++OAy`03l;rb=GkJ)%2ovJzH5FxTFreVtQwp|2GLY%!SzPNS`5e!qbt zlKtd|hE*{-^S{DeRSIwd&P?H#c9$dD1?a5=KDG-!B$6Kt=C@dqib9fjan0c^Tj=8Z zXF+ulxi|YY)+&~q$ow2it~S^PFFW7e(s+(JA~T@OUMJ|N8LKlMou!7~z`OhdLLO2J zSzP}`k+lz?mYM_-I@w>rwtLO!>+WBWTZ}5h(OzOx@^dba#eHzNbwmv}Q>hg|8s@5{ zzNo0{>J0Wq#F!2la@^FG8q{wh_%TZf&7csaY0^$d%ScPhR-L2BsSxyG{TbHI{$CUf zPelrWzR&a;EO{Sl^h3Ce#h*2WSo;ZSE_`KXjHT0Hc@&OF;5F`dwgT%r#Y=MBCTw3Z zmsPA;_zp$iE`f4~LZU?n@dN>;zA02oDMSn`)JW|=+vl`f8Em&*5iDlcU>7o_weYEP zF}gmpc5~Axv$6)gdvn!uYU*#1NceP0EO;7o;%-A<%-prppdAtb0C^?H)O>`V6pT%I zP0w^@+){rkO{U!RUKA-(N2OCZs&NFHm*{7w5(V^jNm|UwtL!0Ic6Y0lX8W{HE$g>q zMtn8@+xAmwha?vLzQ^bY-KWJO4RlPiah_r`u7y8;+MD8!sJ^zFz;^8j#x8|;;;okc znvAHkwjU96)k-H_{*8CPWPgo>p?W7L&}Agmd|gN+;uQS4cJy7dfwTryk`SHPCUMeR z(bcGSda}S{+Dy69yYQar#=$lRNBm3^)6r@*i99X|mVC?-oqBPrs@g-A>AaS_@_M$1 zLX1qUX{Qdsb*vk)%1b6Q>f2sV+z`qlr$v0gO zlhNCFWEOW?nWcHcx{7;`&X)Hvz`ttOn|iQOnoUGYU*CNbt$46H_BjA$6?*&qT>e zsVJ<%xCa-Wn8a?rV=B>9$Q)nF+2Fp*s69@G_o6O?kbHAVtUDH@bQ9qmxmNuJc}8In z{w%G8U3Zn}DcsOgOW#6gL}`C}HuccYN(mqy8ezUPb8H|s&slZrI5gx5zL==n=14Aq z$e1m&<~Y!{4Nf+hFp8NB=rb$0U-aiIq5F?Vi*nNw7zk@E*xb~@t(UC35h2p=GX<`Y z{_8U{8B5R~6BvAfx2&fjS_q2rXS$U^&09NaZ{pu!(7R)XWLYY9iwmsG5fpDAoxI+x zA{p5_RRpPOYzfV>mFcCYofgjT&2BjkzP=J2cVVnJWt{C|TfT#rb#;xi9GIthy@y!C zWn*J?sO(5z@*q-VvE>E3n45LaC`F+P)av=mO-ZOVW3nZkghxNSD60b-80CUv^&&@?R8_wLi?g@4ZoN@4Hvi){D&i7E)kJpI5mZ z)h{arp^P`qKQ6Q9gBE(a)m$tSz(N7wvi7nNEF!BCt){~OGWq7wzZR(|>jB@Z@x=v% zMo-|-3-n@~$0Y4f{BT-qNxOdj*GDQ7xzgv{-0Dx_(qKOxjwAoP=Rn?C-lm-+-_j>b zEydqh(;MJtd%(9aF|pCHKrZ@oHAI{M>YwsKd=3_JU3-}i)Uc+|;mLwbAJG4rfp(X! zhvn(56)O5Ve^8&_Gf!d90xfEG2d&}`iRjGytya!G%?j5E44ib{7rxH_T54&A1gH!G z0B|GXrT6TxlC^NGllibGvLhXov>0}*45R?jAkW9k4&@z;mIL_6xR$1N%k}j_`RB*A zVnH|Gq`05;JXqS1SxaRP$7l{V#=_$@y4Q2*+R=Oz0r^@S?N3etj&eI3YaHkiAA1MyzGhJwZiLVg?TZZ8dgKYB91sX9P|u;)q8gRKFR zb4~$uP`y}A@@gNt7ZD!%R zEHDu~>v?`VHYpN~RF-EjL0hzOvBdO%&(Cz6a}Hn;1vt}_#HPB-K-HpXL>L^T^(AhRL+8;N5 z2}($p%PlHmkB#67`^lz$eCt6&y;;F~M%LNB#9SI-{jg|G$a76s4!T*rMqOOD`UkgU z!pu5p(AIdPfC!Mx%I^4F$c4k^&iC&Tr<2q_$W4ZZiD@tQ(0q3eho6?R`Q@lOWhSZs z;z%6mthPYi!xCHN_Bc)AKwl83jrMWhYB*g2`C)w!gHaIW{TB(tnAXfVS~T{jZ$(1; zl+jc%G@a3fVc2fF$`P-t0Ar1AQB8IFbf->a~5uJ z<=a<<&$Ie83;Q^0l`(e5zd0ZD{r=eGlFx4Zis=r^7i)uQgt$pRoOIDrqf!Fj9;|A$>DL+zXW;Hsz4n_EMk zm0a=MuGdEsrKYyO=U=lZ(c$H`)a8kN4E%C!3(RRdXc1CCwon!E?b}l5GH>_8N2R;y zeEJ~{E0Yy>Wrr1n%Y&mm?vQuRyRjN%V3B9exfji7Nlz6EuhX~Nc!!{-=NH@A8ei#5 z7eAEBD$#d7(C_y3zVSLE)JNBF@{cCM_y&iDoD^NKs6GpTYTg$Nh$xTCJrTYv<=osd*b4p@N*dGWI#FDdb7; zC<+2OVi=F??G|r7Uh5BGR5Vj#MQTC{#F78ia=~Hy+DliUS}s!#9^DSb5pBs#`gc>^ zuwJcoeyu>Kj_~AuzI6H9)>BD561g=IbDdUocYQ}1(rO4hXqB0D2pkQd=!u7~OkK2U zv*%sv(Rc$JGpIUm(UT*VHm~K?oRuzNG>GqJU$1<|jGyPH1aUj`Obh_%lGv+<~&Wss@P|ZFBCd3i=`6aMeYm3x{VScWHi8( z%@rtfWSErBr$-)H5F+-scMmhehDoa!8}IbncR0&pc5sH%x$GBUaC-cCQmB`>L~bDL zzZrqI?cdg1;ongoos6#-?ax3`rYXQ_Jh&0&9mteV zdfEsl!4(*QVB7ai>%X6)s)}!HlTn^PFFJjBZ|0nXGs@F7*8!p=(_Xhx80wCOQrYdc z+YkDw7;cUcEk1J&Ikoy)XSkd_CLaztEBAW3mqM_(%Yar{^gMGl6fC+D9g9xt9SVC_ z13GlktOg1UPQV^6HgLCS_Vuftsr3zei^{>+=#d{d&)tM6dpYWdJ2Msu<7RaP=~GZE zqMDkDWz4v#7HOkM7H)a>5F2pJJO1~fzwm!PBQr5!^V-X5{}QVl-ajT71J_I(M9U59 z)><2Y5-W~34cnidZpQDPb!cp8rZO)t1F?48Umq($zNtHy>w=$Nc>acgsk=Fb1qzeD zgo6PXgb@?&=#}-%LkWm*O0LSk`x|G7(gtybFI9O4SFUE)$ovUtKe(Fmny2TaUsnGl ze9F*4OMLV?ifZfl#y_3K+T7OMy7=R39GGZ{C}yl>MM1=C5659h`Hg!KWw+H`Kj_~q z%|Mg3H`3(b#Qdqp51vWvy~P}Vs5}198>;2MTHEvBw-Y_+_1|9Xt~euSdP0x|B!NtV z`*?H7+qP{^=i=H4h0~JLUzvEx@rF}q$ztOOl(ad*3GOR=@r7zk?@53C42-ZorXzrc zUM%j`m`mtyYii2Tm<@Z}LWiTw3P!I*#~_C{&vJ^M@z7m~Y&R31LRH7gMN`I8K{a7j zZnUDrqj+j_Y{j<{ar{nPFyQ}jnc=Z|CIh52q?ZOK2N@PGj8W>ZZ;<*9EXT6&EfTnt za?t+9fnet)l^rfn3D=!x5a^l7ccpiF+O2CZoZ0V7nmcV*P<{xsSkPI%^six-!Bf}} zDHTU53PmBg6d?MOvs|(IDy45Q}x@NQ)mCD09)^l5c)DvgHzncM}V(tcI^H_{HWLa2Ijw*tX7B%o1|FsCk(Smn}IJH ztk-QatXQk~+wqj>1Yvk`Gwx^oZ|wB3;X9-Kwdm-b@`$8(rEf0UW_$N8^B%PE8hA}C zdOAH#Uuk^cbKAcMB8N%5$8gguT2ZcN&Tr1U@`?H)O_`HiJwww?204q;?o~icsLkiq z>6eMGpq^g#=rxm2;q&}QgDVt+yFp6x{z@hw7<9-mORf@3f_=lhL_~POD#uN|BA&dC ziy%_fl*~Wr6IcD$`o`Mua&a4!K;h9^Vte=??uJq#`v_l_fT*DVpb*_mfH zb*~=Ah@-G1v7fR!UqhTreo?hvN9DCpMXqdtnOHR&l`>7P0uTnhe45Z@)bKwdkJgsg z+aF8~zirvax_=kus~d+ccsCjDg?Ek9TUAdo+4!3|KOaxwCA26>b~rFpv-M@%mymU- z_SDnJ)MPVcpiLJfJK6oR)kz8;h$`U^T|T_)4bltH>{-ZUUp2o4aXO}AIO?I<*Qy7; z8T;6Ga>pz9>r9$Vc#tr;A$gh`DNq4?Z%55euGIh*0JvE}PRp(Q0gK5G4Rh|@rnq_L z$||c6BJG@bXnN~prt*(gkvq%zr`!&NnvCKg+40|yPwTBE`wfX{$mQ4kDN%#)792@S zYQzWI zu#oR_?Bp=oWaWMxK@Pk(9$U!Q!C;t*XXB5yo&Ka#pKY;i#5)gG=Nm=bCfA~uNVsCr ze(Dk2x9MTqTNVhFe3GI;R>SLj0`riFFZi3Q_h!Y!^Uig?G#xBL7!lM$6wmJn;IcCJ3syHg`5)50}48jC7YplEz8t zgnC?{=;;)yrqGzkRTHEaqbED5Ug85Tg;xKJRq38B3*z|qdDcju8fI4)Z?`eAKhHi* z%&}D;A8+3tD&B5p zR~2!FU@$8QJ9oad`uJQ;{N)I>)ap>#Y*-y2A>>W6fkgfx+24};kY~hP7A=oE{B@dv zsXe7dJW)#;oQ9LhZ@2yS`abUP8EBaL4{{6O;c(iEAe%zxoGUyC5aiIZK^-fIBw?nf z&Mz0})RZGy`pNgp$@GG~&jW_NeE>9-cB(bq9xuM-sWUU7RXh_|-D0%%*|0=IBi*3CbC$d^$vN@gl zVtD?2rss%6zq?L*U9RWI$`M_^j6|xgZ+5G8_04)Ix9Jg z8X}0R?X=f*r><-HeZo6V|HpYFe_Q-(-?iq=m%`~c(0kQ?11I9nqFo-mhHf8;cJSfGeO*Z9stMNu5u@9HLk@&X9UB_HVcrF z&7{P?lh^;e1y1~#_tIPOsrWJ?9473@XXY!FU*NiR^WY;GBtQi~v$Bw+;N!K?sd2cJ zJy{)Au_{rFpL_!om$tT7bU>6KBiXHA3iU3_J6<`*5SUE5xz#D(^{A)dyMp;KTD!fT zi<3JNcaK&Yk{vQ!^*LVY-GT)zfga28fVj{h*F} zTg$~oeoDs+pQX(!!Bw>Hr`Ga3%8P*RPw_Gql)oE+8lVao1>$45q4m{F84O1FJLX+X zyiMDCN@~6o+^DNG0x_<$+%{p)*86V;{`4Hxxc9qi)eq{~$Mu2n7Lx9H@QBx_pDNNpw_+H<7dlwGZ^5 z_MxJ#v%FiQw3@mND@C~3gZgM<*kEEAHVEVBu&P8-!v6Nx*VALF#`=kr=Z}R#`Mbs; za?maO<5nmLqhu*~l-#WEm&$Uxr8)~VDHIO~euDn)-~Etx_J&nDIGaU!H18M-xSTM~ z{c_&BecDExQ@MBe2`xP}n(J&a)L?z-DR7f>bWEvHWUgr8takhUvKk!FEt4~Qw-KTb zLD8m4H9E^~c3-T$2s{OD*j4pAw7?aDka_vk{JF76LJJy10ALC%6T21KElAUU3g-&z zBO$A>J^8S|avG*xq2l%w=wZ1K_1fB6c1Q5#h8i*d*R9U+1Ivk6vh{hzUd1A#5y3*O zV%0*f4M!#inz|>+87od~<~-^?+klnX9zQXdLLx%|H++dApBzoZy1W&gk^0Dj_2&r- zP&~Svl_Gvlrui2sr1o7}v!*KC-gU8FgOdlbkwUE$7L(@!uX%CkAOJulFq(#@N^8G__0M2X_Uh~Ayk(@Rd;J(_4Xv^;JL{|cy_h*EnaqugOEAi zbpGDc@;%XEM`-2mzO0&VBp%}(?NQnqQSbZM*Q&w3bb0nULR!*le1I)Uz9$0sIqOA7 zJG~rqy4nQyj#vnL!OK3P^-_dSZg&Z+TCHb#p-ojVDqKfWq}Qb6LTiiW_+O!sMfO`d zkCNsQca`}E_%(4X5(u@CphBno<6GYUdB)8kK%xJCVx@!sUz95|lR^YVIb3?{DiGw1 zS+Y_)*kv%}J%bzcVG)sf8R8I~*q&YrKUoUDHV$4>n$DdPxAy`*zCL6p{EQL7K%a>b z8ND(xnBH%LHz(^$y$CZ59#!cq8tYFzO(dXO-}GTv{r+&KGE*?D}otxn2AXGuXc}Qw;xSr&Arc1iR{+zMSn+H5OsP&MP`Y z%JZ!b<^qrb>S03HC*RPX=d_;#ZK>%SUi}e=wyVRL(oX&?OD+~vDfZaolJ_}OIrjRG zuvcb58L%QFR-B)|BG4uv@DuLkV@O*Mu5_&>id<)`pzlV+XDlx;M49m@&4G0BqQ=RT zi+b0(%Q8W4R5RtJO+M%|K{^*}V5k59R3ZvMVTeIy+D$ue)s6e=0ZH|Gvz!dKczOzf z(?U*{FR&~T8q3h61AFdpNcEQS8ecm{+TOifuX(j7oNrGHv+k^(U^Yb=3G`=jfk@TtaIm}mXd!Ms70oi^0Yrf?rZ|>Iq0CTT~ zPaRiK&vN4HtFY23m>6)ZBw*EM-TWwBg34YqztVybL9w2J36%DO^qQRMuxu1V?Q3;n z(Yy(``18jm{+a372pk*Z%orK@fCxPkX5G^x15HAl8G0*JJVvsNbQ|m)4>wAh=n_ix zPXHu$lKB1Xdt1i+Ar#^G#J?yv2Tnevt)j;C-8qd89_AkvoNOe1&B`z>MQcr1(dUCu zzRu3VBCZRSVNa)G%tCB$zbB{4+eTTc=O8{kiPnQw)p15y&76e}AmnM5C>EF+Hi~|Z zmctLau&~Mg#)(91GnT=#|HiPUw$BJO9o?ng7=16`v`i=+6%cJBxs>Z%sHr5L&|)2u zoVit^C>l4WaAA(`mHf2=%&>E2*2y6Z2jok{;wXFM9_x*sWkZ2`CLb~7>=?!<7bc6Y_xr$9038gFD5*U|7iI`pmtTIJaSb`S@{Q{q>D zRgROO0Od?twpR0A-vaK$#_L?M#3D2(_-d;f|K5#M37)~dVX6IP!Lq6GED4AS-8@D6 zkiy}DN#*Z_buKlF^+p$8NV(G6bF1#FUr$K){N*+nQxRBhT>#yr@54aw9Jq$(C!p0! zydPCozJ7*5;C+tL{)}i~WW>zo4O2b3H7md4YPrG}jo6hgJ-r~^x*v4#n(@BY|M!Bk zu=t*N;Jxsx;nVJ<5+DxxK4EfUe=UBrWvL~YgpAD68c31yMVYs|iCh>K*Q6Ywb42Kz zy=i{IwV*di%(yeqROw2V0#(H#WXx3YfDKX29|lk#)($O41(20R7#HD25xWfuj^~oz z_s;%hF)i8M_D6#f=f9bfa zXq0Zm@;4AB+f%yMeyQ}hdLIjZf@bYsUzbExJqCeWt6$OaIq>EH@Z**(Hx;kx!AYG{ ztes?T?-$YwTuL9#ZJQtb-KTmeN^I$n7HStnFI)tpVWmD8>hneY*Is=sl_*CQte%`l z1o)ux%yzEvTz~Sb@vVM~G5~cY+qTizw(Z8Y-J~%aJ85j2`)%KE z|AD=KGiT133v;fL=BO@bo+Ztmp5A6_!{VDQ@xdWYdIt)v{1Y!yWhHVYNl*gm^ZVNh z5IY0C`3I$(4JK&8j+TkhLHm2(M$9btm6p$HuI_J~Yq&}0>*eaC=&^{-#)5A~yE#Cw!m&E%&Q zIv}3Y?ydk(XMs+q>WK#>7E^hXJ|5CAJ&Pwj9?x95eL_2f-q&QsBOy`z%6EJ#N4`HS zXQz+ka%`)G(gL4f>z`PZoa^~4*V}sSsJ#=no0>OzYIEJFVaqxRQjRA{_GsU<3+4#} z-hJRk>rm`={y}aAFm$f*r(4U%CAI48AIl-13d_nho)5BDP|IiZdJ?^~>U9v+PSvfN zYJLX--+&*YJ=t2F<0uV|`a{A100K*=yHag%E6(y^C|ItD+8PIGrBvoy0PNc&9y?8D zb>7y&$`B6WXp+{;dA2wIB0+~S4r=zKz1D_-F~Ld}!Ih3|#dPzQQb6f`uQ@|fjgf?N z&)|=yuk$P%mT%rS$7QXW4b9#nmg?S?tu?0&U-pD$nw;9C$GYt+Wo~h*SI;TRB;{0> zB#V2r0BpTL0GM*KR;^_h`#LmczEg8ysS-3!p)!B2NW(5PTk?iXHjC4Iv?J1})pe+X z!gB?_HH!Zwou>Py$XX<|n8~zH^BhZ@=A{#Bkp}K-TYp+l$Kyk@N3?SqQt>FU5N}y^ zoDCN65GA(GHldGih)P%zxt<-j+6IVfMPRA#V_4r0)KVHb>^{%J=xN0|;&q9a|;LCr|Pwaw@G0 z&}SRpU?V6hbZWTp?Fo~ldc4Qt!t5;cfSs+8`8TA>2IEMM%*|hvj!F$r09Y6h_I-&U zD5AwG^BVVEJe^`@+PE~5AzG`O7MM2;q>klhF(+Q^Zc4UUDqXSUuuMX0;v#aAvfw=a za-GvRx28z5+6X?fB?XJ6BDHxA}*1izuA1`zsgIghWtPSr|5;GwO4QU z(1pw)1pc4j2wZ7QYMJ-%Hov6|BwbYP5PJ>5%p!~?h4s%d-?1ai<3ZL{@^dqCc`sM0 zHpx8J{M8;p5Ov9u_Mj$jxhtRK3mqT0$#%d#P7usuudEk!n8M3jt!8Pi2%}Vg*kzmW z8YdG+T=ulR+c|tcIQ%|6HIcIHp#6|@K-E-w4bAS8fMD1=#kJ|O-P-d#XT{?ochTc) z=fQ-v7Uok3i~_XHa^O9_&{iM93f&>0Q$;0qeQ6Iin(%LI7Gy`z5R7C;42{B$i|`W5 zr1PB~;T;@ZF}%ssXQgbH%Hep+a_tREQg2D;Hdkz*2{CU@Tc-0v=zW?+LcRZyk*5ca z;h?vk%5D6P(f+yK8t%QFnw>X_t+S4%p^25YGV*mF3G#^C-#tU0MNC|$EO_bmf@&@S zg<0Uoj{_63rYuyck(2YES&)or2K;h;T_|AK3}o2 z*q|nO@BX#R&4Gu$D=T#?4&J2N=)js^8>qtQi~lR@OVd*$l=OD!>qdS_XzylDP%OnS zw`Y!)^^f*8u5RAPcPMD6>$#UR>HB^h1$4f+o)H7Ue9w?6Ggs8Z*_B`k85%U!hbOgtmezvR^-~m z6q?FW>~P@;ZX`NCq9KOS%%CcxALX!UQsNmY=~HD}JCnNnY*Z*IhUmDJ@<_jpml<*s zXz%<4h?EEccm|J2#XTLo$;91(E)k;AFDV^OHox0I_4Q{W0lfvfl&gUK7z%ewDtF_& zZ1|ng`VeV?J)~0S)Al4Lt2$AxNdoIpk7<^yO}}dF`X#n{d*9EtbL}=1IC-wy^=jK5 z2g_z(kFE%Qp3{RKd`r$&I$!>}?EO_!b)?dB05~Xgi4~I)AyfI&5iCVX>}{oQe9=gV zH!>{{2aOLm@r?Y}=3YdxH#;o^sm+Eo8+{56Q8PW=o{49ut{xVj?FIGXJU(nM*+N=8 zLf{?d>|g~Jt*40syO6D(XhA{}ssgq)ZIQsz=XsyHcHsx5(x`L$RwJI5(1hZ#UTcR9 zBC7da=RcAg3xw1Fnc&a|-vr6P$`~gYpauzxGJvjfy3|zDAYFX{-p{4Wc`9*T3vO_)X1J+$e(oRUd*umN7SYoUw5wc5@-KSCHx%yGSI%cc< zVGu+bLEsXsEakU+TqaYwK*fF6o79&rdvZ*up3E-Daagv86{JiEsWp+N76G@c1jtLE zuQ->+<|AN!XG-5?31VgOCw26!9_g5@IGeQ-chGO9qDs)hGYO!$srAwtC^?&qJKZVp zs`~q4$^~Wi7{ixLv;5rOtrqX2((0`?x=fCyp^d1bm+f9}o)dU6zpE@7HH>8Narvcv zp5h#lUV!JO!qI=sQI+cX8#UV)RYQ{6|#C5HrxZeRfL`td$96ts=pzyY^Wb2d4E zR@9{WNeN3kt6{~Q?i!)gJwsi7|LE{cb-$e#-;X3?&hP29J3iD&9&zD=Fn=e<}^y_Dx=skphc`@|Z8ho)+(_GV`FW;Lp-PfKzT|IK0RxokV zO+&+Y6kw5q69b^#bWv>Buj#3~Tu%M_?p!AN^a@oOMHUz-kEsuDmhu^xs;}zO=X$iu z8lV|)9m4V85e_=+UG5==NHM~X;`5H0`;-dp9h|d=5B^I+X|yj-U5sFGT(Wcz$GYu>#M$0R+!yoAa@AXKS-W3=;@@lCZ@&^i1pL_6gAx@NlHyJP z4c@-|jXG|Iq?pIS+IG8Fl5kHqHgu`8`0O1<29nClc;z*c*IW(<&>Tjj>9uAA+lQQG zv`0D$U5(UK&)o#+#j!9t-?JjfBDue{5B>y=^*#jL_N#+OB&l!zlBI8TOMaSC4ksEme;oLg^wj1 zovLVo*OpDv>0bs^hHp9TT7{t93O>KI9F zq=eIN>X}qxL`?eA$+XBtm(gH0p>1ES)*ZNH&A2(xc0M@K??69)$$I!Oid$-@mD24y zQRuu3^I?7rp9XGXg0R$d9wVV;$v%|pkzXzGw@0BwkE-8<;dvQhzgWkG8Rm;8UTvfo>950TR)(po0nGwh;mV zjQ3<^e2>iQ-}v+c-z(|EZ5{RIGWQG(q9NKbf6x~NV@w%Tt|xz1iht>`O1&ri>cs84 zL7`{)orpD%dEn}Z71+%=GgZAZm_55Q%QG;>62#%I>nZ?<{3*-VmcIvPq8<64gz z%~?ztsXG0%d1%JQZSC)?xc|ZWcdSb`>pxi({MsOW-+4wHF3Pf}O@a*~&u!{A!A2`b zi^(2G4B!UKW1j8CFn|)IV_>4EgBLBQWEs$u7t&LyBjx)^U1!52cT;7z<7$PWIZFRFMcDrLF0Eaz7)s`N7yqeJ_ z>w&LcwO-xGpoSIzy??O^FBzu&QMK`!xGn!L7 zH`RJp{91mdDVvxvp8Xct>?$EXmMx5kD@fiVoT1Q&^2Iq6YPo0oJ7&QbF561d#*oM5 zPv;KpFeI?;vgxtavJx^vM^Z03LP#7EQ$@1%e7J%>4o{3^sr4=5tFD-+fY}*eed9WN zb?WgwN|xFC5g6Z*%8qiLO#NRr3OPfGTFApDhpl+-T>jCEKUST-i<0Rs z+t#XTO&N(oB0xGkm0D#+^)g-6KlOgBd6W>OXA7nge zsnt5|3Vz47Ni|y&8o0VGZV)Mtl1OAppA+)PVXAsFY;eJIJZV9yAJ>eJv*^v`gR$}D z$Oqe{P{zYE*kh^IUV(dU%8Lj<+n1Hr+S?NHA=oCHP$sRZ)M>>z#yUuL1&-gx$;R%# zI>O@8X)n8G_2AlSE%(_Rdyjh6j@tkr#6WoylagtMgG>ihXgtQmg`xTZm6TV?gHrW%KZNY$=Ck0IBw7bx5VqR85Rh~ZdO4&_$m6qYu&##Xf%M;&N-zIwYBBM47 z{x+8#0lfS4{~$nKy>794-Q)R_xvYs4X3p!g{a&TL9~nb(z>ff5$5ye;Mc`ysb3Z7t z^n0n0cV$Qk0@OVUz~UTiAx(a0BFKzY+w4-8W@HyySY!V$l>UQK&o0~RSa&xpyYP68 z{~(DwX=oGZE*#eTi!P;d^{f7@ULHPWxqMe4AbpiV$#BwYV<80bYI6w3xwhao;mf#b z@aSaJEYOu_ALXc;Xqw5o@AmJnGW%Hm+V$pI-$_o7T+3_2H~%LZ3ea~P$V#F?p_bM9OEX(gHFAr3N_XB zO?K>$SSi~=hbdjB+@BG2>;?>tjDvPldx?0%wRmx+-J1`neCM)C{7Fw!TcSxmtlV5T z;l%%5Oyd4QZtOpDJJ8bydLO5#i3wbzSqC)?ZK3J!2!nRjRG>_7N9tXj%5i?3gO9s| z;m#-g;ke>=p6ad;>h_oYgzJLZ0KT`2>P+osQb@ozT$-jfX#%P4YVDa3`caCcPN-Gp zgf?&e<-M`4;AgL-xTZgby?#EnoU$Cn=bbQ!`_v9owN^p&5qUd3C&jgyS3^>cRom-w zszXD$l3c?K2J(9K{Ll-uU5@+Jt3Q zJ@Z!G1av$8D|8htn!@g$m+rjPJY*H)mi&`pe z^~f{~X#M>%STp*z^R#sBx8b?*XsU4@gvTXNZ^3`@%YBr^Chk7JIUS4`?C>K!g zcf1V0qHZN5Yy>KH#Vcn~WHP?DgS+BHxk-*}Wx6@{UYoh~F|x*4Y@`fG)?&QBK9@e( ziTG=}!Z#cW48Ckd+kl!UusSIc<$@WIXJkzNvm!mV4}(*fha8r`2Xi9ljc78sv+gMx z|Ml`Akc!t^vrwVk-sg46QBxcqZQAiCPwo0VViq_wvd}&v#5Vp!zq}07Kx+G6&<4Ey zcFX{4r&zZ42~ zw&*`RN-g=he~=sbkDOCOnVo|I z22%Ed5!@~sGYhJFVa42Mv&DKIEH{)?Ob6d>OG1M@16kJ8y@*@TS<1d-PHIWe;CCKo zZS)-_Y0H4Et5x`24NE~C2^H<~gwGXZ++%o=RRpi+8hj*2lyZ7(+;Mr0(HH_)X)Q@yyvk;uRuR2Ss!tbQ$5-6VZ`z?E^MHjBwMTj+l zO|h|^k)_*4(^ei9)=L)nc1f*vpTAWoi937Z9FinxauBSW?RHMTYGW){p4t%;35jIx z&l%$TcR&wB0)QVoBbgwUQ(8KZHIj0J!rFvC6}ZK*&$K>DF{P14cOsIknbjXhh14!D zE0~3FvL$zmfOz6x6l)f=UBt9DcF?bercH59ql5N06^_VmE8djtaurSMREM@8m_@YG z_0D&RQQg!+%G%#~C2nYGs^wI)$2sWyv1&j3xLw)tFk2>YdG~ko!_wr$#89#Fwg3nO zrS@0eVs4zk0Y=O*SJwFo6~8I{sSoKDY@`J&&@b(5xRTspvZ}wMXY&@OsaN!$KI#;( zOS3OZNcikdf=T+!%^NMcE=y_+#{WLRvdkkW96>fy9VQhk^Zc`?I*P%@E3@cCCmMvl z!jv+T`s+Z2(EK0dCW6V!G?bb_ce!-fwfld)OJ2HS)BoD#N-AhddOZ(lF^v?F7YI<$naPWYs|+YrK|3>V2LH@cXteYv<_@s+8O+b2^NY?^6nmYeQGx3zSgo~DCM zN5_aOM)Nx}>vYIw>3ob4mYiBB}wlkMqru7!SYkz5b^=-W>;X$eD z6@S(tqamsTej|wTj+OeUh6xd|I?vBNM*^jV1Q#WxKd9$Y4x8%gX ziFPY(%-@vWd8To~?Pdq;&vQIp0UkzOd2JukVuZ29KYrfk&hG$$vs-xq{WT(|pfoE0 zj({cs1;f#Z<{0PJkC3`Vg$^^<_cqvUXyGcBw^`$7Z*xh^1kawvQRssl?N7-7^A8cH z5iRmEz8ue1-ezY>44cYMdyi+M`Ly3u?_~u2KJV)HU6sX(A~gl!pKdtAa2nJP5ebo1 zTJ7o9xJPP0xsegK>V3@Dw%wjv*lDYI4TY{{j~*ZpRKvgj+OxerNAY$7Aa7=c|Eg~m zFjQcJcFLuu*-DT(6O0@g?DPO-Lru6gTk2=!U%R4z}j7Xd&_}CYPvG*V3g%KR4cYy$}RV&_Ttm)D>9@-ke)kLc?39 z6rN`5jIF=UYlrC~z*uGzg-_=y|k5`Pvp6pkDeO_fKKVZbu4>*n$l4R zJtGY0IMCRKH^LTzn_defmPIDluZFF#iux-MUgAu*){w*K6jPNazLe$c6ulWK{jCx= zvyikVqMbuTepi^$fKCC6BmEA!n1={&Euhp-b%a&{_mX!KbwCcJ8FyHxZAV zc4BnN!T&Q@YTQa@V#qTRCBvCC>Cn-wSgV1Dq@C=GDz0DYG2+qo~ zJ2FeCXJ^RbxhQ^%AKC zB|~}K(W9h5js!84g8}Q1x=`>MbLJ+O;NIpzdY%D@=WZ6TPk_~m&+ziEDe|L3xaz^% z9Ykwl8y;qEX|tNL5j-ei8(_#W0ANAPtoZb#VFiR5;6&t^8La{ zX_4`+ss=xyQlD=$)b(KG=h&!K7~EQ5PN$b?2uV)1EX? za5c96&jFED3jx=Dq*a&Ed4>VFvpdUQ%^)#C-RXo$K!jh7^LD(x4gdlpY7bZLir)Z` z;IG|w;82z*Z3e$^1t3h!GADM|H9V`LIfmjeSr7B+dN{cA@#9KrszTa4$dg@I2FIqH zq()wo(F6{&^2t4FLsczy;5z07353=x7_-2wR0*-4Z|)~7Y&)fKYrpR2LM)y%yP`aLB{ z?z{9NSF4_q!@ahxq&+^#YpLf>1foGzqJ5`mDjJZax19Z6^2HZz(=Z_cbeUTi{GRU1 z|5$DsR;)l{4#aXUDQ6RC#^(;om%36H0+)mQv{sd&jb21YvYt3C0;3U>{$@i_u-*$h zZa~}@An+?-Y8wIYulwsLpNl5~^&MOTy)U`jqx2W;*cuW-M8qT-Ytr3NcrOGqY)>sn4LQE1JJuO16S=qcuO;JlzcH{M$_GNqaky2y$ z9>!7D@C2fk0Py`7i%oCIi0%~m>8$Jp3rmZFvC1NxbAK;+$F=N7R#z8G!(`pl=_-(6 z;J@FM2XqCg?Ul+kakI7)K?KQXqqL5o4k6bW`n_D#@3c&%c`c1D|3)cRcdXIZ8yEZy zMGlfy(-4?=@(Al!Oms|*QEpoDIC%sFbCcBYy+B`6C^MGYQiBN%q(qA|Tq)0-iwfb$ z;}lyY5(9Crp44sb-JWT#?v5(8b|nw!GJEdM!!rs)0e%B&d{I{98t0{X?~^V%5k~3yF?OA=S7AGlYb;##o=De4*Tn7N4R?L|*jq z9KSZ!0XaeW<_T>9qY=&tl3#p-)VXa2!7-~y7Nzmk(>XyZGk&1GCB8g@Y)E>!QEPq= z_R!G@NnUKkzC|uWQ&(-Nckk_5_hr~oSEN7KdwV7FfqN3aQ<^IoMt~R~1aL%HXlL-- z9z|*Q)B6u>GH#`HG^y|B@CgeI;Dsi@pLJj?Sdo##hhGgIR(z29Ew`ni4CG-vaT;+; zA8qF8B0)gZl!9jR5T|L+d~;1Cd|MbYg|=?6XrMrqb*F3b5htN}8Ye+T=yhz}C;UHQ z1vhKfn73upb;^aY0d;5^pfc!!Sk4~g4{?$gPSKIWzPaS#=Drr-=YjQ&1gh3ZR3yL6 z9^u@5>aIAu@t8r*B3bPEU3S1YT`me%3 zqs@B=A;x(J7dzMWRi{}_jhC%SQ=dKSf+Hn4G+-i2{6T|eFOhw-&no1fr5Phmi+Z>v z$kD=(@THo0G=sNab(SmGSFzJ1KN{s%Wg`^lZ8T72F250*4_{QZi}bdWBp7KEn3~D@ zZJQW6HRp+!gmxFy$Lt*ZfxQ5VWH*J2e?8PZ3I=XK zMk&w5F&I*l8p{J-Su6~qxzI1r^Jw@2lf*g}n$?4HQ%dF5^}f%=7ksZ)X>5h3t2&z= zamJ!{ckTScNd2BelT2Gn|Ma$L^XIxY1&54+of6S-5jDZ`=P&0U03;``jrY13((%bNgnSNcC(RnmZb@M{~($;-r|{8VIoj#Z&bo^ zEJnIYiI<^FPTrzCad?pj+eT*{JvHp@$S(0%`P?-4csk*XL zT4M9z;Jpm3<|2goF5!t+eKrn5r1uQ|*7MHV;78eRK{=jAzSSfw_vM^+FT)1=pcXUQpDQ(JMyw%JZQr`MRq6duhptlto57H9;%F{o zLdfKfo~}XBS<^qeN|7!?p+NlbwARZ!BvIL&*NJI9IyUWf1@ypKnTm?+SSnW#RsoGEalyv&=y&s?Guv6)*4 z!zZiIMOqD1-P^hmz22fbnWpukyDl)6PZ?(a)Rfz`V;yx(dYuj2CG%lmj3EO;1Hm`d zoc!3|IbAk2gX!e1G?mFV%zKM?Z|Wu7F?8S_S-jnqs`i8z=)4d9aw_ay`HF~S#cR=G z-e;Rkpk`6g^U}Eh=+zp<@jE$L*ktmY2lP;N5Qr1J!3*19hT^C=>FHR+y6JNG?rL9cjC-LlS)sb}C_46U z=V@i#1CyVV5NLEoFHd#;u9`{uDxUPN7SEdqmUzSd0s*(jIZEk2oC)*ri0pL{;^6{8 zSGZsf)GE{3xegg}6PX4QK?;?(!c8I<*;cV}05Q?9U%n^vLM42me6X0SPIZM<2-dz`p;Ly#tyNCuh~ zEAdYPq^;(}SLoO%CMHPt`k#-{J0oRWXrG#%Kp>q%e~{ch*5*bpm)13)oqss`C+HmT z4d6P2{pX)G(c;4n1up@Gr~g!=CK^*aC${Z4t}AS6!W6+ynK8wLQI8&z)HArOQ1N#~ z+^1v+^Q1J@uSyMh#iG&EPMI`Uec8)={o^u*)?N|Zy3Dh3()p2GW61?dKgWS@>s(&L ztN^2|_52=l5^FJW{|H^ihVqLp+wydh$IH5vYFf|(D+o5?sHFld7l3gXw9)e@MwWPi zL|B$x7G4o~96_stU@B?sNafY9S+#)`GcRtPW#F59FxdD5)x-@|65LE!H5%gNMi7R& zK1WHQ8{&x4gE&4uzs@N80}=y1rRbqtJksVJQX66lKk`o{pY~N}_z#J;Wv%_x;F>qF z{|Rd_`I_=V=e74ua^;z&07zJSm6bs(Hz-C?X$@kz27?Ah7hAlC9JkYE!wp$mCc3vL z_xn!$b{$I#gs8m}Ezo_AZbY@q`XnduQ05RNGVVocoJ(SfwW;3jGi;3{AU~pLHTfV4 zPEyc6nj(A;dozJvEAX!e<}#FtHFk$kd0GxT;c`^*O|oK#0WSk(od}A0qj-#@RX$@L zCQ0>$un^_#ssQZrDgSZ7gVX3arWty*OspCs^h0L_0yiw8q#&w zkxetT0S7+ATFkprn7o`v=Cv?-#>Q%L@;u#sho47qKI@w3yQh`88i(aZ7@HhFfAz?h zxk3DOk-<){bo0x=hKZfc#%pGu`#s^*e2RYttU_G~onV<@nf6!Bc4q(XYqSFha)={| zA`~v%i^65=(JK)Zd({NoGd(|%AEduQ&@w%;P#;2mLjiU8ee;Kihl@1NS9Pq7!$YLJ5 zo*OPlh2@?8M|#jZA1<(+@nD}PD(Di-N&yKA373zSjsz823Y=wk{5E?7yNM?iBbNq; zu$GBGyz$YFQ`?4vE~Xy;SIeu(Fc;r<9>14LzRbvq32ozN%8)GJ*L2P$Op1^Ao@2wc5L(tRoo@xQrq-u*mGpt;e4(Sd~V@}rHL{I)D%f! z%H$D1%Z-y?refNGut`%$qrsVsK}W;0%Lpv(*XrAR>A!C-6A;vDls$AirrU8P*7`B< zBUweyuVyPO=HX0prN}1sTnQh+%{kH*0**<0x@6tau$(KAQK)Xz`^c~_hIXsg?E7n~ z;G{aJHwSZZ8)Owe45wl_il0Gqx~hqI0Sf@A9#fX`5jpXa}AFU$U`>CD+%U4^IG${J(0H(5D9m zQEdsV>0s+LY*P@&ip>8U$XDm!qSe7q&QQGYkkBZfVuivxqnYdU+`+KHDU&)PASY%H z7IIV0kl$oPtqpNS=`c4YC7-+gvZ!a2D4ep2s>%!_HfbRIhPoc56jm^G_^ReQ21*4t zm`y`dqG-=|Bl);k9d{{%#wlTASSr|oY+EO&ZK$URysF@-%TcMj@a4lq&|6t?}ql31JdI{0=51?uHbeq0a4k!Y?e#Y<|dS?Z&V*^{+$e&TG%D zowxn5z8csVv-(l(ihifPi|s28Gb&M|rDGC{Z(WAJ!GGtFTJy$NIt2$;PD{&JAol&N8m1Fj`zck##=hZvM*E5kV9vlUUK&GZf%TUi@VHA5A7^*2r2cvtXsHBbahr{mU4Gp4~SjM1l>k|L- zrZyXjFD1}e!nrneu{eE;5I8o_>a>*u*+Yz1VONSr^fH&SjCXi^KQl>b;ZS?sTQ5xb zrN&E7ZQb#?&l(gL)(0NeM;lh>qcU48S#yO_wqTZ2s6G72LTEFqtFoTL^==cm;l16N zK^9sQVU)puGZ(B5{+*Rmf)!8MVxP^0g2LPmGg3}!JT3%HrxYddiu_yXpM)i)I-0Vd z%BoL67phHUV z(ME?yK+6g6gr)zB4$q3HBuC<|+AOxG#VMb|qnM?J0nS6+fqH8!6`qL*{%$^3GmhwT zLHG>;s>7Fh@f$P6hg zG-GP00CBK5YHCsMe-_#tx!B7O&V&^&r#L4bh4z>qrgG8Q zmXq$InD567ADVHqtdfV&XM{j^m70!(37!qEWxfVcY>yu39a#%lqC=(}W^^<-KT@y;6hS zR0lF){s(Slbu|Fbg2);P?f`9^f_x$E+&5c{xI(5v5^V83$P4tf4QPJ*F z7#nHEz_YF%1k~nUkDon+cAnGn(M@>L^7nbDKUO4<1SsatHv=ml6SSMg;qVr66OFFe zTSKx9IfgkLVc|9T&fOE%0pN)kVX-iwl4RC0i)%3?fyF$WgcA)g=qO(AvIQM(CvKW;mB34#4KroXx8R?pZp3_hm@;^4Uqv;Uk7f-Um z{W5v{XDX{^fhsoO9jGetM*B}+xx!(6$--SG%1aO0Pdky^761yQYt6R~0o`RN+oc(+fdb%e+Hf5Nx z8%lJcaEFjFYBMAYR8y`)iL>YC$vfgiE? zCkx%7BTsa;fG+F=xwe`vK-2-D?`z77N#2#xmaX~p>h5djvp651QF3R`s=FK40hUYh z>rfF@b}(AL|*%omH!9~39DFdIKgv?Y30VmJ5&LW3r!X!lQ*{t6gN zcdh@s%8f%GBxtI4UduYAz^rE&#~P?~8md_~#tm{+(Z)qIdTk%b&==dLM?S>iwY0i7 zYf^nbS}XY8-|yYrY+cHFe=nWkn37QtX|@XI@{TkZlvTxz5W``8jzLp%XHn)R=iADt zLu{|KeUE56W&PxZJgWtlam}eUo=ow!Nlj13m~ccPJs7-4z06~aR`ugH8)#o1@iUP`vQBR*nZbDlxbntj}i$S0Mw+-*Ifay(O0VzoTK6yB`WE@=5(&}!l`{;mzX z%sDmyh@WM92zOrF1%LqUE%coc#H8WCG}!`cxx1#AhC4#Vt#DJjGcaS6vZz74ymL-2 z!y^3zFiU37ZvRDOXZiJj(Rw)$EdTyL~U$jQh z;!zQyg=H|T{*tDGFiC_V92|yho?9lpiG>SM%Kfd&$Z0j(A}T1Oppa&YQD}3E{~Z=( zLSw(HD)(YmfG0gZOKOUMzFy7Ek`5(!_}HzRDzl#~Q&7K)VEv*Ol*%4*2~OfSgei*L zijD5_j&~jK_BOP4-38C{DuH-WI$fCUx2v`@5grbBvIQ_g<1&*q!HC}RLJ=r= zhSaQcNO$xUQIyTcl<2-Ek=k7pNai+x5`n1hoiRL5dmEZa165 z+b7j{zWtX;FBrPIcbG7^30Y;YqjvDhuJR4_=Y9D1ELmGp{>*HOB`WlJ8Eo+j?Ig*d z9sK@`e=IizTlz~&O_duYtpC}h3!Lj^qJYK}f>>^`iq`6h!SilYX7co?Kw%ceuqWfC zF?*>THDByDjqPMbZ_Zf&vBj2hF>V{Tefzbf!0GP>mQTzv3I``w^^4Y4*_QMDI~0NA z?-oZ`XX1?45y+R;G-_d(%m%Wwt2PVS!a)?tEH}1EMW+LnEOWYGV~2(NbZ~54{J7^b zOMC0jfydta=UbxD_ncwzQaFW&&8+Tiq`s7i2nWxfHTRoIdjom$Oulc{$hggD+_@=1mif?gu%5(N$0ED}TM1*&$YGdzLPDG%oI|Gu(VR95Ukyv`4mp|` z(WNi3$wY56;Nh_bzF(=;8?`)I^5+q*lVnRo?d3jX=B!e=-_5mN=8Dm4BdT@{@+po)Q@}H?844Mo!f;XPt(1T2 z$zu?6s!ER4jp3I!ni$d`4D(0b{$NwFP-YN8I~IYwSIsR?eC^ zZw54={e#?iJk(z;)f`atU~?8-Wo%=B`Kqe`df&A+Sw&kJ&f!U64W%N+EbHRwnmh73 z713GE5zZm~R}U8lA45k%MEw=B?0aF4AGG{5DyKH*lAPFYJ1>E~!=R*isIoFPdlSER z;p}|O$G+c5!Iz1k+6pmB_kl65^`K5J0ftx6>*04;On=4ESB`_jyRB>1mP*|z(0JW| zphoQwIxFvm^}UIyllq;Q0J#%5hcj?vM_TFTKwQVNcq31cQ5u6oi!gR#YG!5->~ptcVx?I$32al|Z;*7I?nEHS?kQ6N%lED*ex4 zf(##_QApEp697C$EM)GL6kTMrC?#9XLW-Za8N8a?I=8l#^06<_||g`&bBX(mL9Y}i_O#sYEmKI5j`P5Yk=(r3Lkba$FHl;tRq@G8scSOZnwjYYx~-Qte5J7w zk&Pq9ISm8=zJT9wqBzyvH-FkRQunk&Ut-|oqWcv0^Io?(8k&#?kUkS4t9`1w@_(*n1u2ZlccWteS8wV}#uDoC1 zUm1=kB?J)&!Q7)&wD%wRy{qv{WldeO*I}r3iNBd5#T#7epZOxqn7$h5dA$RZV6707 zLr;#X3id2d>Iy)hD-+3*5(Cus%9eVB9a8c@IjvD;Yk2xE<3k{v4q2oFk`|D%xWY0y zS&qQQ1kv~(*IrBqQan(i?M@4VCeyOn@u0=RW|r&^K5xI|QW&FwYA~npNZ!Oe>!a zBu?_oOkX?&VfCfeV`{a0?@Cp8(TM*e z=_;<2I_jfU?{*b3G zN9y+rqE(ER;G z1!*=i5*uq;<%LSV?#j50oAhnAhZ@amd$L3B^*4ugC#A{@nZFr8?stxUj@zkr;$U=> z%Z+}8c=^ZqmBqHoH`Te(f?6ss3Z1Ct{8$=W^I;{BdQP&ACMc1rq+z`&Bo%ljvVaCH@2c6 znPTb*!6Gtf07Ob^7uhCYe0!aB%6xF*-CDcO%Ymg?Bmke$OZ zAOa=INIU6~Xk0)OoigwpPx0n%Cf9r)a6|K7AQcVd==WBwLEMm6@deA^`TO^A zOEO`8yE^qI2Wwgk5^zA{-Eur%7Nz72aS*f%qmC3%=Q9-R%oIxUCJNf-9PIKdyGTbh zy?sgAR5qr$`~?Sz+P0x%w0d6oY>z8<>TtS9lU^yyMdBQL{+n@%uD{H_n;iW2ZTIiU zrMM;~hhv%{8^Fr4gF`3F83uyf$y~|gGCk(IdI_jG5KeLh6Apbb!Y_S3O^hlV?9M&& z3m`oQiU8pQ-A~%~Drjr^3nh_n)EJhhaA#$c(Vd71o~K+lHWEls%}1;(-vm`^v>Hsf zN_DPK8?OcBXr_|>^=1M>!6P!lgb)o5S=7I{qT%QqS}u_kt60{HCX+m7LI~outz>Q| zdB)dcXt2B#fgk}{iV-Dx6X`|5K|)(yf9*p6%Je5r_l3;;U-84AvcCbbeon45xVIv?aw&DXkDWrxMOfHm19d{)0QVq!e}A(JW1yLahN95LOhO$4=#k5p54&EzMB$bm zl4}jpwUrguf_e;NU}yEP!Mn*$WP{f2iREbhi!_E4zs0(&4`;uL}S6`JL_kPVawr?|QyDGVkxF zXeDY3dTC1bO4;Gr{biLKUR3Q+_Sy04>slsiKfwSD?E8r~8qwa#soN00i(dDtrXoP7 z)Uv9L)tMw6Q(D2;r6n27uoON{doxo{%oWO4Dxe0ptY zaTfXGKPjkES)U1yDGTElhc*!0Fy2@@Q7O0l^A#4KaE6{56i{uM{@Ul28SS163o?5L~Zd4 zalXGlfPa2f5-m&ygA)-pIl4wVyauW=VVu7IypjD<+CWg7rYdnzO4FD?FS(#)5nn$O zWEO(O59N6@m*;@R#*6_%_wI^X#!RG}H6KSTQID3*QgSn0CBwG*GL+siAg9=tWkdxa z5E0E_j$KphQ2vnmvYdjY{-FalV-0XOpX$pO`ejHUXC zryBE=60q3T9N=gL2e(-7$}lf*S=vq7D*tPv%zaF`Rta)zI7!3|J@^rY7aLl0gOu;D z?pu3ipPC+AAvv15Ya(I4|LL3sJQ!KWr?dUPc_IzsK|CyDYhm{sl1!iaU+EUEemODcB7~L3Kb?cxMOP5ocAz5N{ZANN3N6# z2R(rqFqlzDWviIQ9XG&aG{-V^x~$fU--M(kwNe3$`t974>70o6+-5c;#Ylg6EY|z> z?+naIx(n=gw%#{0&bb6sLjkVfBG|W%fHkX<#rOFQWBHRrks3-^8#RM9{EM8(*S5n~ zeTk>12s6QmHaz_;G&)_4uij8vDOmONK%#j^0?o=yEse65ROR$K z{neS#CK$Wiz0J5bo4vhJD5$IYYKxj8mNd^5BTh9rxqaeIj!@vJGDT=O4Hnh-+B*te zdoy80NwB4=cOily&bQ_qx;_eZ6($@Nx^gemsoyPJWOHYwIU7RzKs6Qfi}F>fEe%?y zV&VB;FP;TkdZ*eo|J8EIFqdHeU-0!I@Z3LN=++pw*Wy1aIH~r$W~#{V!qWME>r3IB zr&+~)n@)Nw30u-1M|(bC1Fd}6p_Ld=II24H8vS;!&Ri<}*!&pBMbyT(QoE%HbjeGx zrIwzo`Z!RusjbCI_~T)1>Ti;*|9bHJ)l%tbmFe>X2@$czSO371-3_)+7jk>Xnstc~ ziJ_tZ@^JWn6cFxWx$=}4Q|ayC!M4Q`POaH@#sDKO!FNV_^*E_d`BVjzrg=mdpcq~g z7PjsY!$4{oX*fqsIcLHLm)GGMxM-v0Ypo(4D}P1g?)Ucv8zGXP^~OIP^0l%)_7MOO zUSsjU05CuuPlIV8J}XviaXXo+WrUU0^=gsm!+|mA8$_AXZ4s0sb@;AC57A`{lD0#p zHB<@J;25!Gh;0jcA{a40N~V~RWt}rl8tP8Q=pnpA62Ib8PBI-*eA-?!Imecog~xFP zLh{Ap&={Js)=>}Jg7?W9Wzm!2r?o%EeR~WV zxKWDNxc%BcC){eUZ(!eX_qjrvcf(YX>q;oVug>b~hF7PCETBf4P;lPC>piN;vU>S# zc1Yb&YNm1V4EU2X+d@zR3mbRBO(I2loig{lDcv$-x1r>H=*&sZTVI;8uz|R0`2F3z zOu0g6#;czyf9F6|q$hoeZcuw8uDdG9KbcC&%0vW5Se1YQ9`T6*4me ze_Eb1Dgy?epZ5cDL$K6)+8S$M$eAJf*9j#V;~rT3*YFCap+9{n@-xmcEf&~Tm z0!1PS?lZ2@PRjpDs9!G#_7*cfH|MZE6*v=@eN*`-T7tkUUdV>VHS=PeJ9or0e~M3T zyO4xNgbz3E#pi$P_+vVRgO?EL8#-RTSci5AD_h%`%&EqCl53&1B7C?BOZ8DTq2%xj^nnbvqd?)0q2PJ#?) z=PX?_TfT3Y!BbW{ulXY6I%GnWS#3Y?l>&jBomm+Jt0uym!1UCf=A<)bAKvee73>X? z5kXx)D`CX8=d=gedNV3jtEWJ^A8YEW1tL2;HV@tknW8u8lA&^Lvt6`QK;e?5n!dKe zl*KP5+1hXBC^vpQw$F=9ug#4{ClqZnc2B}Sy(~yLIee9N@dg(|!-PX40LVX@xMGh= z2<0o6(SN`B*qU1|!{dRa*M&Ikg)CEzY31c~*c3eP|F&_~LaML)68~aA z$=pEuaIFP_nAEu7M6=R%gJm!ZrOq4&&ihaBye#b&S-%y8`JyNCk*ofXmi;yOC|(KW8#hduq>DLW_%#I!v-Ct|ouo4Ac~+BJ zW{ZABKZ^w7FW=}R^?h9_KjX1v#*0=G#i&qarSo>;B1j4FO{(`@_St|{c5vhBxIDxP zS*&YnIkPjc#M<=t<)s%Jv*e2$H7!sYVG$kQ!TL)8KoJ`DBs+ZTxI@9WKag4Xzo?82 zaG)5|C2i)|x;*-Q=l}II$sy{#*{bP7;BjHtiK@lly!GOE=>Ad7g1*7DXRm_yw1Pa1 zDxL@W%f_<129qV@M6J;AEx{5qeX5gE&%32-rJwEC;@gQACV=BhZ!)lVcUl$O-o@A7 zhb8#@Yuq+qJx%fXKmiF||La&vZ+p*fO3_cfv_52ow&8I>AKb>>06#V~UWbLDpYsHN znrnJKj8XtlgqSUy71U@!??y}$JxX*4f6Fi%a;)h;6mrq^g*StLU6J$uY4tngXf9xyt`=rn8a=x=3 zmqW%daLeCFXu$oFgC zEd^s&tlTJaUv}y){c0mDo%q#4dxfGM`naEts_Sja66B$xs!faOq92f(K&3AFe`2+Pn+10r4DtLNWIuSh#t)KY!grPi8gE{keCj+bjz2+! zEFV^0uxdU~gP5|X3l!_%h>Wuxiw0selQXKT~QHe4l zJ|X^Z(p+-X?@CbPYl|=MJ+(qXF4ynFCbL5h6B32aa=8NBY10fyQTKOFp~#4;S+WF$z59S?if%u725^2nQ=78mlw zc6pRfKOIjzf5vW@_>7I39%~BiTTx8e#|INYAHUt+IjIUEX25LPV4TfzKtkfg_0Y;u zX2~bGixKHg-SeoMDY9YpDA?a9)hAl=s?k~3UE@(Il8$3B^7%RNieA|BhW zGovfa_%hekey2oZ{66mO->pRG%3P5^s24lw(>-ooZM1=HSQsA3Pki@2SW4f;Pg(w8 zVe_wd-jV8LZ~aajeRV$HoL{_s?cKotq{%ttCVoq9!C`;*6#$h~rC>OoA~nCYf-~Qf zS>s*rlc#HoNwrC|ZOK2O`>&5!97sl~{}w5yo93u+3LO^ptM9Bbh(O&r3OTi;A{SsC z0AhwxhXwFaKx8T*D-4ZG0?1_9rMA7Z)y;D{dpM%<(b$n`qxc3&kkX7`QRXpqA;_Va zL$^L4Hx*4?s;ANakyvGBt-uX0LZFrS2jnKp&u#BVT~$e;2KbiS?=5j4VJSV7Q z_~P~;iCV`v25Q)&*-{T27`cDrZVZMRHpOrlp``cmEz;&wqh^&6?QfHaOKjQ!v&@LQsX31o%VS+ZJ7(^lgiaJx_z>Qe2Rr^ z!ma~;%GRc$kv%Z?OW25#+hgYlptHc~o6nX=(NSPZKp#*d3husoMVmJy%1@(KC(GsU zKCw|o=U0BG&oxzHgj-ut-%bv-^%YMl&d?7}ph3(m)1*hX_+F<@d^+L5=dRC8oF>Bt zpG%ZHDW8=V5%C*Uo&&=bF*ELxi5!hGouYO{H4pE1kG%R!DwnGaQ4GwFE(WQJ4t6ud zD5kJ(1FvX&8l0SRs@WbAb9xg8ERN2z!M&qh6uW>Oo#F2O_1)f(6n*@!k2?UE50OiN zYccLzZKNHQxMn0d|K_#@C!(l<@}b}sPBm{rJ3LUfHmSG|TN#ba7GEuz1>3gqN9Z4U zz$=pkLd)_xzkBE*h}XdXubSZsIuhpAQ0C51jKK4^_h}L`f-LUo(t*v6nq`R3{|07o zbRck=@4CrjoExT@4g4X)3mI0Ve*nuf1yO{dtkhq03(PGuD#*jEk_YVCdy#?cz}3P< z&h@WE1S1sYAi?t?JamN77-$6R<=c9erzEB3+HyEIWbLCrjL7ANi5X^$W$@dRVkoB{ z<8s50T%wxm8ffOXwsH1JLNUg=&nD6zkgKkvM+cK6(x3za_#b|rW<~MrS3&UY@UMhN zjG4stTk!R1X5v{6?Ma4pM*K454YC0kg?m2Q>?McuRJR-3pHy&XzG$fr?h$ayIQjl; z(0=$@*(m%V%rfv^1^<#9gT5^a;Dtaaj}qYH6wqq0w~g>oDrBBJJg zHEFzAg=6V6nNRUKR++7OQr%_w z;dl|>POTwI)2GbQZhsgtqB;3r61=nGrak+~R&{URQ97vH{i*wP6lFhxsy=a#&8@2aW)T_suJOV|69&E)Iz*co;6?dGn_{Z6xvgaA_{ z#3MeC($r$muZ}iUQM@y2f6nb&GbA~Vnq+uCL)9P{1`(aRk&_NUpmrh7Ukvhtx~AEe z6+-Gs6_@`(#TS|-? z^46gSW$w(CV1g%IkR~}qlL}V*WI!5j9`ziLy_Ed6vnZ$Xw2>%pqS{0nK(gg2c zxr?su%LdtWd2;B&e(x-q%)>CR2Yzv82p1m24fqB2)op#8FgD&ux&bCs_Rm za^vAJZQ5%Zcoy!S^#1v5Nya!EW=b+(#08L?Q%!QY;!sy^Xb*&sen0f=?5Qm;byl_^ zAEH4NdIy&Hghj+Bi8d-UJBs*^r8%ZTgU+L}4S8zPC#uUvjmL^)qRPF8- zmsT;S>2V)XwGok(MiztX4R=A4CnUq1vcO7v2*Rw&pBZ_fKM0c@fAqrN{1k)5G@H-L z$nNcpH1%ow$R{g>_>wE&l=;w}arsM`%-5Ux@vXN{n~v`EM&ZC%Fe5TnNO<09UwfOh z&^jvE+NIs|TXBHS;sUd6{ONg^3GUB5&&1n`b^V|7{nv}v5J-4(73Af6vC|(_*LHzn z4{uL*@0B6%OW)p=R>GqZ;t53Du1-+o>vPHv(4`RoqCz0WfS9RN28;S3q{AkF;EpNP zCqre`KhSxd(ZA}O1vLyaM>TUglfPbSR{H02bZ6GNeBGpOzfFm>ceU;E z!iuWw^@SHSjvw6W)P*~guH4=PgmfHMdlT*PGviG1W5$B9B$rCEt;+#e&L zn#D#&rP@vMZ+>oc6r*O+TC*>{U|0I%QS8P1hDv01BQ)MHMR|X^6>+s-ZlugRiWhW*r*gBbSwDR>&D z3|`U|UKl}gt*j)Jk_0uA4O8P2SNX_`mMBJo4Bb?Dnb=AiUYl>^JygqgTd1qU&y#QU z=+~O(d)C#cV-xG+L5`IT;~FMig2QIznRbIYSKTz53xyr?owiP*>asAu!7`CO*ekwn z)8!IC=HtM{J!3gmLPlHRqx{*S&3j{6#6+bcH;K7LyeI~+U_oVk{pB?Cu#4OSTBn-x zXPo1))lCk`GNQILv)WdD>qNtpWY0pFnY^|PCNZq23$nQT1w|t`DO(CP-mpH$F6|ko zbrXP~RPQ-QS2gRZc!k8B^yy?NBHm=ixD*LuC|)R;(I5K~3kEDbOa&=}ZFoGj=ig)~P@lCIXgc+oZsCz9^H#Ms0cl594e%c z9-^7&)sMb)oc!w4r~M6s3(*XGClh5$McL?So2E07aQ67C9&D`Dr0D+c70ck+SsRCx&$YKPBm|-+lcu8ALARau%SPkMq#ULuDpTcH%3lksIP=ixNX&;Yu@jOkg0%7R4 z$)UNG71C+Rn?BsHHN;(R2}iLb$DJKVJ{BMsRCa1-t8?7}ia6|U-HIK@r7kU(;Dfev zBNR+qBbbV5xtgh4$wG44XIiWWc0TMh|9qYm*SS8?zU&)Irm959uZC)Nx|11^mvpnJ zJA(ejoI0#P)m8bUvY#&8&vDkMf(i?Wgj+;2Fim+u7}16cP&^BUrdyf`f!88_Sz{!2 zEI~Dgp@du|1RR=K>$D5H>1{h^@YLe})Ul3Z|4Fv<8!iY$P%5aC^zw}b!f9;>F}P4) z@%xN;!`FV}61UEA)U^KROrVHtS*6@);Nq0~Yp{x6gRI)dinA#h0wSYNJ)~cjHe=X% zR_CW3g1QY7z87@LD`^ejIgZRdYz#I*2@VsVY)NkoPNnPBqb?#}PPwy_v4UFCAD4gL zy?WDdG5uTtI&wsszm4owy`_k{1s3z(2Q=Rqd(MH9cxfXZwuoq6BRo+2oG;Oe%wj0~?`MQue`!5Wx za@4hdj)N76$nT%mC5%DrT%>#YUZ8G(yd6#v3W5F))wRW3RpJt8Ih4X+yGDl$-u8E} z4K^1c7>n=vQoT}CE(;qb{j)3B0Bhp9kk~Jb59iI+p0JXZvTQQ4R0{I>YOzayOCN3# z1(B0`A#~}z$)pTCxdiZC;OBD`8;=hS8=FwhaYM@U-=&Zqt10Z9bjGK>#6aNDEc0|B zy{*d1;eu-vrKz>RkPPNct6J&7<^W+K{PxAO@M9E$6-&n~pU}RHz>i(U@j|y;VG>$5 zpB2FR;l;}22z%qCnnNWX$zK_hJV{<8{Tf4(ZeBWwf}g0J@n3<)NrWhJ!iXYTxT&{@f_B_hQVV}|Kr4u3F~t= zv{QH-00YFym^zO{&8}lchcRg13WxCP{MT4KuYH^uhf{Pj>kG|L{r1Ln(fgBe11Va{ zl~Uh&;P9vTHBKmSc}QDw?oejCEq78iTTrZIDQSA|2pD&`_IU?CwD0f!BOC=b1sxO? z;YL>RQS(JviI9Rs=#%>o(UMKZ#3w)^^ZK+|3`ZHkT0c6o;v;fO6zxycaBbVmCQ6vW zUuh!G_|3^<_=ZeBMSRbumt}Y3_M@EH_HY(7#k7#hn}|JIxlhICbkWqVUMr3^N)HHP(BG7L+S-MU?PNclTI8+3 zVyX=hM%pTW5)NJAFB;TuoA39tvq`cQi2Fs-(;mps(<-fH_S#DI*V-Xp_)zDHYG*HV z{7a(bHbC4KfWvAIPb5H^%8AQlK4C%cIYX3Q8m`MFr`q3I#OqqHhTvAJKI(IIM& zW|te1Rv^V64s6zTu-_#a9YEMjv}c!27Kv;=bQy99>K!(DTm=uBhVxQ!4c?%22=*_* zHI=%ms8a{YMeJD5{qkh7eXHWJ?*(;&>Dk^?RE75>L)VyTuzgr1i z+CWe44yxtwS4skHuJNZ~zd$(}FO>qbPp%DHHRzRr+m54A0b^fTs6GA(jdoTwaRAIq z0HM%~;S#-g3b^Vwt9>qxYP7iZ%-WAOun+Eeyb;%pwLVG$wQ3idK>~Z3GFNJmcT?X!1EG>_JY{?Go4*)P zi#|8kcH92#Wrg}q2jNy;o9Z4@Um43tiHs56UKq*G?dc%Z+nK+Q##4}p)euAsXTUd< zM8p`4C`I*?YnniGj_LT%9W6pj@_Kk-nBZKJv-w9R*J*n($+Mtz_fpqHM!QbNne|#7&M zoaK14JPj1Cb>&>G^R-IeMpQ(||Mn#Lg*2XaL;N3FXZQoJAWXMvt>G&h{v$9k2i}OG4yz-8)3#VG|dhek-MyuoP ziCi&L0E7;*8eV9vRVA9l6N2+l?9gT-n}E9DxF%QcP|_d&lN&814ocNE-ayF+?MY7e zaq=T2eVr843@zMs3r$K%ikfVYIEI{Diixjk?rAVB4k`2VUlR+i!bw>7Ii3eKPzb%g zs>6PoyzTi#jjhUl(g3+*p#2TPBpe!CB&Xrv$ zWObKHDO(&$f+svu1gg5&Vb0sNO>?Mes`y@Fhy|I({4&6D#AQ+PJ%aKtXe*cez;X{F zI-v|(vM`F33zNgl20^PnKLs!E1a$#}tf3QAHjWmET#Qv=J>ga=ju#Jxoa97=Wq~HR z-(~(gqmJJLysM8vC!pNG#xSc_ZFd$e^H0LwN zeZxOeTRmqZNmeZi59f+ol8vg&*o#lah1^RmI+Apn`z5^>Mc)?68-K~Ns_itB0El?- zyD$YeUXJ<(S(YxtQAXY|Sdn=-$e?uO=<9r>7Mk*?cyaB9t>+x8UC_u*y5NpW@I#sj zBGkfIrTyD_R>C2C)|)C8UH^{{WBJQB!y-i1$tCY4^deBiK8 zw&uDG`#xjU$Q_p+D{~-Hc@~8u8jw3(XQ-vFW$DaJs2rF*Yb%9w$ET9zou5ho&^HUf z!JsnXn6~@I=FX@hH&8jQqbgI7_M0s=e6J(8otW|_^trA!D>c2lh^aN%V3=qDE$;m4 zXQJ#S0uTwBp`NgyTyVB3evWtbAr8sS%@*IyJ*B~b%|trEj;UUQbn|f{*r!kbox>{* z0AaSYi*bZvWG|v>SQpH_L1x#3R<#cLEzDNeCM^~Co`ZyPGW$C5X)H0X`>U{ne#pYh zk+Vobr+C$Kv;E%nL_&L&b4uK3%2-JwOJ z9fMN!K90?*tGbOOQ#VCb;S_NIT3$SyqJAJ6l5`n>F)JHn2Lc8#bVGLFxm)uIAa~!` zDH5W{6DF|a_p}jfOV%O9ou{51IyNG*zOi7?2&ROe+akE`r+b|hI%D{}eMGsLcvw08 z|IAne;?85hki&zqk^W`&YbKGp9&}&o3sAyUGuT9BJr`}EHW!gZFRIetwE(x1DIs?l zhZ`%l;PcS4#|1ZOe$EL{f(pu(ongXSF^fmPoK#9nod)_oBrm~2VwNzJDBA6hVIlM8 z4k#=@-d=ORtC?z3KJ^da<6BLZo^M8ka60^3&HLSXj8;?9U`hz-jC4vOH9zC3Enu(* zYLLSkI37(*4i38&Is-}P=DgC`932qvy3oCaSkTAUCp72hgX@y>_t&-t0#d^Y^dAvB z;XhAKqLkr_BL?QET35?s)_FH`bz|18de+vtg#fHzG(uY5LCX@9{s2Xo2JB6j6GmH? z42@ivqB{>6ZEzPzmrrNTE3q&vrHNVtBO5lG z+H_^yWyuDUR+seRc|nxk_}VfffQdcmV_6ao9uif3KE{k>DTNsIG(WkK)KKMQsPxia zI`TNw>&dJH*2s(d>W z+e?-&5M%)Sg}RZ+sOc~Q0rqa}0<}#f+>F4-PYedd3_rAZqbJo=w9Ev9tok=8)lTF%dy6s~@9qgrZ&A8(dmtYv4Vpg5Q`Gfr!F`jq9zUXuM~AqLt6fGyxLLP&~z{G}D z{j+>a5U!dZ%|HU41_qeOsnVawDsfvUCaROku9`{`jO#09JiDU=e*-1lAhYG^uR1;O zpwRiFqr&Sk7#FWjTgeSYPlw}C!}~0QcpF+hr&o@Jw049<&ldBJGgWn90%#KoOJ=jm zvGG`7Bh7J-g49*oO&hCnH~D%1YNt7XZcmVI-nUJmLF z#{|afN*VHrD~9sU#!DLbf^~#u1v%6!bhq6D1p-?Z3grvVKS?gk*YQ#lJkdD&+Qip* zz8Gzx0DvdA>s%`iEwg`KAc8)!U5kA7EXZZQg}cX(D61ijsrfi@pdd)(Vs!?R4gzrZ zt?z30oy5wyH{h~)6_a8-Fc z1o)UNXxCKESamcjq>U>pb_=>~q_cgcD!Dgw`J?S*5A@V_h*1BeqwiPD(ZBPdPy)xG zzW87s;2`jEV3S`eA<%`2$Izj3sZ!_8iy%`@sB6Z+XL2fpjTu4XePfjWfZQZ14U?{F z0eBAGp!y}=?5Cj~pP9H5m?WtzuC)TMv2ymM;YDbcp<43!*>=d3C3@|kbC*LQr{jk2 z*l`tZ%#7!#WpEB?_U+0y#mhF)`+{H}W9)l)Je-oSbetxPKaV3nR-Q3Ga+QucEm+T^ zuz%H;-Z#;>Zq;U{6t8j{0I-S@QRAP<-JZ$da2hiZ+az)mJ6XsRH|hIyb^or{*8Z_X zkoqm8UHVFI{MR{lgq|u)@lL?5mzpDw9aVnk_RXv*cmqBa~NvS z*86YM6M{-qg?QuuT^tYZ4XhWV~2`mv;TWNVTJne zx_aeEJ?Qend$ygC`IfALi(b5SNOWbv{wyD=4`z(tEijPUCB5CoT0Jl#K9Z zcMY1zeo1M6Ng zQYN2uYl$yq);>hzZX{MAt&NK#SRgQl8g0mWu$iIR`l5vjb;kOkxGKjgPWZOOf2SZP zin+y9k^Hib1D32vQT+`#b;FjN&cQK1Qc9utQ$?AOTUn!@pF;B!^UH|q2jo6OQs?P@ zL^*d`xIV*=uD+9rvfoz59-=)aw5y$l z&C-hlRgg@n!fq#zFS3LDxqefb?9G8-K|K1{>sB$ z@B*rT%#oNY00SKW6;r}IsklkVWLp6x07H>~q1w(T9{il9Snrf#WZczcI%Mre%Qp1Z z5YR;~b=mQ}HBQ=C!Yg`t!Mdj8!)%r@t;pXbxx^k<&5yg_X>_-uM=H53HJCRT^q#M% z>&wY&D=4_hr?_Ek9-FZYKD@wF-8EMt2@@I|3Gvxal}^$zRz{t+MvSCTGsM~AcZzc5 zsJqcee5^!q{Vka2tdDgqjJ*P+<9hDloEk;wGOfSx{R&f${haZ zXE6q>@bsk!3?`kCt_JWL)EgBLV{9;`MaU;<2&%aW<-|n2F0!~)Ql3re>RdA3S$@Qb zYn+k+kJ?@y&jrPWi9^ZL25~UiPoUy#O_hsgy>~LtzHmMYC*u^#mhYm(#>c_!1 zEdWJyI8L1RdSOzWu&0VfvuJ!Ahw&XD!n}0Zi&=Qkq@#wo3p3(i2o#Njp?ZyANd`XI zVYAW>#t);oX zc7-+3HTqEWR3-25pAzg1yC|cj+lar>5@gA)@H9coaK;_umeI7yhX{`4XH@D}-4*a0 zx~t{SK3y>6aBhsGKd9h!GCJ^rmuq%X15wQRV9+hL3br$wuDVlId{~LjiF4Xu>TOUp zHGQw~4`MOu@|E7&F&Ok25*6;QVYtb^8|9<-UxjHGu@jb926Uo2R?{M){^X`ssAxRu7#&Mss( zW~ps99#E~VUCcDSVxCGL5Lb zuoNA+ZKW}0Jp>)ndeeQAS__T0>YUQYm575j|Co!vv{_cN?(DUBK0!_!cM2{Pz6G#U zGS_X?_5(=<7Ox|5YC~23~M`yct8;S~oOd&=>7fLx$sbJOW5mUsEI}~rK z1lY@dR4dZ;tg>rU4N7-i#bTG$zwQKsElt0fIcR!9vQn-tgyXl95nwt?YfuXw$Upyf zWDL7!o=vIEXHNrSVdWvIA5-GYwT$S~t2I6T`385eO4!(?5htogG5-O%F;uHn9rcf$ zLOt3(Yj9#E@N*D$GW#`}OiPClQyU;D2dBmqD<+H=@mxu8@ zfr{VOLJYoLwp?&_4*n2>xrc}|hHCZJQK##1vL*`t{-q)PS8~(MuKM2|xfju|MgHa( zPG(dB?`&p5=Dz;uvp;+qJqpY4V%s(Ef)n>o>w-3S2N8kDPN&uFD~o(;w)ZqT@AB`x z;b{ly$x~Uh{I3gAR=>dAuE6y_KVkA9RzxY}K_h1+fe9_inH9IER63M}+fgrk+^T;>G~`CT@0KX~}>4wyC{3HX>oEeflc0$__uQwWlh7zxa{ zTMewC z>278xZ)A3CtPivk{um^wt+rE&=JLCvy|f&ie-*)x#VbOxZ|TE4tYzNh+Ovhx_#RZy z=_>w-KB0AUz@3+cFh+r*NlKGK4gH)J-fi=6cEUy})yA=3n~9n8O3>DkeQM&QsS!$G z)6V}YbLnO1fveIzCf^ym!1VVOf>E7})^W}v-XiD3Fdb;7| zVLqN})d+O-1IMFdWa)Z4@JXMLTFMBisoDby%Yt)>qFt*m^pBM~&c4p0*P|C*mRG=f z-I@y*r&1iHxRT`$$}3AVkT9)1`0xzle%pSZ5<3X*F#4?tEyS8g8yxmz#fT>*>#p0E zK2G)~aR3t=92xp1j;dJ@+L|lMM6WPLFzcFm0HT>lHP zF{mCEo<8-JWqbCO>b-6V9Pig_{ptDX{g=t<-GA8R{cwZ;zP~T?4jz3#@B|C=15O+o zLqyO1*@AL5_*;*r|9mGuKWUG!oyi!9m9Rusbf51&a~L@(JZ&mjE+U1mKFn>$A_hmt z1`lp#oVS>@G_ghM4Wq1nm~K#+R3k|WamDkf6Z=?dk!o>xN?$j<(}x7VH1mR(>*C1GW9;ECqhK=8OpT?u|4je zCO3Z`lC|wh5p$$)qmdf!U!6MrJ>|A+wvq%ta6H+eL5BV$lJ{KPmy*H$f@c;Hy;D3i zEcK7sCFRq%SGFDm7|73)5T?`LS1FQISEI4bBbU?&_$i1g4eQnPHcW=p<-xEDT&tPj zw4{usU^3;dD5$A8=Ub+1W)A#Xy}uumudl@Mq?WbF@@T*ieuOGt$V09{&L>^ST-~l1 zjnOM}WT_ep%40QXlW*>1Fi9C3G)<6;(qMi%L^f{#zUVj>lPd<)AL84=uDTZUEs0A2 zzFLUread%4R)nvBIy`SK@;ohS!YN4lBX^o+#7zQ!f7OxbpuwodIO!`HyGzxrZFYG> zJeE-4g4?fS5(E>Y6-A=uUCt{p?}F(2&aq{%iz@(B{ZCK@eq;ukEH6Gy&RG@dw(ymO ztzfV2d5LeuJqb8?C;axW7AtbNO0%G%yRBg+oa-!#WAj`?QT80)c`*x?g+zm?p=;Y= z)o4BYQTJX%+la1Q%dTlKyR%F-Vb-7zERSoH$e-6Ruz^_> zW?H#|)r*=HS`~#LfZ-a;bgU1t!-sNe&v_{WlFUrx#j#2Z%#z?6XIuLfUh^!TdgG{4 zU@I3cn+PEwOCW!;o|oRk5`GzpR%V_cM?r*e8;>y($z7g?m`@T7c4KX^TtcNG*Z$z; z+?`MD<-rSHTCFnR>%+y22gzCCQ<2*i`&sQjSj&qaN>OFYxU5=^YCk0p%>Nc0>zVxl z7Tukdawty3-pz5l)rA!Nz_rS%ZOf1Ti}ScyGFsuJiyJJcBa{XWSuz4C`5=dbQ~hjh zsXIm*`&^wik>b`i{j2rsn}JbLaJ?qE*qXYmV-x1BpfKSo^4;e^KQdP$04MP z-hvclvhvI6+#R)SFgZ$wo$w7Neh$a@>-D#fz{Pu*$C2*okmvsIT0L~L`#F2>9JKCUFp)EPs1d{iH(ytE|OW*s#IogUfwQB*^T z=zSb04FkeN-It_X)iQ|*&W&0pr&s5lp^`wIp}@!IjzC)gV4}ea(zv`$st+ZYLr(Oo z{K}a?vQnaqbn#G5au|c>nq;`!zZKiHU$OQ`kvckpXSj1B8&Q0^&trYA5s1PE#*QYq zQ=MmxHfwsD*Pn)a_Hlv9>lGQ_)V2Hn+$K_9vsK#nHqO}$nI@*0G`)tBvZrFvQ7=S- zXE(JI=J3=tR?jq}IcTyzKmDvet2KyJ8>z@~Q7JojMn!V`J!eg`36v-(PnDb``PJeB zlMU`WaiS0e<^3fra3ajKCkiFv9d~>%llUquO)-Z^i52hk;;_ygOb8lH9jO{_&ouAe()a5?{=-mFgmC$ zCfGNA7yX0E837jungj*vnuQ*ljd>?ze$iwUo$)C=2iIzaHol1{+zT2&UCm+&meP=`P)aYDy8TNwZIR^ttG>v>8O5OSbgRD z_`!?Qc-wY@iU+^8J1S21o=SbGZIB~0FLltd8^&$(x^ia_QZy=5wp9*2Vks`D-0$mT zlRqbWMt$Y2SHb1B0OIKW)bkR^wvdR*BmW;sXTjEH({174?o!;{wYa;xOK}KNoZ`hx zf)sZPR@_~RTX2Ws?og~~%i;abFUXT??rYEN*=yGN>9O&bZqrh6TEr%0$)PNJGj-Uz z`sh;t=;&qG(%5VQ5g>{Ei6R8?Lwv}%7#5-rd_s4o!AHXsH>R(R8o;#-$nf)RQ{lX) zlhLf0uwq70t`x2)iap5TmxUMpH@ayV{lEW;#7(YVx-v*9p*!KWwV&-Q9nZ|E5wjyH zDlTa|b}1cef)P!iM5Wan@$ai?I>H8fZ80A~y_Xq&kHM4iJe|guk=z5r(F$HTtJGnk zYxYl$LbB6F9>2{e;;(iZQkRlndYFe1XBYsVNJ{EZ@(X6Vul@ zn5Z}n0&#mJumRUF2^m}J-*xhaA_w2WAK%N$&3wZkvSi_STb8=pJ zd>1t|xTTlI`{TPEKWZPuf1aFuQe*gQ$*WB2o^RUq)px0a%YsHo+WnaoK;gJxjVLP} zM}F~5|A+SZrx`6^RKXp#J^7K;dhXX73(m8OF(TSkxc2Y7r}MZc;`+(=1Ww~GVa#M8+y=4kL>xc;JzYld;_BIWna@H?bg0=G|uSTIsbP{+5 zSr2bVuP6Jyi5zlwA*zTQ+d|YZjiFSc+^XAm=*R`q-(dFBaOoswwBaQaaBb>kYKFuUvn61-hp zp|+D8>hYRolNdUpwrpF4UganzTj3;w9KG!Y9WgwVr|Gj3+lZr2(_WssoqP5dgRgG0 z3-o-0c~BAS3k6HRqldfO@{o61V+Lfy@PGJO7NKqLPLQ3nu0?~dp3+Px$iiBYw1bIX>MfUPT8Z(vud z^J6exaU6$?sJNY-LnDnXZI%A#g#ebH1j{Dr9jUBK6$-j}-&7Vx!>qI|uBkipd>g)6 zNimD)Vk6vnD&eEr!`gv*oOjVmN@E!_bvazFHgbLtyGgI7r=IQ;kljj}nsD$}s6`GfL$L}&rV_bS-^FIu|>Sd}w&dKdJzauC6Gpab* zP%9ft#VsC8Vhv<7$1UfTKYtH>ASnfIMA7>l6bbSLRJ5rTFYr`<&DzzPyJm^o*pc zuQUAdKUH!1HuOc&Yu^3{&dTVviLc{E%i&tOpX6L~amDz=TQf60y%l$&f>h6IK5R_L zh?6!ZaUzohl%)D@UE5ZQN(cwx~;VP?EQb3nAocHXL zl*-7|>Z5F@Z}?B%0n?pfI-B`P55$Q|Y)1yjFNI8Lms#X$q4ONdAp`EHA{YF1`tV7| zl0T4sMzYdCYgTmw{ysCZWaGp{_Y4xEqQO?g>GdY?|hj zDka22A>1+C8kZNRcD3+zaTQUd}Y0X(d zf@dQ1vCTtbsQD9u8IH|QTyK`dUr8fbC2qQGFgH>eN2QUr>gBw$^~j#?cK_3%kHjPF zYiVY4`rkO7kbo^l-y2p-S?Bi=YbFD*{9CH8p)j8ek6W6Z4m$w_TmA=rOg1f&VRarX z;reshf9#zuWSl@tm@nE#H#Z;N_(hTtQg~xD7QFeL@NUJ_yQZN~peFL)VyhX&WVmH{r^|E(b4qu# zKWwmKG#oIv*DK8hQ?Nf9TAuEq#$$&nO5OW0 z<@Pz%e~@EIj9an*4^HSZ@7b&4>v>TT{|wX@uB%&iujUh!F7f`c*p6brqG_K5A_=BV zIob_UgTErZ*dOh}I=~<5!H6#0hYBb_W-Z0+bkQ1R@dh)?saf$$RxWkvxg-Kiov2kA zikd3evKi;uJew}fS>YWQ$F;;-Gc!#~V-y{+ z#{kp-*!O3x0@$P13tt1Qs*B?>Gxl3Dhx!u7G*2n$5~D-~b#Xucy)R-6Gp zB$|~tPf7;)XBz;9ZURvfZ@Ujco*C7nWA1oC={1?JY`uZ%bL_SnZnSEZx=^9?ZJq>2 zDqJ{188TaPY>cH!L?iA%KTBiLFY3V*MGF0u*Ls{EWYLV4`^p;N$?CWOppo}~8|xf0 z;;NBGwr_x&E3m@M^3)tZ(Ma`zJ8rD3)M2qj$=C0|0W3m^7r$bxWz1@;1#N%uPAVrh zrdRia5=47N{o1Q-#tlxMIZnyFmAONh{b{#9rHoB%JRS*If|C_aPjLToAq*4}K529^ zfdjyVfO3xAz0xCiTJlj7#x4A}jsV;7^1QPCUKEhFs$F`DZ?7sG@kdEb=pz%5#TnnC zm%e7s?yQC5&E$No%nm*FjgRj(%iTaq97)~Dw9t%83903PRlO4bq)L15Ggs5^jHz!f zvPFvkRdHuwk%it!3mjP@5;6=}fKs6-saI> zqtO%ieJ+^+``E}3pSsD)QAqE~8yretHK;C!#9<{M%)+7if%(iXn%)VNNf$z`f`-67 zv~q)Pg>OZKx|3BbGTpE!J!5D%sHW{iBaQt+QFD#^L|YX3}w~MlTG$! zhYkdB;IH{_-^&YN0RY?(Y(@%d#h8DHN_e<}?Q0Vllu}FK`Hf%z7%cC~}kE z(_cCRHlFZ`vEhcXeXKr45fP1!CSo5~IH@h@5Bn^o8r?<^C;(cSwH>)n*+)8>?zkzb zQCfMNi|HKUB=aJQeM@Hx_ahRnFXm?eGE5 zNJw1T-MG*g<6DYzm!}-q>*vhR6h@{PLxYLjG!^O$3mw5emf|o=WY4s*ML9R5Ng zLY!!YGKIk~m3_I>mp_!bt69SL0DuJ*Es?`f`NJPG0{5c$PBGwjB^?IEO_hmLf_0X5 z)$hF#zb>v5Ihgh}4RbtMZXaD5ZpjWkjlxEX8hCg=q32WKOs+XZj)IV;Zy&Tueqr-P$VDF$3*UGuHuD z^^zi_I(zy}X&oUe_DO4IkOg}%pX!k8bAz|DPFme_OZITI(+LCn(jw=G6QP8q} z&J0cr*2ZS0aJ|t=N2nz{IZwqFQH53g7!=;@E61;q&KFASSKnR=Ozec)q35KuWdG2f zT)QA&(in6AAc1RlGG}P%jb?n2t>gEUQfXP=EbNM!)fnFTb#k$DwviCflHwVT-m^49 z5fh4+%=>ctQbV~R5~zUl!R5-{;O;KhcCp49>kAJbX}^^I2(dD@p!Ql<2x@=uv?`nv9@8GV}Bw za$~3rT81;E83ArU;Hf+?#+;x}L3&E;tS_&uygVh>*9GVr1LM`9A}PAfUstKGbtGdw z#N&rY$)~a!|C_RPVhxjY{|xt{Jj`XQ0*J^!UF_B2UmG1`q}OZa;&nwd%)L_g$9v6Q?*s_$M`{T=ZfD^bk2be$Ad@Y4w$cw9tRO2m=Mf>?No~;6aJ;lt?+wtUrBwrEX11} zWEhY}6YP=0_{b7Xg5$|W6j4ka7OR?M+iQ%;W3$TC>qa=(?vGX|dW$o#QkUPULRy%n z@*i^J@udt}8hEb$zx_^GXn|+u`erhcF5PE+DWxYyrOW}7_V!sjd_G)4>_3CIa~ded z4JcL`b=V`D5r_@Jx)Xn&R(fl=R*Ckw4>{dGTk14&sUbD4?1FrJxl(c2smqit+f!b( zi49x$V_!dSp^h+4+=qTw+R5@_lxx z=}bdZBCyD@6-*NzIJ&*PZEUnOe30jkRZIQV5>)!0^cGfcBc3xqN;WPqZR2^;@~{Lh z`!xb&|fLS(Yvm@foMf z*n<;Q-lR#z4KGnl>x@-j3FRG>(hWFWTCk=F$=NJ=&{;K1r7H#^8CBIwk~iWn7@yK<=-XZ$G>GPi9Z5 z^LpM0DV@k-lo;Y$$-XeoIH8~BqfVoUzUn#4dgTYn&^;X&l_M#^4E9FHUFSyB&GJ=K8(?n>HUDX6Em-h4botTv`rDPqKJA4 zvVfX5ZTf8SB1vY2!!ue2sWk`dgfS0)z@4ilPpSnyUmC9(QZXRXrKJ@((tP>o?z*~K zH6ev;_6!5S=F0rFU@gffH(U+Mr74W9S7boYs~Wje!~FxT@79zso9#$Yg%JV|%_{90 zUeuj_r=FPBrPO>tZ=*ZIocV#{%zzV_O6Rb1Tqst@V=JczR|Kl<&O)Ua?s7=)fcjiB z<4xW!W_h(5X)H-|)qlEN1ORApan)*h7;uT!*(?CQ$D$dc%Q~6!mcLIgZMnv)5ha}p z{YGp*-yzpEj+6iM1aG zHIol@HW;Bua6^7tK(@rzKyW;7`>`-sVmR6lg~$xKL3Q!u;R;rSkLR1Rv2ml`N6a-?a-zi|;pCdKV`9ozy%j%^4+yVWfxudV&Dd%qBsE;lY z%Iic@^QLzBKbGI(^;PC)t9o+Q3KehKwS_cQxDZFUO^L_h*P@>md$JcF$*y zIrn7z*UcVY=+OI{2x8LUAPcJofSuiuVxFbV5UjQ2IQ5;|Ct@2=euYj{GEK0oKPXXi zzsrA;<)WRiL!Xe~mPv30?Quh=eCj>5wkKto$6#!nrBt|ShJ_GB&CU?a82TG}{$QcU=1 zFr4LQt4Ww!{wGEV?Z_#ih}A!!eN}kU*f^?DE72_aq^WYNouqd5ZAzk8PXF<-u6#AX zU-W@xAXb|Pr~+Vh&;`Kof3zAFMb%!gcJ0EgTe!XDc3@Dl!$p&7Cm(*=cQa|eK~s@sRbvcbl&K%&uvr}UTVp+DeM_{J5)!?ZH|L|{|MlX&wOcC2~Wd* zs3=1b70UH)0KTv()SwRJ>bEP&Oeo$(kNBGZs=B0fD_dE(24&%$mhafnb87TF)WToC zNdSJx!cgI^`sB=oA`DelrMojyz}7K(8?d zCNhoq{2y}Actl)%4btxc9^POQW!q?Tf>bl<_bRuVM9Xq_$L?-qu3|%(ybbgX?Nmf) z(8gIwGw@?ZzUOr$5;iR{OjrmOCBRENrY$!22-mBaK%%Gj{-d00Yx%VK-IaBX$BNW$ z!!{@AvfJXzk-PVnDq{!|Ems1dF_hzuic#*!YbdA?l1*! z(4a~*5E)CKU@LC`tmJ>2spN=H$D%AK@`Ht|NALK$e_XIn{TsRTQks!VuDN%Kp)QK2 z;Jz>G;6z=PT<;()52-FiV9)Q&1cpi)_)T~eZ+7nL!BC$4)frdeEg z>%Y^f`&mZ-q85t|ZSv z0~n47-83ou4#jF+Q8&PqT+6pe1@fTPGcqJLNiD3Q3Wffly{n%xAO<65VT(9q;g`aneCOw(KmV(WE%5)FIm|O5uKi6*(L_Nur z=t~e7Ip#O&(Dq;^>12q4%7iiX(Dq-1+3#f?cm5bS$E&iCNoiz{&S#S3jPE`gqJh>Y zqC(EG=dW!!0XweD8Vf>^=wW%_JPo3EvsxTtce;CKOq@pyGUmX)pX=(6N$PJfC?mk; z6OPx^{~kSZK%`hO_|3v57sd!-ol^9E7Um^z26$w#{v`);d{{v000Je zX?5+n&?>3=%4J8RL^O0b&;H%?ozb|rPUSRuLr&Hg3Z<{d>@5QSoZgh<=jY!-6I=VA zL>@RN;(rR>^~_%l(NS5VT*wX=Knk@MMD#*uSA3Pp9M2h3^rIul@eZ^B007@GZmc%C zZ0RTXZ7G|6J*(%t=H=X0P@+(q41X9M5}h>kF9GE zp3rTLZ+sr-eH@54^ocE`C!FZyqMsRmdoXeZW@jTAQ*uHxp&Zq?Pc2igoq;}@N4G$P z+D<`jII;Au`O?lOVN0b-zUq&ETD;!`PE?*rS-m}uSj>FJUO4NFdg60qTb0M#8`oM! ze5Lc*_y7p-o7V9@D<~LqvCRx2*P}aW-Y|yM{4D*=cXmovoD$B)(F+xJA|n}FboL|Q%UFIA+3X9%TmER)JY0~~B+G~m z&g4p}Z*rM)XOa@kRV`m>`ARtIdyhrT=R;E`84cY#o;nT2jb#nqO5HtjLK38+^3^~( zroIfPFZ@D&*6MBF-oqZTzVRW4U-0plA}to0F@Q>@JC~fXTtY;`M7QD<2tOw2k3D7u z3=J$b)>d2?`unifDRRtw<*nCfmaIg|jF#)=!0)7Eo)u5a?|G`Bw(|4&zZ+n_X(db; zd|YR;0~9?USM}2`J^FIky5)3@K7eBYB3Hgv|x1^OM;3d@^Shh zp%H=m`q{r<@I5f7&+c#w@ZZ&VcN8m8Qm0v_p@S&{@wtx+v5k-;7W^uY)r0{WF_YA% z6g454B98qr6dQK*}?~300{BdkfIDaEDCb?I$GbFkH^!c zc@O8n=MYxC?CRfpjT;G7krht$3elYev8Q9mbxS4u6%CNcfnt^hWDr6_TO0zz>HCri zVyPlht?;0SV5^~~|FSP~%qWKr1*CRAIjQ_al=MVQQ)^5+oWFJ{snx!A9)BgE^CTzP zw~smC&WnC>LyJW5GD1UTKO@k0@CKE8Ra33m#;2oo+tui&QU>9-Qx}G%X@Z2hqR24V zq4+#FL(Fcv>9hr2MG@}s%U&MX#b6V(os1k!tS`|5lkDXOru0o-RVW_^ncF*qC+Nh^ zvR^9n@h|0eXLk7}VL;%m$!$kWCw`MN#A}~Ry1Jb`)Owy)3_g7E8MD{UE$QFYZj`5{uz6(E&Evcw4D!Z2^spMG;(yCL0{Lv30p$( znZ;L^fvzLy>~l}q02WH;DWdmx7Q6*k>;wIW0*Z(-9A>x~R+Qi6TglZB{t#4sH=N%0 zcfW-zdd(wYxDGLlcq zztE%ZKjh}45S0wo-o;C95ho|N?^O=(#6+sX$~xk zghhWDOfa)f+*I!YkU(#+KbR{`omOb(&pbR{74@_S4lTxf?wDo z+yN`+p1Wn(>j-Yy>7@<$nW`5saTsdw-#nV)9eGkmDNcGwH^q~Jci%9mB1n&@ z0#^M4vNVqUcNq?ST*BIMUtCgk_gf?6b2?<|)glW7jebl|N&b?oy@cLrI(g$8k)dC8 zYn!Z7&3t-(a|wE1OV^#Rsg(KvKb9e<>vSWJZAsll}@roTo)fLSH8p8um|0)f2 z?`{s~(*G2iGnnsTkdw)V0Y2fV#JBGqD*>^DxO4Z}7?_@EH3i~lMbV$*0DgKwT=}&v z$ue^=2Ob%SHEpAI*Flx%@5j&8*DAc+<`tTIA6PY476|sILeVb|G(NdjVg%hD3!E)l zCRWRdw<<1rMtcbCir6?{#QQ~y-8Ejh-+T|LM?unbP<7u;HgK@T$NVRIxY7Whl}xxO z@1XjUBxN^n^myRAv|6&bd1AKIEl0cbtjy|SHnM^9QL(GUQ%%0<_lAqeq>9`_aAn!` zD435hcA#UHxCVb^_#+PtLa?xd_xpSZnKzUJz5vcjI@EQ%{F9=cmg<>WXM6_55A21` z9DbU3>Mh%O^SJPc1Ew+9K-U@^Wu{7KQ{>|4-6iL9=C!ghcJs8qLN%IK{s{-r?hL-eGKbYod%0{N5r)@HO zn3pF-NHy6`VV&-_pm9A5F!!IfzK&>6TVcb5lC1oc`xjNnc|KI8W>=C|6vXF}`Te~A zFKrjM!F|1nJmNoo?v}19hrQAW7T$j?!B43r<$-nPJ*@&K#^x#Jz$S9q29k#Z_FB@$ z_zqlOzWS|CD)GXy2k`Lf3aA5FyqeLe)V{n2D8#5) z>n)@6&8)&}4I7U)6D|<1#WyEC#k@aev`Uu+)CptfWsb_hH4p+e3_{GD#vTkJ3w7km z(i5O3z+RkUk*0F}UD=LvZS9K>*y)(bOkoKQ44G~2>T;B^1@~fce+sd|6pZCC!Z^hQ z<>Kv($Klui6}i!P_!onjPAnA<8$@LW+gMW)hzXC{&IJ^SiHZ3K#23p}D%}_5&nVXP zp6Lj)QW%+0zQU6=#!WY2rAsa4A}S#;^K z-!<$$bWY*qwJ@rXrq2V}#;K5azK$FhE>;-pYU4{FRiqp_EDsbN)cT|8vBN8aYt3VG zX06z|ns>3(Ca}Ed&>YxSN``e2{aa8*M#h7cae%7rWxV43_XD-?MyMd8ve~X@IinB^ zZ##L*RcAjQskJTUsp9JeWmTDb!ekxgS2-Ck4A4A^ys46m`)g1xbcbINTc@x0KmecR zLs>Y}j0Wp);p&s@O(bbZiJxvCdW{!V5}FNeW5Et2F>t+{JIx{J0vn~tu_Tj9wjw$q z=DYsM2Lffd0Vn0yRq9uJd7gS^Xc4mBGSlnIwax1(eN_<~x0frY?6W<=g?Trxz4&y) zay7UYfH{aoylj|+IRLUUlTgFjPLCMp8Gz$SM2SK2G6ctk8mZ!-a@wG1&1zcEp58Yb z;DlcqwVD~#mp6XM3b|?Pl zN3`-smh6|5PjgqQ5%m9}>3;_!1!hh%|BG*T2QE3G#Vvx(^?xuZ5H1FQwyOu3#935@ z?LRBj@$~a0%+E4px(TTw28b4p^(KC{kY`R+Q)jRLpmZQsAgwxEuaA(7N8p9g)I1lo&#FI&I{EG}Qh3BrX zi~fKiWLfUKH-r~siGMR-W8LU(`bEx@RulztCbK_`qw{wJXV>V@1<{6bF@HHT=F6h? zta9_pyWta?pK+FTTo@uvMj$2|P}ynFGzH9$G{WWFwA_`bo-iyYGZb5!IM7xS**?sk zmpGQwe|P`(HuPUJp&JM+XR=#i;10CJPh37o6HcEX9I_m}CvqV=;8g+Xw)H{?SHKks z+&nt*mV`tAcbI6fSVCx*sDXl|xFDL_y%Y>N`=u+E{=P7C0AV9jO9cT6 zQQ{hAQy70pOU?Jx&kp;+oQ>^t-}PV*xY>bB!FAJ97KN1d)sv3o?)MyU{yce^e`%T4`kdXHe2Y6dZN~AXvuC8$o z%g{BeK32w;wmLs#yxL`}IwJ80PSePX!3W{GwD+q^dQQOa>v+`s62Gp}d!U;$S=d== z4y~*Wz`xVU^IOT5dOw9~JjAgLdoDJUL$W;n*|{o}ojLQYkLG_m7l85$%a2bPQx6m% znH2!q#}VzqGTdO5aY5fWS4{*{xfR7MZ}`Or{TSBvopd44QRtAWQR+YnhV(0YTxcD) z0z}=RQs*0{y1nhywz%f{OOI%!7a-1{x5fGKb@ zqzIstORUNhwe)WH>6 zUfYv60ZFF*d99Spf(LnHbn{b_>it6>iDi`W<<%Gr+bP;yKs~rj5kN|@ z0HO2mGC6F2OVl@r-TJWaC`L{EL7BOc^3w!lE46Bm2H#N7tLr@*2w&@Ai}ozm?2xgU z<4paV#d3vB{JS*mD%K3d&ii%BPJf4Mp8TCklYu5Zc<2y$IPe@~)}{NG&elO_6S(-8 zf>OWWYXY`W7EV3qxe`=Ky0`(R!*sWzsQm-)6DLh|O*u5cgd`O?9FYYXCY5GEAo{T< zl{~Vrvm{!f7R9fa#5+9(#WoN=hPGfb0(~E&ZQYz8kM`Mz$lUB?O!g=&_|bVezI+Jj9APD z3gOv{pOr{-6;8SeIc!4nEWYOq4o+!TP87kSSRy7BAJYvn2TDgv)m-CK9^S0-a(%~R z`)k5IrIIpIQI?GbBf^WFT;42bMn{QA3g)pJJXw% zWQRzk8_7`KPXApo7xHpaJg9XS0{^}=$YIBPA&PR;)7OOM_n#}XUe-FldIbC(rP|?3 zv}Qa@PF%fC#9V$^{+s}Dn$S+FW&rK?JlQ`Gef@M)+W4CLw%AlyF}og5{KMC4GLAY~ zu!EcAI6Vc5sGz8*w@SATnc=0ymgB*-uF+UT*f<6Q0LtC1Y?AL8qrcXj&(3Yf{FPWJV+s4CrM;3xUve~Y7qUG&+O45RVnGw^u)rs8N9 zB0j6vENMzJPd!Sg=@+Diz>uU&F(dL5(1mL%Bd1CsFEy{3p|hXVJ<{bZ@{%4BXt>*1 zrAl%7@udwn*cMkYbe7>_g~3*j>%N~%*;pdZs>o4GRB_zY<+1`v{tPA7AQ`JW#4oLC zA!~h(wPeE$p9xm*H8rLxr;_8uOc;_5?T?K`PjKFvQCZ*$mc`V+QOM|Z!%r#pX9I8G$Ch+bU+NZc7M@5sqk#20^8pCjc|{tW`2>H`nWlVQ}}-*>V08!<6sw3hf;vzHJN*q`$a z;QSNJuTlKgugnP}EyFeuaX(~dc!q5FU4O3{is3y|OT$5PbLIuuo)_NcByG7c7|BCZ4On&jT1x!$x7;EFlS`;3hKfli(>PjR;K^T zmNV&$=dkNL{cz+l=A+cciPt-(jeveau-Ln-!w}nYAVTLZ>Mj&FOdpJ$5$$1zx`zju zT_|r^i*&}8Jj<50Eu+WBIk1|}L}kc!qN`47nZRUw;!N-=S`79k9A7#R7%HTvyPE=` z9hRA4O!BKSBlQ<;%B#Ths-*<51pX?QM}4dK-?1;_y3zx<98!^E<1h?Eh(QD|W68hr zgpJH_g+xso#=?YH(AQG^*hnzcwEdRGptU3M|iGa?~t zlQ9{~?y2V=qN2kX_uE#jgkh5DI8sNSnc5M8P-9-!(6gI=(^*j!P0TFC&;ukxeN=un5aY@WL5j^SO)ONxgoYbWe9r<(Q8)x zm$GAs7+lE!1aw1BbVyX^7#A!yjI%>`KQB`Z6L!upm!pA_Jq$z-b|JiBox0hqh^aT$gNoBI^Qb&4Q$tuY}vU<$I+>%ZbBeNrrt_TO55a&7-jeW=fS*D* zu@m>KJ;n;2%yM}^eZ@?Gi2?9M!p3->! zbeos+`uezMG{)O_5C$xxh2QP%I|mcPTSp-iX@w(#<)bVl*OCS~mK*ee;a=}LJ%H#C zY?wS~d1AD8Vh97C4;rRw<4dF-@>`qPMK=kbADdU3m@5l95`u%>MvZMdDhe;`1Q7~D z$YQ65{SJtVuB~?}c7~UMw=_`<%Qe{Ks%Xeok3iy;03Lob*0Mh* za_pniv29i!y|%e^{c9^&&uglz4NEeI{72busXeZ}mf@ zwY@EyyAr>C7xqrfxJSQCddE2Z7uP^Z`Eto#D_#r$jQ3hJW)<+#>2iF?bP~UcDd^a@ zf^~O5CBWBg^X^7p8bI9~YW(9PaaVfsT>pCUg~86QBgo;T^U$krg3Jxyu}gPnmT|JW z#)|!s27k}+XoyxMUCyVS5jPY;m+0+2lsBV+nGI&BjCgdEsRxv&n{+}q=!%|7v+BVEwpWj5%WhZVdn&DI}CDqT^os0-E@iAgjo}NGH z1NxeC3LZsM-l(^>PutziEsVF=ai%lG^zN^>@Ak5pgrJK=4R7bl&582^dC$VrvoVrY zmi#Y5o4@xzfkum9z2XhC=eBbb-pm)#!x;cSdp{?_4;q3{9WJDb#6snP9T zOp#2SG_h|#{uKYn)A+h7xsQ!r4m(EXqf+PdMIv!` zhlxZkSR^aK5e!B3gpieRTeBYCy$@P*7Utt;yB22A-5o~c9<)e`fXh&@%MllDc7pdvJHV&fc&&b+&y z&e&}f+$Ju}(Xzn8SphpeSOs&1#|Cs18ZEjDT!&?RWR>Yz>oSSrjFg#&WxL1wn4mB}22W3!;u{u8Yw9o8Ge zlGa*@KctWqohTD|0H9g?vaXL{{!_qfdrm1iF`k5(R=6(U`B#Op zJayyhpPkQVdKNF=eFJ5HxTqwT2Dx# zL(9=%7ZpcFn&7|_U>Z! zR=CsU@Rx?kCJKr!eKcKkmgy9|Ww)BCmv?T^ojum8a6zAxU7q`4ha-QUH$mK{Ro^^Q zs4@EIgM{XP$h|uSGaF22`&xUrDf;sQ4^0UpxkX(LV#eYa9DxxSzI|w$@^0uO^B!%n zxioit)cgQvSt%Ulp#dh@)~tB=e|K`mAC9Bb^bPN@`NprP^JG)gX}}455iggy<#7wl zdHc%bk&i1`0~Gli`ORCHbI7wcU;kNE_hL~2V2pef=Y)H36(E751-1pFc+dokXq@`q z8FP3kMfV#aQN2Ss!ObVRpVM!(oNsTh5T#AZ7|f6bYvc(nKoqPQq8PVkm2-q1OYevS z5sq+p*sU-aa5qKWmyp6Wq~(D5Udp`s5b^S1;$-2tj(?9+{gx6Pk!nPPBe7~gB9^5B zNZO9$;cL!dS9y`};YZdr^++ZX$Xk>&smjJ%C_>l7s!v@@S#O3(_61z(s%3Yg2T-Cb zrb$yqP0;F*oLiIOR<>OA)9zsw7M2RFbRQDP@G8cl*Ila z9c~s+1xL@*?p1JH@hF#rIM(Y?%GVe46!crT1SCy=;I~xXf847ny!bO8^Nr3pG_<_j z99m}D%0CbT{><=WMQk;f2>>t~rjpvBp-09}P<1H8y=DwMvVrg0qprl$T44QlJyC1N zd4NtZ9`+ND6+^kqVZd+r%AsHdtS*2oxlZtVqJzqga$58h%n6w7js+UFmaiYBACFMc1pJp5* zZnL14T0bFYU&Jsx2;Un`BrmB|(4`ugjGw_^A==kPUmWhz)i4|>i+~@ah2EEI^Hjnu z;@bi5VBVyq<4j|OPv9>&_)R#vpvw(xQv=*|T)m(rCs5Tkf>Oue#h})=GLHjb5BgRF zd^v_qQ8W69$6b}M7`&|{3$=CKBI$AZkY{xqMyE@09W_$)?vD4*pSJ$hzP<(jdCqz3 zIsg2yUux7sewtIN+Dr(h+pdgYR#Kr;P$U=KLdYm?5=vy1Ok!xM>`;Ea*V02j**&@P zR|dRWDck+6~&xGB3NAg>)7p3q)uFCA7z z$-A~BtFQ3QLh5viha$5KV?naq<&H(c)pDd$>IHZhsN4;WAS4CoIbXKC_hpAy!tWr{(f)UQ;(nf^tr`UUP z*oU5sol^KhoD6MfDnhUUOh3??LV!SZvVD!n=CYsc_nKm|Ze=^%4wAXDSGdge*EC?E zwz5|8Ci>vFwXbgyla5ioPSu;M(cIsC)0cpgNuORP@_tQbR(CvHH&0fF-kDXiJAl@Q ze>VtIj@_+gb_$+&hhXreHlpOBa%U>`D%SB)^=ixt_R99}Am$(!L2%hJigZ>WVe*=Y zZJ+kxYka=ZNK*Ukv6Q7t{rEcnD-{~qymV7+{*wcm`|(4t_hEPT@D!QvTFVMegcYnN zk8TFbwUY3{e^ss>Gg4YpBU{7jx814m7fVEQ0*IKP%R6$-MNDI9#O~fSa1$RbjtvWb z9VZmgN~ge=>|#xn&>pNCcH-$l>{NP<@5H&x(c|Y=3C2>#MhPT+_))p}xE-}(R881y z=FOUdJ8G!5`{`kIL)iBKSbnzIFe#3x1XjC6*viu`@V{-SVDMQZ>>Ufw27m2LESy>$f-WQpwf>E5i$`gfG380Eq+!W@^Ve7r6^TSN|rpyQ9 zHn-e0qJ+!t?g(egBs<-E%TpZZqZ8}T@R{AV<2E9TQ?tJw%5Ej|9PBY!xj6c^0XPQn zWP;L?v{KsW<+%4lGyDZ|^OMVT->GED2so^8x!3v~skxb{+I$(KjjW!FFGT$pYIODD zX|D9`G9@T(Nd+jGYp*g&gMX{>UkY4kP$&y_2S3b75WcW|;rQp(d78`>KCFT>@4WH% zCI`bN=LP4`FlSS<`sxz^PIyWCF`sY%?0}Ru2;DSdX4C|@-P*RhPZ`D#8H453$eiAd{7OUp2RK>QN-%N1!2hs#RO zdIIcf?Hbwbw1Gc)gLT*GbOuAqO-ZZF;FHt}YeZ9^f9f}1kj-F+u;IF9ql8`ip{j14 zX_^JnPN-uI<&%NgBq?sX#D@AwC)4SP;`0`TA7v(*^9_F)VwwhgQ(BMm%W$DjY5lW7Dm`KLNbX5-^@t-nXu`l+hw5>KQ+=9 z#~c0j&y@-Kxi2#*3oBXo!za4!ZuC=XTdth`9*pa%+KWSa9xqIvn7gbLtUms-H2FW0 zt}-mm$L(V04D6hNs91>Y)G0Q$V#n-Gj9J_4F6^AxiZMH?yhk>~F{)dU+Ujzdoj&g^zm4#?GQIjP#{z z)({WXh8gB9GhEfU4Z<6QBUt`}+-%12wxI#8WBm{*I7^2c1v92wOZ(siUPm?VdId$H z48;oAyO8|tJTXT0%8d;A0;?5XMS6y}T6WGyGkH3$bG>$|a_+xwP=%`l?rbqlZ)<(z zB*bsQ{wgHV+$p8Jq{+tHa4+a~#Qlh4L8>iR?ag0zAJO4YOAQR}i(8vEzhDq6udjLS z)hkSA_11DPpog1}25a~C&ibW?m9M&mRxwC~evwTL&FQe$h+cPTy(=LJQJWBX77ZA4y^!;0(cGqsw8aMWV!R|^%??q zN;7xNcXAVhWVS*Zz68HEpTemKx(4l>+PTvyAf_s%@e^j_QQz~1-cMnC4O#3f#RE^$ za-=mH!Q7$>U-EzjvVA|u*tS`v)2^$k(cb;jbJ$VIicgu$E|sL}GVS^wIHHPK1kpw8 z&>8UuCiPW1S`;}^(C_5U-8%{3nO05SA!cPRAYQ38-nEiTP7$x;8n4HA%tA6UWkmk4 zNo4exo0clb%VCh1r7$i@<#Rituj#4{c2r_O3Y-2!CY0_Cymy)DV zI%z{gffU%|CG9aUfnGb8MPAd8Ik|@tCHD`R-J+PXm04H~LJ z%21ueR;_AVLQNBsQ$(FeID ze6HO}Bc%}Tu>~qT|63-NAc~RIpp3P&4eQxl9ac7-QV+T|WNyGST1teR$}?8N>DobN z+jpK2$>jM;PjuckSB?u2=?=0DF)@812-^Vzvs$1+CQ2!elJ0hKTeFehA@!D42!x2Z zY$-bvFlC9BmrF%+3VWxJgJBV3_wH_9C#Qj(Bh&b%Q!?^*R3<@;;qbr^^eJy}oTe(JK`|j=EKXre|7YMpHV|7^~K_w!Mo>=f{3?1%)0g z2UgCJf(t>*vgC<)%UPtQ{?d$6)zgxn(%U|Q$1g$$8L9T`@%*{zM4cz%g-MCxK=k8l z^Z+O_a7{UTw)T5}EI@a9Ex+p(c?+SI9K`Ii)YOFvE3m>Km&@vK-9c5D_*!3tA(=wl zm+vP}N)+h4L;cU^`l~q1GEDscYdJnuvlTWm9TZCYM}dQY9ka^+duTfFVsXYx0jkvm zsYB9SDIR+DdvqtMJ`JPJ^T&%DNVzV~%V1Q+?P$N)vkb3ugmz*C-{wbwL}!XuOCW1($+{eGjn< zSKsMu=db$P^ZQ(#Gz!B-%E5kLg}1&6AzlZB#EG`b46kxX;WBKgr#Mj@mZhy2ltClO z+s&&W3c}JqPl0^x{utlJk<(g-w?)w~Pyr2#owfNOUt{*B=@WRR;}bq8^`V=#`h{lj z;nTV*TDQ+vJ$AuVw4H*Tv!1q%jvdmY&)keGxLR0`6jELcINSdBc=zz9qK&D3n?wk= znPhQg+jVN~H{BP!qfHuf@3h$zMHDPruM|Ifp5~W4*b7;I;r_Mk*p=n;X|#J^s_dJ< z9S7Jj0I$65fN-`ddrS`D(kfCki!PK8eG~>X{?W00h3_RtWmTkan~#i=Zpq zou8jCQTx5tH1tF2(O)xuua?Uh$3+iI7ENAW()yKI2ksN`T2yKbCh`(2>wxEqT`L9z z#_Yc_k#bo45-aaNHl@#VgVtqd#M}-;;*>=`M$)ZUYDdmQ0pkI9z#u_^CdWJ$2L!T_ zD5?<^#p`KZXxMTKpw}X|hh|qXf|;u+-De0aqm01pv~){y5Ea0SIYwZ>{>1UXWKeS#ph*&bC(Ohb-KVhImFwsMmxyrdEBf_*Lesg=7nkI zksTur;wR9UD^Uc)7gu-BQzF%MR2X}@af=h=r$J1$r8i23J&(Ms*KAgUrF{Omi=T5| zfyLs<6DF&{ePcSOX`{-)riN&7s4&!fsR)1%U7Ab)f~M>sPL^Y)Vw5 z%ErqC{^bIQLS74ber36YN3FV#;nD+oXL)J=nCDG(ly|P7Td&Ihcvcu)^>^QBp2sn8 zC*iJ3IhzM{K-(Bo1dL#WS(7;oF(iI)`=M0Oup+w0KPGbh(N07Opbl zj#x(Uld+lQrbOV&fR^23Ja9Xt%tlh6cJD-l(hTE^vhbJf3-!6ua&mjECkmKzflkke zVDh(DXMas!s^I=6X7?(Ly{M=NTDR@-ciT2E^g5%Elw72%-lWfGCyPP$+n`L+;i5@L z;$(IRAS+%Y;_t0GR!PS_{qp>}piRa+khWi*MXz;8T_q&2U%t_3zNxloXI!e@@LLRV zu77w%%@B8M6jj0UDK&Hq@6Qx7fPy&)fQ~Jj&`Jyf5Sh_Yr43O)1$0}?aIV<+gyZq# z^yV}{wJ`YRM0wUbI+t0BxEEOs?8>RlT^!uP^(;7n*<;WF>AjH_@h!e51w)~Kk8ma6$+o(C@x++@8?uC>@C~`<7?XTZwKcRZ=eY@B>LPLlUe>u1~z@(l9uY?sR z$Cv-kEU#B-J2e>X{}13uNZ&$c#YY=2I(4e?SLeR_I`4+6)IMc|yWnf*-4)bvTaA`m z@P(YE>+RLwoWB?46;GeOe0UaC!FndacejW(m@U|;&8|vegvIMx#73plk|nTd543sm z$F{wA42kFmWhW6zlKcmGNAxHV zc(ol+!6HMskuCCRm`Gyh3o$*Q!&Bl^Y1e-z&Nnm+DQxS84uvqgU`DZ63<-AuihlssEQ!BfOTV*BEgMkghh z8~V2Up*iXCOXUQqZ;kRN4MvO!s|e_bDN0XAZrN@Y{W@+H6%B^EWLAm8Ce_Mse{GpO4R#2UtQQpUS`)=9CRr#xAtOXP{_+I z_7viY9B+cee`)QL_bnd@=fF@B(-=1va`E$RZ^Ur zx<*t(WY?k1SMQ;_fIEy}*jJmPwn`#Gv`|%?9n)?H^VK6V(sRLBWQMtjc2(#5^*9fc zg*|R%dRF3%IKdmN7uNTHL^}PyrexUTwB+G;-b% ztu^IwQQm?e|AA7^@4RzYWkOvjJ)v?}fq93+i?hcw9KOyl&EqB#c%`9S%SOiuQ?!|^ zT$B*J7(zUi&QvqN0+fOUgcopiv>nHkF08FWD-r-&wvHCqufySm#TU zYhN*WfVLwm(6+21o&Dc_SmMzyG;Lz|bbqe!X-4BcuzO?#0N5Sk!4HUzRMD;%%sD}! z#uaWOG~>}m42;gbro!UoD$cgZ`;^z~rpIQJnT;3moLs_yctWUG7bpoQeh zVOe0qu2OBf1<@UYqWCD!DLc=0K{OMy8vXA?Iv_y~nat9ydk5^(FpGdyTtVJRuYu`Q zYdQ-t>SbZtr^8m~=k7JpLw+M*KjhRMJP&6?wb5p|eTi1@?bbS8?CP%8z2KEiah)$? zpzDsN1)->5J|4@>tcANC9si=-B-QxBzezCSLo_*r4#!<$V0a|&gVT5Yu66qdIU%*> zA3_mcvuVOh(pszJ(uE@2pFq$_qe4k2`pe;%PZO2`#>s0HU?o0=3Yi%E+J$}g-%J@C zSBjLQqS~|aNkJ2=1eQc2s-RNarH@Y3uB#^+vmI3+w<*Imh;-}euNe(D3Mx88o#r9f zf?-X=&p*4vYCF)0ukvT^kF|m}{h#&yZ^=vJ53Sy;DHe!ss1N>Zn1!|k4?A4SmpRM; z1@4RpK)`;{pr!>WUGpAYHdWg-yd1>;PITejm4@M+#)nb`JZH}$Clofa*CeRmj*_EL z`Ql(kg7;Kd$6;8hKsVuILO|mNd|Y91JsA^Ye1Be8NDGzq$6LYlX3}a*Q?0n7fx~yI1A!wEBl3$Z!SKR=?S1Sma z-oSL%`2~09S=E!73Tm8!UUwO%J@Wbs`TNsBxfg@GW-d^rErFNyvU)_IV!5HU_z;?w z;Q-UsS%X#kNC*{ zNs4Da>%+7_5x&DDKDe@zUz^jxb!C{AyJf-jX_y9uZb+?v<;*9cwmp*+djo;o<1?d@0>I=7>y`)JEHaoAgkn-fDLAyHb)Jzj^|GgH~8; z`mt1v%`8@I8hxdjQ^k?*vgTRSW-}enSF#Ff@Udx#1@b78aUac8Br|*b^XEwsjy%${ z$wk70J!6v7F^<#%{~$L{OvG!ZzhNcY{`)W>W?9?jFjPd~qfn$H(&!TDKV# z7SzS89Lv5CHnL<3E5L77;J@Dy7wa?zl#7=x0SuyIiXlM@x8XAK1q($*N^+TGRW z+A7^D$rK!+PRqRb0~gP!2+M>k3Fk$WW?f+gkXBri+aW7^zW`{@w=oeEplwLn=M7o; zBy-F(FVrOu%(Wf1ZQOb;QM;Db!f#!|xrW$e0-JmLq^0L5KMG?=o7MxVq2EKg$ofrd zV)}C=UTL9QDzJH)B5VrHdr3Fv+v&9{*CEAX+LWbOqf@PNk>;1x7Ke<*bVeNV1?E3k zz*8sHCu?eSo%HI930~N}i@@3vg%vlAC_oedXZi3*beUaWr3`OVc;`W5jVH4N^wH5U zxp-ujoe$Tog#sU;T3%}qU;NCcMqRyU0j}Fh3paaDY*LlWx_JQQG_qCx{aa&C)aIpl zzk2sy7Vo8)7^6KjEd^S>{Z<5M-?h)H6SmLl(-(bzs30a<^A2hLEvNKd5-uLpDK!!x zxYBNt5@PCy548!b3FGVHw723+)b@fMWrT~$@l?jKAtdX|VeBN6RdA;Av#Sy3T4A3z=`z>jGEK;TJgR%*8- zZf*1;Aq{LxC@MGK2Ha`qpx$+iOI-#K*nf|*WU>v4B{e#!6u`r)famPRPOLAyLAUaM zmUjmgredKlxPnzVOc}Rkn;cNS!L-jMHr>7Qx-~z3_&(A1E4+oXZ=_gwD^Z&Dj^)H| zYHkP_r?EM(fq!@mWMyBLy{P$g)R zN7*=X_r*rTx$p``i5W=?wP*~jO$_ZdnYC_x=EJdy0w^wLf;1i$4t-KR6aX)k`PG}r z5CK+XCY(wotp0AFi0I)SUwcl|v7sr~^6GiNP&1uHK=@j~IVQNcT}Otgp;wIOPY2I8 zY*rMvq494MaTn}z@xWtyiq)`!NgG#z0rUxoktdfAo-*vESUt-`$Rd_8q!*mji&if@ zZnqeVdHE)8%hWtAl*m}Ot}B7xq8_@|vLnuzwrazY=x5MqZ?7FdlMd&3SKW4&A{l0d zRcK_CVqYX`<{Ahr|Aph-{Qd3V6!Gu#ZwKvw7ZgWtC6mw2P9JmLmHBEC5H8_##E2)c zZvtkeC@iY{)&_BjjnS=U4g-yn5X9^lrQicWwE`0}dSJhc zCEgziP3SE5(|=J;Z8nP3#zBWFkc)`^S}=Rz7+{pHqWq*fid-6eLEV~#H_jISO{!VZ zbOOUEJ5LL6S>>dqi;WWF_M<1PMs4;PUR!DWS1qxqfJ(DS{QNTUb%U>AX*IkuX@a$F zmx^T>!0y@Vu(SP&z`++bc{tz_2rG;njJ9XkcT5)O;rJX^7x0B0CZMc_tP|a_&Q1`s zq03-@^}k28CguL*)te`0xG!DKVb!VDyHNl?+3We4l18pL zB~f-I7->uu86Xuuj^th=EfA@jPoa$Tpaf&lR^+lL7&B0B@$`IM>q#8r}13;@4>vycZPp0Ijrc7 zGt6e5Lg|bHZIloRG$oG~N!<#n7-3eABcqqUluHe}R-)#C+vzyY9W^H>XzGg^T;&t3 zZkFy38>mOVX$dI$;E_jV88^-N-DwDEaFdDKN=V8>=bVER&*S14! zam4cq9yJtvxJ7?c3pif{0SU~>6-K6J-=IZGiqor7t?%t(vrVW%C3^GzqP%n@#s}2!YWrf zmW=jDi2cH2#-6kk1dm`3S<#IJL@PjCzJ)i4+3Ub@2v6}5 zGEQlN$?8^3Z*t2*KrxgJ?JJ+Z96R(}dq)F#7??~6h%7X!t*L|;^NWzpd0REtFLf{7 z*eo5_?0?o7=`g#NYB>A=EIJe1FNFgV3`tvYhwLfXoZ^=POLEwqu*>o2)3B%d<#8+v zXw+hGK>=Oqv@~U08gcdQDrF2)^ zB5$hF*C^S-$!4}Z3B4y=SRL}vAlDR_zRoMa7h%-57$cIK2M$>w! zww7-=Q~NxHiylTkWqK`%_+h^f=<*qpz(@>#H1FG)90w|1e(N?0HAQFhuJ#7gsS-$y z+0KPSLdg>P^DYQR4(@T%P1xnU-04V@)~!fgyEo_e_XmrRFWYf?ZMBw`LDqn}oaT zu3;bG6vuVEMnYt9NJEc+4%0@N?fo_lz@zzm582dpNdU20H<%y@{i_KQtr`PImm@4b z1xyx2y+vsLSWw)J2+!CIe)Q`IfurM8a>13@;Vr!IKD=tp+JRd+H<*`(z&)I5Y%539 z-LT0m+`-woeD&KlY}-g;Tie^~X#>+7Tm52%K=rCy{pp~9SeEw*W+46hS`+}#B1;_D zR15zHIb*8h75yc)P{eH^IXRursU5wD_WwFo?*;+Ao|@1YhY?~{^6K1$gnBZ7XD0(7 z>Ip^k2W5SzNfaU&|68f?NhSL*hGuLxjtt#O)tuxAk`3R z#g$X{csv=&6$$ej1B~vckQKJh=o{jB(Dd39XGSMb zeWc(M);_kd%F?)!n-1YMhxC3ltTnrZ&5p2ej<&e^dBH`O$jL=S`_+1r+NmN)rMV9$Tu-HmU*vD4X}RBnY$dJ4fl4XJ zM8x(_X*z5iGo$5YCX&n=JPjy8Ye3HLs~MoWzS%6zKCJ%_v(HZKA1bT23vxTPn(;&9 zrMIDPc=XiJwat39!XHhks*A+L$b^qQoiZRf;x46HO{H;z3w>X9c|GMaAFz$XbB_eu z6EUS_&c({x)wM^nf_jBbUBT~3F*TW1xKJ25@=&_p&_=F81%HW#hzbeiE9NGU@<`TU zQ)O5+wDcnDUJ!KOVLi!LGLpA&%EMUf)xQ;6zyW#R5)Cz(^T}lp|26JM-vQL+ zA|%8p!6*iD-Aas>vV?}%fd%j#pjQkz9L;tF1N7!P$Fl|%v`Lw>t?syjf$6e5G9#E_uvU`)=7&e$8#ib{zIgg}itEN|{-qz;wmRXE5uU-S z4oM*>KQPHcZhVy#zP04-T{lxh_KvG2y1pH(R{Tgl_1sF+#?!p_m_n5L0TD<;AI0TD zkJ44X3WW!pNLs{NX?vM+R7AkLlCZd!XEPB~)k#cgn1oX;*bq}B%;Pp%gjD#^6*A`# zd<0h%clhhzKz0_d{V^?zwLR&`8a=XiQJj-!fVEZlAv5l7>+u(9!J7O^*!D%SWkaxn z+*8g5tQC0#ZF#{7Ma?TCLdH(c2ZWy*S0oyLS0x_0H*iJhyM}<*9bUw*x;y{p{(Be) zIcIoAJgwPMNudtPjm%2ZBi4?d+fo5HB$?^2a3|}j2>4?qc&VtGl-V8(Ev%vR?vZjAx=d*tOh8nOE#kLI7c6Mb>AHiw(0kM_*@x zHE*>U6RY)AF?}43kRQ#mt!0-}?-t`7=_fe+-z;6uw$-Oapc@*x>Ar={lVjbBV^Td* zxkKv5v}hR8PSxe=hKufj1Sv+rEyQvK4WH?pvO^%%G zlBg7AZZ`~D_Uvmb+zvl#B$}+uG0Rb&p>bFM{menk10W&pN0U9i+?XDKn=dqI)uU4M z7jxFFt*J2IkniN)pOE*b7QJ;}{_a#Z-5dY8q_2v$R-5mAJ=d}1ldX4rNs3*<9@jfr zZBphL@x7KnO-VtmG-BGU|i`)6?5esEn(O9gkw*{;&gO-uf(} z!Q75`4|?9q&E0OplPxv$*K8sBz~W4WS!zhllBRUT;7}WQ4oV%BJ>~R zY~u*ea72<�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 z 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 G2l@}go1DY| literal 0 HcmV?d00001 diff --git a/tests/cpp-tests/Resources/spine/11105.atlas b/tests/cpp-tests/Resources/spine/11105.atlas new file mode 100644 index 000000000000..4b97dc5a1da9 --- /dev/null +++ b/tests/cpp-tests/Resources/spine/11105.atlas @@ -0,0 +1,860 @@ + +11105.png +size: 1409,1409 +format: RGBA8888 +filter: Linear,Linear +repeat: none +a/zhuj_00001 + rotate: true + xy: 384, 206 + size: 71, 76 + orig: 960, 540 + offset: 527, 321 + index: -1 +a/zhuj_00002 + rotate: false + xy: 197, 566 + size: 136, 281 + orig: 960, 540 + offset: 553, 93 + index: -1 +a/zhuj_00003 + rotate: true + xy: 801, 1224 + size: 183, 308 + orig: 960, 540 + offset: 503, 37 + index: -1 +a/zhuj_00004 + rotate: false + xy: 2, 232 + size: 187, 308 + orig: 960, 540 + offset: 499, 35 + index: -1 +a/zhuj_00005 + rotate: true + xy: 492, 1218 + size: 189, 307 + orig: 960, 540 + offset: 496, 33 + index: -1 +a/zhuj_00006 + rotate: false + xy: 2, 542 + size: 193, 305 + orig: 960, 540 + offset: 492, 32 + index: -1 +a/zhuj_00007 + rotate: false + xy: 294, 1104 + size: 196, 303 + orig: 960, 540 + offset: 488, 30 + index: -1 +a/zhuj_00008 + rotate: true + xy: 1111, 1208 + size: 199, 295 + orig: 960, 540 + offset: 484, 29 + index: -1 +a/zhuj_00009 + rotate: true + xy: 1100, 1006 + size: 200, 274 + orig: 960, 540 + offset: 481, 27 + index: -1 +a/zhuj_00010 + rotate: true + xy: 460, 872 + size: 197, 257 + orig: 960, 540 + offset: 479, 27 + index: -1 +a/zhuj_00011 + rotate: false + xy: 477, 620 + size: 193, 250 + orig: 960, 540 + offset: 478, 27 + index: -1 +a/zhuj_00012 + rotate: false + xy: 273, 849 + size: 185, 233 + orig: 960, 540 + offset: 482, 28 + index: -1 +a/zhuj_00013 + rotate: true + xy: 649, 282 + size: 160, 213 + orig: 960, 540 + offset: 492, 31 + index: -1 +a/zhuj_00014 + rotate: true + xy: 864, 293 + size: 124, 171 + orig: 960, 540 + offset: 514, 42 + index: -1 +a/zhuj_00015 + rotate: false + xy: 1326, 879 + size: 81, 125 + orig: 960, 540 + offset: 556, 84 + index: -1 +body + rotate: false + xy: 2, 1084 + size: 290, 323 + orig: 302, 323 + offset: 12, 0 + index: -1 +body_back + rotate: true + xy: 929, 419 + size: 141, 153 + orig: 141, 153 + offset: 0, 0 + index: -1 +canying/s1 + rotate: false + xy: 516, 146 + size: 125, 142 + orig: 125, 142 + offset: 0, 0 + index: -1 +canying/s3 + rotate: false + xy: 643, 150 + size: 135, 130 + orig: 135, 130 + offset: 0, 0 + index: -1 +canying/s4 + rotate: true + xy: 292, 9 + size: 158, 106 + orig: 158, 106 + offset: 0, 0 + index: -1 +canying/s5 + rotate: false + xy: 1221, 135 + size: 146, 107 + orig: 146, 107 + offset: 0, 0 + index: -1 +canying/s6 + rotate: true + xy: 516, 7 + size: 137, 106 + orig: 137, 106 + offset: 0, 0 + index: -1 +eyefire/eyefire_00000 + rotate: false + xy: 1326, 851 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00001 + rotate: false + xy: 1326, 851 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00002 + rotate: true + xy: 1381, 623 + size: 12, 26 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00003 + rotate: false + xy: 365, 566 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00004 + rotate: false + xy: 757, 2 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00005 + rotate: true + xy: 325, 1091 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00006 + rotate: true + xy: 325, 1091 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00007 + rotate: false + xy: 1376, 1148 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00008 + rotate: true + xy: 777, 1042 + size: 12, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00009 + rotate: false + xy: 191, 243 + size: 12, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00010 + rotate: false + xy: 941, 814 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00011 + rotate: false + xy: 941, 814 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00012 + rotate: true + xy: 197, 552 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00013 + rotate: false + xy: 649, 457 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00014 + rotate: false + xy: 1214, 381 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00015 + rotate: false + xy: 1368, 349 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00016 + rotate: false + xy: 757, 31 + size: 12, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00017 + rotate: true + xy: 864, 210 + size: 11, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00018 + rotate: false + xy: 349, 193 + size: 11, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00019 + rotate: true + xy: 901, 793 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00020 + rotate: true + xy: 1180, 34 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00021 + rotate: true + xy: 1180, 34 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00022 + rotate: false + xy: 1381, 593 + size: 12, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00023 + rotate: false + xy: 335, 566 + size: 13, 27 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00024 + rotate: false + xy: 1204, 209 + size: 13, 28 + orig: 16, 32 + offset: 1, 0 + index: -1 +eyefire/eyefire_00025 + rotate: false + xy: 1137, 139 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00026 + rotate: false + xy: 1137, 139 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00027 + rotate: true + xy: 294, 1089 + size: 13, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00028 + rotate: false + xy: 1376, 1177 + size: 13, 29 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00029 + rotate: false + xy: 762, 1041 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00030 + rotate: true + xy: 777, 1056 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00031 + rotate: true + xy: 777, 1056 + size: 13, 28 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00032 + rotate: false + xy: 350, 566 + size: 13, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00033 + rotate: false + xy: 1395, 594 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00034 + rotate: false + xy: 1395, 565 + size: 12, 27 + orig: 16, 32 + offset: 2, 0 + index: -1 +eyefire/eyefire_00035 + rotate: false + xy: 1381, 564 + size: 12, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00036 + rotate: false + xy: 1381, 564 + size: 12, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +eyefire/eyefire_00037 + rotate: false + xy: 1391, 1179 + size: 11, 27 + orig: 16, 32 + offset: 3, 0 + index: -1 +hair_t + rotate: false + xy: 492, 1071 + size: 313, 145 + orig: 313, 145 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 1269, 380 + size: 145, 138 + orig: 145, 138 + offset: 0, 0 + index: -1 +head_beard_b + rotate: false + xy: 780, 142 + size: 113, 66 + orig: 113, 66 + offset: 0, 0 + index: -1 +head_beard_f + rotate: false + xy: 989, 24 + size: 96, 95 + orig: 96, 95 + offset: 0, 0 + index: -1 +headmouth + rotate: false + xy: 385, 279 + size: 86, 55 + orig: 86, 55 + offset: 0, 0 + index: -1 +l_arm + rotate: true + xy: 1087, 24 + size: 95, 91 + orig: 96, 92 + offset: 1, 1 + index: -1 +l_armour + rotate: true + xy: 888, 31 + size: 91, 99 + orig: 92, 100 + offset: 1, 0 + index: -1 +l_beard + rotate: true + xy: 1018, 121 + size: 46, 117 + orig: 46, 117 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 864, 419 + size: 23, 51 + orig: 23, 51 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 285, 224 + size: 9, 8 + orig: 9, 8 + offset: 0, 0 + index: -1 +l_finger_a + rotate: false + xy: 1180, 48 + size: 94, 85 + orig: 94, 85 + offset: 0, 0 + index: -1 +l_finger_b + rotate: true + xy: 317, 224 + size: 73, 65 + orig: 73, 65 + offset: 0, 0 + index: -1 +l_finger_c + rotate: true + xy: 224, 169 + size: 63, 59 + orig: 63, 59 + offset: 0, 0 + index: -1 +l_finger_d + rotate: true + xy: 1350, 62 + size: 71, 49 + orig: 71, 49 + offset: 0, 0 + index: -1 +l_hand + rotate: true + xy: 624, 2 + size: 117, 76 + orig: 118, 76 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 672, 683 + size: 160, 227 + orig: 160, 227 + offset: 0, 0 + index: -1 +l_upparm + rotate: true + xy: 1092, 851 + size: 153, 232 + orig: 153, 232 + offset: 0, 0 + index: -1 +lock + rotate: false + xy: 1034, 169 + size: 168, 68 + orig: 168, 68 + offset: 0, 0 + index: -1 +lock_2 + rotate: false + xy: 864, 223 + size: 168, 68 + orig: 168, 68 + offset: 0, 0 + index: -1 +r_arm + rotate: false + xy: 477, 290 + size: 170, 196 + orig: 170, 196 + offset: 0, 0 + index: -1 +r_armour_t + rotate: false + xy: 719, 845 + size: 234, 187 + orig: 234, 187 + offset: 0, 0 + index: -1 +r_armour_u + rotate: true + xy: 477, 488 + size: 130, 193 + orig: 130, 193 + offset: 0, 0 + index: -1 +r_beard + rotate: true + xy: 925, 562 + size: 83, 158 + orig: 83, 158 + offset: 0, 0 + index: -1 +r_ear + rotate: true + xy: 779, 43 + size: 97, 107 + orig: 97, 107 + offset: 0, 0 + index: -1 +r_ear_ringa + rotate: true + xy: 1018, 175 + size: 15, 14 + orig: 15, 14 + offset: 0, 0 + index: -1 +r_ear_ringb + rotate: false + xy: 901, 807 + size: 38, 36 + orig: 38, 36 + offset: 0, 0 + index: -1 +r_ear_ringb_s + rotate: false + xy: 719, 1034 + size: 41, 35 + orig: 41, 35 + offset: 0, 0 + index: -1 +r_ear_s + rotate: false + xy: 238, 234 + size: 77, 67 + orig: 78, 67 + offset: 1, 0 + index: -1 +r_eye + rotate: true + xy: 1018, 192 + size: 29, 14 + orig: 30, 14 + offset: 1, 0 + index: -1 +r_eye_hurt + rotate: true + xy: 672, 845 + size: 25, 38 + orig: 25, 39 + offset: 0, 0 + index: -1 +r_finger_a + rotate: false + xy: 224, 7 + size: 66, 160 + orig: 66, 161 + offset: 0, 1 + index: -1 +r_finger_b + rotate: true + xy: 1037, 313 + size: 97, 175 + orig: 98, 176 + offset: 0, 0 + index: -1 +r_finger_c + rotate: true + xy: 1085, 527 + size: 108, 210 + orig: 109, 211 + offset: 0, 1 + index: -1 +r_finger_d + rotate: true + xy: 1092, 637 + size: 78, 226 + orig: 78, 226 + offset: 0, 0 + index: -1 +r_hand + rotate: false + xy: 1084, 412 + size: 183, 113 + orig: 183, 113 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 2, 849 + size: 269, 233 + orig: 269, 233 + offset: 0, 0 + index: -1 +r_upparm + rotate: false + xy: 807, 1034 + size: 291, 188 + orig: 291, 188 + offset: 0, 0 + index: -1 +skill/0 + rotate: false + xy: 1297, 527 + size: 82, 108 + orig: 267, 145 + offset: 130, 18 + index: -1 +skill/1 + rotate: true + xy: 400, 14 + size: 153, 114 + orig: 267, 145 + offset: 43, 0 + index: -1 +skill/10 + rotate: false + xy: 1276, 48 + size: 72, 85 + orig: 267, 145 + offset: 93, 30 + index: -1 +skill/11 + rotate: false + xy: 702, 62 + size: 75, 86 + orig: 267, 145 + offset: 92, 30 + index: -1 +skill/12 + rotate: false + xy: 1221, 244 + size: 145, 134 + orig: 267, 145 + offset: 56, 11 + index: -1 +skill/13 + rotate: true + xy: 955, 787 + size: 245, 135 + orig: 267, 145 + offset: 11, 10 + index: -1 +skill/14 + rotate: false + xy: 1092, 717 + size: 249, 132 + orig: 267, 145 + offset: 9, 12 + index: -1 +skill/15 + rotate: false + xy: 672, 556 + size: 251, 125 + orig: 267, 145 + offset: 8, 15 + index: -1 +skill/16 + rotate: false + xy: 672, 444 + size: 255, 110 + orig: 267, 145 + offset: 6, 22 + index: -1 +skill/17 + rotate: true + xy: 385, 336 + size: 257, 90 + orig: 267, 145 + offset: 5, 34 + index: -1 +skill/18 + rotate: true + xy: 238, 303 + size: 261, 90 + orig: 267, 145 + offset: 3, 34 + index: -1 +skill/19 + rotate: true + xy: 330, 299 + size: 265, 53 + orig: 267, 145 + offset: 1, 62 + index: -1 +skill/2 + rotate: false + xy: 895, 124 + size: 121, 97 + orig: 267, 145 + offset: 58, 12 + index: -1 +skill/20 + rotate: true + xy: 191, 273 + size: 267, 45 + orig: 267, 145 + offset: 0, 68 + index: -1 +skill/3 + rotate: true + xy: 1320, 637 + size: 78, 79 + orig: 267, 145 + offset: 76, 27 + index: -1 +skill/4 + rotate: true + xy: 285, 171 + size: 51, 62 + orig: 267, 145 + offset: 103, 37 + index: -1 +skill/5 + rotate: false + xy: 1350, 6 + size: 55, 54 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/6 + rotate: false + xy: 702, 2 + size: 53, 58 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/7 + rotate: false + xy: 1343, 722 + size: 52, 73 + orig: 267, 145 + offset: 103, 38 + index: -1 +skill/8 + rotate: false + xy: 1343, 797 + size: 60, 80 + orig: 267, 145 + offset: 103, 32 + index: -1 +skill/9 + rotate: true + xy: 780, 210 + size: 70, 82 + orig: 267, 145 + offset: 94, 31 + index: -1 +skirt_b + rotate: false + xy: 925, 647 + size: 165, 138 + orig: 165, 138 + offset: 0, 0 + index: -1 +skirt_f + rotate: false + xy: 335, 595 + size: 140, 252 + orig: 140, 252 + offset: 0, 0 + index: -1 +tail + rotate: true + xy: 2, 4 + size: 226, 220 + orig: 226, 220 + offset: 0, 0 + index: -1 +tail_b + rotate: false + xy: 1037, 239 + size: 182, 72 + orig: 182, 72 + offset: 0, 0 + index: -1 diff --git a/tests/cpp-tests/Resources/spine/11105.json b/tests/cpp-tests/Resources/spine/11105.json new file mode 100644 index 000000000000..b70bb7207637 --- /dev/null +++ b/tests/cpp-tests/Resources/spine/11105.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"EZgfrt9Q9UH4oPUnOQvGv/BXWBQ","spine":"3.8.95","x":-813.41,"y":-212.14,"width":2272.03,"height":2447.02,"images":"./images/","audio":"E:/正在制作中/芬里尔"},"bones":[{"name":"root"},{"name":"bodyroot","parent":"root","scaleX":0.5,"scaleY":0.5},{"name":"body","parent":"bodyroot","length":177.73,"rotation":82.1,"x":82.98,"y":475.22,"color":"0000ffff"},{"name":"body2","parent":"body","length":241.58,"rotation":-28.67,"x":177.73,"color":"0000ffff"},{"name":"l_upparm","parent":"body2","length":153.97,"rotation":-139.16,"x":228.65,"y":-180.36,"color":"0000ffff"},{"name":"l_upparm2","parent":"l_upparm","length":223.22,"rotation":-34.8,"x":153.97,"color":"0000ffff"},{"name":"l_armour","parent":"l_upparm2","length":121.38,"rotation":54.27,"x":224.35,"y":1.51,"color":"0000ffff"},{"name":"lhand","parent":"bodyroot","rotation":-66.25,"x":336.2,"y":268.79,"color":"0000ffff"},{"name":"l_hand","parent":"lhand","length":155.21,"rotation":16.9,"x":1.02,"y":-0.45,"color":"0000ffff"},{"name":"l_finger_a","parent":"l_hand","length":123.4,"rotation":51.42,"x":67.26,"y":27.18,"color":"0000ffff"},{"name":"l_finger_a2","parent":"l_finger_a","length":97.57,"rotation":-62,"x":124.51,"y":-0.04,"color":"0000ffff"},{"name":"l_finger_b","parent":"l_hand","length":76.3,"rotation":7.31,"x":200.91,"y":31.05,"color":"0000ffff"},{"name":"l_finger_b2","parent":"l_finger_b","length":64.11,"rotation":-75.85,"x":76.3,"color":"0000ffff"},{"name":"l_finger_c","parent":"l_hand","length":70.21,"rotation":-45.18,"x":160.62,"y":-19.28,"color":"0000ffff"},{"name":"l_finger_c2","parent":"l_finger_c","length":68.53,"rotation":-68.5,"x":70.21,"color":"0000ffff"},{"name":"l_finger_d","parent":"l_hand","length":85.66,"rotation":-87.22,"x":124.69,"y":-44.08,"color":"0000ffff"},{"name":"l_finger_d2","parent":"l_finger_d","length":65.02,"rotation":-76.57,"x":85.66,"color":"0000ffff"},{"name":"r_upparm","parent":"body2","length":179.64,"rotation":138.9,"x":235.44,"y":186.79,"color":"0000ffff"},{"name":"r_upparm2","parent":"r_upparm","length":352.22,"rotation":16.52,"x":179.64,"color":"0000ffff"},{"name":"r_arm","parent":"r_upparm2","length":205.31,"rotation":66.89,"x":351.56,"y":-1.2,"color":"0000ffff"},{"name":"rhand","parent":"bodyroot","rotation":-84.25,"x":-365.78,"y":540.34,"color":"0000ffff"},{"name":"r_hand","parent":"rhand","length":129.6,"rotation":0.32,"x":1.36,"y":-0.14,"color":"0000ffff"},{"name":"r_finger_a","parent":"r_hand","length":216.23,"rotation":-11.53,"x":31.12,"y":141.46,"color":"0000ffff"},{"name":"r_finger_b","parent":"r_hand","length":199.56,"rotation":6.63,"x":-15.93,"y":-93.44,"color":"0000ffff"},{"name":"r_finger_c","parent":"r_hand","length":244.47,"rotation":6.56,"x":69.12,"y":-149.36,"color":"0000ffff"},{"name":"r_finger_d","parent":"r_hand","length":234.37,"rotation":-12.12,"x":113.12,"y":-202.3,"color":"0000ffff"},{"name":"head","parent":"body2","length":140.56,"rotation":-11,"x":240.46,"y":-1.18,"color":"0000ffff"},{"name":"r_ear","parent":"head","length":110.31,"rotation":78.26,"x":135.56,"y":-69.9,"color":"0000ffff"},{"name":"r_ear2","parent":"r_ear","length":127.52,"rotation":9.9,"x":110.31,"color":"0000ffff"},{"name":"l_ear","parent":"head","length":49.88,"rotation":55.53,"x":236.87,"y":-130.4,"color":"0000ffff"},{"name":"l_ear2","parent":"l_ear","length":44.37,"rotation":-19.53,"x":49.88,"color":"0000ffff"},{"name":"hair_t","parent":"head","length":161.15,"rotation":102.8,"x":226.83,"y":-89.39,"color":"ffff00ff"},{"name":"hair_t2","parent":"hair_t","length":161.66,"rotation":26.68,"x":161.15,"color":"ffff00ff"},{"name":"hair_t3","parent":"hair_t2","length":145.45,"rotation":4.97,"x":161.66,"color":"ffff00ff"},{"name":"hair_t4","parent":"hair_t3","length":126.46,"rotation":3.12,"x":145.45,"color":"ffff00ff"},{"name":"hair_t5","parent":"hair_t4","length":41.55,"rotation":-72,"x":126.46,"color":"ffff00ff"},{"name":"hair_t6","parent":"hair_t","length":45.45,"rotation":-55.24,"x":105.17,"y":-54.49,"color":"ffff00ff"},{"name":"hair_t7","parent":"hair_t6","length":45.25,"rotation":-36.12,"x":45.45,"color":"ffff00ff"},{"name":"hair_t8","parent":"hair_t2","length":41.68,"rotation":-50.49,"x":77.2,"y":-72.86,"color":"ffff00ff"},{"name":"hair_t9","parent":"hair_t3","length":45.54,"rotation":-46.28,"x":58.31,"y":-53.23,"color":"ffff00ff"},{"name":"hair_t10","parent":"hair_t3","length":52.14,"rotation":83.3,"x":53.88,"y":100.89,"color":"ffff00ff"},{"name":"hair_t11","parent":"hair_t2","length":73.36,"rotation":33.61,"x":70.23,"y":102.78,"color":"ffff00ff"},{"name":"r_eye","parent":"head","length":55.66,"rotation":117.62,"x":162.34,"y":-173.01},{"name":"l_eye","parent":"head","length":19.01,"rotation":-8.36,"x":186.18,"y":-200.45},{"name":"head2","parent":"head","length":110.58,"rotation":-77.71,"x":140.45,"y":-199.34,"color":"0000ffff"},{"name":"headbeard_b","parent":"head","length":84.61,"rotation":141.54,"x":125.94,"y":-206.96,"color":"ffff00ff"},{"name":"headbeard_b2","parent":"headbeard_b","length":59.45,"rotation":16.25,"x":84.61,"color":"ffff00ff"},{"name":"headbeard_b3","parent":"headbeard_b2","length":32.2,"rotation":22.93,"x":59.45,"color":"ffff00ff"},{"name":"r_eye3","parent":"r_eye","x":23.27,"y":0.16},{"name":"r_ear_s","parent":"head","length":107.77,"rotation":93.23,"x":116.77,"y":-59.98,"color":"002d6cff"},{"name":"r_ear_ring_b","parent":"r_ear","length":70.73,"rotation":107.11,"x":65.47,"y":42.89,"color":"ff0000ff"},{"name":"r_ear_ringb_s","parent":"r_ear","length":80.52,"rotation":93.81,"x":62.65,"y":56.6,"color":"5d0000ff"},{"name":"r_ear_ringa","parent":"r_ear","length":27.09,"rotation":114.5,"x":106.19,"y":33.19,"color":"ff0000ff"},{"name":"r_beard","parent":"head","length":131.38,"rotation":-142.97,"x":52.1,"y":-9.02,"color":"ff0000ff"},{"name":"r_beard2","parent":"r_beard","length":87.59,"x":131.38,"color":"ff0000ff"},{"name":"r_beard3","parent":"r_beard2","length":43.79,"x":87.59,"color":"ff0000ff"},{"name":"l_bear","parent":"head","length":109.23,"rotation":-137,"x":127.26,"y":-156.27,"color":"ff0000ff"},{"name":"l_bear2","parent":"l_bear","length":72.82,"x":109.23,"color":"ff0000ff"},{"name":"l_beard3","parent":"l_bear2","length":36.41,"x":72.82,"color":"ff0000ff"},{"name":"headbeard_f","parent":"head","length":69.03,"rotation":150.34,"x":76.63,"y":-138.99,"color":"ffff00ff"},{"name":"headbeard_f2","parent":"headbeard_f","length":47.75,"rotation":19.76,"x":69.03,"color":"ffff00ff"},{"name":"headbeard_f3","parent":"headbeard_f2","length":42.28,"rotation":34.27,"x":47.75,"color":"ffff00ff"},{"name":"headbeard_f4","parent":"headbeard_f","length":52.36,"rotation":-47.52,"x":78.43,"y":-52.66,"color":"ffff00ff"},{"name":"headbeard_f5","parent":"headbeard_f4","length":40.38,"rotation":5.98,"x":52.36,"color":"ffff00ff"},{"name":"l_leg","parent":"body","length":259.69,"rotation":-131.1,"x":-96.06,"y":-6.15,"color":"0000ffff"},{"name":"l_leg2","parent":"l_leg","length":85.2,"rotation":-94.14,"x":259.69,"color":"0000ffff"},{"name":"l_leg3","parent":"l_leg2","length":131.52,"rotation":84.89,"x":85.2,"color":"0000ffff"},{"name":"l_ik","parent":"bodyroot","rotation":-58.24,"x":247.34,"y":20.32,"color":"0000ffff"},{"name":"l_leg4","parent":"l_ik","length":115.52,"rotation":46,"color":"0000ffff"},{"name":"r_leg","parent":"body","length":322.61,"rotation":129.46,"x":-78.5,"y":21.46,"color":"0000ffff"},{"name":"r_leg2","parent":"r_leg","length":99.8,"rotation":75.21,"x":322.61,"color":"0000ffff"},{"name":"r_leg3","parent":"r_leg2","length":151.51,"rotation":-67.03,"x":99.8,"color":"0000ffff"},{"name":"r_ik","parent":"bodyroot","rotation":-140.26,"x":-311.65,"y":39.13,"color":"0000ffff"},{"name":"r_leg4","parent":"r_ik","length":153.02,"rotation":-29.39,"color":"0000ffff"},{"name":"skirt_f","parent":"body","length":148.8,"rotation":-177.03,"x":-79.11,"y":-6.29,"color":"ff0000ff"},{"name":"skirt_f2","parent":"skirt_f","length":99.2,"x":148.8,"color":"ff0000ff"},{"name":"skirt_f3","parent":"skirt_f2","length":49.6,"x":99.2,"color":"ff0000ff"},{"name":"r_leg5","parent":"r_leg","length":77.69,"rotation":37.22,"x":164.63,"y":68.04,"color":"ff0000ff"},{"name":"l_leg5","parent":"l_leg","length":70.74,"rotation":-39.63,"x":135.91,"y":-24.6,"color":"ff0000ff"},{"name":"tail","parent":"body","length":147.59,"rotation":142.64,"x":-53.6,"y":15.95,"color":"ffff00ff"},{"name":"tail2","parent":"tail","length":153.62,"rotation":27.15,"x":147.59,"color":"ffff00ff"},{"name":"tail3","parent":"tail2","length":145.02,"rotation":-65.6,"x":153.62,"color":"ffff00ff"},{"name":"tail4","parent":"tail3","length":121.56,"rotation":-86.55,"x":145.02,"color":"ffff00ff"},{"name":"tail5","parent":"tail4","length":63.05,"rotation":31.03,"x":119.56,"y":-0.61,"color":"ffff00ff"},{"name":"tail6","parent":"tail5","length":80.54,"rotation":100.35,"x":63.05,"color":"ffff00ff"},{"name":"l_ik2","parent":"l_ik","rotation":-84.89,"x":-131.52,"color":"0000ffff"},{"name":"r_ik2","parent":"r_ik","rotation":67.03,"x":-151.51,"color":"0000ffff"},{"name":"r_eye_fire","parent":"r_eye","rotation":23.99,"x":19.98,"y":-4.53,"scaleX":2.4368,"scaleY":2.4368},{"name":"shadow","parent":"bodyroot","length":150,"rotation":-90,"scaleX":0.2986,"scaleY":1.4317},{"name":"r_upparm3","parent":"r_upparm","length":91.08,"rotation":111.51,"x":74.13,"y":76.86,"color":"0000ffff"},{"name":"l_hand2","parent":"lhand","length":129.6,"rotation":-17.68,"x":-0.3,"y":-1.4,"color":"0000ffff"},{"name":"r_finger_a2","parent":"l_hand2","length":216.23,"rotation":-11.53,"x":31.12,"y":141.46,"color":"0000ffff"},{"name":"r_finger_b2","parent":"l_hand2","length":199.56,"rotation":6.63,"x":-15.93,"y":-93.44,"color":"0000ffff"},{"name":"r_finger_c2","parent":"l_hand2","length":244.47,"rotation":6.56,"x":69.12,"y":-149.36,"color":"0000ffff"},{"name":"r_finger_d2","parent":"l_hand2","length":234.37,"rotation":-12.12,"x":113.12,"y":-202.3,"color":"0000ffff"},{"name":"headmouth","parent":"head","length":133,"rotation":-81.22,"x":92.69,"y":-150.77,"color":"0000ffff"},{"name":"lock","parent":"body","rotation":-105.65,"x":-8.77,"y":-14.12,"scaleX":4,"scaleY":4},{"name":"lock2","parent":"body","rotation":-105.65,"x":-8.77,"y":-14.12,"scaleX":4,"scaleY":4},{"name":"effectroot","parent":"root","scaleX":0.5,"scaleY":0.5},{"name":"s","parent":"effectroot"},{"name":"s1","parent":"s"},{"name":"s2","parent":"s"},{"name":"s3","parent":"s"},{"name":"s4","parent":"s"},{"name":"s5","parent":"s"},{"name":"s6","parent":"s"},{"name":"skill","parent":"effectroot","x":284.53,"y":3231.33,"scaleX":7.3877,"scaleY":7.3877},{"name":"tailstop","parent":"bodyroot","rotation":-135.26,"x":59.81,"y":424.32,"color":"abe323ff"},{"name":"zj","parent":"effectroot","x":1957.23,"y":755.64},{"name":"zj2","parent":"effectroot","rotation":38.68,"x":1804.01,"y":542.75,"scaleX":0.9467,"scaleY":0.9467}],"slots":[{"name":"s1","bone":"s1","color":"49b2ff00","attachment":"s1"},{"name":"s2","bone":"s2","color":"49b2ff00","attachment":"s2"},{"name":"s3","bone":"s3","color":"49b2ff00","attachment":"s3"},{"name":"s4","bone":"s4","color":"49b2ff00","attachment":"s4"},{"name":"s5","bone":"s5","color":"49b2ff00","attachment":"s5"},{"name":"s6","bone":"s6","color":"49b2ff00","attachment":"s6"},{"name":"shadow","bone":"shadow","color":"ffffff37"},{"name":"tail","bone":"tail","attachment":"tail"},{"name":"tail_b","bone":"tail","attachment":"tail_b"},{"name":"l_upparm","bone":"l_upparm","attachment":"l_upparm"},{"name":"l_arm","bone":"l_armour","attachment":"l_arm"},{"name":"l_hand","bone":"l_hand","attachment":"l_hand"},{"name":"l_finger_d","bone":"l_finger_d","attachment":"l_finger_d"},{"name":"l_finger_c","bone":"l_finger_c","attachment":"l_finger_c"},{"name":"l_finger_b","bone":"l_finger_b","attachment":"l_finger_b"},{"name":"l_finger_a","bone":"l_finger_a","attachment":"l_finger_a"},{"name":"l_armour","bone":"l_armour","attachment":"l_armour"},{"name":"body","bone":"body","attachment":"body"},{"name":"body_back","bone":"body","color":"ffffff00","attachment":"body_back"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"skirt_b","bone":"body","attachment":"skirt_b"},{"name":"skirt_f","bone":"skirt_f","attachment":"skirt_f"},{"name":"l_beard","bone":"l_bear","attachment":"l_beard"},{"name":"head_beard_b","bone":"headbeard_b","attachment":"head_beard_b"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"headmouth","bone":"headmouth","attachment":"headmouth"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_eye_hurt","bone":"head","attachment":"r_eye_hurt"},{"name":"r_eye","bone":"r_eye3","attachment":"r_eye"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"head_beard_f","bone":"headbeard_f","attachment":"head_beard_f"},{"name":"r_beard","bone":"r_beard","attachment":"r_beard"},{"name":"hair_t","bone":"hair_t","attachment":"hair_t"},{"name":"r_ear_ringb_s","bone":"r_ear_ringb_s","attachment":"r_ear_ringb_s"},{"name":"r_ear_s","bone":"r_ear_s","attachment":"r_ear_s"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"r_ear_ringb","bone":"r_ear_ring_b","attachment":"r_ear_ringb"},{"name":"r_ear_ringa","bone":"r_ear_ringa","attachment":"r_ear_ringa"},{"name":"r_beard2","bone":"r_beard","attachment":"r_beard"},{"name":"r_upparm","bone":"r_upparm2","attachment":"r_upparm"},{"name":"r_eye_fire","bone":"r_eye_fire","attachment":"eyefire/eyefire_00000"},{"name":"r_armour_u","bone":"r_upparm","attachment":"r_armour_u"},{"name":"r_upparm_2","bone":"r_upparm2","attachment":"r_upparm"},{"name":"r_armour_t","bone":"r_upparm","attachment":"r_armour_t"},{"name":"r_arm","bone":"r_arm","attachment":"r_arm"},{"name":"r_hand","bone":"r_hand","attachment":"r_hand"},{"name":"l_hand2","bone":"l_hand2","attachment":"r_hand"},{"name":"skill","bone":"skill","color":"1effe100","attachment":"skill/9"},{"name":"r_finger_d","bone":"r_finger_d","attachment":"r_finger_d"},{"name":"r_finger_d2","bone":"r_finger_d2","attachment":"r_finger_d"},{"name":"r_finger_c","bone":"r_finger_c","attachment":"r_finger_c"},{"name":"r_finger_c2","bone":"r_finger_c2","attachment":"r_finger_c"},{"name":"r_finger_b","bone":"r_finger_b","attachment":"r_finger_b"},{"name":"r_finger_b2","bone":"r_finger_b2","attachment":"r_finger_b"},{"name":"r_finger_a","bone":"r_finger_a","attachment":"r_finger_a"},{"name":"r_finger_a2","bone":"r_finger_a2","attachment":"r_finger_a"},{"name":"lock","bone":"lock","color":"ffffff00","attachment":"lock"},{"name":"lock_2","bone":"lock2","color":"ffffff00","attachment":"Lock"},{"name":"zj2","bone":"zj2","color":"ffffff00","attachment":"a/zhuj_00009"},{"name":"zj","bone":"zj","color":"ffffff00","attachment":"a/zhuj_00009"}],"ik":[{"name":"l_ik","order":2,"bones":["l_leg3"],"target":"l_ik"},{"name":"l_ik2","bones":["l_leg","l_leg2"],"target":"l_ik2","softness":50,"bendPositive":false},{"name":"lhand","order":8,"bones":["l_upparm2","l_armour"],"target":"lhand","softness":50},{"name":"r_ik","order":3,"bones":["r_leg3"],"target":"r_ik"},{"name":"r_ik2","order":1,"bones":["r_leg","r_leg2"],"target":"r_ik2","softness":50},{"name":"rhand","order":9,"bones":["r_upparm2","r_arm"],"target":"rhand","softness":50}],"transform":[{"name":"r_ear","order":5,"bones":["r_ear_s"],"target":"r_ear","rotation":14.97,"x":5.89,"y":20.41,"rotateMix":0.5,"translateMix":0.5,"scaleMix":0.5,"shearMix":0.5},{"name":"r_ear_ring_b","order":6,"bones":["r_ear_ringb_s"],"target":"r_ear_ring_b","rotation":-13.3,"x":13.93,"y":-1.34,"rotateMix":0.5,"translateMix":0.5,"scaleMix":0.5,"shearMix":0.5},{"name":"r_ear_ring_b2","order":7,"bones":["r_ear_ringa"],"target":"r_ear_ring_b","rotation":7.4,"x":-21.25,"y":-36.06,"rotateMix":3,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"tailstop","order":4,"bones":["tail"],"target":"tailstop","rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0}],"skins":[{"name":"default","attachments":{"body":{"body":{"type":"mesh","uvs":[0.14905,0,0.05732,0.13531,0.05112,0.24871,0.04492,0.3621,0.05236,0.5565,0.07468,0.72081,0.11434,0.80644,0.04245,0.96612,0.17633,0.98306,0.31021,1,0.49615,1,0.52094,0.87355,0.62096,0.87601,0.70937,0.87818,0.81598,0.85041,0.93746,0.75784,0.95482,0.56576,0.99201,0.50327,0.996,0.40145,1,0.29962,0.91763,0.17465,0.76143,0.05662,0.57797,0,0.46144,0,0.34492,0,0.24699,0,0.72556,0.35848,0.34726,0.66029,0.28537,0.25931,0.71399,0.70628,0.36451,0.42609,0.81777,0.58214,0.5104,0.18357,0.58203,0.60122,0.61379,0.39127,0.25729,0.84069,0.68418,0.19439,0.17677,0.54516,0.47638,0.7008,0.9013,0.41399,0.48908,0.33191,0.43889,0.52353,0.30185,0.09637,0.16255,0.3997,0.72568,0.50893,0.40138,0.84587,0.2286,0.73657,0.84575,0.28844,0.56737,0.76759,0.18221,0.12361,0.48257,0.78604,0.60565,0.79327],"triangles":[42,25,24,49,0,25,49,25,42,1,0,49,32,23,22,36,22,21,36,21,20,32,22,36,28,49,42,47,36,20,47,20,19,23,42,24,26,36,47,36,40,32,34,36,26,34,40,36,2,49,28,49,2,1,43,2,28,3,2,43,23,32,42,32,28,42,19,39,47,18,39,19,26,47,39,32,40,28,30,28,40,43,28,30,17,39,18,44,26,39,34,26,44,41,30,40,41,40,34,37,43,30,4,3,43,4,43,37,16,39,17,31,44,39,16,31,39,33,41,34,33,34,44,41,27,37,41,37,30,38,41,33,29,33,44,29,44,31,15,31,16,29,31,15,48,38,33,48,33,29,14,29,15,13,51,29,29,14,13,27,41,38,5,4,37,46,5,37,27,46,37,50,38,48,51,48,29,50,48,51,6,5,46,45,35,46,6,46,35,50,45,27,50,27,38,45,46,27,11,50,51,45,50,11,13,12,51,11,51,12,8,6,35,7,6,8,9,35,45,8,35,9,10,45,11,9,45,10],"vertices":[1,3,250.05,350.93,1,2,2,471.3,230.72,0.00204,3,146.89,343.28,0.99796,2,2,398.23,224.36,0.02147,3,85.83,302.64,0.97853,2,2,325.16,218,0.09153,3,24.76,262.01,0.90847,2,2,201.38,196.31,0.45201,3,-73.43,183.59,0.54799,2,2,98.09,168.4,0.86474,3,-150.66,109.55,0.13526,2,2,46.59,137.11,0.97903,3,-180.84,57.38,0.02097,1,2,-61.54,165.88,1,1,2,-61.29,84.41,1,1,2,-61.04,2.95,1,2,2,-45.64,-108.12,0.99445,3,-144.12,-202.02,0.00555,2,2,37.32,-111.7,0.85541,3,-69.6,-165.37,0.14459,2,2,44.04,-171.66,0.65507,3,-34.95,-214.75,0.34493,2,2,49.97,-224.66,0.478,3,-4.32,-258.41,0.522,2,2,76.57,-285.87,0.36681,3,48.39,-299.35,0.63319,2,2,145.87,-350.21,0.25392,3,140.06,-322.56,0.74608,2,2,270.21,-343.53,0.10251,3,245.96,-257.05,0.89749,2,2,313.28,-360.2,0.05898,3,291.74,-251.01,0.94102,2,2,378.76,-353.55,0.02402,3,346.01,-213.76,0.97598,2,2,444.25,-346.9,0.00659,3,400.28,-176.51,0.99341,2,2,517.39,-286.61,8.0E-5,3,435.53,-88.52,0.99992,1,3,440.66,32.55,1,1,3,404.13,143.2,1,1,3,362.27,199.63,1,1,3,320.41,256.07,1,1,3,285.23,303.5,1,2,2,383.85,-188.21,0.00687,3,271.15,-66.24,0.99313,1,2,159.4,10.96,1,2,2,410.85,83.51,0.00305,3,164.47,185.11,0.99695,2,2,160.35,-212.16,0.32405,3,86.53,-194.49,0.67595,2,2,310.69,21.44,0.00408,3,106.37,82.6,0.99592,2,2,248.38,-263.13,0.13495,3,188.23,-196.98,0.86505,1,3,284.61,105.27,1,2,2,216.65,-124.02,0.17899,3,93.65,-90.15,0.82101,2,2,353.62,-124.36,0.00291,3,213.98,-24.73,0.99709,1,2,36.52,48.69,1,1,3,341.42,16.95,1,2,2,218.95,123.01,0.3835,3,-22.85,127.7,0.6165,2,2,144.17,-69.75,0.64637,3,4.02,-77.3,0.35363,2,2,362.9,-298.1,0.02818,3,305.48,-172.72,0.97182,1,3,199.98,58.51,1,1,3,82.53,9.08,1,1,3,254.93,239.84,1,2,2,310.85,144.41,0.10338,3,47.51,190.57,0.89662,2,2,287.6,-201.63,0.07053,3,193.13,-124.2,0.92947,2,2,45.13,-37.83,0.98,3,-98.19,-96.81,0.02,2,2,100.76,75.06,0.96519,3,-103.55,28.93,0.03481,2,2,438.63,-253.78,0.00324,3,350.66,-97.5,0.99676,2,2,108.97,-130.03,0.61934,3,2.06,-147.08,0.38066,2,2,489.14,157.17,2.6E-4,3,197.83,287.3,0.99974,2,2,90.14,-81.02,0.77008,3,-37.98,-113.11,0.22992,2,2,95.71,-155.17,0.58803,3,2.48,-175.5,0.41197],"hull":26,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,0,22,24,24,26,22,100,100,102,102,24],"width":603,"height":646}},"body_back":{"body_back":{"type":"mesh","uvs":[0,0.9566,0.13313,1,0.258,1,0.38286,1,0.51508,0.92615,0.73176,0.94645,0.8401,0.8754,0.94844,0.80434,1,0.63178,1,0.51504,1,0.39831,0.92641,0.31372,0.96314,0.22913,0.86948,0.15807,0.77583,0.08702,0.70605,0,0.48937,0,0.27269,0,0.04866,0.03964,0,0.1513,0,0.31372,0,0.47613,0.02808,0.56368,0.05474,0.60543,0.0574,0.69138,0.03341,0.82644,0,0.88293,0.74083,0.61244,0.18776,0.25763,0.55176,0.26829,0.25497,0.62118,0.55305,0.48494,0.758,0.36077,0.45172,0.68962,0.26068,0.4955,0.37718,0.17216,0.26122,0.82219,0.3858,0.33557,0.6563,0.74391,0.82974,0.46691,0.14376,0.40706,0.38157,0.52561,0.58006,0.10536,0.70693,0.19624,0.1772,0.12395,0.45308,0.83618,0.55667,0.61153],"triangles":[42,16,15,42,15,14,44,18,17,19,18,44,35,17,16,35,16,42,44,17,35,43,42,14,43,14,13,28,44,35,19,44,28,29,35,42,29,42,43,20,19,28,11,13,12,37,35,29,28,35,37,32,43,13,32,13,11,29,43,32,40,20,28,40,28,37,39,32,11,39,11,10,21,20,40,31,29,32,31,32,39,37,29,31,34,40,37,41,34,37,39,10,9,31,41,37,22,21,40,22,40,34,23,22,34,27,46,31,41,31,46,39,27,31,30,23,34,30,34,41,39,9,8,27,39,8,33,41,46,30,41,33,24,23,30,38,46,27,33,46,38,7,27,8,6,38,27,36,30,33,24,30,36,25,24,36,45,33,38,36,33,45,7,6,27,4,45,38,5,4,38,6,5,38,1,0,26,1,25,36,1,26,25,2,1,36,3,2,36,45,3,36,4,3,45],"vertices":[240.34,-865.06,232.37,-903.93,237.19,-938.69,242.01,-973.45,269.42,-1007.15,271.65,-1068.31,297.3,-1095.49,322.95,-1122.67,377.07,-1129.79,412.34,-1124.9,447.6,-1120.01,470.32,-1095.98,497.29,-1102.66,515.14,-1073.61,533,-1044.57,556.59,-1021.5,548.23,-961.19,539.86,-900.88,519.24,-840.19,483.63,-831.32,434.56,-838.13,385.49,-844.93,360.13,-856.42,348.54,-865.58,322.68,-869.93,280.95,-868.91,262.6,-861.98,372.91,-1056.84,458.75,-888.04,469.58,-989.8,351.51,-921.98,404.18,-999.24,449.6,-1051.08,338.43,-979.61,389.7,-918.3,491.88,-937.18,291.03,-932.14,442.85,-946.42,329.93,-1038.82,420.31,-1075.49,411.91,-882.05,385.27,-953.21,519.89,-990.85,497.34,-1029.97,498.73,-879.5,294.21,-986.13,366.08,-1005.55],"hull":27,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,0],"width":281,"height":305}},"hair_t":{"hair_t":{"type":"mesh","uvs":[1,1,1,0.93655,1,0.8731,1,0.80965,1,0.74621,0.97867,0.65134,0.95734,0.55648,0.93166,0.49324,0.90598,0.43,0.89938,0.35095,0.89278,0.27189,0.91919,0.18968,0.9412,0.12644,0.88104,0.13593,0.82969,0.20233,0.82089,0.29087,0.78127,0.21182,0.70644,0.16755,0.65363,0.11063,0.62512,0.04678,0.60457,0,0.5777,0.03826,0.57295,0.10469,0.57295,0.15409,0.51661,0.1587,0.47709,0.16551,0.42097,0.17914,0.38224,0.15018,0.35774,0.10589,0.34114,0.05138,0.33008,0.14166,0.34193,0.2081,0.35853,0.23706,0.31337,0.26952,0.27385,0.3104,0.23907,0.33936,0.19243,0.35639,0.14027,0.3581,0.09047,0.34447,0.05886,0.3104,0.05095,0.26952,0.07387,0.2593,0.09601,0.26441,0.07545,0.20819,0.03752,0.19116,0.00116,0.23545,0,0.33936,0.02645,0.39216,0.06812,0.41367,0.11507,0.42638,0.16385,0.45577,0.20596,0.46757,0.24251,0.49014,0.27222,0.52294,0.30975,0.5429,0.33763,0.56244,0.35493,0.5825,0.35339,0.62355,0.34707,0.71554,0.34628,0.80071,0.35577,0.8944,0.36841,0.96765,0.39054,1,0.38659,0.93188,0.39608,0.87226,0.41505,0.82286,0.44824,0.80071,0.48381,0.80071,0.50831,0.80412,0.52807,0.81263,0.50989,0.85352,0.49092,0.8961,0.48618,0.96765,0.52175,0.92166,0.55653,0.92506,0.60501,0.9455,0.63821,0.96595,0.68168,0.9932,0.71962,1,0.73306,0.96254,0.72515,0.91995,0.71509,0.88104,0.69121,0.836,0.71509,0.85638,0.74395,0.8982,0.7748,0.93467,0.77431,0.87247,0.82738,0.92009,0.88046,0.96772,0.90235,0.92053,0.88494,0.87227,0.92923,0.92804,0.94067,0.92911,0.98545,1,0.56916,0.64447,0.82587,0.6385,0.70306,0.38182,0.45682,0.41814,0.62948,0.33442,0.74222,0.63473,0.66662,0.56659,0.53681,0.3129,0.43869,0.68673,0.93205,0.74328,0.7731,0.45982,0.87323,0.4955,0.48291,0.62679,0.55701,0.48373,0.60783,0.81374,0.37064,0.34021,0.61036,0.45399,0.41112,0.51834,0.65541,0.69911,0.91643,0.5967,0.77713,0.75995,0.5023,0.50074,0.87749,0.72979,0.82792,0.79865],"triangles":[94,67,106,68,67,94,69,68,94,108,94,112,69,94,108,82,112,99,108,112,82,73,70,69,71,70,73,74,69,108,73,69,74,75,74,108,76,75,108,82,76,108,72,71,73,77,76,82,77,82,81,77,81,80,78,77,80,79,78,80,102,111,106,102,57,111,58,57,102,67,66,102,67,102,106,65,58,102,65,102,66,59,58,65,64,59,65,60,59,64,63,60,64,61,60,63,61,63,62,30,29,28,31,30,28,31,28,27,32,31,27,26,109,32,26,32,27,97,26,25,98,23,22,101,24,23,19,22,21,98,18,17,19,18,22,19,21,20,22,18,98,11,13,12,10,13,11,14,13,10,15,14,10,104,16,15,9,105,15,9,15,10,105,9,8,105,8,7,104,15,105,113,105,7,43,40,44,41,43,42,41,40,43,45,44,40,46,45,40,46,40,39,47,46,39,48,39,38,47,39,48,49,38,37,48,38,49,50,37,36,49,37,50,51,36,35,50,36,51,51,35,52,33,32,109,109,26,97,97,25,101,52,35,34,111,109,97,53,52,34,109,54,34,109,34,33,55,54,109,53,34,54,111,55,109,56,55,111,115,111,97,57,56,111,96,98,17,96,17,16,25,24,101,98,101,23,110,101,98,104,96,16,107,101,110,115,97,101,107,115,101,96,110,98,100,96,104,100,110,96,106,111,115,94,107,110,94,110,100,112,94,100,112,100,99,106,115,94,94,115,107,113,7,6,99,100,104,95,104,105,95,105,113,99,104,95,116,95,113,5,103,113,5,113,6,116,113,103,103,5,4,114,99,95,117,95,116,114,95,117,103,4,3,83,82,99,114,83,99,90,116,103,117,116,90,86,83,114,86,114,117,92,91,103,86,84,83,87,86,117,87,117,90,90,103,91,92,103,3,2,92,3,84,86,85,92,2,1,88,87,90,88,90,89,93,92,1,93,1,0],"vertices":[1,31,-61.6,28.58,1,1,31,-51.11,13.46,1,2,31,-40.62,-1.65,1,35,-322.22,-524.55,0,3,31,-30.13,-16.77,0.99737,35,-304.72,-530.24,0,36,-108.13,-89.64,0.00263,3,31,-19.64,-31.89,0.98371,35,-287.22,-535.93,0,36,-89.73,-89.64,0.01629,3,31,7,-46.88,0.8976,35,-256.94,-531.75,0,36,-62.22,-76.31,0.1024,3,31,33.64,-61.88,0.68276,35,-226.66,-527.57,0,36,-34.71,-62.97,0.31724,3,31,57.28,-67.8,0.41463,35,-204.26,-517.98,0,36,-16.37,-46.93,0.58537,3,31,80.92,-73.71,0.08773,35,-181.85,-508.38,0,36,1.97,-30.88,0.91227,4,31,97.38,-90.19,0.00184,35,-158.78,-511.54,0,36,24.89,-26.75,0.92623,37,-0.83,-33.72,0.07193,3,35,-135.7,-514.7,0,36,47.82,-22.62,0.23199,37,15.25,-16.88,0.76801,2,35,-118.12,-537.77,0,37,44.24,-16.16,1,2,35,-104.93,-556.52,0,37,67.16,-16.46,1,1,37,42.78,12.29,1,5,31,157.74,-100.77,0.00179,32,-48.3,-88.5,0.0031,36,67.99,16.81,0.07896,37,8.3,26.87,0.91389,38,-67.78,-106.77,0.00226,5,31,147.62,-76.53,0.06218,32,-46.46,-62.31,0.06667,36,42.32,22.31,0.71947,37,-15.68,16.18,0.10635,38,-86.82,-88.69,0.04533,4,31,181.03,-81.25,0.07264,32,-18.72,-81.52,0.23909,36,65.24,47.07,0.47841,38,-54.35,-79.52,0.20986,4,31,226.77,-65.13,0.00828,32,29.39,-87.66,0.22154,36,78.08,93.84,0.16765,38,-19.01,-46.31,0.60253,3,32,64.39,-99.36,0.00589,36,94.58,126.85,0.02029,38,12.29,-26.74,0.97382,2,36,113.1,144.67,5.6E-4,38,37.38,-21.2,0.99944,1,38,55.65,-17.31,1,3,32,114.33,-113.47,1.1E-4,38,54.95,2.81,0.99985,39,-39.4,-121.83,4.0E-5,5,32,114.55,-93.98,0.02542,33,-55.07,-89.55,2.5E-4,35,-27.8,-339.59,0,38,40.05,15.38,0.96866,39,-52.1,-107.04,0.00566,5,32,112.54,-79.79,0.15157,33,-55.85,-75.24,0.00374,35,-41.43,-335.16,0,38,27.83,22.85,0.8135,39,-62.98,-97.72,0.03119,5,32,147.21,-73.52,0.39051,33,-20.76,-71.99,0.07899,35,-31.82,-301.26,0,38,45.05,53.59,0.3286,39,-41.07,-70.12,0.2019,5,32,171.39,-68.09,0.28816,33,3.8,-68.68,0.16807,35,-26.06,-277.15,0,38,56.24,75.7,0.149,39,-26.5,-50.08,0.39477,5,32,205.56,-59.25,0.04629,33,38.61,-62.83,0.08654,35,-18.98,-242.58,0,38,71.16,107.69,0.02133,39,-6.68,-20.87,0.84583,4,32,230.71,-64.16,5.8E-4,35,-3.51,-222.15,0,38,90.95,123.97,3.2E-4,39,15.45,-7.96,0.99911,1,39,35.17,-4.69,1,2,35,31.68,-206.58,0,39,53.92,-7.1,1,1,39,38.55,15.19,1,2,33,87.48,-51.75,0.05177,39,19.1,22.1,0.94823,2,33,76.66,-43.93,0.26237,39,5.97,19.69,0.73763,3,33,104.34,-33,0.85622,35,-23.12,-170.51,0,39,17.19,47.25,0.14378,4,33,128.36,-19.82,0.98032,34,-18.15,-18.86,0.00805,35,-26.76,-143.36,0,39,24.26,73.72,0.01163,4,33,149.6,-10.25,0.40644,34,3.59,-10.46,0.59355,35,-28.03,-120.09,0,39,32.03,95.69,1.0E-5,4,33,178.44,-3.73,0.001,34,32.74,-5.52,0.999,35,-23.72,-90.85,0,39,47.25,121.03,0,1,34,65.34,-5.03,1,2,34,96.46,-8.98,0.99158,35,-0.74,-31.31,0.00842,2,34,116.22,-18.86,0.3722,35,14.77,-15.57,0.6278,2,34,121.16,-30.71,0.03643,35,27.57,-14.53,0.96357,2,34,106.84,-33.68,0.00113,35,25.96,-29.08,0.99887,2,33,240.07,-27.09,0,35,20.28,-41.77,1,1,35,39.75,-34.6,1,1,35,51.78,-13.57,1,3,33,299.72,-32.26,0,35,46.58,12.01,1,39,151.68,188.98,0,3,33,298.8,-2.13,0,35,18.15,22.01,1,39,129.27,209.14,0,4,33,281.46,12.27,0,34,136.48,4.86,0.23392,35,-1.52,11.02,0.76608,39,106.88,206.55,0,3,33,255.12,17.08,0,34,110.43,11.09,1,39,85.2,190.83,0,2,34,81.09,14.78,1,35,-28.08,-38.59,0,1,34,50.6,23.3,1,1,34,24.28,26.72,1,2,33,145.08,33.3,0.64231,34,1.44,33.27,0.35769,2,33,126.02,41.78,0.99984,40,-50.28,-78.55,1.6E-4,2,33,102.28,46.29,0.98705,40,-48.58,-54.45,0.01295,3,33,84.57,51,0.89321,40,-45.97,-36.31,0.10673,41,117.93,-131.99,6.0E-5,4,32,229.98,62.37,0.00163,33,73.46,56.22,0.61689,40,-42.08,-24.67,0.37782,41,110.68,-122.08,0.00366,4,32,229.26,74.29,2.6E-4,33,73.77,68.16,0.27919,40,-30.18,-23.58,0.71925,41,116.67,-111.75,0.0013,2,33,76.27,95.01,0.03669,40,-3.22,-22.93,0.96331,2,35,-175.98,-142.47,0,40,21.2,-19.2,1,1,40,46.96,-8.72,1,1,40,66.54,2.69,1,2,40,73.43,17.92,1,41,142.77,-3.24,0,3,35,-219.94,-154.67,0,40,54.38,12.11,0.99995,41,136.48,-22.13,5.0E-5,4,32,192.71,141.95,0.00202,35,-205.33,-165.65,0,40,36.33,15.01,0.99209,41,123.68,-35.17,0.00589,5,32,182.98,126.1,0.02187,33,32.16,123.78,0.00508,35,-195.37,-181.36,0,40,20.2,24.24,0.91897,41,106.81,-42.99,0.05408,5,32,163.34,116.82,0.08233,33,11.79,116.24,0.03959,35,-195.68,-203.07,0,40,10.33,43.59,0.6777,41,85.32,-39.85,0.20038,5,32,141.34,113.7,0.12842,33,-10.41,115.03,0.04255,35,-202.55,-224.22,0,40,6.54,65.5,0.39976,41,65.26,-30.27,0.42926,5,32,126.03,112.52,0.12147,33,-25.75,115.18,0.02779,35,-208.22,-238.48,0,40,4.9,80.75,0.22502,41,51.87,-22.77,0.62571,5,32,113.46,113.23,0.05717,33,-38.22,116.98,0.00949,35,-214.39,-249.46,0,40,5.23,93.34,0.07499,41,41.79,-15.22,0.85834,5,32,123.04,126.57,0.00259,33,-27.52,129.43,4.1E-4,35,-222.15,-234.99,0,40,18.85,84.17,0.00392,41,57.15,-9.42,0.99308,5,32,133.04,140.46,1.0E-5,33,-16.35,142.41,0,35,-230.23,-219.9,0,40,33.04,74.6,2.0E-5,41,73.17,-3.39,0.99997,4,32,133.06,161.42,1.0E-5,33,-14.52,163.29,0,40,53.99,75.21,1.0E-5,41,84.79,14.06,0.99998,1,41,58.98,11.6,1,1,41,39.79,21.86,1,2,31,150.21,156.36,0.0168,41,15,40.27,0.9832,2,31,129.79,149.4,0.05254,41,-1.16,54.56,0.94746,2,31,102.96,140.4,0.08571,41,-22.28,73.4,0.91429,2,31,82.36,128.5,0.09209,41,-42.82,85.4,0.90791,2,31,81.65,114.78,0.09581,41,-55.08,79.22,0.90419,3,31,92.75,107.45,0.10785,32,-12.87,126.73,0.00181,41,-55.95,65.94,0.89035,3,31,104.35,101.77,0.13824,32,-5.06,116.44,0.00828,41,-55.14,53.05,0.85348,3,31,124.06,99.55,0.27556,32,11.56,105.6,0.04416,41,-47.3,34.83,0.68028,3,31,108.43,95.89,0.54334,32,-4.05,109.36,0.03887,41,-58.22,46.6,0.41779,3,31,86.7,95.57,0.7217,32,-23.61,118.83,0.01395,41,-69.27,65.32,0.26435,3,31,64.83,93.26,0.76976,32,-44.19,126.59,0.00579,41,-82.11,83.17,0.22445,3,31,75.37,78.62,0.80256,32,-41.35,108.77,0.00679,41,-89.61,66.76,0.19066,2,31,40.24,71.06,0.9487,41,-113.59,93.52,0.0513,2,31,5.11,63.49,0.98325,41,-137.57,120.27,0.01675,2,31,1.67,44.44,0.98561,41,-155.81,113.82,0.01439,2,31,18.6,39.15,0.98849,41,-152.02,96.5,0.01151,2,31,-13.36,36.66,0.99971,41,-170.03,123.03,2.9E-4,1,31,-19.42,32.83,1,1,31,-54.13,33.76,1,6,31,218.4,97.42,0.00197,32,94.89,61.34,0.46454,33,-61.21,66.89,0.01013,35,-175.94,-288.95,0,40,-47.21,110.33,0.04658,41,-2.4,-48.16,0.47677,3,31,87.58,4.51,0.99612,32,-63.71,37.06,4.0E-5,41,-147.92,19.42,0.00384,4,31,193.08,-12.88,0.00105,32,22.75,-25.84,0.7646,36,15.94,95.95,0.08638,38,-70.92,-12.1,0.14798,4,32,173.63,6.22,0.00578,33,12.47,5.16,0.97992,40,-99.9,29.95,0.01114,41,32.67,-137.65,0.00316,5,32,70.21,-32.99,0.63018,35,-102.08,-352.6,0,36,29.68,141.94,0.00919,38,-35.22,19.97,0.35978,39,-125.67,-90.52,8.4E-4,4,31,131.15,33.42,0.74875,32,-11.8,43.33,0.13476,35,-206.69,-392.69,0,41,-101.22,-4.1,0.11649,4,31,181.23,44.13,0.11995,32,37.76,30.41,0.71938,35,-173.29,-353.86,0,41,-67.1,-42.29,0.16067,5,32,128.43,-31.02,0.73318,33,-35.8,-28.03,0.02197,35,-78.25,-299.44,0,38,0.31,66.14,0.18983,39,-83.25,-50.6,0.05502,4,32,173.9,84.93,0.10715,33,19.55,83.56,0.15377,40,-21.22,32.07,0.6024,41,76.46,-72.24,0.13668,3,31,15.74,-8.37,0.98676,35,-273.29,-495.8,0,36,-88.88,-47.17,0.01324,4,31,144.22,-19.25,0.73181,32,-23.78,-9.6,0.03897,36,-6.68,52.17,0.21206,38,-113.05,-37.66,0.01715,3,31,86.91,-46.44,0.25332,35,-193.59,-483.05,0,36,-17.03,-10.41,0.74668,4,32,148.98,63.84,0.31834,33,-7.11,64.7,0.18251,40,-43.07,56.34,0.27716,41,44.03,-76.02,0.22199,5,32,108.96,16.25,0.92743,33,-51.09,20.75,0.00237,35,-129.26,-296.14,0,40,-91.84,94.9,0.01205,41,-15.64,-93.5,0.05816,2,31,170.55,123.96,0.00933,41,-3.06,6.55,0.99067,2,33,67.48,-14.47,0.82256,39,-21.67,33.41,0.17744,5,31,228.74,37.35,2.5E-4,32,77.17,3.03,0.99114,35,-131.37,-330.51,0,40,-106.03,126.28,2.3E-4,41,-49.44,-86.91,0.00838,4,32,197.83,39.01,0.02891,33,39.41,35.73,0.72157,40,-66.4,6.76,0.23214,41,70.97,-123.74,0.01738,5,31,165.08,79.7,0.17404,32,39.29,69.45,0.29033,35,-207.67,-335.32,0,40,-40.79,166.15,2.0E-5,41,-44.21,-10.63,0.53561,3,31,47.99,-37.72,0.71699,35,-229.85,-499.65,0,36,-46.38,-37.41,0.28301,3,31,92.52,50.81,0.83996,32,-38.51,76.22,0.01729,41,-105.26,38.07,0.14276,4,32,142.13,25.94,0.71705,33,-17.22,27.54,0.14769,40,-81.15,62.04,0.06442,41,17.35,-103.78,0.07084,2,31,45.98,7.86,0.99735,41,-165.63,57.21,0.00265,2,31,60.04,41.93,0.94849,41,-129.07,61.88,0.05151],"hull":94,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,70,70,72,72,74,74,76,76,78,78,80,80,82,82,84,84,86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104,106,106,108,108,110,110,112,112,114,114,116,116,118,118,120,120,122,122,124,124,126,126,128,128,130,130,132,132,134,134,136,136,138,138,140,140,142,142,144,144,146,146,148,148,150,150,152,152,154,154,156,156,158,158,160,160,162,162,164,164,166,166,168,168,170,170,172,172,174,174,176,176,178,178,180,180,182,182,184,184,186,186,0],"width":625,"height":290}},"head":{"head":{"type":"mesh","uvs":[0.23467,0.78444,0.37718,0.76636,0.53048,0.8274,0.67514,1,1,1,1,0.83418,0.88674,0.69401,0.7939,0.6307,0.77014,0.5787,0.84356,0.51314,0.84356,0.38427,0.62764,0.04062,0.49161,0,0.3016,0,0.12023,0.07227,0.02523,0.19436,0,0.3187,0,0.45888,0.02523,0.60809,0.1116,0.71888,0.23035,0.6194,0.31888,0.40462,0.52832,0.30062,0.69889,0.32096,0.42252,0.63975,0.57366,0.54479,0.69026,0.54931,0.58446,0.75505,0.64492,0.71209,0.72049,0.66914],"triangles":[4,3,5,6,5,3,3,29,6,29,7,6,2,27,3,27,28,3,3,28,29,27,2,24,19,20,0,0,20,1,2,1,24,1,20,24,28,27,25,19,18,20,27,24,25,28,26,29,28,25,26,29,8,7,29,26,8,25,24,21,24,20,21,21,20,17,20,18,17,8,26,9,10,9,26,21,22,25,26,25,23,25,22,23,26,23,10,17,16,21,16,15,21,15,14,21,14,13,21,22,13,12,22,21,13,22,11,23,10,23,11,22,12,11],"vertices":[1,26,40.53,-149.57,1,1,26,74.3,-173.68,1,2,26,95.63,-216.01,0.5,44,6.75,-47.35,0.5,1,44,68.39,-62.1,1,1,44,145.04,-7.88,1,1,44,118.61,29.48,1,1,44,69.54,42.16,1,2,26,188.44,-227.31,0.5,44,37.55,40.93,0.5,1,26,193.06,-212.09,1,1,26,220.93,-213.05,1,1,26,244.93,-186.8,1,1,26,262.88,-74.69,1,1,26,241.43,-39.89,1,1,26,200.9,-2.84,1,1,26,148.76,17.81,1,1,26,105.76,11.47,1,1,26,77.22,-8.94,1,1,26,51.11,-37.5,1,1,26,28.7,-72.81,1,1,26,26.49,-112.22,1,1,26,70.35,-115.11,1,1,26,129.23,-88.63,1,1,26,193.27,-108.28,1,1,26,225.86,-145.69,1,1,26,107.55,-156.73,1,1,26,157.47,-166.86,1,1,26,181.5,-190.52,1,2,26,120.61,-211.8,0.5,44,7.95,-22.04,0.5,2,26,141.51,-214.84,0.5,44,15.37,-2.27,0.5,2,26,165.63,-220.83,0.5,44,26.35,20.02,0.5],"hull":20,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,0,38,0,40,40,42,42,44,44,46,46,20,2,48,48,50,50,52,52,16,4,54,54,56,56,58,58,14],"width":289,"height":276}},"head_beard_b":{"head_beard_b":{"type":"mesh","uvs":[0.4976,1,0.52707,0.87968,0.55654,0.75936,0.66851,0.5911,0.78048,0.42284,1,0.38265,1,0.2822,0.92413,0.18426,0.84826,0.08631,0.6803,0,0.44014,0,0.19999,0,0.09999,0.09589,0,0.19179,0,0.3274,0.08802,0.42284,0.04401,0.58105,0,0.73927,0.14106,0.63379,0.16168,0.74931,0.35911,0.71415,0.38268,0.88493,0.43278,1,0.49157,0.44396,0.86158,0.28706,0.24567,0.34296,0.6811,0.26133,0.38276,0.27419,0.26709,0.51149,0.53512,0.19559,0.31718,0.15384,0.59552,0.47699,0.45436,0.66692,0.13585,0.21936,0.58411,0.11415],"triangles":[13,12,33,14,13,33,15,14,33,15,33,25,15,25,28,18,15,28,16,15,18,17,16,18,19,18,28,19,28,20,30,11,10,33,12,11,33,11,30,27,30,10,27,10,29,25,33,30,25,30,27,23,27,29,23,29,31,28,25,27,28,27,23,32,28,23,20,28,32,31,32,23,2,32,31,1,32,2,21,20,32,21,32,1,1,22,21,0,22,1,34,10,9,29,10,34,26,9,8,34,9,26,24,8,7,26,8,24,24,7,6,5,24,6,4,26,24,4,24,5,26,29,34,31,26,4,31,29,26,3,31,4,2,31,3],"vertices":[3,45,98.89,87.12,0.00523,46,38.08,79.65,0.93692,47,11.35,81.68,0.05785,3,45,91.18,71.74,0.03882,46,26.37,67.04,0.90884,47,-4.35,74.63,0.05234,3,45,83.46,56.35,0.16909,46,14.66,54.43,0.8013,47,-20.05,67.58,0.02962,3,45,56.79,35.95,0.74597,46,-16.66,42.3,0.25397,47,-53.62,68.6,5.0E-5,2,45,30.11,15.54,0.99819,46,-47.98,30.16,0.00181,1,45,-19.53,13.67,1,1,45,-20.45,0.45,1,1,45,-4.32,-13.64,1,1,45,11.82,-27.72,1,2,45,48.73,-41.71,0.97579,46,-46.12,-30,0.02421,3,45,102.63,-45.46,0.23509,46,4.58,-48.68,0.76089,47,-69.5,-23.46,0.00402,3,45,156.53,-49.21,3.0E-5,46,55.28,-67.36,0.71012,47,-30.08,-60.42,0.28985,2,46,80.77,-63.26,0.466,47,-5.01,-66.57,0.534,2,46,106.26,-59.16,0.30578,47,20.06,-72.72,0.69422,2,46,112.45,-42.37,0.26865,47,32.31,-59.66,0.73135,2,46,98.22,-23.7,0.14867,47,26.47,-36.93,0.85133,2,46,114.73,-7.52,0.00351,47,47.98,-28.47,0.99649,1,47,69.49,-20,1,1,47,36.81,-8.45,1,1,47,43.86,5.85,1,3,45,127.36,47.32,0.00236,46,54.28,33.47,0.67009,47,8.28,32.84,0.32755,3,45,123.63,70.17,5.9E-4,46,57.09,56.46,0.90424,47,19.82,52.91,0.09517,3,45,113.44,86.11,3.1E-4,46,51.77,74.61,0.93533,47,21.99,71.7,0.06436,3,45,95.15,13.81,0.07184,46,13.98,10.31,0.92713,47,-37.86,27.21,0.00102,1,45,10.67,-1.08,1,2,46,61.29,-21.33,0.6048,47,-6.62,-20.36,0.3952,1,45,50.94,-7.28,1,3,45,118.02,-10.25,0.00992,46,29.21,-19.18,0.98469,47,-35.33,-5.89,0.00539,1,47,5.08,-0.84,1,2,45,83.1,-18.22,0.61725,46,-6.55,-17.07,0.38275,3,45,131.64,-27.12,0.01237,46,37.56,-39.19,0.89658,47,-35.43,-27.57,0.09106,2,45,72.12,19.78,0.69962,46,-6.46,22.49,0.30038,3,45,105.55,42.59,0.05542,46,32.01,35.03,0.8662,47,-11.62,42.95,0.07838,2,46,78.83,-45.18,0.43351,47,0.25,-49.16,0.56649,2,45,71.36,-28.18,0.82384,46,-20.61,-23.34,0.17616],"hull":23,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,0],"width":225,"height":132}},"head_beard_f":{"head_beard_f":{"type":"mesh","uvs":[0.50254,0.11314,0.53275,0.21387,0.56295,0.31461,0.65962,0.4245,0.82981,0.45656,1,0.48861,0.96877,0.58782,0.93754,0.68703,0.82879,0.7084,0.72004,0.72977,0.60827,0.86103,0.4391,0.87324,0.32733,0.93124,0.279,1,0.21254,1,0.17327,0.89156,0.17025,0.73282,0.22462,0.58019,0.34545,0.51914,0.24275,0.44587,0.07056,0.36956,0,0.38482,0,0.30545,0.10077,0.26882,0.27295,0.25661,0.15212,0.16503,0.08264,0.07956,0.02223,0,0.12191,0,0.29108,0.06124,0.39681,0.08719,0.53297,0.509,0.41058,0.35977,0.49354,0.70647,0.31084,0.74766,0.69703,0.58386,0.61046,0.67755,0.38149,0.61256,0.40608,0.19882,0.87698,0.58537,0.21941,0.33999,0.44655,0.46301,0.39065,0.77425],"triangles":[26,27,28,25,28,29,26,28,25,38,30,0,38,0,1,24,25,29,38,24,29,38,29,30,40,23,24,32,38,1,32,1,2,24,38,32,40,24,32,20,22,23,20,23,40,21,22,20,19,40,32,20,40,19,41,32,2,31,41,2,18,19,32,41,18,32,15,16,34,12,42,11,15,34,12,13,14,15,12,13,15,37,18,41,37,41,31,17,18,37,33,37,31,34,17,37,42,34,37,16,17,34,33,42,37,10,33,36,11,42,33,11,33,10,12,34,42,3,31,2,35,3,4,31,3,35,39,4,5,35,4,39,6,39,5,36,31,35,7,39,6,36,33,31,8,35,39,8,39,7,9,36,35,8,9,35,10,36,9],"vertices":[1,62,15.26,-48.85,1,2,59,51.28,-76.95,0.01729,62,-0.42,-36.43,0.98271,2,59,49.86,-57.01,0.17834,62,-16.09,-24.01,0.82166,2,59,36.38,-32.54,0.75033,62,-43.24,-17.43,0.24967,2,59,5.86,-19.37,0.99558,62,-73.56,-31.05,0.00442,1,59,-24.66,-6.2,1,1,59,-14.64,10.85,1,1,59,-4.63,27.91,1,2,59,16.63,27.25,0.9988,60,-40.1,43.36,0.0012,2,59,37.89,26.59,0.90812,60,-20.31,35.55,0.09188,3,59,64.34,46.17,0.39602,60,11.19,45.03,0.58793,61,-4.85,57.8,0.01605,3,59,96.53,41.25,0.04257,60,39.82,29.52,0.58388,61,10.08,28.86,0.37355,3,59,119.89,47.25,6.0E-5,60,63.84,27.27,0.03318,61,28.66,13.47,0.96676,1,61,44.32,10.09,1,1,61,49.35,-1.64,1,1,61,33.38,-16.68,1,3,60,68.99,-20.73,0.22226,61,5.89,-29.1,0.77404,62,0.58,84.26,0.0037,3,60,44.6,-39.57,0.79105,61,-24.88,-30.93,0.13414,62,8.53,54.48,0.07482,4,59,99.18,-28.34,0.00977,60,18.8,-36.87,0.52807,61,-44.68,-14.17,0.00191,62,-3.92,31.72,0.46025,2,60,27.94,-59.21,0.06339,62,20.22,31.52,0.93661,1,62,55.65,38.45,1,1,62,65.12,48.55,1,1,62,73.72,36.16,1,1,62,61.79,19.42,1,1,62,35.94,-1.33,1,1,62,64.92,-2.41,1,1,62,85.14,-8.15,1,1,62,103.29,-13.96,1,1,62,87.56,-24.87,1,1,62,54.24,-33.82,1,1,62,34.75,-41.33,1,3,59,63.64,-22.26,0.55276,60,-12.59,-19.13,0.14794,62,-32.41,9.62,0.29931,1,62,3.06,-0.29,1,3,59,79.33,12.66,0.07857,60,13.97,8.43,0.91718,61,-23.17,25.98,0.00425,3,60,47.75,-3.84,0.63078,61,-2.15,-3.18,0.36745,62,-23.2,71.19,0.00176,2,59,36.07,-1.42,0.99794,62,-66.4,3.36,0.00206,2,59,56.22,12.26,0.83826,60,-7.91,15.87,0.16174,4,59,96.36,-9.5,0.00145,60,22.51,-18.18,0.87545,61,-31.09,-0.82,8.6E-4,62,-19.72,42.37,0.12225,1,62,21.2,-24.92,1,1,59,2.44,6.5,1,2,60,20.9,-78.58,0.00594,62,35.36,17.55,0.99406,3,59,77.89,-34.45,0.14305,60,-3.3,-35.42,0.22133,62,-13.79,11.9,0.63561,3,59,101.44,20.85,0.00551,60,37.55,8.66,0.83489,61,-3.55,12.9,0.1596],"hull":31,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,0],"width":192,"height":190}},"headmouth":{"headmouth":{"x":60.98,"y":0.2,"rotation":38.79,"width":172,"height":109}},"l_arm":{"l_arm":{"x":86.74,"y":-13.25,"rotation":66.25,"width":191,"height":184}},"l_armour":{"l_armour":{"x":67.24,"y":-12.87,"rotation":66.25,"width":184,"height":200}},"l_beard":{"l_beard":{"type":"mesh","uvs":[0.27682,0,0.14862,0.08845,0,0.19099,0,0.37968,0,0.56265,0.03753,0.69116,0.07098,0.80567,0,1,0.90171,1,0.78409,0.83426,0.77745,0.72847,0.76938,0.59982,0.94582,0.45401,0.86496,0.33965,0.94485,0.19418,1,0.09378],"triangles":[14,0,15,1,0,14,14,2,1,7,6,9,8,7,9,3,11,4,5,4,11,5,11,10,6,5,10,6,10,9,13,2,14,3,2,13,12,3,13,12,11,3],"vertices":[1,26,112.99,-125.71,1,1,26,90.42,-133.11,1,1,56,36.14,-53.64,1,2,56,80.16,-50.12,0.93755,57,-29.07,-50.12,0.06245,2,56,122.84,-46.72,0.32047,57,13.61,-46.72,0.67953,3,56,152.54,-40.92,0.02686,57,43.31,-40.92,0.94911,58,-29.51,-40.92,0.02402,2,57,69.78,-35.75,0.59075,58,-3.04,-35.75,0.40925,1,58,42.8,-38.57,1,1,58,36.27,43.23,1,2,57,71.28,29.47,0.37868,58,-1.54,29.47,0.62132,2,57,46.66,26.9,0.94433,58,-26.16,26.9,0.05567,2,56,125.93,23.77,0.17361,57,16.71,23.77,0.82639,2,56,90.65,37.06,0.95658,57,-18.58,37.06,0.04342,1,56,64.56,27.59,1,1,26,127.2,-200.26,1,1,26,146.75,-186.31,1],"hull":16,"edges":[12,14,14,16,16,18,22,24,24,26,0,30,4,6,6,8,8,10,10,12,18,20,20,22,0,2,2,4,26,28,28,30,2,28],"width":91,"height":234}},"l_ear":{"l_ear":{"type":"mesh","uvs":[0.23839,0.76519,0.44833,1,1,1,1,0.76193,1,0.49441,1,0.25796,1,0,0.71964,0,0.36855,0.24323,0,0.49855],"triangles":[8,5,4,8,7,5,7,6,5,1,3,2,1,0,3,3,0,4,0,9,4,9,8,4],"vertices":[1,29,20.15,15.41,1,1,29,-4.88,9.38,1,1,29,-8.32,-15.21,1,1,29,15.73,-18.58,1,2,29,42.75,-22.36,0.73651,30,0.76,-23.46,0.26349,2,29,66.64,-25.7,0.03658,30,24.38,-18.62,0.96342,1,30,50.16,-13.35,1,1,30,47.63,-0.99,1,2,29,72.07,2.23,0.02184,30,20.16,9.52,0.97816,2,29,48.57,22.26,0.92807,30,-8.68,20.55,0.07193],"hull":10,"edges":[2,4,12,14,14,16,16,18,8,10,10,12,2,0,0,18,4,6,6,8],"width":45,"height":102}},"l_eye":{"l_eye":{"x":8.91,"y":-0.86,"rotation":-34.08,"width":17,"height":15}},"l_finger_a":{"l_finger_a":{"type":"mesh","uvs":[1,1,0.86727,1,0.66479,0.53694,0.51568,0.58383,0,0.65185,0,0,0.19829,0,0.47673,0,1,0,0.15557,0.27187],"triangles":[9,6,7,3,9,7,9,5,6,4,5,9,4,9,3,2,7,8,0,1,2,8,0,2,3,7,2],"vertices":[1,10,130,-12.23,1,1,10,117.56,-33.71,1,2,9,114.94,-39.63,0.45352,10,30.46,-27.04,0.54648,1,8,157.81,65.97,1,1,8,103.77,-14.73,1,1,8,19.69,57.45,1,1,8,43.85,85.59,1,2,9,83.09,52.85,0.8084,10,-66.15,-11.74,0.1916,1,10,-17.12,72.94,1,1,8,73.71,49.42,1],"hull":9,"edges":[8,10,0,16,0,2,2,4,4,16,10,12,12,18,4,6,6,8,18,6,12,14,14,16,4,14],"width":187,"height":170}},"l_finger_b":{"l_finger_b":{"type":"mesh","uvs":[1,0.51051,0.78902,0.99999,0.57176,1,0.12581,0.80863,0.53734,0.60657,0.06593,0.28854,0,0,0.65224,0,1,0.36769],"triangles":[5,6,7,4,5,7,3,4,2,2,4,1,1,4,0,0,4,8,4,7,8],"vertices":[2,11,94.37,22.26,0.62846,12,-17.17,22.96,0.37154,1,12,53.38,25.7,1,1,12,68.12,-2.14,1,2,11,26.2,-91.41,0,12,76.39,-70.93,1,2,11,52.92,-31.94,0.45304,12,25.26,-30.48,0.54696,1,8,181.56,-18.83,1,1,8,146.88,-1.65,1,1,8,208.48,70.11,1,2,11,81.94,36.05,0.91025,12,-33.58,14.28,0.08975],"hull":9,"edges":[8,10,10,12,12,14,14,16,10,14,16,8,6,8,2,4,4,6,2,0,0,16,8,0],"width":145,"height":130}},"l_finger_c":{"l_finger_c":{"type":"mesh","uvs":[1,0.2059,0.91275,0.83391,0.81682,0.99998,0,1,1.0E-5,0.59484,0.44765,0.60693,0.50456,0.19374,0.54629,1.0E-5,1,0],"triangles":[6,7,0,7,8,0,0,5,6,1,5,0,2,5,1,3,4,5,3,5,2],"vertices":[1,8,188.86,-0.79,1,2,13,81.53,27.97,0.64282,14,-21.87,20.78,0.35718,2,13,102.02,17.48,0.20684,14,-4.6,36,0.79316,1,14,93.85,5.97,1,1,14,79.89,-39.76,1,2,13,59.47,-32.57,0.23965,14,26.36,-21.93,0.76035,1,8,147.11,-47.23,1,1,8,133.19,-28.34,1,1,8,170.43,15.03,1],"hull":9,"edges":[14,16,12,14,2,0,0,16,10,12,2,10,6,8,8,10,12,0,2,4,4,6,10,4],"width":126,"height":118}},"l_finger_d":{"l_finger_d":{"type":"mesh","uvs":[1,0.2697,1,0.43237,0.49844,0.99999,0.27323,1,0.05049,0.68462,0,0.25986,0.35345,0.51742,0.30353,0,1,0],"triangles":[7,8,0,0,6,7,3,4,6,4,5,6,3,6,2,2,6,1,1,6,0],"vertices":[1,8,151.75,-26.93,1,1,15,-4.98,39.32,1,2,15,84.6,30.35,0.98314,16,-29.77,6.01,0.01686,2,15,107.82,8.37,0.23589,16,-3,23.5,0.76411,1,16,40.21,15.18,1,1,16,68.74,-15.4,1,2,15,67.37,-17.79,0.6513,16,13.06,-21.92,0.3487,1,8,67.48,-84.92,1,1,8,131.9,-9.88,1],"hull":9,"edges":[12,14,14,16,0,16,14,0,12,4,10,12,0,2,2,4,4,6,6,8,12,6,8,10],"width":142,"height":97}},"l_hand":{"l_hand":{"x":85.5,"y":12.82,"rotation":49.35,"width":236,"height":152}},"l_hand2":{"r_hand":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[221.31,134.74,182.59,-229.21,-41.15,-205.41,-2.43,158.54],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":366,"height":225}},"l_leg":{"l_leg":{"type":"mesh","uvs":[0,0,0.38747,0,0.74199,0.28564,0.83631,0.64779,0.75522,0.68707,0.59861,0.66926,0.57636,0.70766,0.69103,0.84858,0.76802,0.88789,0.99222,0.93764,1,1,0.48373,0.98435,0.52022,0.89414,0.49957,0.85583,0.28127,0.68446,0.30726,0.60179,0.41697,0.55447,0.36977,0.4857,0,0.37108],"triangles":[12,7,8,11,12,8,8,9,10,10,11,8,6,14,15,13,14,6,13,6,7,12,13,7,5,16,2,3,5,2,15,16,5,4,5,3,5,6,15,18,0,1,17,18,1,2,17,1,16,17,2],"vertices":[1,64,-64.32,15.84,1,1,64,17.04,109.4,1,1,64,189.12,110.1,1,2,64,332.72,25.23,0.16781,65,-30.44,71.02,0.83219,3,64,329.12,-6.03,0.07378,65,1,69.69,0.92561,66,61.91,90.07,6.1E-4,2,65,36.25,33.17,0.83025,66,28.68,51.71,0.16975,2,65,52.39,42.81,0.39548,66,39.72,36.5,0.60452,2,66,113.31,34.1,0.75,68,11.88,36.78,0.25,2,66,141.42,45.67,0.35,68,39.73,24.61,0.65,1,68,114.62,17.79,1,1,68,123.05,-9.28,1,1,68,-39.91,-37.39,1,2,66,102.09,-23.24,0.35,68,-37.16,5.02,0.65,2,66,83.86,-19.73,0.75,68,-47.3,20.58,0.25,3,64,228.71,-119.7,3.0E-4,65,121.62,-22.25,0.29172,66,-18.92,-38.26,0.70798,3,64,205.91,-88.85,0.03635,65,92.5,-47.22,0.74889,66,-46.38,-11.48,0.21476,3,64,212.77,-48.29,0.39835,65,51.55,-43.31,0.6009,66,-46.13,29.66,7.5E-4,2,64,179.35,-39.25,0.90959,65,44.94,-77.29,0.09041,1,64,62.53,-94.47,1],"hull":19,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,0,36,32,10,12,30,28,12,26,14,24,16,30,10,34,4],"width":320,"height":453}},"l_upparm":{"l_upparm":{"type":"mesh","uvs":[0.09978,0.58733,0,0.85791,0,1,0.5004,1,0.53419,0.85154,0.66934,0.66373,0.9686,0.47911,1,0.32313,0.90585,0,0.40386,0,0.1046,0.10986,0,0.29448,0,0.47911],"triangles":[4,3,1,3,2,1,1,0,4,4,0,5,7,5,11,6,5,7,11,5,0,0,12,11,11,9,7,9,11,10,7,9,8],"vertices":[2,4,231.14,-151.98,0.08056,5,150.1,-80.76,0.91944,1,5,273.75,-43.3,1,1,5,330.55,-9.82,1,1,5,252.78,122.09,1,1,5,188.19,96.01,1,2,4,279.48,19.18,0.0028,5,92.12,87.38,0.9972,2,4,200.88,116.89,0.51255,5,-28.18,122.76,0.48745,2,4,129.43,131.87,0.84804,5,-95.41,94.28,0.15196,1,4,-22.23,114.32,1,2,4,-33.69,-38.86,0.99553,5,-131.92,-139.01,0.00447,2,4,10.32,-133.98,0.87229,5,-41.51,-192.01,0.12771,2,4,93.36,-172.29,0.59756,5,48.55,-176.07,0.40244,2,4,178.78,-178.68,0.27264,5,122.34,-132.57,0.72736],"hull":13,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,0,24],"width":306,"height":464}},"lock":{"lock":{"width":335,"height":136}},"lock_2":{"Lock":{"path":"lock_2","width":335,"height":136}},"r_arm":{"r_arm":{"type":"mesh","uvs":[0.07385,1.0E-5,0,0.37872,0,0.54104,0.3259,1,0.43316,1,0.76024,0.99999,0.87402,0.90654,1,0.80308,1,0.37409,1,0.25582,0.58064,0,0.87023,0.53173],"triangles":[1,4,2,0,5,1,11,10,9,8,11,9,11,0,10,11,8,7,6,11,7,5,11,6,5,0,11,5,4,1,3,2,4],"vertices":[-95.66,-146.16,49.55,-185.94,112.86,-192.31,302.93,-100.41,306.58,-64.23,317.72,46.09,285.11,88.14,249.01,134.69,81.69,151.54,35.57,156.18,-78.45,24.77,138.79,101.57],"hull":11,"edges":[0,2,2,4,4,6,18,20,0,20,10,0,6,8,8,10,2,8,14,16,16,18,16,22,10,12,12,14,22,12],"width":339,"height":392}},"r_armour_t":{"r_armour_t":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[10.29,223.65,466.51,123.86,386.8,-240.53,-69.41,-140.73],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":467,"height":373}},"r_armour_u":{"r_armour_u":{"type":"mesh","uvs":[0.64487,0,0.52295,0.27447,0.97536,0.85789,0.99999,0.99857,0.77321,1,0.68978,0.84141,0.1636,0.36489,0,0.31322,0,0],"triangles":[6,1,5,1,6,8,6,7,8,1,8,0,4,2,3,4,5,2,5,1,2],"vertices":[1,89,51.37,111.96,1,1,89,121.77,26.73,1,2,2,96.14,-154.1,0.59,3,2.34,-174.35,0.41,2,2,43.22,-167.88,0.66,3,-37.48,-211.83,0.34,2,2,34.61,-109.77,0.86,3,-72.91,-164.98,0.14,2,2,92.27,-79.96,0.78,3,-36.62,-111.16,0.22,1,89,98.92,-70.01,1,1,89,58.76,-94.1,1,1,89,-41.66,-26.76,1],"hull":9,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,0,16,10,4,2,12],"width":259,"height":386}},"r_beard":{"r_beard":{"type":"mesh","uvs":[0.2079,0,0.15063,0.16618,0.15584,0.39316,0.47841,0.49333,0.66864,0.49374,0.74412,0.35647,0.95237,0.28307,0.96803,0.21333,1,0.07104,0.70248,0,0.45519,0,0.42371,0.36333,0.59611,0.17744,0.35657,0.22015,0.76263,0.19178,0.57726,0.26196,0.43861,0.12192,0.68143,0.12191,0.87714,0.17112],"triangles":[7,14,18,13,1,16,7,18,8,14,17,18,12,16,17,18,17,8,1,0,16,16,10,17,16,0,10,17,9,8,17,10,9,5,4,11,2,11,3,4,3,11,2,13,11,2,1,13,11,15,5,11,13,15,5,14,6,6,14,7,5,15,14,15,12,14,15,13,12,13,16,12,12,17,14],"vertices":[1,26,45.68,67.27,1,1,26,3.27,34.89,1,2,53,82.89,-50.5,0.99951,54,-48.49,-50.5,4.9E-4,1,53,104.28,7.61,1,2,53,98.68,38.5,0.99208,54,-32.7,38.5,0.00792,1,53,53.75,42.81,1,1,53,24.67,72.36,1,1,26,92.76,-67.12,1,1,26,126.99,-37.49,1,1,26,105.91,12.2,1,1,26,75.79,39.73,1,1,53,65.55,-8.77,1,1,53,2.6,8.46,1,1,53,23.09,-27.93,1,1,53,2.03,36.3,1,1,53,29.42,10.29,1,1,26,47.78,13.15,1,1,26,77.35,-13.89,1,1,26,90.69,-47.15,1],"hull":11,"edges":[0,2,2,4,8,10,10,12,16,18,18,20,20,0,2,32,32,34,34,36,12,14,14,16,36,14,4,6,6,8],"width":165,"height":316}},"r_beard2":{"r_beard":{"type":"mesh","uvs":[0.47841,0.49333,0.15584,0.39316,0.16105,0.62015,0.08295,0.7914,0,0.88655,0,1,0.1561,1,0.31219,1,0.62438,1,0.5515,0.8213,0.59315,0.63102,0.66864,0.49374,0.32382,0.86705,0.36613,0.70389,0.3626,0.53397],"triangles":[7,12,8,12,9,8,7,6,12,12,6,4,6,5,4,4,3,12,12,13,9,12,3,13,9,13,10,3,2,13,2,14,13,13,14,10,14,0,10,10,0,11,2,1,14,14,1,0],"vertices":[1,53,104.28,7.61,1,2,53,82.89,-50.5,0.99951,54,-48.49,-50.5,4.9E-4,2,53,153.25,-36.55,0.14444,54,21.87,-36.55,0.85556,2,54,77.43,-39.32,0.6598,55,-10.15,-39.32,0.3402,2,54,109.49,-47.29,0.13046,55,21.91,-47.29,0.86954,1,55,57.16,-40.73,1,1,55,52.45,-15.41,1,1,55,47.74,9.91,1,2,54,125.91,60.56,0.02568,55,38.33,60.56,0.97432,2,54,72.6,38.41,0.75452,55,-14.99,38.41,0.24548,2,53,143.6,34.18,0.27152,54,12.22,34.18,0.72848,2,53,98.68,38.5,0.99208,54,-32.7,38.5,0.00792,2,54,93.67,4.12,0.00469,55,6.08,4.12,0.99531,1,54,41.71,1.56,1,2,53,120.4,-8.83,0.9936,54,-10.98,-8.83,0.0064],"hull":12,"edges":[2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,2,0,0,22],"width":165,"height":316}},"r_ear":{"r_ear":{"type":"mesh","uvs":[0.69857,1,0.77644,0.96287,0.91662,0.9418,1,0.85986,1,0.73812,0.88287,0.63745,0.70269,0.44043,0.52251,0.24341,0.2811,0.12171,0.03969,0,0,0,0,0.05846,0.1565,0.26916,0.21101,0.42017,0.26552,0.57117,0.37455,0.87317,0.53809,0.98321,0.62894,1,0.51919,0.55974,0.34907,0.35226,0.64304,0.85127,0.45082,0.71211,0.67328,0.66834,0.84166,0.8086,0.49564,0.42023,0.38232,0.50585],"triangles":[23,4,3,2,23,3,1,23,2,20,0,17,1,0,20,11,10,9,8,11,9,12,11,8,19,8,7,12,8,19,13,12,19,24,19,7,24,7,6,25,19,24,13,19,25,25,24,18,14,13,25,18,24,6,22,18,6,22,6,5,21,25,18,21,18,22,14,25,21,23,22,5,23,5,4,20,21,22,20,22,23,15,14,21,15,21,20,1,20,23,16,15,20,17,16,20],"vertices":[1,26,115.29,-72.26,1,1,26,131.75,-76.54,1,1,26,154.76,-91.46,1,1,26,178.47,-89.38,1,1,26,196.05,-70.15,1,1,27,42.12,-50.83,1,2,27,96.13,-42.46,0.83404,28,-21.27,-39.39,0.16596,2,27,150.13,-34.08,0.01342,28,33.37,-40.42,0.98658,1,28,83.47,-22,1,1,28,133.57,-3.57,1,1,28,138.55,2.25,1,1,28,129.05,10.39,1,1,28,75.16,16.8,1,2,27,148.3,36.92,0.02051,28,43.78,29.84,0.97949,2,27,115.14,44.37,0.41739,28,12.4,42.88,0.58261,2,27,48.83,59.28,0.99749,28,-50.37,68.97,0.00251,1,27,12.47,44.16,1,1,26,105.38,-63.19,1,2,27,92.25,1.03,0.99824,28,-17.61,4.12,0.00176,2,27,147.19,6.59,1.0E-5,28,37.47,0.15,0.99999,1,27,26.41,12.33,1,2,27,70.95,29.02,0.97013,28,-33.78,35.36,0.02987,1,27,57.09,-12.68,1,1,27,14.69,-25.3,1,2,27,120.24,-10.3,0.11084,28,8.02,-11.86,0.88916,2,27,115.66,17.86,0.2898,28,8.34,16.67,0.7102],"hull":18,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,0],"width":193,"height":214}},"r_ear_ringa":{"r_ear_ringa":{"x":10.4,"y":3.04,"rotation":124.8,"width":30,"height":27}},"r_ear_ringb":{"r_ear_ringb":{"x":30.77,"y":3.76,"rotation":132.19,"width":76,"height":71}},"r_ear_ringb_s":{"r_ear_ringb_s":{"x":30.54,"y":-0.5,"rotation":145.49,"width":81,"height":69}},"r_ear_s":{"r_ear_s":{"x":94.93,"y":11.05,"rotation":-135.67,"width":156,"height":133}},"r_eye":{"r_eye":{"x":5.72,"y":0.66,"rotation":-160.06,"width":60,"height":27}},"r_eye_fire":{"eyefire/eyefire_00000":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00001":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00002":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00003":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00004":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00005":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00006":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00007":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00008":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00009":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00010":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00011":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00012":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00013":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00014":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00015":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00016":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00017":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00018":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00019":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00020":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00021":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00022":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00023":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00024":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00025":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00026":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00027":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00028":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00029":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00030":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00031":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00032":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00033":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00034":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00035":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00036":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64},"eyefire/eyefire_00037":{"x":2.08,"y":-24.76,"rotation":-177.67,"width":32,"height":64}},"r_eye_hurt":{"r_eye_hurt":{"x":162.63,"y":-138.57,"rotation":-42.44,"width":49,"height":78}},"r_finger_a":{"r_finger_a":{"x":112.78,"y":0.67,"rotation":95.46,"width":131,"height":321}},"r_finger_a2":{"r_finger_a":{"x":112.78,"y":0.67,"rotation":95.46,"width":131,"height":321}},"r_finger_b":{"r_finger_b":{"x":119.22,"y":11.56,"rotation":77.3,"width":195,"height":352}},"r_finger_b2":{"r_finger_b":{"x":119.22,"y":11.56,"rotation":77.3,"width":195,"height":352}},"r_finger_c":{"r_finger_c":{"x":134.42,"y":6.36,"rotation":77.37,"width":218,"height":421}},"r_finger_c2":{"r_finger_c":{"x":134.42,"y":6.36,"rotation":77.37,"width":218,"height":421}},"r_finger_d":{"r_finger_d":{"x":159.42,"y":8.42,"rotation":96.04,"width":156,"height":451}},"r_finger_d2":{"r_finger_d":{"x":159.42,"y":8.42,"rotation":96.04,"width":156,"height":451}},"r_hand":{"r_hand":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[221.31,134.74,182.59,-229.21,-41.15,-205.41,-2.43,158.54],"hull":4,"edges":[0,2,2,4,4,6,0,6],"width":366,"height":225}},"r_leg":{"r_leg":{"type":"mesh","uvs":[0.7409,0,0.62921,0.07564,0.39813,0.34299,0.31726,0.519,0.36347,0.60144,0.41181,0.60462,0.4,0.64394,0.27725,0.78161,0,0.90594,0,1,0.40262,1,0.38919,0.87659,0.5877,0.69354,0.59069,0.62619,0.55636,0.57266,0.58181,0.50632,0.79153,0.40491,0.93929,0.34965,1,0.20631,1,0.07507,0.88407,0],"triangles":[7,11,10,9,8,7,9,7,10,11,7,6,11,6,12,3,5,4,3,2,5,15,14,5,6,5,14,6,14,13,12,6,13,20,19,18,17,20,18,16,0,20,16,20,17,1,0,16,15,2,1,16,15,1,2,15,5],"vertices":[1,69,78.53,-106.62,1,1,69,148.14,-108.1,1,2,69,319.14,-67.25,0.93733,70,-65.9,-13.81,0.06267,3,69,399.06,-20.28,0.04469,70,-0.1,-79.09,0.95386,71,33.83,-122.84,0.00145,2,70,43.78,-66.34,0.95046,71,39.22,-77.47,0.04954,2,70,52.7,-41.87,0.81033,71,20.17,-59.7,0.18967,2,70,68.37,-53.23,0.40278,71,36.74,-49.71,0.59722,2,71,128.45,-42.71,0.5,73,0.87,-48.53,0.5,1,73,157.99,-18.45,1,1,73,165.85,24.58,1,1,73,-47.24,63.49,1,2,71,110.38,29.76,0.5,73,-50.44,5.74,0.5,2,70,119.6,36.8,0.72619,71,-26.16,32.59,0.27381,3,69,299.8,99.18,0.00796,70,90.07,47.38,0.96436,71,-47.42,9.53,0.02768,2,69,302.51,68.31,0.11979,70,60.91,36.88,0.88021,2,69,274.69,49.19,0.68231,70,35.32,58.89,0.31769,1,69,153.87,68.07,1,1,69,72.68,87.78,1,1,69,9.97,48.09,1,1,69,-21.97,-3.92,1,1,69,12.9,-66.31,1],"hull":21,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,0,40,10,30,10,28,12,24,26,12,14,22,4,30,32,2],"width":538,"height":465}},"r_upparm":{"r_upparm":{"type":"mesh","uvs":[0.5629,0,0.44107,0.13245,0.33446,0.35768,0,0.70057,0,1,0.50416,1,0.55593,0.91151,0.79695,0.90142,0.93211,0.83091,1,0.68376,1,0.44172,0.92622,0.17615,0.79786,0,0.65662,0.27214,0.71933,0.47436,0.75204,0.72291,0.40813,0.72836,0.31878,0.50647],"triangles":[1,0,13,17,3,2,13,16,2,13,2,1,16,13,14,6,16,14,17,2,16,15,6,14,6,15,7,16,4,3,16,3,17,5,16,6,4,16,5,13,0,12,13,12,11,14,13,11,14,11,10,15,14,10,9,15,10,8,15,9,7,15,8],"vertices":[2,3,191.71,419.51,0.5,18,-35.67,-142.37,0.5,1,18,50.36,-132.92,1,1,18,145.48,-88.64,1,1,18,377.9,-69.52,1,1,18,432.24,29.08,1,1,18,175.7,170.46,1,1,18,133.29,155.84,1,2,3,0.5,108.37,0.5,18,8.83,220.11,0.5,1,3,68.57,61.1,1,1,3,136.51,62.38,1,1,3,209.6,116.59,1,1,3,264.27,210.51,1,1,3,273.04,309.87,1,2,3,141.97,314.81,0.5,18,-33.97,-26.47,0.5,2,3,102.6,240.26,0.5,18,-29.18,57.7,0.5,2,3,38.86,169.32,0.5,18,-0.72,148.73,0.5,1,18,175.27,54.08,1,1,18,180.46,-44.04,1],"hull":13,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,16,18,18,20,20,22,22,24,0,24,0,26,26,28,28,30,30,14,14,16,12,32,32,34,34,4],"width":581,"height":376}},"r_upparm_2":{"r_upparm":{"type":"mesh","uvs":[0.40813,0.72836,0.31878,0.50647,0.33446,0.35768,0,0.70057,0,1,0.50416,1,0.55593,0.91151],"triangles":[1,3,2,0,4,3,0,3,1,5,0,6,4,0,5],"vertices":[1,18,175.27,54.08,1,1,18,180.46,-44.04,1,1,18,145.48,-88.64,1,1,18,377.9,-69.52,1,1,18,432.24,29.08,1,1,18,175.7,170.46,1,1,18,133.29,155.84,1],"hull":7,"edges":[4,6,6,8,8,10,10,12,12,0,0,2,2,4],"width":581,"height":376}},"s1":{"s1":{"path":"canying/s1","width":249,"height":284}},"s2":{"s2":{"path":"canying/s1","width":249,"height":284}},"s3":{"s3":{"path":"canying/s3","width":270,"height":260}},"s4":{"s4":{"path":"canying/s4","width":316,"height":211}},"s5":{"s5":{"path":"canying/s5","width":292,"height":214}},"s6":{"s6":{"path":"canying/s6","width":273,"height":212}},"skill":{"skill/0":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/1":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/2":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/3":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/4":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/5":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/6":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/7":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/8":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/9":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/10":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/11":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/12":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/13":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/14":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/15":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/16":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/17":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/18":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/19":{"x":8.28,"y":23.13,"width":534,"height":289},"skill/20":{"x":8.28,"y":23.13,"width":534,"height":289}},"skirt_b":{"skirt_b":{"type":"mesh","uvs":[0.55483,0.0745,0.27158,0,0.10839,0,0.07042,0.04782,0,0.13651,0,0.24672,0.07943,0.36639,0.08934,0.56514,0.09847,0.74821,0.10432,0.86567,0.11102,1,0.13246,1,0.22417,0.91358,0.33284,0.81118,0.43649,0.7135,0.5086,0.64554,0.58606,0.73603,0.66628,0.82975,0.72654,0.90014,0.81201,1,0.83809,1,0.86946,0.87562,0.89354,0.78014,0.92519,0.65463,0.95637,0.53101,0.97065,0.47438,0.98229,0.4282,1,0.35799,0.99881,0.28119,0.88446,0.16119,0.54426,0.20515,0.53488,0.32098,0.5287,0.39736,0.52041,0.49974],"triangles":[23,17,16,22,17,23,22,18,17,21,18,22,19,18,21,20,19,21,13,8,7,14,13,7,12,9,8,13,12,8,11,10,9,12,11,9,30,29,28,31,30,28,31,28,27,26,31,27,32,31,26,25,32,26,33,32,25,24,33,25,15,33,24,24,16,15,23,16,24,30,1,0,2,1,30,5,33,6,31,2,30,3,2,31,4,3,32,33,5,32,31,32,3,4,32,5,6,14,7,33,15,6,15,14,6,30,0,29],"vertices":[2,69,-29.26,-28.11,0.882,64,-55.27,28.56,0.118,1,69,39.43,-94.34,1,1,69,85.18,-122.44,1,1,69,102.7,-117.78,1,1,69,135.21,-109.12,1,1,69,151.07,-83.29,1,1,69,146.03,-41.58,1,2,69,171.86,6.7,0.9105,77,-31.34,-53.22,0.0895,2,69,195.65,51.17,0.10647,77,14.5,-32.2,0.89353,2,69,210.92,79.7,6.7E-4,77,43.92,-18.71,0.99933,1,77,77.56,-3.29,1,1,77,75,3.29,1,3,64,47.47,-204.95,4.1E-4,77,41.93,22.81,0.99946,78,46.91,-195.32,1.3E-4,4,69,139.02,106.28,0.05243,64,49.68,-159.49,0.03263,77,2.74,45.95,0.90459,78,19.62,-158.9,0.01035,4,69,95.9,101.25,0.26312,64,51.79,-116.13,0.16773,77,-34.64,68.02,0.51089,78,-6.41,-124.16,0.05826,4,69,65.9,97.74,0.23503,64,53.25,-85.96,0.37814,77,-60.65,83.37,0.19912,78,-24.52,-99.99,0.18771,4,69,57.21,132.28,0.05687,64,88.75,-83.06,0.32056,77,-46.68,116.13,0.05051,78,0.97,-75.11,0.57206,4,69,48.21,168.06,0.00712,64,125.52,-80.06,0.0588,77,-32.2,150.06,0.0109,78,27.37,-49.35,0.92318,4,69,41.45,194.93,2.6E-4,64,153.13,-77.8,1.5E-4,77,-21.33,175.55,0.00173,78,47.2,-30,0.99786,1,78,75.33,-2.54,1,1,78,75.54,6.03,1,2,64,178.9,-37.9,0.02489,78,41.59,17.17,0.97511,2,64,164.29,-14.69,0.42853,78,15.53,25.73,0.57147,1,64,145.07,15.82,1,1,64,126.15,45.87,1,1,64,117.48,59.63,1,1,64,110.41,70.85,1,1,64,99.67,87.92,1,1,64,83.47,101.48,1,2,69,-109.18,48.97,8.3E-4,64,33.88,94.75,0.99917,2,69,-7.48,0.69,0.88955,64,-30.44,2.36,0.11045,4,69,11.82,26.21,0.46467,64,-8.43,-20.87,0.52721,77,-146.98,59.13,0.00502,78,-113.54,-89.2,0.0031,4,69,24.55,43.05,0.38003,64,6.09,-36.19,0.57426,77,-126.67,64.83,0.02605,78,-92.59,-91.74,0.01966,4,69,41.61,65.61,0.32084,64,25.54,-56.72,0.5139,77,-99.43,72.48,0.08787,78,-64.51,-95.14,0.0774],"hull":30,"edges":[2,4,8,10,20,22,38,40,54,56,56,58,4,6,6,8,16,26,12,30,12,14,14,16,26,28,28,30,14,28,16,18,18,20,22,24,24,26,18,24,30,48,30,32,46,48,32,46,32,34,44,46,34,44,34,36,36,38,40,42,42,44,36,42,10,12,52,54,48,50,50,52,2,0,0,58,0,60,60,56,62,60,54,62,64,62,52,64,30,66,66,64,66,50,60,4,6,62,64,8,10,66],"width":329,"height":275}},"skirt_f":{"skirt_f":{"type":"mesh","uvs":[0.76659,0.10516,0.53321,0.09018,0.31685,0,0.11097,0,0,0.15158,0,0.18723,0.11172,0.28589,0.12084,0.3891,0.12749,0.46441,0.14327,0.64294,0.15904,0.82147,0.17482,1,0.28922,1,0.40363,1,0.63244,1,0.72433,0.8302,0.81622,0.6604,0.90811,0.4906,0.94806,0.40504,0.99999,0.29383,1,0.07988,0.46626,0.67526,0.59829,0.42794,0.36219,0.39794,0.72087,0.52069,0.30873,0.80022,0.45151,0.88401,0.45759,0.53275,0.44099,0.2974,0.71835,0.32344,0.55373,0.76966,0.31134,0.54266,0.60346,0.63165,0.22468,0.23695,0.8356,0.39205],"triangles":[22,28,29,28,23,33,34,29,19,28,1,29,29,0,19,29,1,0,28,33,1,19,0,20,2,33,4,33,2,1,2,4,3,33,5,4,13,26,14,14,26,15,13,12,26,26,12,10,26,10,25,10,12,11,26,30,15,26,25,30,15,30,16,10,9,25,25,21,30,25,9,21,30,32,16,30,21,32,9,31,21,31,27,21,21,27,32,32,24,16,16,24,17,9,8,31,32,27,24,27,31,23,31,8,23,27,22,24,27,23,22,24,34,17,24,22,34,17,34,18,8,7,23,23,28,22,22,29,34,18,34,19,33,23,6,23,7,6,6,5,33],"vertices":[1,2,8.55,-46.79,1,1,2,7.07,18.74,1,1,2,43.71,84.76,1,1,2,35.82,141.66,1,1,2,-43.96,161.85,1,1,74,-25.95,-164.56,1,2,74,20.82,-129.24,0.991,75,-127.98,-129.24,0.009,2,74,72.32,-122.25,0.9168,75,-76.48,-122.25,0.0832,2,74,109.91,-117.14,0.77199,75,-38.89,-117.14,0.22801,3,74,199,-105.04,0.17387,75,50.2,-105.04,0.72762,76,-49,-105.04,0.09851,3,74,288.09,-92.95,3.7E-4,75,139.29,-92.95,0.25441,76,40.09,-92.95,0.74522,2,75,228.38,-80.85,5.6E-4,76,129.18,-80.85,0.99944,1,76,126.44,-49.05,1,1,76,123.7,-17.25,1,1,76,118.21,46.36,1,2,75,130.12,64.56,0.22231,76,30.92,64.56,0.77769,3,74,191.62,82.77,0.16701,75,42.82,82.77,0.81073,76,-56.38,82.77,0.02226,2,74,104.32,100.98,0.87402,75,-44.47,100.98,0.12598,2,74,60.49,108.39,0.98435,75,-88.31,108.39,0.01565,1,2,-76.5,-124.33,1,1,2,30.09,-109.55,1,3,74,207.45,-13.87,0.00222,75,58.65,-13.87,0.99232,76,-40.55,-13.87,0.00547,1,74,80.34,12.15,1,2,74,70.97,-54.78,0.96235,75,-77.83,-54.78,0.03765,2,74,123.89,50.23,0.79891,75,-24.91,50.23,0.20109,2,75,125.05,-52.26,0.27119,76,25.85,-52.26,0.72881,2,75,163.62,-8.95,9.4E-4,76,64.42,-8.95,0.99906,2,74,136.24,-22.43,0.7678,75,-12.56,-22.43,0.2322,1,2,-99.7,29.91,1,1,2,-102.05,-48.54,1,2,75,103.87,14.53,0.33551,76,4.67,14.53,0.66449,3,74,144.71,-62.66,0.53214,75,-4.09,-62.66,0.46626,76,-103.28,-62.66,0.0016,2,74,182.31,22.39,0.03446,75,33.51,22.39,0.96554,1,2,-77.88,93.87,1,2,74,56.67,76.56,0.98952,75,-92.13,76.56,0.01048],"hull":21,"edges":[6,8,8,10,10,12,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,8,66,66,56,56,58,58,38,34,36,36,38,12,14,14,16,38,40,6,4,66,4,4,2,56,2,2,0,0,40,58,0],"width":279,"height":503}},"tail":{"tail":{"type":"mesh","uvs":[0.86601,0,0.77697,0.0272,0.68794,0.05441,0.58182,0.11908,0.50537,0.23825,0.42893,0.35743,0.45231,0.41102,0.40195,0.44612,0.34979,0.41656,0.28504,0.32048,0.2005,0.28722,0.08359,0.32602,0,0.43688,0,0.5302,0,0.62351,0.0602,0.56068,0.11376,0.59366,0.10476,0.69159,0.12994,0.7886,0.15512,0.8856,0.23427,0.9428,0.31341,1,0.41863,1,0.52385,1,0.67134,0.94658,0.74239,0.89115,0.81344,0.83572,0.92496,0.71007,0.99151,0.60475,0.99575,0.49019,1,0.37563,1,0.27406,1,0.17249,0.98047,0.08624,0.96093,0,0.77729,0.55777,0.31623,0.71699,0.5658,0.70194,0.6858,0.26757,0.8362,0.23794,0.57194,0.45103,0.47806,0.87273,0.4433,0.52477,0.22564,0.46302,0.72838,0.72388,0.81124,0.39667,0.61736,0.59178,0.32775,0.54978,0.35419,0.86041,0.44331,0.68815,0.83926,0.12218,0.62985,0.84682,0.66152,0.41712,0.20303,0.63394,0.91514,0.485,0.73469,0.13814,0.85807,0.65295,0.23248,0.80486,0.91228,0.35372,0.5283,0.59155,0.55111,0.35677,0.09778,0.45666,0.68787,0.48294],"triangles":[14,13,15,15,61,16,15,13,61,13,12,61,12,11,61,43,61,11,53,43,47,16,61,43,47,7,42,47,8,7,47,43,8,43,11,10,43,9,8,43,10,9,19,18,57,36,57,53,57,18,53,18,17,53,36,53,47,17,16,53,53,16,43,22,41,23,23,51,24,23,41,51,21,48,22,22,48,41,21,20,48,24,51,25,19,57,20,20,57,48,48,49,41,41,37,51,41,49,37,57,36,48,48,36,49,36,47,49,47,42,49,26,25,44,25,51,44,51,37,44,26,56,27,26,44,56,37,46,44,44,35,56,44,46,35,27,56,28,49,59,37,37,59,46,49,42,59,56,54,28,56,35,54,59,40,46,46,62,35,62,40,52,62,46,40,59,42,40,35,62,45,42,6,40,42,7,6,62,52,45,6,60,40,40,60,52,6,5,60,28,54,29,35,45,54,29,54,30,45,58,54,54,58,30,52,38,45,52,60,38,45,39,58,45,38,39,58,31,30,5,4,60,60,4,38,58,39,31,31,39,32,32,39,50,50,33,32,4,3,38,38,55,39,38,3,55,50,0,33,0,34,33,39,55,50,3,2,55,55,1,50,55,2,1,50,1,0],"vertices":[1,79,-42.87,-71.32,1,1,79,-5.86,-91.15,1,3,79,31.15,-110.98,0.99893,80,-154.26,-45.6,4.5E-4,83,13.88,-297.41,6.3E-4,3,79,85.25,-124.53,0.95456,80,-112.31,-82.35,0.03695,83,23.67,-242.51,0.00849,4,79,146.7,-111.61,0.69671,80,-51.73,-98.9,0.25579,81,5.22,-227.87,2.0E-5,83,6.53,-182.09,0.04748,4,79,208.16,-98.69,0.31032,80,8.85,-115.45,0.53865,81,45.32,-179.54,0.00956,83,-10.6,-121.68,0.14146,5,79,217.25,-74.5,0.16641,80,27.98,-98.08,0.57721,81,37.4,-154.94,0.03031,82,148.18,-116.75,0.00162,83,-35.36,-114.28,0.22444,5,79,244.29,-79.55,0.02905,80,49.73,-114.91,0.38417,81,61.73,-142.09,0.06291,82,136.81,-91.7,0.01309,83,-32.18,-86.95,0.51077,5,79,251.88,-105.39,0.00302,80,44.69,-141.37,0.15618,81,83.73,-157.6,0.0301,82,153.62,-70.67,6.8E-4,83,-6.93,-77.6,0.81003,3,80,13.6,-182.32,0.02712,81,108.19,-202.83,8.4E-4,83,44.2,-83.05,0.97204,3,80,11.57,-223.19,0.0048,83,80.24,-63.68,0.94097,84,-65.73,-5.47,0.05423,2,83,101.83,-12.51,0.2921,84,-19.28,-35.91,0.7079,1,84,42.41,-34.71,1,1,84,74.38,-8.95,1,1,84,106.34,16.82,1,3,82,113.3,69.08,0.07266,83,30.56,62.94,0.08176,84,67.75,20.66,0.84558,3,82,94.9,47.68,0.57185,83,3.76,54.09,0.17221,84,63.86,48.61,0.25594,3,82,53.12,58.98,0.97648,83,-26.21,85.31,0.00456,84,99.96,72.48,0.01896,3,81,200.46,-5.8,0.09295,82,9.13,54.99,0.90704,84,126.05,108.13,1.0E-5,2,81,193.83,37.88,0.54563,82,-34.87,51.01,0.45437,2,81,161.04,66.82,0.91652,82,-65.73,20.02,0.08348,1,81,128.25,95.76,1,1,81,80.97,100.98,1,2,80,264.25,13.19,0.01246,81,33.7,106.19,0.98754,3,79,312.81,162.56,2.4E-4,80,221.19,69.25,0.31653,81,-35.14,90.15,0.68323,3,79,272.83,167.84,0.00866,80,188.03,92.19,0.62689,81,-69.74,69.43,0.36445,3,79,232.85,173.13,0.04125,80,154.87,115.14,0.83373,81,-104.34,48.71,0.12502,3,79,158.13,169.34,0.21227,80,86.66,145.87,0.78597,81,-160.5,-0.71,0.00175,2,79,104.15,157.6,0.4043,80,33.27,160.06,0.5957,2,79,67.3,123.15,0.62991,80,-15.24,146.22,0.37009,2,79,30.46,88.7,0.8698,80,-63.75,132.38,0.1302,2,79,-1,56.96,0.97761,80,-106.23,118.5,0.02239,2,79,-32.46,25.22,0.99981,80,-148.71,104.61,1.9E-4,1,79,-52.9,-7.95,1,1,79,-73.35,-41.12,1,2,79,158.37,74.76,0.23918,80,43.71,61.61,0.76082,4,80,175.05,-114.71,0.01481,81,113.31,-27.87,0.55454,82,25.91,-33.33,0.41217,83,-97.11,20.24,0.01848,4,80,133.71,-9.55,0.84984,81,0.46,-22.08,0.14613,82,13.33,-145.62,8.7E-4,83,-165.79,-69.5,0.00316,3,79,97.86,-45.04,0.97689,80,-64.81,-17.38,0.01798,83,-56.51,-235.41,0.00514,1,79,40.4,-6.45,1,5,79,191.23,-23.93,0.08553,80,27.91,-41.21,0.83201,81,-14.41,-131.51,0.01142,82,121.67,-167.06,1.6E-4,83,-84.01,-143.71,0.07087,1,81,48.13,48.26,1,5,79,255.37,-41.82,0.01222,80,76.82,-86.4,0.50088,81,46.95,-105.64,0.13185,82,99.54,-104.26,0.04564,83,-70.59,-78.49,0.30941,4,80,81.56,-188.35,0.01759,81,141.75,-143.44,0.00241,82,142.98,-11.9,0.03233,83,14.25,-21.76,0.94767,3,79,225.52,111.12,0.03643,80,120.05,63.31,0.92236,81,-71.52,-4.42,0.04122,2,79,97.57,35.22,0.86912,80,-28.44,54.17,0.13088,4,80,80.39,-2.45,0.99635,81,-28.02,-67.7,0.00187,82,57.16,-176.8,1.4E-4,83,-144.31,-118.81,0.00164,5,79,300.22,-70.77,2.0E-4,80,103.5,-132.62,0.14731,81,100.07,-100.43,0.10732,82,97.54,-50.92,0.2557,83,-44.81,-31.76,0.48947,1,81,103.18,36.73,1,4,80,145.14,-64.05,0.18193,81,54.83,-34.18,0.70539,82,28.69,-92.09,0.06015,83,-125.03,-31.54,0.05253,1,79,3.56,-41.65,1,3,79,295.23,118.18,5.0E-4,80,185.3,37.78,0.36535,81,-21.32,44.46,0.63415,4,79,151.97,-6.03,0.367,80,1.14,-7.36,0.62916,81,-56.29,-141.9,3.0E-5,83,-99.16,-184.12,0.00381,2,82,70.6,10.91,0.99072,84,52.33,91.15,0.00928,2,79,91.57,95.88,0.62265,80,-6.09,110.88,0.37735,3,79,42.07,-69.93,0.99938,80,-125.81,-14.07,1.4E-4,83,-27.82,-289.34,4.7E-4,3,79,161.92,130.21,0.21468,80,72.17,109.32,0.78462,81,-133.21,-29.01,6.9E-4,2,81,155.18,6.4,0.44908,82,-5.77,10.53,0.55092,2,79,51.83,53.94,0.91358,80,-60.59,91.7,0.08642,4,80,92.81,-40.75,0.76617,81,11.98,-72.22,0.13802,82,64.07,-137.15,0.01562,83,-117.94,-88.39,0.0802,4,79,168.73,-60.02,0.43901,80,-8.59,-63.05,0.48475,81,-9.6,-173.76,0.00298,83,-46.46,-163.68,0.07326,3,82,155.53,44.58,3.4E-4,83,54.12,20.17,0.11655,84,21.45,5.16,0.88311,2,79,163.9,22.92,0.07152,80,24.97,12.96,0.92848],"hull":35,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60,62,62,64,64,66,66,68,68,0],"width":452,"height":440}},"tail_b":{"tail_b":{"type":"mesh","uvs":[0.31626,0,0.37404,0.09754,0.43183,0.19509,0.49267,0.25605,0.64919,0.15345,0.80571,0.05086,0.87665,0.02977,0.98627,0.10785,1,0.15251,1,0.15531,0.90036,0.33062,0.83816,0.35413,0.7781,0.49328,0.71804,0.63243,0.61453,0.78842,0.51489,0.89214,0.41525,0.99586,0.25427,0.88236,0.2051,0.76577,0.15594,0.64918,0.14491,0.49846,0.13389,0.34774,0.08421,0.24664,0.00804,0.25066,0,0.25022,0,0.22052,0.11791,0.03845,0.20824,0,0.66434,0.44762,0.51691,0.60848,0.39727,0.55387,0.27133,0.37677,0.3602,0.70938,0.7471,0.29976,0.46117,0.73234,0.58729,0.4507,0.23725,0.62333,0.32511,0.22487,0.20027,0.21681,0.48109,0.46614],"triangles":[38,26,27,22,25,26,22,26,38,23,24,25,22,23,25,21,22,38,38,0,37,0,38,27,31,20,21,31,21,38,37,0,1,31,38,37,2,37,1,30,37,2,31,37,30,36,20,31,32,36,31,19,20,36,18,19,36,18,36,17,30,2,39,30,32,31,34,30,39,34,39,29,32,30,34,17,36,32,16,32,34,16,34,15,17,32,16,15,34,29,28,35,4,13,28,12,35,3,4,29,35,14,14,35,28,14,28,13,29,39,35,39,2,3,39,3,35,15,29,14,7,8,9,33,4,5,10,6,7,10,7,9,11,5,6,11,6,10,33,5,11,28,4,33,12,33,11,28,33,12],"vertices":[1,84,6.5,-9.32,1,4,80,74.32,-201.92,0.09,81,151.12,-155.64,4.2E-4,82,155.73,-3.28,0.26236,83,29.61,-20.94,0.64722,4,80,70.9,-151.46,0.13586,81,103.75,-137.91,0.05643,82,135.17,-49.5,0.41435,83,-11.83,-49.95,0.39336,4,80,57.77,-105.65,0.51222,81,56.61,-130.94,0.11576,82,125.38,-96.13,0.07259,83,-44.26,-84.85,0.29943,4,79,131.54,-45.8,0.80958,80,-35.19,-33.43,0.18522,81,-47.56,-185.75,3.0E-5,83,-58.07,-201.76,0.00517,1,79,15.87,-23.96,1,1,79,-33.44,-7.44,1,1,79,-96.04,46.92,1,1,79,-99.6,62.81,1,1,79,-99.26,63.54,1,1,79,-12.11,78.3,1,2,79,31.73,65.12,0.99179,80,-73.38,110.82,0.00821,2,79,88.37,82.73,0.80256,80,-14.94,100.64,0.19744,2,79,145,100.34,0.32067,80,43.49,90.47,0.67933,3,79,232.32,108.86,0.00339,80,125.07,58.2,0.73661,81,-64.8,-1.95,0.26,2,80,193.01,18.98,0.42,81,-1.01,43.71,0.58,2,80,260.94,-20.25,0.61,81,62.78,89.37,0.39,4,80,306.58,-133.03,0.12,81,184.34,84.33,0.53344,82,-81.81,44.33,0.30944,84,178.16,183.41,0.03712,3,81,226.87,59.83,0.24435,82,-54.79,85.3,0.60731,84,191.03,136.05,0.14834,3,81,269.39,35.32,0.05912,82,-27.76,126.27,0.64216,84,203.91,88.7,0.29872,3,81,287.12,-5.11,0.00878,82,13.66,141.54,0.51406,84,187.99,47.52,0.47716,2,82,55.08,156.8,0.22564,84,172.06,6.35,0.77436,2,82,77.64,197.39,0.02422,84,187.6,-37.4,0.97578,1,84,235.42,-65.49,1,1,84,240.34,-68.67,1,1,84,235.86,-75.95,1,1,84,135.27,-75.6,1,1,84,73.47,-50.55,1,2,79,157.68,35.53,0.1946,80,25.19,27.01,0.8054,4,80,127.4,-29.72,0.56069,81,16.24,-36.16,0.40742,82,28.34,-130.73,0.00334,83,-145.25,-64.47,0.02855,4,80,168.1,-108.31,0.02687,81,104.62,-31.57,0.57852,82,29.07,-42.23,0.33852,83,-98.99,10.98,0.05609,2,82,63.8,56.78,0.6657,84,91.24,65.93,0.3343,1,81,120.66,18.21,1,2,79,85.03,22.69,0.97447,80,-45.31,48.75,0.02553,1,81,47.58,7.84,1,3,80,60.13,-16.87,0.96628,81,-23.26,-92.11,0.01411,83,-121.49,-128.7,0.0196,3,81,213.46,14.54,0.11546,82,-10.39,69.19,0.70335,84,149.6,113.39,0.18118,3,82,113.55,25.61,0.74401,83,8.36,25.57,0.06702,84,34.97,49.2,0.18897,2,82,100.43,115.57,0.08897,84,111.15,-0.42,0.91103,4,80,110.84,-75.4,0.40056,81,50.99,-70.11,0.35064,82,64.32,-98.08,0.06651,83,-97.59,-55.05,0.18229],"hull":28,"edges":[0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40,42,42,44,44,46,46,48,48,50,50,52,52,54,54,0],"width":364,"height":144}},"zj":{"a/zhuj_00001":{"width":1920,"height":1080},"a/zhuj_00002":{"width":1920,"height":1080},"a/zhuj_00003":{"width":1920,"height":1080},"a/zhuj_00004":{"width":1920,"height":1080},"a/zhuj_00005":{"width":1920,"height":1080},"a/zhuj_00006":{"width":1920,"height":1080},"a/zhuj_00007":{"width":1920,"height":1080},"a/zhuj_00008":{"width":1920,"height":1080},"a/zhuj_00009":{"width":1920,"height":1080},"a/zhuj_00010":{"width":1920,"height":1080},"a/zhuj_00011":{"width":1920,"height":1080},"a/zhuj_00012":{"width":1920,"height":1080},"a/zhuj_00013":{"width":1920,"height":1080},"a/zhuj_00014":{"width":1920,"height":1080},"a/zhuj_00015":{"width":1920,"height":1080}},"zj2":{"a/zhuj_00001":{"width":1920,"height":1080},"a/zhuj_00002":{"width":1920,"height":1080},"a/zhuj_00003":{"width":1920,"height":1080},"a/zhuj_00004":{"width":1920,"height":1080},"a/zhuj_00005":{"width":1920,"height":1080},"a/zhuj_00006":{"width":1920,"height":1080},"a/zhuj_00007":{"width":1920,"height":1080},"a/zhuj_00008":{"width":1920,"height":1080},"a/zhuj_00009":{"width":1920,"height":1080},"a/zhuj_00010":{"width":1920,"height":1080},"a/zhuj_00011":{"width":1920,"height":1080},"a/zhuj_00012":{"width":1920,"height":1080},"a/zhuj_00013":{"width":1920,"height":1080},"a/zhuj_00014":{"width":1920,"height":1080},"a/zhuj_00015":{"width":1920,"height":1080}}}}],"events":{"hit":{},"shou":{},"tui1":{}},"animations":{"attack":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00004"},{"time":0.1,"name":"eyefire/eyefire_00006"},{"time":0.1333,"name":"eyefire/eyefire_00008"},{"time":0.1667,"name":"eyefire/eyefire_00010"},{"time":0.2,"name":"eyefire/eyefire_00012"},{"time":0.2333,"name":"eyefire/eyefire_00014"},{"time":0.2667,"name":"eyefire/eyefire_00016"},{"time":0.3,"name":"eyefire/eyefire_00018"},{"time":0.3333,"name":"eyefire/eyefire_00020"},{"time":0.3667,"name":"eyefire/eyefire_00022"},{"time":0.4,"name":"eyefire/eyefire_00024"},{"time":0.4333,"name":"eyefire/eyefire_00026"},{"time":0.4667,"name":"eyefire/eyefire_00028"},{"time":0.5,"name":"eyefire/eyefire_00030"},{"time":0.5333,"name":"eyefire/eyefire_00032"},{"time":0.5667,"name":"eyefire/eyefire_00034"},{"time":0.6,"name":"eyefire/eyefire_00036"},{"time":0.6333,"name":"eyefire/eyefire_00000"},{"time":0.6667,"name":"eyefire/eyefire_00002"},{"time":0.7,"name":"eyefire/eyefire_00004"},{"time":0.7333,"name":"eyefire/eyefire_00006"},{"time":0.7667,"name":"eyefire/eyefire_00008"},{"time":0.8,"name":"eyefire/eyefire_00010"},{"time":0.8333,"name":"eyefire/eyefire_00012"},{"time":0.8667,"name":"eyefire/eyefire_00014"},{"time":0.9,"name":"eyefire/eyefire_00016"},{"time":0.9333,"name":"eyefire/eyefire_00018"},{"time":0.9667,"name":"eyefire/eyefire_00020"},{"time":1,"name":"eyefire/eyefire_00022"},{"time":1.0333,"name":"eyefire/eyefire_00024"},{"time":1.0667,"name":"eyefire/eyefire_00026"},{"time":1.1,"name":"eyefire/eyefire_00028"},{"time":1.1333,"name":"eyefire/eyefire_00030"},{"time":1.1667,"name":"eyefire/eyefire_00032"},{"time":1.2,"name":"eyefire/eyefire_00034"},{"time":1.2333,"name":"eyefire/eyefire_00036"},{"time":1.2667,"name":"eyefire/eyefire_00000"},{"time":1.3,"name":"eyefire/eyefire_00002"},{"time":1.3333,"name":"eyefire/eyefire_00000"}]},"s1":{"color":[{"color":"4951ff00"},{"time":0.5667,"color":"49faff00"},{"time":0.6,"color":"49d6ff7d"},{"time":0.8333,"color":"4951ff00"}]},"s2":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6,"color":"4951ff00"},{"time":0.6333,"color":"49b6ff7d"},{"time":0.8667,"color":"4951ff00"}]},"s3":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6333,"color":"4951ff00"},{"time":0.6667,"color":"49f0ff7d"},{"time":0.9,"color":"4951ff00"}]},"s4":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.6667,"color":"4951ff00"},{"time":0.7,"color":"49f6ff7d"},{"time":0.9333,"color":"4951ff00"}]},"s5":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.7,"color":"4951ff00"},{"time":0.7333,"color":"49ebff7d"},{"time":0.9667,"color":"4951ff00"}]},"s6":{"color":[{"color":"4951ff00","curve":"stepped"},{"time":0.7333,"color":"4951ff00"},{"time":0.7667,"color":"49e1ff7d"},{"time":1,"color":"4951ff00"}]},"skill":{"color":[{"color":"1fffe1ff"}]},"zj":{"color":[{"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.6333,"name":"a/zhuj_00001"},{"time":0.6667,"name":"a/zhuj_00002"},{"time":0.7,"name":"a/zhuj_00003"},{"time":0.7333,"name":"a/zhuj_00004"},{"time":0.7667,"name":"a/zhuj_00005"},{"time":0.8,"name":"a/zhuj_00006"},{"time":0.8333,"name":"a/zhuj_00007"},{"time":0.8667,"name":"a/zhuj_00008"},{"time":0.9,"name":"a/zhuj_00009"},{"time":0.9333,"name":"a/zhuj_00010"},{"time":0.9667,"name":"a/zhuj_00011"},{"time":1,"name":"a/zhuj_00012"},{"time":1.0333,"name":"a/zhuj_00013"},{"time":1.0667,"name":"a/zhuj_00014"},{"time":1.1,"name":"a/zhuj_00015"},{"time":1.1333,"name":null}]},"zj2":{"color":[{"color":"ffffffff"}],"attachment":[{"name":null},{"time":0.6333,"name":"a/zhuj_00001"},{"time":0.6667,"name":"a/zhuj_00002"},{"time":0.7,"name":"a/zhuj_00003"},{"time":0.7333,"name":"a/zhuj_00004"},{"time":0.7667,"name":"a/zhuj_00005"},{"time":0.8,"name":"a/zhuj_00006"},{"time":0.8333,"name":"a/zhuj_00007"},{"time":0.8667,"name":"a/zhuj_00008"},{"time":0.9,"name":"a/zhuj_00009"},{"time":0.9333,"name":"a/zhuj_00010"},{"time":0.9667,"name":"a/zhuj_00011"},{"time":1,"name":"a/zhuj_00012"},{"time":1.0333,"name":"a/zhuj_00013"},{"time":1.0667,"name":"a/zhuj_00014"},{"time":1.1,"name":"a/zhuj_00015"},{"time":1.1333,"name":null}]}},"bones":{"r_ik":{"rotate":[{"time":0.1333,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1667,"angle":38.69},{"time":0.2667,"angle":2.56,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"angle":31.51},{"time":0.6667,"angle":-22.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.7}],"translate":[{"time":0.1333,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.1667,"x":24.02,"y":22.96},{"time":0.2667,"x":64.64,"y":225.09,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":56.03,"y":396.79},{"time":0.6667,"x":150,"y":122.9,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7}],"scale":[{"time":0.1333,"curve":0.25,"c3":0.75},{"time":0.1667,"x":0.503,"y":-0.381},{"time":0.2667,"y":-1,"curve":"stepped"},{"time":0.6333,"y":-1},{"time":0.6667,"y":-1.629,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.7}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":17.12,"y":13.52,"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.1667,"x":-86.63,"y":-266.74},{"time":0.2,"x":-29.17,"y":-63},{"time":0.2333,"x":-24.28,"y":60.16},{"time":0.2667,"x":41.62,"y":67.15,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":0.16,"y":17.95},{"time":0.6667,"x":80.42,"y":-14.4,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"x":-20.57,"y":2.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"x":67.02,"y":-70.19,"curve":0.349,"c2":0.39,"c3":0.69,"c4":0.75},{"time":1.0667,"x":29.46,"y":-24.29,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"x":-59.3,"y":6,"curve":0.364,"c2":0.64,"c3":0.701},{"time":1.3333}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":82.85,"y":-12.22,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"x":47.4,"y":-37.21,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"x":-17.65,"y":-32.13,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.6667,"x":43.49,"y":42.81,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"x":21.85,"y":9.36,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7667,"x":-62.69,"y":-76.55,"curve":0.342,"c2":0.36,"c3":0.687,"c4":0.73},{"time":1.0667,"x":3.36,"y":12.83,"curve":0.379,"c2":0.6,"c3":0.723},{"time":1.3333}]},"l_ik":{"rotate":[{"time":0.0667,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1333,"angle":-34.28,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"angle":-63.4,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.6667,"angle":2.03,"curve":"stepped"},{"time":0.7,"angle":2.03,"curve":0.365,"c2":0.45,"c3":0.754},{"time":1.3333}],"translate":[{"time":0.0667,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1333,"x":-60.34,"y":70.73,"curve":0.297,"c2":0.18,"c3":0.638,"c4":0.55},{"time":0.6,"x":-151.67,"y":380.94,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":29.71,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1333,"angle":7.38,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.6,"angle":36.02,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":76.11,"curve":0.338,"c2":0.36,"c3":0.671,"c4":0.69},{"time":0.7667,"angle":13.31,"curve":0.348,"c2":0.44,"c3":0.682,"c4":0.78},{"time":1.0667,"angle":21.11,"curve":0.35,"c2":0.65,"c3":0.684},{"time":1.3333,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":"stepped"},{"time":0.1333,"x":-7.85,"y":2.92,"curve":0.347,"c2":0.39,"c3":0.682,"c4":0.73},{"time":0.6,"x":99.36,"y":8.92,"curve":0.367,"c2":0.63,"c3":0.704},{"time":1.3333,"x":-7.85,"y":2.92}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":37.22,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":73.39,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":77.65,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":22.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":50.48,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":48.95,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":59.93,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":1.54,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-6.68,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"angle":-4.77,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}],"translate":[{"time":0.0667,"curve":0.325,"c2":0.23,"c3":0.659,"c4":0.56},{"time":0.1333,"x":39.49,"y":101.31,"curve":0.305,"c2":0.17,"c3":0.641,"c4":0.52},{"time":0.6,"x":6.66,"y":41.87,"curve":0.329,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.6667,"x":28.08,"y":83.67,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"x":5.91,"y":37.16,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7333,"x":-29.5,"y":109.03,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7667,"x":-21.98,"y":129.19,"curve":0.322,"c2":0.3,"c3":0.658,"c4":0.64},{"time":1.0333,"x":0.7,"y":-13.01,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0667,"x":-19.75,"y":-19.42,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.1667,"x":-16.77,"y":-3.81,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.3333}]},"l_upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":8.27,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":1.52,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":-25.71,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":37.43,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":30.18,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":8.56,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":-4.37,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":-2.06,"curve":0.38,"c2":0.6,"c3":0.725},{"time":1.3333,"angle":-6.45}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":45.87,"y":-1.01,"curve":0.287,"c2":0.15,"c3":0.634,"c4":0.54},{"time":0.6,"x":12.36,"y":-44.52,"curve":0.329,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.7,"x":-15.16,"y":-9.56,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"x":-100.98,"y":22.47,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-34.69,"y":12.67,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"x":-54.29,"y":-30.69,"curve":0.38,"c2":0.6,"c3":0.725},{"time":1.3333}]},"l_finger_a":{"rotate":[{"angle":-2.5}]},"l_finger_a2":{"rotate":[{"angle":5.32}],"translate":[{"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5}]},"l_finger_b2":{"rotate":[{"angle":16.78}],"translate":[{"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5}]},"l_finger_c2":{"rotate":[{"angle":16.54}],"translate":[{"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_d":{"rotate":[{"angle":-2.5}]},"l_finger_d2":{"rotate":[{"angle":26.01}],"translate":[{"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r_upparm":{"rotate":[{"angle":-6.94,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-42.16,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"angle":2.03,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":47.11,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":79.85,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":55.18,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":6.04,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":-0.99,"curve":0.337,"c2":0.35,"c3":0.674,"c4":0.69},{"time":0.9333,"angle":-35.06,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"angle":-32.65,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-28.99,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"angle":-6.33,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":25.34,"y":-85.66,"curve":0.289,"c2":0.17,"c3":0.641,"c4":0.57},{"time":0.6,"x":65.74,"y":35.42,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"x":117.09,"y":-47.26,"curve":0.34,"c2":0.35,"c3":0.679,"c4":0.71},{"time":0.9333,"x":-13.82,"y":-152.47,"curve":0.341,"c2":0.36,"c3":0.676,"c4":0.7},{"time":1.0333,"x":3.6,"y":-136.8,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":30.12,"y":-113.75,"curve":0.375,"c2":0.62,"c3":0.715},{"time":1.3333}]},"r_upparm2":{"rotate":[{"angle":12.97,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-1.38,"curve":0.322,"c2":0.23,"c3":0.656,"c4":0.56},{"time":0.0667,"angle":12.97,"curve":0.308,"c3":0.643,"c4":0.35},{"time":0.1,"angle":42.24,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":78.82,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":24.1,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":18.81,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":0.7,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":14.3,"curve":0.337,"c2":0.35,"c3":0.674,"c4":0.69},{"time":0.9333,"angle":15.51,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"angle":31.74,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":35.18,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333,"angle":12.97}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.6,"x":122.67,"y":45.28,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":73.71,"y":95.62,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":-46.55,"y":-38.81,"curve":0.335,"c2":0.34,"c3":0.675,"c4":0.69},{"time":0.9333,"x":-24.66,"y":-20.56,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"x":42.13,"y":20.67,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":25.48,"y":11.95,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333}]},"r_finger_a":{"rotate":[{"angle":14.41}]},"r_finger_b":{"rotate":[{"angle":-8.92}]},"r_finger_c":{"rotate":[{"angle":-9.49}]},"r_finger_d":{"rotate":[{"angle":7.12}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-28.12,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":44.43,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-3.92,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":-9.95,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.7667,"angle":-4.89,"curve":0.353,"c2":0.42,"c3":0.689,"c4":0.77},{"time":1.0667,"angle":-2.65,"curve":0.343,"c2":0.4,"c3":0.677,"c4":0.74},{"time":1.1667,"angle":-6.58,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"angle":-4.31}],"translate":[{"time":0.1333,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"x":-82.09,"y":-2.66,"curve":0.333,"c2":0.33,"c3":0.669,"c4":0.67},{"time":0.7667}]},"r_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":23.99,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"angle":5.22,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"angle":-18.84,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":7.33,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"angle":-13.57,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"angle":19.53,"curve":0.349,"c2":0.39,"c3":0.69,"c4":0.75},{"time":1.0667,"angle":-8.27,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":7.25,"curve":0.364,"c2":0.64,"c3":0.701},{"time":1.3333}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-17.47,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-7.31,"curve":0.336,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.3667,"angle":19.96,"curve":0.34,"c2":0.36,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-21.12,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":13.14,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":-13.39,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-41.77,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.9333,"angle":27.48,"curve":0.343,"c2":0.39,"c3":0.677,"c4":0.73},{"time":1.0667,"angle":-3.74,"curve":0.342,"c2":0.4,"c3":0.676,"c4":0.74},{"time":1.1667,"angle":-17.22,"curve":0.351,"c2":0.65,"c3":0.686},{"time":1.3333,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0667,"angle":23.99,"curve":0.326,"c2":0.23,"c3":0.66,"c4":0.56},{"time":0.1333,"angle":5.22,"curve":0.296,"c2":0.14,"c3":0.635,"c4":0.5},{"time":0.6,"angle":-18.84,"curve":0.33,"c2":0.32,"c3":0.664,"c4":0.65},{"time":0.6667,"angle":7.33,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7,"angle":-13.57,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.7667,"angle":19.53,"curve":0.324,"c2":0.3,"c3":0.66,"c4":0.64},{"time":1.0667,"angle":-8.27,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.1667,"angle":7.25,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.3333}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-11.92,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-1.76,"curve":0.336,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.3667,"angle":25.52,"curve":0.34,"c2":0.36,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-15.57,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":18.69,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":-7.84,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-36.22,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":0.9333,"angle":33.03,"curve":0.343,"c2":0.39,"c3":0.677,"c4":0.73},{"time":1.0667,"angle":1.81,"curve":0.342,"c2":0.4,"c3":0.676,"c4":0.74},{"time":1.1667,"angle":-11.67,"curve":0.351,"c2":0.65,"c3":0.686},{"time":1.3333,"angle":3.27}]},"head2":{"rotate":[{"time":0.6667,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"angle":5.87,"curve":0.377,"c2":0.51,"c3":0.748},{"time":1.0667}]},"r_leg":{"scale":[{"time":0.1333,"curve":0.25,"c3":0.75},{"time":0.1667,"x":0.787,"y":-1,"curve":"stepped"},{"time":0.6333,"x":0.787,"y":-1},{"time":0.6667}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":25.34,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-42.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-24.81,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":161.27,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"angle":-143.61,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.6667,"angle":108.86,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":36.8,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":-4.25,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.8,"angle":-31.24,"curve":0.342,"c2":0.37,"c3":0.676,"c4":0.7},{"time":0.9333,"angle":-58.68,"curve":0.341,"c2":0.37,"c3":0.675,"c4":0.71},{"time":1.0333,"angle":-90.06,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"angle":-48.42,"curve":0.343,"c2":0.4,"c3":0.677,"c4":0.74},{"time":1.1667,"angle":-6.5,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-135.88,"y":5.39,"curve":0.325,"c2":0.23,"c3":0.659,"c4":0.56},{"time":0.0667,"x":-256.76,"y":63.87,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"x":318.1,"y":-171.89,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"x":1082.98,"y":45.2,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"x":754.88,"y":728.06,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":1273.35,"y":-53.61,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":455.27,"y":-180.44,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-64.06,"y":-103.48,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.8,"x":-68.82,"y":-25.93,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9333,"x":-153.32,"y":121.18,"curve":0.341,"c2":0.36,"c3":0.675,"c4":0.7},{"time":1.0333,"x":-58.69,"y":40.26,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.0667,"x":-44.28,"y":-55.53,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"x":122.47,"y":-55.31,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":0.803,"y":0.682,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"y":-1,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"x":0.994,"y":-0.844,"curve":"stepped"},{"time":0.7,"x":0.994,"y":-0.844,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7667,"x":0.831,"y":-0.93,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.8,"x":0.789,"y":-0.755,"curve":"stepped"},{"time":1.0333,"x":0.789,"y":-0.755,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":1.0667,"x":0.695,"curve":0.25,"c3":0.75},{"time":1.3333}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-9.73,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"angle":-23.13,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":4.69,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"angle":-61.02,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7667,"angle":-32.79,"curve":0.345,"c2":0.37,"c3":0.689,"c4":0.74},{"time":1.0667,"angle":-13.92,"curve":0.378,"c2":0.61,"c3":0.721},{"time":1.3333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"y":-186.25,"curve":0.319,"c2":0.23,"c3":0.653,"c4":0.57},{"time":0.1333,"x":48.5,"y":40.9,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"y":345.15,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.6667,"x":248.34,"y":-36.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"x":61.3,"y":-61.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"x":-206.23,"y":-101.45,"curve":0.345,"c2":0.37,"c3":0.689,"c4":0.74},{"time":1.0667,"x":2.79,"y":-19.68,"curve":0.347,"c2":0.39,"c3":0.681,"c4":0.73},{"time":1.1667,"x":29.1,"y":32.67,"curve":0.367,"c2":0.63,"c3":0.705},{"time":1.3333}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-31,"curve":0.326,"c2":0.27,"c3":0.66,"c4":0.61},{"time":0.1,"angle":78.45,"curve":0.327,"c2":0.29,"c3":0.66,"c4":0.62},{"time":0.1333,"angle":-152.46,"curve":0.295,"c2":0.19,"c3":0.64,"c4":0.56},{"time":0.6,"angle":-87.67,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.6333,"angle":-108,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.6667,"angle":-114.69,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.7,"angle":-105.82,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.7333,"angle":41.72,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":27.63,"curve":0.343,"c2":0.36,"c3":0.684,"c4":0.72},{"time":1.0333,"angle":3.14,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.3333,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":103.03,"y":16.59,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"x":349.17,"y":93.6,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":377,"y":129.38,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"x":432.04,"y":252.54,"curve":0.339,"c2":0.35,"c3":0.675,"c4":0.69},{"time":0.6,"x":-13.24,"y":1029.9,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.6333,"x":284.88,"y":696.93,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.6667,"x":752.07,"y":275.43,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"x":362.28,"y":224.75,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7333,"x":252.8,"y":12.37,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"x":80.29,"y":-97.37,"curve":0.351,"c2":0.41,"c3":0.686,"c4":0.75},{"time":1.0333,"x":15.48,"y":-24.23,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.1667,"x":-52.17,"y":55.03,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1.3333,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":"stepped"},{"time":0.0667,"x":0.95,"y":0.95,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":0.95,"y":-0.95,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"x":1.29,"y":-1.29,"curve":0.347,"c2":0.38,"c3":0.688,"c4":0.74},{"time":0.6,"x":1.232,"y":-1.232,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.6333,"x":1.232,"y":-0.809,"curve":0.345,"c2":0.37,"c3":0.68,"c4":0.71},{"time":0.6667,"x":1.232,"y":-1.232,"curve":0.347,"c2":0.38,"c3":0.689,"c4":0.74},{"time":0.7,"x":0.875,"y":-0.95,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7333,"x":0.975,"y":0.844,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"curve":0.37,"c2":0.63,"c3":0.708},{"time":1.3333,"x":0.95,"y":0.95}]},"shadow":{"scale":[{"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.0667,"y":0.757,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"y":0.811,"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"y":1.253,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"y":1.164,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7,"y":0.986,"curve":0.377,"c2":0.51,"c3":0.748},{"time":0.7667}]},"r_arm":{"rotate":[{"angle":-8.2,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-13.93},{"time":0.0667,"angle":-60.51},{"time":0.1,"angle":-62.71},{"time":0.1333,"angle":-25.84},{"time":0.6,"angle":27.68},{"time":0.6667,"angle":3.05},{"time":0.7,"angle":-137.79},{"time":0.7667,"angle":171.9},{"time":0.8,"angle":157.91},{"time":0.9333,"angle":144.13},{"time":1.0333,"angle":124.02},{"time":1.0667,"angle":-32.36},{"time":1.3333,"angle":-8.2}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-41.06,"y":-16.61},{"time":0.1,"x":-27.22,"y":52.6},{"time":0.1333,"x":5.47,"y":50.88},{"time":0.6,"x":-26.72,"y":-9.06},{"time":0.6667,"x":-136.32,"y":1.61},{"time":0.7,"x":80.65,"y":75.26},{"time":0.7667,"x":84.81,"y":71.67},{"time":0.8,"x":9.26,"y":-15.84},{"time":0.9333,"x":7.48,"y":-9.84},{"time":1.0333,"x":6.15,"y":-5.35},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":0.708},{"time":0.1,"x":0.717},{"time":0.1333,"x":0.803},{"time":0.6,"x":0.817,"y":0.762},{"time":0.6667,"x":1.37},{"time":0.7,"x":-1.065},{"time":0.9333,"x":-1.368},{"time":1.0333,"x":-1.021},{"time":1.0667}]},"l_armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-70.14},{"time":0.1,"angle":-13.03},{"time":0.1333,"angle":115.4},{"time":0.6,"angle":147.71},{"time":0.6667,"angle":139.35},{"time":0.7,"angle":144.7},{"time":0.7333,"angle":179.91},{"time":0.7667,"angle":-15.92},{"time":1.0333,"angle":-2.99},{"time":1.3333,"angle":1.84}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-47.04,"y":42.46},{"time":0.1,"x":11.52,"y":-6.65},{"time":0.1333,"x":53.7,"y":-2.86},{"time":0.6,"x":61.61,"y":1.75},{"time":0.6667,"x":61.32,"y":5.82},{"time":0.7,"x":85.02,"y":2.27},{"time":0.7333,"x":25.94,"y":7.26},{"time":0.7667,"x":-46.14,"y":-10.29},{"time":1.0333,"x":-0.75,"y":-10.81},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":1.09},{"time":0.1333,"x":0.706,"y":0.847},{"time":0.6,"x":2.248},{"time":0.7,"x":1.63},{"time":0.7333,"x":-1.044},{"time":0.7667,"x":1.584},{"time":1.0333,"x":1.27},{"time":1.3333}]},"r_finger_a2":{"rotate":[{"angle":14.41}]},"r_finger_b2":{"rotate":[{"angle":-8.92}]},"r_finger_c2":{"rotate":[{"angle":-9.49}]},"r_finger_d2":{"rotate":[{"angle":7.12}]},"l_hand2":{"scale":[{"x":0,"y":0}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":15.59},{"time":0.1333,"angle":18.42},{"time":0.6,"angle":13.11},{"time":0.6667,"angle":57.13},{"time":0.7,"angle":7.32},{"time":0.7667,"angle":15.43},{"time":1.0667,"angle":15.55},{"time":1.1667},{"time":1.3333,"angle":9.15}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"y":0.751},{"time":0.1333,"y":0.853},{"time":0.6,"x":0.659,"y":0.822},{"time":1.3333}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0667,"x":26.77},{"time":0.1333,"x":16.87},{"time":0.6,"x":29.56},{"time":0.6667,"x":-0.2},{"time":0.7667,"x":-0.17,"y":-10.27},{"time":1.0667,"x":-0.08,"y":8.78},{"time":1.3333,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":44.9},{"time":0.1333,"angle":-45.16},{"time":0.6,"angle":11.27},{"time":0.6667,"angle":54.79},{"time":0.7,"angle":35.24},{"time":0.7667,"angle":19.05},{"time":1.0667,"angle":-20.9},{"time":1.1667,"angle":14.34},{"time":1.3333,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":44.9},{"time":0.1333,"angle":38.44},{"time":0.3,"angle":-18.77},{"time":0.6,"angle":7.41},{"time":0.6667,"angle":-24.12},{"time":0.7,"angle":35.24},{"time":0.7667,"angle":31.85},{"time":1.0667,"angle":-20.9},{"time":1.1667,"angle":-20.36},{"time":1.3333,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-12.38},{"time":0.1333,"angle":-36.29},{"time":0.3,"angle":-24.56},{"time":0.6,"angle":-31.83},{"time":0.6667,"angle":-110.13},{"time":0.7,"angle":-83.67},{"time":0.7667},{"time":1.0667,"angle":26.37},{"time":1.1667,"angle":-10.6},{"time":1.3333,"angle":7.98}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-112.87,"y":-109.8},{"time":0.1333,"x":-133.67,"y":-105.23},{"time":0.1667,"x":-101.04,"y":-49.3},{"time":0.3,"x":-176.77,"y":-36.51},{"time":0.6,"x":-99.31,"y":-37.52},{"time":0.6667,"x":-100.9,"y":-138.3},{"time":0.7,"x":-72.09,"y":-142.33},{"time":0.7667,"x":-110.87,"y":-78.71},{"time":1.0667,"x":-24.67,"y":-48.57},{"time":1.3333}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":2.138,"y":2.138},{"time":0.1333,"x":2.823,"y":1.854},{"time":0.6,"x":2.967,"y":1.522},{"time":0.6667,"x":1.934,"y":1.474},{"time":1.3333}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":33.36},{"time":0.1333,"angle":7.96},{"time":0.6,"angle":24.88},{"time":0.6667,"angle":45.51},{"time":0.7,"angle":21.47},{"time":0.7667,"angle":-9.31},{"time":1.0667,"angle":-33.22},{"time":1.1667,"angle":29.51},{"time":1.3333,"angle":-9.62}]},"r_upparm3":{"rotate":[{},{"time":0.0667,"angle":56.14},{"time":0.1333,"angle":-50.51},{"time":0.6,"angle":-135.48},{"time":0.6667,"angle":-136.3},{"time":0.7,"angle":-23.42},{"time":0.7667,"angle":-21.34},{"time":1.0667,"angle":6.75},{"time":1.1667,"angle":4.67},{"time":1.3333}],"translate":[{},{"time":0.6,"x":127.5,"y":81.83},{"time":0.6667,"x":135.42,"y":147.68},{"time":0.7},{"time":0.7667,"x":-12.2,"y":-20.68},{"time":1.0667}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":15.49},{"time":0.1333},{"time":0.6,"angle":-31.98},{"time":0.6667,"angle":10.06},{"time":0.7,"curve":"stepped"},{"time":0.7667},{"time":1.0667,"angle":-9.17},{"time":1.1667},{"time":1.3333,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-42.06},{"time":0.1333,"angle":18.35},{"time":0.6,"angle":-45.41},{"time":0.6667,"angle":-50.42},{"time":0.7,"curve":"stepped"},{"time":0.7667},{"time":1.0667,"angle":6.4},{"time":1.1667},{"time":1.3333,"angle":4.52}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-91.9},{"time":0.1333,"angle":-74.48},{"time":0.6,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-56.28},{"time":0.1333,"angle":-77.8},{"time":0.6,"angle":33.91},{"time":0.6667},{"time":0.7,"angle":-18.96},{"time":0.7667,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-11.95}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":39.84},{"time":0.1333,"angle":31.32},{"time":0.6,"angle":86.4},{"time":0.6667,"angle":83.56},{"time":0.7,"angle":26.29},{"time":0.7667,"curve":"stepped"},{"time":1.1667},{"time":1.3333,"angle":-8.22}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":19.89,"y":-14.88},{"time":0.1333,"x":32.79,"y":-41.73},{"time":0.6,"x":19.38,"y":-35.79},{"time":0.6667,"x":2.31,"y":-7.7},{"time":1.3333}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667},{"time":0.1333,"angle":43.27},{"time":0.6,"angle":55.73},{"time":0.6667},{"time":0.7,"angle":-67.87},{"time":0.7667,"angle":4.09},{"time":1.0667,"angle":20.21},{"time":1.1667},{"time":1.3333,"angle":-1.85}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":4.88,"y":-43.61},{"time":0.1333,"x":-11.93,"y":65},{"time":0.6,"x":31.93,"y":-32.46},{"time":0.6667,"x":-54.15,"y":41.88},{"time":0.7,"x":21.7,"y":68.45},{"time":0.7667,"x":32.71,"y":67.25},{"time":1.0667,"x":-47.13,"y":35.86},{"time":1.3333}]},"hair_t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":8.52},{"time":0.1333,"angle":-8.98},{"time":0.6,"angle":0.79},{"time":0.6667,"angle":-1.02},{"time":0.7,"angle":-8.68},{"time":0.7667},{"time":1.0667,"angle":-6.38},{"time":1.1667}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":12.22},{"time":0.1333,"angle":-7.25},{"time":0.6,"angle":-5.48},{"time":0.6667,"angle":-12.84},{"time":0.7,"angle":5.93},{"time":0.7667},{"time":1.0667,"angle":-10.87},{"time":1.1667},{"time":1.3333,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-21.87},{"time":0.1333,"angle":32.23},{"time":0.3333,"angle":21.14},{"time":0.6,"angle":40.57},{"time":0.6667,"angle":13.45},{"time":0.7,"angle":14.83},{"time":0.7667,"angle":14.44},{"time":1.0667,"angle":10.66},{"time":1.1667,"angle":11.02},{"time":1.3333,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-29.51},{"time":0.1333,"angle":-41.13},{"time":0.3333,"angle":22.09},{"time":0.6,"angle":26.89},{"time":0.6667,"angle":-3.93},{"time":0.7,"angle":-23.54},{"time":0.7667,"angle":12.73},{"time":1.0667,"angle":5.46},{"time":1.1667,"angle":-0.83},{"time":1.3333,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":44.78},{"time":0.1333,"angle":28.47},{"time":0.3333,"angle":48.31},{"time":0.6,"angle":85.29},{"time":0.6667,"angle":9.1},{"time":0.7,"angle":29.31},{"time":0.7667,"angle":56.03},{"time":1.0667,"angle":95.45},{"time":1.1667,"angle":18.9},{"time":1.3333,"angle":63.33}]},"headmouth":{"rotate":[{"time":0.6667},{"time":0.7,"angle":0.32},{"time":0.7667,"angle":-7.36},{"time":1,"angle":-15.78},{"time":1.1667,"angle":-4.46},{"time":1.3333}],"translate":[{"time":0.6667},{"time":0.7,"x":-9.23,"y":5.08},{"time":0.7667,"x":-14.87,"y":16.6},{"time":1,"x":-7.26,"y":35.86},{"time":1.3333}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-13.02},{"time":0.1333,"angle":-24.09},{"time":0.6,"angle":-18.83},{"time":0.6667,"angle":-10.89},{"time":0.7,"angle":-19.1},{"time":0.7667,"angle":-21.93},{"time":1.0667,"angle":-5.66},{"time":1.1667,"angle":-2.83},{"time":1.3333,"angle":8.77}],"scale":[{"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-13.02},{"time":0.1333,"angle":-24.09},{"time":0.6,"angle":9.35},{"time":0.6667,"angle":-23.49},{"time":0.7,"angle":14.32},{"time":0.7667,"angle":-3.09},{"time":0.8333,"angle":-32.51},{"time":1.0667,"angle":2.58},{"time":1.1667,"angle":-4.79},{"time":1.3333,"angle":-0.61}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-53.23,"y":-6.97},{"time":0.6,"x":-73.04,"y":-5.93},{"time":0.6667,"x":-86.38,"y":19.37},{"time":0.7,"x":-62.23,"y":-13.36},{"time":0.7667,"x":-6.3,"y":2.44},{"time":1.3333}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":26.12},{"time":0.1333,"angle":-33.86},{"time":0.6,"angle":17.96},{"time":0.6667,"angle":-30.75},{"time":0.7,"angle":14.32},{"time":0.7667,"angle":44.83},{"time":0.8333,"angle":32.69},{"time":1.0667,"angle":-51.59},{"time":1.1667,"angle":8.36},{"time":1.3333,"angle":-10}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.93},{"time":0.1333,"angle":-10.83},{"time":0.3,"angle":-17.1},{"time":0.6,"angle":-16.9},{"time":0.6667,"angle":20.79},{"time":0.7,"angle":13.57},{"time":0.7667,"curve":"stepped"},{"time":1.0667},{"time":1.1667,"angle":-5.03},{"time":1.3333,"angle":-11.82}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":41.46},{"time":0.1333,"angle":-31.95},{"time":0.3,"angle":10.84},{"time":0.6},{"time":0.6667,"angle":45.5},{"time":0.7,"angle":-15.56},{"time":0.7667,"angle":-27.01},{"time":1.0667,"angle":13.84},{"time":1.1667,"angle":2.84},{"time":1.3333,"angle":1.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-58.71,"y":-18.28},{"time":0.3,"x":-43.07,"y":-3.13},{"time":0.6,"x":-8.1,"y":-1.98},{"time":0.6667,"x":-84.71,"y":-4.69},{"time":0.7,"x":-54.46,"y":-33.89},{"time":0.7667,"x":-3.81,"y":-47.8},{"time":1.0667,"x":-40.87,"y":-40.97},{"time":1.1667,"x":1.02,"y":-5.62},{"time":1.3333}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":23.83},{"time":0.1333,"angle":-25.44},{"time":0.6,"angle":24.3},{"time":0.6667,"angle":45.5},{"time":0.7,"angle":29.05},{"time":0.7667,"angle":13.4},{"time":0.8667,"angle":-24.92},{"time":1.0667,"angle":-20.59},{"time":1.1667,"angle":11.55},{"time":1.3333,"angle":15.47}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-19.5},{"time":0.1333,"angle":16.7},{"time":0.6,"angle":7.2},{"time":0.6667,"angle":39.42},{"time":0.7,"angle":-34.68},{"time":0.7667,"angle":34.93},{"time":1.0667,"angle":-21.35},{"time":1.1667},{"time":1.3333,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-35.8},{"time":0.1333,"angle":68.99},{"time":0.6,"angle":-26.98},{"time":0.6667,"angle":56.47},{"time":0.7,"angle":-44.29},{"time":0.7667,"angle":-15.83},{"time":1.0667,"angle":37.68},{"time":1.1667},{"time":1.3333,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":6.21,"y":10.67},{"time":0.6,"x":9.81,"y":-25.6},{"time":0.7,"x":-26.54,"y":-20.81},{"time":0.7667,"x":-1.22,"y":-7.58},{"time":1.3333,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":37.1},{"time":0.1333,"angle":-42.72},{"time":0.6,"angle":72.54},{"time":0.6667,"angle":-44.71},{"time":0.7,"angle":14.62},{"time":0.7667,"angle":43.02},{"time":1.0667,"angle":-30.54},{"time":1.1667,"angle":-2.06},{"time":1.3333,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":13.87},{"time":0.1333,"angle":16.7},{"time":0.2667,"angle":56.98},{"time":0.6,"angle":16.82},{"time":0.6667,"angle":-4.21},{"time":0.7,"angle":52.49},{"time":0.7667,"angle":80.81},{"time":1.0667,"angle":63.64},{"time":1.1667,"angle":-20.36},{"time":1.3333,"angle":26.63}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":9.54}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":40.99}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":8.76}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":-10.54},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-27.86},{"time":0.1333,"angle":-18},{"time":0.3,"angle":5.72},{"time":0.6,"angle":-56.01},{"time":0.6667,"angle":-29.21},{"time":0.7,"angle":-9.22},{"time":0.7667,"angle":-14.74},{"time":1.0667,"angle":-44.39},{"time":1.1667,"angle":6.94},{"time":1.3333,"angle":-0.6}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":12.92},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":6.67}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-8.27},{"time":0.1333,"angle":-2.3},{"time":0.6,"angle":16.69},{"time":0.6667,"angle":-3.67},{"time":0.7,"angle":-7.74},{"time":0.7667,"angle":6.04},{"time":1.0667,"angle":-10.54},{"time":1.1667,"angle":-4.13},{"time":1.3333,"angle":3.67}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"r_ear_s":{"rotate":[{"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":27.35,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":8.97,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.2667,"angle":37.07,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.6,"angle":16.2,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":-23.8,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7,"angle":46.84,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.7667,"angle":19.5,"curve":0.341,"c2":0.37,"c3":0.675,"c4":0.7},{"time":0.9,"angle":-3.82,"curve":0.345,"c2":0.4,"c3":0.68,"c4":0.74},{"time":1.0667,"angle":8.97,"curve":0.342,"c2":0.4,"c3":0.676,"c4":0.74},{"time":1.1667,"angle":17.06,"curve":0.351,"c2":0.65,"c3":0.686},{"time":1.3333,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"r_eye_fire":{"rotate":[{},{"time":0.0667,"angle":-7.84},{"time":0.1333,"angle":-32.4},{"time":0.6,"angle":-46.07},{"time":0.6667,"angle":-6},{"time":0.7,"angle":-7.95},{"time":0.7667,"angle":20.37},{"time":1.0667,"angle":-15.05},{"time":1.1667,"angle":-5.08},{"time":1.3333}]},"s1":{"translate":[{"x":44.14,"y":871.69},{"time":0.6,"x":39.16,"y":905.66}],"scale":[{"x":5,"y":5}]},"s2":{"translate":[{"x":250.1,"y":731.92},{"time":0.6333,"x":278.27,"y":730.27}],"scale":[{"x":5,"y":5}]},"s3":{"translate":[{"x":522.28,"y":518.6},{"time":0.6667,"x":313.28,"y":707.08}],"scale":[{"x":5,"y":5}]},"s4":{"translate":[{"x":257.46,"y":525.95}],"scale":[{"x":5,"y":5}]},"s5":{"translate":[{"x":217,"y":511.24}],"scale":[{"x":5,"y":5}]},"s6":{"translate":[{"x":189.08,"y":511.24}],"scale":[{"x":5,"y":5}]},"s":{"scale":[{"x":0,"y":0},{"time":0.0333,"curve":"stepped"},{"time":1.3},{"time":1.3333,"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"zj":{"rotate":[{"angle":39.03},{"time":0.6333,"angle":14.74},{"time":0.7333,"angle":-4.12},{"time":0.9667,"angle":-7.72}],"translate":[{"x":-1638.68,"y":144.25},{"time":0.6333,"x":-1834.28,"y":20.37},{"time":0.7333,"x":-1638.68,"y":144.25}],"scale":[{"x":2.807,"y":2.807}],"shear":[{"y":-13}]},"zj2":{"rotate":[{"angle":39.03},{"time":0.6333,"angle":-13.63},{"time":0.7333,"angle":-7.4},{"time":0.9667,"angle":-11.28}],"translate":[{"x":-1638.68,"y":144.25},{"time":0.6333,"x":-1638.68,"y":-83.37}],"scale":[{"x":2.807,"y":2.807}],"shear":[{"y":17}]}},"ik":{"lhand":[{"softness":50},{"time":0.0333,"mix":0,"softness":50,"curve":"stepped"},{"time":1.0333,"mix":0,"softness":50},{"time":1.3333,"softness":50}],"r_ik":[{"time":0.6}],"r_ik2":[{"time":0.1333,"softness":50,"curve":"stepped"},{"time":0.1667,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":0.6,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":0.6667,"softness":50}],"rhand":[{"softness":50},{"time":0.0333,"mix":0,"softness":50,"curve":"stepped"},{"time":1.0333,"mix":0,"softness":50},{"time":1.0667,"softness":50}]},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.2,"vertices":[-31.93134,-81.1846,-42.60324,-50.47324,-21.36816,-62.50143,-20.28406,-38.41428,-4.95038,-43.16226,1.75409,-26.59991,11.29492,-24.15213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14.02216,-58.32932,1.53766,-64.53867,-10.9469,-70.74783,-21.43884,-75.96606,0,0,0,0,0,0,9.83972,-34.66701,21.75732,-28.73352,0,0,0,0,0,0,0,0,0,0,0,0,34.44312,-29.9411,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.04004,-56.24902,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-30.10202,-50.38266,-9.75293,-57.8786],"curve":0.328,"c2":0.27,"c3":0.661,"c4":0.6},{"time":0.6,"vertices":[-7.16339,-66.76302,5.08936,-49.54437,-1.29144,-49.78841,4.49988,-18.28939,2.12268,-18.7148,9.95319,-12.1902,8.31146,-13.36357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1665,0.00913,0.16797,-0.01204,1.97058,0.11008,1.96887,-0.14279,6.69678,13.14975,8.32507,12.18524,14.53662,38.57264,19.35376,36.39595,20.49756,75.40443,29.97852,72.16203,6.336,27.22184,9.76855,26.18748,2.30487,10.26134,3.60046,9.88228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25.71436,-29.77234,17.19019,-34.88861,-5.34116,-25.95972,2.87909,-26.34647,30.28652,-123.59125,69.57217,-109.37783,55.94293,-119.57079,12.49084,25.94439,21.61969,24.69611,35.44558,-124.35976,28.14204,-133.34988,4.31403,19.35526,14.09491,17.24059,48.12115,-135.29684,-3.29041,-14.08661,10.0495,-16.24655,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.90897,-144.90884,-11.19832,-140.3,-7.68707,-43.81539,6.48303,-44.93758,0.21606,1.12893,0.35913,1.0921,-5.72417,-40.28438,54.25677,-122.33961,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-4.50888,-9.19664,6.18164,-11.14027,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-2.07217,-24.64662,6.72906,-25.35147,55.4898,-115.34093,44.22822,-137.56801,0.70801,0.03941,0.70764,-0.05124,3.12305,2.39338,3.40527,1.97456]},{"time":0.6667,"vertices":[3.6321,-100.9129,62.7143,-54.9528,12.52618,-87.53851,61.60427,-40.45278,16.05284,-73.74738,80.50346,-26.3567,38.5543,-76.38689,18.67151,22.63937,29.30438,1.55887,-5.25476,-10.40659,-11.2193,-3.168,-2.58197,-0.24799,-1.92908,1.73404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.46552,-13.89214,-5.67834,-52.09679,11.59296,-45.30103,28.76481,-58.07358,21.99501,-68.80438,-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,37.42488,-76.73364,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,58.73687,-116.59249,45.50251,-140.80627]},{"time":0.7,"offset":86,"vertices":[-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,55.4898,-115.34093,44.22822,-137.56801]},{"time":1.0667}]},"r_armour_t":{"r_armour_t":[{"time":0.1},{"time":0.1333,"vertices":[363.86145,-406.77414,-154.45874,172.56805,-444.83313,480.81378,73.48755,-98.52859],"curve":"stepped"},{"time":0.6667,"vertices":[363.86145,-406.77414,-154.45874,172.56805,-444.83313,480.81378,73.48755,-98.52859]},{"time":0.7}]},"r_armour_u":{"r_armour_u":[{},{"time":0.6,"offset":2,"vertices":[33.29639,97.05774,25.34796,-46.59947,19.17896,-49.4594,0,0,0,0,46.1908,-30.76799,41.87512,-36.42543,63.92395,-85.74211,52.42944,-93.21632,50.58545,147.45459]},{"time":0.7,"offset":2,"vertices":[40.94677,-10.65396,13.24945,-35.16621,10.98497,-34.38681,0,0,0,0,39.89206,-26.57236,36.16488,-31.45833,34.73873,-44.58083,39.64137,-45.07053,45.15741,2.10747]},{"time":1.3333}]},"r_upparm":{"r_upparm":[{},{"time":0.0667,"vertices":[43.13046,-13.27382,-36.1978,-26.94739,5.74899,22.31195,0,0,0,0,0,0,0,0,0,0,31.6051,18.1186,-4.06282,-36.20312,38.16904,39.10783,37.80072,30.64732,43.97684,21.13391,55.23495,13.60487,67.52536,11.74265]},{"time":0.1333,"vertices":[60.07882,-69.59204,19.27461,1.86738,5.44641,21.13764,0,0,0,0,0,0,0,0,0,0,66.70468,20.39863,-12.45708,1.58896,184.55437,33.34988,148.37286,83.35548,67.07377,93.50201,-36.5234,56.99421,-120.72923,-18.50066,12.30743,-14.77753,12.80518,14.34698,24.56116,-5.73856,2.06067,25.13708,31.05945,12.91113,-17.34119,28.82153]},{"time":0.6,"vertices":[-2.76124,-163.20505,137.66345,-15.41998,3.32836,12.91745,0,0,0,0,0,0,0,0,0,0,91.91296,-18.69115,13.58247,56.98287,196.27774,40.69681,101.71411,88.45444,-28.87119,64.12794,-155.66006,-30.5406,-222.00279,-166.49883,-7.98074,-106.22893,106.21513,11.44228,19.44185,-73.45589,69.19238,32.60618,49.33606,-42.82529,33.65353,56.79309]},{"time":0.7,"vertices":[-13.96832,-199.53496,111.97314,45.99949,72.60979,33.76303,0,0,0,0,0,0,0,0,0,0,79.37938,-16.14236,11.73032,49.21249,138.32974,-78.16116,102.05568,-47.90683,40.54369,-51.69243,-17.7495,-95.54425,-39.05264,-155.89218,-6.89246,-91.74317,91.73126,9.88197,-3.60842,-58.27855,80.75627,29.49527,42.60842,-36.98548,29.06442,49.04858]},{"time":1.3333}]},"skirt_f":{"skirt_f":[{"curve":0.318,"c3":0.652,"c4":0.34},{"time":0.0667,"vertices":[11.36368,-18.2469,7.44275,-20.89423,8.88153,19.13908,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.28342,-32.90398,7.84229,-30.18169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.3587,5.60055],"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1333,"vertices":[32.97858,-49.33337,27.75054,-52.55202,23.88503,-50.57948,6.32187,8.77411,6.32187,8.77411,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22.94338,-67.66884,29.05088,-64.37901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18.69651,-67.62704],"curve":0.285,"c2":0.16,"c3":0.638,"c4":0.56},{"time":0.6,"vertices":[23.30594,-62.53973,21.92651,-95.65314,12.84511,-100.54065,32.995,20.33549,32.995,20.33549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19.05412,-104.6858,20.95905,-71.52986,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9.74485,-110.72694],"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"vertices":[23.30984,-57.4722,22.0685,-117.90897,7.61622,-123.34504,29.1326,17.95502,29.1326,17.95502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19.53236,-125.88426,21.23767,-65.40994,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.87887,-132.33893],"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"vertices":[18.67397,-46.04212,16.6993,-66.78976,12.59822,-53.31103,23.33871,14.38412,23.33871,14.38412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14.66753,-73.17892,17.01392,-52.40121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10.40528,-60.5162],"curve":0.38,"c2":0.53,"c3":0.744},{"time":1.0667}]}}},"drawOrder":[{"time":0.0667,"offsets":[{"slot":"body","offset":2},{"slot":"r_beard2","offset":3}]},{"time":0.1333,"offsets":[{"slot":"l_arm","offset":40},{"slot":"l_hand","offset":40},{"slot":"l_finger_d","offset":40},{"slot":"l_finger_c","offset":40},{"slot":"l_finger_b","offset":40},{"slot":"l_finger_a","offset":40},{"slot":"l_armour","offset":40},{"slot":"l_beard","offset":-6},{"slot":"r_beard","offset":-14},{"slot":"r_upparm","offset":-20},{"slot":"r_armour_u","offset":-23},{"slot":"r_upparm_2","offset":-22},{"slot":"r_arm","offset":-23},{"slot":"r_hand","offset":-36},{"slot":"r_finger_d","offset":-38},{"slot":"r_finger_c","offset":-39},{"slot":"r_finger_b","offset":-40},{"slot":"r_finger_a","offset":-41}]},{"time":0.6667,"offsets":[{"slot":"l_armour","offset":-5},{"slot":"body","offset":-5}]},{"time":0.7,"offsets":[{"slot":"body","offset":2}]},{"time":1.3333,"offsets":[{"slot":"r_beard2","offset":3}]}],"events":[{"time":0.7,"name":"hit"}]},"die":{"slots":{"lock":{"color":[{"time":0.7667,"color":"ffffff00"},{"time":0.8333,"color":"ffffffff"}]},"lock_2":{"color":[{"time":1.3333,"color":"ffffff00"},{"time":1.4,"color":"ffffffff"}]},"r_eye":{"color":[{"time":2.7667,"color":"ffffffff"},{"time":3,"color":"000000ff"}]},"r_eye_fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"},{"time":1.9333,"name":"eyefire/eyefire_00002"},{"time":1.9667,"name":"eyefire/eyefire_00003"},{"time":2,"name":"eyefire/eyefire_00004"},{"time":2.0333,"name":"eyefire/eyefire_00006"},{"time":2.0667,"name":"eyefire/eyefire_00007"},{"time":2.1,"name":"eyefire/eyefire_00008"},{"time":2.1333,"name":"eyefire/eyefire_00010"},{"time":2.1667,"name":"eyefire/eyefire_00011"},{"time":2.2,"name":"eyefire/eyefire_00012"},{"time":2.2333,"name":"eyefire/eyefire_00014"},{"time":2.2667,"name":"eyefire/eyefire_00015"},{"time":2.3,"name":"eyefire/eyefire_00017"},{"time":2.3333,"name":"eyefire/eyefire_00018"},{"time":2.3667,"name":"eyefire/eyefire_00019"},{"time":2.4,"name":"eyefire/eyefire_00021"},{"time":2.4333,"name":"eyefire/eyefire_00022"},{"time":2.4667,"name":"eyefire/eyefire_00023"},{"time":2.5,"name":"eyefire/eyefire_00025"},{"time":2.5333,"name":"eyefire/eyefire_00026"},{"time":2.5667,"name":"eyefire/eyefire_00028"},{"time":2.6,"name":"eyefire/eyefire_00029"},{"time":2.6333,"name":"eyefire/eyefire_00030"},{"time":2.6667,"name":"eyefire/eyefire_00032"},{"time":2.7,"name":"eyefire/eyefire_00033"},{"time":2.7333,"name":"eyefire/eyefire_00034"},{"time":2.7667,"name":null}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":16.49},{"time":0.1,"angle":-16.57},{"time":0.3,"angle":1.8},{"time":0.7667,"angle":-16.9},{"time":0.8333,"angle":3.76},{"time":0.9667,"angle":1.33},{"time":1.3333,"angle":1.68},{"time":1.4,"angle":-16.6},{"time":1.6333,"angle":-6.02},{"time":1.8667,"angle":-0.35},{"time":1.9333,"angle":-13.61},{"time":2.0333,"angle":-5.47},{"time":2.6667,"angle":-9.54},{"time":2.7667,"angle":-7.05},{"time":2.8333,"angle":-15.47},{"time":3,"angle":2.5}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-184.28,"y":-59.89},{"time":0.1,"x":55.28,"y":-92.14},{"time":0.3,"x":115.18,"y":4.61},{"time":0.7667,"x":198.1,"y":64.5},{"time":0.8333,"x":-364.72,"y":-0.95},{"time":0.9667,"x":-270.68,"y":6.37},{"time":1.3333,"x":-164.46,"y":78.32},{"time":1.4,"x":61.15,"y":-24.61},{"time":1.6333,"x":96.07,"y":-109.25},{"time":1.8667,"x":15.4,"y":-158.17},{"time":1.9333,"x":-35.28,"y":-151.53},{"time":2.0333,"x":23.8,"y":14.69},{"time":2.6667,"x":-96.75,"y":119.78},{"time":2.7667,"x":-96.75,"y":-257.99},{"time":2.8333,"x":-96.75,"y":-175.07},{"time":3,"x":-96.75,"y":-216.53}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":40.56},{"time":0.1,"angle":48.46},{"time":0.1667,"angle":36.57},{"time":0.3,"angle":30.02},{"time":0.7667,"angle":21.83},{"time":0.8333,"angle":12.42},{"time":0.9,"angle":34.56},{"time":0.9333,"angle":71.56},{"time":0.9667,"angle":44.82},{"time":1.0667,"angle":16.51},{"time":1.3333,"angle":-27.67},{"time":1.4,"angle":-49.08},{"time":1.5,"angle":-39.13},{"time":1.6333,"angle":-47.16},{"time":1.8667,"angle":-37.47},{"time":1.9333,"angle":-55.66},{"time":2.0333,"angle":-8.32},{"time":2.6667,"angle":-18.72},{"time":2.7667,"angle":-9.15},{"time":2.8333,"angle":-36.31},{"time":3,"angle":-15.71}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-98.46,"y":-24.61},{"time":0.0667,"x":74.49,"y":72.73},{"time":0.1,"x":286.77,"y":-3.16},{"time":0.1667,"x":388.95,"y":-330.47},{"time":0.3,"x":320.72,"y":-272.48},{"time":0.7667,"x":328.07,"y":-224.33},{"time":0.8333,"x":269.63,"y":-170.96},{"time":0.9,"x":77.59,"y":-240.96},{"time":0.9333,"x":-99.14,"y":-246.25},{"time":0.9667,"x":-171.61,"y":-179.86},{"time":1.0667,"x":-116.17,"y":-43},{"time":1.3333,"x":34.67,"y":23.83},{"time":1.4,"x":316.86,"y":-73.41},{"time":1.5,"x":380.06,"y":-201.1},{"time":1.6333,"x":346.97,"y":-293.06},{"time":1.8667,"x":323.56,"y":-321.08},{"time":1.9333,"x":386.93,"y":-386},{"time":2.0333,"x":376.07,"y":-344.42},{"time":2.6667,"x":260.01,"y":-271.8},{"time":2.7667,"x":14.09,"y":-439.51},{"time":2.8333,"x":27.11,"y":-364.85},{"time":3,"x":35.95,"y":-382.46}],"scale":[{"time":0.0333},{"time":0.0667,"y":-1,"curve":"stepped"},{"time":0.9,"y":-1},{"time":0.9333,"x":0.679,"y":0.679}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-21.28},{"time":0.1,"angle":29.83},{"time":0.3,"angle":-22.81},{"time":0.7667,"angle":36.27},{"time":0.8333,"angle":-13.81},{"time":0.9667,"angle":4.9},{"time":1.3333,"angle":17.12},{"time":1.4,"angle":62.03},{"time":1.6333,"angle":16.28},{"time":1.8667,"angle":-4},{"time":1.9333,"angle":5.81},{"time":2.0333,"angle":-2.56},{"time":2.6667,"angle":61.08},{"time":2.7667,"angle":41.63},{"time":2.8333,"angle":37.23},{"time":3,"angle":2.61}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"x":18.45,"y":-42.62},{"time":0.1,"x":-43.9,"y":-0.68},{"time":0.3,"x":-58.59,"y":-2.25},{"time":0.7667,"x":11.9,"y":-2.22,"curve":"stepped"},{"time":0.8333,"x":11.9,"y":-2.22},{"time":0.9667,"x":6.27,"y":6.41},{"time":1.3333,"x":33.65,"y":8.73},{"time":1.4,"x":7.7,"y":32.35},{"time":1.6333,"x":-4.69,"y":-13.44},{"time":1.8667,"x":8.33,"y":-6.9},{"time":1.9333,"x":-19.99,"y":-23.01},{"time":2.0333,"x":-15.28,"y":-2.95},{"time":2.6667,"x":-0.46,"y":11.36}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":2.76},{"time":0.1,"angle":-18.51},{"time":0.3,"angle":48.94},{"time":0.7667,"angle":17.78},{"time":0.8333,"angle":5.37},{"time":0.9667,"angle":5.68},{"time":1.3333,"angle":-0.07},{"time":1.4,"angle":1.28},{"time":1.6333,"angle":4.18},{"time":1.8667,"angle":-4.85},{"time":1.9333,"angle":1.88},{"time":2.0333,"angle":34.7},{"time":2.6667,"angle":0.77},{"time":2.7667,"angle":29.95},{"time":2.8333,"angle":1.95},{"time":3,"angle":-10.36}],"translate":[{"time":0.1},{"time":0.3,"x":-14.48,"y":30.27},{"time":0.8333}]},"r_upparm":{"rotate":[{"angle":-6.94,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":0.83},{"time":0.1,"angle":-12.63},{"time":0.1667,"angle":28.26},{"time":0.3,"angle":39.35},{"time":0.7667,"angle":-0.67},{"time":0.8333,"angle":53.95},{"time":0.9,"angle":28.66},{"time":0.9667,"angle":9.43},{"time":1.0667,"angle":-13.21},{"time":1.3333,"angle":-41.05},{"time":1.4,"angle":-64.3},{"time":1.5,"angle":-18.04},{"time":1.6333,"angle":2.94},{"time":1.8667,"angle":21.32},{"time":1.9333,"angle":31.47},{"time":2.0333,"angle":59.01},{"time":2.6667,"angle":7.47},{"time":2.7667,"angle":-19.11},{"time":2.8333,"angle":-5.56},{"time":3,"angle":4.52}],"translate":[{"time":0.1},{"time":0.1667,"x":57.8,"y":22.76},{"time":0.3,"x":31.87,"y":44.86},{"time":0.7667,"x":42.14,"y":-13.87},{"time":0.8333,"x":39.83,"y":-36.83},{"time":0.9,"x":18.62,"y":-33.41,"curve":"stepped"},{"time":1.5,"x":18.62,"y":-33.41},{"time":1.6333,"x":43.93,"y":-21.89},{"time":1.8667,"x":47.72,"y":15.61},{"time":2.6667,"x":7.84,"y":-7.41},{"time":3}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":16.11},{"time":0.1,"angle":-35.23},{"time":0.1667,"angle":82.25},{"time":0.3,"angle":116.74},{"time":0.7667,"angle":82.7},{"time":0.8333,"angle":82.18},{"time":0.8667,"angle":57.67},{"time":0.9667,"angle":-26.21},{"time":1.3333,"angle":-85.18},{"time":1.4,"angle":-78.37},{"time":1.5,"angle":-30.79},{"time":1.6333,"angle":-39.33,"curve":"stepped"},{"time":1.8667,"angle":-39.33},{"time":1.9333,"angle":-9.78},{"time":2.0333,"angle":-7.75},{"time":2.6667,"angle":-10.01},{"time":2.7667,"angle":4.29},{"time":2.8333,"angle":34.82},{"time":3,"angle":37.42}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":-150.81,"y":24.49},{"time":0.1,"x":-76.17,"y":120.73},{"time":0.1667,"x":131.02,"y":104.78},{"time":0.3,"x":518.03,"y":344.46},{"time":0.7667,"x":758.79,"y":560.74},{"time":0.8333,"x":77.5,"y":434.32},{"time":0.8667,"x":-262.6,"y":159.04},{"time":0.9,"x":-573.86,"y":162.62},{"time":0.9667,"x":-428.45,"y":161.24},{"time":1.3333,"x":-380.12,"y":197.16},{"time":1.4,"x":-110.57,"y":161.24},{"time":1.5,"x":-67.63,"y":142.65},{"time":1.6333,"x":-87.53,"y":32.25},{"time":1.8667,"x":-133.6,"y":-18.43},{"time":1.9333,"x":-152.03,"y":-32.25},{"time":2.0333,"x":-181.18,"y":85.36},{"time":2.1333,"x":-235.29,"y":123.69},{"time":2.6667,"x":-322.46,"y":196.08},{"time":2.7667,"x":-367.32,"y":-41.73},{"time":2.8333,"x":-362.56,"y":-83.63},{"time":3,"x":-359.32,"y":-106.64}],"scale":[{"x":0.95,"y":0.95}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-19.75},{"time":0.1,"angle":11.41},{"time":0.1667,"angle":40.75},{"time":0.3,"angle":111.94},{"time":0.7667,"angle":70.86},{"time":0.8333,"angle":81.86},{"time":0.9667,"angle":5.88},{"time":1.3333,"angle":-11.53},{"time":1.4,"angle":-24.45},{"time":1.5,"curve":"stepped"},{"time":1.8667},{"time":1.9333,"angle":5.49},{"time":2.0333,"angle":8.95},{"time":2.6667,"angle":-41.62},{"time":2.7667,"angle":-2.49},{"time":2.8333,"angle":-23.36},{"time":2.9333,"angle":-2.1},{"time":3}],"translate":[{"time":0.0333},{"time":0.1,"x":-32.08,"y":138.93},{"time":0.1667,"x":-24.98,"y":138.16},{"time":0.3,"x":-57.9,"y":74.7},{"time":0.7667,"x":-39.31,"y":141.16},{"time":2.0333},{"time":2.6667,"x":-41.56,"y":-12.73},{"time":2.7667,"x":-30.06,"y":148.44}],"scale":[{"time":0.3},{"time":0.7667,"x":1.275},{"time":0.8333,"curve":"stepped"},{"time":2.0333},{"time":2.6667,"x":1.827},{"time":2.7667}],"shear":[{"time":2.0333},{"time":2.6667,"x":-3.87,"y":28.69},{"time":2.7667}]},"r_upparm3":{"rotate":[{"time":0.0333},{"time":0.1,"angle":-21.47},{"time":0.1667,"angle":-27.88},{"time":0.3,"angle":-33.47},{"time":0.7667,"angle":-5.69},{"time":0.8333,"angle":-57.95},{"time":0.9,"angle":-24.73},{"time":0.9667,"angle":-7.42},{"time":1.0667,"angle":28.95},{"time":1.3333,"angle":53.49},{"time":1.4,"angle":79.29},{"time":1.5,"angle":27.55},{"time":1.6333,"angle":0.33},{"time":1.8667,"angle":-23.2},{"time":1.9333,"angle":-32.54},{"time":2.0333,"angle":-58.89},{"time":2.6667,"angle":-1.39},{"time":2.7667,"angle":33.34},{"time":2.8333,"angle":19.02},{"time":3}],"translate":[{},{"time":0.1,"x":22.99,"y":-32.47},{"time":0.1667,"x":74.29,"y":2.56},{"time":0.3,"x":34.41,"y":49.49},{"time":0.7667,"x":69.3,"y":30.53},{"time":0.8333,"x":64.16,"y":28.43},{"time":0.9,"x":37.93,"y":34.06},{"time":0.9667,"x":49.12,"y":1.88},{"time":1.0667,"x":64.85,"y":-31.31},{"time":1.6333,"x":80.3,"y":9.26},{"time":1.8667,"x":91.3,"y":14.17},{"time":2.6667,"x":100.79,"y":-26.46}]},"l_ik":{"rotate":[{"time":2.6667},{"time":2.7333,"angle":-34.2},{"time":2.8333,"angle":-127.38}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":4.61,"curve":"stepped"},{"time":0.1667,"x":4.61},{"time":0.2333,"x":172.76,"y":64.5},{"time":0.3,"x":165.85,"curve":"stepped"},{"time":0.7667,"x":165.85},{"time":0.8333,"x":-225.74,"y":69.11},{"time":0.9,"x":-400.81,"curve":"stepped"},{"time":1.3333,"x":-400.81},{"time":1.4,"x":9.21,"y":87.53},{"time":1.4667,"x":87.53,"y":96.75},{"time":1.5333,"x":105.96,"y":4.61,"curve":"stepped"},{"time":2.6667,"x":105.96,"y":4.61},{"time":2.7333,"x":-122.32,"y":40.88},{"time":2.8333,"x":-273.74,"y":20.43},{"time":3,"x":-264.7,"y":23.44}]},"r_ik":{"rotate":[{"time":2.6667},{"time":2.7667,"angle":139.62},{"time":3,"angle":178.71}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8333,"x":4.61,"curve":"stepped"},{"time":0.9667,"x":4.61},{"time":1.0333,"x":-184.28,"y":42.93},{"time":1.1333,"x":-214.34,"curve":"stepped"},{"time":1.2667,"x":-214.34},{"time":1.3,"x":-9.32,"y":94.45},{"time":1.3667,"x":69.58,"curve":"stepped"},{"time":2.6667,"x":69.58},{"time":2.7667,"x":155.07,"y":0.5},{"time":3,"x":136.39,"y":-39.99}]},"l_ik2":{"translate":[{"time":0.1667},{"time":0.2333,"x":28.91,"y":-23.32},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"x":2.98,"y":-12.68},{"time":0.9,"x":43.46,"y":0.19},{"time":1.3333,"x":15.3,"y":77.22},{"time":1.4,"x":35.04,"y":42.45},{"time":1.4667,"x":27.23,"y":26.49},{"time":1.5333,"x":7.88,"y":58.56},{"time":1.6333,"x":22.2,"y":62.12},{"time":1.8667,"x":41.41,"y":-7.11},{"time":1.9333,"x":57.27,"y":-30.03},{"time":2.0333,"x":-26.86,"y":0.37},{"time":2.6667,"x":-131.88,"y":-108},{"time":2.7333,"x":68.19,"y":9.9},{"time":2.8333,"x":17.31,"y":6.26},{"time":3,"x":-3.16,"y":28.58}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":119.88,"y":-43.84},{"time":0.1,"x":56.38,"y":18.74},{"time":0.7667,"x":37.11,"y":12.33},{"time":0.8333,"x":102.75,"y":-72.41},{"time":0.9667,"x":145.32,"y":-93.43},{"time":1.0333,"x":56.33,"y":-22.09},{"time":1.1333,"x":16.21,"y":-23.93},{"time":1.2667,"x":14.63,"y":-21.59},{"time":1.3,"x":128.62,"y":-71.45},{"time":1.3667,"x":63.44},{"time":2.6667},{"time":2.7667,"x":89.2,"y":2.13},{"time":2.8333,"x":128.84,"y":-9.59},{"time":3,"x":135.19,"y":26.05}]},"l_hand2":{"scale":[{"x":0,"y":0}]},"r_upparm2":{"rotate":[{"angle":12.97,"curve":0.25,"c3":0.75},{"time":0.1,"angle":21.5},{"time":0.3,"angle":17.38},{"time":0.7667,"angle":28.93},{"time":0.8333,"angle":15.91},{"time":0.9,"angle":22.08},{"time":0.9667,"angle":47.05},{"time":1.0667,"angle":69.38},{"time":1.6333,"angle":55.09},{"time":1.8667,"angle":60.16},{"time":2.6667,"angle":34.95},{"time":3,"angle":52.06}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1,"x":-12.47,"y":-65.76},{"time":0.1667,"x":38.83,"y":-30.73},{"time":0.3,"x":38.26,"y":-28.45},{"time":0.7667,"x":59.51,"y":18.64},{"time":0.8333,"x":47.97,"y":10.09},{"time":0.9,"x":27.01,"y":20.96},{"time":0.9667,"x":48.86,"y":1.53},{"time":1.0667,"x":42.04,"y":-55.44},{"time":1.6333,"x":71.88,"y":-0.06},{"time":1.8667,"x":67.73,"y":-10.59},{"time":2.6667,"x":30.39,"y":-75.33}]},"lock":{"rotate":[{},{"time":0.7667,"angle":33.15},{"time":0.8333,"angle":12.05},{"time":0.9667,"angle":5.02},{"time":1.3333,"angle":-6.27},{"time":1.4,"angle":22.68},{"time":1.5,"angle":17.17},{"time":1.6333,"angle":-3.53},{"time":1.8667,"angle":6.47},{"time":1.9333,"angle":10.48},{"time":2.0333,"angle":15.89},{"time":2.6667,"angle":41.03},{"time":2.7667,"angle":23.73},{"time":2.8333,"angle":33.96},{"time":3,"angle":15.35}],"translate":[{"time":0.7667},{"time":0.8333,"x":28.21,"y":-55.96},{"time":0.9667,"x":66.08,"y":79.4},{"time":1.3333,"x":110.87,"y":113.37},{"time":1.4,"x":69.74,"y":83.77},{"time":1.5,"x":39.7,"y":39.04},{"time":1.8667,"x":13.03,"y":-41.58},{"time":1.9333,"x":12.89,"y":-68.2},{"time":2.0333,"x":-21.33,"y":-63.12},{"time":2.6667,"x":-22.19,"y":3.95},{"time":2.7667,"x":-74.3,"y":5.84},{"time":2.8333,"x":-153.69,"y":-31.86},{"time":3,"x":-131.13,"y":2.54}],"scale":[{"x":0,"y":0},{"time":0.7667,"x":2,"y":2},{"time":0.8333,"x":0.309,"y":0.309},{"time":0.9667,"x":0.508,"y":0.508},{"time":1.3333,"x":0.626,"y":0.572},{"time":1.4,"x":0.681,"y":0.917}]},"lock2":{"rotate":[{},{"time":1.3333,"angle":26.76,"curve":"stepped"},{"time":1.4,"angle":26.76},{"time":1.5,"angle":17.08},{"time":1.6333,"angle":-3.95},{"time":1.8667,"angle":-7.56},{"time":1.9333,"angle":2.43},{"time":2.0333,"angle":2.8},{"time":2.6667,"angle":40.34},{"time":2.7667,"angle":16.77},{"time":2.8333,"angle":11.01},{"time":3,"angle":-5.08}],"translate":[{},{"time":1.3333,"x":198.13,"y":193.19,"curve":"stepped"},{"time":1.4,"x":198.13,"y":193.19},{"time":1.5,"x":162.47,"y":108.28},{"time":1.6333,"x":207.63,"y":64.45},{"time":1.8667,"x":184.34,"y":3.51},{"time":1.9333,"x":169.05,"y":-31.92},{"time":2.0333,"x":112.27,"y":-31.4},{"time":2.6667,"x":145.34,"y":117.01},{"time":2.7667,"x":221.78,"y":144.78},{"time":2.8333,"x":167.65,"y":123},{"time":3,"x":197.32,"y":97.4}],"scale":[{"x":0,"y":0},{"time":1.3333,"x":-2,"y":2},{"time":1.4,"x":-0.671,"y":0.859},{"time":1.5,"x":-0.751,"y":0.917,"curve":"stepped"},{"time":2.7333,"x":-0.751,"y":0.917},{"time":2.7667,"x":-0.836,"y":0.917}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":-17.28},{"time":0.3,"angle":-24.69},{"time":0.7667,"angle":-24.78},{"time":0.8333,"angle":-24.51},{"time":0.9667},{"time":1.3333,"angle":-43.74},{"time":1.4,"angle":-65.84},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1},{"time":0.1667,"x":33.54,"y":-5.99},{"time":0.3,"x":40.27,"y":49.7},{"time":0.7667,"x":42.99,"y":4.1},{"time":0.8333}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":68.98},{"time":0.1,"angle":69.57},{"time":0.1667,"angle":80.32},{"time":0.3,"angle":60.85},{"time":0.7667,"angle":56.27},{"time":0.8333,"angle":42.87},{"time":0.9667,"angle":27.14},{"time":1.3333,"angle":49.52},{"time":1.4,"angle":39.01},{"time":1.6333,"angle":32.12},{"time":1.8667,"angle":4.56},{"time":1.9333,"angle":4.29},{"time":2.0333,"angle":23.86},{"time":2.6667,"angle":50.59},{"time":2.7667,"angle":26.41},{"time":2.8333,"angle":35.92},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":15.69,"y":-42.72},{"time":0.1,"x":29.26,"y":-74.82},{"time":0.1667,"x":-64.57,"y":-135.91},{"time":0.3,"x":-27.47,"y":-144.54},{"time":0.7667,"x":-7.52,"y":-129.4}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":5.46},{"time":0.3,"angle":-10.65},{"time":0.7667,"angle":-8.36},{"time":0.8333,"curve":"stepped"},{"time":1.3333},{"time":1.4,"angle":-22.1},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1667},{"time":0.3,"x":69.31,"y":13.25},{"time":0.7667,"x":33.77,"y":-24.7},{"time":0.8333}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.1667,"angle":-14.73},{"time":0.3,"angle":-22.7},{"time":0.7667,"angle":-20.59},{"time":0.8333,"angle":-34.81},{"time":0.9667},{"time":1.3333,"angle":-40.05},{"time":1.4,"angle":-62.15},{"time":1.6333,"angle":2.05},{"time":1.8667,"angle":17.92},{"time":1.9333,"angle":19.06},{"time":2.0333,"angle":-61.01},{"time":2.6667},{"time":2.7667,"angle":-11.77},{"time":2.8333,"angle":-57.15},{"time":3,"angle":-47.95}],"translate":[{"time":0.1},{"time":0.1667,"x":121.04,"y":-31.75},{"time":0.3,"x":86.34,"y":46.01},{"time":0.7667,"x":96.48,"y":35.54},{"time":0.8333,"x":59.11,"y":-15.72},{"time":0.9667}]},"l_finger_a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":-8.74},{"time":0.8333,"angle":13.91},{"time":0.9667,"angle":10.78},{"time":1.3333}]},"l_finger_a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":-0.62,"curve":"stepped"},{"time":0.8333,"angle":-0.62},{"time":0.9667,"angle":18.9},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":35.95,"y":34.16},{"time":0.7667,"x":-65.9,"y":-20.58},{"time":0.8333,"x":-18.98,"y":-25.1},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":-46.37,"curve":"stepped"},{"time":0.8333,"angle":-46.37},{"time":0.9667,"angle":-26.85},{"time":1.3333}]},"l_finger_b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":70.98,"curve":"stepped"},{"time":0.8333,"angle":70.98},{"time":0.9667,"angle":90.5},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":2.03,"y":49.54},{"time":0.7667,"x":37.04,"y":7.14},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":50.22,"curve":"stepped"},{"time":0.8333,"angle":50.22},{"time":0.9667,"angle":69.74},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":-38.06,"y":31.78},{"time":0.7667,"x":37.53,"y":3.76},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":11.31,"curve":"stepped"},{"time":0.8333,"angle":11.31},{"time":0.9667,"angle":30.84},{"time":1.3333}]},"l_finger_d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.1},{"time":0.3,"angle":-13.31},{"time":0.7667,"angle":37.45,"curve":"stepped"},{"time":0.8333,"angle":37.45},{"time":0.9667,"angle":56.97},{"time":1.3333}]},"l_finger_d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":54.61},{"time":0.1,"angle":16.16},{"time":0.3,"angle":-63.46},{"time":0.7667,"angle":62.3,"curve":"stepped"},{"time":0.8333,"angle":62.3},{"time":0.9667,"angle":81.83},{"time":1.3333,"curve":"stepped"},{"time":1.4},{"time":1.6333,"angle":-22.15},{"time":1.8667},{"time":1.9333,"angle":46.49},{"time":2.0333},{"time":2.6667,"angle":-61.6},{"time":2.7667,"angle":10.65},{"time":2.8333,"angle":-51.83},{"time":3}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.3,"x":-49.55,"y":-1.88},{"time":0.7667,"x":35.07,"y":13.9},{"time":3}],"scale":[{"x":0.925,"y":0.925}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-24.25},{"time":0.1,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":18.79},{"time":0.9667},{"time":1.3333,"angle":-7.62},{"time":1.4,"curve":"stepped"},{"time":2.8333},{"time":3,"angle":-20.01}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":15},{"time":0.1,"angle":-9.71},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":15.73},{"time":0.9667,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":13.37},{"time":1.9333,"angle":27.39},{"time":2.0333,"angle":-1.64},{"time":2.6667,"angle":-11.25},{"time":2.7667,"angle":-25.72},{"time":2.8333,"angle":3.52},{"time":3}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-40.42},{"time":0.1,"angle":-80.2},{"time":0.3,"curve":"stepped"},{"time":1.8667},{"time":1.9333,"angle":28.45},{"time":2.0333,"angle":15.88},{"time":2.6667,"angle":-37.9},{"time":2.7667}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"curve":"stepped"},{"time":0.3},{"time":0.7667,"angle":-64.49},{"time":0.8333,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":-18.41},{"time":1.9333,"angle":-3.01},{"time":2.0333,"angle":-10.67},{"time":2.6667,"angle":-56.72},{"time":2.7667,"angle":-57.84},{"time":2.8333}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-23.31},{"time":0.1,"angle":24.59},{"time":0.3},{"time":0.7667,"angle":13.06},{"time":0.8333,"angle":-1.7},{"time":0.9667},{"time":1.3333,"angle":33.27},{"time":1.4,"angle":6.41},{"time":1.6333},{"time":1.8667,"angle":-30.46},{"time":1.9333,"angle":-27.92},{"time":2.0333,"angle":15.55},{"time":2.6667,"angle":40.74},{"time":2.7667},{"time":2.8333,"angle":1.33},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-13.9,"y":32.14},{"time":0.3,"x":15.52,"y":-53.53},{"time":0.7667,"x":96.22,"y":-50.78},{"time":0.8333,"x":1.97,"y":-11.66},{"time":0.9667,"x":-19.97,"y":-17.52},{"time":1.3333,"x":-94.05,"y":113.18},{"time":1.4,"x":-103.02,"y":53.64},{"time":1.6333,"x":-4.96,"y":-0.23},{"time":1.9333,"x":-3.87,"y":-0.18},{"time":2.0333,"x":-67.59,"y":20.05},{"time":2.6667,"x":27.34,"y":-49.83},{"time":3}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333},{"time":0.1,"angle":35.69},{"time":0.3},{"time":0.7667,"angle":54.04},{"time":0.8333,"angle":-32.08},{"time":0.9667},{"time":1.3333,"angle":12.43},{"time":1.4,"angle":48.89},{"time":1.6333},{"time":1.8667,"angle":-5.58},{"time":1.9333,"angle":-34.21},{"time":2.0333,"angle":-9.74},{"time":2.6667,"angle":5.99},{"time":2.7667,"angle":44.18},{"time":2.8333,"angle":13.05},{"time":3}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-13.21},{"time":0.1,"angle":23.14},{"time":0.3,"angle":29.25},{"time":0.5,"angle":2.77},{"time":0.7667,"angle":-24.22},{"time":0.8333,"angle":-16.63},{"time":0.9667,"angle":21.53},{"time":1.3333,"angle":-7.86},{"time":1.4,"angle":39.09},{"time":1.6333,"angle":-12.88},{"time":1.8667,"angle":-1.91},{"time":1.9333,"angle":29.51},{"time":2.0333},{"time":2.6667,"angle":22.49},{"time":2.7667,"angle":26.71},{"time":2.8333,"angle":13.79},{"time":3,"angle":28.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":0.806,"curve":"stepped"},{"time":2.6667,"x":0.806},{"time":2.7667,"x":0.717}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0333,"x":10.51,"y":15.78},{"time":0.3,"x":-12.05,"y":-4.86},{"time":0.7667,"x":12.01,"y":5.63},{"time":0.8333,"x":25.98,"y":17.69},{"time":0.9667,"x":0.44,"y":17.69},{"time":1.3333,"x":4.31,"y":17.69},{"time":1.4,"x":30.99,"y":17.69},{"time":1.6333,"x":35.32,"y":31.2},{"time":1.8667,"x":23.94,"y":31.2,"curve":"stepped"},{"time":2.6667,"x":23.94,"y":31.2},{"time":2.7667,"x":23.94,"y":38.29},{"time":2.8333,"x":23.94,"y":23.92}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":26.87},{"time":0.1,"angle":-15.74},{"time":0.3,"angle":-27.27},{"time":0.5,"angle":25.21},{"time":0.7667,"angle":4.19},{"time":0.8333,"angle":24.92},{"time":0.9667,"angle":-26.3},{"time":1.1333,"angle":15.5},{"time":1.3333,"angle":5.56},{"time":1.4,"angle":-25.66},{"time":1.5,"angle":22.59},{"time":1.6333,"angle":19.98},{"time":1.8667,"angle":-10.7},{"time":1.9333,"angle":-6.66},{"time":2.0333,"angle":22.3},{"time":2.6667,"angle":-10.86},{"time":2.7667,"angle":24.66},{"time":2.8333,"angle":49.32},{"time":3,"angle":2.02}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":22.62},{"time":0.1,"angle":17.78},{"time":0.3,"angle":-27.7},{"time":0.7667,"angle":36.62},{"time":0.8333,"angle":35.15},{"time":0.9,"angle":-18.39},{"time":0.9667,"angle":-16.39},{"time":1.3333,"angle":13.16},{"time":1.4,"angle":-30.81},{"time":1.6333,"angle":30.96},{"time":1.8667,"angle":-9.54},{"time":1.9333,"angle":-31.08},{"time":2.0333,"angle":-16.04},{"time":2.2667,"angle":18.83},{"time":2.6667,"angle":-25.39},{"time":2.7667,"angle":44.23},{"time":2.8333,"angle":11.22},{"time":3,"angle":19.6}]},"hair_t":{"rotate":[{"time":0.1},{"time":0.3,"angle":-19.21},{"time":0.7667,"angle":-5.78},{"time":0.8333},{"time":0.9667,"angle":-9.38},{"time":1.3333,"curve":"stepped"},{"time":1.6333},{"time":1.8667,"angle":10.8},{"time":1.9333},{"time":2.0333,"angle":-9.13},{"time":2.6667},{"time":2.7667,"angle":-13.97},{"time":2.8333}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":7.3},{"time":0.1,"angle":3.64},{"time":0.3,"angle":1.74},{"time":0.7667,"angle":-1.69},{"time":0.8333},{"time":0.9667,"angle":-9.58},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":-5.18},{"time":1.8667,"angle":-4.5},{"time":1.9333},{"time":2.0333,"angle":2.63},{"time":2.6667},{"time":2.7667,"angle":-8.41},{"time":2.8333,"angle":-9.13},{"time":3,"angle":-1.65}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-6.72},{"time":0.1,"angle":14.11},{"time":0.3,"angle":14.45},{"time":0.7667,"angle":25.58},{"time":0.8333,"angle":30.7},{"time":0.9667,"angle":25.88},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":20.83},{"time":1.8667,"angle":15.95},{"time":1.9333,"angle":19.25},{"time":2.0333,"angle":23.38},{"time":2.6667,"angle":22.61},{"time":2.7667,"angle":-34.4},{"time":2.8333,"angle":24.51},{"time":3,"angle":23.31}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":-21.29},{"time":0.1,"angle":-19.11},{"time":0.3,"angle":14.45},{"time":0.7667,"angle":19.91},{"time":0.8333,"angle":30.7},{"time":0.9667,"angle":28.91},{"time":1.3333,"angle":-11.47},{"time":1.4,"angle":-29.11},{"time":1.6333,"angle":-39.75},{"time":1.8667,"angle":24.75},{"time":1.9333,"angle":24.59},{"time":2.0333,"angle":23.38},{"time":2.6667,"angle":22.61},{"time":2.7667,"angle":-34.4},{"time":2.8333,"angle":-23.73},{"time":3,"angle":19.69}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":93.37},{"time":0.1,"angle":14.11},{"time":0.3,"curve":"stepped"},{"time":0.7667},{"time":0.8333,"angle":49.55},{"time":0.9667}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":-2.26,"y":14.51}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":1.49,"y":10.12}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-30.65},{"time":0.1},{"time":0.3,"angle":42.7},{"time":0.7667,"angle":-3.93},{"time":0.8333,"angle":-22.19},{"time":0.9667,"angle":42.69},{"time":1.3333,"angle":-0.5},{"time":1.4,"angle":40.28},{"time":1.6333,"angle":-47.96},{"time":1.8667,"angle":47.02},{"time":1.9333,"angle":41.22},{"time":2.0333,"angle":21.47},{"time":2.6667,"angle":-45.63},{"time":2.7667,"angle":-9.13},{"time":2.8333,"angle":42.04},{"time":3,"angle":57.46}],"translate":[{"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-9.24},{"time":0.1,"angle":42.73},{"time":0.3,"angle":25.78},{"time":0.5,"angle":80.97},{"time":0.7667,"angle":34.03},{"time":0.8333,"angle":-16.62},{"time":0.9667,"angle":-10.38},{"time":1.1,"angle":49.94},{"time":1.3333,"angle":39.12},{"time":1.4,"angle":-36.84},{"time":1.6333,"angle":90.97},{"time":1.8667,"angle":-36.46},{"time":1.9333,"angle":52.21},{"time":2.0333,"angle":79.24},{"time":2.2,"angle":30.05},{"time":2.6667,"angle":-28.63},{"time":2.7667,"angle":-4.12},{"time":2.8333,"angle":30.39},{"time":3,"angle":37.87}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"angle":19.46},{"time":0.1},{"time":0.3,"angle":-23.17},{"time":0.7667},{"time":0.8333,"angle":5.71},{"time":0.9667,"angle":16.32},{"time":1.3333},{"time":1.4,"angle":-21.2},{"time":1.6333},{"time":1.8667,"angle":33.35},{"time":1.9333,"angle":7.55},{"time":2.0333},{"time":2.6667,"angle":-21.03},{"time":2.7667,"angle":-16.96},{"time":2.8333,"angle":18.8},{"time":3,"angle":33.05}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-41.2},{"time":0.1,"angle":-50.03},{"time":0.3,"angle":5.43},{"time":0.7667,"angle":25.23},{"time":0.8333,"angle":-40.92},{"time":0.9667,"angle":-25.65},{"time":1.3333,"angle":29.67},{"time":1.4,"angle":22.01},{"time":1.6333,"angle":-37.44},{"time":1.8667,"angle":-14.65},{"time":1.9333,"angle":33.09},{"time":2.0333},{"time":2.6667,"angle":-24.86},{"time":2.7667,"angle":-37.16},{"time":2.8333,"angle":-10.32},{"time":3}]},"r_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.46},{"time":0.1},{"time":0.3,"angle":-23.17},{"time":0.7667},{"time":0.8333,"angle":5.71},{"time":0.9667,"angle":16.32},{"time":1.3333},{"time":1.4,"angle":-21.2},{"time":1.6333},{"time":1.8667,"angle":33.35},{"time":1.9333,"angle":7.55},{"time":2.0333},{"time":2.6667,"angle":-21.03},{"time":2.7667,"angle":-16.96},{"time":2.8333,"angle":18.8},{"time":3,"angle":33.05}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-41.2},{"time":0.1,"angle":-50.03},{"time":0.3,"angle":5.43},{"time":0.7667,"angle":25.23},{"time":0.8333,"angle":-40.92},{"time":0.9667,"angle":-25.65},{"time":1.3333,"angle":29.67},{"time":1.4,"angle":22.01},{"time":1.6333,"angle":-37.44},{"time":1.8667,"angle":-14.65},{"time":1.9333,"angle":33.09},{"time":2.0333},{"time":2.6667,"angle":-24.86},{"time":2.7667,"angle":-37.16},{"time":2.8333,"angle":-10.32},{"time":3}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-12.54},{"time":0.1,"angle":14.62},{"time":0.3,"angle":-35.54},{"time":0.7667,"angle":-32.14},{"time":0.8333,"angle":-7.04},{"time":0.9667,"angle":-11.61},{"time":1.3333},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-20.77},{"time":1.8667}],"scale":[{"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-21.33},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":0.78},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-5.05},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":3.48},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-25.81},{"time":3,"angle":6.58}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-6.15},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":-20.92},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-23.18},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-35.63},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-32.65},{"time":3,"angle":6.58}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-12.54},{"time":0.1,"angle":7},{"time":0.3,"angle":-35.54},{"time":0.7667,"angle":-21.7},{"time":0.8333,"angle":-7.04},{"time":0.9667,"angle":-11.61},{"time":1.3333},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-27.21},{"time":1.8667}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-21.33},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":18.51},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-5.05},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":3.48},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-25.81},{"time":3,"angle":6.58}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":19.13},{"time":0.1,"angle":-6.15},{"time":0.3,"angle":-21.7},{"time":0.7667,"angle":-20.92},{"time":0.8333,"angle":22.18},{"time":0.9667,"angle":-22.27},{"time":1.3333,"angle":-23.18},{"time":1.4,"angle":-33.24},{"time":1.6333,"angle":-35.63},{"time":1.8667,"angle":12.89},{"time":1.9333},{"time":2.0333,"angle":-17.69},{"time":2.6667,"angle":23.61},{"time":2.7667,"angle":43.08},{"time":2.8333,"angle":-32.65},{"time":3,"angle":6.58}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.0333}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.0333}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333}]},"r_finger_b2":{"rotate":[{"angle":-8.92}]},"r_finger_c2":{"rotate":[{"angle":-9.49}]},"r_finger_d2":{"rotate":[{"angle":7.12}]},"l_upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":3,"angle":-22.92}]},"l_armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":3,"angle":-6.9}]},"r_arm":{"rotate":[{"angle":-8.2,"curve":0.25,"c3":0.75},{"time":3,"angle":-84.98}]},"head2":{"rotate":[{"time":1.9333},{"time":2.0333,"angle":-15.66},{"time":2.6667},{"time":2.8333,"angle":0.67},{"time":3}],"scale":[{"time":1.9333},{"time":2.0333,"x":0.704,"curve":"stepped"},{"time":2.6667,"x":0.704},{"time":2.8333,"x":0.962}]},"r_ear_s":{"rotate":[{"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0333,"angle":25.5,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":30,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-2.46,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3,"angle":12,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.5,"angle":28.55,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.7667,"angle":11.33,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.8333,"angle":45.65,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.9667,"angle":8.97,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.67},{"time":1.1333,"angle":-13.54,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.3333,"angle":13.28,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-5.15,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":1.6333,"angle":-35.62,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.8667,"angle":25.03,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.9333,"angle":30.1,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":2.0333,"angle":-22.46,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":2.2,"angle":-24.55,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.69},{"time":2.3667,"angle":19.09,"curve":0.348,"c2":0.44,"c3":0.682,"c4":0.78},{"time":2.6667,"angle":8.97,"curve":0.338,"c2":0.39,"c3":0.671,"c4":0.72},{"time":2.7667,"angle":-66.43,"curve":0.337,"c2":0.39,"c3":0.67,"c4":0.72},{"time":2.8333,"angle":23.33,"curve":0.337,"c2":0.41,"c3":0.67,"c4":0.75},{"time":2.9,"angle":-15.04,"curve":0.339,"c2":0.66,"c3":0.672},{"time":3,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"l_leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":12.22}]},"l_leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":-42.07}]},"l_leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":-112.01}]},"r_leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":2.27}]},"r_finger_a2":{"rotate":[{"angle":14.41}]},"r_leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":78.83}]},"r_leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":3,"angle":37.17}]},"headmouth":{"rotate":[{"time":1.9333},{"time":2.0333,"angle":-15.66},{"time":2.6667},{"time":2.8333,"angle":0.67},{"time":3}],"scale":[{"time":1.9333},{"time":2.0333,"x":0.704,"curve":"stepped"},{"time":2.6667,"x":0.704},{"time":2.8333,"x":0.962}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{},{"time":0.0333,"x":-52.19},{"time":0.1},{"time":0.3,"x":115.98},{"time":0.7667,"x":266.75},{"time":0.8333},{"time":0.9667,"x":-237.76},{"time":1.3333,"x":-231.96},{"time":1.4,"curve":"stepped"},{"time":2.6667},{"time":2.7667,"x":-92.78}],"scale":[{"time":0.1},{"time":0.3,"y":1.232},{"time":0.7667,"y":1.58},{"time":0.8333},{"time":0.9667,"y":0.536},{"time":1.3333,"y":0.652},{"time":1.4}]}},"ik":{"rhand":[{"time":0.9,"softness":50,"curve":"stepped"},{"time":0.9333,"softness":50,"bendPositive":false}]},"deform":{"default":{"body":{"body":[{"curve":0.302,"c3":0.638,"c4":0.36},{"time":0.0333,"vertices":[-4.1153,0.91935,-0.5435,1.2124,-1.28705,0.32984,-0.05736,0.12703,-0.1351,0.03424,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.74619,6.97106,-4.85626,5.05685,0.88869,4.14338,-2.60641,3.35652,1.02708,-0.3251,0.89402,0.60109,2.63937,-0.78508,2.25804,1.576,3.52824,-0.95351,2.94341,2.16655,4.84342,-0.90697,3.7261,3.22445,8.82589,0.14881,5.38043,6.99781,11.44717,4.0523,3.95901,11.47977,10.01059,7.30026,0.52313,12.37865,6.47924,6.7613,-1.25457,9.28015,-4.45389,7.45256,-3.69558,4.99202,-3.78844,3.58235,-4.69701,2.60094,-5.46063,1.77614,2.19235,11.80027,-7.64506,9.28321,0.43578,17.35511,-0.68811,6.51941,-5.27305,3.7746,2.73917,15.66486,-10.24678,12.19822,1.55328,33.7552,-24.66179,23.00762,3.01895,6.80544,-3.3014,6.74132,-6.13159,7.02413,4.14872,37.86676,-26.31855,27.5432,3.41262,27.00195,-18.48252,19.99765,-0.34166,-2.25426,-1.80031,4.26406,1.38734,13.60001,-9.48202,9.84584,2.73526,28.93797,-20.34003,20.75162,7.7228,2.09087,3.17401,7.34435,-19.73705,20.81664,-38.53515,39.35129,-2.63548,-0.10939,0.22252,7.39798,-5.36327,5.06402,2.56552,19.94356,-13.62535,14.80327,0.69241,6.74577,-4.71307,4.87467,-0.42123,-1.56642,1.05072,-1.21863,5.16376,4.07882,0.02488,6.58028,2.27185,21.22257,-14.78314,15.39545,-1.49342,1.82014,-2.3542,-0.03492,1.92342,18.63513,-13.01709,13.47079,1.94992,15.99203,-10.99022,11.78841],"curve":0.298,"c2":0.2,"c3":0.64,"c4":0.56},{"time":0.1,"vertices":[-22.26223,4.97336,-2.94012,6.55864,-6.96244,1.78431,-0.31027,0.68719,-0.73086,0.18522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.33311,-2.23315,0.91981,-3.78338,5.6047,-2.15946,2.62758,-0.99887,5.55613,-1.75866,4.83634,3.25168,14.278,-4.24701,12.21517,8.52559,19.08644,-5.15816,15.92276,11.72021,26.20108,-4.90639,20.15682,17.44309,47.74479,0.80502,29.10615,37.85557,61.92494,21.92143,21.4168,62.10127,54.15356,39.49168,2.82995,66.96391,35.05027,36.57613,-6.78673,50.20215,-24.09389,40.31559,-19.99172,27.00497,-20.49403,19.37918,-25.40909,14.07012,-29.53996,9.60828,14.01798,-2.63816,3.8906,-1.60183,6.87228,-45.23476,-1.23131,-41.52568,23.74606,-39.44804,17.76514,-6.06559,6.37881,-4.804,15.98149,-50.7523,25.4265,-57.45984,17.72219,-6.0619,11.32707,3.04255,-8.63794,9.90101,29.47439,-11.64159,4.98232,-19.77231,23.4934,-8.89044,5.49456,-12.62604,-1.84825,-12.19472,-9.739,23.06697,10.36659,-14.5649,8.698,-15.44688,20.59812,-22.13459,11.58973,-27.03798,41.77746,11.31083,17.1702,39.73018,4.45708,-14.78033,17.59593,-46.03601,-14.25695,-0.59174,3.98647,-45.70159,29.33579,-39.43365,17.5745,-5.98054,3.79861,-8.69057,5.04403,-3.50579,1.73052,-4.81115,-1.42439,-34.81126,23.61242,-27.12441,27.93404,22.06491,0.1346,35.59686,16.23739,-6.79893,2.80269,-11.5181,-8.07885,9.84628,-12.73536,-0.18888,13.952,-8.48876,3.97924,-12.33589,13.53505,-5.56713,3.22267,-8.01195],"curve":0.351,"c2":0.4,"c3":0.757},{"time":0.3,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-0.20004,-4.47328,3.37485,-2.94272,1.32175,-10.04788,8.6839,-5.22366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.59958,-3.50456,3.73788,-0.93118,9.31931,-4.97392,9.69562,4.1936,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-77.95499,139.5144,-68.95795,95.20963,-67.75372,66.04831,-87.16837,48.07956,-105.95621,34.46371,21.12277,65.79138,-38.31924,57.50052,-34.0228,-120.66727,-34.52148,-75.35884,37.45737,-73.94339,23.65421,13.29997,4.32504,26.78931,-42.72495,-99.12656,50.94351,-95.16449,43.1265,29.30727,3.92996,51.99387,-60.84778,75.42023,13.15533,15.12206,-3.63907,19.71024,18.56497,51.51018,-28.73895,46.60474,-6.62946,-43.74097,-77.1142,118.49139,3.00098,-54.91417,44.83057,-31.854,-2.21936,-39.77296,29.73355,-26.50864,147.60321,110.82056,5.22476,184.50085,-32.34265,44.54117,34.14267,-30.10867,-53.02216,3.44684,-15.76364,-86.75548,58.05627,-66.36523,13.24509,40.70563,-23.59857,35.71393,1.48032,-15.22014,12.82947,-8.32074,-14.17093,-129.51518,92.50186,-91.75037,99.53561,145.1262,-51.55228,168.25897,6.18896,-2.98102,6.18579,2.98547,-26.54926,16.85483,-29.72351,-10.27573,3.91257,-18.37961,16.81393,-8.38663,8.65265,-4.23897,8.70456,4.13007]},{"time":0.7667,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,2.75589,-0.42628,1.58078,-2.28954,5.60254,-4.18729,6.08701,-4.27817,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.19995,-0.43807,0.46724,-0.1164,8.4584,-3.08743,7.6835,4.69482,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-80.48647,140.43622,-69.77977,95.50932,-69.4754,66.67523,-88.35617,48.5122,-105.95621,34.46371,67.6171,-8.89087,58.74532,-0.2251,14.35814,-132.19081,34.2604,-116.84779,101.91853,-100.09985,49.79036,-8.59889,45.48568,5.89893,48.48497,-130.59308,132.98515,-117.84822,94.47238,-16.07789,88.03683,16.13512,-2.70163,25.97961,62.91244,-18.09288,63.4963,-20.86634,75.38478,-24.30334,75.00404,-20.3076,2.51481,-41.32964,-12.05236,66.65906,22.81944,-46.42033,45.52597,-39.19585,29.14079,-53.85693,58.51183,-42.75884,167.16922,38.85638,78.7717,138.65527,66.34669,-26.23772,107.88594,-68.4304,-38.91688,-6.22905,71.97962,-155.1956,155.81104,-129.06247,85.74921,-11.28976,82.18533,-13.07769,4.40195,-7.67998,7.91182,-6.10981,19.336,-116.30773,92.66841,-82.64078,117.17766,71.6339,18.1808,119.03931,9.79512,-8.19908,11.40335,-7.36845,-17.32522,31.50395,-37.30602,-5.86323,11.45646,-16.85958,18.40235,-13.79494,8.98471,-5.55903,9.45208,-0.83554]},{"time":0.8333,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-1.11292,2.46487,-2.62152,0.66437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.33542,-2.81793,7.39606,4.76642,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-86.42184,144.60709,-71.70786,96.86353,-73.50958,69.51074,-91.13928,50.4678,-105.95621,34.46371,18.44489,3.86809,8.46115,16.83865,-3.9183,-113.68477,-1.60358,-84.10944,54.73862,-66.66803,20.23096,-3.54591,15.37378,13.61917,-10.85379,-103.38661,64.05984,-85.91092,43.03165,-13.14539,37.08572,25.47952,-33.96228,47.75824,2.03949,1.65744,-0.02682,2.62775,10.05231,-0.81355,6.89728,7.35754,3.82114,-40.98517,-34.93259,82.7384,-0.50278,-26.98291,18.32074,-20.40405,2.55304,-37.71628,27.71506,-25.87012,149.85062,40.57056,61.5874,142.5073,0.24445,9.84131,34.5827,-37.72894,-61.27515,10.12372,1.24237,-105.39186,73.16168,-77.69614,8.5022,1.38368,4.2128,7.51306,0.39243,-4.21655,3.13745,-2.84338,9.74438,-104.49744,77.75705,-70.48712,100.19598,79.14415,0.48279,127.68155,0,0,0,0,-27.42624,39.75204,-48.89328,2.37924,0.71335,-7.65024,5.69312,-5.15967,4.44827,-1.50385,3.94696,2.54361]},{"time":0.9667,"curve":"stepped"},{"time":1.9333,"curve":0.25,"c3":0.75},{"time":2.6667,"vertices":[-79.8519,17.83884,-10.54587,23.52505,-24.97342,6.40009,-1.11292,2.46487,-2.62152,0.66437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.33542,-2.81793,7.39606,4.76642,19.92917,-6.30809,17.34735,11.66339,51.21344,-15.23352,43.8143,30.58026,68.46072,-18.50168,57.11301,42.03894,93.98004,-17.59862,72.30005,62.56622,171.2547,2.88751,104.40018,135.7833,222.11719,78.6295,76.81943,222.74963,194.24219,141.6518,10.1507,240.19131,125.72101,131.19409,-24.34317,180.06897,-86.42184,144.60709,-71.70786,96.86353,-73.50958,69.51074,-91.13928,50.4678,-105.95621,34.46371,18.44489,3.86809,8.46115,16.83865,-13.66269,-9.18733,-11.34796,20.388,-23.01843,3.81909,20.23096,-3.54591,15.37378,13.61917,-20.59818,1.11082,-13.6972,-15.4238,43.03165,-13.14539,37.08572,25.47952,-33.96228,47.75824,2.03949,1.65744,-0.02682,2.62775,10.05231,-0.81355,6.89728,7.35754,0,0,-34.93259,82.7384,-2.89908,-1.27499,-0.80798,-3.06244,-0.72122,-2.60077,1.58545,-2.18445,149.85062,40.57056,61.5874,142.5073,-11.21695,20.23029,3.77939,-9.80554,-80.78256,27.80896,-8.50201,-0.89442,-4.59537,-7.20901,8.5022,1.38368,4.2128,7.51306,0,0,0,0,0,0,0,0,100.19598,79.14415,0.48279,127.68155,0,0,0,0,-28.11429,47.13446,-54.38657,7.35934,0,0,0,0,4.44827,-1.50385,3.94696,2.54361]},{"time":2.7667,"offset":90,"vertices":[34.13654,-127.86366,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13.38882,-50.14972,0,0,8.39827,-31.45702,1.12668,-32.53924,11.47104,-42.96606,1.53851,-44.44423,0,0,0,0,0.67459,-19.49482,1.814,-52.39503,1.14877,-33.18303,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,1.37723,-5.15866,0.18454,-5.33613,34.13654,-127.86366,4.58051,-132.26277,0,0,0,0,0,0,0,0,2.41159,-9.0331,0.32309,-9.34386,2.49876,-9.35932,0.33484,-9.68131]}]}}},"drawOrder":[{"offsets":[{"slot":"r_beard2","offset":3}]}]},"dizzy":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00002"},{"time":0.1,"name":"eyefire/eyefire_00003"},{"time":0.1333,"name":"eyefire/eyefire_00004"},{"time":0.1667,"name":"eyefire/eyefire_00005"},{"time":0.2,"name":"eyefire/eyefire_00006"},{"time":0.2333,"name":"eyefire/eyefire_00007"},{"time":0.2667,"name":"eyefire/eyefire_00008"},{"time":0.3,"name":"eyefire/eyefire_00009"},{"time":0.3333,"name":"eyefire/eyefire_00010"},{"time":0.3667,"name":"eyefire/eyefire_00011"},{"time":0.4,"name":"eyefire/eyefire_00012"},{"time":0.4333,"name":"eyefire/eyefire_00013"},{"time":0.4667,"name":"eyefire/eyefire_00014"},{"time":0.5,"name":"eyefire/eyefire_00015"},{"time":0.5333,"name":"eyefire/eyefire_00016"},{"time":0.5667,"name":"eyefire/eyefire_00017"},{"time":0.6,"name":"eyefire/eyefire_00018"},{"time":0.6333,"name":"eyefire/eyefire_00019"},{"time":0.6667,"name":"eyefire/eyefire_00020"},{"time":0.7,"name":"eyefire/eyefire_00021"},{"time":0.7333,"name":"eyefire/eyefire_00022"},{"time":0.7667,"name":"eyefire/eyefire_00023"},{"time":0.8,"name":"eyefire/eyefire_00024"},{"time":0.8333,"name":"eyefire/eyefire_00025"},{"time":0.8667,"name":"eyefire/eyefire_00026"},{"time":0.9,"name":"eyefire/eyefire_00027"},{"time":0.9333,"name":"eyefire/eyefire_00028"},{"time":0.9667,"name":"eyefire/eyefire_00029"},{"time":1,"name":"eyefire/eyefire_00030"},{"time":1.0333,"name":"eyefire/eyefire_00031"},{"time":1.0667,"name":"eyefire/eyefire_00032"},{"time":1.1,"name":"eyefire/eyefire_00033"},{"time":1.1333,"name":"eyefire/eyefire_00034"},{"time":1.1667,"name":"eyefire/eyefire_00035"},{"time":1.2,"name":"eyefire/eyefire_00036"},{"time":1.2333,"name":"eyefire/eyefire_00037"},{"time":1.2667,"name":"eyefire/eyefire_00000"},{"time":1.3,"name":"eyefire/eyefire_00001"},{"time":1.3333,"name":"eyefire/eyefire_00002"},{"time":1.3667,"name":"eyefire/eyefire_00003"},{"time":1.4,"name":"eyefire/eyefire_00004"},{"time":1.4333,"name":"eyefire/eyefire_00005"},{"time":1.4667,"name":"eyefire/eyefire_00006"},{"time":1.5,"name":"eyefire/eyefire_00007"},{"time":1.5333,"name":"eyefire/eyefire_00008"},{"time":1.5667,"name":"eyefire/eyefire_00009"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"body":{"rotate":[{"angle":0.6,"curve":0.25,"c3":0.75},{"time":0.8,"angle":17.85,"curve":0.25,"c3":0.75},{"time":1.6,"angle":0.6}],"translate":[{"x":-103.58,"y":-38.84,"curve":0.25,"c3":0.75},{"time":0.8,"x":-170.24,"y":-75.87,"curve":0.25,"c3":0.75},{"time":1.6,"x":-103.58,"y":-38.84}],"scale":[{"x":0.98,"y":0.98,"curve":0.25,"c3":0.75},{"time":0.8,"x":1.02,"y":1.02,"curve":0.25,"c3":0.75},{"time":1.6,"x":0.98,"y":0.98}]},"body2":{"rotate":[{"angle":-39.45,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-46.98,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-31.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-39.45}]},"r_upparm":{"rotate":[{"angle":33.1,"curve":0.25,"c3":0.75},{"time":0.8,"angle":15.15,"curve":0.25,"c3":0.75},{"time":1.6,"angle":33.1}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":40.04,"y":-36.24,"curve":0.25,"c3":0.75},{"time":1.6}]},"lhand":{"rotate":[{"angle":143.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":139.77,"curve":0.25,"c3":0.75},{"time":1.2,"angle":147.52,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":143.65}],"translate":[{"x":121.33,"y":183.16,"curve":0.25,"c3":0.75},{"time":0.8,"x":8.16,"y":258.79,"curve":0.25,"c3":0.75},{"time":1.6,"x":121.33,"y":183.16}],"scale":[{"y":-1}],"shear":[{"x":18.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":15.59,"curve":0.25,"c3":0.75},{"time":1.2,"x":21.46,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":18.53}]},"head":{"rotate":[{"angle":8.82,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-13.83,"curve":0.25,"c3":0.75},{"time":1.6,"angle":8.82}]},"l_upparm":{"rotate":[{"angle":50.38,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.55,"curve":0.25,"c3":0.75},{"time":1.6,"angle":50.38}],"translate":[{"x":-44.25,"y":75.09,"curve":0.25,"c3":0.75},{"time":0.8,"x":0.93,"y":104.69,"curve":0.25,"c3":0.75},{"time":1.6,"x":-44.25,"y":75.09}]},"l_upparm2":{"rotate":[{"angle":88.28}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":-7.17,"y":-14.44,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_armour":{"rotate":[{"angle":52.64}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":1.348,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_ik2":{"translate":[{"x":-2.35,"y":-18.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"x":-4.71,"y":-36.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":-2.35,"y":-18.34}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":68.21,"y":-32.84,"curve":0.25,"c3":0.75},{"time":1.6}]},"r_upparm3":{"rotate":[{"angle":-25.15,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-25.55,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-24.75,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-25.15}]},"rhand":{"rotate":[{"angle":-9.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-0.24,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-19.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-9.78}],"translate":[{"x":55.95,"y":-181.34,"curve":0.25,"c3":0.75},{"time":0.8,"x":-39.14,"y":-223.6,"curve":0.25,"c3":0.75},{"time":1.6,"x":55.95,"y":-181.34}]},"r_hand":{"translate":[{"x":4.87,"y":-2.59,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":14.89,"y":-7.36,"curve":0.25,"c3":0.75},{"time":1.2,"x":-5.15,"y":2.18,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":4.87,"y":-2.59}]},"l_hand2":{"translate":[{"x":4.87,"y":-2.59,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":14.89,"y":-7.36,"curve":0.25,"c3":0.75},{"time":1.2,"x":-5.15,"y":2.18,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":4.87,"y":-2.59}],"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"skirt_f":{"rotate":[{"angle":-1.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":6.96,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-9.65,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-1.34}],"scale":[{"x":0.829,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":0.658,"curve":0.25,"c3":0.75},{"time":1.2,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":0.829}],"shear":[{"y":7.76,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"y":15.51,"curve":0.25,"c3":0.75},{"time":1.2,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"y":7.76}]},"skirt_f2":{"rotate":[{"angle":-9.65,"curve":0.25,"c3":0.75},{"time":0.8,"angle":14.51,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.2,"angle":2.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.6,"angle":-9.65}]},"skirt_f3":{"rotate":[{"angle":2.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-9.65,"curve":0.25,"c3":0.75},{"time":1.2,"angle":14.51,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":2.43}]},"l_leg5":{"rotate":[{"angle":4.23,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":26.02,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-17.56,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.23}]},"r_leg5":{"rotate":[{"angle":4.23,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":26.02,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-17.56,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.23}]},"headmouth":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.5333,"angle":-7.39,"curve":0.25,"c3":0.75},{"time":1.6}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.5333,"x":-5.29,"y":14.89,"curve":0.25,"c3":0.75},{"time":1.6}]},"head2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":-1.24,"curve":0.25,"c3":0.75},{"time":1.6}]},"r_finger_a":{"rotate":[{"angle":2.63,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":11.35,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":2.63}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r_finger_c":{"rotate":[{"angle":-1.34,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":-5.78,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":-1.34}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r_finger_d":{"rotate":[{"angle":2.14,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":9.22,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":2.14}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r_finger_b":{"rotate":[{"angle":-2.11,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"angle":-9.1,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"angle":-2.11}],"scale":[{"x":0.956,"curve":0.381,"c2":0.59,"c3":0.73},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.0333,"x":0.812,"curve":0.243,"c3":0.657,"c4":0.63},{"time":1.6,"x":0.956}]},"r_beard":{"rotate":[{"angle":11.44,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1,"angle":-8.1,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":11.44}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":0.78,"curve":0.25,"c3":0.75},{"time":1.6}]},"r_beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.88}]},"r_beard3":{"rotate":[{"angle":-3.68,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.1,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-3.68}]},"l_bear":{"rotate":[{"angle":11.44,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1,"angle":-8.1,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":11.44}],"scale":[{"x":0.744,"curve":0.25,"c3":0.75},{"time":0.7667,"curve":0.25,"c3":0.75},{"time":1.6,"x":0.744}]},"l_bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.88}]},"l_beard3":{"rotate":[{"angle":-3.68,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":15.86,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.1,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-3.68}]},"l_finger_d":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":10.96,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_finger_c":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":-0.02,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_finger_b":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":2.72,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_finger_a":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":-38.23,"curve":0.25,"c3":0.75},{"time":1.6}]},"l_finger_d2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l_finger_c2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l_finger_b2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"l_finger_a2":{"rotate":[{"angle":-23.53,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-47.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-23.53}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.8,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":-8.22}]},"hair_t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.8,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.6}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":24.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":18.48,"curve":0.25,"c3":0.75},{"time":1.2,"angle":30.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":24.7}]},"hair_t4":{"rotate":[{"angle":21.75,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":3.93,"curve":0.25,"c3":0.75},{"time":1.4,"angle":25.78,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":21.75}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"curve":0.25,"c3":0.75},{"time":1,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.25,"c3":0.75},{"time":1.6,"x":-2.26,"y":14.51}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":1.2,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":9.54}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.2,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.6}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.6,"angle":8.76}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.2,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.2,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"x":5.7,"y":-8.17}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.8,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.6,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.2,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.2,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":40.99}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.6,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.2,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.6,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.6,"angle":-8.22}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.8,"x":-46.39,"curve":0.25,"c3":0.75},{"time":1.6}]},"r_eye_fire":{"rotate":[{"angle":29.87}]},"r_leg3":{"rotate":[{"angle":-61.17}]},"r_leg2":{"rotate":[{"angle":52}]},"r_leg":{"rotate":[{"angle":8.57}]},"l_leg3":{"rotate":[{"angle":-27.36}]},"l_leg2":{"rotate":[{"angle":19.09}]},"l_leg":{"rotate":[{"angle":15.47}]},"r_ear_ring_b":{"rotate":[{"angle":33.49},{"time":0.8},{"time":1.6,"angle":33.49}]},"l_ear2":{"rotate":[{"angle":-8.03,"curve":0.25,"c3":0.75},{"time":0.8,"angle":16.51,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-8.03}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.6}]},"l_ear":{"rotate":[{"angle":4.24,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":16.51,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.03,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.24}]},"r_ear2":{"rotate":[{"angle":-8.03,"curve":0.25,"c3":0.75},{"time":0.8,"angle":16.51,"curve":0.25,"c3":0.75},{"time":1.6,"angle":-8.03}]},"r_ear":{"rotate":[{"angle":4.24,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"angle":16.51,"curve":0.25,"c3":0.75},{"time":1.2,"angle":-8.03,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6,"angle":4.24}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.6}]},"r_arm":{"rotate":[{"angle":-49.77}]},"r_upparm2":{"rotate":[{"angle":26.73}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.8,"offset":36,"vertices":[-1.33797,7.81604,-5.90574,5.2917,6.33594,0.28658,4.78575,4.16223,11.55866,17.07976,-1.55895,20.56429,29.86721,11.68993,16.13397,27.72059,24.26713,30.27791,0.19429,38.80218,-0.48879,10.80822,-7.1001,8.1636,3.17479,16.88126,-8.00425,15.19824,1.25424,15.80983,-8.84296,13.16528,-2.85379,19.56236,-14.39343,13.55197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-11.877,-17.74498,1.72377,-21.28316,-18.11217,-35.82497,-1.48508,-27.23736,15.76438,-22.26129,8.43136,-21.825,20.16967,-11.85804,-0.1679,-16.30974,10.00489,-12.88177,0.20083,-4.4402,2.91694,-3.35373,4.57208,-8.01418,-3.4199,-44.53263,24.99755,-37.01321,-6.20858,-22.9226,9.38237,-21.81659,-1.48507,-27.23736,0,0,-2.4751,-45.39566,26.27411,-37.10221,-4.85504,-32.8238,16.59641,-28.73217,-1.24924,5.85095,-4.61498,3.80738,8.04572,-13.38659,16.68522,-27.45588,0,0,0,0,0,0,-2.38898,-27.27825,15.08163,-22.85509,-1.35797,-10.02383,5.16594,-8.69684,1.14474,-25.30709,16.62506,-19.11462,0,0,0,0,-11.13212,5.83612,-12.34814,-2.3464,0,0,0,0,0,0,0,0,2.15036,6.44641,-2.32169,6.38667],"curve":0.25,"c3":0.75},{"time":1.6}]}}},"drawOrder":[{"offsets":[{"slot":"r_beard2","offset":3}]}]},"enter":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00009"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00013"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00016"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00020"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00023"},{"time":0.5667,"name":"eyefire/eyefire_00024"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00027"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00030"},{"time":0.7333,"name":"eyefire/eyefire_00031"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00034"},{"time":0.8333,"name":"eyefire/eyefire_00035"},{"time":0.8667,"name":"eyefire/eyefire_00010"},{"time":0.9,"name":"eyefire/eyefire_00001"},{"time":0.9333,"name":"eyefire/eyefire_00002"},{"time":0.9667,"name":"eyefire/eyefire_00004"},{"time":1,"name":"eyefire/eyefire_00005"},{"time":1.0333,"name":"eyefire/eyefire_00007"},{"time":1.0667,"name":"eyefire/eyefire_00008"},{"time":1.1,"name":"eyefire/eyefire_00009"},{"time":1.1333,"name":"eyefire/eyefire_00011"},{"time":1.1667,"name":"eyefire/eyefire_00012"},{"time":1.2,"name":"eyefire/eyefire_00014"},{"time":1.2333,"name":"eyefire/eyefire_00015"},{"time":1.2667,"name":"eyefire/eyefire_00016"},{"time":1.3,"name":"eyefire/eyefire_00018"},{"time":1.3333,"name":"eyefire/eyefire_00019"},{"time":1.3667,"name":"eyefire/eyefire_00021"},{"time":1.4,"name":"eyefire/eyefire_00022"},{"time":1.4333,"name":"eyefire/eyefire_00023"},{"time":1.4667,"name":"eyefire/eyefire_00025"},{"time":1.5,"name":"eyefire/eyefire_00026"},{"time":1.5333,"name":"eyefire/eyefire_00028"},{"time":1.5667,"name":"eyefire/eyefire_00029"},{"time":1.6,"name":"eyefire/eyefire_00030"},{"time":1.6333,"name":"eyefire/eyefire_00032"},{"time":1.6667,"name":"eyefire/eyefire_00033"},{"time":1.7,"name":"eyefire/eyefire_00035"},{"time":1.7333,"name":"eyefire/eyefire_00036"},{"time":1.7667,"name":"eyefire/eyefire_00010"},{"time":1.8,"name":"eyefire/eyefire_00001"},{"time":1.8333,"name":"eyefire/eyefire_00002"},{"time":1.8667,"name":"eyefire/eyefire_00003"},{"time":1.9,"name":"eyefire/eyefire_00004"},{"time":1.9333,"name":"eyefire/eyefire_00005"},{"time":1.9667,"name":"eyefire/eyefire_00006"},{"time":2,"name":"eyefire/eyefire_00007"},{"time":2.0333,"name":"eyefire/eyefire_00008"},{"time":2.0667,"name":"eyefire/eyefire_00009"},{"time":2.1,"name":"eyefire/eyefire_00010"},{"time":2.1333,"name":"eyefire/eyefire_00011"},{"time":2.1667,"name":"eyefire/eyefire_00012"},{"time":2.2,"name":"eyefire/eyefire_00013"},{"time":2.2333,"name":"eyefire/eyefire_00014"},{"time":2.2667,"name":"eyefire/eyefire_00015"},{"time":2.3,"name":"eyefire/eyefire_00016"},{"time":2.3333,"name":"eyefire/eyefire_00017"},{"time":2.3667,"name":"eyefire/eyefire_00018"},{"time":2.4,"name":"eyefire/eyefire_00019"},{"time":2.4333,"name":"eyefire/eyefire_00020"},{"time":2.4667,"name":"eyefire/eyefire_00021"},{"time":2.5,"name":"eyefire/eyefire_00022"},{"time":2.5333,"name":"eyefire/eyefire_00023"},{"time":2.5667,"name":"eyefire/eyefire_00024"},{"time":2.6,"name":"eyefire/eyefire_00025"},{"time":2.6333,"name":"eyefire/eyefire_00026"},{"time":2.6667,"name":"eyefire/eyefire_00027"},{"time":2.7,"name":"eyefire/eyefire_00028"},{"time":2.7333,"name":"eyefire/eyefire_00029"},{"time":2.7667,"name":"eyefire/eyefire_00030"},{"time":2.8,"name":"eyefire/eyefire_00031"},{"time":2.8333,"name":"eyefire/eyefire_00032"},{"time":2.8667,"name":"eyefire/eyefire_00033"},{"time":2.9,"name":"eyefire/eyefire_00034"},{"time":2.9333,"name":"eyefire/eyefire_00035"},{"time":2.9667,"name":"eyefire/eyefire_00036"},{"time":3,"name":"eyefire/eyefire_00037"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"r_finger_a2":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72},{"time":3,"angle":14.41}],"translate":[{"x":131.03,"y":-25.92,"curve":"stepped"},{"time":0.8,"x":131.03,"y":-25.92},{"time":3}],"scale":[{"x":0.356,"y":0.528,"curve":"stepped"},{"time":0.8,"x":0.356,"y":0.528},{"time":3}]},"r_finger_d2":{"rotate":[{"angle":-55.55},{"time":0.3,"angle":27.3},{"time":0.4,"angle":-22.35},{"time":0.5,"angle":-106.07},{"time":0.6,"angle":-89.23,"curve":"stepped"},{"time":0.8,"angle":-89.23},{"time":3,"angle":7.12}],"translate":[{"x":25.4,"y":155.06},{"time":0.3,"x":55.13,"y":192.85},{"time":0.4,"x":39.27,"y":177.3},{"time":0.5,"x":-13.43,"y":192.22},{"time":0.6,"x":-0.48,"y":179.83,"curve":"stepped"},{"time":0.8,"x":-0.48,"y":179.83},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"r_finger_b2":{"rotate":[{"angle":-72.05},{"time":0.3,"angle":-7.32},{"time":0.4,"angle":-56.97},{"time":0.5,"angle":-139.63},{"time":0.6,"angle":-117.1,"curve":"stepped"},{"time":0.8,"angle":-117.1},{"time":3,"angle":-8.92}],"translate":[{"x":171.78,"y":113.86},{"time":0.3,"x":144.96,"y":155.26},{"time":0.4,"x":129.1,"y":139.7},{"time":0.5,"x":188.45,"y":155.72},{"time":0.6,"x":182.9,"y":141.76,"curve":"stepped"},{"time":0.8,"x":182.9,"y":141.76},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"r_finger_c2":{"rotate":[{"angle":-62.67},{"time":0.3,"angle":2.17},{"time":0.4,"angle":-47.48},{"time":0.5,"angle":-133.75},{"time":0.6,"angle":-110.06,"curve":"stepped"},{"time":0.8,"angle":-110.06},{"time":3,"angle":-9.49}],"translate":[{"x":43.59,"y":126.34},{"time":0.3,"x":73.32,"y":164.13},{"time":0.4,"x":57.46,"y":148.57},{"time":0.5,"x":63.53,"y":172.35},{"time":0.6,"x":56.88,"y":157.01,"curve":"stepped"},{"time":0.8,"x":56.88,"y":157.01},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":3}]},"body":{"rotate":[{"angle":-8.67},{"time":0.1,"angle":-57.16},{"time":0.2,"angle":-81.65},{"time":0.3,"angle":-101.77},{"time":0.4,"angle":-119.71},{"time":0.5,"angle":-130.33},{"time":0.6,"angle":-117.59},{"time":0.7,"angle":-79.13},{"time":0.8,"angle":-59.37},{"time":0.9333,"angle":-31.14},{"time":1.1333,"angle":-8.99},{"time":1.2333,"angle":-1.19},{"time":1.4667,"angle":1.56},{"time":1.9,"angle":-13.1},{"time":2,"angle":-41.48},{"time":2.0333,"angle":-42.2},{"time":2.4333,"angle":-34.12},{"time":2.6667,"angle":2.11},{"time":3}],"translate":[{"x":-3552.25,"y":-102.64,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.1,"x":-3277.91,"y":-75.73,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.2,"x":-2495.59,"y":-30.21,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.3,"x":-1391.07,"y":16.35,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.4,"x":-963.85,"y":43.22,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.5,"x":-791.92,"y":16.31,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.6,"x":-515.79,"y":-29.21,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.7,"x":-270.92,"y":-75.77,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"x":-197.98,"y":-102.64},{"time":0.9333,"x":-130.76,"y":-113.25},{"time":1.1333,"x":-79.12,"y":-106.01},{"time":1.2333,"x":-68.94,"y":-4.14},{"time":1.4667,"x":-79.19,"y":55.69},{"time":1.9,"x":-42.06,"y":43.32},{"time":2,"x":44.57,"y":-30.94},{"time":2.0333,"x":75.51,"y":-71.16},{"time":2.4333,"x":47.66,"y":-71.16},{"time":2.6667,"x":50.42,"y":-19.84},{"time":3}]},"l_hand2":{"rotate":[{"angle":-5.46},{"time":0.1,"angle":19.32},{"time":0.2,"angle":21.77},{"time":0.3,"angle":22.05},{"time":0.4,"angle":-91.8},{"time":0.5,"angle":-68.35},{"time":0.6,"angle":-55.42,"curve":"stepped"},{"time":0.8,"angle":-55.42},{"time":3}],"translate":[{"x":-23.89,"y":-2.05},{"time":0.1,"x":-28.71,"y":12.87},{"time":0.2,"x":-41.75,"y":-1.02},{"time":0.3,"x":-65.66,"y":-15.55},{"time":0.4,"x":98.13,"y":100.45},{"time":0.5,"x":44.43,"y":127.78},{"time":0.6,"x":43.38,"y":135.2,"curve":"stepped"},{"time":0.8,"x":43.38,"y":135.2},{"time":3}],"scale":[{"x":0.578,"y":-0.613,"curve":"stepped"},{"time":1.0667,"x":0.578,"y":-0.613},{"time":1.1,"x":0,"y":0}]},"body2":{"rotate":[{"angle":-22.79},{"time":0.1,"angle":-10.08},{"time":0.2,"angle":16.6},{"time":0.3,"angle":38.66},{"time":0.4,"angle":52.44},{"time":0.5,"angle":59.18},{"time":0.6,"angle":41.89},{"time":0.7,"angle":-15.52},{"time":0.8,"angle":-13.97},{"time":0.9333,"angle":-38.77},{"time":1.1333,"angle":-42.93},{"time":1.2333,"angle":-26.53},{"time":1.4667,"angle":10.48},{"time":1.9,"angle":64.45},{"time":2,"angle":45.37},{"time":2.0333,"angle":12.98},{"time":2.4333,"angle":-20.67},{"time":2.6667,"angle":-35.35},{"time":3,"angle":-2.21}],"translate":[{"x":-80.64,"y":48.56},{"time":0.1,"x":-29.6,"y":11.44},{"time":0.2,"x":24.21,"y":6.83},{"time":0.3,"x":87.48,"y":24.44},{"time":0.4,"x":76.26,"y":17.25},{"time":0.5,"x":26.63,"y":100.63},{"time":0.6,"x":-89.25,"y":-3.33},{"time":0.7,"x":-119.7,"y":79.08},{"time":0.8,"x":-10.26,"y":16.06},{"time":0.9333,"x":28.57,"y":-3.29},{"time":3,"x":-7.85,"y":2.92}]},"head":{"rotate":[{"angle":54.91},{"time":0.1,"angle":57.8},{"time":0.2,"angle":61.64},{"time":0.3,"angle":73.6},{"time":0.4,"angle":89.11},{"time":0.5,"angle":87.54},{"time":0.6,"angle":81.54},{"time":0.7,"angle":92.91},{"time":0.8,"angle":54.91},{"time":0.9333,"angle":42.93},{"time":1.1333,"angle":17.02},{"time":1.2333,"angle":13.18},{"time":1.4667,"angle":4.73},{"time":1.9,"angle":16.82},{"time":2,"angle":33.14},{"time":2.0333,"angle":36.1},{"time":2.4333,"angle":66.37},{"time":2.6667,"angle":29.02},{"time":3,"angle":-4.31}],"translate":[{"x":20.04,"y":114.02,"curve":"stepped"},{"time":1.1333,"x":20.04,"y":114.02},{"time":1.2333,"x":-9.67,"y":27.62},{"time":1.4667,"x":-20.75,"y":35.91,"curve":"stepped"},{"time":1.9,"x":-20.75,"y":35.91},{"time":2,"x":-33.53,"y":5.13},{"time":2.0333,"x":23.53,"y":45.69,"curve":"stepped"},{"time":2.6667,"x":23.53,"y":45.69},{"time":3}]},"rhand":{"rotate":[{"angle":-61.96},{"time":0.1,"angle":-73.08},{"time":0.2,"angle":-53.34},{"time":0.3,"angle":-7.68},{"time":0.4,"angle":-29.8},{"time":0.5,"angle":-28.8},{"time":0.6,"angle":-23.59},{"time":0.7,"angle":-38.24},{"time":0.8,"angle":-31.8},{"time":0.9333,"angle":-54.75},{"time":1.1333,"angle":-97.12},{"time":1.2667,"angle":-59.09},{"time":1.3,"angle":-164.78},{"time":1.4667,"angle":-173.44},{"time":1.9,"angle":149.12},{"time":2,"angle":21.91},{"time":2.0333,"angle":-53.26,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-21.83},{"time":2.6667,"angle":-25.48},{"time":3,"angle":5.78}],"translate":[{"x":-3139.48,"y":-265.49},{"time":0.1,"x":-2597.5,"y":-287.15},{"time":0.2,"x":-1538.08,"y":-271.75},{"time":0.3,"x":-156.59,"y":-302.33},{"time":0.4,"x":162.82,"y":-415.03},{"time":0.5,"x":333.89,"y":-405.4},{"time":0.6,"x":362.68,"y":-451.02},{"time":0.7,"x":341.39,"y":-449.56},{"time":0.8,"x":363.74,"y":-468.24},{"time":0.9333,"x":436.4,"y":-362.08},{"time":1.1333,"x":449.16,"y":-326.78},{"time":1.2667,"x":362.78,"y":-209.31},{"time":1.3,"x":335.64,"y":-198.55},{"time":1.4667,"x":131.27,"y":-121.58},{"time":1.9,"x":2.3,"y":-135.16},{"time":2,"x":126.95,"y":24.83},{"time":2.0333,"x":215.53,"y":202.48,"curve":0.25,"c3":0.75},{"time":2.4333,"x":271.51,"y":181.5},{"time":2.6667,"x":215.79,"y":82.37},{"time":3}],"scale":[{"x":0.445,"y":-0.647,"curve":"stepped"},{"time":0.7,"x":0.445,"y":-0.647},{"time":0.8,"x":0.445,"y":-0.648},{"time":1.2667,"x":0.665,"y":-0.968},{"time":1.3,"x":0.492,"y":0.694},{"time":1.4667,"x":1.263,"y":1.104},{"time":1.9}]},"r_upparm":{"rotate":[{"angle":56.42,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.1,"angle":74.64,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.2,"angle":73.29,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.3,"angle":101.63,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.4,"angle":104.15,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.5,"angle":99.53,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.6,"angle":87.72,"curve":0.343,"c2":0.36,"c3":0.686,"c4":0.73},{"time":0.7,"angle":95.14,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"angle":80.25},{"time":0.9333,"angle":71.45},{"time":1.1333,"angle":66.47},{"time":1.3,"angle":27.63},{"time":1.4667,"angle":-6.25},{"time":1.7333,"angle":-24.81},{"time":1.9,"angle":-40.77},{"time":2,"angle":-23.48},{"time":2.0333,"angle":-19.48},{"time":2.4333,"angle":-10.17},{"time":2.6667,"angle":-0.31},{"time":3,"angle":-6.94}],"translate":[{},{"time":0.4,"x":-23.64,"y":21.09},{"time":0.8,"curve":"stepped"},{"time":1.1333},{"time":1.3,"x":-37.82,"y":-33.24},{"time":1.4667,"x":-30.27,"y":-75.09},{"time":1.7333,"x":-8,"y":-64.19},{"time":1.9,"x":-1.33,"y":-79.96,"curve":"stepped"},{"time":2,"x":-1.33,"y":-79.96},{"time":2.0333,"x":-0.65,"y":-149.57},{"time":2.4333,"x":24.58,"y":-147.44},{"time":2.6667,"x":-50.71,"y":-70.12},{"time":3}]},"l_ik":{"rotate":[{"angle":-2.64},{"time":0.1,"angle":3.05},{"time":0.2,"angle":-46.63},{"time":0.3,"angle":-134.68},{"time":0.4,"angle":-137.5},{"time":0.5,"angle":-127.9},{"time":0.6,"angle":-79.41},{"time":0.7,"angle":-68.78},{"time":0.8,"angle":-2.64},{"time":0.8667,"angle":-18.59},{"time":0.9333,"angle":3.59,"curve":"stepped"},{"time":1.9333,"angle":3.59},{"time":2.0333}],"translate":[{"x":-3697.95,"y":70.09},{"time":0.1,"x":-3528.29,"y":-2.76},{"time":0.2,"x":-2975.64,"y":85.85},{"time":0.3,"x":-2033.06,"y":290.99},{"time":0.4,"x":-1594.4,"y":360.98},{"time":0.5,"x":-1351.98,"y":415.93},{"time":0.6,"x":-857.77,"y":228.69},{"time":0.7,"x":-522.75,"y":181.63},{"time":0.8,"x":-222.27,"y":109.6},{"time":0.8667,"x":-119.44,"y":50.83},{"time":0.9333,"x":-86.11,"y":9.27,"curve":"stepped"},{"time":1.9333,"x":-86.11,"y":9.27},{"time":2,"x":-36.61,"y":102.09},{"time":2.0333}]},"lhand":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-84.39},{"time":0.2,"angle":-88.18},{"time":0.3,"angle":-51.49},{"time":0.4,"angle":63.47},{"time":0.5,"angle":23.26},{"time":0.6,"angle":22.08,"curve":"stepped"},{"time":0.7,"angle":22.08},{"time":0.8,"angle":13.43},{"time":0.9333,"angle":13.68},{"time":1,"angle":-64.87},{"time":1.2333,"angle":-72.6},{"time":1.2667,"angle":-44.35},{"time":1.4667,"angle":-14.78},{"time":1.9,"angle":85.83},{"time":2,"angle":36.86},{"time":2.0333,"angle":-97.53},{"time":2.4333,"angle":-72.24},{"time":2.6667,"angle":-27.8},{"time":3,"angle":-6.06}],"translate":[{"x":-3709.84,"y":-59.33},{"time":0.1,"x":-3469.49,"y":197.82},{"time":0.2,"x":-2505.59,"y":106.23},{"time":0.3,"x":-1151.71,"y":12.55},{"time":0.4,"x":-405.36,"y":-39.96},{"time":0.5,"x":-202.6,"y":-176.13},{"time":0.6,"x":-75.62,"y":-178.34},{"time":0.7,"x":-33.78,"y":-178.34,"curve":"stepped"},{"time":0.9333,"x":-33.78,"y":-178.34},{"time":1,"x":-142.05,"y":-61.94},{"time":1.1333,"x":-282.59,"y":176.33},{"time":1.2333,"x":-276.56,"y":345.61},{"time":1.4667,"x":-151.63,"y":252.03},{"time":1.9,"x":139.85,"y":309.89},{"time":2,"x":135.73,"y":256.73},{"time":2.0333,"x":-128.65,"y":48.02},{"time":2.4333,"x":-132.78,"y":-49.13},{"time":2.6667,"x":-69.38,"y":-48.69},{"time":3,"x":-49.01,"y":-5.46}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.525,"y":-0.516},{"time":1.4667,"y":-0.582},{"time":1.6667,"y":-1},{"time":1.9,"x":1.175,"y":-0.725},{"time":2,"y":-0.983},{"time":2.0333,"curve":"stepped"},{"time":2.6667},{"time":3,"x":0.95,"y":0.95}]},"l_upparm":{"rotate":[{"angle":121.1},{"time":0.1,"angle":113.65},{"time":0.2,"angle":153.35},{"time":0.3,"angle":138.84},{"time":0.4,"angle":121.54},{"time":0.5,"angle":114.98},{"time":0.6,"angle":121.16},{"time":0.7,"angle":148.41},{"time":0.8,"angle":106.3},{"time":0.9333,"angle":74.35},{"time":1.9,"angle":24.26},{"time":2,"angle":52.64},{"time":2.6667,"angle":24.26},{"time":3}],"translate":[{"x":-7.3,"y":263.84,"curve":"stepped"},{"time":0.8,"x":-7.3,"y":263.84},{"time":1.9,"x":4.3,"y":132.76,"curve":"stepped"},{"time":2.6667,"x":4.3,"y":132.76},{"time":3}]},"r_finger_b":{"rotate":[{"angle":-31.61},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-40.66},{"time":0.4,"angle":-120.95},{"time":0.7,"angle":-134.91,"curve":"stepped"},{"time":0.8,"angle":-134.91},{"time":0.9333,"angle":-144.5},{"time":1.1333,"angle":-91.5},{"time":1.2667,"angle":-130.98},{"time":1.3,"angle":-148.54},{"time":1.4667,"angle":-142.86},{"time":1.9,"angle":-149.27},{"time":2,"angle":-130.98},{"time":2.0333,"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-80.56},{"time":2.6667,"angle":-65.19},{"time":3,"angle":-8.92}],"translate":[{"x":78.27,"y":97.55},{"time":0.2,"x":144.96,"y":155.26},{"time":0.3,"x":129.1,"y":139.7},{"time":0.4,"x":188.45,"y":155.72},{"time":0.7,"x":171.78,"y":113.86,"curve":"stepped"},{"time":0.9333,"x":171.78,"y":113.86},{"time":1.1333,"x":84.68,"y":122.05},{"time":1.2667,"x":153.6,"y":158.11,"curve":"stepped"},{"time":2,"x":153.6,"y":158.11},{"time":2.0333,"curve":0.25,"c3":0.75},{"time":2.4333,"x":49.96,"y":19.95},{"time":2.6667,"x":80.79,"y":37.55},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.9333,"x":0.674},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.307,"y":0.895},{"time":2,"x":0.674},{"time":2.0333}]},"r_finger_c":{"rotate":[{"angle":-22.53},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-31.17},{"time":0.4,"angle":-115.08},{"time":0.7,"angle":-125.53,"curve":"stepped"},{"time":0.8,"angle":-125.53},{"time":0.9333,"angle":-118.27},{"time":1.1333,"angle":-82.13},{"time":1.2667,"angle":-121.6},{"time":1.3,"angle":-121.62},{"time":1.4667,"angle":-133.48},{"time":1.9,"angle":-115.45},{"time":2,"angle":-121.6},{"time":2.0333,"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-66.51},{"time":2.6667,"angle":-35.74},{"time":3,"angle":-9.49}],"translate":[{"x":6.64,"y":106.41},{"time":0.2,"x":73.32,"y":164.13},{"time":0.3,"x":57.46,"y":148.57},{"time":0.4,"x":63.53,"y":172.35},{"time":0.7,"x":43.59,"y":126.34,"curve":"stepped"},{"time":0.9333,"x":43.59,"y":126.34},{"time":1.1333,"x":-43.51,"y":134.53},{"time":1.2667,"x":25.41,"y":170.59,"curve":"stepped"},{"time":2,"x":25.41,"y":170.59},{"time":2.0333,"curve":"stepped"},{"time":2.4333,"curve":0.382,"c2":0.56,"c3":0.739},{"time":2.6667,"x":30.83,"y":17.59},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":0.9333,"x":0.534},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.399,"y":0.679},{"time":2,"x":0.674},{"time":2.0333}]},"r_finger_d":{"rotate":[{"angle":1.61},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-6.04},{"time":0.4,"angle":-87.39},{"time":0.7,"angle":-118.41,"curve":"stepped"},{"time":0.8,"angle":-118.41},{"time":0.9333,"angle":-94.23},{"time":1.1333,"angle":-75.01},{"time":1.2667,"angle":-93.5},{"time":1.3,"angle":-58.49},{"time":1.4667,"angle":-126.36},{"time":1.9,"angle":-79.35},{"time":2,"angle":-114.48},{"time":2.0333,"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":-49.17},{"time":2.6667,"angle":7.68},{"time":3,"angle":7.12}],"translate":[{"x":-11.55,"y":135.14},{"time":0.2,"x":55.13,"y":192.85},{"time":0.3,"x":39.27,"y":177.3},{"time":0.4,"x":-13.43,"y":192.22},{"time":0.7,"x":25.4,"y":155.06,"curve":"stepped"},{"time":0.9333,"x":25.4,"y":155.06},{"time":1.1333,"x":-61.7,"y":163.26},{"time":1.2667,"x":7.22,"y":199.32},{"time":1.3,"x":-6.92,"y":192.44},{"time":2,"x":7.22,"y":199.32},{"time":2.0333,"curve":"stepped"},{"time":2.4333,"curve":0.382,"c2":0.56,"c3":0.739},{"time":2.6667,"x":30.83,"y":17.59},{"time":3}],"scale":[{"x":0.674,"curve":"stepped"},{"time":0.8,"x":0.674},{"time":0.9333,"x":0.434,"y":0.747},{"time":1.1333,"x":0.465},{"time":1.3,"x":0.458,"y":0.679},{"time":2,"x":0.674},{"time":2.0333}]},"r_finger_a":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72},{"time":0.9333,"angle":-9.99},{"time":1.1333,"angle":-1.21},{"time":1.4667,"angle":-42.33},{"time":1.9,"angle":-28.83},{"time":2,"angle":-1.21},{"time":2.0333,"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.4333,"angle":45.08},{"time":2.6667,"angle":39.22},{"time":3,"angle":14.41}],"translate":[{"x":131.03,"y":-25.92,"curve":"stepped"},{"time":1.2667,"x":131.03,"y":-25.92},{"time":1.3,"x":188.98,"y":-2.29,"curve":"stepped"},{"time":2,"x":188.98,"y":-2.29},{"time":2.0333,"curve":0.25,"c3":0.75},{"time":2.4333,"x":33.92,"y":-37.24},{"time":2.6667,"x":13.46,"y":-38.48},{"time":3}],"scale":[{"x":0.356,"y":0.528,"curve":"stepped"},{"time":0.8,"x":0.356,"y":0.528},{"time":1.3,"x":0.512,"y":0.759,"curve":"stepped"},{"time":2,"x":0.512,"y":0.759},{"time":2.0333}]},"r_upparm2":{"rotate":[{"angle":2.65},{"time":1.1333,"angle":38.25},{"time":1.4667,"angle":55.72},{"time":1.7333,"angle":27.54},{"time":1.9,"angle":6.41},{"time":2.4333,"angle":25.98},{"time":3,"angle":12.97}],"translate":[{},{"time":0.1,"x":-23.06,"y":-56.12},{"time":0.2,"x":18.62,"y":-75.54},{"time":0.3,"x":58.57,"y":-61.11},{"time":0.4,"x":21.93,"y":-102.93},{"time":0.5,"x":56.85,"y":-62.14},{"time":0.6,"x":63.16,"y":-55.04},{"time":0.7,"x":-2.02,"y":-22.9},{"time":0.8,"x":-12.36,"y":-30.77},{"time":0.9333,"x":-18.04,"y":-30.53},{"time":1.1333,"x":-32.01,"y":-71.98},{"time":1.3,"x":14.33,"y":3.83},{"time":1.4667,"x":-0.34,"y":5.85},{"time":1.5,"x":10.13,"y":4.27},{"time":1.7333,"x":-15.82,"y":-3.94},{"time":1.9,"x":-16.38,"y":5.99},{"time":2.4333,"x":-19.28,"y":-33.74},{"time":3}],"scale":[{"x":0.874,"y":0.874,"curve":"stepped"},{"time":0.9333,"x":0.874,"y":0.874},{"time":3}]},"l_finger_c":{"rotate":[{"angle":67.75},{"time":0.2,"angle":46.4},{"time":0.4,"angle":29.53},{"time":0.5,"angle":73.3,"curve":"stepped"},{"time":0.7,"angle":73.3},{"time":0.8,"angle":67.75,"curve":"stepped"},{"time":1.2333,"angle":67.75},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l_finger_b":{"rotate":[{"angle":12.29},{"time":0.2,"angle":-9.05},{"time":0.4,"angle":-25.92},{"time":0.5,"angle":17.85,"curve":"stepped"},{"time":0.7,"angle":17.85},{"time":0.8,"angle":12.29,"curve":"stepped"},{"time":1.2333,"angle":12.29},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l_finger_a":{"rotate":[{"angle":-21},{"time":0.2,"angle":-42.35},{"time":0.4,"angle":-59.21},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.7,"angle":-15.44},{"time":0.8,"angle":-21,"curve":"stepped"},{"time":1.2333,"angle":-21},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l_finger_d":{"rotate":[{"angle":104.78},{"time":0.2,"angle":83.43},{"time":0.4,"angle":66.56},{"time":0.5,"angle":110.34,"curve":"stepped"},{"time":0.7,"angle":110.34},{"time":0.8,"angle":104.78,"curve":"stepped"},{"time":1.2333,"angle":104.78},{"time":1.2667,"angle":-2.5,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.4667,"angle":35.81,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.9,"angle":-32.58,"curve":0.367,"c2":0.63,"c3":0.704},{"time":2.6667,"angle":-2.5}]},"l_finger_b2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":16.78,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":79.08,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-11.64,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":16.78}],"translate":[{"time":1.2333},{"time":1.2667,"x":-1.29,"y":10.42}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l_finger_a2":{"rotate":[{"angle":19.49},{"time":0.2,"angle":-1.85},{"time":0.4,"angle":10.22},{"time":0.5,"angle":56.06},{"time":0.7,"angle":44.53},{"time":0.8,"angle":19.49,"curve":"stepped"},{"time":1.2333,"angle":19.49},{"time":1.2667,"angle":5.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":67.62,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-23.1,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":5.32}],"translate":[{"time":1.2333},{"time":1.2667,"x":-3.75,"y":9.81}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l_finger_c2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":16.54,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":78.84,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-11.88,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":16.54}],"translate":[{"time":1.2333},{"time":1.2667,"x":-2.62,"y":10.17}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"l_finger_d2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88,"curve":"stepped"},{"time":1.2333,"angle":40.88},{"time":1.2667,"angle":26.01,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4667,"angle":88.3,"curve":0.342,"c2":0.36,"c3":0.679,"c4":0.71},{"time":1.9,"angle":-2.42,"curve":0.381,"c2":0.59,"c3":0.728},{"time":2.6667,"angle":26.01}],"translate":[{"time":1.2333},{"time":1.2667,"x":-1.16,"y":10.43}],"scale":[{"time":1.2333},{"time":1.2667,"x":0.925,"y":0.925}]},"r_ik":{"rotate":[{"angle":102.66},{"time":0.1,"angle":27.72},{"time":0.2,"angle":-23.72},{"time":0.3,"angle":-35},{"time":0.4,"angle":-34.26},{"time":0.5},{"time":0.6,"angle":71.42},{"time":0.7,"angle":72.92},{"time":0.8,"angle":82.14},{"time":0.9333,"angle":102.66,"curve":"stepped"},{"time":1.1667,"angle":102.66},{"time":1.3,"angle":28.42},{"time":1.5333}],"translate":[{"x":-3273.98,"y":-6.67},{"time":0.1,"x":-3267.98,"y":99.3},{"time":0.2,"x":-2558.01,"y":126.65},{"time":0.3,"x":-1289.31,"y":271.14},{"time":0.4,"x":-701.5,"y":318.34},{"time":0.5,"x":-427.68,"y":281.87},{"time":0.6,"x":-135.25,"y":150.47},{"time":0.7,"x":34.7,"y":120.68},{"time":0.8,"x":91.94,"y":49.04},{"time":0.9333,"x":77.25,"y":-9.7,"curve":"stepped"},{"time":1.1667,"x":77.25,"y":-9.7},{"time":1.3,"x":140.65,"y":110.58},{"time":1.5333}],"scale":[{"y":-1,"curve":"stepped"},{"time":1.1667,"y":-1},{"time":1.3}]},"l_ik2":{"translate":[{"x":91.54,"y":85.04},{"time":0.1,"x":57.37,"y":79.54},{"time":0.2,"x":46.58,"y":84.16},{"time":0.3,"x":43.88,"y":-108.48},{"time":0.4,"x":50.02,"y":-49.47},{"time":0.5,"x":61.7,"y":4.19},{"time":0.6,"x":69.69,"y":-9.68},{"time":0.7,"x":87.16,"y":32.39},{"time":0.8,"x":40.89,"y":17.54},{"time":0.8667,"x":36.41,"y":-39.33},{"time":0.9333,"x":57.87,"y":16.78},{"time":1.1333,"x":37.58,"y":-6.79},{"time":1.2333,"x":1.78,"y":6.73},{"time":1.4667,"x":-27.38,"y":7.96},{"time":1.9333,"x":-17.93,"y":-28.08},{"time":2,"x":52.27,"y":21.93},{"time":2.0333,"x":39.5,"y":-2.99},{"time":2.4333,"x":28.53,"y":-14.33},{"time":3}]},"r_arm":{"rotate":[{"angle":22.15},{"time":3,"angle":-8.2}],"scale":[{},{"time":0.9333,"y":1.378,"curve":"stepped"},{"time":2,"y":1.378},{"time":2.0333}]},"l_leg":{"rotate":[{"angle":7.96},{"time":3}]},"r_ik2":{"rotate":[{"time":1.0333},{"time":1.2333,"angle":11.17},{"time":1.5333}],"translate":[{"x":128.11,"y":-106.46},{"time":0.1,"x":78.5,"y":-78.71},{"time":0.2,"x":-2.33,"y":39.33},{"time":0.3,"x":87.53,"y":45.77},{"time":0.4,"x":81.77,"y":1.21},{"time":0.5,"x":108.09,"y":16.09},{"time":0.6,"x":105.52,"y":-61.86},{"time":0.7,"x":167.96,"y":-36.84},{"time":0.8,"x":112.19,"y":-79.33},{"time":0.9333,"x":101.11,"y":-61.8},{"time":1.0333,"x":135.3,"y":-65.86},{"time":1.1667,"x":115.72,"y":-49.39},{"time":1.3,"x":104.91,"y":-7.44},{"time":1.5333,"x":89.47,"y":-33.56,"curve":0.26,"c3":0.618,"c4":0.44},{"time":3}]},"r_leg":{"rotate":[{"angle":63.83,"curve":"stepped"},{"time":1.3,"angle":63.83},{"time":1.5333}],"translate":[{"x":3.77,"y":-2.04},{"time":1.0333}],"scale":[{"x":0.787,"y":-1,"curve":"stepped"},{"time":1.1667,"x":0.787,"y":-1},{"time":1.3}]},"r_hand":{"rotate":[{"time":1.2667},{"time":1.3,"angle":22.22,"curve":"stepped"},{"time":2,"angle":22.22},{"time":2.0333}],"translate":[{"x":-108.92,"y":-86.21},{"time":0.1,"x":-231.8,"y":-34.01},{"time":0.2,"x":-257.1,"y":-45.29},{"time":0.3,"x":-225.91,"y":-67.47},{"time":0.4,"x":-184.87,"y":-44.92},{"time":0.5,"x":-188.82,"y":-80.85},{"time":0.6,"x":-168.25,"y":-121.48},{"time":0.7,"x":-209.89,"y":-75.36},{"time":0.8,"x":-202.11,"y":-101.44},{"time":0.9333,"x":-119.87,"y":-108.71},{"time":1.1333,"x":-205.04,"y":-50.37},{"time":1.2667,"x":-212.95,"y":-50.19},{"time":1.3,"x":-185.79,"y":-148.06},{"time":1.4667,"x":-119.62,"y":-101.72,"curve":"stepped"},{"time":2,"x":-119.62,"y":-101.72},{"time":2.0333}]},"r_upparm3":{"rotate":[{"angle":-27.65},{"time":0.1,"angle":-53.5},{"time":0.2,"angle":-105.96},{"time":0.3,"angle":-138.28},{"time":0.4,"angle":-125.37},{"time":0.5,"angle":-109.13},{"time":0.6,"angle":-88.34},{"time":0.7,"angle":-34.45},{"time":0.8,"angle":-67.94},{"time":0.9333,"angle":-57.34},{"time":1.1333,"angle":-44.48},{"time":1.3,"angle":-19.31},{"time":1.4667,"angle":16.01},{"time":1.9,"angle":43.83},{"time":2,"angle":16.04},{"time":2.0333,"angle":22.11},{"time":2.4333,"angle":27.19},{"time":2.6667,"angle":16.64},{"time":3}],"translate":[{},{"time":1.1333,"x":-0.49,"y":-9.64},{"time":1.3,"x":-5.15,"y":-12.45},{"time":1.4667,"x":-5.55,"y":-5.54},{"time":1.9,"x":13.19,"y":-8.62},{"time":2,"x":13.75,"y":-10.47},{"time":2.0333,"x":10.82,"y":10.91},{"time":3}]},"l_upparm2":{"rotate":[{"angle":-78.3},{"time":2.6667,"angle":1.59},{"time":3,"angle":-6.45}],"translate":[{"x":-56.13,"y":20.55},{"time":0.1,"x":-86.33,"y":42.77},{"time":0.2,"curve":"stepped"},{"time":0.3},{"time":0.4,"x":-97.89,"y":54.46},{"time":0.5,"x":10.44,"y":22.48},{"time":0.6,"x":-13,"y":90.89},{"time":0.7,"x":-44.26,"y":70.92},{"time":0.8,"x":-56.13,"y":20.55},{"time":1.9,"x":2.61,"y":-9.89,"curve":"stepped"},{"time":2.6667,"x":2.61,"y":-9.89},{"time":3}]},"l_hand":{"scale":[{"x":0,"y":0,"curve":"stepped"},{"time":1.0667,"x":0,"y":0},{"time":1.1}]},"r_leg2":{"rotate":[{"angle":93.27},{"time":1.5333}]},"r_leg3":{"rotate":[{"angle":-83.89},{"time":1.5333}]},"l_armour":{"rotate":[{"angle":-53.88},{"time":2.6667,"angle":19.71},{"time":3,"angle":1.84}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"r_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":19.13,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":41.37,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":37.65,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":16.4,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":-10.53,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":-4.8,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-31.05,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-27.47,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":-4.22,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3}]},"r_ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":-0.23,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":-26.38,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-13.4,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":37.79,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.6333,"angle":-23.32,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.9,"angle":39.57,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":3.84,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":27.73,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":2.2,"angle":-25.17,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":2.4333,"angle":-8.23,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":15.32,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":19.13,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":41.37,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":37.65,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":16.4,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":-10.53,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":-4.8,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-31.05,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-27.47,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":-4.22,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3}]},"l_ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":0.22,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":-25.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-11.95,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":40,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.6333,"angle":-20.58,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.9,"angle":43.11,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":7.66,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":31.64,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":2.2,"angle":-20.82,"curve":0.343,"c2":0.38,"c3":0.677,"c4":0.71},{"time":2.4333,"angle":-3.36,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":20.61,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":3.27}]},"hair_t":{"rotate":[{"angle":4.07,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":17.13,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-8.99,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":4.07,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":13.41,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":7.98,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":2.46,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":1.48,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":1.28,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":1.21,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":0.5,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":0.19,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3}]},"hair_t2":{"rotate":[{"angle":-2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":8.12,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":17.96,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.9333,"angle":9.4,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.1333,"angle":11.59,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":2.86,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":-7.32,"curve":0.342,"c2":0.38,"c3":0.676,"c4":0.71},{"time":1.9,"angle":-0.51,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":-14.93,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-12.73,"curve":0.344,"c2":0.41,"c3":0.678,"c4":0.75},{"time":2.4333,"angle":0.27,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":0.48,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":0.21,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-23.63,"curve":0.25,"c3":0.75},{"time":0.6,"angle":24.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":21.08,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":31.72,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.1333,"angle":29.69,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":9.21,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-1.61,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-26.31,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-11.28,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":15.95,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":-30.14,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":6.15,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":15.32,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-41.21,"curve":0.25,"c3":0.75},{"time":0.7,"angle":28.11,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":36.2,"curve":0.329,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.9333,"angle":32.22,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.1333,"angle":42.54,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.2333,"angle":49.92,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":9.97,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":-18.95,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":-4.6,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":22.41,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":-26.13,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":9.07,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":30.87,"curve":0.25,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.87,"curve":0.293,"c3":0.631,"c4":0.37},{"time":1.1333,"angle":33.5,"curve":0.311,"c2":0.25,"c3":0.648,"c4":0.59},{"time":1.4667,"angle":38.85,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":47.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":49,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":49.65,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":57.11,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":60.71,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.4,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.7,"angle":-0.67,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.8,"angle":-31.7,"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.9333,"angle":-3.83,"curve":0.312,"c2":0.2,"c3":0.647,"c4":0.54},{"time":1.1333,"angle":35.91,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.63},{"time":1.2333,"angle":54.86,"curve":0.32,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.4667,"angle":-64.12,"curve":0.322,"c2":0.3,"c3":0.661,"c4":0.65},{"time":1.9,"angle":2.07,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2,"angle":34.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-26.89,"curve":0.343,"c2":0.37,"c3":0.682,"c4":0.72},{"time":2.4333,"angle":-34.03,"curve":0.348,"c2":0.39,"c3":0.683,"c4":0.74},{"time":2.6667,"angle":18.89,"curve":0.369,"c2":0.63,"c3":0.707},{"time":3,"angle":6.2}],"translate":[{},{"time":3,"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":0.51,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":0.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.9333,"angle":-30.83,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.1333,"angle":22.86,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":10.61,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":76.25,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":1.6,"angle":19.11,"curve":0.34,"c2":0.37,"c3":0.673,"c4":0.7},{"time":1.9,"angle":45.99,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":17.52,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":74.08,"curve":0.337,"c2":0.36,"c3":0.67,"c4":0.69},{"time":2.1667,"angle":-1.64,"curve":0.341,"c2":0.39,"c3":0.674,"c4":0.73},{"time":2.4333,"angle":12.71,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":48.39,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":10.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.6,"angle":26.71,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.7,"angle":19.65,"curve":0.314,"c2":0.27,"c3":0.657,"c4":0.64},{"time":0.8,"angle":-15.64,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":18.47,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":53.6,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":71.03,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-45.85,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":20.45,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":53.24,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":-8.58,"curve":0.348,"c2":0.4,"c3":0.683,"c4":0.74},{"time":2.4333,"angle":-16.16,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":36.42,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":23.39}],"translate":[{},{"time":3,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":20.79,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.7,"angle":25.53,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":-5.5,"curve":0.328,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.9333,"angle":29.47,"curve":0.328,"c2":0.31,"c3":0.662,"c4":0.65},{"time":1.1333,"angle":67.48,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.2333,"angle":86.62,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":-27.55,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":44.89,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":79.09,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":17.73,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":15.34,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":70.34,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":59.01}],"translate":[{},{"time":3,"x":-2.26,"y":14.51}]},"hair_t10":{"rotate":[{},{"time":1.1333,"angle":0.98},{"time":1.4667,"angle":1.27},{"time":1.9,"angle":1.65},{"time":2,"angle":1.73},{"time":2.0333,"angle":1.76},{"time":2.4333,"angle":2.11},{"time":2.6667,"angle":2.31},{"time":3,"angle":2.6}]},"hair_t11":{"rotate":[{},{"time":1.1333,"angle":3.61},{"time":1.4667,"angle":4.67},{"time":1.9,"angle":6.04},{"time":2,"angle":6.36},{"time":2.0333,"angle":6.47},{"time":2.4333,"angle":7.74},{"time":2.6667,"angle":8.48},{"time":3,"angle":9.54}]},"head2":{"rotate":[{"time":1.9},{"time":2.0333,"angle":3.15},{"time":3}],"translate":[{"time":1.9},{"time":2.0333,"x":23.71,"y":-27.59},{"time":3}]},"headbeard_b":{"rotate":[{},{"time":1.1333,"angle":1.39},{"time":1.4667,"angle":1.79},{"time":1.9,"angle":2.32},{"time":2,"angle":2.45},{"time":2.0333,"angle":2.49},{"time":2.4333,"angle":2.98},{"time":2.6667,"angle":3.26},{"time":3,"angle":3.67}]},"headbeard_b2":{"rotate":[{},{"time":1.1333,"angle":2.52},{"time":1.4667,"angle":3.26},{"time":1.9,"angle":4.23},{"time":2,"angle":4.45},{"time":2.0333,"angle":4.52},{"time":2.4333,"angle":5.41},{"time":2.6667,"angle":5.93},{"time":3,"angle":6.67}]},"headbeard_b3":{"rotate":[{},{"time":1.1333,"angle":3.31},{"time":1.4667,"angle":4.28},{"time":1.9,"angle":5.55},{"time":2,"angle":5.84},{"time":2.0333,"angle":5.93},{"time":2.4333,"angle":7.1},{"time":2.6667,"angle":7.78},{"time":3,"angle":8.76}]},"r_ear_s":{"rotate":[{},{"time":3,"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":-66.72},{"time":0.1,"angle":-71.8},{"time":0.2,"angle":-35.65},{"time":0.3,"angle":-111.88},{"time":0.4,"angle":-70.5},{"time":0.5,"angle":-82.82},{"time":0.6,"angle":-85.91},{"time":0.7,"angle":-52.68},{"time":0.8,"angle":67.57},{"time":0.9333,"angle":14.92},{"time":1.1333,"angle":36.09},{"time":1.2333,"angle":3.69},{"time":1.4667,"angle":4.39},{"time":1.9,"angle":-0.89},{"time":2,"angle":-24.46},{"time":2.0333,"angle":47.99},{"time":2.4333,"angle":-47.91},{"time":2.5667,"angle":6.64},{"time":2.6667,"angle":36.26},{"time":2.7333,"angle":47.4},{"time":2.8333,"angle":16.15},{"time":3,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{},{"time":3,"angle":15.92}],"translate":[{},{"time":3,"x":5.7,"y":-8.17}]},"r_beard":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38},{"time":1.1333,"angle":1.69},{"time":1.4667,"angle":-6.56},{"time":1.9,"angle":-51.71},{"time":2,"angle":-50.66},{"time":2.0333,"angle":-1.36},{"time":2.1667,"angle":3.87},{"time":2.4333,"angle":-10.16},{"time":2.6667,"angle":3.59},{"time":3,"angle":8.77}],"scale":[{},{"time":3,"x":0.88}]},"r_beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":23.26,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":31.09,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-23.54,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-2.37,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-43.11,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":-24.88,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":2.1667,"angle":17.77,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":2.4333,"angle":11.18,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":-9.8,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72},{"time":1.1333,"angle":-6.27},{"time":1.2333,"angle":29.04},{"time":1.4667,"angle":30.42},{"time":1.9,"angle":-2.19},{"time":2,"angle":-34.94},{"time":2.0333,"angle":-54.22},{"time":2.1667,"angle":-34.76},{"time":2.4333,"angle":15.5},{"time":2.6667,"angle":-13.08},{"time":3,"angle":-10}]},"l_bear":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38},{"time":0.9333,"angle":-9.76},{"time":1.1333,"angle":-0.57},{"time":1.2333,"angle":7.72},{"time":1.4667,"angle":-0.77},{"time":1.9,"angle":-46.51},{"time":2,"angle":-50.69},{"time":2.0333,"angle":-29.9},{"time":2.1333,"angle":-23.51},{"time":2.4333,"angle":-24.86},{"time":2.6667,"angle":-19.49},{"time":3,"angle":-11.82}],"translate":[{},{"time":0.4,"x":5.14,"y":33.81},{"time":0.8,"x":-27.44,"y":61.13},{"time":1.1333,"x":13,"y":65.62},{"time":1.2333,"x":18.59,"y":79.6},{"time":1.4667,"x":-35.4,"y":16.96},{"time":1.9}]},"l_bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.9333,"angle":-29.64,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.1333,"angle":22.7,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":18.77,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4667,"angle":-24.33,"curve":0.342,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.9,"angle":-10.77,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2,"angle":-31.53,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":34.58,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":2.1333,"angle":35.65,"curve":0.345,"c2":0.39,"c3":0.679,"c4":0.72},{"time":2.4333,"angle":0.16,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":2.6667,"angle":17.9,"curve":0.355,"c2":0.65,"c3":0.689},{"time":3,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72},{"time":0.9333,"angle":-37.29},{"time":1.1333,"angle":-16.24},{"time":1.2333,"angle":37.88},{"time":1.4667,"angle":18.31},{"time":1.9,"angle":-12.28},{"time":2,"angle":-26.03},{"time":2.0333,"angle":-28.49},{"time":2.1333,"angle":36.65},{"time":2.4333,"angle":37.07},{"time":2.6667,"angle":-6.49},{"time":3,"angle":15.47}]},"headbeard_f":{"rotate":[{},{"time":1.1333,"angle":1.14},{"time":1.4667,"angle":1.47},{"time":1.9,"angle":1.91},{"time":2,"angle":2.01},{"time":2.0333,"angle":2.04},{"time":2.4333,"angle":2.44},{"time":2.6667,"angle":2.67},{"time":3,"angle":3.01}]},"headbeard_f2":{"rotate":[{},{"time":1.1333,"angle":-1.76},{"time":1.4667,"angle":-2.28},{"time":1.9,"angle":-2.95},{"time":2,"angle":-3.11},{"time":2.0333,"angle":-3.16},{"time":2.4333,"angle":-3.78},{"time":2.6667,"angle":-4.14},{"time":3,"angle":-4.66}]},"headbeard_f3":{"rotate":[{},{"time":1.1333,"angle":-0.23},{"time":1.4667,"angle":-0.29},{"time":1.9,"angle":-0.38},{"time":2,"angle":-0.4},{"time":2.0333,"angle":-0.41},{"time":2.4333,"angle":-0.49},{"time":2.6667,"angle":-0.53},{"time":3,"angle":-0.6}]},"headbeard_f4":{"rotate":[{},{"time":1.1333,"angle":13.61},{"time":1.4667,"angle":17.61},{"time":1.9,"angle":22.81},{"time":2,"angle":24.01},{"time":2.0333,"angle":24.42},{"time":2.4333,"angle":29.22},{"time":2.6667,"angle":32.02},{"time":3,"angle":36.02}]},"headbeard_f5":{"rotate":[{},{"time":1.1333,"angle":15.48},{"time":1.4667,"angle":20.04},{"time":1.9,"angle":25.96},{"time":2,"angle":27.33},{"time":2.0333,"angle":27.78},{"time":2.4333,"angle":33.25},{"time":2.6667,"angle":36.43},{"time":3,"angle":40.99}]},"l_leg2":{"rotate":[{"angle":-85.86},{"time":3}]},"l_leg3":{"rotate":[{"angle":2.06},{"time":3}]},"skirt_f":{"rotate":[{"angle":16.01},{"time":0.1,"angle":37.11},{"time":0.4,"angle":72.86},{"time":0.5,"angle":79.35},{"time":0.8,"angle":16.01},{"time":0.9333,"angle":31.78},{"time":1.1333,"angle":25.95},{"time":1.2333,"angle":-3.48},{"time":1.4667,"angle":2},{"time":1.9,"angle":1.29},{"time":2,"angle":-0.42},{"time":2.0333,"angle":9.72},{"time":2.4333,"angle":21.18},{"time":2.6667,"angle":3.49},{"time":3,"angle":9.15}],"scale":[{"x":0.554,"curve":"stepped"},{"time":0.8,"x":0.554},{"time":3}],"shear":[{},{"time":3,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":8.67},{"time":0.2,"angle":26.26},{"time":0.6,"angle":-8.92},{"time":0.8,"angle":8.67},{"time":0.9333,"angle":-25.83},{"time":1.1333,"angle":-6.53},{"time":1.2333,"angle":20.3},{"time":1.4667,"angle":0.81},{"time":1.9,"angle":12.72},{"time":2,"angle":31.36},{"time":2.0333,"angle":-12.77},{"time":2.4333,"angle":-2.08},{"time":2.6667,"angle":-27.26},{"time":3,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-8.92},{"time":0.4,"angle":26.26},{"time":0.8,"angle":-8.92},{"time":0.9333,"angle":-26.44},{"time":1.1333,"angle":-8.67},{"time":1.2333,"angle":17.39},{"time":1.4667,"angle":-3.9},{"time":1.9,"angle":4.69},{"time":2,"angle":22.56},{"time":2.0333,"angle":-21.83},{"time":2.4333,"angle":-14.22},{"time":3,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":-21.75},{"time":0.3},{"time":0.7,"angle":-26.67},{"time":0.8,"angle":-21.75,"curve":0.328,"c2":0.32,"c3":0.662,"c4":0.65},{"time":0.9333,"angle":-19.83,"curve":0.325,"c2":0.31,"c3":0.66,"c4":0.65},{"time":1.2333,"angle":-16.8,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.4667,"angle":18.96,"curve":0.335,"c2":0.34,"c3":0.672,"c4":0.68},{"time":1.9,"angle":6.38,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":2,"angle":-6.93,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.0333,"angle":2.29,"curve":0.348,"c2":0.38,"c3":0.684,"c4":0.73},{"time":2.4333,"angle":22.58,"curve":0.347,"c2":0.4,"c3":0.682,"c4":0.74},{"time":2.6667,"angle":-12.72,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"angle":7.98}]},"l_leg5":{"rotate":[{"angle":7.51},{"time":0.1},{"time":0.5,"angle":40.71},{"time":0.8,"angle":7.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.9333,"angle":5.91,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.2333,"angle":3.57,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.69},{"time":1.4667,"angle":32.52,"curve":0.342,"c2":0.38,"c3":0.676,"c4":0.71},{"time":1.9,"angle":5.8,"curve":0.336,"c2":0.35,"c3":0.669,"c4":0.68},{"time":2,"angle":-10.08,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.0333,"angle":-1.56,"curve":0.344,"c2":0.41,"c3":0.678,"c4":0.75},{"time":2.4333,"angle":10.52,"curve":0.34,"c2":0.41,"c3":0.674,"c4":0.75},{"time":2.6667,"angle":-28.82,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3,"angle":-9.62}]},"tail":{"rotate":[{"angle":-11.38},{"time":0.1,"angle":0.98},{"time":0.2,"angle":21.9},{"time":0.3,"angle":42.82},{"time":0.4,"angle":66.9},{"time":0.5,"angle":82.78},{"time":0.6,"angle":73.27},{"time":0.7,"angle":22.12},{"time":0.8,"angle":5.63,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":6.83},{"time":1.1333,"angle":-3.18},{"time":1.2333,"angle":4},{"time":1.4667,"angle":-4.11},{"time":1.9,"angle":-5.33},{"time":2,"angle":-5.61},{"time":2.0333,"angle":-5.7},{"time":2.4333,"angle":-6.82},{"time":2.6667,"angle":-7.47},{"time":3,"angle":-8.41}]},"tail2":{"rotate":[{"angle":21.88},{"time":0.1,"angle":16.73},{"time":0.2,"angle":28.65},{"time":0.3,"angle":30.6},{"time":0.4,"angle":39.52},{"time":0.5,"angle":35.58},{"time":0.6,"angle":25.54},{"time":0.7,"angle":30.68},{"time":0.8,"angle":25.76,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.9333,"angle":14.17},{"time":1.1333,"angle":1.71},{"time":1.2333,"angle":6.71},{"time":1.4667,"angle":2.21},{"time":1.9,"angle":2.86},{"time":2,"angle":3.01},{"time":2.0333,"angle":3.06},{"time":2.4333,"angle":-7.59},{"time":2.6667,"angle":-21.43},{"time":3,"angle":4.52}]},"tail3":{"rotate":[{"angle":9.68},{"time":0.1,"angle":-0.06},{"time":0.2,"angle":16.73},{"time":0.3,"angle":-0.19},{"time":0.4,"angle":-0.25},{"time":0.5,"angle":-0.31},{"time":0.6,"angle":2.63},{"time":0.7,"angle":-0.43},{"time":0.8,"angle":24.08,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.9333,"angle":7.46},{"time":1.1333,"angle":-0.7},{"time":1.2333,"angle":26.36},{"time":1.4667,"angle":-0.91},{"time":1.9,"angle":-1.17},{"time":2,"angle":23.89},{"time":2.0333,"angle":-1.26},{"time":2.4333,"angle":29.51},{"time":2.6667,"angle":-1.65},{"time":3,"angle":-1.85}],"translate":[{},{"time":0.4,"x":-8.99,"y":-3.86},{"time":0.8}]},"tail4":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-0.27},{"time":0.2,"angle":-0.55},{"time":0.3,"angle":16.73},{"time":0.4,"angle":-1.1},{"time":0.5,"angle":-1.37},{"time":0.6,"angle":-1.64},{"time":0.7,"angle":34.38},{"time":0.8,"angle":34.35,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.9333,"angle":32.05},{"time":1.1333,"angle":-3.11},{"time":1.2333,"angle":-33.57},{"time":1.4667,"angle":35.01},{"time":1.9,"angle":-30.93},{"time":2,"angle":-32.01},{"time":2.0333,"angle":18.49},{"time":2.4333,"angle":50.3},{"time":2.6667,"angle":29.73},{"time":3,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-20.23},{"time":0.1,"angle":-0.4},{"time":0.2,"angle":-0.8},{"time":0.3,"angle":-1.19},{"time":0.4,"angle":16.73},{"time":0.5,"angle":-1.99},{"time":0.6,"angle":-2.39},{"time":0.7,"angle":-2.79},{"time":0.8,"angle":-20.23,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-39.18},{"time":1.1333,"angle":-4.51},{"time":1.2333,"angle":-4.91},{"time":1.4667,"angle":33.19},{"time":1.9,"angle":-33.29},{"time":2,"angle":-14.52},{"time":2.0333,"angle":-8.1},{"time":2.4333,"angle":-24.82},{"time":2.6667,"angle":-10.62},{"time":3,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-20.23},{"time":0.2,"angle":-0.55},{"time":0.3,"angle":-0.82},{"time":0.4,"angle":-1.1},{"time":0.5,"angle":16.73},{"time":0.6,"angle":-1.64},{"time":0.7,"angle":-1.92},{"time":0.8,"angle":-37.57,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.9333,"angle":-32.92},{"time":1.1333,"angle":-3.11},{"time":1.2333,"angle":-52.46},{"time":1.4667,"angle":35.01},{"time":1.9,"angle":-30.93},{"time":2,"angle":-12.04},{"time":2.0333,"angle":-5.57},{"time":2.4333,"angle":-62.19},{"time":2.6667,"angle":-7.31},{"time":3,"angle":-8.22}]},"headmouth":{"rotate":[{"time":1.9},{"time":2,"angle":-3.81},{"time":2.0333,"angle":-8.16},{"time":2.0667,"angle":-12.2},{"time":2.1,"angle":-7.9},{"time":2.1333,"angle":-12.39},{"time":2.1667,"angle":-11.44},{"time":2.2333,"angle":-17.98},{"time":2.3,"angle":-13.71},{"time":2.4333,"angle":-24.39},{"time":2.6667,"angle":1.02},{"time":3}],"translate":[{"time":1.9},{"time":2,"x":-13.44,"y":11.31},{"time":2.0333,"x":-29.23,"y":22.85},{"time":2.0667,"x":-25.45,"y":24.41},{"time":2.1,"x":-32.91,"y":16.54},{"time":2.1333,"x":-28.89,"y":18.24},{"time":2.1667,"x":-30.6,"y":15.24},{"time":3}],"scale":[{"time":1.9},{"time":2.0333,"x":1.207},{"time":3}]},"shadow":{"translate":[{"x":-3453.81},{"time":0.1,"x":-3037.09},{"time":0.2,"x":-2203.66},{"time":0.3,"x":-1179.52},{"time":0.4,"x":-565.04},{"time":0.5,"x":-317.84},{"time":0.6,"x":-36.69},{"time":0.7},{"time":0.8,"x":61.15},{"time":0.9333,"x":67.27},{"time":1.1333,"x":48.92},{"time":1.2333},{"time":1.4667,"x":-79.5},{"time":1.9},{"time":2,"x":91.72},{"time":2.0333,"x":134.53},{"time":2.4333,"x":91.73},{"time":2.6667}],"scale":[{"y":0.576},{"time":0.1,"y":1.071},{"time":0.2,"y":1.353},{"time":0.3,"y":1.424},{"time":0.4,"y":1.212},{"time":0.5,"y":1.283},{"time":0.6,"y":1.183},{"time":0.7,"y":1.245},{"time":0.8,"y":1.122},{"time":0.9333,"y":1.061},{"time":1.1333,"y":0.817,"curve":"stepped"},{"time":1.2333,"y":0.817},{"time":1.4667,"y":0.755},{"time":1.9},{"time":2,"y":1.122},{"time":2.0333,"y":1.183},{"time":2.4333,"y":1.256},{"time":2.6667}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]}},"ik":{"r_ik2":[{"softness":50,"bendPositive":false,"curve":"stepped"},{"time":1.0333,"softness":50,"bendPositive":false,"curve":"stepped"},{"time":1.3,"softness":50}]},"deform":{"default":{"body":{"body":[{"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,23.4961,-62.50654,62.42265,-22.3002,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,49.89716,22.95819,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.74295,37.16302,155.17085,-24.09232,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-3.7588,-102.26871,75.48494,-69.10156,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321]},{"time":1.1333,"vertices":[24.27805,-94.09186,-49.44308,-60.33459,28.93794,-79.05698,-27.72601,-33.53111,23.06407,-36.89331,-12.34491,-18.84964,13.98885,-17.66406,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-18.47495,10.59903,-6.60213,-16.58984,5.19722,-44.14511,14.71194,-69.24146,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,12.18525,-58.46974,55.0217,-31.75858,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,45.32996,18.62659,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.34499,36.78583,155.17085,-24.09232,41.83589,-65.34915,1.92397,-24.0264,25.36412,-11.29166,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-28.56895,-91.9902,57.89997,-89.39825,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321]},{"time":1.2333,"vertices":[26.0888,-115.37415,-60.942,-60.92342,19.51513,-86.1563,-29.9238,-33.3717,14.43166,-42.43585,-15.08719,-19.20169,9.3477,-22.55963,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.82828,-26.58117,0,0,0,0,0,0,0,0,12.07422,7.25618,2.29202,13.89929,33.88745,25.18236,2.76247,42.12947,41.37867,38.17905,-2.28754,56.25507,36.94104,59.35998,-20.70907,66.73123,16.80132,49.46973,-26.80858,44.8434,31.41111,30.16824,-2.06893,54.23732,34.14772,37.64679,-8.51598,59.00241,37.59007,38.5527,-8.53843,62.33112,30.00274,28.43958,-6.58674,47.23649,0,0,-7.04848,8.31307,2.46563,-20.15645,11.72204,-52.64817,18.92917,-83.68405,47.98579,-19.03939,34.5077,40.68241,-5.60923,-93.8857,-0.72711,-39.98087,32.63293,-26.73019,46.03236,-12.84887,38.17278,38.55824,12.01404,-62.09341,51.17092,-24.30579,44.21547,-10.87038,31.58019,45.07083,21.86119,6.09239,16.02022,-38.2474,36.95699,-2.1788,32.5742,-36.1992,39.77699,16.73414,-18.98038,-57.27432,28.34156,19.3312,0.47513,-132.15439,98.75189,-78.98983,-4.25787,-64.75793,45.48936,-38.03102,64.41954,6.77971,25.12898,73.3241,36.98894,10.2651,65.26631,-23.17101,28.55318,-61.52522,-4.7227,-19.02296,14.65312,-14.9681,45.51391,-31.6144,45.71153,33.27042,-3.74494,-12.41611,7.03439,-10.89497,-17.08905,-82.54562,51.86396,-65.71756,52.90584,1.86257,22.51154,57.57791,3.06972,-5.36997,6.06438,1.21763,-47.42712,-78.2764,38.69441,-88.07888,-2.75548,-18.69411,12.54269,-12.61953,7.03135,4.65735,1.11801,10.48928]},{"time":1.4667,"vertices":[-5.35229,-88.68799,-14.94373,-37.65738,-2.44073,-40.4408,-3.34583,-8.42907,-0.54663,-9.05249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.0462,-0.7608,-2.02533,-33.55963,-3.68903,-61.12369,0,0,0,0,0,0,-0.57379,-1.44237,-0.09277,-1.54971,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.21967,-36.78369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-18.57355,-46.80413,-3.03394,-50.26352],"curve":0.271,"c3":0.619,"c4":0.41},{"time":1.9,"offset":60,"vertices":[37.48517,62.19609,58.01733,43.6738,13.45941,74.05562,40.16711,63.65485,-9.40399,84.27005,22.77954,81.67564,-42.74304,78.72104,-10.21722,88.99184,0.15021,15.37225,0,0,0,0,0,0,0,0,-18.41156,25.91011,-7.39111,30.91399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12.12845,3.8064,12.67126,-1.00376,-4.67511,2.56232,0,0,0,0,-14.9501,1.44153,-13.32825,6.92537,0,0,-16.55725,22.66578,0,0,0,0,0,0,0,0,8.89136,54.56642,28.6449,47.28631,-11.92657,1.74176,0,0,0,0,0,0,0,0,5.03729,3.62621,6.02765,1.47992,0,0,0,0,0,0,0,0,-24.07605,55.22311,-1.68732,60.21938],"curve":0.326,"c2":0.31,"c3":0.66,"c4":0.65},{"time":2.0333,"offset":52,"vertices":[87.80539,-3.36305,86.0305,26.09262,130.83118,-21.90453,125.22055,52.53799,231.09903,59.91956,159.18552,171.53738,139.97455,62.84583,105.13766,121.96976,101.75116,59.44374,53.0515,105.1792,29.55228,46.22049,15.95096,52.49091,1.58522,66.16406,0,0,0,0,0,0,0,0,99.92578,15.82083,81.96442,72.44122,-8.27121,-59.20851,-13.54034,-95.89952,63.9221,-72.7597,57.12891,-35.91383,79.75745,-2.03003,-12.68851,-75.12286,48.71669,-58.57599,248.4389,26.41142,200.59967,151.51443,32.05046,-23.61557,-11.67401,-69.22443,45.22089,-54.46356,0.49945,-87.57159,71.31328,-58.93054,-13.29416,-95.16391,18.18263,51.32007,-13.29416,-95.16391,63.52454,-72.09381,-6.30997,-42.96962,28.483,-32.78632,234.6795,96.40231,152.50386,196.57257,48.24133,-58.27618,71.33318,-84.88074,34.19733,-38.8103,-8.07059,-57.77269,38.56491,-43.76678,151.72177,-27.3723,154.17879,64.48386,-8.21057,-58.77573,39.23445,-44.52594,-13.29416,-95.16391,63.52454,-72.09381,136.71231,74.96933,76.5536,138.8316,-2.34671,-16.79988,11.21426,-12.72662,-7.04813,-50.45514,33.68033,-38.22357,-4.77377,-34.17123,22.81015,-25.88733,5.27451,-8.41873,11.83421,-4.42062],"curve":0.358,"c2":0.42,"c3":0.756},{"time":2.4333,"offset":52,"vertices":[121.78693,-17.43251,118.8455,42.70169,121.45566,-21.26025,118.62239,45.84622,175.42584,40.20203,137.86493,116.45798,141.89926,62.06236,106.98592,122.91977,142.46075,91.74541,55.07549,157.10797,55.44174,78.74402,8.14989,93.32208,-9.89001,32.80634,0,0,0,0,0,0,0,0,131.74475,82.10487,52.01645,139.483,25.79602,-85.88007,97.53918,-163.19644,91.48434,-110.04504,85.04752,-65.79146,108.91766,-5.57858,60.92096,-78.17427,44.11397,-49.71747,262.46606,36.98798,201.71605,169.0477,26.32883,-4.14645,18.63394,-132.9446,67.16234,-96.28162,105.9787,-70.70122,89.06021,7.86621,14.16776,-118.22227,-2.03976,94.02371,49.73306,-140.92178,70.21329,-118.33276,8.70432,-76.16702,34.98631,-61.9126,248.1388,155.0454,116.789,244.99268,45.33655,0.63382,80.07954,-173.95483,58.1859,-87.73584,52.98373,-80.64719,53.52129,-63.22638,182.49146,-3.64156,144.65237,96.48193,2.49295,-81.07822,31.68808,-73.56509,26.83438,-132.03143,60.44763,-115.29529,157.94473,132.68073,46.61153,192.5437,2.67133,-46.40553,26.008,-34.77368,44.24838,-114.66135,69.61789,-97.22211,2.86493,-60.93796,27.50298,-51.37921,8.84415,-38.44814,31.4649,-24.35187],"curve":0.358,"c2":0.42,"c3":0.756},{"time":2.6667,"offset":52,"vertices":[87.80539,-3.36305,86.0305,26.09262,130.83118,-21.90453,125.22055,52.53799,231.09903,59.91956,159.18552,171.53738,139.97455,62.84583,105.13766,121.96976,101.75116,59.44374,53.0515,105.1792,29.55228,46.22049,15.95096,52.49091,1.58522,66.16406,0,0,0,0,0,0,0,0,99.97629,16.18695,81.71991,72.71924,0,0,-0.24619,-0.73561,0.39757,-0.66589,58.98053,-22.65485,70.90659,8.0141,-3.87582,-12.03766,6.60556,-10.78387,248.4389,26.41142,200.59967,151.51443,5.0999,6.97037,-4.35648,-16.8421,10.25435,-14.78021,5.65866,-50.63797,46.65887,-30.95007,0,0,15.91461,53.89301,0,0,0,0,-0.5282,-1.57901,0.85345,-1.42944,234.6795,96.40231,152.50386,196.57257,19.63693,-25.81274,7.80864,-12.78693,0,0,0,0,0,0,153.23071,-16.5722,146.96951,72.66568,0,0,0,0,0,0,0,0,136.71231,74.96933,76.5536,138.8316,0,0,0,0,0,0,0,0,0,0,0,0,6.44553,-0.03372,6.23685,1.93149],"curve":0.358,"c2":0.42,"c3":0.756},{"time":3}]},"l_hand2":{"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}],"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r_arm":{"r_arm":[{"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043],"curve":"stepped"},{"time":2,"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043]},{"time":2.0333}]},"r_armour_u":{"r_armour_u":[{"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576],"curve":0.25,"c3":0.75},{"time":0.4,"offset":4,"vertices":[163.9654,-45.00104,177.28926,99.94327,181.48798,-69.53613,202.98242,108.74658,140.53593,-68.87366,203.46579,65.00528,76.7599,-81.34448,151.37636,9.09085],"curve":0.25,"c3":0.75},{"time":0.8,"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]},{"time":0.9333,"offset":4,"vertices":[86.15086,-86.93385,131.65134,16.42305,98.35374,-87.21111,139.04272,20.50257,72.67327,-88.64056,118.05659,-0.91488,47.05607,-96.31017,106.23074,-20.62051]},{"time":1.1333,"offset":4,"vertices":[76.72326,-75.8345,106.16136,31.64257,76.53687,-57.70183,90.38624,33.82039,57.22791,-59.38353,79.41578,16.51402,46.80376,-80.84232,91.47905,3.04135]},{"time":1.1667,"offset":4,"vertices":[61.37862,-60.66761,84.92911,25.31406,51.66551,-48.59739,70.66653,17.3245,36.21834,-49.94276,61.89016,3.4794,37.44302,-64.67386,73.18325,2.43308]},{"time":1.2,"offset":4,"vertices":[46.03392,-45.50067,63.69678,18.98553,31.84498,-37.87653,50.86269,6.27486,20.25962,-38.88556,44.28042,-4.10896,28.08224,-48.50535,54.88739,1.82481]},{"time":1.2333,"offset":4,"vertices":[30.68928,-30.33378,42.46452,12.65702,24.77088,-24.68441,35.46425,7.4142,17.04731,-25.35709,31.07607,0.49165,18.72149,-32.3369,36.59159,1.21654]},{"time":1.3}]},"r_hand":{"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052],"curve":"stepped"},{"time":2,"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]},{"time":2.0333}]},"r_upparm":{"r_upparm":[{"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":0.1,"vertices":[-28.71144,-44.1958,56.25366,21.75468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.93488,43.86108,51.64029,65.98203,0.65607,47.6413,-54.5849,17.91281,-131.43018,-29.84882]},{"time":0.2,"vertices":[-70.29115,-121.59358,129.93558,-53.69101,0,0,0,0,0,0,0,0,0,0,0,0,60.33824,12.40262,1.57361,70.47795,138.48999,146.07806,67.43813,181.56848,-45.18221,149.7756,-149.39273,46.96301,-219.99423,-105.85606,-43.01499,-68.8707,65.8432,-65.57346,-24.77599,-39.39505,37.61963,-37.69945]},{"time":0.3,"vertices":[-142.63615,-149.74637,47.56436,-137.68623,0,0,0,0,0,0,0,0,0,0,0,0,50.28187,10.33552,1.31134,58.73162,40.17482,138.09778,-59.78693,144.63666,-163.83813,74.89461,-232.30444,-49.23798,-259.16425,-211.93402,-35.84583,-57.39225,54.86933,-54.64455,-20.64665,-32.82921,31.34969,-31.41621,12.45225,-6.3985,16.0213,-0.0816]},{"time":0.4,"vertices":[-114.10892,-119.7971,38.05149,-110.14899,0,0,0,0,0,0,0,0,0,0,0,0,40.22549,8.26841,1.04907,46.9853,17.968,82.77934,-63.6477,81.75819,-145.03168,21.48185,-197.31894,-77.27264,-203.24228,-209.83081,-28.67666,-45.9138,43.89547,-43.71564,-16.51732,-26.26337,25.07975,-25.13297,9.9618,-5.1188,12.81704,-0.06528]},{"time":0.7,"vertices":[-28.52724,-29.94928,9.51288,-27.53725,0,0,0,0,0,0,0,0,0,0,0,0,10.05638,2.0671,0.26227,11.74633,97.34462,37.31192,50.5202,69.83792,-27.32924,70.25962,-114.90354,35.7408,-166.87126,-25.32079,-7.16917,-11.47845,10.97387,-10.92891,-4.12933,-6.56584,6.26994,-6.28324,2.49045,-1.2797,3.20426,-0.01632]},{"time":0.8,"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":2.0333,"vertices":[-14.41787,-22.19356,28.24859,10.92443,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31.91917,-11.54503,15.38733,-3.67176,5.42368,5.79634,-24.18028,6.86073,-50.13742,-7.49749]},{"time":3}]},"skirt_f":{"skirt_f":[{},{"time":0.1,"vertices":[29.77103,5.39417,30.0675,-3.43262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74.49672,-23.86407,63.89751,-45.12604,82.84251,-46.12787,65.17497,-68.86804,-3.84917,2.3681,-24.82707,-23.53223,0,0,0,0,0,0,-1.31363,0.83984,-8.37158,5.35114,-6.37955,7.61755,21.60481,-10.06567,17.58562,-16.08618,0,0,0,0,0,0,0,0,0,0,0,0,18.72389,-2.96655,19.30846,1.07959,-3.83809,2.36029,-3.84302,2.35248,0,0,0,0,0,0,-6.52203,1.63745,-5.73038,3.5202,2.70682,-0.42847,72.03828,-37.46112,57.46828,-57.35541]},{"time":0.2,"vertices":[-10.04969,2.73807,11.70756,13.7414,-18.09149,2.26469,-19.20455,5.93506,-11.55451,-12.96573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.3334,-0.83588,0.20313,-0.87646,24.80927,-22.33905,12.36267,-31.01239,7.54532,-32.52161,44.9576,-40.38214,22.44687,-56.10919,47.03943,-38.67505,25.06897,-55.50098,-6.95396,22.94112,-36.46767,2.33705,0,0,0,0,0,0,13.88802,-10.00909,0,0,0,0,18.66487,-16.08008,9.62213,-22.68195,0,0,0,0,0,0,0,0,0,0,0,0,21.18966,-3.96492,17.27429,17.16789,0,0,0,0,0,0,0,0,0,0,0.59949,-0.53894,0.29929,-0.74969,10.05263,-0.3857,43.32411,-36.52094,22.6911,-51.92395]},{"time":0.3,"vertices":[32.96143,42.9007,36.27815,35.07705,-6.40857,21.45368,-38.4091,11.87012,-23.10901,-25.93146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13.66522,-11.19592,9.67724,-14.77771,4.79333,-17.00208,42.37201,-35.92627,29.63678,-46.98547,60.88477,-51.64868,42.57747,-67.53815,17.2459,34.70853,-0.27335,27.82636,-62.52094,-35.15393,-70.1869,-14.76245,-71.38336,6.9856,-65.36993,-19.04333,-147.13306,-16.39813,-145.26855,28.52521,-13.59222,-27.56677,-21.23542,-22.20966,-17.08845,-7.50128,-18.55252,-2.02631,-2.00135,-0.87878,-2.17343,-0.23834,-138.15216,-23.08295,-138.70569,19.45636,60.18911,5.80254,57.08116,27.12878,-18.29591,-8.03143,-19.86368,-2.16962,-103.66052,-14.96423,-103.36949,16.84503,-93.54749,47.0957,-37.90393,-26.94879,-44.24208,-14.32513,25.86692,0.85528,29.33148,-46.22931,14.10792,-52.89557]},{"time":0.4,"vertices":[85.03808,92.0652,60.84875,56.4127,5.27435,40.64267,-60.38025,15.18234,-37.98126,-42.51804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.50174,-6.88995,23.18378,-10.50537,39.7272,-11.17102,37.58984,-17.03296,169.01555,100.40013,102.75883,100.44009,0,0,0,0,0,0,-148.26126,9.08026,-179.54529,25.46252,-173.65207,52.24176,-72.85404,16.16473,-69.58151,26.96375,0,0,0,0,0,0,0,0,-140.4855,11.33417,-137.16751,32.38611,117.11499,32.16437,145.49597,70.59102,0,0,0,0,-105.47204,9.21844,-102.8735,25.01575,-81.18507,67.95551,-19.56075,0.50739,-19.25989,3.45074,77.78021,3.76645,-73.41949,41.85291,-66.26471,52.44482]},{"time":0.5,"vertices":[98.97076,122.33449,71.14431,75.21844,6.45155,34.72729,-43.21024,13.35388,-25.99763,-29.17289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.90942,-0.15887,2.90927,-0.15295,2.72858,-1.0188,6.39044,17.90192,6.34564,17.91156,7.17944,23.72333,7.12088,23.7345,197.09889,137.91492,126.121,172.19183,-94.86169,-6.23267,-94.84933,-6.43994,-92.40857,22.32886,-162.70685,28.44037,-224.23279,42.28723,-224.32718,41.79688,-91.37616,15.74432,-91.41458,15.54291,-31.54678,-2.14349,-30.73615,7.42535,-19.24805,-1.30878,-18.75409,4.53033,-183.96515,31.53412,-184.03857,31.13214,126.82291,44.03753,175.29443,89.89668,-50.26117,-3.41376,-48.96826,11.83069,-161.44751,24.45978,-161.5062,24.10504,-146.82385,71.47552,-54.05664,-0.23596,-54.05936,-0.35535,66.0486,18.34165,-56.79108,22.65503,-56.84888,22.526]},{"time":0.6,"vertices":[70.55106,80.51097,47.42953,50.14563,4.30104,23.15152,-28.80682,8.90259,-17.33176,-19.44859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.93962,-0.10592,1.93951,-0.10197,1.81905,-0.6792,4.26029,11.93461,4.23043,11.94104,0.45826,21.08649,-0.34637,20.35883,167.47198,82.80629,96.28879,112.00243,-77.90076,-1.48645,-76.72931,-13.54907,-77.89581,-1.82489,-139.95065,20.5493,-160.04181,7.89392,-159.33154,-17.01953,-77.87032,11.26345,-78.92719,-0.50081,-14.89178,-2.35162,-15.07574,-0.07941,-11.81348,-1.86609,-11.96008,-0.06354,-135.43759,12.97308,-135.81561,-8.18652,94.24568,30.76365,134.06992,60.45961,-45.53186,-8.38275,-46.27618,-1.42163,-119.92587,2.16119,-118.81512,-16.46234,-119.9386,1.64038,-72.12686,-1.35559,-71.0481,-12.52502,48.064,15.98153,-61.56853,23.28792,-63.73883,15.60138]},{"time":0.7,"vertices":[25.43316,38.42686,23.71478,25.07282,2.15052,11.57577,-14.40342,4.4513,-8.66588,-9.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.96981,-0.05296,0.96976,-0.05098,0.90953,-0.3396,9.2871,4.79262,9.27464,4.81153,13.23838,8.40812,12.84045,8.07267,49.86007,25.83252,21.53345,50.97621,-30.03882,-13.7832,-30.00909,-13.84845,-29.97913,-13.9137,-22.32333,-8.63523,-74.55142,-23.59625,-74.50015,-23.75842,-28.49702,-13.06856,-28.4693,-13.13053,0,0,0,0,-0.20227,-0.0929,-0.20227,-0.09393,-37.01572,-12.8902,-36.98819,-12.97009,29.6137,6.47106,44.05499,18.03541,-29.31354,-13.52759,-29.28421,-13.59149,-35.31091,-11.17645,-35.28683,-11.25311,-35.26239,-11.3299,-59.13733,-27.13458,-59.07843,-27.26324,8.63378,0.39027,4.58519,0.96617,4.58145,0.97473]},{"time":0.8,"vertices":[35.81818,-3.6875,39.17149,-3.98846,2.36737,-0.86804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.52529,-22.64508,24.78587,-26.6861,28.62631,-22.51886,67.57469,-48.15497,59.54384,-57.79132,83.82215,-53.5672,74.78942,-65.59021,-43.89932,46.33734,-18.26237,7.9278,0,0,0,0,0,0,11.983,-6.11731,-13.72738,3.23785,-13.0817,5.27094,25.99117,-19.65289,22.73274,-23.34479,0,0,0,0,0,0,0,0,-0.11163,0.02496,-0.10563,0.04224,27.33977,-2.78223,9.39142,13.24054,0,0,0,0,0,0,0,0,0,0,4.02523,-3.20117,3.49873,-3.76947,2.99234,-0.21301,64.49009,-39.26947,57.83382,-48.54248]},{"time":1.1333}]}}},"drawOrder":[{"offsets":[{"slot":"body","offset":7},{"slot":"r_leg","offset":6},{"slot":"l_hand2","offset":-35},{"slot":"r_finger_d2","offset":-37},{"slot":"r_finger_c2","offset":-38},{"slot":"r_finger_b2","offset":-39},{"slot":"r_finger_a2","offset":-40}]},{"time":1.2333,"offsets":[{"slot":"r_beard2","offset":3}]}]},"hit":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00005"},{"time":0.1667,"name":"eyefire/eyefire_00006"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00009"},{"time":0.2667,"name":"eyefire/eyefire_00010"},{"time":0.3,"name":"eyefire/eyefire_00011"},{"time":0.3333,"name":"eyefire/eyefire_00012"},{"time":0.3667,"name":"eyefire/eyefire_00014"},{"time":0.4,"name":"eyefire/eyefire_00015"},{"time":0.4333,"name":"eyefire/eyefire_00016"},{"time":0.4667,"name":"eyefire/eyefire_00017"},{"time":0.5,"name":"eyefire/eyefire_00019"},{"time":0.5333,"name":"eyefire/eyefire_00020"},{"time":0.5667,"name":"eyefire/eyefire_00021"},{"time":0.6,"name":"eyefire/eyefire_00022"},{"time":0.6333,"name":"eyefire/eyefire_00024"},{"time":0.6667,"name":"eyefire/eyefire_00025"},{"time":0.7,"name":"eyefire/eyefire_00026"},{"time":0.7333,"name":"eyefire/eyefire_00027"},{"time":0.7667,"name":"eyefire/eyefire_00029"},{"time":0.8,"name":"eyefire/eyefire_00030"},{"time":0.8333,"name":"eyefire/eyefire_00031"},{"time":0.8667,"name":"eyefire/eyefire_00032"},{"time":0.9,"name":"eyefire/eyefire_00034"},{"time":0.9333,"name":"eyefire/eyefire_00035"},{"time":0.9667,"name":"eyefire/eyefire_00036"},{"time":1,"name":"eyefire/eyefire_00037"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"r_ik":{"rotate":[{"time":0.0333,"curve":0.305,"c3":0.64,"c4":0.36},{"time":0.1,"angle":25.21,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"curve":"stepped"},{"time":0.7,"curve":0.352,"c2":0.41,"c3":0.689,"c4":0.75},{"time":0.7667,"angle":9.64,"curve":0.369,"c2":0.63,"c3":0.706},{"time":0.8333}],"translate":[{"time":0.0333,"curve":0.324,"c2":0.23,"c3":0.658,"c4":0.56},{"time":0.1,"x":-101.79,"y":48.93,"curve":0.325,"c2":0.27,"c3":0.659,"c4":0.61},{"time":0.1667,"x":-80.39,"curve":"stepped"},{"time":0.7,"x":-80.39,"curve":0.289,"c2":0.17,"c3":0.637,"c4":0.56},{"time":0.7667,"x":1.39,"y":24.46,"curve":0.333,"c2":0.33,"c3":0.68,"c4":0.71},{"time":0.8333}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":12.92,"y":48.34,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":65.28,"y":-16.92,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":74.96,"y":-32.61,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":-2.67,"y":33.81,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":30.14,"y":55.33,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-15.63,"y":47.49,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":-51.28,"y":-15.43,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":9.84,"y":-19.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.5333,"x":46.76,"y":-38.04,"curve":0.34,"c2":0.35,"c3":0.678,"c4":0.7},{"time":0.7,"x":42.59,"y":2.41,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"l_ik":{"rotate":[{"time":0.4667,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.5333,"angle":-13.4,"curve":0.34,"c2":0.35,"c3":0.678,"c4":0.7},{"time":0.7}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-90.87,"curve":"stepped"},{"time":0.4667,"x":-90.87,"curve":0.291,"c2":0.1,"c3":0.631,"c4":0.47},{"time":0.5333,"x":7.14,"y":90.87,"curve":0.308,"c2":0.25,"c3":0.676,"c4":0.7},{"time":0.7}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-23.46,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.1,"angle":15.41,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.1667,"angle":43.89,"curve":0.346,"c2":0.39,"c3":0.68,"c4":0.73},{"time":0.4667,"angle":70.49,"curve":0.346,"c2":0.41,"c3":0.68,"c4":0.75},{"time":0.7,"angle":19.6,"curve":0.354,"c2":0.65,"c3":0.688},{"time":1,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":34.99,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":42.13,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":-8.35,"curve":0.314,"c2":0.27,"c3":0.651,"c4":0.61},{"time":0.3333,"angle":9.48,"curve":0.329,"c2":0.32,"c3":0.681,"c4":0.71},{"time":0.7,"angle":2.12,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"x":-52.34,"y":46.37,"curve":0.324,"c2":0.23,"c3":0.658,"c4":0.56},{"time":0.1,"x":-57.03,"y":72.75,"curve":0.309,"c2":0.19,"c3":0.644,"c4":0.54},{"time":0.3333,"x":-104.82,"y":61.44,"curve":0.311,"c2":0.25,"c3":0.649,"c4":0.6},{"time":0.7,"x":-20.34,"y":18.01,"curve":0.327,"c2":0.31,"c3":0.664,"c4":0.66},{"time":1}]},"l_upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":0.7,"angle":-28,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":-6.45}]},"l_finger_a":{"rotate":[{"angle":-2.5}]},"l_finger_a2":{"rotate":[{"angle":5.32}],"translate":[{"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5}]},"l_finger_b2":{"rotate":[{"angle":16.78}],"translate":[{"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5}]},"l_finger_c2":{"rotate":[{"angle":16.54}],"translate":[{"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_d":{"rotate":[{"angle":-2.5}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":164.73,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1,"angle":56.93,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-2.31,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.4667,"angle":-48.64,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-60.78,"curve":0.369,"c2":0.63,"c3":0.707},{"time":1,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":769.74,"y":-4.16,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.1,"x":-38.06,"y":-43.54,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.1667,"x":-293.89,"y":-78.91,"curve":0.328,"c2":0.32,"c3":0.663,"c4":0.65},{"time":0.4667,"x":-319.95,"y":69.94,"curve":0.337,"c2":0.34,"c3":0.679,"c4":0.7},{"time":0.7,"x":-52.78,"y":-127.22,"curve":0.382,"c2":0.58,"c3":0.732},{"time":1}]},"l_finger_d2":{"rotate":[{"angle":26.01}],"translate":[{"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r_upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":87.31,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":-15.69,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":-58.76,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-108.56,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-38.56,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1,"angle":-6.74}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":25.92,"y":124.89,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"x":-3.54,"y":-53.5,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"x":-26.77,"y":-128.17,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"x":-62.12,"y":-136.89,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":4.04,"y":-103.39,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}]},"r_upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":0.7,"angle":42.78,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":12.65}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":73.73,"y":-9.65,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":49.53,"y":-9.85,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":82.59,"y":-14.08,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":96.88,"y":-28.67,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":54.66,"y":-48.55,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":28.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.3,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":58.28,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":67.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":101.84,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.4,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-19.98,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-43.93,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-57.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-18.62,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":-8.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":10.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":1.48,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-3.19,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-34.21,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-9.49}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":36.4,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":57.75,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":39.01,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":20.82,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":7.12}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.64,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-23.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-55.53,"curve":0.343,"c2":0.37,"c3":0.68,"c4":0.71},{"time":0.4667,"angle":-33.3,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":5.38,"curve":0.368,"c2":0.63,"c3":0.705},{"time":1,"angle":-4.31}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-69.32,"y":62.19,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-21.53,"y":24.11,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":14.64,"y":-70.3,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":-13.03,"y":-34.66,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":36.17,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"angle":39.42,"curve":0.314,"c2":0.24,"c3":0.649,"c4":0.58},{"time":0.1667,"angle":16.9,"curve":0.306,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-24.36,"curve":0.339,"c2":0.35,"c3":0.679,"c4":0.71},{"time":0.7,"angle":14.42,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-25.52,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.95,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1667,"angle":34.72,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":28.88,"curve":0.344,"c2":0.37,"c3":0.678,"c4":0.71},{"time":0.6333,"angle":-29.04,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.7,"angle":-12.45,"curve":0.347,"c2":0.41,"c3":0.681,"c4":0.75},{"time":0.8333,"angle":13.31,"curve":0.356,"c2":0.65,"c3":0.691},{"time":1,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.0333,"angle":36.17,"curve":0.323,"c2":0.17,"c3":0.657,"c4":0.51},{"time":0.1,"angle":39.42,"curve":0.321,"c2":0.23,"c3":0.654,"c4":0.57},{"time":0.1667,"angle":16.9,"curve":0.307,"c2":0.21,"c3":0.644,"c4":0.56},{"time":0.4667,"angle":-24.36,"curve":0.322,"c2":0.29,"c3":0.657,"c4":0.63},{"time":0.7,"angle":14.42,"curve":0.327,"c2":0.31,"c3":0.663,"c4":0.66},{"time":1}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-19.97,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":22.51,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.1667,"angle":40.27,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":34.43,"curve":0.344,"c2":0.37,"c3":0.678,"c4":0.71},{"time":0.6333,"angle":-23.49,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.7,"angle":-6.9,"curve":0.347,"c2":0.41,"c3":0.681,"c4":0.75},{"time":0.8333,"angle":18.86,"curve":0.356,"c2":0.65,"c3":0.691},{"time":1,"angle":3.27}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"angle":30.35,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"angle":1.75,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"angle":4.65,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"angle":-6.59,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-3.61,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":-58.43,"y":-54.32,"curve":0.318,"c2":0.23,"c3":0.652,"c4":0.57},{"time":0.1,"x":-260.66,"y":9.12,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.1667,"x":-230.19,"y":5.77,"curve":0.305,"c2":0.24,"c3":0.652,"c4":0.62},{"time":0.4667,"x":-37.59,"y":-15.4,"curve":0.339,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"x":24.51,"y":-84.79,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":67.62,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"angle":123.9,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"angle":46.02,"curve":0.311,"c2":0.25,"c3":0.649,"c4":0.6},{"time":0.3333,"angle":-8.31,"curve":0.326,"c2":0.31,"c3":0.662,"c4":0.65},{"time":0.4667,"angle":-43.48,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7,"angle":-5.26,"curve":0.382,"c2":0.58,"c3":0.731},{"time":1,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"x":-32.58,"y":323.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"x":-52.71,"y":368.77,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"x":-78.73,"y":205.05,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.68},{"time":0.3333,"x":-204.38,"y":122.23,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.4667,"x":-88.19,"y":158.14,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"x":48.72,"y":-37.23,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95}]},"shadow":{"translate":[{"time":0.0333,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":-132.37,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":-127.28,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":-56,"curve":0.338,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.7}],"scale":[{"curve":0.323,"c3":0.656,"c4":0.34},{"time":0.0333,"y":0.796,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"y":0.844,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"y":1.131,"curve":0.311,"c2":0.25,"c3":0.757},{"time":1}]},"r_upparm3":{"rotate":[{},{"time":0.0333,"angle":-102.88},{"time":0.1,"angle":7.97},{"time":0.1667,"angle":51.87},{"time":0.4667,"angle":88.15},{"time":0.7,"angle":35.32},{"time":1}],"translate":[{},{"time":0.0333,"x":-11.7,"y":10.92},{"time":0.1,"x":-8.78,"y":-0.12},{"time":0.4667,"x":-22.85,"y":-27.98},{"time":0.7,"x":18.84,"y":1.59},{"time":1}]},"r_finger_a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":28.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":16.3,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":58.28,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":67.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":101.84,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-7.4,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-19.98,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-43.93,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-57.16,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-18.62,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":-8.92}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":10.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":1.48,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-3.19,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-34.21,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":-9.49}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"r_finger_d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":36.4,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":57.75,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":39.01,"curve":0.349,"c2":0.4,"c3":0.685,"c4":0.74},{"time":0.7,"angle":20.82,"curve":0.369,"c2":0.63,"c3":0.706},{"time":1,"angle":7.12}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":1.142,"curve":0.316,"c2":0.17,"c3":0.65,"c4":0.51},{"time":0.1,"x":0.709,"curve":0.32,"c2":0.26,"c3":0.654,"c4":0.6},{"time":0.1667,"x":0.692,"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"x":0.527,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]},"l_hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-19.79},{"time":0.1,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-10.97},{"time":0.7},{"time":1,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":-32.84},{"time":0.1},{"time":0.1667,"angle":-12.75},{"time":0.4667,"angle":-10.69},{"time":0.7,"angle":-17.17},{"time":1,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-48.54},{"time":0.1},{"time":0.1667,"angle":10.41},{"time":0.4667,"angle":11.72},{"time":0.7,"angle":42.67},{"time":1,"angle":-1.85}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":-61.9},{"time":0.1667,"curve":"stepped"},{"time":0.7},{"time":1,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333},{"time":0.1,"angle":-75.34},{"time":0.1667,"angle":-21.66},{"time":0.4667},{"time":0.7,"angle":-54.92},{"time":1,"angle":-8.22}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":23.05},{"time":0.1,"angle":38.94},{"time":0.1667,"angle":40.08},{"time":0.4667,"angle":66.43},{"time":0.7,"angle":-37.39},{"time":1,"angle":-8.22}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":-37.07},{"time":0.1,"angle":4.09},{"time":0.1667},{"time":0.4667,"angle":9.33},{"time":0.7,"angle":-23.32},{"time":0.8333,"angle":-14.82},{"time":1,"angle":9.15}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0333,"x":0.729},{"time":0.1,"x":0.864},{"time":0.1667,"x":1.304},{"time":0.4667,"x":1.094},{"time":0.7,"x":0.831},{"time":1}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.0333,"x":10.19,"y":11.92},{"time":0.1,"x":6.58,"y":-9.31},{"time":0.1667,"x":-14.72,"y":-8.62},{"time":0.4667,"x":-8.71,"y":-5.52},{"time":0.7,"x":11.07,"y":25.64},{"time":1,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":33.85},{"time":0.1,"angle":3.29},{"time":0.1667,"angle":-42.38},{"time":0.4667,"angle":-24.67},{"time":0.7,"angle":15.69},{"time":0.8333,"angle":13.56},{"time":1,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":33.85},{"time":0.1,"angle":20.17},{"time":0.1667,"angle":34.82},{"time":0.3,"angle":-41.81},{"time":0.4667,"angle":-60.29},{"time":0.6,"angle":-42.16},{"time":0.7,"angle":-10.93},{"time":0.8333,"angle":16.66},{"time":1,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":-28.82},{"time":0.1},{"time":0.1667,"angle":38.87},{"time":0.4667},{"time":0.7,"angle":-32.16},{"time":1,"angle":7.98}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":27.64},{"time":0.1667,"angle":-9.15},{"time":0.4667,"angle":-16.72},{"time":0.7,"angle":31.14},{"time":1,"angle":-9.62}]},"headmouth":{"rotate":[{},{"time":0.1333,"angle":-27.08},{"time":0.5333,"angle":-7.87},{"time":1}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-30.45},{"time":0.7,"angle":-18.66},{"time":0.8333,"angle":-22.58},{"time":1,"angle":8.77}],"scale":[{"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.45},{"time":0.1,"angle":-16.16},{"time":0.1667,"angle":-31.14},{"time":0.4667,"angle":-21.04},{"time":0.7,"angle":17},{"time":1,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":26.3},{"time":0.1,"angle":30.94},{"time":0.1667,"angle":15.76},{"time":0.2667,"angle":-40.58},{"time":0.4667,"angle":-37.74},{"time":0.7,"angle":-32.12},{"time":0.8333,"angle":16.53},{"time":1,"angle":-10}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.1667},{"time":0.4667,"angle":-30.45},{"time":0.7,"angle":-18.66},{"time":0.8333,"angle":-22.58},{"time":1,"angle":-11.82}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":19.45},{"time":0.1,"angle":-16.16},{"time":0.1667,"angle":-31.14},{"time":0.4667,"angle":-21.04},{"time":0.7,"angle":17},{"time":1,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":26.3},{"time":0.1,"angle":30.94},{"time":0.1667,"angle":15.76},{"time":0.2667,"angle":-40.58},{"time":0.4667,"angle":-37.74},{"time":0.7,"angle":-32.12},{"time":0.8333,"angle":16.53},{"time":1,"angle":15.47}]},"hair_t":{"rotate":[{"time":0.1667},{"time":0.4667,"angle":-7.53},{"time":0.7}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":8.83},{"time":0.1,"angle":10.81},{"time":0.1667,"angle":12.21},{"time":0.4667,"angle":-9.5},{"time":0.7,"angle":-15.08},{"time":1,"angle":0.61}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333},{"time":0.1,"angle":83.56},{"time":0.1667,"angle":96.33},{"time":0.4667,"angle":96.83},{"time":0.7,"angle":51},{"time":1,"angle":26.63}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":34.16},{"time":0.1,"angle":10.81},{"time":0.1667,"angle":19.55},{"time":0.4667,"angle":-19.87},{"time":0.7,"angle":-31.29},{"time":1,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.0333,"angle":34.16},{"time":0.1,"angle":14.59},{"time":0.1667,"angle":12.21},{"time":0.4667,"angle":19.46},{"time":0.7,"angle":-20.89},{"time":1,"angle":5.88}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":23.39}],"translate":[{"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.0333,"angle":55.16},{"time":0.1,"angle":43.7},{"time":0.1667,"angle":13.63},{"time":0.4667,"angle":8.52},{"time":0.7,"angle":-24.68},{"time":1,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.0333,"curve":"stepped"},{"time":0.7},{"time":1,"angle":63.33}]},"s":{"scale":[{"x":0,"y":0}]},"l_armour":{"rotate":[{"angle":1.84}]},"r_arm":{"rotate":[{"angle":-7.98}]},"hair_t10":{"rotate":[{"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54}]},"headbeard_b":{"rotate":[{"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67}]},"headbeard_b3":{"rotate":[{"angle":8.76}]},"r_ear_s":{"rotate":[{"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0333,"angle":20.83,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1,"angle":-23.91,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-56.65,"curve":0.343,"c2":0.36,"c3":0.679,"c4":0.71},{"time":0.4667,"angle":-32,"curve":0.342,"c2":0.37,"c3":0.676,"c4":0.7},{"time":0.6,"angle":-22.68,"curve":0.342,"c2":0.37,"c3":0.675,"c4":0.71},{"time":0.7,"angle":-29.85,"curve":0.34,"c2":0.37,"c3":0.673,"c4":0.7},{"time":0.7667,"angle":8.82,"curve":0.345,"c2":0.41,"c3":0.679,"c4":0.75},{"time":0.8667,"angle":-6.22,"curve":0.352,"c2":0.65,"c3":0.687},{"time":1,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"headbeard_f":{"rotate":[{"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99}]},"skill":{"scale":[{"x":0,"y":0}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.1667,"offset":92,"vertices":[7.26987,15.03769,10.96051,12.60177,0,0,0,0,30.51038,37.76599,39.35309,28.43263,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13.85974,61.16544,29.42847,55.38221,0,0,0,0,0,0,0,0,8.91608,3.06887,8.6225,2.96766,0,0,24.79684,90.10992,47.57898,80.44111,0,0,0,0,0,0,0,0,-0.4502,2.23753,0.15289,2.27719],"curve":0.3,"c2":0.22,"c3":0.648,"c4":0.6},{"time":0.4667,"vertices":[50.96356,-63.95969,125.297,9.36234,99.62122,-76.56879,137.16132,12.42788,110.50739,-82.19516,96.17535,1.83795,72.90155,-62.75839,33.88568,20.26118,38.76379,-7.49484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.43463,-34.76004,37.47375,-29.39993,51.36212,-34.07013,59.93573,-63.58115,0,0,0,0,0,0,95.10123,-17.68539,59.08325,-76.59195,0,0,0,0,30.65289,25.9108,40.12335,-1.12958,0,0,0,0,4.94843,-2.55756,0,0,0,0,0,0,0,0,0,0,0,0,37.83487,23.48198,43.85706,-7.72815,0,0,0,0,0,0,0,0,8.55737,2.1813,7.87781,2.00778,50.45117,-64.9491,84.02487,43.87574,91.87836,-23.32877,0,0,0,0,0,0,0,0,19.07703,10.20507,21.02405,-5.11511,0,0,0,0,0,0,0,0,100.59836,-10.82629,67.75372,-75.1456],"curve":0.372,"c2":0.48,"c3":0.752},{"time":1}]}}}},"idle":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":10.23,"y":32.42,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-14.9,"y":-20.45,"curve":0.25,"c3":0.75},{"time":1.8667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":-11.96,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-40.32,"y":-0.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-7.85,"y":2.92}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-13.07,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":-32.01,"y":36.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.9,"y":0.9,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_upparm2":{"rotate":[{"angle":-6.45}]},"l_armour":{"rotate":[{"angle":1.84}]},"l_finger_a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":17.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-7.5,"y":19.61,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.64,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.59,"y":20.84,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.16,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-5.23,"y":20.34,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l_finger_d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":59.08,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.33,"y":20.87,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"r_upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":2.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":36.1,"y":-45.18,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":12.97}]},"r_arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.2}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.63,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.31}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":12.82,"y":6.27,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_ear":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-3.09,"y":-14.86,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.842,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":14.28,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-16.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":12.07,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":18.73,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":3.59,"y":24.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.76,"curve":0.25,"c3":0.75},{"time":1.4,"angle":24.3,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.27}]},"hair_t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.8667}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-2.51,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-11.93,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":9.92,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":-2.26,"y":14.51}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-32.32,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":10.5,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":9.54}]},"head2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":4.6,"y":-21.12,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.7,"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.76}]},"r_ear_s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":8.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-5.67}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":12.16,"y":-17.99,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-10.98,"curve":0.25,"c3":0.75},{"time":1.4,"angle":28.93,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.4,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.4,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":5.7,"y":-8.17}]},"r_ear_ringa":{"rotate":[{"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.4667,"angle":-29.16,"curve":0.314,"c2":0.27,"c3":0.686,"c4":0.73},{"time":1.4,"angle":16.48,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.8667}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.19,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.77}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":9.4,"y":-12.46,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-10}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":15.47,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-22.67,"y":24.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.819,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.4,"angle":15.47,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":15.47}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":40.99}]},"l_leg":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-2.29,"y":50.63,"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.75,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":9.15}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":5.8,"y":-22.14,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.9333,"y":16.45,"curve":0.25,"c3":0.75},{"time":1.8667,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":10.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10.83,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":27.49,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":27.96,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-12.01,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.98}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-30.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":11.31,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.62}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.1667,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-1.85}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6333,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-8.22}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.95}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-8.22}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-45.72,"y":-64.16,"curve":0.25,"c3":0.75},{"time":1.8667}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":16.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":5.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":-98.01,"y":-10.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":0.9,"y":0.9,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.95,"y":0.95}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-3.18,"curve":0.25,"c3":0.75},{"time":1.4,"angle":14.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":59.09,"y":-135.37,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":1.1,"y":1.1,"curve":0.25,"c3":0.75},{"time":1.8667}]},"shadow":{"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.97,"y":0.895,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_finger_a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r_finger_b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r_finger_c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r_finger_d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"l_hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.9333,"offset":36,"vertices":[-2.41049,14.08145,-10.63983,9.53357,11.41489,0.51631,8.62204,7.49872,20.82419,30.77104,-2.80862,37.0488,53.80902,21.06067,29.06711,49.94165,43.71988,54.54894,0.35004,69.90634,-0.88062,19.47218,-12.7916,14.70761,5.71973,30.41342,-14.42053,27.38129,2.25964,28.48312,-15.93155,23.71869,-5.14142,35.24371,-25.93134,24.41534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.39771,-31.9695,3.10556,-38.34393,-32.63104,-64.54259,-2.67554,-49.07106,28.40125,-40.10614,15.19,-39.32011,36.33786,-21.36356,-0.30249,-29.38377,18.0249,-23.20792,0.36182,-7.9995,5.25519,-6.04211,8.23709,-14.43842,-6.16132,-80.23037,45.0358,-66.68332,-11.18542,-41.29755,16.90335,-39.30496,-2.67551,-49.07107,0,0,-4.45917,-81.78522,47.33566,-66.84366,-8.74689,-59.13564,29.90024,-51.76413,-2.25064,10.54112,-8.31439,6.85941,14.49524,-24.1174,30.06024,-49.46475,0,0,0,0,0,0,-4.30402,-49.14474,27.1712,-41.17593,-2.44653,-18.05902,9.30701,-15.6683,2.06238,-45.59348,29.95184,-34.43707,0,0,0,0,-20.05573,10.5144,-22.24652,-4.22729,0,0,0,0,0,0,0,0,3.87411,11.61391,-4.18277,11.50629],"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt_f":{"skirt_f":[{"curve":0.25,"c3":0.75},{"time":0.9333,"vertices":[-1.8898,-25.58164,0.47333,-28.95829,-1.18393,-41.18966,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.78281,5.60857,0,0,0,0,11.63187,18.17604,12.89143,17.3054,0,0,0,0,0,0,0,0,0,0,0,0,-0.37607,-29.25813,5.20969,-17.44646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.98029,-21.54911],"curve":0.25,"c3":0.75},{"time":1.8667}]}}},"drawOrder":[{"offsets":[{"slot":"r_beard2","offset":3}]}]},"skill":{"slots":{"body":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.4667,"color":"ffffff00","curve":"stepped"},{"time":1.2333,"color":"ffffff00"},{"time":1.2667,"color":"ffffffff"}]},"body_back":{"color":[{"time":0.4333,"color":"ffffff00"},{"time":0.4667,"color":"ffffffff","curve":"stepped"},{"time":1.2333,"color":"ffffffff"},{"time":1.2667,"color":"ffffff00"}]},"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_armour_u":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.4667,"color":"ffffff00","curve":"stepped"},{"time":1.2333,"color":"ffffff00"},{"time":1.2667,"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00005"},{"time":0.1667,"name":"eyefire/eyefire_00006"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00009"},{"time":0.2667,"name":"eyefire/eyefire_00010"},{"time":0.3,"name":"eyefire/eyefire_00011"},{"time":0.3333,"name":"eyefire/eyefire_00012"},{"time":0.3667,"name":"eyefire/eyefire_00014"},{"time":0.4,"name":"eyefire/eyefire_00015"},{"time":0.4333,"name":"eyefire/eyefire_00016"},{"time":0.4667,"name":"eyefire/eyefire_00017"},{"time":0.5,"name":"eyefire/eyefire_00019"},{"time":0.5333,"name":"eyefire/eyefire_00020"},{"time":0.5667,"name":"eyefire/eyefire_00021"},{"time":0.6,"name":"eyefire/eyefire_00022"},{"time":0.6333,"name":"eyefire/eyefire_00024"},{"time":0.6667,"name":"eyefire/eyefire_00025"},{"time":0.7,"name":"eyefire/eyefire_00026"},{"time":0.7333,"name":"eyefire/eyefire_00027"},{"time":0.7667,"name":"eyefire/eyefire_00029"},{"time":0.8,"name":"eyefire/eyefire_00030"},{"time":0.8333,"name":"eyefire/eyefire_00031"},{"time":0.8667,"name":"eyefire/eyefire_00032"},{"time":0.9,"name":"eyefire/eyefire_00033"},{"time":0.9333,"name":"eyefire/eyefire_00035"},{"time":0.9667,"name":"eyefire/eyefire_00036"},{"time":1,"name":"eyefire/eyefire_00010"},{"time":1.0333,"name":"eyefire/eyefire_00001"},{"time":1.0667,"name":"eyefire/eyefire_00003"},{"time":1.1,"name":"eyefire/eyefire_00004"},{"time":1.1333,"name":"eyefire/eyefire_00005"},{"time":1.1667,"name":"eyefire/eyefire_00006"},{"time":1.2,"name":"eyefire/eyefire_00008"},{"time":1.2333,"name":"eyefire/eyefire_00009"},{"time":1.2667,"name":"eyefire/eyefire_00010"},{"time":1.3,"name":"eyefire/eyefire_00011"},{"time":1.3333,"name":"eyefire/eyefire_00013"},{"time":1.3667,"name":"eyefire/eyefire_00014"},{"time":1.4,"name":"eyefire/eyefire_00015"},{"time":1.4333,"name":"eyefire/eyefire_00016"},{"time":1.4667,"name":"eyefire/eyefire_00018"},{"time":1.5,"name":"eyefire/eyefire_00019"},{"time":1.5333,"name":"eyefire/eyefire_00020"},{"time":1.5667,"name":"eyefire/eyefire_00021"},{"time":1.6,"name":"eyefire/eyefire_00022"},{"time":1.6333,"name":"eyefire/eyefire_00024"},{"time":1.6667,"name":"eyefire/eyefire_00025"},{"time":1.7,"name":"eyefire/eyefire_00026"},{"time":1.7333,"name":"eyefire/eyefire_00027"},{"time":1.7667,"name":"eyefire/eyefire_00029"},{"time":1.8,"name":"eyefire/eyefire_00030"},{"time":1.8333,"name":"eyefire/eyefire_00031"},{"time":1.8667,"name":"eyefire/eyefire_00032"},{"time":1.9,"name":"eyefire/eyefire_00034"},{"time":1.9333,"name":"eyefire/eyefire_00035"},{"time":1.9667,"name":"eyefire/eyefire_00036"},{"time":2,"name":"eyefire/eyefire_00010"},{"time":2.0333,"name":"eyefire/eyefire_00002"},{"time":2.0667,"name":"eyefire/eyefire_00003"},{"time":2.1,"name":"eyefire/eyefire_00004"},{"time":2.1333,"name":"eyefire/eyefire_00005"},{"time":2.1667,"name":"eyefire/eyefire_00006"},{"time":2.2,"name":"eyefire/eyefire_00008"},{"time":2.2333,"name":"eyefire/eyefire_00009"},{"time":2.2667,"name":"eyefire/eyefire_00010"},{"time":2.3,"name":"eyefire/eyefire_00011"},{"time":2.3333,"name":"eyefire/eyefire_00013"},{"time":2.3667,"name":"eyefire/eyefire_00014"},{"time":2.4,"name":"eyefire/eyefire_00015"},{"time":2.4333,"name":"eyefire/eyefire_00016"},{"time":2.4667,"name":"eyefire/eyefire_00018"},{"time":2.5,"name":"eyefire/eyefire_00019"},{"time":2.5333,"name":"eyefire/eyefire_00020"},{"time":2.5667,"name":"eyefire/eyefire_00021"},{"time":2.6,"name":"eyefire/eyefire_00023"},{"time":2.6333,"name":"eyefire/eyefire_00024"},{"time":2.6667,"name":"eyefire/eyefire_00025"},{"time":2.7,"name":"eyefire/eyefire_00026"},{"time":2.7333,"name":"eyefire/eyefire_00027"},{"time":2.7667,"name":"eyefire/eyefire_00029"},{"time":2.8,"name":"eyefire/eyefire_00030"},{"time":2.8333,"name":"eyefire/eyefire_00031"},{"time":2.8667,"name":"eyefire/eyefire_00032"},{"time":2.9,"name":"eyefire/eyefire_00034"},{"time":2.9333,"name":"eyefire/eyefire_00035"},{"time":2.9667,"name":"eyefire/eyefire_00036"},{"time":3,"name":"eyefire/eyefire_00037"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}],"attachment":[{"name":null},{"time":0.5333,"name":"skill/5"},{"time":0.7333,"name":"skill/6"},{"time":0.7667,"name":"skill/7"},{"time":0.8667,"name":"skill/8"},{"time":0.9333,"name":"skill/9"},{"time":1.0333,"name":"skill/10"},{"time":1.1333,"name":"skill/11"},{"time":1.2,"name":null},{"time":1.3667,"name":"skill/12"},{"time":1.4333,"name":"skill/13"},{"time":1.5,"name":"skill/14"},{"time":1.5667,"name":"skill/15"},{"time":1.6333,"name":"skill/16"},{"time":1.7,"name":"skill/17"},{"time":1.7667,"name":"skill/18"},{"time":1.8333,"name":"skill/19"},{"time":1.9,"name":"skill/20"},{"time":1.9667,"name":null}]}},"bones":{"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.03},{"time":0.2667,"angle":8.71},{"time":0.3667,"angle":0.42},{"time":0.4333,"angle":-4.13},{"time":0.4667,"angle":-1.03},{"time":0.8,"angle":5.39},{"time":1.1667,"angle":12.46},{"time":1.2333,"angle":4.33},{"time":1.2667,"angle":0.27},{"time":1.4,"angle":-4.27},{"time":1.9667,"angle":-10.87},{"time":2.5,"angle":-23.32},{"time":2.6667,"angle":-11.3},{"time":2.7333,"angle":0.46},{"time":2.8667,"angle":5.04},{"time":3}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-61.4,"y":-89.91},{"time":0.2667,"x":-143.8,"y":-26.64},{"time":0.3667,"x":-224.94,"y":77},{"time":0.4333,"x":22.87,"y":-15.17},{"time":0.4667,"x":109.65,"y":-48.74},{"time":1.1667,"x":6.62,"y":-44.84},{"time":1.2667,"x":111.06,"y":13.19},{"time":1.4,"x":24.54,"y":54.39},{"time":1.9667,"x":17.67,"y":-6.04},{"time":2.5,"x":41.02,"y":-19.77},{"time":2.6667,"x":22.37,"y":-10.79},{"time":2.7333,"x":14.92,"y":-7.19},{"time":2.8667}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":6.03},{"time":0.2667,"angle":44.43},{"time":0.3667,"angle":-77.68},{"time":0.4333,"angle":-3.17},{"time":0.4667,"angle":95.02},{"time":0.5333,"angle":117.6},{"time":1.1667,"angle":90.81},{"time":1.2667,"angle":45.14},{"time":1.3333,"angle":16.95},{"time":1.9667,"angle":7.45},{"time":2.5,"angle":-13.6},{"time":2.6667,"angle":16.35},{"time":2.8667},{"time":3,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":120.37,"y":40.89},{"time":0.2667,"x":-226.83,"y":262.85},{"time":0.3667,"x":-613.37,"y":525.86},{"time":0.4333,"x":228.17,"y":161.45},{"time":0.4667,"x":1219.84,"y":-322.34},{"time":0.5333,"x":1236.11,"y":-299.06},{"time":0.6,"x":1197.44,"y":-264.17},{"time":0.6667,"x":1191.19,"y":-233.27},{"time":0.7,"x":1125.53,"y":-226.48},{"time":0.7333,"x":1085.31,"y":-185.2},{"time":0.7667,"x":1089.89,"y":-146.31},{"time":0.8,"x":1056.94,"y":-182.19},{"time":0.8333,"x":1054.45,"y":-142.4},{"time":0.8667,"x":1047.28,"y":-177.92},{"time":0.9333,"x":1031.34,"y":-121.25},{"time":1,"x":982.45,"y":-147.96},{"time":1.0667,"x":953.74,"y":-100.45},{"time":1.1667,"x":910.67,"y":-101.25},{"time":1.2667,"x":70.18,"y":-60.67},{"time":1.3333,"x":60.37,"y":121.19},{"time":1.9667,"x":-48.93,"y":26.13},{"time":2.5,"x":33.5,"y":-81.54},{"time":2.6667,"x":-76.89,"y":-16.48},{"time":2.7333,"x":-171.19,"y":89.85},{"time":2.8667,"x":63.81,"y":-25.52},{"time":3}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.5333,"x":0.751,"y":0.751,"curve":"stepped"},{"time":2.5,"x":0.751,"y":0.751},{"time":2.8667}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":21.11},{"time":0.2667,"angle":34.4},{"time":0.3667,"angle":50.74},{"time":0.4333,"angle":-50.06},{"time":0.4667,"angle":-50.83},{"time":1.1333,"angle":-95.12},{"time":1.1667,"angle":-100.51},{"time":1.2333,"angle":-38.36},{"time":1.2667,"angle":-23.14},{"time":1.3,"angle":1.54},{"time":1.3333,"angle":72.8},{"time":1.4,"angle":103.52},{"time":1.5333,"angle":111.69},{"time":1.9667,"angle":154.79},{"time":2.5,"angle":176.43},{"time":2.6667,"angle":73.58},{"time":2.7,"angle":-19.93},{"time":2.7333,"angle":-29.83},{"time":2.8667,"angle":-13.63},{"time":3,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"x":-31.25,"y":-37.5},{"time":0.2667,"x":-60.05,"y":105.72},{"time":0.3667,"x":-131.25,"y":225},{"time":0.4333,"x":-100.52,"y":153.09},{"time":0.4667,"x":-535.02,"y":442.88},{"time":1.1333,"x":-670.18,"y":422.97},{"time":1.1667,"x":-659.56,"y":662},{"time":1.2333,"x":-213.4,"y":332.2},{"time":1.2667,"x":-105.03,"y":260.32},{"time":1.3,"x":-38.13,"y":244.9},{"time":1.3333,"x":371.64,"y":122.17},{"time":1.4,"x":407.25,"y":278.83},{"time":1.5333,"x":417.36,"y":402.07},{"time":1.9667,"x":434.51,"y":566.11},{"time":2.5,"x":290.33,"y":243.81},{"time":2.6667,"x":200.06,"y":22.13},{"time":2.7,"x":76.96,"y":25.59},{"time":2.7333,"x":-26.14,"y":15.72},{"time":2.8667,"x":-76.46,"y":5.13},{"time":3,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.0667,"x":0.96,"y":0.96,"curve":0.36,"c2":0.43,"c3":0.709,"c4":0.82},{"time":0.3333,"x":0.995,"y":0.78,"curve":0.342,"c2":0.39,"c3":0.676,"c4":0.73},{"time":0.3667,"x":0.997,"y":0.611,"curve":0.355,"c2":0.65,"c3":0.689},{"time":0.4333},{"time":0.4667,"y":-1,"curve":"stepped"},{"time":1.5333,"y":-1},{"time":1.9667,"x":1.19,"y":-1.19},{"time":2.5,"x":1.206,"y":-0.681},{"time":2.6667,"x":0.711,"y":-0.766},{"time":2.7},{"time":3,"x":0.95,"y":0.95}]},"r_upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-24.35},{"time":0.2667,"angle":-37.26},{"time":0.3667,"angle":-37.23},{"time":0.4333,"angle":-62.7},{"time":0.4667,"angle":95.46},{"time":0.5333,"angle":107.56},{"time":1.1667,"angle":99.22},{"time":1.2667,"angle":-34.17},{"time":1.9667,"angle":-43.69},{"time":2.5,"angle":-60.1},{"time":2.6667,"angle":-70.15},{"time":2.7333,"angle":-37.86},{"time":2.8667,"angle":-5.8},{"time":3,"angle":-6.74}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":-7.31,"y":-20.37},{"time":0.2667,"x":6.31,"y":56.99},{"time":0.3667,"x":24.31,"y":8.76},{"time":0.4333,"x":-72.1,"y":-142.92},{"time":0.4667,"x":68.98,"y":-167.34},{"time":0.5333,"x":33.11,"y":-180.49},{"time":0.7,"x":79.98,"y":-186.75},{"time":1.1667,"x":24.31,"y":8.2},{"time":1.2667,"x":-0.19,"y":-140.11},{"time":1.9667,"x":-26.37,"y":-161.8,"curve":"stepped"},{"time":2.5,"x":-26.37,"y":-161.8},{"time":2.8667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"angle":-12.19},{"time":0.2667,"angle":6.53},{"time":0.3667,"angle":24.69},{"time":0.4333,"angle":54.22},{"time":0.4667,"angle":0.87},{"time":1.1667,"angle":-26.44},{"time":1.2667,"angle":-13.84},{"time":1.4,"angle":14.64},{"time":1.9667,"angle":43.3},{"time":2.5,"angle":56.68},{"time":2.6667,"angle":39.49},{"time":2.7333,"angle":16.66},{"time":2.8667,"angle":-5.11},{"time":3,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.0667,"x":14.34,"y":-20.85},{"time":0.2667,"x":-9.76,"y":36.53},{"time":0.3667,"x":-0.26,"y":-3.78},{"time":0.4333,"x":-0.25,"y":-3.66},{"time":0.4667,"x":-27.41,"y":-59.88},{"time":1.1667,"x":1.56,"y":6.75},{"time":1.2667,"x":-25.1,"y":-4.85},{"time":1.4,"x":13.01,"y":0.94},{"time":1.9667,"x":32.32,"y":15.52},{"time":2.5,"x":-40.3,"y":2.78},{"time":2.6667,"x":0.88,"y":0.43},{"time":2.7333,"x":8.07,"y":-13.87},{"time":2.8667},{"time":3,"x":-7.85,"y":2.92}]},"r_upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":2.5,"angle":-1.68},{"time":2.8667},{"time":3,"angle":12.65}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.48,"y":-51.78},{"time":0.2667,"x":-51.18,"y":55.67},{"time":0.3667,"x":19.29,"y":-28.02},{"time":0.4333,"x":26.15,"y":-98.44},{"time":0.4667,"x":69.93,"y":-24.3},{"time":0.5333,"x":4.79,"y":-48.18},{"time":1.1667,"x":46.4,"y":-127.16},{"time":1.2667,"x":22.49,"y":-35.79},{"time":1.9667,"x":-23.7,"y":-52.16,"curve":"stepped"},{"time":2.5,"x":-23.7,"y":-52.16},{"time":2.8667}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":17.16},{"time":0.2667,"angle":-3.01},{"time":0.3667,"angle":-32.36},{"time":0.4333,"angle":-50.81},{"time":0.4667,"angle":8.69},{"time":1.1667,"angle":19.17},{"time":1.2667,"angle":28.98},{"time":1.4,"angle":-1.83},{"time":1.9667,"angle":-17.27},{"time":2.5,"angle":-37.93},{"time":2.6667,"angle":-16.09},{"time":2.7333,"angle":-10.97},{"time":2.8667,"angle":3.9},{"time":3,"angle":-4.31}],"translate":[{"time":0.4333,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":35.31,"y":17.77,"curve":0.305,"c2":0.24,"c3":0.65,"c4":0.61},{"time":1.1667,"x":-36.58,"y":80.24,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1.2667,"x":-42.37,"y":74.66},{"time":1.4}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":12.74},{"time":0.2667,"angle":26.02},{"time":0.3667,"angle":-12.97},{"time":0.4333,"angle":-28.46},{"time":0.4667,"angle":-84.46},{"time":1.1333,"angle":-53.97},{"time":1.1667,"angle":-16.7},{"time":1.2333,"angle":23.44},{"time":1.2667,"angle":2.88},{"time":1.3,"angle":44.72},{"time":1.3333,"angle":58.53},{"time":1.9667,"angle":36.88},{"time":2.5,"angle":18.71},{"time":2.6667,"angle":23.41},{"time":2.7333,"angle":14.65},{"time":2.8667,"angle":9.4},{"time":3}],"translate":[{"time":0.0667},{"time":0.2667,"x":-0.07,"y":60.35},{"time":0.3667,"x":-43.08,"y":70.98},{"time":0.4333,"x":50.21,"y":235.41},{"time":0.4667,"x":-20.77,"y":339.32},{"time":1.1333,"x":-48.52,"y":286.89},{"time":1.1667,"x":-119.99,"y":423.7},{"time":1.2333,"x":-82.01,"y":66.55},{"time":1.2667,"x":-103.21,"y":60.51},{"time":1.3,"x":-134.41,"y":86.04},{"time":1.3333,"x":-124.32,"y":75.41},{"time":1.9667,"x":-132.91,"y":25.84},{"time":2.5,"x":-100.45,"y":13.55},{"time":2.6667,"x":-93.32,"y":26.52},{"time":2.7333,"x":-67.2,"y":-4.84},{"time":2.8667,"x":-8.95,"y":-18},{"time":3}]},"l_ik":{"rotate":[{"time":2.5},{"time":2.7333,"angle":-17.05},{"time":2.8667}],"translate":[{"time":0.2667},{"time":0.3667,"x":-201.34},{"time":0.4333,"x":131.25,"y":34.23},{"time":0.4667,"x":221.88,"curve":"stepped"},{"time":2.5,"x":221.88},{"time":2.6667,"x":121.02,"y":41.2},{"time":2.7333,"x":18.88,"y":37.08},{"time":2.8667}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":8.22,"y":13.29},{"time":0.2667,"x":-90.32,"y":-99.12},{"time":0.3667,"x":-88.9,"y":34.14},{"time":0.4333,"x":-66.3,"y":11.64},{"time":0.4667,"x":-9.53,"y":-7.72},{"time":1.1667,"x":-106.48,"y":14.13},{"time":1.2667,"x":-66.76,"y":-21.97},{"time":1.4,"x":-105.14,"y":-65.01},{"time":1.9667,"x":-28.56,"y":-53.45},{"time":2.5,"x":-4.01,"y":-49.13},{"time":2.8667}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":53.57,"y":0.46},{"time":0.2667,"x":42.73,"y":-27.34},{"time":0.3667,"x":11.36,"y":-74.91},{"time":0.4333,"x":-32.64,"y":14.87},{"time":0.4667,"x":-1.63,"y":17.72},{"time":1.1667,"x":36.5,"y":52.17},{"time":1.2667,"x":-61.69,"y":-29.08},{"time":1.4,"x":-63.95,"y":-56.02},{"time":1.9667,"x":-69.01,"y":-36.85},{"time":2.5}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":31.41},{"time":0.2667,"angle":26.63},{"time":0.3667,"angle":25.07},{"time":0.5333,"angle":59.28},{"time":0.7333,"angle":67.91},{"time":1.1667,"angle":16.34},{"time":1.2667,"angle":4.28},{"time":1.3333,"angle":33.29},{"time":1.9667,"angle":39.84},{"time":2.5,"angle":64.76},{"time":2.6667,"angle":35.33},{"time":2.8667},{"time":3,"angle":14.41}],"translate":[{"time":0.3667,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":0.5333,"x":62.16,"y":-22.18,"curve":0.308,"c2":0.25,"c3":0.654,"c4":0.63},{"time":1.2667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.751},{"time":1.1667,"x":1.552},{"time":1.9667,"x":1.167},{"time":2.5,"x":0.835},{"time":2.6667,"x":0.653},{"time":2.7333,"x":0.506},{"time":2.8,"x":1.232},{"time":2.8667}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-14.7},{"time":0.2667},{"time":0.3667,"angle":-23.72},{"time":0.4667,"angle":-54.57},{"time":0.5333,"angle":-65.12},{"time":1.2667,"angle":8.43},{"time":1.3333,"angle":-55.31},{"time":1.9667,"angle":-36.86},{"time":2.5,"angle":-9.95},{"time":2.6667,"angle":-5.43},{"time":2.8,"angle":-23.47},{"time":3,"angle":-8.92}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.1},{"time":0.4667,"x":52.41,"y":34.74},{"time":1.2667,"x":24.08,"y":35.18},{"time":2.5,"x":-43.03,"y":20.1},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-4.33},{"time":0.2667},{"time":0.3667,"angle":-21.35},{"time":0.4667,"angle":-56.6},{"time":0.5333,"angle":-67.46},{"time":1.2667,"angle":21.7},{"time":1.3333,"angle":-53.94},{"time":1.9667,"angle":-11.99},{"time":2.5,"angle":-5.02},{"time":2.6667,"angle":-2.74},{"time":2.8,"angle":-18.4},{"time":3,"angle":-9.49}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11},{"time":0.4667,"x":71.35,"y":64.02},{"time":1.2667,"x":24.08,"y":35.18},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":18.15},{"time":0.2667,"angle":1.92},{"time":0.3667},{"time":0.5333,"angle":-53},{"time":1.2667,"angle":46.29},{"time":1.3333,"angle":-17.24},{"time":1.9667,"angle":20.97},{"time":2.5,"angle":20.38},{"time":2.6667,"angle":11.12},{"time":2.8667},{"time":3,"angle":7.12}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11},{"time":0.4667,"x":69.56,"y":88.56},{"time":1.2667,"x":24.08,"y":35.18},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"l_upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":2.5,"angle":56.15},{"time":2.8667},{"time":3,"angle":-6.45}]},"l_finger_a":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":-7.83,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l_finger_a2":{"rotate":[{"angle":5.32,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-19.59,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":38.22,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":40.11,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-2.9,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-29.33,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":46.48,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":66.45,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":40.05,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":68.88,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":24.23,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l_finger_b2":{"rotate":[{"angle":16.78,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-8.55,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":48.44,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":49.31,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":5.9,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-20.73,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":52.54,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":71.04,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":43.48,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":71.65,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":25.24,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l_finger_c2":{"rotate":[{"angle":16.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-8.78,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":48.23,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":49.11,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":5.71,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-20.92,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":52.41,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":70.95,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":43.4,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":71.6,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":25.22,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"l_finger_d":{"rotate":[{"angle":-2.5,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":0.4333,"angle":-1.83,"curve":0.345,"c2":0.39,"c3":0.68,"c4":0.73},{"time":1.1667,"angle":13.29,"curve":0.338,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.4,"angle":34.54,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":-0.51,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.76},{"time":1.9667,"angle":-0.17,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":-32.2},{"time":2.8667},{"time":3,"angle":-2.5}]},"l_finger_d2":{"rotate":[{"angle":26.01,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":0.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":56.67,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":56.71,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":12.98,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-13.82,"curve":0.338,"c2":0.35,"c3":0.673,"c4":0.69},{"time":0.9,"angle":57.4,"curve":0.338,"c2":0.35,"c3":0.672,"c4":0.69},{"time":1.1667,"angle":74.74,"curve":0.339,"c2":0.35,"c3":0.673,"c4":0.69},{"time":1.4,"angle":46.23,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":73.89,"curve":0.349,"c2":0.41,"c3":0.683,"c4":0.75},{"time":1.9667,"angle":26.05,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":-30.35},{"time":2.8667},{"time":3,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.925,"y":0.925}]},"r_ear":{"rotate":[{"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":11.14,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":2.98,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":-13.4,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":14.28,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":-7.62,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":16.06,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"curve":"stepped"},{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-1.35,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":-16.1,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"angle":17.08},{"time":2.6667,"angle":6.65},{"time":2.7333}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-42.59,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":-1.96,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":34.44,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":36.05,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":12.19,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":-17.37,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.9667,"angle":-39.92,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.1667,"angle":-10.76,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":3.18,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":13.12,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":38.7,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-0.2,"curve":0.343,"c2":0.4,"c3":0.676,"c4":0.74},{"time":2.1667,"angle":-36.33,"curve":0.352,"c2":0.65,"c3":0.687},{"time":2.5,"angle":0.57},{"time":2.6667,"angle":19.78},{"time":2.7333},{"time":2.8667,"angle":-9.43},{"time":3,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.329,"c3":0.662,"c4":0.34},{"time":0.0667,"angle":11.14,"curve":0.321,"c2":0.14,"c3":0.655,"c4":0.48},{"time":0.2667,"angle":2.98,"curve":0.328,"c2":0.28,"c3":0.662,"c4":0.62},{"time":0.3667,"angle":-13.4,"curve":0.33,"c2":0.31,"c3":0.663,"c4":0.64},{"time":0.4333,"curve":0.332,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.4667,"angle":14.28,"curve":0.319,"c2":0.26,"c3":0.653,"c4":0.59},{"time":0.8,"angle":-7.62,"curve":0.322,"c2":0.28,"c3":0.656,"c4":0.62},{"time":1.1667,"angle":16.06,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":1.2333,"curve":"stepped"},{"time":1.2667,"curve":0.33,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.4,"angle":-1.35,"curve":0.324,"c2":0.3,"c3":0.659,"c4":0.64},{"time":1.9667,"angle":-16.1,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":2.5,"angle":17.08},{"time":2.6667,"angle":6.65},{"time":2.7333}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-37.24,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":2.81,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":38.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":40.33,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":16.37,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":-13.58,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.9667,"angle":-36.85,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.1667,"angle":-8.53,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":5.24,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":15.1,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":40.35,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":0.29,"curve":0.343,"c2":0.4,"c3":0.676,"c4":0.74},{"time":2.1667,"angle":-36.12,"curve":0.352,"c2":0.65,"c3":0.687},{"time":2.5,"angle":0.57},{"time":2.6667,"angle":19.78},{"time":2.7333},{"time":2.8667,"angle":-9.43},{"time":3,"angle":3.27}]},"hair_t":{"rotate":[{"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":3.28,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-2.05,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":3.95,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":19.96,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":13.11,"curve":0.322,"c2":0.29,"c3":0.656,"c4":0.63},{"time":0.6667,"angle":18.15,"curve":0.328,"c2":0.31,"c3":0.662,"c4":0.65},{"time":0.9,"angle":20.47,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":11.62,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"curve":"stepped"},{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":11.5,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":6.64,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"angle":12.3},{"time":2.6667},{"time":2.7333,"angle":10.43},{"time":2.8667}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-1.67,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.2667,"angle":-4.47,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":-0.95,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.4333,"angle":-9.95,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-5.81,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.6667,"angle":4.66,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.9,"angle":0.7,"curve":0.34,"c2":0.37,"c3":0.674,"c4":0.7},{"time":1.1667,"angle":2.5,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":15.57,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-11.36,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-2.55,"curve":0.347,"c2":0.44,"c3":0.681,"c4":0.77},{"time":1.9667,"angle":-8.53,"curve":0.34,"c2":0.42,"c3":0.673,"c4":0.76},{"time":2.2,"angle":-18.29,"curve":0.343,"c2":0.66,"c3":0.676},{"time":2.5,"angle":-9.26},{"time":2.6667,"angle":-10.67},{"time":2.7333,"angle":-11.03},{"time":2.8667,"angle":3.64},{"time":3,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-19.29,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":23.21,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":15.49,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-16.51,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-2.92,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.6667,"angle":-4.93,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.9,"angle":10.03,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":15.58,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":14.82,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-14.88,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-22.71,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":19.4,"curve":0.344,"c2":0.42,"c3":0.678,"c4":0.75},{"time":2.2,"angle":13.88,"curve":0.343,"c2":0.45,"c3":0.676,"c4":0.79},{"time":2.3667,"angle":-8.17,"curve":0.342,"c2":0.66,"c3":0.675},{"time":2.5,"angle":10.84},{"time":2.6667,"angle":14.86},{"time":2.7333,"angle":-17.62},{"time":2.8667,"angle":-9.88},{"time":3,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":-22.25,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":21.21,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":12.89,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":-14.62,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":-14.41,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.6667,"angle":-26.81,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.9,"angle":12.92,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":20.16,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":35.21,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":14.79,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-31.89,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":19.72,"curve":0.359,"c2":0.5,"c3":0.695,"c4":0.86},{"time":2.3667,"angle":-26,"curve":0.345,"c2":0.66,"c3":0.679},{"time":2.5,"angle":-1.41},{"time":2.6667,"angle":20.55},{"time":2.7333,"angle":7.37},{"time":2.8667,"angle":-16.61},{"time":3,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":55.78,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":48.98,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":102.32,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":93.66,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":55.8,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.9,"angle":46.53,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":128.97,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":32.4,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":31.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":26.75,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":9.04,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-11.54,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1667,"angle":-25.22,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.2667,"angle":-0.67,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":40.35,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.4333,"angle":40.34,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":18.57,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.5667,"angle":-28.55,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":0.8,"angle":-7.26,"curve":0.34,"c2":0.37,"c3":0.674,"c4":0.7},{"time":1.1667,"angle":16.92,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":26.54,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":36.13,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-25.52,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":1.5333,"angle":4.39,"curve":0.337,"c2":0.36,"c3":0.671,"c4":0.7},{"time":1.7,"angle":17.05,"curve":0.34,"c2":0.39,"c3":0.674,"c4":0.73},{"time":1.9667,"angle":42.08,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5,"angle":5.05},{"time":2.6667,"angle":-21.25},{"time":2.7333,"angle":-5.06},{"time":2.8667,"angle":9.18},{"time":3,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":8.2,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1667,"angle":-6.71,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":16.99,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":56.97,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":56.27,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":34.15,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.5667,"angle":-13.93,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.8,"angle":4.89,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":25.42,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":34.4,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":43.69,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-19.2,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":9.24,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.7,"angle":20.68,"curve":0.344,"c2":0.39,"c3":0.678,"c4":0.72},{"time":1.9667,"angle":43.98,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":5.05},{"time":2.6667,"angle":-21.25},{"time":2.7333,"angle":-5.06},{"time":2.8667,"angle":9.18},{"time":3,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":5.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1667,"angle":-9.66,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":14.21,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":54.36,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":53.77,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":31.71,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.5667,"angle":-16.2,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":0.8,"angle":3.01,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":24.11,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":33.2,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":42.53,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-20.16,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.5333,"angle":8.47,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.7,"angle":20.11,"curve":0.344,"c2":0.39,"c3":0.678,"c4":0.72},{"time":1.9667,"angle":43.7,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":5.05},{"time":2.6667,"angle":-21.25},{"time":2.7333,"angle":-5.06},{"time":2.8667,"angle":9.18},{"time":3,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":41,"curve":0.322,"c2":0.2,"c3":0.656,"c4":0.53},{"time":0.1667,"angle":21.31,"curve":0.324,"c2":0.26,"c3":0.657,"c4":0.6},{"time":0.2667,"angle":50.33,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":89.79,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":88.54,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":66.09,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.64},{"time":0.5667,"angle":17.53,"curve":0.323,"c2":0.3,"c3":0.657,"c4":0.63},{"time":0.8,"angle":32.77,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":47.01,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":54.71,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":63.34,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-2.16,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":1.5333,"angle":23.11,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":1.7,"angle":31.47,"curve":0.344,"c2":0.37,"c3":0.68,"c4":0.71},{"time":1.9667,"angle":50.08,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"angle":5.05},{"time":2.6667,"angle":-21.25},{"time":2.7333,"angle":-5.06},{"time":2.8667,"angle":9.18},{"time":3,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":-2.26,"y":14.51}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":22.15,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":2.3,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":-18.65,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":-16.75,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":-9.11,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.8,"angle":1.64,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":1.17,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":1.09,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":1.05,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":0.89,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":0.28,"curve":0.37,"c2":0.63,"c3":0.708},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":28.84,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":8.19,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-13.14,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-11.49,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-3.98,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":5.55,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":3.83,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":3.54,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":3.4,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":2.83,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":0.83,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":9.54}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":23.17,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":3.15,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-17.87,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-16.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-8.4,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":2.13,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":1.47,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":1.36,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":1.31,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":1.09,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":0.32,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":6.48,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":5.9,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":5.59,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":5.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":5.28,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.8,"angle":4.21,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":3.01,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":2.8,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":2.69,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":2.28,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":0.72,"curve":0.37,"c2":0.63,"c3":0.708},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":6.67}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":8.68,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":8.34,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":8.05,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":7.83,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":7.71,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":6.43,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":4.79,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":4.48,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":4.32,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":3.7,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":1.25,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":8.76}]},"r_ear_s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":25.88,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":7.7,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-19.51,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-56.07,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-62.15,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":51.97,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":14.48,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":3.33,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-26.31,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":36.04,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":39.18,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":20.13},{"time":2.6667,"angle":46.16},{"time":2.7333,"angle":-5.87},{"time":2.8667,"angle":22.72},{"time":3,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":5.7,"y":-8.17}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":0.25,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-8.63,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":-3.34,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-4.21,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-6.28,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":-15.96,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":-7.3,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":4.49,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-4.79,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-12.19,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":0.53,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"angle":2.32},{"time":2.6667,"angle":-27.35},{"time":2.7333,"angle":-9.63},{"time":2.8667},{"time":3,"angle":8.77}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":12.63,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":21.16,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-15.92,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-16.59,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":12.01,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":16.74,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-16.84,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-11.71,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":16.85,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":15.45,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-17.01,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":2.29},{"time":2.6667,"angle":12.28},{"time":2.7333,"angle":-21.14},{"time":2.8667},{"time":3,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-19.37,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":12.17,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":14.01,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-31.94,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-49.4,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":16.14,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":-16.78,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-5.11,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-16,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":39.04,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":-1.43,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"angle":17.73},{"time":2.7333,"angle":11.76},{"time":2.8667},{"time":3,"angle":-10}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-12.13,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-11.26,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":0.6,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":3,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-10.42,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":-8.69,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":-6.47,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-6.05,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-5.84,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-4.99,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":-1.69,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"angle":-20.31},{"time":2.7333,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-11.82}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":15.18,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":28.27,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-13.96,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-21.36,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":13.85,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":18.15,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-7.16,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-5.39,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":19.66,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":19.15,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-16.79,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":2.29},{"time":2.6667,"angle":12.28},{"time":2.7333,"angle":-21.14},{"time":2.8667},{"time":3,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-15.4,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":14.73,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":14.22,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-50.39,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-26.97,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":34.84,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":-22.16,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-3.31,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-12.44,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":17.46,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":2.21,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"angle":17.73},{"time":2.7333,"angle":11.76},{"time":2.8667},{"time":3,"angle":15.47}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":22.61,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":2.87,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":-18.06,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-16.15,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-8.52,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":2.21,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":1.65,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":1.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":1.49,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":1.27,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":0.43,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-4.5,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":-4,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-3.75,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-3.59,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-3.51,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":-2.71,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-1.87,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-1.73,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-1.66,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-1.38,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-0.41,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":-0.58,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":-0.53,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":-0.5,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":-0.48,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":-0.47,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.8,"angle":-0.38,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":-0.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-0.25,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-0.24,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-0.2,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":-0.06,"curve":0.37,"c2":0.63,"c3":0.708},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":54.37,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":30.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":8.19,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":8.91,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":15.96,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":20.93,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":14.47,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":13.37,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":12.82,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":10.68,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":3.15,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":39.83,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":36.25,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":34.35,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":33.06,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":32.41,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.8,"angle":25.83,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":18.5,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":17.2,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":16.55,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":13.98,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":4.44,"curve":0.37,"c2":0.63,"c3":0.708},{"time":2.5,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":40.99}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":1.89,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-0.64,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":8.42,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":16.93,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":19.34,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":3.42,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":-12.9,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":8.01,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":4.52,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":3.87,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":8.38,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"angle":19.74},{"time":2.6667,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":9.15}],"scale":[{"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"x":0.927,"curve":0.303,"c2":0.11,"c3":0.639,"c4":0.46},{"time":0.3667,"x":1.123,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"x":0.826,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":0.771,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"x":0.624,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"x":0.732,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"x":0.88,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"x":0.846,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":0.682,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"x":0.778,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"x":0.857},{"time":2.8667}],"shear":[{"y":-15.36,"curve":0.326,"c3":0.66,"c4":0.34},{"time":0.0667,"y":20.35,"curve":0.315,"c2":0.14,"c3":0.649,"c4":0.48},{"time":0.2667,"y":-0.46,"curve":0.326,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"y":-32.23,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"y":-32.63,"curve":0.331,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.4667,"y":7.15,"curve":"stepped"},{"time":0.8,"y":7.15,"curve":0.322,"c2":0.3,"c3":0.658,"c4":0.64},{"time":1.1667,"y":10.36,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.2333,"y":27.95,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2667,"y":33.56,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.4,"y":14.21,"curve":0.336,"c2":0.34,"c3":0.675,"c4":0.69},{"time":1.9667,"y":-25.6,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":2.5,"y":0.65,"curve":0.344,"c2":0.39,"c3":0.678,"c4":0.72},{"time":2.6667,"y":11.31,"curve":0.362,"c2":0.64,"c3":0.698},{"time":3,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":22.5,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":32.25,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-21.87,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-32.75,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":13.24,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":0.27,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-14.11,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-13.22,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":13.99,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":12.46,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":3.51,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5,"angle":8.15},{"time":2.6667,"angle":17.54},{"time":2.7333,"angle":-15.62},{"time":2.8667},{"time":3,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-34.85,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":29.36,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":18.38,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-32.96,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-53.59,"curve":0.325,"c2":0.3,"c3":0.659,"c4":0.64},{"time":0.6,"angle":25.81,"curve":0.324,"c2":0.3,"c3":0.659,"c4":0.64},{"time":0.8,"angle":7.4,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":3.44,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-16.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-20.88,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":24.17,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":-3.05,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"angle":17.54},{"time":2.7333,"angle":2.64},{"time":2.8667,"angle":-15.51},{"time":3,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":-32.46,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":31.38,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":27.98,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-2.82,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":17,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-3.85,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.6333,"angle":30.02,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.8,"angle":11.16,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":34.38,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":2.96,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-3.37,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":27.18,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":0.7,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5},{"time":2.6667,"angle":26.61},{"time":2.7333,"angle":9.97},{"time":2.8667,"angle":-4.16},{"time":3,"angle":7.98}],"translate":[{"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"x":-23.98,"y":0.7,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"x":-5.86,"y":-37.32,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"x":-12.54,"y":0.58,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":-14.37,"y":15.83,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"x":-4.62,"y":10.98,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"curve":"stepped"},{"time":1.2333,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"x":2.06,"y":5.22,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":-17.57,"y":8.81,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":2.87,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":28.43,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":-14.59,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-76.63,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-30.34,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.6333,"angle":1.74,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.8,"angle":-14.61,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-3.86,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-18.66,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-19.7,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":27.19,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-18,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5},{"time":2.6667,"angle":-29.65},{"time":2.7333},{"time":2.8667,"angle":20.12},{"time":3,"angle":-9.62}],"translate":[{"time":0.0667,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"x":13.36,"y":13.32,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"x":-34.25,"y":-17.32,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"curve":0.324,"c2":0.3,"c3":0.658,"c4":0.63},{"time":0.6333,"x":6.43,"y":-12.6,"curve":0.326,"c2":0.31,"c3":0.66,"c4":0.64},{"time":0.8,"curve":"stepped"},{"time":1.2333,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"x":13.64,"y":13.03,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":30.84,"y":-11.3,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-0.94,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-28.9,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":-7.73,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-23.55,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":-7.41,"curve":0.305,"c2":0.24,"c3":0.65,"c4":0.61},{"time":1.1667,"angle":-4.61,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-4.31,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-4.16,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-3.56,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":-1.2,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5,"curve":"stepped"},{"time":2.6667},{"time":2.7333,"angle":-3.91},{"time":2.8667,"angle":-6.91},{"time":3,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-12.02,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.2667,"angle":31.84,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":7.52,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.4333,"angle":6.93,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":3.26,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.8,"angle":-16.24,"curve":0.34,"c2":0.37,"c3":0.674,"c4":0.7},{"time":1.1667,"angle":-20.33,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":1.47,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-7.27,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":1.15,"curve":0.347,"c2":0.44,"c3":0.681,"c4":0.77},{"time":1.9667,"angle":10.21,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5},{"time":2.6667,"angle":6.08},{"time":2.7333,"curve":"stepped"},{"time":2.8667},{"time":3,"angle":4.52}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-39.69,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2667,"angle":15.06,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.3667,"angle":27.2,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":19.09,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-1.39,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":0.8,"angle":-25.1,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":1.1667,"angle":-31.25,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":29.62,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":40.09,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":28.93,"curve":0.352,"c2":0.42,"c3":0.688,"c4":0.77},{"time":1.9667,"angle":-6.66,"curve":0.361,"c2":0.64,"c3":0.697},{"time":2.5},{"time":2.6667,"angle":7.62},{"time":2.7333},{"time":2.8667,"angle":-21.17},{"time":3,"angle":-1.85}],"translate":[{"time":0.4333,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":-47.16,"y":11.55,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"x":-35.02,"y":-4.91,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"x":13.7,"y":-9.5,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"x":-4.81,"y":-6.66,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"x":26.1,"y":-13.6,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"x":-12.37,"y":6.58},{"time":2.7333}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.0667,"angle":20.68,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.2667,"angle":0.07,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.3667,"angle":38.73,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.4333,"angle":16.7,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4667,"angle":-6.5,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":0.8,"angle":14.67,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.1667,"angle":-2.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-40.6,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-15.1,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-1.99,"curve":0.352,"c2":0.4,"c3":0.69,"c4":0.75},{"time":1.9667,"angle":29.85,"curve":0.37,"c2":0.63,"c3":0.708},{"time":2.5,"angle":36.03},{"time":2.6667,"angle":0.59},{"time":2.7333},{"time":2.8667,"angle":12.69},{"time":3,"angle":-8.22}],"translate":[{"time":0.0667,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"x":16.25,"y":8.66,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"x":12.56,"y":25.25,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":35.13,"y":-2.75,"curve":0.305,"c2":0.24,"c3":0.65,"c4":0.61},{"time":1.1667,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"x":15.2,"y":-44.41,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"x":28.53,"y":-13.78,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":45.91,"y":-23.74,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"x":6.76,"y":-22.09,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"x":-3.64,"y":-23.79},{"time":2.7333}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.325,"c3":0.658,"c4":0.34},{"time":0.0667,"angle":-32.28,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.2667,"angle":-68.99,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.3667,"angle":-47.29,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"angle":-5.77,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"angle":12.2,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"angle":44.43,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"angle":30.36,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"angle":-31.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-30.5,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"angle":-18.57,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"angle":22.95,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5},{"time":2.6667,"angle":-16.84},{"time":2.7333},{"time":2.8667,"angle":28.05},{"time":3,"angle":-11.95}],"translate":[{"time":0.3667,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"x":-33.43,"y":58.71,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":20.14,"y":56.86,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"x":30.52,"y":23.87,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"x":-33.19,"y":15.58,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"curve":"stepped"},{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":-11.49,"y":-19.88,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667,"x":14.36,"y":48.34,"curve":0.376,"c2":0.61,"c3":0.718},{"time":2.5}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-64.05,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.2667,"angle":-96.39,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.3667,"angle":-86.1,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.4333,"angle":-6.08,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.4667,"angle":-5.68,"curve":0.345,"c2":0.39,"c3":0.679,"c4":0.72},{"time":1.1667,"angle":-45.78,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.2333,"angle":-58.7,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.2667,"angle":-82.71,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.68},{"time":1.4,"angle":-61.3,"curve":0.347,"c2":0.44,"c3":0.681,"c4":0.77},{"time":1.9667,"angle":7.38,"curve":0.349,"c2":0.65,"c3":0.683},{"time":2.5},{"time":2.6667,"angle":-46.36},{"time":2.7333,"angle":-75.05},{"time":2.8667,"angle":-0.33},{"time":3,"angle":-8.22}],"translate":[{"time":0.4667,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":0.8,"x":-15.03,"y":-14.76,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":1.1667,"x":-33.57,"y":-54.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.2333,"x":-41.35,"y":-57.52,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"x":-32.71,"y":-32.32,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":1.9667}]},"shadow":{"translate":[{"time":0.0667,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.3667,"x":-145,"curve":0.329,"c2":0.31,"c3":0.662,"c4":0.64},{"time":0.4333,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":0.4667,"x":78.72,"curve":"stepped"},{"time":2.5,"x":78.72,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":2.6667}],"scale":[{"time":1.2667,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":1.4,"y":1.153,"curve":"stepped"},{"time":2.5,"y":1.153,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":2.8667}]},"r_upparm3":{"rotate":[{},{"time":0.0667,"angle":22.9},{"time":0.2667,"angle":50.67},{"time":0.3667,"angle":52.68},{"time":0.4333,"angle":68.19},{"time":0.4667,"angle":-155},{"time":0.5333,"angle":-145.55},{"time":1.1667,"angle":-120.43},{"time":1.2667,"angle":55.76},{"time":1.3,"angle":33.08},{"time":1.9667,"angle":21.53},{"time":2.5,"angle":56.21},{"time":2.6667,"angle":63.35},{"time":2.7333,"angle":13.6},{"time":2.8667}],"translate":[{},{"time":1.2667,"x":-66.65,"y":3.21},{"time":1.9667}]},"r_finger_a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":31.41},{"time":0.2667,"angle":26.63},{"time":0.3667,"angle":25.07},{"time":1.1667},{"time":1.2667,"angle":4.28},{"time":1.3333,"angle":33.29},{"time":1.9667,"angle":39.84},{"time":2.5,"angle":64.76},{"time":2.6667,"angle":35.33},{"time":2.8667},{"time":3,"angle":14.41}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.751},{"time":1.1667,"x":1.552},{"time":1.9667,"x":1.167},{"time":2.5,"x":0.835},{"time":2.6667,"x":0.653},{"time":2.7333,"x":0.506},{"time":2.8,"x":1.232},{"time":2.8667}]},"r_finger_b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-14.7},{"time":0.2667},{"time":0.3667,"angle":-23.72},{"time":0.4667,"angle":-54.57},{"time":0.5333,"angle":-35.92},{"time":1.2667,"angle":8.43},{"time":1.3333,"angle":-55.31},{"time":1.9667,"angle":-36.86},{"time":2.5,"angle":-9.95},{"time":2.6667,"angle":-5.43},{"time":2.8,"angle":-23.47},{"time":3,"angle":-8.92}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.1,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.1},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r_finger_c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":-4.33},{"time":0.2667},{"time":0.3667,"angle":-21.35},{"time":0.4667,"angle":-56.6},{"time":0.5333,"angle":-38.26},{"time":1.2667,"angle":21.7},{"time":1.3333,"angle":-53.94},{"time":1.9667,"angle":-11.99},{"time":2.5,"angle":-5.02},{"time":2.6667,"angle":-2.74},{"time":2.8,"angle":-18.4},{"time":3,"angle":-9.49}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"r_finger_d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.0667,"angle":18.15},{"time":0.2667,"angle":1.92},{"time":0.3667},{"time":0.5333,"angle":-23.8},{"time":1.2667,"angle":46.29},{"time":1.3333,"angle":-17.24},{"time":1.9667,"angle":20.97},{"time":2.5,"angle":20.38},{"time":2.6667,"angle":11.12},{"time":2.8667},{"time":3,"angle":7.12}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.3667,"x":-43.03,"y":20.11,"curve":"stepped"},{"time":2.5,"x":-43.03,"y":20.11},{"time":2.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":1.392},{"time":0.2667,"x":0.734},{"time":0.3667,"x":0.509},{"time":0.5333,"x":1.552},{"time":1.2667,"x":0.954,"curve":"stepped"},{"time":2.5,"x":0.954},{"time":2.6667,"x":0.699},{"time":2.7333,"x":0.529},{"time":2.8,"x":1.251},{"time":2.8667}]},"l_hand2":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"skill":{"rotate":[{"angle":-90},{"time":0.5333},{"time":0.6667,"angle":-90},{"time":0.7}],"translate":[{"x":751.05,"y":-2674.72},{"time":0.5333,"x":912.09,"y":-2857.24},{"time":0.7,"x":751.05,"y":-2680.69},{"time":0.9333,"x":606.8,"y":-2744.39},{"time":1.1333,"x":445.07,"y":-2776.14},{"time":1.1667,"x":333.03,"y":-2816.05},{"time":1.2,"x":173.45,"y":-2798.68},{"time":1.2333,"x":908.46,"y":-3060.52},{"time":1.2667,"x":908.46,"y":-2994.78},{"time":1.3,"x":905.39,"y":-2995.2},{"time":1.3333,"x":902.32,"y":-2995.61},{"time":1.3667,"x":899.24,"y":-2996.02},{"time":3,"x":748.69,"y":-3016.22}],"scale":[{"x":0,"y":0},{"time":0.0333,"x":0.937,"y":0.937},{"time":0.5333,"x":0,"y":0},{"time":0.6667,"x":0.414,"y":0.414},{"time":0.7,"x":0.414,"y":0.414},{"time":0.9333,"x":0.63,"y":0.63},{"time":1.1333,"x":0.4,"y":0.4},{"time":1.2,"x":0,"y":0},{"time":1.2333,"x":0.948,"y":0.948,"curve":"stepped"},{"time":2.9667,"x":0.948,"y":0.948},{"time":3,"x":0,"y":0}]},"s":{"scale":[{"x":0,"y":0}]},"l_armour":{"rotate":[{"angle":1.84}]},"r_arm":{"rotate":[{"angle":-7.98}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.0667,"offset":92,"vertices":[2.20322,30.46043,-18.26239,24.47815,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.20322,30.46043,0,0,1.46875,20.30699,-12.17502,16.31879,0,0,0,0,0,0,0,0,0,0,0,0,-18.26239,24.47815,1.46875,20.30699,-12.17502,16.31879,0,0,0,0,0,0,0,0,2.20322,30.46043,-18.26239,24.47815,0,0,0,0,0,0,0,0,2.20322,30.46043,-18.26239,24.47815]},{"time":0.3667,"offset":90,"vertices":[1.22015,85.50305,8.85266,63.22167,-11.04908,62.60259,0,0,0,0,-6.34235,126.33496,-53.48529,114.63028,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.36218,63.396,0,0,1.15774,53.59198,-21.08538,49.06215,0,0,0,0,0,0,0,0,0,0,-26.46741,90.20621,-22.42884,58.16097,1.15774,53.59198,-21.08538,49.06215,0,0,0,0,0,0,0,0,-3.01361,87.82533,-31.31251,80.92049,0,0,0,0,0,0,0,0,-3.36218,63.396,-22.42884,58.16097]},{"time":0.4333,"offset":90,"vertices":[11.28321,29.56786,64.24847,-1.59769,15.38139,-20.66391,0,0,0,0,30.03378,63.63551,-37.9719,42.57151,0,0,0,0,21.52234,-32.401,0,0,0,0,0,0,0,0,11.37859,-10.34697,0,0,10.04763,-32.86191,-46.04496,-32.88637,0,0,0,0,0,0,0,0,-6.04218,-42.5224,-6.48686,6.21558,13.33047,-7.81927,74.10146,18.25119,33.79031,-14.39904,0,0,0,0,0,0,0,0,10.88204,44.88947,-30.96428,36.15376,0,0,0,0,0,0,0,0,63.57747,-1.31068,14.50655,-29.04317]},{"time":0.4667,"offset":86,"vertices":[-5.34116,-25.95972,2.87909,-26.34647,28.35921,-123.78532,69.57217,-109.37783,55.94293,-119.57079,0.04346,-13.60001,4.21307,-12.93097,35.08938,-126.22038,27.55061,-135.14969,-4.74298,-16.4455,0.53021,-17.10747,48.12115,-135.29684,-9.32477,-33.91261,1.52692,-35.13792,-2.17447,-32.78903,7.98785,-31.87531,6.41131,-47.5862,0,0,6.78776,-144.91539,-11.31966,-140.2913,-9.76276,-44.44829,4.3418,-45.3,0,0,0,0,-5.72417,-40.28438,48.14679,-137.76016,25.5317,-46.50949,79.68276,-43.04897,59.54434,-68.16386,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-3.65679,-91.57052,-1.49492,-97.66589,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,55.4898,-115.34093,44.22822,-137.56801]},{"time":1.1667,"offset":44,"vertices":[13.68317,13.3293,-1.79593,19.0177,40.93475,29.97415,2.33765,50.68173,45.62729,58.9476,-17.28067,72.51294,5.87097,28.37482,-18.41379,22.37299,9.02417,22.71495,-12.02777,21.27783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.34116,-25.95972,2.87909,-26.34647,21.36486,-151.78146,69.57217,-109.37783,55.94293,-119.57079,-9.27048,-25.94392,7.98193,-27.92816,21.33434,-164.38474,48.64049,-169.80396,-10.8429,-18.338,-1.82306,-23.04482,48.12115,-135.29684,-21.33124,-65.07796,18.26343,-64.03969,-10.16232,-58.32629,22.86304,-54.1167,-4.32936,-91.79655,0,0,-10.19131,-230.23357,44.46687,-207.03862,-13.73187,-64.35754,17.35513,-60.88112,0,0,0,0,24.02046,-94.70818,55.50031,-161.04776,64.36263,-117.89432,52.18075,-116.5673,99.54089,-135.70296,-8.40555,-26.44122,0.11011,-27.74472,-0.67172,-35.69271,10.30896,-34.1781,-6.65829,-158.96844,49.1057,-142.28601,0,0,0,0,-5.18076,-26.98122,3.34515,-27.26952,50.47698,-132.96794,54.80964,-152.53014]},{"time":1.2667,"vertices":[29.06982,-72.12125,-15.9902,-42.64353,17.02545,-42.24011,-8.49564,-22.65597,9.0448,-22.44153,-0.47134,-1.25648,0.50055,-1.24426,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.56106,4.4431,-0.59864,6.33924,13.64492,9.99139,0.77922,16.89392,15.2091,19.64921,-5.76023,24.17099,1.95699,9.45827,-6.13793,7.45766,3.00806,7.57165,-4.00926,7.09261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7.16559,-17.77921,15.33618,-38.04984,22.20337,-55.08542,-6.47704,-36.10748,16.04478,-32.1932,-11.66546,-151.5143,-27.1316,-126.09022,42.10883,-139.93118,-12.85862,-68.80717,36.10632,-60.25766,-12.99173,-156.02612,69.79156,-144.80843,-9.5186,-43.75845,20.4741,-39.42205,36.13084,-109.71313,-22.23346,-115.78752,58.51549,-100.9286,-12.63305,-73.00189,36.99162,-63.76791,-7.82084,-76.26741,8.58105,-32.21619,-24.01515,-151.97418,50.45047,-138.40071,-20.42968,-118.18782,59.45955,-102.31465,0.59845,1.70294,-0.71265,1.6615,41.66179,-96.37958,83.84325,-153.11818,51.87237,-181.09866,-21.86926,-116.7386,56.85548,-129.17567,-12.02087,-67.09482,32.61721,-58.43959,-9.96017,-74.88145,38.81413,-64.40079,-16.36066,-125.88433,55.19584,-110.71894,1.57309,9.11859,-5.00427,7.78589,-15.29986,-92.5833,47.58673,-79.88013,-48.06121,-165.48805,52.30351,-184.00641,-13.90564,-85.01868,47.19269,-72.06903,-11.91748,-73.83663,41.10345,-62.48297]},{"time":1.4,"vertices":[23.01361,-57.09599,-12.65891,-33.75946,13.47848,-33.44009,-6.72571,-17.93597,7.16047,-17.76621,-0.37315,-0.99471,0.39627,-0.98504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.61084,3.51745,-0.47393,5.01856,10.80223,7.90985,0.61688,13.37435,12.04054,15.55562,-4.56018,19.13536,1.54928,7.4878,-4.85919,5.90398,2.38138,5.99422,-3.174,5.61499,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.67276,-14.0752,12.14114,-30.12278,17.57767,-43.60929,-37.40884,80.90787,-22.69981,79.84479,-21.81034,-112.46321,-69.53212,-61.44518,23.95736,-70.31633,-5.52369,-61.88129,38.22286,-52.7466,-48.32508,-67.20107,44.80422,-56.20119,-8.41052,-25.36345,20.63107,-20.17984,-11.03411,8.36736,-23.17635,-82.03205,55.08798,-66.62843,-42.80547,31.16739,3.06902,36.41177,-11.74329,-49.05764,-36.39805,78.77538,-41.89071,-104.48355,51.84534,-87.36143,-21.45167,-80.40545,55.62834,-64.36916,-15.84734,77.03049,-22.53262,74.3882,6.43098,4.80322,66.73289,-78.549,13.31977,-86.71854,-55.78627,-75.32662,48.65828,-79.61618,-19.57751,-21.27523,23.22398,-13.2485,-13.15283,-40.95397,31.56849,-31.90127,-25.15525,-74.27544,48.14829,-59.80457,-32.12083,149.45386,-54.87665,140.78326,-11.74581,-61.11443,40.8359,-49.66849,-73.8765,-103.35275,27.6935,-118.63463,-15.52067,-45.71382,38.7096,-34.11666,-8.28208,-49.48368,35.00734,-39.49377]},{"time":1.9667}]},"body_back":{"body_back":[{"vertices":[-248.84149,984.15564,-256.0761,952.2449,-252.69482,923.5105,-249.3135,894.7759,-227.28748,866.5216,-226.49063,816.0619,-205.80875,793.2189,-185.12735,770.3761,-140.62946,763.5835,-111.47226,767.0144,-82.31494,770.4459,-63.17963,789.8679,-41.05719,783.90247,-25.84525,807.54236,-10.63358,831.1809,9.21088,849.79614,3.34344,899.65967,-2.52435,949.5222,-18.49289,999.9104,-47.70047,1007.8253,-88.26645,1003.0521,-128.83289,998.2776,-149.93976,989.24255,-159.64532,981.8817,-181.04153,978.7423,-215.42685,980.2926,-230.43939,986.32153,-142.81763,823.79224,-69.17297,961.4939,-61.97717,877.41736,-158.15805,935.3407,-116.05615,870.7516,-79.49326,827.23804,-169.92407,888.0531,-126.61203,937.7208,-42.6969,920.41504,-208.19629,927.995,-83.27798,913.6301,-177.94455,839.38,-104.06152,807.6094,-107.68793,967.2245,-130.85959,909.01746,-20.5181,875.69336,-39.78152,843.8264,-36.06897,967.8529,-206.4953,883.4315,-147.5774,866.198],"curve":"stepped"},{"time":0.4667,"vertices":[-248.84149,984.15564,-256.0761,952.2449,-252.69482,923.5105,-249.3135,894.7759,-227.28748,866.5216,-226.49063,816.0619,-205.80875,793.2189,-185.12735,770.3761,-140.62946,763.5835,-111.47226,767.0144,-82.31494,770.4459,-63.17963,789.8679,-41.05719,783.90247,-25.84525,807.54236,-10.63358,831.1809,9.21088,849.79614,3.34344,899.65967,-2.52435,949.5222,-18.49289,999.9104,-47.70047,1007.8253,-88.26645,1003.0521,-128.83289,998.2776,-149.93976,989.24255,-159.64532,981.8817,-181.04153,978.7423,-215.42685,980.2926,-230.43939,986.32153,-142.81763,823.79224,-69.17297,961.4939,-61.97717,877.41736,-158.15805,935.3407,-116.05615,870.7516,-79.49326,827.23804,-169.92407,888.0531,-126.61203,937.7208,-42.6969,920.41504,-208.19629,927.995,-83.27798,913.6301,-177.94455,839.38,-104.06152,807.6094,-107.68793,967.2245,-130.85959,909.01746,-20.5181,875.69336,-39.78152,843.8264,-36.06897,967.8529,-206.4953,883.4315,-147.5774,866.198]},{"time":1.1667,"vertices":[-248.84149,984.15564,-256.0761,952.2449,-252.69482,923.5105,-249.3135,894.7759,-227.28748,866.5216,-226.49063,816.0619,-205.80875,793.2189,-185.12735,770.3761,-140.62946,763.5835,-111.47226,767.0144,-82.31494,770.4459,-63.17963,789.8679,-41.05719,783.90247,-25.84525,807.54236,-10.63358,831.1809,9.21088,849.79614,3.34344,899.65967,-2.52435,949.5222,-18.49289,999.9104,-47.70047,1007.8253,-88.26645,1003.0521,-128.83289,998.2776,-149.93976,989.24255,-159.64532,981.8817,-181.04153,978.7423,-215.42685,980.2926,-230.43939,986.32153,-103.0361,1024.2079,-64.87897,1040.5034,-44.87289,1052.709,-163.90921,1037.5004,-96.87616,1071.7126,-37.24252,1037.6261,-168.77554,1034.1577,-126.17181,1051.0022,-33.91873,1041.6232,-220.0662,1001.74164,-74.33423,1058.4902,-165.10123,978.16345,-67.14713,957.76855,-105.10043,1034.3718,-131.6464,1068.6799,-5.13809,980.3032,-17.89572,968.657,-31.7659,1022.473,-216.04953,993.4871,-129.88193,1059.1964]},{"time":1.2333,"vertices":[-248.84149,984.15564,-256.0761,952.2449,-252.69482,923.5105,-249.3135,894.7759,-227.28748,866.5216,-226.49063,816.0619,-205.80875,793.2189,-185.12735,770.3761,-140.62946,763.5835,-111.47226,767.0144,-82.31494,770.4459,-63.17963,789.8679,-41.05719,783.90247,-25.84525,807.54236,-10.63358,831.1809,9.21088,849.79614,3.34344,899.65967,-2.52435,949.5222,-18.49289,999.9104,-47.70047,1007.8253,-88.26645,1003.0521,-128.83289,998.2776,-149.93976,989.24255,-159.64532,981.8817,-181.04153,978.7423,-215.42685,980.2926,-230.43939,986.32153,-142.81763,823.79224,-69.17297,961.4939,-61.97717,877.41736,-158.15805,935.3407,-116.05615,870.7516,-79.49326,827.23804,-169.92407,888.0531,-126.61203,937.7208,-42.6969,920.41504,-208.19629,927.995,-83.27798,913.6301,-177.94455,839.38,-104.06152,807.6094,-107.68793,967.2245,-130.85959,909.01746,-20.5181,875.69336,-39.78152,843.8264,-36.06897,967.8529,-206.4953,883.4315,-147.5774,866.198]}]},"r_armour_t":{"r_armour_t":[{"time":0.4333},{"time":0.4667,"vertices":[152.28754,-504.84186,41.04651,-90.2688,-130.66052,549.6482,-19.42004,135.07526]},{"time":0.5333,"vertices":[102.75201,-525.598,-12.29422,-106.9043,-187.29251,529.9733,-72.24661,111.27966]},{"time":0.7,"vertices":[155.13583,-579.0996,-19.70542,-106.5833,-237.69284,482.53497,-62.85197,10.01894]},{"time":1.1667,"vertices":[282.43243,-469.5668,63.4035,32.51511,-178.19824,586.34045,40.83038,84.25827]},{"time":1.2,"curve":"stepped"},{"time":1.2333},{"time":1.2667,"vertices":[-50.65718,-0.62451,-50.65718,-0.62451,-50.65718,-0.62451,-50.65718,-0.62451]},{"time":1.9667}]},"r_armour_u":{"r_armour_u":[{},{"time":1.2667,"offset":4,"vertices":[12.2439,-42.27058,37.5871,-22.88742,0,0,0,0,4.04147,-30.19534,23.3819,-19.52841,9.9678,-90.87462,68.75055,-60.25513,14.1861,22.35083]},{"time":1.9667,"offset":4,"vertices":[-4.71359,20.53979,0.62439,21.06448,0,0,0,0,0,0,0,0,-12.00818,15.14584,-7.79572,17.68724]},{"time":3}]},"r_upparm":{"r_upparm":[{},{"time":0.0667,"vertices":[71.42023,-102.62211,-59.57715,58.98571,-5.55792,13.88953,0.0719,5.32324,0,0,0,0,0,0,0,0,-27.13274,56.92213,64.57664,-45.52594,-10.7289,77.28154,-24.0618,58.08443,-10.93439,33.24786,32.51658,14.61764,38.99049,-37.58549,40.94386,-48.92675,-21.46527,22.31351,12.05781,-11.15483,12.86837,-1.65199,-31.71793,9.20399,60.00681,-4.37593]},{"time":0.2667,"vertices":[14.49724,-143.9148,86.2994,-7.67324,-29.00799,43.29948,0.04109,3.04185,0,0,0,0,0,0,0,0,154.17299,20.83762,76.12129,-60.70172,31.93622,132.94388,0.21045,133.35263,-15.50144,82.60187,-16.21501,16.47086,-8.79588,-32.1922,27.94626,-74.8526,96.62123,-6.14262,64.04028,-37.00799,93.58081,-27.17517,115.43555,-20.91914,87.97645,-34.27887]},{"time":0.3667,"vertices":[57.66969,-205.21594,129.24759,-60.09939,-18.12999,27.06218,0.02568,1.90116,0,0,0,0,0,0,0,0,147.55629,-34.66768,79.43922,1.22364,65.22589,117.25517,72.26199,103.7204,38.78865,44.84063,25.09694,-30.57835,94.71159,-90.42285,57.64677,-129.74088,129.0995,-23.49015,67.25021,-84.08886,121.04185,-2.89511,110.66865,-66.0593,102.23569,10.19076]},{"time":0.4333,"vertices":[94.94589,-245.40454,98.97653,-52.22503,22.1245,35.24601,0.01541,1.14069,0,0,0,0,0,0,4.34332,15.29031,151.88974,-15.64919,98.16955,-0.94751,131.75479,6.61076,133.46225,10.04301,124.7209,-8.17683,96.46043,-51.51637,84.6468,-80.23224,73.48962,-136.4072,136.07724,-32.39825,88.67035,-81.99995,127.75926,-21.35464,141.57883,-37.24434,109.43723,-25.01987]},{"time":0.4667,"vertices":[60.20279,-285.2079,178.6695,5.61779,14.74967,23.49734,0.01027,0.76046,0,0,0,0,0,0,2.89555,10.19354,187.63078,-84.14836,99.69791,106.1776,229.37988,-159.0247,152.201,-118.8279,50.96189,-129.61198,-35.65657,-200.7696,-107.07523,-311.73053,68.04438,-185.79814,170.60408,29.32304,83.40746,-135.03584,150.50427,36.70192,152.17752,-102.41692,122.37683,64.7523]},{"time":0.5333,"vertices":[-47.25385,-244.7281,246.85596,34.43988,0,0,0,0,0,0,0,0,0,0,0,0,103.16193,-124.55746,84.49106,137.89844,229.84851,-203.27744,139.59644,-136.4622,14.70477,-141.05151,-103.68231,-217.37236,-189.42932,-330.68317,-4.70135,-201.6728,192.35057,60.77765,27.54327,-171.68956,153.54951,81.5907,71.18427,-147.68524,116.71904,115.12]},{"time":1.1667,"vertices":[27.01488,-170.28525,187.80948,88.65892,-2.34058,186.42535,-65.4801,109.36133,0,0,0,0,24.0575,15.42035,41.30264,57.43616,148.5838,-121.58712,108.90398,164.83578,215.16722,-8.65701,126.92986,20.5615,27.95605,-16.17876,-52.0628,-96.19275,-93.76085,-197.85007,51.99199,-145.674,152.78575,99.94455,74.53324,-131.81415,131.74635,111.92378,103.08414,-122.82332,111.96646,130.86502,-17.19373,38.00159,-55.41232,52.68878]},{"time":1.2667,"vertices":[8.43998,-214.75891,134.6461,69.56977,24.73396,105.37369,9.14541,45.10073,0,0,0,0,0,0,0,0,86.28294,42.3029,37.2919,-31.77069,139.02008,67.24488,82.06499,89.76331,11.51316,64.20482,-48.90337,-3.86349,-79.66286,-83.41179,8.49401,-143.56448,123.51006,45.3092,24.97614,-86.67883,100.11182,23.803,64.69868,-15.87694,61.73894,-5.88001]},{"time":3}]}}},"events":[{"time":0.2667,"name":"tui1"},{"time":0.4667,"name":"hit"},{"time":1.4,"name":"hit"},{"time":2.3333,"name":"shou"}]},"walk":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00005"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00008"},{"time":0.2,"name":"eyefire/eyefire_00010"},{"time":0.2333,"name":"eyefire/eyefire_00011"},{"time":0.2667,"name":"eyefire/eyefire_00013"},{"time":0.3,"name":"eyefire/eyefire_00014"},{"time":0.3333,"name":"eyefire/eyefire_00016"},{"time":0.3667,"name":"eyefire/eyefire_00017"},{"time":0.4,"name":"eyefire/eyefire_00019"},{"time":0.4333,"name":"eyefire/eyefire_00020"},{"time":0.4667,"name":"eyefire/eyefire_00022"},{"time":0.5,"name":"eyefire/eyefire_00023"},{"time":0.5333,"name":"eyefire/eyefire_00025"},{"time":0.5667,"name":"eyefire/eyefire_00027"},{"time":0.6,"name":"eyefire/eyefire_00028"},{"time":0.6333,"name":"eyefire/eyefire_00030"},{"time":0.6667,"name":"eyefire/eyefire_00031"},{"time":0.7,"name":"eyefire/eyefire_00033"},{"time":0.7333,"name":"eyefire/eyefire_00034"},{"time":0.7667,"name":"eyefire/eyefire_00036"},{"time":0.8,"name":"eyefire/eyefire_00037"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"body":{"rotate":[{"angle":-46.01},{"time":0.1,"angle":-57.16},{"time":0.2,"angle":-81.65},{"time":0.3,"angle":-101.77},{"time":0.4,"angle":-119.71},{"time":0.5,"angle":-130.33},{"time":0.6,"angle":-117.59},{"time":0.7,"angle":-79.13},{"time":0.8,"angle":-46.01}],"translate":[{"y":-102.64},{"time":0.4,"y":43.22},{"time":0.8,"y":-102.64}]},"body2":{"rotate":[{"angle":-22.79},{"time":0.1,"angle":-10.08},{"time":0.2,"angle":16.6},{"time":0.3,"angle":38.66},{"time":0.4,"angle":52.44},{"time":0.5,"angle":59.18},{"time":0.6,"angle":41.89},{"time":0.7,"angle":-15.52},{"time":0.8,"angle":-22.79}],"translate":[{"x":-80.64,"y":48.56},{"time":0.1,"x":-29.6,"y":11.44},{"time":0.2,"x":24.21,"y":6.83},{"time":0.3,"x":87.48,"y":24.44},{"time":0.4,"x":76.26,"y":17.25},{"time":0.5,"x":-2.05,"y":-11.35},{"time":0.6,"x":-89.25,"y":-3.33},{"time":0.7,"x":-119.7,"y":79.08},{"time":0.8,"x":-80.64,"y":48.56}]},"head":{"rotate":[{"angle":54.91},{"time":0.1,"angle":57.8},{"time":0.2,"angle":61.64},{"time":0.3,"angle":73.6},{"time":0.4,"angle":89.11},{"time":0.5,"angle":87.54},{"time":0.6,"angle":81.54},{"time":0.7,"angle":92.91},{"time":0.8,"angle":54.91}],"translate":[{"x":20.04,"y":114.02}]},"rhand":{"rotate":[{"angle":-61.96},{"time":0.1,"angle":-73.08},{"time":0.2,"angle":-53.34},{"time":0.3,"angle":-7.68},{"time":0.4,"angle":-29.8},{"time":0.5,"angle":-31.51},{"time":0.6,"angle":-40.31},{"time":0.7,"angle":-69.63},{"time":0.8,"angle":-61.96}],"translate":[{"x":262.77,"y":-233.79},{"time":0.1,"x":680.4,"y":-287.15},{"time":0.2,"x":957.51,"y":-271.75},{"time":0.3,"x":1234.48,"y":-302.33},{"time":0.4,"x":1221.78,"y":-462.7},{"time":0.5,"x":1093.17,"y":-495.57},{"time":0.6,"x":634.16,"y":-422.65},{"time":0.7,"x":326.51,"y":-326.65},{"time":0.8,"x":262.77,"y":-233.79}],"scale":[{"x":0.445,"y":-0.647}]},"r_upparm":{"rotate":[{"angle":56.42},{"time":0.4,"angle":110.55},{"time":0.8,"angle":56.42}],"translate":[{},{"time":0.4,"x":-23.64,"y":21.09},{"time":0.8}]},"l_ik":{"rotate":[{"angle":-2.64},{"time":0.1,"angle":3.05},{"time":0.2,"angle":-46.63},{"time":0.3,"angle":-134.68},{"time":0.4,"angle":-137.5},{"time":0.5,"angle":-127.9},{"time":0.6,"angle":-79.41},{"time":0.7,"angle":-68.78},{"time":0.8,"angle":-2.64}],"translate":[{"x":-145.7,"y":70.09},{"time":0.1,"x":-250.39,"y":-2.76},{"time":0.2,"x":-480.05,"y":85.85},{"time":0.3,"x":-641.99,"y":290.99},{"time":0.4,"x":-630.55,"y":360.98},{"time":0.5,"x":-560.06,"y":415.93},{"time":0.6,"x":-341.98,"y":228.69},{"time":0.7,"x":-251.83,"y":181.63},{"time":0.8,"x":-145.7,"y":70.09}]},"lhand":{"rotate":[{"angle":-13.41},{"time":0.1,"angle":-84.39},{"time":0.2,"angle":-88.18},{"time":0.3,"angle":-51.49},{"time":0.4,"angle":63.47},{"time":0.5,"angle":23.26},{"time":0.6,"angle":22.08},{"time":0.7,"angle":29.82},{"time":0.8,"angle":-13.41}],"translate":[{"x":-157.59,"y":-59.33},{"time":0.1,"x":-191.58,"y":197.82},{"time":0.2,"x":-10,"y":106.23},{"time":0.3,"x":239.36,"y":12.55},{"time":0.4,"x":558.49,"y":-39.96},{"time":0.5,"x":517.71,"y":-176.13},{"time":0.6,"x":249.12,"y":-178.34},{"time":0.7,"x":11.48,"y":-146.59},{"time":0.8,"x":-157.59,"y":-59.33}]},"l_upparm":{"rotate":[{"angle":121.1},{"time":0.1,"angle":113.65},{"time":0.2,"angle":153.35},{"time":0.3,"angle":138.84},{"time":0.4,"angle":121.54},{"time":0.5,"angle":114.98},{"time":0.6,"angle":121.16},{"time":0.7,"angle":148.41},{"time":0.8,"angle":121.1}],"translate":[{"x":-7.3,"y":263.84}]},"r_finger_b":{"rotate":[{"angle":-31.61},{"time":0.2,"angle":-25.95},{"time":0.3,"angle":-40.66},{"time":0.4,"angle":-120.95},{"time":0.7,"angle":-134.91},{"time":0.8,"angle":-31.61}],"translate":[{"x":78.27,"y":97.55},{"time":0.2,"x":144.96,"y":155.26},{"time":0.3,"x":129.1,"y":139.7},{"time":0.4,"x":188.45,"y":155.72},{"time":0.7,"x":171.78,"y":113.86},{"time":0.8,"x":78.27,"y":97.55}],"scale":[{"x":0.674}]},"r_finger_c":{"rotate":[{"angle":-22.53},{"time":0.2,"angle":-16.45},{"time":0.3,"angle":-31.17},{"time":0.4,"angle":-115.08},{"time":0.7,"angle":-125.53},{"time":0.8,"angle":-22.53}],"translate":[{"x":6.64,"y":106.41},{"time":0.2,"x":73.32,"y":164.13},{"time":0.3,"x":57.46,"y":148.57},{"time":0.4,"x":63.53,"y":172.35},{"time":0.7,"x":43.59,"y":126.34},{"time":0.8,"x":6.64,"y":106.41}],"scale":[{"x":0.674}]},"r_finger_d":{"rotate":[{"angle":1.61},{"time":0.2,"angle":8.67},{"time":0.3,"angle":-6.04},{"time":0.4,"angle":-87.39},{"time":0.7,"angle":-118.41},{"time":0.8,"angle":1.61}],"translate":[{"x":-11.55,"y":135.14},{"time":0.2,"x":55.13,"y":192.85},{"time":0.3,"x":39.27,"y":177.3},{"time":0.4,"x":-13.43,"y":192.22},{"time":0.7,"x":25.4,"y":155.06},{"time":0.8,"x":-11.55,"y":135.14}],"scale":[{"x":0.674}]},"r_finger_a":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72}],"translate":[{"x":131.03,"y":-25.92}],"scale":[{"x":0.356,"y":0.528}]},"r_upparm2":{"rotate":[{"angle":4}],"translate":[{},{"time":0.1,"x":-23.06,"y":-56.12},{"time":0.2,"x":18.62,"y":-75.54},{"time":0.3,"x":38.71,"y":-22.49},{"time":0.4,"x":39.74,"y":16.28},{"time":0.5,"x":47.56,"y":21.53},{"time":0.6,"x":15.76,"y":-82.19},{"time":0.7,"x":53.32,"y":-22.94},{"time":0.8}],"scale":[{"x":0.874,"y":0.874}]},"l_finger_c":{"rotate":[{"angle":67.75},{"time":0.2,"angle":46.4},{"time":0.4,"angle":29.53},{"time":0.5,"angle":73.3,"curve":"stepped"},{"time":0.7,"angle":73.3},{"time":0.8,"angle":67.75}]},"l_finger_b":{"rotate":[{"angle":12.29},{"time":0.2,"angle":-9.05},{"time":0.4,"angle":-25.92},{"time":0.5,"angle":17.85,"curve":"stepped"},{"time":0.7,"angle":17.85},{"time":0.8,"angle":12.29}]},"l_finger_a":{"rotate":[{"angle":-21},{"time":0.2,"angle":-42.35},{"time":0.4,"angle":-59.21},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.7,"angle":-15.44},{"time":0.8,"angle":-21}]},"l_finger_d":{"rotate":[{"angle":104.78},{"time":0.2,"angle":83.43},{"time":0.4,"angle":66.56},{"time":0.5,"angle":110.34,"curve":"stepped"},{"time":0.7,"angle":110.34},{"time":0.8,"angle":104.78}]},"l_finger_b2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l_finger_c2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l_finger_d2":{"rotate":[{"angle":40.88},{"time":0.2,"angle":19.53},{"time":0.4,"angle":31.61},{"time":0.5,"angle":77.44},{"time":0.7,"angle":65.91},{"time":0.8,"angle":40.88}]},"l_finger_a2":{"rotate":[{"angle":19.49},{"time":0.2,"angle":-1.85},{"time":0.4,"angle":10.22},{"time":0.5,"angle":56.06},{"time":0.7,"angle":44.53},{"time":0.8,"angle":19.49}]},"l_ik2":{"translate":[{"x":91.54,"y":85.04},{"time":0.1,"x":57.37,"y":79.54},{"time":0.2,"x":46.58,"y":84.16},{"time":0.3,"x":43.88,"y":-108.48},{"time":0.4,"x":50.02,"y":-49.47},{"time":0.5,"x":61.7,"y":4.19},{"time":0.6,"x":69.69,"y":-9.68},{"time":0.7,"x":87.16,"y":32.39},{"time":0.8,"x":91.54,"y":85.04}]},"r_ik":{"rotate":[{"angle":102.66},{"time":0.1,"angle":27.72},{"time":0.2,"angle":-23.72},{"time":0.3,"angle":-35},{"time":0.4,"angle":-34.26},{"time":0.5},{"time":0.6,"angle":71.42},{"time":0.7,"angle":72.92},{"time":0.8,"angle":102.66}],"translate":[{"x":275.23,"y":-9.7},{"time":0.1,"x":9.93,"y":99.3},{"time":0.2,"x":-62.42,"y":126.65},{"time":0.3,"x":101.76,"y":271.14},{"time":0.4,"x":262.35,"y":318.34},{"time":0.5,"x":364.24,"y":281.87},{"time":0.6,"x":380.54,"y":150.47},{"time":0.7,"x":448.94,"y":120.68},{"time":0.8,"x":275.23,"y":-9.7}],"scale":[{"y":-1}]},"l_leg":{"rotate":[{"angle":67.12}]},"r_leg":{"rotate":[{"angle":125.66}],"scale":[{"x":0.787,"y":-1}]},"r_ik2":{"translate":[{"x":128.11,"y":-106.46},{"time":0.1,"x":78.5,"y":-78.71},{"time":0.2,"x":-2.33,"y":39.33},{"time":0.3,"x":87.53,"y":45.77},{"time":0.4,"x":81.77,"y":1.21},{"time":0.5,"x":108.09,"y":16.09},{"time":0.6,"x":105.52,"y":-61.86},{"time":0.7,"x":117.78,"y":-18.96},{"time":0.8,"x":128.11,"y":-106.46}]},"r_upparm3":{"rotate":[{"angle":-27.65},{"time":0.1,"angle":-53.5},{"time":0.2,"angle":-105.96},{"time":0.3,"angle":-138.28},{"time":0.4,"angle":-125.37},{"time":0.5,"angle":-109.13},{"time":0.6,"angle":-88.34},{"time":0.7,"angle":-34.45},{"time":0.8,"angle":-27.65}]},"r_hand":{"translate":[{"x":-108.92,"y":-86.21},{"time":0.1,"x":-231.8,"y":-34.01},{"time":0.2,"x":-257.1,"y":-45.29},{"time":0.3,"x":-225.91,"y":-67.47},{"time":0.4,"x":-184.87,"y":-44.92},{"time":0.5,"x":-188.82,"y":-80.85},{"time":0.6,"x":-168.25,"y":-121.48},{"time":0.7,"x":-163.45,"y":-119.28},{"time":0.8,"x":-108.92,"y":-86.21}]},"r_arm":{"rotate":[{"angle":-11.76}]},"l_upparm2":{"rotate":[{"angle":-76.23}],"translate":[{"x":-56.13,"y":20.55},{"time":0.1,"x":-86.33,"y":42.77},{"time":0.2,"curve":"stepped"},{"time":0.3},{"time":0.4,"x":-97.89,"y":54.46},{"time":0.5},{"time":0.6,"x":-50.26,"y":59.34},{"time":0.7,"x":-44.26,"y":70.92},{"time":0.8,"x":-56.13,"y":20.55}]},"shadow":{"translate":[{"x":195.38},{"time":0.0667,"x":178.18},{"time":0.4667,"x":274.91},{"time":0.7667,"x":203.98},{"time":0.8,"x":195.38}],"scale":[{"y":1.081},{"time":0.0667},{"time":0.4667,"y":1.458},{"time":0.7667,"y":1.122},{"time":0.8,"y":1.081}]},"r_finger_a2":{"rotate":[{"angle":2.72},{"time":0.2,"angle":40.56},{"time":0.3,"angle":31.06},{"time":0.4,"angle":33.88},{"time":0.5,"angle":49.3},{"time":0.7,"angle":21.2},{"time":0.8,"angle":2.72}],"translate":[{"x":131.03,"y":-25.92}],"scale":[{"x":0.356,"y":0.528}]},"r_finger_b2":{"rotate":[{"angle":-72.05},{"time":0.3,"angle":-7.32},{"time":0.4,"angle":-56.97},{"time":0.5,"angle":-139.63},{"time":0.8,"angle":-72.05}],"translate":[{"x":171.78,"y":113.86},{"time":0.3,"x":144.96,"y":155.26},{"time":0.4,"x":129.1,"y":139.7},{"time":0.5,"x":188.45,"y":155.72},{"time":0.8,"x":171.78,"y":113.86}],"scale":[{"x":0.674}]},"r_finger_c2":{"rotate":[{"angle":-62.67},{"time":0.3,"angle":2.17},{"time":0.4,"angle":-47.48},{"time":0.5,"angle":-133.75},{"time":0.8,"angle":-62.67}],"translate":[{"x":43.59,"y":126.34},{"time":0.3,"x":73.32,"y":164.13},{"time":0.4,"x":57.46,"y":148.57},{"time":0.5,"x":63.53,"y":172.35},{"time":0.8,"x":43.59,"y":126.34}],"scale":[{"x":0.674}]},"r_finger_d2":{"rotate":[{"angle":-55.55},{"time":0.3,"angle":27.3},{"time":0.4,"angle":-22.35},{"time":0.5,"angle":-106.07},{"time":0.8,"angle":-55.55}],"translate":[{"x":25.4,"y":155.06},{"time":0.3,"x":55.13,"y":192.85},{"time":0.4,"x":39.27,"y":177.3},{"time":0.5,"x":-13.43,"y":192.22},{"time":0.8,"x":25.4,"y":155.06}],"scale":[{"x":0.674}]},"l_hand2":{"rotate":[{"angle":-5.46},{"time":0.1,"angle":19.32},{"time":0.2,"angle":21.77},{"time":0.3,"angle":22.05},{"time":0.4,"angle":-91.8},{"time":0.5,"angle":-68.35},{"time":0.6,"angle":-55.42},{"time":0.7,"angle":-53.84},{"time":0.8,"angle":-5.46}],"translate":[{"x":-23.89,"y":-2.05},{"time":0.1,"x":-28.71,"y":12.87},{"time":0.2,"x":-41.75,"y":-1.02},{"time":0.3,"x":-65.66,"y":-15.55},{"time":0.4,"x":98.13,"y":100.45},{"time":0.5,"x":44.43,"y":127.78},{"time":0.6,"x":43.38,"y":135.2},{"time":0.7,"x":18.48,"y":87.3},{"time":0.8,"x":-23.89,"y":-2.05}],"scale":[{"x":0.578,"y":-0.613}]},"l_hand":{"scale":[{"x":0,"y":0}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":15.72,"curve":0.25,"c3":0.75},{"time":0.4,"angle":42.03,"curve":0.25,"c3":0.75},{"time":0.8,"angle":15.72}],"translate":[{"x":-130.42,"y":78.94}],"scale":[{"x":0.677}]},"tail2":{"rotate":[{"angle":7.09,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":14,"curve":0.25,"c3":0.75},{"time":0.5,"angle":-23.49,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":7.09}]},"tail3":{"rotate":[{"angle":21.47,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":50.3,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-7.35,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":21.47}]},"tail4":{"rotate":[{"angle":11.12,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":60.3,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.4,"angle":49.18,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":11.12}]},"tail5":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":13.76,"curve":0.25,"c3":0.75},{"time":0.8}]},"tail6":{"rotate":[{"angle":-24.36,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-17.3,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.4,"angle":-48.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.5,"angle":-55.58,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":-24.36}]},"skirt_f":{"rotate":[{"angle":16.01},{"time":0.1,"angle":37.11},{"time":0.4,"angle":72.86},{"time":0.5,"angle":79.35},{"time":0.8,"angle":16.01}],"scale":[{"x":0.554}]},"skirt_f2":{"rotate":[{"angle":8.67},{"time":0.2,"angle":26.26},{"time":0.6,"angle":-8.92},{"time":0.8,"angle":8.67}]},"skirt_f3":{"rotate":[{"angle":-8.92},{"time":0.4,"angle":26.26},{"time":0.8,"angle":-8.92}]},"r_leg5":{"rotate":[{"angle":-21.75},{"time":0.3},{"time":0.7,"angle":-26.67},{"time":0.8,"angle":-21.75}]},"l_leg5":{"rotate":[{"angle":7.51},{"time":0.1},{"time":0.5,"angle":40.71},{"time":0.8,"angle":7.51}]},"hair_t":{"rotate":[{"angle":4.07,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":17.13,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-8.99,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":4.07}]},"hair_t2":{"rotate":[{"angle":-2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":8.12,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":-2.92}]},"hair_t3":{"rotate":[{"angle":0.21,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-23.63,"curve":0.25,"c3":0.75},{"time":0.6,"angle":24.05,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":0.21}]},"hair_t4":{"rotate":[{"angle":15.32,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-41.21,"curve":0.25,"c3":0.75},{"time":0.7,"angle":28.11,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":15.32}]},"hair_t6":{"rotate":[{"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.4,"angle":26.71,"curve":0.25,"c3":0.75},{"time":0.8,"angle":-5.42}]},"hair_t7":{"rotate":[{"angle":0.51,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.5,"angle":26.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":0.8,"angle":0.51}]},"hair_t8":{"rotate":[{"angle":10.65,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.6,"angle":26.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":10.65}]},"hair_t9":{"rotate":[{"angle":20.79,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.3,"angle":-5.42,"curve":0.25,"c3":0.75},{"time":0.7,"angle":26.71,"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.8,"angle":20.79}]},"hair_t5":{"rotate":[{"angle":30.87,"curve":0.25,"c3":0.75},{"time":0.4,"curve":0.25,"c3":0.75},{"time":0.8,"angle":30.87}]},"r_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8}]},"r_ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3}]},"l_ear2":{"rotate":[{"angle":9.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"curve":0.25,"c3":0.75},{"time":0.6,"angle":18.59,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":9.3}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.4,"angle":18.59,"curve":0.25,"c3":0.75},{"time":0.8}]},"r_beard":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38}]},"r_beard2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88}]},"r_beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72}]},"l_beard3":{"rotate":[{"angle":31.72},{"time":0.4,"angle":-30.78},{"time":0.8,"angle":31.72}]},"l_bear2":{"rotate":[{"angle":3.88,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-27.48,"curve":0.25,"c3":0.75},{"time":0.6,"angle":35.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":3.88}]},"l_bear":{"rotate":[{"angle":-25.38},{"time":0.4,"angle":-25.49},{"time":0.8,"angle":-25.38}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"r_leg3":{"rotate":[{"angle":-24.54}]},"r_leg2":{"rotate":[{"angle":55.93}]},"l_leg3":{"rotate":[{"angle":-46.18}]},"l_leg2":{"rotate":[{"angle":-42.4}]},"l_armour":{"rotate":[{"angle":-39.8}]},"bodyroot":{"translate":[{"x":-126.34}]},"tailstop":{"rotate":[{"angle":-30.29,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.2,"angle":-47.74,"curve":0.25,"c3":0.75},{"time":0.6,"angle":-12.84,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.8,"angle":-30.29}],"translate":[{"x":-181.44,"y":-83.48,"curve":0.25,"c3":0.75},{"time":0.4,"x":-107.24,"y":230.63,"curve":0.25,"c3":0.75},{"time":0.8,"x":-181.44,"y":-83.48}],"scale":[{"x":0.677,"curve":0.25,"c3":0.75},{"time":0.4,"x":0.716,"y":1.223,"curve":0.25,"c3":0.75},{"time":0.8,"x":0.677}]}},"ik":{"r_ik2":[{"softness":50,"bendPositive":false}]},"transform":{"tailstop":[{}]},"deform":{"default":{"body":{"body":[{"vertices":[52.44019,-63.66705,-12.18713,-46.30569,27.38737,-39.27646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.42802,-49.83972,0,0,0,0,0,0,0,0,22.63917,13.60535,4.29755,26.06119,63.53899,47.21695,5.17964,78.9928,77.58504,71.58575,-4.28914,105.4783,69.26449,111.30002,-38.82953,125.12112,31.50249,92.7558,-50.26611,84.08142,73.02119,28.04686,27.64014,106.09567,81.50483,51.28856,7.86224,121.12152,92.1498,54.9428,7.28735,131.9566,76.07975,44.30603,2.46509,104.53262,0,0,-13.2159,15.58701,4.62152,-5.94421,22.45866,-27.47598,37.44933,-45.57159,142.30887,-61.974,106.15457,117.64508,4.18413,-193.21259,23.4961,-62.50654,62.42265,-22.3002,110.69176,-50.68269,104.50172,87.03677,41.56684,-128.7578,113.5101,-31.4375,123.3315,-60.03928,109.60432,110.3493,49.89716,22.95819,51.672,-94.72869,97.96159,9.17746,106.22954,-94.49485,114.09559,65.8175,-35.58823,-107.3894,81.10829,64.54388,15.7094,-260.59818,201.99127,-138.08838,5.19271,-138.24823,105.41862,-64.11746,178.94919,-21.79572,98.22049,181.77829,85.74295,37.16302,155.17085,-24.09232,55.39209,-51.82449,11.60326,-10.13455,15.2382,2.27859,133.17087,-96.95332,136.55838,95.87506,-7.02176,-23.28021,13.18948,-20.42807,-31.03684,-156.80276,99.4881,-122.90707,149.05884,-22.85312,82.94714,146.95276,9.20917,-16.10992,18.19316,3.65289,-3.7588,-102.26871,75.48494,-69.10156,-3.0832,-39.2578,28.16641,-23.01251,15.95902,3.12903,8.28933,20.5321]}]},"l_hand2":{"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}],"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r_arm":{"r_arm":[{"vertices":[15.44727,30.00027,-3.32779,52.10394,-10.84784,58.07742,-26.68137,38.92474,-24.89618,27.06427,-19.45175,-9.10559,-13.2243,-25.12997,-6.32959,-42.8717,13.54465,-58.65851,19.02359,-63.01065,23.88965,-26.04678,4.07788,-38.5043]}]},"r_armour_u":{"r_armour_u":[{"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]},{"time":0.4,"offset":4,"vertices":[163.9654,-45.00104,177.28926,99.94327,181.48798,-69.53613,202.98242,108.74658,140.53593,-68.87366,203.46579,65.00528,76.7599,-81.34448,151.37636,9.09085]},{"time":0.8,"offset":4,"vertices":[151.61502,-80.10638,157.12215,68.66666,179.63031,-103.90335,193.19212,75.75,119.94261,-122.9281,170.87941,17.21213,64.40953,-116.44983,131.20924,-22.18576]}]},"r_hand":{"r_hand":[{"vertices":[106.49825,72.85461,61.83717,234.74945,69.7912,101.20599,99.5771,-42.22052]}]},"r_upparm":{"r_upparm":[{"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]},{"time":0.1,"vertices":[-28.71144,-44.1958,56.25366,21.75468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88.93488,43.86108,51.64029,65.98203,0.65607,47.6413,-54.5849,17.91281,-131.43018,-29.84882]},{"time":0.2,"vertices":[-70.29115,-121.59358,129.93558,-53.69101,0,0,0,0,0,0,0,0,0,0,0,0,60.33824,12.40262,1.57361,70.47795,138.48999,146.07806,67.43813,181.56848,-45.18221,149.7756,-149.39273,46.96301,-219.99423,-105.85606,-43.01499,-68.8707,65.8432,-65.57346,-24.77599,-39.39505,37.61963,-37.69945]},{"time":0.3,"vertices":[-142.63615,-149.74637,47.56436,-137.68623,0,0,0,0,0,0,0,0,0,0,0,0,50.28187,10.33552,1.31134,58.73162,40.17482,138.09778,-59.78693,144.63666,-163.83813,74.89461,-232.30444,-49.23798,-259.16425,-211.93402,-35.84583,-57.39225,54.86933,-54.64455,-20.64665,-32.82921,31.34969,-31.41621,12.45225,-6.3985,16.0213,-0.0816]},{"time":0.4,"vertices":[-114.10892,-119.7971,38.05149,-110.14899,0,0,0,0,0,0,0,0,0,0,0,0,40.22549,8.26841,1.04907,46.9853,17.968,82.77934,-63.6477,81.75819,-145.03168,21.48185,-197.31894,-77.27264,-203.24228,-209.83081,-28.67666,-45.9138,43.89547,-43.71564,-16.51732,-26.26337,25.07975,-25.13297,9.9618,-5.1188,12.81704,-0.06528]},{"time":0.5,"vertices":[-85.5817,-89.84782,28.53862,-82.61174,0,0,0,0,0,0,0,0,0,0,0,0,30.16912,6.20131,0.7868,35.23898,11.92402,64.56107,-49.2754,62.96702,-109.30013,16.21414,-146.1988,-59.89482,-150.68185,-159.84299,-21.5075,-34.43535,32.9216,-32.78673,-12.38799,-19.69753,18.80981,-18.84972,7.47135,-3.8391,9.61278,-0.04896]},{"time":0.6,"vertices":[-57.05446,-59.89854,19.02575,-55.07449,0,0,0,0,0,0,0,0,0,0,0,0,20.11275,4.13421,0.52454,23.49265,85.12775,89.96481,24.06255,114.93831,-62.65114,98.66886,-151.15407,45.04043,-190.00272,-40.19608,-14.33833,-22.9569,21.94773,-21.85782,-8.25866,-13.13168,12.53988,-12.56648,4.9809,-2.5594,6.40852,-0.03264]},{"time":0.7,"vertices":[-28.52724,-29.94928,9.51288,-27.53725,0,0,0,0,0,0,0,0,0,0,0,0,10.05638,2.0671,0.26227,11.74633,97.34462,37.31192,50.5202,69.83792,-27.32924,70.25962,-114.90354,35.7408,-166.87126,-25.32079,-7.16917,-11.47845,10.97387,-10.92891,-4.12933,-6.56584,6.26994,-6.28324,2.49045,-1.2797,3.20426,-0.01632]},{"time":0.8,"vertices":[-32.81308,-50.50949,64.2899,24.86249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72.64363,-26.2749,35.01944,-8.35641,12.34354,13.19168,-55.03098,15.61407,-114.10587,-17.06326]}]},"skirt_f":{"skirt_f":[{"vertices":[35.81818,-3.6875,39.17149,-3.98846,2.36737,-0.86804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.52529,-22.64508,24.78587,-26.6861,28.62631,-22.51886,67.57469,-48.15497,59.54384,-57.79132,83.82215,-53.5672,74.78942,-65.59021,-43.89932,46.33734,-18.26237,7.9278,0,0,0,0,0,0,11.983,-6.11731,-13.72738,3.23785,-13.0817,5.27094,25.99117,-19.65289,22.73274,-23.34479,0,0,0,0,0,0,0,0,-0.11163,0.02496,-0.10563,0.04224,27.33977,-2.78223,9.39142,13.24054,0,0,0,0,0,0,0,0,0,0,4.02523,-3.20117,3.49873,-3.76947,2.99234,-0.21301,64.49009,-39.26947,57.83382,-48.54248]},{"time":0.1,"vertices":[29.77103,5.39417,30.0675,-3.43262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74.49672,-23.86407,63.89751,-45.12604,82.84251,-46.12787,65.17497,-68.86804,-3.84917,2.3681,-24.82707,-23.53223,0,0,0,0,0,0,-1.31363,0.83984,-8.37158,5.35114,-6.37955,7.61755,21.60481,-10.06567,17.58562,-16.08618,0,0,0,0,0,0,0,0,0,0,0,0,18.72389,-2.96655,19.30846,1.07959,-3.83809,2.36029,-3.84302,2.35248,0,0,0,0,0,0,-6.52203,1.63745,-5.73038,3.5202,2.70682,-0.42847,72.03828,-37.46112,57.46828,-57.35541]},{"time":0.2,"vertices":[-10.04969,2.73807,11.70756,13.7414,-18.09149,2.26469,-19.20455,5.93506,-11.55451,-12.96573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.3334,-0.83588,0.20313,-0.87646,24.80927,-22.33905,12.36267,-31.01239,7.54532,-32.52161,44.9576,-40.38214,22.44687,-56.10919,47.03943,-38.67505,25.06897,-55.50098,-6.95396,22.94112,-36.46767,2.33705,0,0,0,0,0,0,13.88802,-10.00909,0,0,0,0,18.66487,-16.08008,9.62213,-22.68195,0,0,0,0,0,0,0,0,0,0,0,0,21.18966,-3.96492,17.27429,17.16789,0,0,0,0,0,0,0,0,0,0,0.59949,-0.53894,0.29929,-0.74969,10.05263,-0.3857,43.32411,-36.52094,22.6911,-51.92395]},{"time":0.3,"vertices":[32.96143,42.9007,36.27815,35.07705,-6.40857,21.45368,-38.4091,11.87012,-23.10901,-25.93146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13.66522,-11.19592,9.67724,-14.77771,4.79333,-17.00208,42.37201,-35.92627,29.63678,-46.98547,60.88477,-51.64868,42.57747,-67.53815,17.2459,34.70853,-0.27335,27.82636,-62.52094,-35.15393,-70.1869,-14.76245,-71.38336,6.9856,-65.36993,-19.04333,-147.13306,-16.39813,-145.26855,28.52521,-13.59222,-27.56677,-21.23542,-22.20966,-17.08845,-7.50128,-18.55252,-2.02631,-2.00135,-0.87878,-2.17343,-0.23834,-138.15216,-23.08295,-138.70569,19.45636,60.18911,5.80254,57.08116,27.12878,-18.29591,-8.03143,-19.86368,-2.16962,-103.66052,-14.96423,-103.36949,16.84503,-93.54749,47.0957,-37.90393,-26.94879,-44.24208,-14.32513,25.86692,0.85528,29.33148,-46.22931,14.10792,-52.89557]},{"time":0.4,"vertices":[85.03808,92.0652,60.84875,56.4127,5.27435,40.64267,-60.38025,15.18234,-37.98126,-42.51804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24.50174,-6.88995,23.18378,-10.50537,39.7272,-11.17102,37.58984,-17.03296,169.01555,100.40013,102.75883,100.44009,0,0,0,0,0,0,-148.26126,9.08026,-179.54529,25.46252,-173.65207,52.24176,-72.85404,16.16473,-69.58151,26.96375,0,0,0,0,0,0,0,0,-140.4855,11.33417,-137.16751,32.38611,117.11499,32.16437,145.49597,70.59102,0,0,0,0,-105.47204,9.21844,-102.8735,25.01575,-81.18507,67.95551,-19.56075,0.50739,-19.25989,3.45074,77.78021,3.76645,-73.41949,41.85291,-66.26471,52.44482]},{"time":0.5,"vertices":[98.97076,122.33449,71.14431,75.21844,6.45155,34.72729,-43.21024,13.35388,-25.99763,-29.17289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.90942,-0.15887,2.90927,-0.15295,2.72858,-1.0188,6.39044,17.90192,6.34564,17.91156,7.17944,23.72333,7.12088,23.7345,197.09889,137.91492,126.121,172.19183,-94.86169,-6.23267,-94.84933,-6.43994,-92.40857,22.32886,-162.70685,28.44037,-224.23279,42.28723,-224.32718,41.79688,-91.37616,15.74432,-91.41458,15.54291,-31.54678,-2.14349,-30.73615,7.42535,-19.24805,-1.30878,-18.75409,4.53033,-183.96515,31.53412,-184.03857,31.13214,126.82291,44.03753,175.29443,89.89668,-50.26117,-3.41376,-48.96826,11.83069,-161.44751,24.45978,-161.5062,24.10504,-146.82385,71.47552,-54.05664,-0.23596,-54.05936,-0.35535,66.0486,18.34165,-56.79108,22.65503,-56.84888,22.526]},{"time":0.6,"vertices":[70.55106,80.51097,47.42953,50.14563,4.30104,23.15152,-28.80682,8.90259,-17.33176,-19.44859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.93962,-0.10592,1.93951,-0.10197,1.81905,-0.6792,4.26029,11.93461,4.23043,11.94104,0.45826,21.08649,-0.34637,20.35883,167.47198,82.80629,96.28879,112.00243,-77.90076,-1.48645,-76.72931,-13.54907,-77.89581,-1.82489,-139.95065,20.5493,-160.04181,7.89392,-159.33154,-17.01953,-77.87032,11.26345,-78.92719,-0.50081,-14.89178,-2.35162,-15.07574,-0.07941,-11.81348,-1.86609,-11.96008,-0.06354,-135.43759,12.97308,-135.81561,-8.18652,94.24568,30.76365,134.06992,60.45961,-45.53186,-8.38275,-46.27618,-1.42163,-119.92587,2.16119,-118.81512,-16.46234,-119.9386,1.64038,-72.12686,-1.35559,-71.0481,-12.52502,48.064,15.98153,-61.56853,23.28792,-63.73883,15.60138]},{"time":0.7,"vertices":[25.43316,38.42686,23.71478,25.07282,2.15052,11.57577,-14.40342,4.4513,-8.66588,-9.7243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.96981,-0.05296,0.96976,-0.05098,0.90953,-0.3396,9.2871,4.79262,9.27464,4.81153,13.23838,8.40812,12.84045,8.07267,49.86007,25.83252,21.53345,50.97621,-30.03882,-13.7832,-30.00909,-13.84845,-29.97913,-13.9137,-22.32333,-8.63523,-74.55142,-23.59625,-74.50015,-23.75842,-28.49702,-13.06856,-28.4693,-13.13053,0,0,0,0,-0.20227,-0.0929,-0.20227,-0.09393,-37.01572,-12.8902,-36.98819,-12.97009,29.6137,6.47106,44.05499,18.03541,-29.31354,-13.52759,-29.28421,-13.59149,-35.31091,-11.17645,-35.28683,-11.25311,-35.26239,-11.3299,-59.13733,-27.13458,-59.07843,-27.26324,8.63378,0.39027,4.58519,0.96617,4.58145,0.97473]},{"time":0.8,"vertices":[35.81818,-3.6875,39.17149,-3.98846,2.36737,-0.86804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28.52529,-22.64508,24.78587,-26.6861,28.62631,-22.51886,67.57469,-48.15497,59.54384,-57.79132,83.82215,-53.5672,74.78942,-65.59021,-43.89932,46.33734,-18.26237,7.9278,0,0,0,0,0,0,11.983,-6.11731,-13.72738,3.23785,-13.0817,5.27094,25.99117,-19.65289,22.73274,-23.34479,0,0,0,0,0,0,0,0,-0.11163,0.02496,-0.10563,0.04224,27.33977,-2.78223,9.39142,13.24054,0,0,0,0,0,0,0,0,0,0,4.02523,-3.20117,3.49873,-3.76947,2.99234,-0.21301,64.49009,-39.26947,57.83382,-48.54248]}]}}},"drawOrder":[{"offsets":[{"slot":"body","offset":7},{"slot":"r_leg","offset":6},{"slot":"l_hand2","offset":-35},{"slot":"r_finger_d2","offset":-37},{"slot":"r_finger_c2","offset":-38},{"slot":"r_finger_b2","offset":-39},{"slot":"r_finger_a2","offset":-40}]}]},"win":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"name":"eyefire/eyefire_00010"},{"time":0.0333,"name":"eyefire/eyefire_00001"},{"time":0.0667,"name":"eyefire/eyefire_00002"},{"time":0.1,"name":"eyefire/eyefire_00003"},{"time":0.1333,"name":"eyefire/eyefire_00004"},{"time":0.1667,"name":"eyefire/eyefire_00005"},{"time":0.2,"name":"eyefire/eyefire_00006"},{"time":0.2333,"name":"eyefire/eyefire_00007"},{"time":0.2667,"name":"eyefire/eyefire_00009"},{"time":0.3,"name":"eyefire/eyefire_00010"},{"time":0.3333,"name":"eyefire/eyefire_00011"},{"time":0.3667,"name":"eyefire/eyefire_00012"},{"time":0.4,"name":"eyefire/eyefire_00013"},{"time":0.4333,"name":"eyefire/eyefire_00014"},{"time":0.4667,"name":"eyefire/eyefire_00015"},{"time":0.5,"name":"eyefire/eyefire_00016"},{"time":0.5333,"name":"eyefire/eyefire_00017"},{"time":0.5667,"name":"eyefire/eyefire_00018"},{"time":0.6,"name":"eyefire/eyefire_00019"},{"time":0.6333,"name":"eyefire/eyefire_00020"},{"time":0.6667,"name":"eyefire/eyefire_00021"},{"time":0.7,"name":"eyefire/eyefire_00022"},{"time":0.7333,"name":"eyefire/eyefire_00023"},{"time":0.7667,"name":"eyefire/eyefire_00024"},{"time":0.8,"name":"eyefire/eyefire_00025"},{"time":0.8333,"name":"eyefire/eyefire_00027"},{"time":0.8667,"name":"eyefire/eyefire_00028"},{"time":0.9,"name":"eyefire/eyefire_00029"},{"time":0.9333,"name":"eyefire/eyefire_00030"},{"time":0.9667,"name":"eyefire/eyefire_00031"},{"time":1,"name":"eyefire/eyefire_00032"},{"time":1.0333,"name":"eyefire/eyefire_00033"},{"time":1.0667,"name":"eyefire/eyefire_00034"},{"time":1.1,"name":"eyefire/eyefire_00035"},{"time":1.1333,"name":"eyefire/eyefire_00036"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00001"},{"time":1.2333,"name":"eyefire/eyefire_00002"},{"time":1.2667,"name":"eyefire/eyefire_00003"},{"time":1.3,"name":"eyefire/eyefire_00004"},{"time":1.3333,"name":"eyefire/eyefire_00005"},{"time":1.3667,"name":"eyefire/eyefire_00006"},{"time":1.4,"name":"eyefire/eyefire_00008"},{"time":1.4333,"name":"eyefire/eyefire_00009"},{"time":1.4667,"name":"eyefire/eyefire_00010"},{"time":1.5,"name":"eyefire/eyefire_00011"},{"time":1.5333,"name":"eyefire/eyefire_00012"},{"time":1.5667,"name":"eyefire/eyefire_00013"},{"time":1.6,"name":"eyefire/eyefire_00014"},{"time":1.6333,"name":"eyefire/eyefire_00015"},{"time":1.6667,"name":"eyefire/eyefire_00016"},{"time":1.7,"name":"eyefire/eyefire_00017"},{"time":1.7333,"name":"eyefire/eyefire_00018"},{"time":1.7667,"name":"eyefire/eyefire_00019"},{"time":1.8,"name":"eyefire/eyefire_00020"},{"time":1.8333,"name":"eyefire/eyefire_00021"},{"time":1.8667,"name":"eyefire/eyefire_00022"},{"time":1.9,"name":"eyefire/eyefire_00023"},{"time":1.9333,"name":"eyefire/eyefire_00025"},{"time":1.9667,"name":"eyefire/eyefire_00026"},{"time":2,"name":"eyefire/eyefire_00027"},{"time":2.0333,"name":"eyefire/eyefire_00028"},{"time":2.0667,"name":"eyefire/eyefire_00029"},{"time":2.1,"name":"eyefire/eyefire_00030"},{"time":2.1333,"name":"eyefire/eyefire_00031"},{"time":2.1667,"name":"eyefire/eyefire_00032"},{"time":2.2,"name":"eyefire/eyefire_00033"},{"time":2.2333,"name":"eyefire/eyefire_00034"},{"time":2.2667,"name":"eyefire/eyefire_00035"},{"time":2.3,"name":"eyefire/eyefire_00036"},{"time":2.3333,"name":"eyefire/eyefire_00037"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"l_hand2":{"scale":[{"x":0,"y":0}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"angle":-9.73,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-30.86,"curve":0.345,"c2":0.38,"c3":0.68,"c4":0.72},{"time":0.6333,"angle":5.05,"curve":0.374,"c2":0.62,"c3":0.715},{"time":1.0333,"angle":19.96},{"time":2.3333,"angle":-11.07},{"time":2.7,"angle":-43.99},{"time":3.0667,"angle":-6.52,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":3.3333,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":51.72,"y":-127.82,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"x":224.95,"y":-231.56,"curve":0.332,"c2":0.33,"c3":0.671,"c4":0.68},{"time":0.6333,"x":184.79,"y":-158.2,"curve":0.382,"c2":0.55,"c3":0.741},{"time":1.0333,"x":0.45,"y":-6.94},{"time":2.3333,"x":-250.97,"y":25.77},{"time":2.7,"x":-119.46,"y":-47.4},{"time":3.0667,"x":81.17,"y":-163.11,"curve":0.298,"c3":0.635,"c4":0.36},{"time":3.3333}]},"r_upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.1333,"angle":2.59,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"angle":1.66,"curve":0.332,"c2":0.33,"c3":0.671,"c4":0.68},{"time":0.6333,"angle":-2.35,"curve":0.382,"c2":0.55,"c3":0.741},{"time":1.0333,"angle":-40.6},{"time":2.3333,"angle":-77.76},{"time":2.7,"angle":-33.43},{"time":3.0667,"angle":4.36,"curve":0.298,"c3":0.635,"c4":0.36},{"time":3.3333,"angle":-6.74}],"translate":[{"curve":0.287,"c3":0.627,"c4":0.38},{"time":0.4333,"x":5.01,"y":-41.99,"curve":0.321,"c2":0.29,"c3":0.656,"c4":0.62},{"time":0.6333,"x":-9.95,"y":-24.83,"curve":0.32,"c2":0.29,"c3":0.658,"c4":0.64},{"time":1.0333,"x":3.71,"y":-101.32,"curve":0.369,"c2":0.47,"c3":0.753},{"time":2.3333,"x":-81.96,"y":-113.61},{"time":3.0667}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"angle":53.47,"curve":0.34,"c2":0.35,"c3":0.676,"c4":0.69},{"time":0.4,"angle":41.4,"curve":0.382,"c2":0.58,"c3":0.732},{"time":1.0333,"angle":44.02},{"time":2.3333,"angle":83.52},{"time":3.0667,"angle":14.41}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.0333,"x":24.67,"y":-27.07,"curve":"stepped"},{"time":2.3333,"x":24.67,"y":-27.07},{"time":3.0667}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":-0.87,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-12.03,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1.0333,"angle":-22.37},{"time":2.3333,"angle":-48.57},{"time":3.0667,"angle":-9.49}],"translate":[{"curve":0.287,"c3":0.627,"c4":0.38},{"time":0.4333,"x":-57.53,"y":51.05,"curve":0.316,"c2":0.27,"c3":0.757},{"time":2.3333,"x":8.72,"y":10.39},{"time":3.0667}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":-3.02,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-6.1,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1.0333,"angle":-68.02},{"time":2.3333,"angle":-92.77},{"time":3.0667,"angle":-8.92}],"translate":[{"curve":0.287,"c3":0.627,"c4":0.38},{"time":0.4333,"x":14.84,"y":94.75,"curve":0.306,"c2":0.24,"c3":0.649,"c4":0.61},{"time":1.0333,"x":30.23,"y":34.59,"curve":0.369,"c2":0.47,"c3":0.753},{"time":2.3333,"x":60.48,"y":5.29},{"time":3.0667}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.1333,"angle":-11.3,"curve":0.345,"c2":0.38,"c3":0.679,"c4":0.72},{"time":0.4333,"angle":4.57,"curve":0.368,"c2":0.63,"c3":0.705},{"time":1.0333,"angle":41.65},{"time":2.3333,"angle":53.63},{"time":3.0667,"angle":31.13,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":3.3333,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.0333,"x":79.8,"y":3.04,"curve":"stepped"},{"time":2.3333,"x":79.8,"y":3.04},{"time":3.0667,"x":-7.85,"y":2.92}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.246,"c3":0.719,"c4":0.87},{"time":0.4,"angle":-4.29,"curve":0.355,"c2":0.65,"c3":0.689},{"time":0.4333,"angle":14.93,"curve":0.332,"c2":0.33,"c3":0.666,"c4":0.66},{"time":0.5,"angle":-17.7,"curve":0.338,"c2":0.35,"c3":0.677,"c4":0.7},{"time":0.7,"angle":47.15,"curve":0.382,"c2":0.58,"c3":0.734},{"time":1.0333,"angle":93.16},{"time":2.3333,"angle":121.01},{"time":3.0667,"angle":75.19,"curve":0.317,"c3":0.651,"c4":0.35},{"time":3.1,"angle":-0.62,"curve":0.274,"c2":0.1,"c3":0.63,"c4":0.52},{"time":3.3333,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":-137.1,"y":88.66,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"x":-128.25,"y":2.45,"curve":0.337,"c2":0.35,"c3":0.67,"c4":0.68},{"time":0.5,"x":22.97,"y":-65.1,"curve":0.342,"c2":0.37,"c3":0.676,"c4":0.7},{"time":0.6333,"x":245.04,"y":69.41,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":0.7,"x":342.17,"y":219.97,"curve":0.37,"c2":0.63,"c3":0.709},{"time":1.0333,"x":367.31,"y":389.36},{"time":2.3333,"x":241.87,"y":504.5},{"time":3.0667,"x":196.33,"y":-13.7,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":3.3333,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4,"x":0.95,"y":0.46,"curve":0.34,"c2":0.35,"c3":0.68,"c4":0.71},{"time":0.4333,"y":-1.069,"curve":"stepped"},{"time":1.0333,"y":-1.069},{"time":2.3333,"y":-0.581},{"time":3.0667,"y":-1.069},{"time":3.1,"x":0.95,"y":0.95}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"angle":-4.04,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":0.4333,"angle":-20.74,"curve":0.381,"c2":0.59,"c3":0.73},{"time":1.0333,"angle":28.13},{"time":2.3333,"angle":51.94},{"time":3.0667,"angle":-4.31}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"angle":21.72,"curve":0.295,"c2":0.2,"c3":0.642,"c4":0.58},{"time":0.4333,"angle":14.59,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"angle":-23.03},{"time":2.3333,"angle":-38.61},{"time":3.0667}],"translate":[{"time":0.1333,"curve":0.296,"c2":0.21,"c3":0.648,"c4":0.6},{"time":0.4333,"x":-28.84,"y":103.01},{"time":1.0333,"x":-62.58,"y":33.68},{"time":2.3333,"x":-76.87,"y":3.58},{"time":3.0667}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.4333,"x":-13.16,"y":17.34,"curve":0.366,"c2":0.46,"c3":0.754},{"time":1.0333,"x":-83.56,"y":-14.11},{"time":2.3333,"x":-117.51,"y":6.9},{"time":3.0667}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"angle":-0.38},{"time":0.4333,"angle":-14.97},{"time":1.0333,"angle":-3.36},{"time":2.3333,"angle":6.3},{"time":3.0667,"angle":-17.69,"curve":0.25,"c3":0.75},{"time":3.3333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.1333,"x":3.97,"y":-59.43,"curve":0.307,"c2":0.25,"c3":0.651,"c4":0.62},{"time":0.4333,"x":71.54,"y":-90.8,"curve":0.372,"c2":0.48,"c3":0.752},{"time":1.0333,"x":63.57,"y":67.54},{"time":2.3333,"x":55.62,"y":119.19},{"time":3.0667,"x":-8.66,"y":-38.97,"curve":0.284,"c3":0.625,"c4":0.38},{"time":3.3333}]},"l_leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":25.1},{"time":3.0667}]},"l_leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-30.32},{"time":3.0667}]},"r_leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":7.26},{"time":3.0667}]},"l_leg":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-2.67},{"time":3.0667}]},"r_leg2":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-30.14},{"time":3.0667}]},"r_ik2":{"translate":[{"time":0.4333},{"time":1.0333,"x":-92.02,"y":14.21,"curve":"stepped"},{"time":2.3333,"x":-92.02,"y":14.21},{"time":3.0667}]},"r_leg3":{"rotate":[{"curve":0.25,"c3":0.75},{"time":2.3333,"angle":13.63},{"time":3.0667}]},"r_finger_c2":{"rotate":[{"angle":-9.49}]},"l_armour":{"rotate":[{"angle":1.84,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":2.46},{"time":3.0667,"curve":0.25,"c3":0.75},{"time":3.3333,"angle":1.84}]},"l_finger_c2":{"rotate":[{"angle":16.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":63.06,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"angle":68.89,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.0333,"angle":31.22,"curve":0.381,"c2":0.59,"c3":0.729},{"time":2.3333,"angle":-15.84},{"time":3.0667,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"x":8.79,"y":4.59,"curve":0.381,"c2":0.54,"c3":0.743},{"time":2.3333,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925}]},"r_upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":-0.29},{"time":3.0667,"curve":0.25,"c3":0.75},{"time":3.3333,"angle":12.65}],"translate":[{"time":2.3333},{"time":3.0667,"x":-94.88,"y":12.66,"curve":0.25,"c3":0.75},{"time":3.3333}]},"l_upparm2":{"rotate":[{"angle":-6.45,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":50.9},{"time":3.0667,"curve":0.25,"c3":0.75},{"time":3.3333,"angle":-6.45}]},"r_finger_d2":{"rotate":[{"angle":7.12}]},"l_finger_a":{"rotate":[{"angle":-2.5,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":-15.93,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":0.4333,"angle":17.56,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":1.0333,"angle":-32.51,"curve":0.367,"c2":0.63,"c3":0.705},{"time":2.3333,"angle":-55.11},{"time":3.0667,"angle":-2.5}]},"l_finger_a2":{"rotate":[{"angle":5.32,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":43.19,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"angle":50.61,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.0333,"angle":15.96,"curve":0.381,"c2":0.59,"c3":0.729},{"time":2.3333,"angle":-27.06},{"time":3.0667,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"x":-5.22,"y":-2.81,"curve":0.381,"c2":0.54,"c3":0.743},{"time":2.3333,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925}]},"r_finger_a2":{"rotate":[{"angle":14.41}]},"l_finger_b2":{"rotate":[{"angle":16.78,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":63.3,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"angle":69.13,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.0333,"angle":31.46,"curve":0.381,"c2":0.59,"c3":0.729},{"time":2.3333,"angle":-15.6},{"time":3.0667,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"x":1.23,"y":-2.03,"curve":0.381,"c2":0.54,"c3":0.743},{"time":2.3333,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925}]},"l_finger_c":{"rotate":[{"angle":-2.5,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":16.93,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":0.4333,"angle":43.53,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":1.0333,"angle":30.53,"curve":0.367,"c2":0.63,"c3":0.705},{"time":2.3333,"angle":-55.11},{"time":3.0667,"angle":-2.5}]},"r_finger_b2":{"rotate":[{"angle":-8.92}]},"l_finger_d":{"rotate":[{"angle":-2.5,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":16.93,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":0.4333,"angle":43.53,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":1.0333,"angle":51.75,"curve":0.367,"c2":0.63,"c3":0.705},{"time":2.3333,"angle":-55.11},{"time":3.0667,"angle":-2.5}]},"l_finger_d2":{"rotate":[{"angle":26.01,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":72.52,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"angle":78.35,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.0333,"angle":40.68,"curve":0.381,"c2":0.59,"c3":0.729},{"time":2.3333,"angle":-6.38},{"time":3.0667,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"x":11.04,"y":13.94,"curve":0.381,"c2":0.54,"c3":0.743},{"time":2.3333,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925}]},"r_arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":2.3333,"angle":23.59},{"time":3.0667,"curve":0.25,"c3":0.75},{"time":3.3333,"angle":-7.98}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":16.48,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":0.4333,"angle":-4.85,"curve":0.341,"c2":0.36,"c3":0.677,"c4":0.7},{"time":1.0333,"angle":27.03,"curve":0.375,"c2":0.62,"c3":0.716},{"time":2.3333,"angle":53.33},{"time":3.0667,"angle":7.12}],"translate":[{"curve":0.287,"c3":0.627,"c4":0.38},{"time":0.4333,"x":-19.99,"y":14.24,"curve":0.316,"c2":0.27,"c3":0.757},{"time":2.3333}]},"r_ear":{"rotate":[{"time":0.0667,"curve":0.332,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":9.26,"curve":0.331,"c2":0.21,"c3":0.665,"c4":0.55},{"time":0.4333,"angle":27.19,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":41.03,"curve":0.331,"c2":0.26,"c3":0.664,"c4":0.6},{"time":1.0333,"angle":1.48,"curve":0.331,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":-37.47,"curve":0.326,"c2":0.24,"c3":0.66,"c4":0.58},{"time":2.3333,"angle":-13.02},{"time":3.0667}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-17.45,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-9.68,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":37.92,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-2.28,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":21.36,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":13.37,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.5333,"angle":-27.42,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-2.28},{"time":2.7333,"angle":22.55},{"time":3.0667,"angle":-15.23,"curve":0.375,"c2":0.5,"c3":0.75},{"time":3.3333,"angle":-2.28}]},"l_ear":{"rotate":[{"time":0.0667,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":9.26,"curve":0.332,"c2":0.21,"c3":0.666,"c4":0.54},{"time":0.4333,"angle":27.19,"curve":0.332,"c2":0.26,"c3":0.666,"c4":0.6},{"time":0.6667,"angle":41.03,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":1.48,"curve":0.332,"c2":0.3,"c3":0.666,"c4":0.63},{"time":1.3,"angle":-37.47,"curve":0.329,"c2":0.24,"c3":0.663,"c4":0.57},{"time":2.3333,"angle":-13.02},{"time":3.0667}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-11.9,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-4.12,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":43.47,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":3.27,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":26.91,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":18.93,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.5333,"angle":-21.87,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":3.27},{"time":2.7333,"angle":28.1},{"time":3.0667,"angle":-9.68,"curve":0.375,"c2":0.5,"c3":0.75},{"time":3.3333,"angle":3.27}]},"l_ik":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"angle":-14.25,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.0667,"x":127.95,"y":68.89,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.1333,"x":167.31,"curve":"stepped"},{"time":3.0667,"x":167.31},{"time":3.1667,"x":39.62,"y":56.29},{"time":3.3333}]},"l_finger_b":{"rotate":[{"angle":-2.5,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.1333,"angle":16.93,"curve":0.338,"c2":0.35,"c3":0.671,"c4":0.68},{"time":0.4333,"angle":43.53,"curve":0.344,"c2":0.38,"c3":0.678,"c4":0.72},{"time":1.0333,"angle":8.58,"curve":0.367,"c2":0.63,"c3":0.705},{"time":2.3333,"angle":-55.11},{"time":3.0667,"angle":-2.5}]},"head2":{"scale":[{"time":0.6,"curve":0.32,"c2":0.29,"c3":0.66,"c4":0.65},{"time":1.0333,"x":1.035,"curve":0.375,"c2":0.5,"c3":0.75},{"time":3.0667}]},"r_upparm3":{"rotate":[{"time":0.1333},{"time":0.4333,"angle":-7.75},{"time":0.6333,"angle":-2.41},{"time":1.0333,"angle":25.14},{"time":2.3333,"angle":79.33},{"time":3.0667}]},"lock":{"scale":[{"x":0,"y":0}]},"lock2":{"scale":[{"x":0,"y":0}]},"headmouth":{"rotate":[{},{"time":0.2333,"angle":-11.46},{"time":0.6,"angle":-38.32},{"time":1.0333,"angle":-3.97},{"time":2.3333,"angle":-0.86},{"time":3.3333}],"translate":[{"time":0.2333},{"time":0.6,"x":-21.09,"y":14.18},{"time":1.0333,"x":-36.67,"y":19.76},{"time":3.3333}],"scale":[{"time":0.6},{"time":1.0333,"x":1.035},{"time":3.3333}]},"hair_t":{"rotate":[{"time":0.2,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":6.66,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":5.55,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-1.21,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":0.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":3.96,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":2.02,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-18.82,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-16.81,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":9.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":3.7,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":16.08,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":10.03,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":4.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-13.72,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":3.7,"curve":0.344,"c2":0.4,"c3":0.678,"c4":0.73},{"time":2.7,"angle":20.12,"curve":0.347,"c2":0.46,"c3":0.681,"c4":0.8},{"time":3.0667,"angle":18.79,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3.3333,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-1.02,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.2,"angle":7.89,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4333,"angle":10.25,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":28.73,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0333,"angle":16.91,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.3,"angle":-11.53,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":2.3333,"angle":5.88,"curve":0.346,"c2":0.39,"c3":0.681,"c4":0.73},{"time":2.7,"angle":22.3,"curve":0.351,"c2":0.45,"c3":0.686,"c4":0.79},{"time":3.0667,"angle":20.98,"curve":0.351,"c2":0.65,"c3":0.685},{"time":3.3333,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":"stepped"},{"time":0.0667,"angle":63.33,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":75.19,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":63.33,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":84.06,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-5.57,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":10.44,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":37.25,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":15.08,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-18.64,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":6.2,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":54.46,"curve":0.341,"c2":0.41,"c3":0.675,"c4":0.75},{"time":2.7333,"angle":44.94,"curve":0.341,"c2":0.46,"c3":0.674,"c4":0.79},{"time":3.0667,"angle":-19.18,"curve":0.34,"c2":0.66,"c3":0.673},{"time":3.3333,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":14.86,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":30.87,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":57.68,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":35.51,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":1.79,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":26.63,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":74.89,"curve":0.346,"c2":0.4,"c3":0.68,"c4":0.74},{"time":2.7333,"angle":66.05,"curve":0.346,"c2":0.45,"c3":0.68,"c4":0.79},{"time":3.0667,"angle":1.25,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3.3333,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":11.62,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":27.63,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":54.44,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":32.27,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-1.45,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":23.39,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":71.65,"curve":0.346,"c2":0.4,"c3":0.68,"c4":0.74},{"time":2.7333,"angle":62.81,"curve":0.346,"c2":0.45,"c3":0.68,"c4":0.79},{"time":3.0667,"angle":-1.99,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3.3333,"angle":23.39}],"translate":[{"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":47.25,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":63.26,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":90.07,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":67.9,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":34.18,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":59.01,"curve":0.328,"c2":0.24,"c3":0.661,"c4":0.58},{"time":2.3333,"angle":107.28,"curve":0.347,"c2":0.39,"c3":0.683,"c4":0.73},{"time":2.7333,"angle":99.59,"curve":0.353,"c2":0.44,"c3":0.688,"c4":0.78},{"time":3.0667,"angle":33.63,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":11.34,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.2,"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4333,"angle":-8.71,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":-15.11,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0333,"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.3,"angle":-11.17,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":2.3333,"angle":-90.8,"curve":0.363,"c2":0.48,"c3":0.701,"c4":0.84},{"time":3.0667,"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":18.29,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":9.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-1.77,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-8.17,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":9.54,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-4.23,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-33.96,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":9.54}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":12.42,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":3.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-7.64,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-14.04,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":3.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-10.1,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-13.04,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-8.8,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.2,"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4333,"angle":43.88,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":4.04,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0333,"angle":-12.1,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.3,"angle":6.67,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":2.3333,"angle":-22.1,"curve":0.363,"c2":0.48,"c3":0.701,"c4":0.84},{"time":3.0667,"angle":6.67}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":-23.71,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":-15.02,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":-7.19,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":13.69,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":49.86,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":30.25,"curve":0.328,"c2":0.24,"c3":0.661,"c4":0.58},{"time":2.3333,"angle":-26.11,"curve":0.364,"c2":0.47,"c3":0.706,"c4":0.84},{"time":3.0667,"angle":8.76}]},"r_ear_s":{"rotate":[{"angle":-5.67}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-4.58,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-39.59,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-2.84,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-0.15,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.8333,"angle":-27.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-64.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":25.33,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.6667,"angle":-30.41,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-55.32,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92}],"translate":[{"x":5.7,"y":-8.17}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":1.76,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":12.87,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":18.34,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":-11.06,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":-57.06,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":-64.03,"curve":0.328,"c2":0.24,"c3":0.661,"c4":0.58},{"time":2.3333,"angle":-94.92,"curve":0.347,"c2":0.39,"c3":0.683,"c4":0.73},{"time":2.7333,"angle":-61.87,"curve":0.353,"c2":0.44,"c3":0.688,"c4":0.78},{"time":3.0667,"angle":-10.34,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333,"angle":8.77}],"scale":[{"x":0.88}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-12.52,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-17.39,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":15,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":12.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":18.61,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-12.71,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.5667,"angle":7.47,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.8,"angle":1.48,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-0.61,"curve":0.346,"c2":0.4,"c3":0.68,"c4":0.74},{"time":2.7333,"angle":-33.17,"curve":0.346,"c2":0.45,"c3":0.68,"c4":0.79},{"time":3.0667,"angle":15.08,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3.3333,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":11.95,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":-18.55,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":-18.19,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":40.46,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":52.24,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":-10,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.64},{"time":1.5667,"angle":-12.46,"curve":0.332,"c2":0.31,"c3":0.665,"c4":0.64},{"time":1.8,"angle":19.09,"curve":0.331,"c2":0.29,"c3":0.664,"c4":0.63},{"time":2.3333,"angle":-10,"curve":0.347,"c2":0.39,"c3":0.683,"c4":0.73},{"time":2.7333,"angle":-42.55,"curve":0.353,"c2":0.44,"c3":0.688,"c4":0.78},{"time":3.0667,"angle":-10,"curve":0.341,"c2":0.4,"c3":0.675,"c4":0.74},{"time":3.1667,"angle":16.67,"curve":0.348,"c2":0.66,"c3":0.682},{"time":3.3333,"angle":-10}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":-22.71,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":-11.82}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-9.88,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-23.48,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":24.67,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":-22.54,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":15.47}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":11.76,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":3.01,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":-8.3,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":-14.7,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":3.01,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":-10.76,"curve":0.328,"c2":0.24,"c3":0.661,"c4":0.58},{"time":2.3333,"angle":-13.7,"curve":0.364,"c2":0.47,"c3":0.706,"c4":0.84},{"time":3.0667,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-20.13,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-4.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":32.55,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-7.29,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-23.43,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-4.66,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-33.44,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-33.06,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.2,"angle":-24.37,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4333,"angle":-16.54,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":4.34,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0333,"angle":40.5,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.3,"angle":20.9,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":2.3333,"angle":-35.46,"curve":0.363,"c2":0.48,"c3":0.701,"c4":0.84},{"time":3.0667,"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":44.77,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":36.02,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":24.71,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":18.31,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":36.02,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":22.25,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":19.31,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":25.52,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.2,"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.4333,"angle":78.2,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":0.6667,"angle":38.36,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.66},{"time":1.0333,"angle":51.74,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.3,"angle":40.99,"curve":0.332,"c2":0.33,"c3":0.665,"c4":0.66},{"time":2.3333,"angle":12.21,"curve":0.363,"c2":0.48,"c3":0.701,"c4":0.84},{"time":3.0667,"angle":40.99}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":4.59,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":0.32,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":18.19,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":22.51,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":9.15,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":2.89,"curve":0.328,"c2":0.24,"c3":0.661,"c4":0.58},{"time":2.3333,"angle":9.15}],"scale":[{"curve":0.315,"c3":0.649,"c4":0.35},{"time":0.2,"x":0.765,"curve":0.303,"c2":0.17,"c3":0.64,"c4":0.52},{"time":0.6667,"x":0.926,"curve":0.32,"c2":0.29,"c3":0.757},{"time":3.3333}],"shear":[{"y":-15.36,"curve":0.327,"c3":0.66,"c4":0.34},{"time":0.0667,"y":-17.38,"curve":0.322,"c2":0.17,"c3":0.655,"c4":0.51},{"time":0.2,"y":-11.33,"curve":0.317,"c2":0.22,"c3":0.651,"c4":0.56},{"time":0.4333,"y":-6.15,"curve":0.321,"c2":0.27,"c3":0.655,"c4":0.61},{"time":0.6667,"y":19.75,"curve":0.319,"c2":0.28,"c3":0.655,"c4":0.62},{"time":1.0333,"y":9.63,"curve":0.327,"c2":0.31,"c3":0.662,"c4":0.65},{"time":1.3,"y":-4.76,"curve":0.332,"c2":0.33,"c3":0.68,"c4":0.71},{"time":2.3333,"y":9.11,"curve":0.382,"c2":0.58,"c3":0.731},{"time":3.3333,"y":-15.36}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":27.19,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":33.9,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-26.8,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-14.92,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":9.83,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":13.99,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.6333,"angle":-7.81,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.9333,"angle":-6.3,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-11.07,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":35.19,"curve":0.345,"c2":0.66,"c3":0.679},{"time":3.3333,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.0667,"angle":-36.95,"curve":0.333,"c2":0.17,"c3":0.666,"c4":0.5},{"time":0.2,"angle":53.74,"curve":0.332,"c2":0.21,"c3":0.665,"c4":0.54},{"time":0.4333,"angle":25.62,"curve":0.332,"c2":0.26,"c3":0.665,"c4":0.6},{"time":0.6667,"angle":-37.65,"curve":0.331,"c2":0.26,"c3":0.665,"c4":0.6},{"time":1.0333,"angle":-5.89,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.3,"angle":13.13,"curve":0.332,"c2":0.3,"c3":0.665,"c4":0.63},{"time":1.6333,"angle":16.84,"curve":0.332,"c2":0.31,"c3":0.665,"c4":0.64},{"time":1.9333,"angle":-14.42,"curve":0.331,"c2":0.3,"c3":0.665,"c4":0.64},{"time":2.3333,"angle":-5.04,"curve":0.364,"c2":0.47,"c3":0.706,"c4":0.84},{"time":3.0667,"angle":18.71,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":39.34,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":19.58,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":-33.62,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.6667,"angle":-33.41,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.0333,"angle":10.54,"curve":0.336,"c2":0.34,"c3":0.67,"c4":0.68},{"time":1.3,"angle":27.82,"curve":0.352,"c2":0.41,"c3":0.69,"c4":0.76},{"time":2.3333,"angle":1.81,"curve":0.358,"c2":0.5,"c3":0.693,"c4":0.85},{"time":3.0667,"angle":7.98}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.0667,"angle":-38.05,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-26.74,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.2,"angle":-20.39,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":26.78,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.6667,"angle":-0.82,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-24.82,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.3,"angle":-2.84,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":2.3333,"angle":-9.62}],"translate":[{"curve":0.327,"c3":0.66,"c4":0.34},{"time":0.0667,"x":-15.31,"y":-28.85,"curve":0.327,"c2":0.22,"c3":0.661,"c4":0.56},{"time":0.1333,"x":0.27,"y":-5.73,"curve":0.267,"c2":0.07,"c3":0.752},{"time":3.3333}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.1333,"angle":-0.94,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.4333,"angle":-28.9,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.7667,"angle":-23.55,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.0333,"angle":-7.41,"curve":0.305,"c2":0.24,"c3":0.65,"c4":0.61},{"time":2.3333,"angle":-4.61,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":2.6667,"angle":-3.56,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667,"angle":-2.59,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333,"angle":-8.41}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-12.02,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.4333,"angle":31.84,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"angle":6.93,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":3.26,"curve":0.339,"c2":0.36,"c3":0.672,"c4":0.69},{"time":1.7,"angle":-16.24,"curve":0.34,"c2":0.37,"c3":0.674,"c4":0.7},{"time":2.3333,"angle":-20.33,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.6667,"angle":-5.53,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":3.0667,"angle":4.52}],"translate":[{"time":2.6667,"curve":0.348,"c2":0.38,"c3":0.689,"c4":0.74},{"time":3.0667,"x":-29.54,"y":15.36,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-39.69,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.4333,"angle":15.06,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.7667,"angle":19.09,"curve":0.334,"c2":0.33,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-1.39,"curve":0.337,"c2":0.34,"c3":0.671,"c4":0.68},{"time":1.7,"angle":-25.1,"curve":0.34,"c2":0.35,"c3":0.674,"c4":0.69},{"time":2.3333,"angle":-31.25,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.6667,"angle":28.93,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":3.0667,"angle":-1.85}],"translate":[{"time":0.7667,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.0333,"x":-47.16,"y":11.55,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":1.7,"x":-35.02,"y":-4.91,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":2.3333,"curve":"stepped"},{"time":2.6667,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667,"x":-7.86,"y":30.55,"curve":0.355,"c2":0.65,"c3":0.69},{"time":3.3333}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":20.68,"curve":0.327,"c2":0.31,"c3":0.661,"c4":0.65},{"time":0.4333,"angle":0.07,"curve":0.331,"c2":0.33,"c3":0.665,"c4":0.66},{"time":0.7667,"angle":16.7,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":1.0333,"angle":-6.5,"curve":0.33,"c2":0.32,"c3":0.665,"c4":0.66},{"time":1.7,"angle":-1.03,"curve":0.335,"c2":0.34,"c3":0.67,"c4":0.68},{"time":2.3333,"angle":-2.27,"curve":0.334,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.6667,"angle":-9.14,"curve":0.337,"c2":0.35,"c3":0.671,"c4":0.68},{"time":3.0667,"angle":-8.22}],"translate":[{"time":0.1333,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.4333,"x":16.25,"y":8.66,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.7667,"x":12.56,"y":25.25,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.0333,"x":35.13,"y":-2.75,"curve":0.305,"c2":0.24,"c3":0.65,"c4":0.61},{"time":2.3333,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":2.6667,"x":-30.72,"y":-65.95,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.333,"c3":0.666,"c4":0.33},{"time":0.1333,"angle":-32.28,"curve":0.312,"c2":0.14,"c3":0.647,"c4":0.49},{"time":0.4333,"angle":-68.99,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.7667,"angle":-5.77,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.0333,"angle":12.2,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":1.7,"angle":34.07,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":2.3333,"angle":30.36,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":2.6667,"angle":-18.57,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667,"angle":-11.95}],"translate":[{"time":0.4333,"curve":0.325,"c2":0.29,"c3":0.659,"c4":0.62},{"time":0.7667,"x":-33.43,"y":58.71,"curve":0.331,"c2":0.32,"c3":0.664,"c4":0.66},{"time":1.0333,"x":20.14,"y":56.86,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":1.7,"x":66.7,"y":19.3,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":2.3333,"x":-33.19,"y":15.58,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":2.6667,"x":-11.49,"y":-19.88,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.667,"c4":0.67},{"time":0.1333,"angle":-64.05,"curve":0.336,"c2":0.34,"c3":0.669,"c4":0.68},{"time":0.4333,"angle":-96.39,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":0.7667,"angle":-6.08,"curve":0.334,"c2":0.34,"c3":0.667,"c4":0.67},{"time":1.0333,"angle":-5.68,"curve":0.339,"c2":0.36,"c3":0.673,"c4":0.69},{"time":1.7,"angle":-9.01,"curve":0.34,"c2":0.36,"c3":0.673,"c4":0.7},{"time":2.3333,"angle":-45.78,"curve":0.335,"c2":0.34,"c3":0.668,"c4":0.67},{"time":2.6667,"angle":-61.3,"curve":0.336,"c2":0.35,"c3":0.67,"c4":0.69},{"time":3.0667,"angle":-8.22}],"translate":[{"time":1.0333,"curve":0.316,"c2":0.27,"c3":0.652,"c4":0.61},{"time":1.7,"x":42.33,"y":67.72,"curve":0.325,"c2":0.31,"c3":0.661,"c4":0.65},{"time":2.3333,"x":-33.57,"y":-54.38,"curve":0.333,"c2":0.33,"c3":0.666,"c4":0.67},{"time":2.6667,"x":-32.71,"y":-32.32,"curve":0.335,"c2":0.34,"c3":0.669,"c4":0.67},{"time":3.0667}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"shadow":{"translate":[{},{"time":0.1333,"x":6.12},{"time":0.4333,"x":42.81},{"time":1.0333,"x":61.15},{"time":2.3333,"x":30.57},{"time":3.0667}],"scale":[{},{"time":0.1333,"y":1.122},{"time":0.4333,"y":1.245},{"time":1.0333,"y":1.016},{"time":2.3333}]}},"deform":{"default":{"body":{"body":[{"curve":0.32,"c3":0.654,"c4":0.34},{"time":0.1333,"offset":86,"vertices":[5.0451,9.44527,-2.20056,10.4798,50.30701,22.42905,20.53204,26.96085,-1.58185,33.85263,0,0,0,0,35.66898,31.30115,7.23157,46.90298,0,0,0,0,-22.31396,56.04346,20.81387,22.35218,1.59439,30.50159,18.83447,35.95617,-8.66095,39.65601,22.93472,35.70688,-6.77682,17.55869,12.27841,-16.26207,19.85712,-4.57477,55.97604,37.60203,18.74817,64.77686,0,0,0,0,-16.82413,88.45566,12.42499,47.09189,-3.7731,14.27698,8.87115,-8.12851,12.0206,-0.53107,0,0,0,0,27.24997,44.06665,-7.42084,51.27863,38.70151,22.3745,15.28995,42.01016,0,0,0,0,20.33279,21.28975,1.90793,29.37775,7.47998,3.76376,3.31512,7.68945,35.72745,45.13236,-1.6084,57.54132,5.88739,3.10464,2.51825,6.16132],"curve":0.31,"c2":0.17,"c3":0.645,"c4":0.51},{"time":0.4333,"offset":86,"vertices":[4.73384,8.86253,-2.06479,9.83323,26.87006,-24.04652,19.165,22.61443,-0.47986,29.27431,0,0,0,0,35.44618,17.04835,11.06592,32.22263,0,0,0,0,-20.93726,52.58574,21.89874,21.22692,3.55632,29.81953,19.48387,31.73614,-5.65656,36.12146,26.41525,-22.72219,-6.35872,16.47537,-10.07715,-52.65356,6.99599,-50.26956,53.78038,25.40161,17.45874,49.96786,0,0,0,0,-10.7193,73.3888,11.39966,38.56055,-3.54031,13.39613,1.40461,-24.44805,8.52391,-20.42131,0,0,0,0,45.21333,-14.20671,37.69485,8.21214,25.02014,-28.8812,25.37322,-8.2935,0,0,0,0,22.8875,8.94796,9.77081,19.054,7.01849,3.53155,3.11059,7.21504,46.03043,14.41865,22.57002,34.80567,6.45772,0.21033,4.31869,3.69546],"curve":0.305,"c2":0.23,"c3":0.645,"c4":0.58},{"time":1.0333,"offset":86,"vertices":[3.67002,6.87089,-1.60078,7.62345,42.91488,-66.81319,24.91246,46.08875,15.83916,48.26409,0,0,0,0,63.48355,-36.33538,39.8381,-32.49761,0,0,0,0,-16.23212,40.76839,38.7455,-40.15594,16.21701,-37.80553,32.14561,-19.75468,6.13155,-19.7484,56.5175,-74.91769,-4.92975,12.77293,25.00377,-82.35127,23.34612,-85.83865,50.82815,-13.37669,20.22428,3.28735,0,0,0,0,7.0525,38.93486,42.26579,-119.77338,-2.74471,10.38568,44.05338,52.23011,68.38272,43.53645,1.35504,-2.78005,0.69617,-3.0135,70.82879,-83.42051,44.33086,-72.66207,63.21143,-83.61024,14.92519,-72.75403,0,0,0,0,26.09718,-11.18406,11.64458,-4.7623,5.44126,2.73792,2.41156,5.59363,55.97274,-33.50873,26.6702,-21.654,7.05326,-4.27803,4.34506,-1.92236],"curve":0.329,"c2":0.32,"c3":0.69,"c4":0.74},{"time":2.3333,"offset":86,"vertices":[-25.62516,62.18784,1.12145,67.9025,114.18182,-15.37035,35.79253,69.00364,55.24915,51.55732,60.84436,1.42628,55.76654,-24.38074,56.64198,41.07287,68.11708,19.909,15.61835,-2.05224,13.29596,-8.45123,-11.02475,77.6469,68.45376,-23.66485,51.6032,-46.73033,-9.43093,70.08747,17.48695,70.35064,37.28479,-17.59408,-1.74013,48.26374,77.98535,96.21485,119.86847,54.1683,136.19525,-4.082,116.88104,-52.27032,0,0,0,0,20.18226,110.3807,64.37734,-72.53389,-16.2317,67.32346,100.29227,98.23074,133.93224,50.30305,19.79016,-4.80744,16.07018,-12.69051,47.02468,-16.89116,39.20758,-27.22472,93.58087,-14.52135,77.00798,-45.47858,-2.65961,5.56114,-0.06366,6.16376,89.88593,-8.88429,75.98369,-42.02557,-13.20778,36.60072,2.58455,40.06048,79.75575,-5.65309,67.52733,-30.97015,71.20314,-5.85992,62.02469,-34.16682],"curve":0.379,"c2":0.6,"c3":0.722},{"time":3.0667}]},"r_arm":{"r_arm":[{"time":0.4333},{"time":1.0333,"vertices":[27.62976,-60.673,10.26263,-20.51413,0,0,6.23724,17.05249,23.46643,16.677,27.62976,-60.673,-7.14594,-20.8938,-15.88745,-29.24149,-15.80322,-63.74347,-15.78021,-73.2547,13.43665,-93.7583,-6.80847,-51.03955]},{"time":3.3333}]}}}},"winloop":{"slots":{"lock":{"color":[{"color":"ffffffff"}]},"lock_2":{"color":[{"color":"ffffffff"}]},"r_eye_fire":{"attachment":[{"time":0.0333,"name":"eyefire/eyefire_00002"},{"time":0.0667,"name":"eyefire/eyefire_00003"},{"time":0.1,"name":"eyefire/eyefire_00004"},{"time":0.1333,"name":"eyefire/eyefire_00006"},{"time":0.1667,"name":"eyefire/eyefire_00007"},{"time":0.2,"name":"eyefire/eyefire_00008"},{"time":0.2333,"name":"eyefire/eyefire_00010"},{"time":0.2667,"name":"eyefire/eyefire_00011"},{"time":0.3,"name":"eyefire/eyefire_00012"},{"time":0.3333,"name":"eyefire/eyefire_00014"},{"time":0.3667,"name":"eyefire/eyefire_00015"},{"time":0.4,"name":"eyefire/eyefire_00017"},{"time":0.4333,"name":"eyefire/eyefire_00018"},{"time":0.4667,"name":"eyefire/eyefire_00019"},{"time":0.5,"name":"eyefire/eyefire_00021"},{"time":0.5333,"name":"eyefire/eyefire_00022"},{"time":0.5667,"name":"eyefire/eyefire_00023"},{"time":0.6,"name":"eyefire/eyefire_00025"},{"time":0.6333,"name":"eyefire/eyefire_00026"},{"time":0.6667,"name":"eyefire/eyefire_00028"},{"time":0.7,"name":"eyefire/eyefire_00029"},{"time":0.7333,"name":"eyefire/eyefire_00030"},{"time":0.7667,"name":"eyefire/eyefire_00032"},{"time":0.8,"name":"eyefire/eyefire_00033"},{"time":0.8333,"name":"eyefire/eyefire_00034"},{"time":0.8667,"name":"eyefire/eyefire_00036"},{"time":0.9,"name":"eyefire/eyefire_00037"},{"time":0.9333,"name":"eyefire/eyefire_00000"},{"time":0.9667,"name":"eyefire/eyefire_00002"},{"time":1,"name":"eyefire/eyefire_00003"},{"time":1.0333,"name":"eyefire/eyefire_00005"},{"time":1.0667,"name":"eyefire/eyefire_00006"},{"time":1.1,"name":"eyefire/eyefire_00007"},{"time":1.1333,"name":"eyefire/eyefire_00009"},{"time":1.1667,"name":"eyefire/eyefire_00010"},{"time":1.2,"name":"eyefire/eyefire_00011"},{"time":1.2333,"name":"eyefire/eyefire_00013"},{"time":1.2667,"name":"eyefire/eyefire_00014"},{"time":1.3,"name":"eyefire/eyefire_00015"},{"time":1.3333,"name":"eyefire/eyefire_00017"},{"time":1.3667,"name":"eyefire/eyefire_00018"},{"time":1.4,"name":"eyefire/eyefire_00020"},{"time":1.4333,"name":"eyefire/eyefire_00021"},{"time":1.4667,"name":"eyefire/eyefire_00022"},{"time":1.5,"name":"eyefire/eyefire_00024"},{"time":1.5333,"name":"eyefire/eyefire_00025"},{"time":1.5667,"name":"eyefire/eyefire_00026"},{"time":1.6,"name":"eyefire/eyefire_00028"},{"time":1.6333,"name":"eyefire/eyefire_00029"},{"time":1.6667,"name":"eyefire/eyefire_00031"},{"time":1.7,"name":"eyefire/eyefire_00032"},{"time":1.7333,"name":"eyefire/eyefire_00033"},{"time":1.7667,"name":"eyefire/eyefire_00035"},{"time":1.8,"name":"eyefire/eyefire_00036"},{"time":1.8333,"name":"eyefire/eyefire_00037"},{"time":1.8667,"name":"eyefire/eyefire_00000"}]},"s1":{"color":[{"color":"49b3ff81"}]},"s2":{"color":[{"color":"49b3ff81"}]},"s3":{"color":[{"color":"49b3ff81"}]},"s4":{"color":[{"color":"49b3ff81"}]},"s5":{"color":[{"color":"49b3ff81"}]},"s6":{"color":[{"color":"49b3ff81"}]},"skill":{"color":[{"color":"1fffe1ff"}]}},"bones":{"l_hand2":{"scale":[{"x":0,"y":0}]},"r_upparm2":{"rotate":[{"angle":12.65,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":12.97}]},"r_beard":{"rotate":[{"angle":8.77,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.19,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.77}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":9.4,"y":-12.46,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"x":0.88,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":0.88}]},"r_finger_b2":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r_ear_s":{"rotate":[{"angle":-5.67,"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":8.3,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-5.67}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":12.16,"y":-17.99,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"skirt_f":{"rotate":[{"angle":9.15,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-4.75,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":9.15}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":5.8,"y":-22.14,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"y":-15.36,"curve":0.25,"c3":0.75},{"time":0.9333,"y":16.45,"curve":0.25,"c3":0.75},{"time":1.8667,"y":-15.36}]},"r_finger_a2":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"body":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-45.72,"y":-64.16,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_finger_c2":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"lock":{"scale":[{"x":0,"y":0}]},"tail":{"rotate":[{"angle":-8.41,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-28.6,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.41}]},"shadow":{"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.97,"y":0.895,"curve":0.25,"c3":0.75},{"time":1.8667}]},"lock2":{"scale":[{"x":0,"y":0}]},"tail4":{"rotate":[{"angle":-8.22,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.6333,"angle":-11.95,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-8.22}]},"s":{"scale":[{"x":0,"y":0}]},"skill":{"scale":[{"x":0,"y":0}]},"r_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":10.23,"y":32.42,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_ik2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-14.9,"y":-20.45,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_finger_d2":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"body2":{"rotate":[{"angle":-2.21,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":-11.96,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.21}],"translate":[{"x":-7.85,"y":2.92,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-40.32,"y":-0.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-7.85,"y":2.92}]},"l_upparm":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-13.07,"curve":0.25,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":-32.01,"y":36.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.9,"y":0.9,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_upparm2":{"rotate":[{"angle":-6.45}]},"l_bear":{"rotate":[{"angle":-11.82,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":15.47,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.82}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-22.67,"y":24.31,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.819,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_finger_a":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"head":{"rotate":[{"angle":-4.31,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-8.63,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.31}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":12.82,"y":6.27,"curve":0.25,"c3":0.75},{"time":1.8667}]},"hair_t":{"rotate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"angle":5.91,"curve":0.25,"c3":0.75},{"time":1.8667}]},"headbeard_b3":{"rotate":[{"angle":8.76,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-18.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":8.76}]},"l_finger_a2":{"rotate":[{"angle":5.32,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":17.71,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.32}],"translate":[{"x":-3.75,"y":9.81,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-7.5,"y":19.61,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-3.75,"y":9.81}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l_finger_b":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_c":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_c2":{"rotate":[{"angle":16.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.16,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.54}],"translate":[{"x":-2.62,"y":10.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-5.23,"y":20.34,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-2.62,"y":10.17}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"l_finger_d":{"rotate":[{"angle":-2.5,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":17.71,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-2.5}]},"l_finger_d2":{"rotate":[{"angle":26.01,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":59.08,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.01}],"translate":[{"x":-1.16,"y":10.43,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.33,"y":20.87,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.16,"y":10.43}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"r_upparm":{"rotate":[{"angle":-6.74,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":2.84,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-6.94}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":36.1,"y":-45.18,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_arm":{"rotate":[{"angle":-7.98,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-8.2}]},"r_finger_a":{"rotate":[{"angle":14.41,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":35.15,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-6.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":14.41}]},"r_finger_b":{"rotate":[{"angle":-8.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.53,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-0.32,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-8.92}]},"r_finger_c":{"rotate":[{"angle":-9.49,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-13.23,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-5.74,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.49}]},"r_finger_d":{"rotate":[{"angle":7.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":4.29,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.94,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.12}]},"r_ear":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-3.09,"y":-14.86,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.842,"curve":0.25,"c3":0.75},{"time":1.8667}],"shear":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":14.28,"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_ear2":{"rotate":[{"angle":-2.28,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-16.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":12.07,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-2.28}]},"l_ear":{"rotate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"angle":18.73,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}],"translate":[{"curve":0.25,"c3":0.625,"c4":0.5},{"time":0.9333,"x":3.59,"y":24.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667}]},"l_ear2":{"rotate":[{"angle":3.27,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-17.76,"curve":0.25,"c3":0.75},{"time":1.4,"angle":24.3,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.27}]},"hair_t2":{"rotate":[{"angle":0.61,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":3.31,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":0.61}]},"hair_t3":{"rotate":[{"angle":3.7,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-2.51,"curve":0.25,"c3":0.75},{"time":1.4,"angle":9.92,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.7}]},"hair_t4":{"rotate":[{"angle":5.88,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-11.93,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":9.92,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":5.88}]},"hair_t5":{"rotate":[{"angle":63.33,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":63.33}]},"hair_t6":{"rotate":[{"angle":6.2,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":33.6,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":6.2}],"translate":[{"x":-0.31,"y":4.06,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"curve":0.25,"c3":0.75},{"time":1.1667,"x":-1.69,"y":22.01,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"x":-0.31,"y":4.06}]},"hair_t7":{"rotate":[{"angle":26.63,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":53.25,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":26.63}]},"hair_t8":{"rotate":[{"angle":23.39,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":46.78,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":23.39}],"translate":[{"x":1.49,"y":10.12,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":2.98,"y":20.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":1.49,"y":10.12}]},"hair_t9":{"rotate":[{"angle":59.01,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":59.01}],"translate":[{"x":-2.26,"y":14.51,"curve":0.25,"c3":0.75},{"time":0.9333,"curve":0.25,"c3":0.75},{"time":1.8667,"x":-2.26,"y":14.51}]},"hair_t10":{"rotate":[{"angle":2.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-32.32,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":10.5,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":2.6}]},"hair_t11":{"rotate":[{"angle":9.54,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"angle":19.09,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":9.54}]},"head2":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":4.6,"y":-21.12,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":0.7,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_armour":{"rotate":[{"angle":1.84}]},"headbeard_b":{"rotate":[{"angle":3.67,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-1.42,"curve":0.25,"c3":0.75},{"time":1.4,"angle":8.76,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":3.67}]},"headbeard_b2":{"rotate":[{"angle":6.67,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-2.54,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":8.76,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":6.67}],"translate":[{"curve":0.25,"c3":0.75},{"time":1.8667}]},"r_ear_ring_b":{"rotate":[{"angle":8.97,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-10.98,"curve":0.25,"c3":0.75},{"time":1.4,"angle":28.93,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":8.97}]},"r_ear_ringb_s":{"rotate":[{"angle":15.92,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-5.28,"curve":0.25,"c3":0.75},{"time":1.4,"angle":37.11,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":15.92}],"translate":[{"x":5.7,"y":-8.17,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":7.3,"y":-11.94,"curve":0.25,"c3":0.75},{"time":1.4,"x":1.09,"y":-11.1,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":5.7,"y":-8.17}]},"r_ear_ringa":{"rotate":[{"curve":0.276,"c3":0.621,"c4":0.4},{"time":0.4667,"angle":-29.16,"curve":0.314,"c2":0.27,"c3":0.686,"c4":0.73},{"time":1.4,"angle":16.48,"curve":0.379,"c2":0.6,"c3":0.724},{"time":1.8667}]},"r_beard2":{"rotate":[{"angle":-0.61,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.61}]},"r_beard3":{"rotate":[{"angle":-10,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.77,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-10}]},"l_bear2":{"rotate":[{"angle":1.82,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.4,"angle":15.47,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":1.82}]},"l_beard3":{"rotate":[{"angle":15.47,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":-11.82,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":15.47}]},"headbeard_f":{"rotate":[{"angle":3.01,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":0.55,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":3.01}]},"headbeard_f2":{"rotate":[{"angle":-4.66,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-12.65,"curve":0.25,"c3":0.75},{"time":1.4,"angle":3.33,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-4.66}]},"headbeard_f3":{"rotate":[{"angle":-0.6,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":-17.95,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":3.33,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":-0.6}]},"headbeard_f4":{"rotate":[{"angle":36.02,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":22.46,"curve":0.25,"c3":0.75},{"time":1.4,"angle":49.58,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":36.02}]},"headbeard_f5":{"rotate":[{"angle":40.99,"curve":0.333,"c2":0.33,"c3":0.758},{"time":0.7,"angle":3.01,"curve":0.25,"c3":0.75},{"time":1.6333,"angle":49.58,"curve":0.276,"c3":0.621,"c4":0.4},{"time":1.8667,"angle":40.99}]},"l_leg":{"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":-2.29,"y":50.63,"curve":0.25,"c3":0.75},{"time":1.8667}]},"l_finger_b2":{"rotate":[{"angle":16.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-7.07,"curve":0.25,"c3":0.75},{"time":1.4,"angle":40.64,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":16.78}],"translate":[{"x":-1.29,"y":10.42,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":-2.59,"y":20.84,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-1.29,"y":10.42}],"scale":[{"x":0.925,"y":0.925,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"x":0.85,"y":0.85,"curve":0.25,"c3":0.75},{"time":1.4,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.925,"y":0.925}]},"skirt_f2":{"rotate":[{"angle":-0.1,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":10.63,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-10.83,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-0.1}]},"skirt_f3":{"rotate":[{"angle":-16.58,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":27.49,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-16.58}]},"r_leg5":{"rotate":[{"angle":7.98,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":27.96,"curve":0.25,"c3":0.75},{"time":1.4,"angle":-12.01,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":7.98}]},"l_leg5":{"rotate":[{"angle":-9.62,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-30.54,"curve":0.25,"c3":0.75},{"time":1.4,"angle":11.31,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-9.62}]},"tail2":{"rotate":[{"angle":4.52,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.1667,"angle":-11.95,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":4.52}]},"tail6":{"rotate":[{"angle":-8.22,"curve":0.379,"c2":0.6,"c3":0.724},{"time":0.2333,"angle":-11.95,"curve":0.25,"c3":0.75},{"time":1.1667,"angle":8.24,"curve":0.242,"c3":0.667,"c4":0.67},{"time":1.8667,"angle":-8.22}]},"tail3":{"rotate":[{"angle":-1.85,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":8.24,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":-11.95,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":-1.85}]},"tail5":{"rotate":[{"angle":-11.95,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":8.24,"curve":0.25,"c3":0.75},{"time":1.8667,"angle":-11.95}]},"lhand":{"rotate":[{"angle":-6.06,"curve":0.25,"c3":0.75},{"time":0.9333,"angle":16.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.4,"angle":5.34,"curve":0.375,"c2":0.5,"c3":0.75},{"time":1.8667,"angle":-6.06}],"translate":[{"x":-49.01,"y":-5.46,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":-98.01,"y":-10.91,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":-49.01,"y":-5.46}],"scale":[{"x":0.95,"y":0.95,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"curve":0.25,"c3":0.75},{"time":1.4,"x":0.9,"y":0.9,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"x":0.95,"y":0.95}]},"rhand":{"rotate":[{"angle":5.78,"curve":0.375,"c2":0.5,"c3":0.75},{"time":0.4667,"angle":-3.18,"curve":0.25,"c3":0.75},{"time":1.4,"angle":14.73,"curve":0.25,"c3":0.625,"c4":0.5},{"time":1.8667,"angle":5.78}],"translate":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":59.09,"y":-135.37,"curve":0.25,"c3":0.75},{"time":1.8667}],"scale":[{"curve":0.25,"c3":0.75},{"time":0.9333,"x":1.1,"y":1.1,"curve":0.25,"c3":0.75},{"time":1.8667}]}},"deform":{"default":{"body":{"body":[{"curve":0.25,"c3":0.75},{"time":0.9333,"offset":36,"vertices":[-2.41049,14.08145,-10.63983,9.53357,11.41489,0.51631,8.62204,7.49872,20.82419,30.77104,-2.80862,37.0488,53.80902,21.06067,29.06711,49.94165,43.71988,54.54894,0.35004,69.90634,-0.88062,19.47218,-12.7916,14.70761,5.71973,30.41342,-14.42053,27.38129,2.25964,28.48312,-15.93155,23.71869,-5.14142,35.24371,-25.93134,24.41534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.39771,-31.9695,3.10556,-38.34393,-32.63104,-64.54259,-2.67554,-49.07106,28.40125,-40.10614,15.19,-39.32011,36.33786,-21.36356,-0.30249,-29.38377,18.0249,-23.20792,0.36182,-7.9995,5.25519,-6.04211,8.23709,-14.43842,-6.16132,-80.23037,45.0358,-66.68332,-11.18542,-41.29755,16.90335,-39.30496,-2.67551,-49.07107,0,0,-4.45917,-81.78522,47.33566,-66.84366,-8.74689,-59.13564,29.90024,-51.76413,-2.25064,10.54112,-8.31439,6.85941,14.49524,-24.1174,30.06024,-49.46475,0,0,0,0,0,0,-4.30402,-49.14474,27.1712,-41.17593,-2.44653,-18.05902,9.30701,-15.6683,2.06238,-45.59348,29.95184,-34.43707,0,0,0,0,-20.05573,10.5144,-22.24652,-4.22729,0,0,0,0,0,0,0,0,3.87411,11.61391,-4.18277,11.50629],"curve":0.25,"c3":0.75},{"time":1.8667}]},"skirt_f":{"skirt_f":[{"curve":0.25,"c3":0.75},{"time":0.9333,"vertices":[-1.8898,-25.58164,0.47333,-28.95829,-1.18393,-41.18966,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.78281,5.60857,0,0,0,0,11.63187,18.17604,12.89143,17.3054,0,0,0,0,0,0,0,0,0,0,0,0,-0.37607,-29.25813,5.20969,-17.44646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.98029,-21.54911],"curve":0.25,"c3":0.75},{"time":1.8667}]}}}}}} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/spine/11105.png b/tests/cpp-tests/Resources/spine/11105.png new file mode 100644 index 0000000000000000000000000000000000000000..8d51b524b7b5d5123eecf29de5444e1625537875 GIT binary patch literal 1487703 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

    #&&ql30z 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