From 5c9450e283d0889987e39ebd13b5a29c110d9e88 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Wed, 14 Feb 2018 23:22:18 -0800 Subject: Added tests --- Tests/TestApp/src/Android/TestAppAndroid.cpp | 145 +++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 Tests/TestApp/src/Android/TestAppAndroid.cpp (limited to 'Tests/TestApp/src/Android/TestAppAndroid.cpp') diff --git a/Tests/TestApp/src/Android/TestAppAndroid.cpp b/Tests/TestApp/src/Android/TestAppAndroid.cpp new file mode 100644 index 0000000..0cd8eb1 --- /dev/null +++ b/Tests/TestApp/src/Android/TestAppAndroid.cpp @@ -0,0 +1,145 @@ +/* Copyright 2015-2018 Egor Yusov +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* 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 OF ANY PROPRIETARY RIGHTS. +* +* In no event and under no legal theory, whether in tort (including negligence), +* contract, or otherwise, unless required by applicable law (such as deliberate +* and grossly negligent acts) or agreed to in writing, shall any Contributor be +* liable for any damages, including any direct, indirect, special, incidental, +* or consequential damages of any character arising as a result of this License or +* out of the use or inability to use the software (including but not limited to damages +* for loss of goodwill, work stoppage, computer failure or malfunction, or any and +* all other commercial damages or losses), even if such Contributor has been advised +* of the possibility of such damages. +*/ + +#include "SampleApp.h" +#include "RenderDeviceGLES.h" +#include "AntTweakBar.h" + +using namespace Diligent; + +class SampleAppAndroid final : public SampleApp +{ +public: + SampleAppAndroid() + { + m_DeviceType = DeviceType::OpenGLES; + } + + virtual void Initialize(ANativeWindow* window)override final + { + InitializeDiligentEngine(window); + m_RenderDeviceGLES = RefCntAutoPtr(m_pDevice, IID_RenderDeviceGLES); + m_TheSample->SetUIScale(3); + InitializeSample(); + } + + virtual int Resume(ANativeWindow* window)override final + { + return m_RenderDeviceGLES->Resume(window); + } + + virtual void TermDisplay()override final + { + // Tear down the EGL context currently associated with the display. + m_RenderDeviceGLES->Suspend(); + } + + virtual void TrimMemory()override final + { + LOGI( "Trimming memory" ); + m_RenderDeviceGLES->Invalidate(); + } + + virtual int32_t HandleInput( AInputEvent* event )override final + { + if( AInputEvent_getType( event ) == AINPUT_EVENT_TYPE_MOTION ) + { + ndk_helper::GESTURE_STATE doubleTapState = doubletap_detector_.Detect( event ); + ndk_helper::GESTURE_STATE dragState = drag_detector_.Detect( event ); + ndk_helper::GESTURE_STATE pinchState = pinch_detector_.Detect( event ); + + //Double tap detector has a priority over other detectors + if( doubleTapState == ndk_helper::GESTURE_STATE_ACTION ) + { + //Detect double tap + //tap_camera_.Reset( true ); + } + else + { + //Handle drag state + if( dragState & ndk_helper::GESTURE_STATE_START ) + { + //Otherwise, start dragging + ndk_helper::Vec2 v; + drag_detector_.GetPointer( v ); + float fX = 0, fY = 0; + v.Value(fX, fY); + TwMouseMotion((short)fX, (short)fY); + int Handled = TwMouseButton( TW_MOUSE_PRESSED, TW_MOUSE_LEFT ); + + //TransformPosition( v ); + //tap_camera_.BeginDrag( v ); + } + else if( dragState & ndk_helper::GESTURE_STATE_MOVE ) + { + ndk_helper::Vec2 v; + drag_detector_.GetPointer( v ); + float fX = 0, fY = 0; + v.Value(fX, fY); + int Handled = TwMouseMotion((short)fX, (short)fY); + //TransformPosition( v ); + //tap_camera_.Drag( v ); + } + else if( dragState & ndk_helper::GESTURE_STATE_END ) + { + int Handled = TwMouseButton(TW_MOUSE_RELEASED, TW_MOUSE_LEFT); + + //tap_camera_.EndDrag(); + } + + //Handle pinch state + if( pinchState & ndk_helper::GESTURE_STATE_START ) + { + //Start new pinch + ndk_helper::Vec2 v1; + ndk_helper::Vec2 v2; + pinch_detector_.GetPointers( v1, v2 ); + //TransformPosition( v1 ); + //TransformPosition( v2 ); + //tap_camera_.BeginPinch( v1, v2 ); + } + else if( pinchState & ndk_helper::GESTURE_STATE_MOVE ) + { + //Multi touch + //Start new pinch + ndk_helper::Vec2 v1; + ndk_helper::Vec2 v2; + pinch_detector_.GetPointers( v1, v2 ); + //TransformPosition( v1 ); + //TransformPosition( v2 ); + //tap_camera_.Pinch( v1, v2 ); + } + } + return 1; + } + return 0; + } + +private: + RefCntAutoPtr m_RenderDeviceGLES; +}; + +NativeAppBase* CreateApplication() +{ + return new SampleAppAndroid; +} -- cgit v1.2.3