X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fmetaball-refrac%2Fmetaball-refrac-example.cpp;h=1d1c0466bc09fbeb8e167044656d68afb21ea11b;hb=1b19fd140ff139b5854a1a62447faf31b175d8f6;hp=e66ecdea2a4b1d166b66d8353f23e7d02fbdcf41;hpb=f00dca41f5430eea2ed3b00f0be2a010ceb3c664;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/metaball-refrac/metaball-refrac-example.cpp b/examples/metaball-refrac/metaball-refrac-example.cpp index e66ecde..1d1c046 100644 --- a/examples/metaball-refrac/metaball-refrac-example.cpp +++ b/examples/metaball-refrac/metaball-refrac-example.cpp @@ -16,14 +16,14 @@ */ // EXTERNAL INCLUDES +#include // uint32_t, uint16_t etc #include #include -#include // uint32_t, uint16_t etc +#include #include -#include #include -#include +#include // INTERNAL INCLUDES #include "shared/utility.h" // DemoHelper::LoadTexture @@ -32,13 +32,15 @@ using namespace Dali; namespace // unnamed namespace for constants { -const char * const BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-2.jpg" ); -const float GRAVITY_X(0); -const float GRAVITY_Y(-0.09); +const char* const BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-2.jpg"); +const float GRAVITY_X(0); +const float GRAVITY_Y(-0.09); // number of metaballs constexpr uint32_t METABALL_NUMBER = 6; +// clang-format off + /** * Vertex shader for metaballs */ @@ -146,6 +148,7 @@ const char* const FRAG_SHADER = DALI_COMPOSE_SHADER ( gl_FragColor = texture2D(sTexture, vTexCoord);\n }\n ); +// clang-format on /** * Metadata for each ball @@ -176,12 +179,11 @@ struct MetaballInfo class MetaballRefracController : public ConnectionTracker { public: - /** * Constructor * @param application */ - MetaballRefracController( Application& application ); + MetaballRefracController(Application& application); /** * Destructor @@ -191,54 +193,53 @@ public: /** * Creates the metaballs and initializes the scene */ - void Create( Application& app ); + void Create(Application& app); /** * Touch handler, start the grow animation and creates additional metaballs */ - bool OnTouch( Actor actor, const TouchEvent& touch ); + bool OnTouch(Actor actor, const TouchEvent& touch); /** * Key event callback to quit the application on escape or back key */ - void OnKeyEvent( const KeyEvent& event ); + void OnKeyEvent(const KeyEvent& event); private: // Data + Application& mApplication; + Vector2 mScreenSize; - Application& mApplication; - Vector2 mScreenSize; - - Texture mBackgroundTexture; - FrameBuffer mMetaballFBO; + Texture mBackgroundTexture; + FrameBuffer mMetaballFBO; - Actor mMetaballRoot; - MetaballInfo mMetaballs[METABALL_NUMBER]; + Actor mMetaballRoot; + MetaballInfo mMetaballs[METABALL_NUMBER]; - Actor mCompositionActor; + Actor mCompositionActor; //Motion - Vector2 mCurrentTouchPosition; - Vector2 mMetaballPosVariation; - Vector2 mMetaballPosVariationFrom; - Vector2 mMetaballPosVariationTo; - Vector2 mMetaballCenter; + Vector2 mCurrentTouchPosition; + Vector2 mMetaballPosVariation; + Vector2 mMetaballPosVariationFrom; + Vector2 mMetaballPosVariationTo; + Vector2 mMetaballCenter; - Vector2 mGravity; - Vector2 mGravityVar; + Vector2 mGravity; + Vector2 mGravityVar; - Renderer mRendererRefraction; - TextureSet mTextureSetRefraction; - Shader mShaderRefraction; - TextureSet mTextureSetNormal; - Shader mShaderNormal; + Renderer mRendererRefraction; + TextureSet mTextureSetRefraction; + Shader mShaderRefraction; + TextureSet mTextureSetNormal; + Shader mShaderNormal; // Animations - Animation mGravityAnimation[METABALL_NUMBER]; - Animation mRadiusDecAnimation[METABALL_NUMBER]; - Animation mRadiusIncFastAnimation[METABALL_NUMBER]; - Animation mRadiusIncSlowAnimation[METABALL_NUMBER]; - Animation mRadiusVarAnimation[METABALL_NUMBER]; - Animation mPositionVarAnimation[METABALL_NUMBER]; + Animation mGravityAnimation[METABALL_NUMBER]; + Animation mRadiusDecAnimation[METABALL_NUMBER]; + Animation mRadiusIncFastAnimation[METABALL_NUMBER]; + Animation mRadiusIncSlowAnimation[METABALL_NUMBER]; + Animation mRadiusVarAnimation[METABALL_NUMBER]; + Animation mPositionVarAnimation[METABALL_NUMBER]; // Private Helper functions @@ -246,7 +247,7 @@ private: // Data * Create a mesh data with the geometry for the metaball rendering * @param aspectMappedTexture whether texture coords should be mapped based on aspect ratio */ - Geometry CreateGeometry( bool aspectMappedTexture = true ); + Geometry CreateGeometry(bool aspectMappedTexture = true); /** * Create a actor for the metaballs @@ -271,12 +272,12 @@ private: // Data /** * Function to launch the grow slow radius for the metaballs, and also the small variations for metaball[2] and [3] */ - void LaunchRadiusIncSlowAnimations( Animation& source ); + void LaunchRadiusIncSlowAnimations(Animation& source); /** * Function to launch the animation to get the metaball[1] back to the center */ - void LaunchGetBackToPositionAnimation( Animation& source ); + void LaunchGetBackToPositionAnimation(Animation& source); /** * Function to stop all animations related to the click of the user in the screen @@ -296,19 +297,18 @@ private: // Data /** * Function to set the actual position of the metaballs when the user clicks the screen */ - void SetPositionToMetaballs( const Vector2& metaballCenter ); - + void SetPositionToMetaballs(const Vector2& metaballCenter); }; /** * Implementation */ -MetaballRefracController::MetaballRefracController( Application& application ) - : mApplication( application ) +MetaballRefracController::MetaballRefracController(Application& application) +: mApplication(application) { // Connect to the Application's Init signal - mApplication.InitSignal().Connect( this, &MetaballRefracController::Create ); + mApplication.InitSignal().Connect(this, &MetaballRefracController::Create); } MetaballRefracController::~MetaballRefracController() @@ -316,21 +316,21 @@ MetaballRefracController::~MetaballRefracController() // Nothing to do here; } -void MetaballRefracController::Create( Application& app ) +void MetaballRefracController::Create(Application& app) { Window window = app.GetWindow(); - window.KeyEventSignal().Connect( this, &MetaballRefracController::OnKeyEvent ); + window.KeyEventSignal().Connect(this, &MetaballRefracController::OnKeyEvent); mScreenSize = window.GetSize(); window.SetBackgroundColor(Color::BLACK); // Load background texture - mBackgroundTexture = DemoHelper::LoadTexture( BACKGROUND_IMAGE ); + mBackgroundTexture = DemoHelper::LoadTexture(BACKGROUND_IMAGE); - mGravity = Vector2(GRAVITY_X,GRAVITY_Y); - mGravityVar = Vector2(0,0); + mGravity = Vector2(GRAVITY_X, GRAVITY_Y); + mGravityVar = Vector2(0, 0); CreateMetaballActors(); CreateMetaballImage(); @@ -338,10 +338,10 @@ void MetaballRefracController::Create( Application& app ) CreateAnimations(); // Connect the callback to the touch signal on the mesh actor - window.GetRootLayer().TouchSignal().Connect( this, &MetaballRefracController::OnTouch ); + window.GetRootLayer().TouchedSignal().Connect(this, &MetaballRefracController::OnTouch); } -Geometry MetaballRefracController::CreateGeometry( bool aspectMappedTexture ) +Geometry MetaballRefracController::CreateGeometry(bool aspectMappedTexture) { const float aspect = mScreenSize.y / mScreenSize.x; @@ -349,49 +349,53 @@ Geometry MetaballRefracController::CreateGeometry( bool aspectMappedTexture ) const float xsize = mScreenSize.x * 0.5; // Create the meshdata for the metaballs - struct VertexPosition { Vector2 position; }; - struct VertexTexture { Vector2 texture; }; - - VertexPosition vertices[] = + struct VertexPosition { - { Vector2( -xsize, -xsize * aspect ) }, - { Vector2( xsize, -xsize * aspect ) }, - { Vector2( -xsize, xsize * aspect ) }, - { Vector2( xsize, xsize * aspect ) } + Vector2 position; }; - - const float textureAspect = (aspectMappedTexture) ? aspect : 1.0f; - VertexTexture textures[] = + struct VertexTexture { - { Vector2( 0.0f, 0.0f ) }, - { Vector2( 1.0f, 0.0f ) }, - { Vector2( 0.0f, 1.0f * textureAspect ) }, - { Vector2( 1.0f, 1.0f * textureAspect ) } + Vector2 texture; }; - uint32_t numberOfVertices = sizeof(vertices)/sizeof(VertexPosition); + VertexPosition vertices[] = + { + {Vector2(-xsize, -xsize * aspect)}, + {Vector2(xsize, -xsize * aspect)}, + {Vector2(-xsize, xsize * aspect)}, + {Vector2(xsize, xsize * aspect)}}; + + const float textureAspect = (aspectMappedTexture) ? aspect : 1.0f; + VertexTexture textures[] = + { + {Vector2(0.0f, 0.0f)}, + {Vector2(1.0f, 0.0f)}, + {Vector2(0.0f, 1.0f * textureAspect)}, + {Vector2(1.0f, 1.0f * textureAspect)}}; + + uint32_t numberOfVertices = sizeof(vertices) / sizeof(VertexPosition); // Vertices Property::Map positionVertexFormat; positionVertexFormat["aPosition"] = Property::VECTOR2; - PropertyBuffer positionVertices = PropertyBuffer::New( positionVertexFormat ); - positionVertices.SetData( vertices, numberOfVertices ); + VertexBuffer positionVertices = VertexBuffer::New(positionVertexFormat); + positionVertices.SetData(vertices, numberOfVertices); // Textures Property::Map textureVertexFormat; textureVertexFormat["aTexture"] = Property::VECTOR2; - PropertyBuffer textureVertices = PropertyBuffer::New( textureVertexFormat ); - textureVertices.SetData( textures, numberOfVertices ); + VertexBuffer textureVertices = VertexBuffer::New(textureVertexFormat); + textureVertices.SetData(textures, numberOfVertices); // Indices - const uint16_t indices[] = { 0, 3, 1, 0, 2, 3 }; + const uint16_t indices[] = {0, 3, 1, 0, 2, 3}; // Create the geometry object Geometry texturedQuadGeometry = Geometry::New(); - texturedQuadGeometry.AddVertexBuffer( positionVertices ); - texturedQuadGeometry.AddVertexBuffer( textureVertices ); + texturedQuadGeometry.AddVertexBuffer(positionVertices); + texturedQuadGeometry.AddVertexBuffer(textureVertices); - texturedQuadGeometry.SetIndexBuffer ( &indices[0], sizeof( indices )/ sizeof( indices[0] ) ); + texturedQuadGeometry.SetIndexBuffer(&indices[0], sizeof(indices) / sizeof(indices[0])); return texturedQuadGeometry; } @@ -401,14 +405,14 @@ void MetaballRefracController::CreateMetaballActors() const float aspect = mScreenSize.y / mScreenSize.x; // Create the renderer for the metaballs - Shader shader = Shader::New( METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER, Shader::Hint::MODIFIES_GEOMETRY ); + Shader shader = Shader::New(METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER, Shader::Hint::MODIFIES_GEOMETRY); Geometry metaballGeometry = CreateGeometry(); - Renderer renderer = Renderer::New( metaballGeometry, shader ); - renderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_RGB, BlendFactor::ONE ); - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE ); - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_ALPHA, BlendFactor::ONE ); - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_ALPHA, BlendFactor::ONE ); + Renderer renderer = Renderer::New(metaballGeometry, shader); + renderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON); + renderer.SetProperty(Renderer::Property::BLEND_FACTOR_SRC_RGB, BlendFactor::ONE); + renderer.SetProperty(Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE); + renderer.SetProperty(Renderer::Property::BLEND_FACTOR_SRC_ALPHA, BlendFactor::ONE); + renderer.SetProperty(Renderer::Property::BLEND_FACTOR_DEST_ALPHA, BlendFactor::ONE); // Each metaball has a different radius mMetaballs[0].radius = mMetaballs[0].initRadius = 0.0145f; @@ -417,32 +421,31 @@ void MetaballRefracController::CreateMetaballActors() mMetaballs[3].radius = mMetaballs[3].initRadius = 0.0135f; // Initialization of each of the metaballs - for( uint32_t i = 0 ; i < METABALL_NUMBER ; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mMetaballs[i].position = Vector2(0.0f, 0.0f); mMetaballs[i].actor = Actor::New(); - mMetaballs[i].actor.SetProperty( Dali::Actor::Property::NAME, "Metaball" ); - mMetaballs[i].actor.SetProperty( Actor::Property::SCALE, 1.0f ); - mMetaballs[i].actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - - - mMetaballs[i].actor.AddRenderer( renderer ); - - mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty( "uPositionMetaball", mMetaballs[i].position ); - mMetaballs[i].positionVarIndex = mMetaballs[i].actor.RegisterProperty( "uPositionVar", Vector2(0.f,0.f) ); - mMetaballs[i].gravityIndex = mMetaballs[i].actor.RegisterProperty( "uGravityVector", Vector2(0.f,0.f) ); - mMetaballs[i].radiusIndex = mMetaballs[i].actor.RegisterProperty( "uRadius", mMetaballs[i].radius ); - mMetaballs[i].radiusVarIndex = mMetaballs[i].actor.RegisterProperty( "uRadiusVar", 0.f ); - mMetaballs[i].aspectIndex = mMetaballs[i].actor.RegisterProperty( "uAspect", aspect ); + mMetaballs[i].actor.SetProperty(Dali::Actor::Property::NAME, "Metaball"); + mMetaballs[i].actor.SetProperty(Actor::Property::SCALE, 1.0f); + mMetaballs[i].actor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + + mMetaballs[i].actor.AddRenderer(renderer); + + mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty("uPositionMetaball", mMetaballs[i].position); + mMetaballs[i].positionVarIndex = mMetaballs[i].actor.RegisterProperty("uPositionVar", Vector2(0.f, 0.f)); + mMetaballs[i].gravityIndex = mMetaballs[i].actor.RegisterProperty("uGravityVector", Vector2(0.f, 0.f)); + mMetaballs[i].radiusIndex = mMetaballs[i].actor.RegisterProperty("uRadius", mMetaballs[i].radius); + mMetaballs[i].radiusVarIndex = mMetaballs[i].actor.RegisterProperty("uRadiusVar", 0.f); + mMetaballs[i].aspectIndex = mMetaballs[i].actor.RegisterProperty("uAspect", aspect); } //Root creation mMetaballRoot = Actor::New(); - mMetaballRoot.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - for( uint32_t i = 0 ; i < METABALL_NUMBER ; i++ ) + mMetaballRoot.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { - mMetaballRoot.Add( mMetaballs[i].actor ); + mMetaballRoot.Add(mMetaballs[i].actor); } } @@ -450,174 +453,174 @@ void MetaballRefracController::CreateMetaballImage() { // Create an FBO and a render task to create to render the metaballs with a fragment shader Window window = mApplication.GetWindow(); - mMetaballFBO = FrameBuffer::New( mScreenSize.x, mScreenSize.y ); + mMetaballFBO = FrameBuffer::New(mScreenSize.x, mScreenSize.y); window.Add(mMetaballRoot); //Creation of the render task used to render the metaballs RenderTaskList taskList = window.GetRenderTaskList(); - RenderTask task = taskList.CreateTask(); - task.SetRefreshRate( RenderTask::REFRESH_ALWAYS ); - task.SetSourceActor( mMetaballRoot ); - task.SetExclusive( true ); - task.SetClearColor( Color::BLACK ); - task.SetClearEnabled( true ); - task.SetFrameBuffer( mMetaballFBO ); + RenderTask task = taskList.CreateTask(); + task.SetRefreshRate(RenderTask::REFRESH_ALWAYS); + task.SetSourceActor(mMetaballRoot); + task.SetExclusive(true); + task.SetClearColor(Color::BLACK); + task.SetClearEnabled(true); + task.SetFrameBuffer(mMetaballFBO); } void MetaballRefracController::CreateComposition() { // Create Refraction shader and renderer - mShaderRefraction = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER ); + mShaderRefraction = Shader::New(METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER); // Create new texture set mTextureSetRefraction = TextureSet::New(); - mTextureSetRefraction.SetTexture( 0u, mBackgroundTexture ); - mTextureSetRefraction.SetTexture( 1u, mMetaballFBO.GetColorTexture() ); + mTextureSetRefraction.SetTexture(0u, mBackgroundTexture); + mTextureSetRefraction.SetTexture(1u, mMetaballFBO.GetColorTexture()); // Create normal shader - mShaderNormal = Shader::New( METABALL_VERTEX_SHADER, FRAG_SHADER ); + mShaderNormal = Shader::New(METABALL_VERTEX_SHADER, FRAG_SHADER); // Create new texture set mTextureSetNormal = TextureSet::New(); - mTextureSetNormal.SetTexture( 0u, mBackgroundTexture ); + mTextureSetNormal.SetTexture(0u, mBackgroundTexture); // Create actor - mCompositionActor = Actor::New( ); - mCompositionActor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - mCompositionActor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); - mCompositionActor.SetProperty( Actor::Property::SIZE, Vector2(mScreenSize.x, mScreenSize.y) ); + mCompositionActor = Actor::New(); + mCompositionActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mCompositionActor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + mCompositionActor.SetProperty(Actor::Property::SIZE, Vector2(mScreenSize.x, mScreenSize.y)); // Create geometry - Geometry metaballGeometry = CreateGeometry( false ); - mRendererRefraction = Renderer::New( metaballGeometry, mShaderNormal ); - mRendererRefraction.SetTextures( mTextureSetNormal ); - mCompositionActor.AddRenderer( mRendererRefraction ); + Geometry metaballGeometry = CreateGeometry(false); + mRendererRefraction = Renderer::New(metaballGeometry, mShaderNormal); + mRendererRefraction.SetTextures(mTextureSetNormal); + mCompositionActor.AddRenderer(mRendererRefraction); Window window = mApplication.GetWindow(); - window.Add( mCompositionActor ); + window.Add(mCompositionActor); } void MetaballRefracController::CreateAnimations() { uint32_t i = 0; - float key; + float key; - mPositionVarAnimation[1] = Animation::New( 2.f ); - mPositionVarAnimation[1].SetLooping( false ); + mPositionVarAnimation[1] = Animation::New(2.f); + mPositionVarAnimation[1].SetLooping(false); mPositionVarAnimation[1].Pause(); - mPositionVarAnimation[1].FinishedSignal().Connect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation ); + mPositionVarAnimation[1].FinishedSignal().Connect(this, &MetaballRefracController::LaunchGetBackToPositionAnimation); KeyFrames keySinCosVariation = KeyFrames::New(); - Vector2 sinCosVariation(0,0); - for( i = 0 ; i < 360; i++ ) + Vector2 sinCosVariation(0, 0); + for(i = 0; i < 360; i++) { - sinCosVariation.x = 0.05f * ( -sinf(i * Math::PI_OVER_180) + cosf(i * Math::PI_OVER_180) ); - sinCosVariation.y = 0.05f * ( sinf(i * Math::PI_OVER_180) - cosf(i * Math::PI_OVER_180) ); - key = i/360.f; + sinCosVariation.x = 0.05f * (-sinf(i * Math::PI_OVER_180) + cosf(i * Math::PI_OVER_180)); + sinCosVariation.y = 0.05f * (sinf(i * Math::PI_OVER_180) - cosf(i * Math::PI_OVER_180)); + key = i / 360.f; keySinCosVariation.Add(key, sinCosVariation); } mPositionVarAnimation[2] = Animation::New(6.f); - mPositionVarAnimation[2].AnimateBetween(Property( mMetaballs[2].actor, mMetaballs[2].positionVarIndex ), keySinCosVariation); - mPositionVarAnimation[2].SetLooping( true ); + mPositionVarAnimation[2].AnimateBetween(Property(mMetaballs[2].actor, mMetaballs[2].positionVarIndex), keySinCosVariation); + mPositionVarAnimation[2].SetLooping(true); mPositionVarAnimation[2].Pause(); KeyFrames keyCosSinVariation = KeyFrames::New(); - Vector2 cosSinVariation(0,0); - for( i = 0 ; i < 360; i++ ) + Vector2 cosSinVariation(0, 0); + for(i = 0; i < 360; i++) { - cosSinVariation.x = 0.05f * ( -sinf(i * Math::PI_OVER_180) - cosf(i * Math::PI_OVER_180) ); - cosSinVariation.y = 0.05f * ( sinf(i * Math::PI_OVER_180) + cosf(i * Math::PI_OVER_180) ); - key = i/360.f; + cosSinVariation.x = 0.05f * (-sinf(i * Math::PI_OVER_180) - cosf(i * Math::PI_OVER_180)); + cosSinVariation.y = 0.05f * (sinf(i * Math::PI_OVER_180) + cosf(i * Math::PI_OVER_180)); + key = i / 360.f; keyCosSinVariation.Add(key, cosSinVariation); } mPositionVarAnimation[3] = Animation::New(6.f); - mPositionVarAnimation[3].AnimateBetween(Property( mMetaballs[3].actor, mMetaballs[3].positionVarIndex ), keyCosSinVariation); - mPositionVarAnimation[3].SetLooping( true ); + mPositionVarAnimation[3].AnimateBetween(Property(mMetaballs[3].actor, mMetaballs[3].positionVarIndex), keyCosSinVariation); + mPositionVarAnimation[3].SetLooping(true); mPositionVarAnimation[3].Pause(); //Animations for gravity - for( i = 0 ; i < METABALL_NUMBER; i++ ) + for(i = 0; i < METABALL_NUMBER; i++) { - mGravityAnimation[i] = Animation::New( 25.f ); - mGravityAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].gravityIndex ), mGravity * 25.f * 3.f ); - mGravityAnimation[i].SetLooping( false ); + mGravityAnimation[i] = Animation::New(25.f); + mGravityAnimation[i].AnimateBy(Property(mMetaballs[i].actor, mMetaballs[i].gravityIndex), mGravity * 25.f * 3.f); + mGravityAnimation[i].SetLooping(false); mGravityAnimation[i].Pause(); } //Animation to decrease size of metaballs when there is no click - for( i = 0 ; i < METABALL_NUMBER; i++ ) + for(i = 0; i < METABALL_NUMBER; i++) { - mRadiusDecAnimation[i] = Animation::New( 25.f ); - mRadiusDecAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), -0.004f * 25.f * 3.f ); - mRadiusDecAnimation[i].SetLooping( false ); + mRadiusDecAnimation[i] = Animation::New(25.f); + mRadiusDecAnimation[i].AnimateBy(Property(mMetaballs[i].actor, mMetaballs[i].radiusIndex), -0.004f * 25.f * 3.f); + mRadiusDecAnimation[i].SetLooping(false); mRadiusDecAnimation[i].Pause(); } // Animation to grow the size of the metaballs the first second of the click - for( i = 0 ; i < METABALL_NUMBER; i++ ) + for(i = 0; i < METABALL_NUMBER; i++) { - mRadiusIncFastAnimation[i] = Animation::New( 0.3f ); - mRadiusIncFastAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), 0.06f ); - mRadiusIncFastAnimation[i].SetLooping( false ); + mRadiusIncFastAnimation[i] = Animation::New(0.3f); + mRadiusIncFastAnimation[i].AnimateBy(Property(mMetaballs[i].actor, mMetaballs[i].radiusIndex), 0.06f); + mRadiusIncFastAnimation[i].SetLooping(false); mRadiusIncFastAnimation[i].Pause(); } - mRadiusIncFastAnimation[0].FinishedSignal().Connect( this, &MetaballRefracController::LaunchRadiusIncSlowAnimations ); + mRadiusIncFastAnimation[0].FinishedSignal().Connect(this, &MetaballRefracController::LaunchRadiusIncSlowAnimations); // Animation to grow the size of the metaballs afterwards - for( i = 0 ; i < METABALL_NUMBER; i++ ) + for(i = 0; i < METABALL_NUMBER; i++) { - mRadiusIncSlowAnimation[i] = Animation::New( 20.f ); - mRadiusIncSlowAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), 0.04f ); - mRadiusIncSlowAnimation[i].SetLooping( false ); + mRadiusIncSlowAnimation[i] = Animation::New(20.f); + mRadiusIncSlowAnimation[i].AnimateBy(Property(mMetaballs[i].actor, mMetaballs[i].radiusIndex), 0.04f); + mRadiusIncSlowAnimation[i].SetLooping(false); mRadiusIncSlowAnimation[i].Pause(); } // Keyframes of a sin function KeyFrames keySin = KeyFrames::New(); - float val; - for( i = 0 ; i < 360; i++ ) + float val; + for(i = 0; i < 360; i++) { - val = 0.01f * sin(i * Math::PI/180.f); - key = i/360.f; + val = 0.01f * sin(i * Math::PI / 180.f); + key = i / 360.f; keySin.Add(key, val); } //Animation to change the size of the metaball - mRadiusVarAnimation[2] = Animation::New( 8.f ); - mRadiusVarAnimation[2].AnimateBetween( Property( mMetaballs[2].actor, mMetaballs[2].radiusVarIndex ), keySin ); - mRadiusVarAnimation[2].SetLooping( true ); + mRadiusVarAnimation[2] = Animation::New(8.f); + mRadiusVarAnimation[2].AnimateBetween(Property(mMetaballs[2].actor, mMetaballs[2].radiusVarIndex), keySin); + mRadiusVarAnimation[2].SetLooping(true); // Keyframes of a cos function KeyFrames keyCos = KeyFrames::New(); - for( i = 0 ; i < 360; i++ ) + for(i = 0; i < 360; i++) { - val = 0.01f * cos(i * Math::PI/180.f); - key = i/360.f; + val = 0.01f * cos(i * Math::PI / 180.f); + key = i / 360.f; keyCos.Add(key, val); } //Animation to change the size of the metaball - mRadiusVarAnimation[3] = Animation::New( 8.f ); - mRadiusVarAnimation[3].AnimateBetween( Property( mMetaballs[3].actor, mMetaballs[3].radiusVarIndex ), keyCos ); - mRadiusVarAnimation[3].SetLooping( true ); + mRadiusVarAnimation[3] = Animation::New(8.f); + mRadiusVarAnimation[3].AnimateBetween(Property(mMetaballs[3].actor, mMetaballs[3].radiusVarIndex), keyCos); + mRadiusVarAnimation[3].SetLooping(true); } -void MetaballRefracController::LaunchGetBackToPositionAnimation( Animation& source ) +void MetaballRefracController::LaunchGetBackToPositionAnimation(Animation& source) { - mMetaballPosVariationTo = Vector2(0,0); + mMetaballPosVariationTo = Vector2(0, 0); - mPositionVarAnimation[1] = Animation::New( 1.f ); - mPositionVarAnimation[1].SetLooping( false ); - mPositionVarAnimation[1].AnimateTo(Property( mMetaballs[1].actor, mMetaballs[1].positionVarIndex ), Vector2(0,0) ); + mPositionVarAnimation[1] = Animation::New(1.f); + mPositionVarAnimation[1].SetLooping(false); + mPositionVarAnimation[1].AnimateTo(Property(mMetaballs[1].actor, mMetaballs[1].positionVarIndex), Vector2(0, 0)); mPositionVarAnimation[1].Play(); } -void MetaballRefracController::LaunchRadiusIncSlowAnimations( Animation& source ) +void MetaballRefracController::LaunchRadiusIncSlowAnimations(Animation& source) { - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mRadiusIncSlowAnimation[i].Play(); } @@ -627,7 +630,7 @@ void MetaballRefracController::LaunchRadiusIncSlowAnimations( Animation& source void MetaballRefracController::StopClickAnimations() { - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mRadiusIncSlowAnimation[i].Stop(); mRadiusIncFastAnimation[i].Stop(); @@ -639,16 +642,16 @@ void MetaballRefracController::StopClickAnimations() void MetaballRefracController::StopAfterClickAnimations() { - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mGravityAnimation[i].Stop(); mRadiusDecAnimation[i].Stop(); mMetaballs[i].radius = mMetaballs[i].initRadius; - mMetaballs[i].actor.SetProperty( mMetaballs[i].gravityIndex, Vector2(0,0) ); - mMetaballs[i].actor.SetProperty( mMetaballs[i].radiusIndex, mMetaballs[i].radius ); - mMetaballs[i].actor.SetProperty( mMetaballs[i].radiusVarIndex, 0.f ); + mMetaballs[i].actor.SetProperty(mMetaballs[i].gravityIndex, Vector2(0, 0)); + mMetaballs[i].actor.SetProperty(mMetaballs[i].radiusIndex, mMetaballs[i].radius); + mMetaballs[i].actor.SetProperty(mMetaballs[i].radiusVarIndex, 0.f); } mRadiusVarAnimation[2].Stop(); mRadiusVarAnimation[3].Stop(); @@ -656,39 +659,39 @@ void MetaballRefracController::StopAfterClickAnimations() void MetaballRefracController::ResetMetaballsState() { - mRendererRefraction.SetTextures( mTextureSetNormal ); - mRendererRefraction.SetShader( mShaderNormal ); + mRendererRefraction.SetTextures(mTextureSetNormal); + mRendererRefraction.SetShader(mShaderNormal); - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mMetaballs[i].radius = mMetaballs[i].initRadius; } - mMetaballPosVariationTo = Vector2(0,0); - mMetaballPosVariationFrom = Vector2(0,0); - mMetaballPosVariation = Vector2(0,0); - mGravityVar = Vector2(0,0); + mMetaballPosVariationTo = Vector2(0, 0); + mMetaballPosVariationFrom = Vector2(0, 0); + mMetaballPosVariation = Vector2(0, 0); + mGravityVar = Vector2(0, 0); } -void MetaballRefracController::SetPositionToMetaballs( const Vector2& metaballCenter ) +void MetaballRefracController::SetPositionToMetaballs(const Vector2& metaballCenter) { //We set the position for the metaballs based on click position - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mMetaballs[i].position = metaballCenter; - mMetaballs[i].actor.SetProperty( mMetaballs[i].positionIndex, mMetaballs[i].position ); + mMetaballs[i].actor.SetProperty(mMetaballs[i].positionIndex, mMetaballs[i].position); } } -bool MetaballRefracController::OnTouch( Actor actor, const TouchEvent& touch ) +bool MetaballRefracController::OnTouch(Actor actor, const TouchEvent& touch) { const float aspect = mScreenSize.y / mScreenSize.x; - switch( touch.GetState( 0 ) ) + switch(touch.GetState(0)) { case PointState::DOWN: { StopAfterClickAnimations(); - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mRadiusIncFastAnimation[i].Play(); } @@ -696,39 +699,41 @@ bool MetaballRefracController::OnTouch( Actor actor, const TouchEvent& touch ) mRadiusVarAnimation[3].Play(); //We draw with the refraction-composition shader - mRendererRefraction.SetTextures( mTextureSetRefraction ); - mRendererRefraction.SetShader( mShaderRefraction ); - mCurrentTouchPosition = touch.GetScreenPosition( 0 ); + mRendererRefraction.SetTextures(mTextureSetRefraction); + mRendererRefraction.SetShader(mShaderRefraction); + mCurrentTouchPosition = touch.GetScreenPosition(0); //we use the click position for the metaballs - Vector2 metaballCenter = Vector2( (mCurrentTouchPosition.x / mScreenSize.x) - 0.5f, - (aspect * (mScreenSize.y - mCurrentTouchPosition.y) / mScreenSize.y) - 0.5f ) * 2.0f; + Vector2 metaballCenter = Vector2((mCurrentTouchPosition.x / mScreenSize.x) - 0.5f, + (aspect * (mScreenSize.y - mCurrentTouchPosition.y) / mScreenSize.y) - 0.5f) * + 2.0f; SetPositionToMetaballs(metaballCenter); break; } case PointState::MOTION: { - Vector2 screen = touch.GetScreenPosition( 0 ); - Vector2 displacement = screen - mCurrentTouchPosition; + Vector2 screen = touch.GetScreenPosition(0); + Vector2 displacement = screen - mCurrentTouchPosition; mCurrentTouchPosition = screen; - mMetaballPosVariationTo.x += ( displacement.x / mScreenSize.x ) * 2.2f; - mMetaballPosVariationTo.y += (-displacement.y / mScreenSize.y ) * 2.2f; + mMetaballPosVariationTo.x += (displacement.x / mScreenSize.x) * 2.2f; + mMetaballPosVariationTo.y += (-displacement.y / mScreenSize.y) * 2.2f; - if (mPositionVarAnimation[1]) + if(mPositionVarAnimation[1]) { - mPositionVarAnimation[1].FinishedSignal().Disconnect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation ); + mPositionVarAnimation[1].FinishedSignal().Disconnect(this, &MetaballRefracController::LaunchGetBackToPositionAnimation); mPositionVarAnimation[1].Stop(); } - mPositionVarAnimation[1] = Animation::New( 1.f ); - mPositionVarAnimation[1].SetLooping( false ); - mPositionVarAnimation[1].AnimateTo(Property( mMetaballs[1].actor, mMetaballs[1].positionVarIndex ), mMetaballPosVariationTo ); - mPositionVarAnimation[1].FinishedSignal().Connect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation ); + mPositionVarAnimation[1] = Animation::New(1.f); + mPositionVarAnimation[1].SetLooping(false); + mPositionVarAnimation[1].AnimateTo(Property(mMetaballs[1].actor, mMetaballs[1].positionVarIndex), mMetaballPosVariationTo); + mPositionVarAnimation[1].FinishedSignal().Connect(this, &MetaballRefracController::LaunchGetBackToPositionAnimation); mPositionVarAnimation[1].Play(); //we use the click position for the metaballs - Vector2 metaballCenter = Vector2( (screen.x / mScreenSize.x) - 0.5f, - (aspect * (mScreenSize.y - screen.y) / mScreenSize.y) - 0.5f) * 2.0f; + Vector2 metaballCenter = Vector2((screen.x / mScreenSize.x) - 0.5f, + (aspect * (mScreenSize.y - screen.y) / mScreenSize.y) - 0.5f) * + 2.0f; SetPositionToMetaballs(metaballCenter); break; } @@ -740,12 +745,12 @@ bool MetaballRefracController::OnTouch( Actor actor, const TouchEvent& touch ) StopClickAnimations(); //Launch out of screen animations - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mGravityAnimation[i].Play(); } - for( uint32_t i = 0 ; i < METABALL_NUMBER; i++ ) + for(uint32_t i = 0; i < METABALL_NUMBER; i++) { mRadiusDecAnimation[i].Play(); } @@ -753,15 +758,15 @@ bool MetaballRefracController::OnTouch( Actor actor, const TouchEvent& touch ) } default: break; - } + } return true; } void MetaballRefracController::OnKeyEvent(const KeyEvent& event) { - if( event.state == KeyEvent::Down ) + if(event.GetState() == KeyEvent::DOWN) { - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) ) + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) { mApplication.Quit(); } @@ -771,11 +776,11 @@ void MetaballRefracController::OnKeyEvent(const KeyEvent& event) /** * Main entry point */ -int32_t DALI_EXPORT_API main( int argc, char **argv ) +int32_t DALI_EXPORT_API main(int argc, char** argv) { - Application application = Application::New( &argc, &argv ); + Application application = Application::New(&argc, &argv); - MetaballRefracController test( application ); + MetaballRefracController test(application); application.MainLoop(); return 0;