diff --git a/Android_Salmon_Engine.mk b/Android_Salmon_Engine.mk deleted file mode 100644 index 7591e83..0000000 --- a/Android_Salmon_Engine.mk +++ /dev/null @@ -1,432 +0,0 @@ -#Engine and libs path for Android projects - - -ENGINE_PATH = $(SalmonEnginePathCygwin) - -BOOST_PATH = $(LibsPathCygwin)/boost_1_52_0 - -OGG_PATH = $(LibsPathCygwin)/libogg-1.3.0 - -VORBIS_PATH = $(LibsPathCygwin)/libvorbis-1.3.2 - -SQUIRREL_PATH = $(LibsPathCygwin)/sqplus - -LIBPNG_PATH = $(LibsPathCygwin)/libpng_1.4.1_android - -LIBJPEG_PATH = $(LibsPathCygwin)/jpeg-9 - -ZIP_PATH = $(LibsPathCygwin)/julienr-libzip-android/jni - -#ENGINE_PATH = $(SalmonEnginePath) - -#BOOST_PATH = $(LibsPath)/boost_1_52_0 - -#OGG_PATH = $(LibsPath)/libogg-1.3.0 - -#VORBIS_PATH = $(LibsPath)/libvorbis-1.3.2 - -#SQUIRREL_PATH = $(LibsPath)/sqplus - -#LIBPNG_PATH = $(LibsPath)/libpng_1.4.1_android - -#ZIP_PATH = $(LibsPath)/julienr-libzip-android/jni - - -#================== ZIP ================= - -LOCAL_PATH := $(ZIP_PATH) - -include $(CLEAR_VARS) - -LOCAL_MODULE := zip - -LOCAL_SRC_FILES :=\ - zip_add.c \ - zip_add_dir.c \ - zip_close.c \ - zip_delete.c \ - zip_dirent.c \ - zip_entry_free.c \ - zip_entry_new.c \ - zip_err_str.c \ - zip_error.c \ - zip_error_clear.c \ - zip_error_get.c \ - zip_error_get_sys_type.c \ - zip_error_strerror.c \ - zip_error_to_str.c \ - zip_fclose.c \ - zip_file_error_clear.c \ - zip_file_error_get.c \ - zip_file_get_offset.c \ - zip_file_strerror.c \ - zip_filerange_crc.c \ - zip_fopen.c \ - zip_fopen_index.c \ - zip_fread.c \ - zip_free.c \ - zip_get_archive_comment.c \ - zip_get_archive_flag.c \ - zip_get_file_comment.c \ - zip_get_num_files.c \ - zip_get_name.c \ - zip_memdup.c \ - zip_name_locate.c \ - zip_new.c \ - zip_open.c \ - zip_rename.c \ - zip_replace.c \ - zip_set_archive_comment.c \ - zip_set_archive_flag.c \ - zip_set_file_comment.c \ - zip_source_buffer.c \ - zip_source_file.c \ - zip_source_filep.c \ - zip_source_free.c \ - zip_source_function.c \ - zip_source_zip.c \ - zip_set_name.c \ - zip_stat.c \ - zip_stat_index.c \ - zip_stat_init.c \ - zip_strerror.c \ - zip_unchange.c \ - zip_unchange_all.c \ - zip_unchange_archive.c \ - zip_unchange_data.c - -LOCAL_LDLIBS := -lz - -#debug -#LOCAL_CFLAGS := -g -ggdb -O0 -#LOCAL_LDLIBS += -g -ggdb - - -include $(BUILD_STATIC_LIBRARY) - -#================== PNG ================= - -LOCAL_PATH := $(LIBPNG_PATH) -include $(CLEAR_VARS) - -LOCAL_MODULE := png_lib -LOCAL_SRC_FILES :=\ - png.c \ - pngerror.c \ - pngget.c \ - pngmem.c \ - pngpread.c \ - pngread.c \ - pngrio.c \ - pngrtran.c \ - pngrutil.c \ - pngset.c \ - pngtrans.c \ - pngwio.c \ - pngwrite.c \ - pngwtran.c \ - pngwutil.c - -LOCAL_LDLIBS := -lz - -#debug -#LOCAL_CFLAGS := -g -ggdb -O0 -#LOCAL_LDLIBS += -g -ggdb - -include $(BUILD_STATIC_LIBRARY) - - -#=============== JPEG ============= - -LOCAL_PATH := $(LIBJPEG_PATH) -include $(CLEAR_VARS) - -LOCAL_C_INCLUDES := $(LIBJPEG_PATH) -LOCAL_C_INCLUDES += $(LIBJPEG_PATH)/vc10 - - -LOCAL_MODULE := jpeg -LOCAL_SRC_FILES :=\ - jaricom.c\ - jcapimin.c\ - jcapistd.c\ - jcarith.c\ - jccoefct.c\ - jccolor.c\ - jcdctmgr.c\ - jchuff.c\ - jcinit.c\ - jcmainct.c\ - jcmarker.c\ - jcmaster.c\ - jcomapi.c\ - jcparam.c\ - jcprepct.c\ - jcsample.c\ - jctrans.c\ - jdapimin.c\ - jdapistd.c\ - jdarith.c\ - jdatadst.c\ - jdatasrc.c\ - jdcoefct.c\ - jdcolor.c\ - jddctmgr.c\ - jdhuff.c\ - jdinput.c\ - jdmainct.c\ - jdmarker.c\ - jdmaster.c\ - jdmerge.c\ - jdpostct.c\ - jdsample.c\ - jdtrans.c\ - jerror.c\ - jfdctflt.c\ - jfdctfst.c\ - jfdctint.c\ - jidctflt.c\ - jidctfst.c\ - jidctint.c\ - jmemmgr.c\ - jmemnobs.c\ - jquant1.c\ - jquant2.c\ - jutils.c - -LOCAL_LDLIBS := - -#debug -#LOCAL_CFLAGS := -g -ggdb -O0 -#LOCAL_LDLIBS += -g -ggdb - -include $(BUILD_STATIC_LIBRARY) - - -#================== SQUIRREL ================= - - -include $(CLEAR_VARS) - -LOCAL_MODULE := squirrel -LOCAL_PATH := $(SQUIRREL_PATH) -LOCAL_C_INCLUDES := $(SQUIRREL_PATH)/include $(SQUIRREL_PATH)/sqplus/sqplus $(SQUIRREL_PATH)/squirrel $(SQUIRREL_PATH)/sqstdlib -LOCAL_SRC_FILES := squirrel/sqapi.cpp \ - squirrel/sqbaselib.cpp \ - squirrel/sqclass.cpp \ - squirrel/sqcompiler.cpp \ - squirrel/sqdebug.cpp \ - squirrel/sqfuncstate.cpp \ - squirrel/sqlexer.cpp \ - squirrel/sqmem.cpp \ - squirrel/sqobject.cpp \ - squirrel/sqstate.cpp \ - squirrel/sqtable.cpp \ - squirrel/sqvm.cpp \ - sqplus/SqPlus.cpp \ - sqplus/SqPlusOCharBuf.cpp \ - sqplus/SqPlusUtf8.cpp \ - sqplus/SquirrelBindingsUtils.cpp \ - sqplus/SquirrelObject.cpp \ - sqplus/SquirrelVM.cpp \ - sqstdlib/sqstdblob.cpp \ - sqstdlib/sqstdio.cpp \ - sqstdlib/sqstdmath.cpp \ - sqstdlib/sqstdrex.cpp \ - sqstdlib/sqstdstream.cpp \ - sqstdlib/sqstdstring.cpp \ - sqstdlib/sqstdsystem.cpp \ - sqstdlib/sqstdaux.cpp \ - - -#debug -#LOCAL_CFLAGS := -g -ggdb -O0 -#LOCAL_LDLIBS := -g -ggdb - -include $(BUILD_STATIC_LIBRARY) - - -#================== OGG / VORBIS / VORBISFILE =================== - -include $(CLEAR_VARS) - -LOCAL_MODULE := vorbis - -LOCAL_PATH := $(VORBIS_PATH)/lib -LOCAL_C_INCLUDES := $(VORBIS_PATH)/include -LOCAL_C_INCLUDES += $(VORBIS_PATH)/include/vorbis -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/src -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/books -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/modes -LOCAL_C_INCLUDES += $(OGG_PATH)/include -LOCAL_C_INCLUDES += $(OGG_PATH)/include/ogg -LOCAL_SRC_FILES := ../../libogg-1.3.0/src/framing.c ../../libogg-1.3.0/src/bitwise.c -LOCAL_SRC_FILES += mdct.c smallft.c block.c envelope.c window.c lsp.c \ - lpc.c analysis.c synthesis.c psy.c info.c \ - floor1.c floor0.c\ - res0.c mapping0.c registry.c codebook.c sharedbook.c\ - lookup.c bitrate.c -LOCAL_SRC_FILES += vorbisfile.c - -#debug -#LOCAL_CFLAGS := -g -ggdb -O0 -#LOCAL_LDLIBS := -g -ggdb - -include $(BUILD_STATIC_LIBRARY) - - -#================== BOOST ==================== - -LOCAL_PATH := $(BOOST_PATH) - -include $(CLEAR_VARS) - -LOCAL_MODULE := boost -LOCAL_C_INCLUDES := $(BOOST_PATH) - -LOCAL_CFLAGS := -std=gnu++11 --std=c++11 - - -#thread -LOCAL_SRC_FILES := /libs/thread/src/pthread/thread.cpp -LOCAL_SRC_FILES += /libs/thread/src/pthread/once.cpp - -#signals -LOCAL_SRC_FILES += /libs/signals/src/connection.cpp -LOCAL_SRC_FILES += /libs/signals/src/named_slot_map.cpp -LOCAL_SRC_FILES += /libs/signals/src/signal_base.cpp -LOCAL_SRC_FILES += /libs/signals/src/slot.cpp -LOCAL_SRC_FILES += /libs/signals/src/trackable.cpp - -#system -LOCAL_SRC_FILES += /libs/system/src/error_code.cpp - -#regex -LOCAL_SRC_FILES += /libs/regex/src/c_regex_traits.cpp -LOCAL_SRC_FILES += /libs/regex/src/cpp_regex_traits.cpp -LOCAL_SRC_FILES += /libs/regex/src/cregex.cpp -LOCAL_SRC_FILES += /libs/regex/src/fileiter.cpp -LOCAL_SRC_FILES += /libs/regex/src/icu.cpp -LOCAL_SRC_FILES += /libs/regex/src/instances.cpp -LOCAL_SRC_FILES += /libs/regex/src/posix_api.cpp -LOCAL_SRC_FILES += /libs/regex/src/regex.cpp -LOCAL_SRC_FILES += /libs/regex/src/regex_debug.cpp -LOCAL_SRC_FILES += /libs/regex/src/regex_raw_buffer.cpp -LOCAL_SRC_FILES += /libs/regex/src/regex_traits_defaults.cpp -LOCAL_SRC_FILES += /libs/regex/src/static_mutex.cpp -LOCAL_SRC_FILES += /libs/regex/src/usinstances.cpp -LOCAL_SRC_FILES += /libs/regex/src/w32_regex_traits.cpp -LOCAL_SRC_FILES += /libs/regex/src/wc_regex_traits.cpp -LOCAL_SRC_FILES += /libs/regex/src/wide_posix_api.cpp -LOCAL_SRC_FILES += /libs/regex/src/winstances.cpp - -#date_time -LOCAL_SRC_FILES += /libs/date_time/src/gregorian/greg_month.cpp -LOCAL_SRC_FILES += /libs/date_time/src/gregorian/greg_weekday.cpp -LOCAL_SRC_FILES += /libs/date_time/src/gregorian/date_generators.cpp - -#asio -#nothing - -LOCAL_LDLIBS := -llog -Wl - -#debug -#LOCAL_CFLAGS += -g -ggdb -O0 -#LOCAL_LDLIBS += -g -ggdb - - -include $(BUILD_STATIC_LIBRARY) - - -#============= SALMON ENGINE ================ - -LOCAL_PATH := $(ENGINE_PATH) - -include $(CLEAR_VARS) - -LOCAL_MODULE := SalmonEngine - - -LOCAL_CFLAGS := -DTARGET_ANDROID -std=gnu++11 --std=c++11 - -LOCAL_STATIC_LIBRARIES := boost -LOCAL_STATIC_LIBRARIES += ogg -LOCAL_STATIC_LIBRARIES += vorbis -LOCAL_STATIC_LIBRARIES += squirrel -LOCAL_STATIC_LIBRARIES += png_lib -LOCAL_STATIC_LIBRARIES += jpeg -LOCAL_STATIC_LIBRARIES += zip -LOCAL_SHARED_LIBRARIES := gnustl_shared -LOCAL_C_INCLUDES := $(BOOST_PATH) -LOCAL_C_INCLUDES += $(VORBIS_PATH)/include -LOCAL_C_INCLUDES += $(VORBIS_PATH)/include/vorbis -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/books -LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/modes -LOCAL_C_INCLUDES += $(OGG_PATH)/include -LOCAL_C_INCLUDES += $(OGG_PATH)/include/ogg -LOCAL_C_INCLUDES += $(SQUIRREL_PATH)/include -LOCAL_C_INCLUDES += $(SQUIRREL_PATH)/sqplus -LOCAL_C_INCLUDES += $(SQUIRREL_PATH)/sqstdlib -LOCAL_C_INCLUDES += $(SQUIRREL_PATH)/squirrel -LOCAL_C_INCLUDES += $(LIBPNG_PATH) -LOCAL_C_INCLUDES += $(LIBJPEG_PATH) -LOCAL_C_INCLUDES += $(LIBJPEG_PATH)/vc10 -LOCAL_C_INCLUDES += $(ZIP_PATH) -LOCAL_SRC_FILES := src/Utils/DataTypes/DataTypes.cpp -LOCAL_SRC_FILES += src/Utils/DataTypes/NewDataTypes.cpp -LOCAL_SRC_FILES += src/Utils/FileUtils/FileUtils.cpp -LOCAL_SRC_FILES += src/Utils/JniApi/JniApi.cpp -LOCAL_SRC_FILES += src/Utils/JniApi/JniApplication.cpp -LOCAL_SRC_FILES += src/Utils/Console/Console.cpp -LOCAL_SRC_FILES += src/Utils/SerializeInterface/SerializeInterface.cpp -LOCAL_SRC_FILES += src/Utils/Network/Network.cpp -LOCAL_SRC_FILES += src/Utils/PngHelper.cpp -LOCAL_SRC_FILES += src/Utils/JpegHelper.cpp -LOCAL_SRC_FILES += src/Utils/TgaLoader.cpp -LOCAL_SRC_FILES += src/Utils/SimpleTimer.cpp -LOCAL_SRC_FILES += src/Utils/ThreadUtils.cpp -LOCAL_SRC_FILES += src/TextureManager/SalmonTexture.cpp -LOCAL_SRC_FILES += src/ShaderManager/ShaderManager.cpp -LOCAL_SRC_FILES += src/FrameManager/FrameManager.cpp -LOCAL_SRC_FILES += src/LightManager/LightManager.cpp -LOCAL_SRC_FILES += src/SoundManager/SoundManagerAndroid.cpp -LOCAL_SRC_FILES += src/SoundManager/SoundManagerDataTypes.cpp -LOCAL_SRC_FILES += src/FontManager/FontManager.cpp -LOCAL_SRC_FILES += src/ScriptManager/ScriptManager.cpp -LOCAL_SRC_FILES += src/SmartValueManager/SmartValueManager.cpp - -LOCAL_SRC_FILES += src/GUIManager/GUIManager.cpp -LOCAL_SRC_FILES += src/GUIManager/ButtonWidget.cpp -LOCAL_SRC_FILES += src/GUIManager/WidgetXmlParsers.cpp - -LOCAL_SRC_FILES += src/HalibutAnimation/HalibutAnimation.cpp - -LOCAL_SRC_FILES += src/ModelManager/ModelManager.cpp -LOCAL_SRC_FILES += src/ModelManager/NewModelManager.cpp -LOCAL_SRC_FILES += src/SimpleLand/SimpleLand.cpp -LOCAL_SRC_FILES += src/PhysicsManager/PhysicsManager.cpp - -LOCAL_SRC_FILES += src/Render/RenderMisc.cpp -LOCAL_SRC_FILES += src/Render/RenderParams.cpp - -LOCAL_SRC_FILES += src/Render/SalmonRender/BackgroundCubemap.cpp -LOCAL_SRC_FILES += src/Render/SalmonRender/SalmonRenderInterface.cpp -LOCAL_SRC_FILES += src/Render/SalmonRender/SalmonRenderGLES20.cpp -LOCAL_SRC_FILES += src/Render/SalmonRender/SalmonRenderAndroid.cpp -LOCAL_SRC_FILES += src/Render/SalmonRender/Cameras.cpp - -LOCAL_SRC_FILES += src/Animation/SalmonAnimation.cpp -LOCAL_SRC_FILES += src/SalmonEngineAndroid.cpp -LOCAL_SRC_FILES += src/SalmonEngineInterface.cpp -LOCAL_LDLIBS := -lGLESv2 - -LOCAL_LDLIBS += -llog -Wl -lz - -#debug -#LOCAL_CFLAGS += -g -ggdb -O0 -#LOCAL_LDLIBS += -g -ggdb - -#no -s cause no need stripping!!!! - -include $(BUILD_SHARED_LIBRARY) diff --git a/SalmonEngineAndroid/.gitignore b/SalmonEngineAndroid/.gitignore new file mode 100755 index 0000000..a4c7838 --- /dev/null +++ b/SalmonEngineAndroid/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/SalmonEngineAndroid/.idea/compiler.xml b/SalmonEngineAndroid/.idea/compiler.xml new file mode 100755 index 0000000..96cc43e --- /dev/null +++ b/SalmonEngineAndroid/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/copyright/profiles_settings.xml b/SalmonEngineAndroid/.idea/copyright/profiles_settings.xml new file mode 100755 index 0000000..c7d1c5a --- /dev/null +++ b/SalmonEngineAndroid/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/encodings.xml b/SalmonEngineAndroid/.idea/encodings.xml new file mode 100755 index 0000000..97626ba --- /dev/null +++ b/SalmonEngineAndroid/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/gradle.xml b/SalmonEngineAndroid/.idea/gradle.xml new file mode 100755 index 0000000..362a92b --- /dev/null +++ b/SalmonEngineAndroid/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/misc.xml b/SalmonEngineAndroid/.idea/misc.xml new file mode 100755 index 0000000..3651b66 --- /dev/null +++ b/SalmonEngineAndroid/.idea/misc.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/modules.xml b/SalmonEngineAndroid/.idea/modules.xml new file mode 100755 index 0000000..1757d80 --- /dev/null +++ b/SalmonEngineAndroid/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/runConfigurations.xml b/SalmonEngineAndroid/.idea/runConfigurations.xml new file mode 100755 index 0000000..7f68460 --- /dev/null +++ b/SalmonEngineAndroid/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/.idea/vcs.xml b/SalmonEngineAndroid/.idea/vcs.xml new file mode 100755 index 0000000..7dc701d --- /dev/null +++ b/SalmonEngineAndroid/.idea/vcs.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/SalmonEngineAndroid/app/.gitignore b/SalmonEngineAndroid/app/.gitignore new file mode 100755 index 0000000..3543521 --- /dev/null +++ b/SalmonEngineAndroid/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/SalmonEngineAndroid/app/CMakeLists.txt b/SalmonEngineAndroid/app/CMakeLists.txt new file mode 100755 index 0000000..4872f7a --- /dev/null +++ b/SalmonEngineAndroid/app/CMakeLists.txt @@ -0,0 +1,372 @@ + +# Sets the minimum version of CMake required to build the native +# library. You should either keep the default value or only pass a +# value of 3.4.0 or lower. + +cmake_minimum_required(VERSION 3.4.1) + +# Creates and names a library, sets it as either STATIC +# or SHARED, and provides the relative paths to its source code. +# You can define multiple libraries, and CMake builds it for you. +# Gradle automatically packages shared libraries with your APK. + + + +#ENGINE_PATH = $(SalmonEnginePathCygwin) + +#BOOST_PATH = $(LibsPathCygwin)/boost_1_52_0 + +#OGG_PATH = $(LibsPathCygwin)/libogg-1.3.0 + +#VORBIS_PATH = $(LibsPathCygwin)/libvorbis-1.3.2 + +#SQUIRREL_PATH = $(LibsPathCygwin)/sqplus + +#LIBPNG_PATH = $(LibsPathCygwin)/libpng_1.4.1_android + +#LIBJPEG_PATH = $(LibsPathCygwin)/jpeg-9 + +#ZIP_PATH = $(LibsPathCygwin)/julienr-libzip-android/jni + +set(BOOST_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../boost_1_63_0) + +set(BOOST_GIL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/boost-gil-extension) + +set(ZIP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/julienr-libzip-android/jni) + +set(LIBPNG_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/libpng_1.4.1_android) + +set(LIBJPEG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/jpeg-9") + +set(SQUIRREL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/sqplus) + +set(OGG_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/libogg-1.3.0) + +set(VORBIS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/libvorbis-1.3.2) + + +#include_directories(ZIP_PATH) + +add_library(zip + ${ZIP_PATH}/zip_add.c + ${ZIP_PATH}/zip_add_dir.c + ${ZIP_PATH}/zip_close.c + ${ZIP_PATH}/zip_delete.c + ${ZIP_PATH}/zip_dirent.c + ${ZIP_PATH}/zip_entry_free.c + ${ZIP_PATH}/zip_entry_new.c + ${ZIP_PATH}/zip_err_str.c + ${ZIP_PATH}/zip_error.c + ${ZIP_PATH}/zip_error_clear.c + ${ZIP_PATH}/zip_error_get.c + ${ZIP_PATH}/zip_error_get_sys_type.c + ${ZIP_PATH}/zip_error_strerror.c + ${ZIP_PATH}/zip_error_to_str.c + ${ZIP_PATH}/zip_fclose.c + ${ZIP_PATH}/zip_file_error_clear.c + ${ZIP_PATH}/zip_file_error_get.c + ${ZIP_PATH}/zip_file_get_offset.c + ${ZIP_PATH}/zip_file_strerror.c + ${ZIP_PATH}/zip_filerange_crc.c + ${ZIP_PATH}/zip_fopen.c + ${ZIP_PATH}/zip_fopen_index.c + ${ZIP_PATH}/zip_fread.c + ${ZIP_PATH}/zip_free.c + ${ZIP_PATH}/zip_get_archive_comment.c + ${ZIP_PATH}/zip_get_archive_flag.c + ${ZIP_PATH}/zip_get_file_comment.c + ${ZIP_PATH}/zip_get_num_files.c + ${ZIP_PATH}/zip_get_name.c + ${ZIP_PATH}/zip_memdup.c + ${ZIP_PATH}/zip_name_locate.c + ${ZIP_PATH}/zip_new.c + ${ZIP_PATH}/zip_open.c + ${ZIP_PATH}/zip_rename.c + ${ZIP_PATH}/zip_replace.c + ${ZIP_PATH}/zip_set_archive_comment.c + ${ZIP_PATH}/zip_set_archive_flag.c + ${ZIP_PATH}/zip_set_file_comment.c + ${ZIP_PATH}/zip_source_buffer.c + ${ZIP_PATH}/zip_source_file.c + ${ZIP_PATH}/zip_source_filep.c + ${ZIP_PATH}/zip_source_free.c + ${ZIP_PATH}/zip_source_function.c + ${ZIP_PATH}/zip_source_zip.c + ${ZIP_PATH}/zip_set_name.c + ${ZIP_PATH}/zip_stat.c + ${ZIP_PATH}/zip_stat_index.c + ${ZIP_PATH}/zip_stat_init.c + ${ZIP_PATH}/zip_strerror.c + ${ZIP_PATH}/zip_unchange.c + ${ZIP_PATH}/zip_unchange_all.c + ${ZIP_PATH}/zip_unchange_archive.c + ${ZIP_PATH}/zip_unchange_data.c + ) + +#include_directories(LIBPNG_PATH) + +add_library(png + ${LIBPNG_PATH}/png.c + ${LIBPNG_PATH}/pngerror.c + ${LIBPNG_PATH}/pngget.c + ${LIBPNG_PATH}/pngmem.c + ${LIBPNG_PATH}/pngpread.c + ${LIBPNG_PATH}/pngread.c + ${LIBPNG_PATH}/pngrio.c + ${LIBPNG_PATH}/pngrtran.c + ${LIBPNG_PATH}/pngrutil.c + ${LIBPNG_PATH}/pngset.c + ${LIBPNG_PATH}/pngtrans.c + ${LIBPNG_PATH}/pngwio.c + ${LIBPNG_PATH}/pngwrite.c + ${LIBPNG_PATH}/pngwtran.c + ${LIBPNG_PATH}/pngwutil.c + ) + +include_directories(${LIBJPEG_PATH}/vc10) + +add_library(jpeg + ${LIBJPEG_PATH}/jaricom.c + ${LIBJPEG_PATH}/jcapimin.c + ${LIBJPEG_PATH}/jcapistd.c + ${LIBJPEG_PATH}/jcarith.c + ${LIBJPEG_PATH}/jccoefct.c + ${LIBJPEG_PATH}/jccolor.c + ${LIBJPEG_PATH}/jcdctmgr.c + ${LIBJPEG_PATH}/jchuff.c + ${LIBJPEG_PATH}/jcinit.c + ${LIBJPEG_PATH}/jcmainct.c + ${LIBJPEG_PATH}/jcmarker.c + ${LIBJPEG_PATH}/jcmaster.c + ${LIBJPEG_PATH}/jcomapi.c + ${LIBJPEG_PATH}/jcparam.c + ${LIBJPEG_PATH}/jcprepct.c + ${LIBJPEG_PATH}/jcsample.c + ${LIBJPEG_PATH}/jctrans.c + ${LIBJPEG_PATH}/jdapimin.c + ${LIBJPEG_PATH}/jdapistd.c + ${LIBJPEG_PATH}/jdarith.c + ${LIBJPEG_PATH}/jdatadst.c + ${LIBJPEG_PATH}/jdatasrc.c + ${LIBJPEG_PATH}/jdcoefct.c + ${LIBJPEG_PATH}/jdcolor.c + ${LIBJPEG_PATH}/jddctmgr.c + ${LIBJPEG_PATH}/jdhuff.c + ${LIBJPEG_PATH}/jdinput.c + ${LIBJPEG_PATH}/jdmainct.c + ${LIBJPEG_PATH}/jdmarker.c + ${LIBJPEG_PATH}/jdmaster.c + ${LIBJPEG_PATH}/jdmerge.c + ${LIBJPEG_PATH}/jdpostct.c + ${LIBJPEG_PATH}/jdsample.c + ${LIBJPEG_PATH}/jdtrans.c + ${LIBJPEG_PATH}/jerror.c + ${LIBJPEG_PATH}/jfdctflt.c + ${LIBJPEG_PATH}/jfdctfst.c + ${LIBJPEG_PATH}/jfdctint.c + ${LIBJPEG_PATH}/jidctflt.c + ${LIBJPEG_PATH}/jidctfst.c + ${LIBJPEG_PATH}/jidctint.c + ${LIBJPEG_PATH}/jmemmgr.c + ${LIBJPEG_PATH}/jmemnobs.c + ${LIBJPEG_PATH}/jquant1.c + ${LIBJPEG_PATH}/jquant2.c + ${LIBJPEG_PATH}/jutils.c + ) + + + +#LOCAL_PATH := $(VORBIS_PATH)/lib +#LOCAL_C_INCLUDES := $(VORBIS_PATH)/include +#LOCAL_C_INCLUDES += $(VORBIS_PATH)/include/vorbis +#LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/src +#LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/books +#LOCAL_C_INCLUDES += $(VORBIS_PATH)/lib/modes +#LOCAL_C_INCLUDES += $(OGG_PATH)/include +#LOCAL_C_INCLUDES += $(OGG_PATH)/include/ogg + +include_directories(${OGG_PATH}/include) +include_directories(${VORBIS_PATH}/include) + +add_library(ogg + ${OGG_PATH}/src/framing.c + ${OGG_PATH}/src/bitwise.c + ) + +add_library(vorbis + ${VORBIS_PATH}/lib/mdct.c + ${VORBIS_PATH}/lib/smallft.c + ${VORBIS_PATH}/lib/block.c + ${VORBIS_PATH}/lib/envelope.c + ${VORBIS_PATH}/lib/window.c + ${VORBIS_PATH}/lib/lsp.c + ${VORBIS_PATH}/lib/lpc.c + ${VORBIS_PATH}/lib/analysis.c + ${VORBIS_PATH}/lib/synthesis.c + ${VORBIS_PATH}/lib/psy.c + ${VORBIS_PATH}/lib/info.c + ${VORBIS_PATH}/lib/floor1.c + ${VORBIS_PATH}/lib/floor0.c + ${VORBIS_PATH}/lib/res0.c + ${VORBIS_PATH}/lib/mapping0.c + ${VORBIS_PATH}/lib/registry.c + ${VORBIS_PATH}/lib/codebook.c + ${VORBIS_PATH}/lib/sharedbook.c + ${VORBIS_PATH}/lib/lookup.c + ${VORBIS_PATH}/lib/bitrate.c + ${VORBIS_PATH}/lib/vorbisfile.c + ) + + +include_directories(${BOOST_PATH}) + +add_library(boost + ${BOOST_PATH}/libs/thread/src/pthread/thread.cpp + + +#thread +${BOOST_PATH}/libs/thread/src/pthread/thread.cpp +${BOOST_PATH}/libs/thread/src/pthread/once.cpp + +#signals +${BOOST_PATH}/libs/signals/src/connection.cpp +${BOOST_PATH}/libs/signals/src/named_slot_map.cpp +${BOOST_PATH}/libs/signals/src/signal_base.cpp +${BOOST_PATH}/libs/signals/src/slot.cpp +${BOOST_PATH}/libs/signals/src/trackable.cpp + +#system +${BOOST_PATH}/libs/system/src/error_code.cpp + +#regex +${BOOST_PATH}/libs/regex/src/c_regex_traits.cpp +${BOOST_PATH}/libs/regex/src/cpp_regex_traits.cpp +${BOOST_PATH}/libs/regex/src/cregex.cpp +${BOOST_PATH}/libs/regex/src/fileiter.cpp +${BOOST_PATH}/libs/regex/src/icu.cpp +${BOOST_PATH}/libs/regex/src/instances.cpp +${BOOST_PATH}/libs/regex/src/posix_api.cpp +${BOOST_PATH}/libs/regex/src/regex.cpp +${BOOST_PATH}/libs/regex/src/regex_debug.cpp +${BOOST_PATH}/libs/regex/src/regex_raw_buffer.cpp +${BOOST_PATH}/libs/regex/src/regex_traits_defaults.cpp +${BOOST_PATH}/libs/regex/src/static_mutex.cpp +${BOOST_PATH}/libs/regex/src/usinstances.cpp +${BOOST_PATH}/libs/regex/src/w32_regex_traits.cpp +${BOOST_PATH}/libs/regex/src/wc_regex_traits.cpp +${BOOST_PATH}/libs/regex/src/wide_posix_api.cpp +${BOOST_PATH}/libs/regex/src/winstances.cpp + +#date_time +${BOOST_PATH}/libs/date_time/src/gregorian/greg_month.cpp +${BOOST_PATH}/libs/date_time/src/gregorian/greg_weekday.cpp +${BOOST_PATH}/libs/date_time/src/gregorian/date_generators.cpp +) + + + +find_library( # Sets the name of the path variable. + z-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + z ) + +find_library( # Sets the name of the path variable. + GLESv2-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + GLESv2 ) +find_library( # Sets the name of the path variable. + log-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + log ) + + + + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../) + + +include_directories(${BOOST_PATH}) +include_directories(${LIBPNG_PATH}) +include_directories(${LIBJPEG_PATH}) +include_directories(${ZIP_PATH}) + +include_directories(${BOOST_GIL_PATH}) + + + +add_definitions(-DTARGET_ANDROID) + + +add_library( # Sets the name of the library. + engine + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + # Associated headers in the same location as their source + # file are automatically included. + + #testcpp.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/DataTypes/DataTypes.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/DataTypes/NewDataTypes.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/FileUtils/FileUtils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/JniApi/JniApi.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/JniApi/JniApplication.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/Console/Console.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/SerializeInterface/SerializeInterface.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/Network/Network.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/PngHelper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/JpegHelper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/TgaLoader.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/SimpleTimer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Utils/ThreadUtils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/TextureManager/SalmonTexture.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/ShaderManager/ShaderManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/FrameManager/FrameManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/LightManager/LightManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SoundManager/SoundManagerAndroid.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SoundManager/SoundManagerDataTypes.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/FontManager/FontManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/ScriptManager/ScriptManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SmartValueManager/SmartValueManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/GUIManager/GUIManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/GUIManager/ButtonWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/GUIManager/WidgetXmlParsers.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/HalibutAnimation/HalibutAnimation.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/ModelManager/ModelManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/ModelManager/NewModelManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SimpleLand/SimpleLand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/PhysicsManager/PhysicsManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/RenderMisc.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/RenderParams.cpp + + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/SalmonRender/BackgroundCubemap.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/SalmonRender/SalmonRenderInterface.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/SalmonRender/SalmonRenderGLES20.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/SalmonRender/SalmonRenderAndroid.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Render/SalmonRender/Cameras.cpp + + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/Animation/SalmonAnimation.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SalmonEngineAndroid.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../../src/SalmonEngineInterface.cpp + ) + + +target_link_libraries(engine +${z-lib} +${log-lib} +${GLESv2-lib} +png +zip +boost +jpeg +ogg +vorbis +) diff --git a/SalmonEngineAndroid/app/build.gradle b/SalmonEngineAndroid/app/build.gradle new file mode 100755 index 0000000..24b2066 --- /dev/null +++ b/SalmonEngineAndroid/app/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 24 + buildToolsVersion "24.0.1" + defaultConfig { + minSdkVersion 15 + targetSdkVersion 24 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + externalNativeBuild { + cmake { + cppFlags "-std=c++11 -frtti -fexceptions -Wno-c++11-narrowing" + } + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:24.2.1' + testCompile 'junit:junit:4.12' +} diff --git a/SalmonEngineAndroid/app/proguard-rules.pro b/SalmonEngineAndroid/app/proguard-rules.pro new file mode 100755 index 0000000..1ab18bb --- /dev/null +++ b/SalmonEngineAndroid/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/SalmonEngineAndroid/app/src/androidTest/java/fishrungames/salmonengineandroid/ExampleInstrumentedTest.java b/SalmonEngineAndroid/app/src/androidTest/java/fishrungames/salmonengineandroid/ExampleInstrumentedTest.java new file mode 100755 index 0000000..247c181 --- /dev/null +++ b/SalmonEngineAndroid/app/src/androidTest/java/fishrungames/salmonengineandroid/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package fishrungames.salmonengineandroid; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("fishrungames.salmonengineandroid", appContext.getPackageName()); + } +} diff --git a/SalmonEngineAndroid/app/src/main/AndroidManifest.xml b/SalmonEngineAndroid/app/src/main/AndroidManifest.xml new file mode 100755 index 0000000..0b85990 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/SalmonEngineAndroid/app/src/main/cpp/native-lib.cpp b/SalmonEngineAndroid/app/src/main/cpp/native-lib.cpp new file mode 100755 index 0000000..e7cdd00 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/cpp/native-lib.cpp @@ -0,0 +1,3 @@ +#include +#include + diff --git a/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/EngineWrapper.java b/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/EngineWrapper.java new file mode 100755 index 0000000..ea2a080 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/EngineWrapper.java @@ -0,0 +1,448 @@ +package fishrungames.salmonengineandroid; + + +import java.io.IOException; +import java.io.InputStream; +import android.content.Context; +import android.content.ContextWrapper; +import android.content.res.AssetFileDescriptor; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.SoundPool; +import android.opengl.GLSurfaceView; +import android.view.GestureDetector; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.GestureDetector.SimpleOnGestureListener; +//import android.net.Uri; + +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +public class EngineWrapper { + + static class CustomGestureListener extends SimpleOnGestureListener + { + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) + { + EngineWrapper.OnFling(velocityX, velocityY, e2.getEventTime()); + + return true; + } + + } + + static class JniDestroyRunnable implements Runnable + { + public void run() + { + EngineWrapper.Destroy(); + } + } + + static ContextWrapper Instance = null; + + static Map FileMap = new HashMap(); + + static Map SoundMap = new HashMap(); + + static Context context; + + static SoundPool soundPool; + + static MediaPlayer mp; + + static GLSurfaceView mView; + + static GestureDetector customGestureDetector = new GestureDetector(new CustomGestureListener()); + + + public static void SetActivityInstance(ContextWrapper inst) + { + Instance = inst; + context = Instance.getBaseContext(); + + soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); + + mp = new MediaPlayer(); + + } + + public static void SetView(GLSurfaceView view) + { + + mView = view; + + } + + public static String GetApplicationDir() + { + return Instance.getFilesDir().getPath(); + } + + public static void AddToFileMap(String s, Integer i) + { + FileMap.put(s, i); + + } + + + + public synchronized static int OpenFile(String fileName) + { + String newFileName; + + int i = fileName.lastIndexOf("."); + + if (i == -1) + { + + newFileName = fileName; + } + else + { + newFileName = fileName.substring(0, i); + } + + + if (!FileMap.containsKey(newFileName)) + { + return 0; + } + + Integer id = FileMap.get(newFileName); + + try + { + + InputStream is = Instance.getResources().openRawResource(id); + + byte[] buffer = new byte[256]; + int bytesRead; + + CreateFile(is.available()); + + while ((bytesRead = is.read(buffer, 0, 256)) != -1) + { + WriteToFile(buffer, bytesRead); + } + + + } catch (Throwable t) { + ConsoleOut("Exception in FileWrapper::OpenFile!\n"); + return 0; + + } + + return 1; + + } + + public static native void SetupEnviroment(); + + public static native void SetupApkFilePath(String s); + + public static native void ConsoleOut(String s); + + public static native void CreateFile(int fileSize); + + public static native void WriteToFile(byte [] buffer, int bufferSize); + + + public static void LoadSound(String soundFileName) + { + + if (SoundMap.containsKey(soundFileName)) + { + return; + } + /* + String newFileName; + + int i = soundFileName.lastIndexOf("."); + + if (i == -1) + { + + newFileName = soundFileName; + } + else + { + newFileName = soundFileName.substring(0, i); + }*/ + + //int soundId = soundPool.load(context, FileMap.get(newFileName), 1); + + AssetFileDescriptor afd = null; + + try + { + afd = Instance.getAssets().openFd(soundFileName); + } catch (IOException e) + { + e.printStackTrace(); + } + + int soundId = soundPool.load(afd, 1); + + SoundMap.put(soundFileName, soundId); + + } + + public static void ReleaseAllSoundsAndMusic() + { + + mp.stop(); + mp.reset(); + + //soundPool.autoPause(); + + Enumeration i = Collections.enumeration(SoundMap.values()); + + while(i.hasMoreElements()) + { + soundPool.stop(i.nextElement()); + } + + SoundMap.clear(); + + } + + public static void PauseAllSoundsAndMusic() + { + //NIU right now + + soundPool.autoPause(); + + mp.pause(); + } + + public static void ResumeAllSoundsAndMusic() + { + + //NIU right now + + soundPool.autoResume(); + + mp.start(); + } + + + public static void StopMusic() + { + mp.stop(); + mp.reset(); + } + + public static void PlayMusic(String musicFileName) + { + InnerPlayMusic(musicFileName, false); + } + + + public static void PlayMusicLooped(String musicFileName) + { + InnerPlayMusic(musicFileName, true); + } + + private static void InnerPlayMusic(String musicFileName, boolean looped) + { + /* + String newFileName; + + int i = musicFileName.lastIndexOf("."); + + if (i == -1) + { + + newFileName = musicFileName; + } + else + { + newFileName = musicFileName.substring(0, i); + } + */ + try + { + //Uri path = Uri.parse("android.resource://"+Instance.getPackageName()+"/assets/"+newFileName); + + AssetFileDescriptor afd = null; + + try + { + afd = Instance.getAssets().openFd(musicFileName); + } catch (IOException e) + { + e.printStackTrace(); + } + + //mp.setDataSource(context, path); + + mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); + + mp.prepare(); + mp.setLooping(looped); + mp.start(); + } catch (IllegalArgumentException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalStateException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } + + public static void PlaySound(String soundFileName) + { + if (!SoundMap.containsKey(soundFileName)) + { + return; + } + + int soundId = SoundMap.get(soundFileName); + + soundPool.play(soundId, 1,1,1,0,1); + } + + + public static void LoadSalmonEngineLibrary() + { + System.loadLibrary("engine"); + } + + static + { + //System.loadLibrary("gnustl_shared"); + } + + //Application methods + + public static native void Update(long dt); + + public static native void Destroy(); + public static native int IsInited(); + public static native void OnTapDown(float x, float y, long time); + public static native void OnTapUp(float x, float y, long time); + public static native void OnTapUpAfterMove(float x, float y, long time); + public static native void OnTapMove(float x, float y, long time); + + public static native void OnFling(float velocityX, float velocityY, long time); + public static native void OnScroll(float distanceX, float distanceY, long time); + + public static native void OnKeyPress(int keyCode); + + + public static void CallDestroy() + { + mView.queueEvent(new JniDestroyRunnable()); + } + + + + + public static void ProcessKeyDown(int keyCode, KeyEvent event) + { + int ascii_keycode = keyCode; + + if (keyCode == KeyEvent.KEYCODE_DEL) + { + ascii_keycode = 8; //Hack - getUnicodeChar does not recognize backspace + } + else + { + ascii_keycode = event.getUnicodeChar(); + } + + OnKeyPress(ascii_keycode); + + } + + static boolean IsScrolling = false; + static float PrevMovePosX = 0; + static float PrevMovePosY = 0; + static boolean EnableFlingGesture = false; + + public static void ProcessTouchEvent(MotionEvent event) + { + + if (EnableFlingGesture) + { + if (customGestureDetector.onTouchEvent(event)) + { + return; + } + } + + + if (event.getAction() == MotionEvent.ACTION_MOVE) + { + float x = event.getX(); + float y = (float) mView.getHeight() - event.getY(); + + float oldX = PrevMovePosX; + float oldY = (float) mView.getHeight() - PrevMovePosY; + + + float shiftX = x - oldX; + float shiftY = y - oldY; + + if (Math.abs(shiftX) > 0.001f || Math.abs(shiftY) > 0.001f) + { + OnScroll(-shiftX, -shiftY, event.getEventTime()); + } + + PrevMovePosX = event.getX(); + PrevMovePosY = event.getY(); + + IsScrolling = true; + + } + + + + if (event.getAction() == MotionEvent.ACTION_UP) + { + + + float x = event.getX(); + float y = (float) mView.getHeight() - event.getY(); + + if (IsScrolling) + { + IsScrolling = false; + OnTapUpAfterMove(x, y, event.getEventTime()); + } + else + { + OnTapUp(x, y, event.getEventTime()); + } + + } + + if (event.getAction() == MotionEvent.ACTION_DOWN) + { + float x = event.getX(); + float y = (float) mView.getHeight() - event.getY(); + + PrevMovePosX = event.getX(); + PrevMovePosY = event.getY(); + + OnTapDown(x, y, event.getEventTime()); + + } + } + +} \ No newline at end of file diff --git a/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/GLViewAncestor.java b/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/GLViewAncestor.java new file mode 100755 index 0000000..e4144c7 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/java/fishrungames/salmonengineandroid/GLViewAncestor.java @@ -0,0 +1,289 @@ +package fishrungames.salmonengineandroid; + + +import android.content.Context; +import android.graphics.PixelFormat; +import android.opengl.GLSurfaceView; +import android.util.Log; + +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.egl.EGLContext; +import javax.microedition.khronos.egl.EGLDisplay; + +/* + This is a OpenGL View template. Do not change this code - derive your own class instead!! + */ + +public class GLViewAncestor extends GLSurfaceView +{ + private static String TAG = "GL2JNIView"; + private static final boolean DEBUG = false; + + public GLViewAncestor(Context context) + { + super(context); + } + + public void init(boolean translucent, int depth, int stencil) + { + + /* + * By default, GLSurfaceView() creates a RGB_565 opaque surface. If we + * want a translucent one, we should change the surface's format here, + * using PixelFormat.TRANSLUCENT for GL Surfaces is interpreted as any + * 32-bit surface with alpha by SurfaceFlinger. + */ + if (translucent) + { + this.getHolder().setFormat(PixelFormat.TRANSLUCENT); + } + + /* + * Setup the context factory for 2.0 rendering. See ContextFactory class + * definition below + */ + setEGLContextFactory(new ContextFactory()); + + /* + * We need to choose an EGLConfig that matches the format of our surface + * exactly. This is going to be done in our custom config chooser. See + * ConfigChooser class definition below. + */ + setEGLConfigChooser(translucent ? new ConfigChooser(8, 8, 8, 8, depth, + stencil) : new ConfigChooser(5, 6, 5, 0, depth, stencil)); + + } + + private static class ContextFactory implements + GLSurfaceView.EGLContextFactory + { + private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098; + + @Override + public EGLContext createContext(EGL10 egl, EGLDisplay display, + EGLConfig eglConfig) + { + Log.w(TAG, "creating OpenGL ES 2.0 context"); + checkEglError("Before eglCreateContext", egl); + int[] attrib_list = + { EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE }; + EGLContext context = egl.eglCreateContext(display, eglConfig, + EGL10.EGL_NO_CONTEXT, attrib_list); + checkEglError("After eglCreateContext", egl); + return context; + } + + @Override + public void destroyContext(EGL10 egl, EGLDisplay display, + EGLContext context) + { + egl.eglDestroyContext(display, context); + } + } + + private static void checkEglError(String prompt, EGL10 egl) + { + int error; + while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) + { + Log.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error)); + } + } + + private static class ConfigChooser implements + GLSurfaceView.EGLConfigChooser + { + + public ConfigChooser(int r, int g, int b, int a, int depth, int stencil) + { + mRedSize = r; + mGreenSize = g; + mBlueSize = b; + mAlphaSize = a; + mDepthSize = depth; + mStencilSize = stencil; + } + + /* + * This EGL config specification is used to specify 2.0 rendering. We + * use a minimum size of 4 bits for red/green/blue, but will perform + * actual matching in chooseConfig() below. + */ + private static int EGL_OPENGL_ES2_BIT = 4; + private static int[] s_configAttribs2 = + { EGL10.EGL_RED_SIZE, 4, EGL10.EGL_GREEN_SIZE, 4, + EGL10.EGL_BLUE_SIZE, 4, EGL10.EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES2_BIT, EGL10.EGL_NONE }; + + @Override + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) + { + + /* + * Get the number of minimally matching EGL configurations + */ + int[] num_config = new int[1]; + egl.eglChooseConfig(display, s_configAttribs2, null, 0, num_config); + + int numConfigs = num_config[0]; + + if (numConfigs <= 0) + { + throw new IllegalArgumentException( + "No configs match configSpec"); + } + + /* + * Allocate then read the array of minimally matching EGL configs + */ + EGLConfig[] configs = new EGLConfig[numConfigs]; + egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, + num_config); + + if (DEBUG) + { + printConfigs(egl, display, configs); + } + /* + * Now return the "best" one + */ + return chooseConfig(egl, display, configs); + } + + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, + EGLConfig[] configs) + { + for (EGLConfig config : configs) + { + int d = findConfigAttrib(egl, display, config, + EGL10.EGL_DEPTH_SIZE, 0); + int s = findConfigAttrib(egl, display, config, + EGL10.EGL_STENCIL_SIZE, 0); + + // We need at least mDepthSize and mStencilSize bits + if (d < mDepthSize || s < mStencilSize) + continue; + + // We want an *exact* match for red/green/blue/alpha + int r = findConfigAttrib(egl, display, config, + EGL10.EGL_RED_SIZE, 0); + int g = findConfigAttrib(egl, display, config, + EGL10.EGL_GREEN_SIZE, 0); + int b = findConfigAttrib(egl, display, config, + EGL10.EGL_BLUE_SIZE, 0); + int a = findConfigAttrib(egl, display, config, + EGL10.EGL_ALPHA_SIZE, 0); + + if (r == mRedSize && g == mGreenSize && b == mBlueSize + && a == mAlphaSize) + return config; + } + return null; + } + + private int findConfigAttrib(EGL10 egl, EGLDisplay display, + EGLConfig config, int attribute, int defaultValue) + { + + if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) + { + return mValue[0]; + } + return defaultValue; + } + + private void printConfigs(EGL10 egl, EGLDisplay display, + EGLConfig[] configs) + { + int numConfigs = configs.length; + Log.w(TAG, String.format("%d configurations", numConfigs)); + for (int i = 0; i < numConfigs; i++) + { + Log.w(TAG, String.format("Configuration %d:\n", i)); + printConfig(egl, display, configs[i]); + } + } + + private void printConfig(EGL10 egl, EGLDisplay display, EGLConfig config) + { + int[] attributes = + { + EGL10.EGL_BUFFER_SIZE, + EGL10.EGL_ALPHA_SIZE, + EGL10.EGL_BLUE_SIZE, + EGL10.EGL_GREEN_SIZE, + EGL10.EGL_RED_SIZE, + EGL10.EGL_DEPTH_SIZE, + EGL10.EGL_STENCIL_SIZE, + EGL10.EGL_CONFIG_CAVEAT, + EGL10.EGL_CONFIG_ID, + EGL10.EGL_LEVEL, + EGL10.EGL_MAX_PBUFFER_HEIGHT, + EGL10.EGL_MAX_PBUFFER_PIXELS, + EGL10.EGL_MAX_PBUFFER_WIDTH, + EGL10.EGL_NATIVE_RENDERABLE, + EGL10.EGL_NATIVE_VISUAL_ID, + EGL10.EGL_NATIVE_VISUAL_TYPE, + 0x3030, // EGL10.EGL_PRESERVED_RESOURCES, + EGL10.EGL_SAMPLES, + EGL10.EGL_SAMPLE_BUFFERS, + EGL10.EGL_SURFACE_TYPE, + EGL10.EGL_TRANSPARENT_TYPE, + EGL10.EGL_TRANSPARENT_RED_VALUE, + EGL10.EGL_TRANSPARENT_GREEN_VALUE, + EGL10.EGL_TRANSPARENT_BLUE_VALUE, + 0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB, + 0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA, + 0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL, + 0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL, + EGL10.EGL_LUMINANCE_SIZE, EGL10.EGL_ALPHA_MASK_SIZE, + EGL10.EGL_COLOR_BUFFER_TYPE, EGL10.EGL_RENDERABLE_TYPE, + 0x3042 // EGL10.EGL_CONFORMANT + }; + String[] names = + { "EGL_BUFFER_SIZE", "EGL_ALPHA_SIZE", "EGL_BLUE_SIZE", + "EGL_GREEN_SIZE", "EGL_RED_SIZE", "EGL_DEPTH_SIZE", + "EGL_STENCIL_SIZE", "EGL_CONFIG_CAVEAT", + "EGL_CONFIG_ID", "EGL_LEVEL", "EGL_MAX_PBUFFER_HEIGHT", + "EGL_MAX_PBUFFER_PIXELS", "EGL_MAX_PBUFFER_WIDTH", + "EGL_NATIVE_RENDERABLE", "EGL_NATIVE_VISUAL_ID", + "EGL_NATIVE_VISUAL_TYPE", "EGL_PRESERVED_RESOURCES", + "EGL_SAMPLES", "EGL_SAMPLE_BUFFERS", + "EGL_SURFACE_TYPE", "EGL_TRANSPARENT_TYPE", + "EGL_TRANSPARENT_RED_VALUE", + "EGL_TRANSPARENT_GREEN_VALUE", + "EGL_TRANSPARENT_BLUE_VALUE", + "EGL_BIND_TO_TEXTURE_RGB", "EGL_BIND_TO_TEXTURE_RGBA", + "EGL_MIN_SWAP_INTERVAL", "EGL_MAX_SWAP_INTERVAL", + "EGL_LUMINANCE_SIZE", "EGL_ALPHA_MASK_SIZE", + "EGL_COLOR_BUFFER_TYPE", "EGL_RENDERABLE_TYPE", + "EGL_CONFORMANT" }; + int[] value = new int[1]; + for (int i = 0; i < attributes.length; i++) + { + int attribute = attributes[i]; + String name = names[i]; + if (egl.eglGetConfigAttrib(display, config, attribute, value)) + { + Log.w(TAG, String.format(" %s: %d\n", name, value[0])); + } else + { + // Log.w(TAG, String.format(" %s: failed\n", name)); + while (egl.eglGetError() != EGL10.EGL_SUCCESS) + ; + } + } + } + + // Subclasses can adjust these values: + protected int mRedSize; + protected int mGreenSize; + protected int mBlueSize; + protected int mAlphaSize; + protected int mDepthSize; + protected int mStencilSize; + private int[] mValue = new int[1]; + } + +} \ No newline at end of file diff --git a/SalmonEngineAndroid/app/src/main/res/mipmap-hdpi/ic_launcher.png b/SalmonEngineAndroid/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100755 index 0000000..cde69bc Binary files /dev/null and b/SalmonEngineAndroid/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/SalmonEngineAndroid/app/src/main/res/mipmap-mdpi/ic_launcher.png b/SalmonEngineAndroid/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100755 index 0000000..c133a0c Binary files /dev/null and b/SalmonEngineAndroid/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/SalmonEngineAndroid/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/SalmonEngineAndroid/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100755 index 0000000..bfa42f0 Binary files /dev/null and b/SalmonEngineAndroid/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/SalmonEngineAndroid/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/SalmonEngineAndroid/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100755 index 0000000..324e72c Binary files /dev/null and b/SalmonEngineAndroid/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/SalmonEngineAndroid/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/SalmonEngineAndroid/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100755 index 0000000..aee44e1 Binary files /dev/null and b/SalmonEngineAndroid/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/SalmonEngineAndroid/app/src/main/res/values/colors.xml b/SalmonEngineAndroid/app/src/main/res/values/colors.xml new file mode 100755 index 0000000..2a12c47 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/SalmonEngineAndroid/app/src/main/res/values/strings.xml b/SalmonEngineAndroid/app/src/main/res/values/strings.xml new file mode 100755 index 0000000..bdf4979 --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + SalmonEngineAndroid + diff --git a/SalmonEngineAndroid/app/src/main/res/values/styles.xml b/SalmonEngineAndroid/app/src/main/res/values/styles.xml new file mode 100755 index 0000000..dff358e --- /dev/null +++ b/SalmonEngineAndroid/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/SalmonEngineAndroid/app/src/test/java/fishrungames/salmonengineandroid/ExampleUnitTest.java b/SalmonEngineAndroid/app/src/test/java/fishrungames/salmonengineandroid/ExampleUnitTest.java new file mode 100755 index 0000000..892baf6 --- /dev/null +++ b/SalmonEngineAndroid/app/src/test/java/fishrungames/salmonengineandroid/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package fishrungames.salmonengineandroid; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/SalmonEngineAndroid/build.gradle b/SalmonEngineAndroid/build.gradle new file mode 100755 index 0000000..2449eab --- /dev/null +++ b/SalmonEngineAndroid/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/SalmonEngineAndroid/gradle.properties b/SalmonEngineAndroid/gradle.properties new file mode 100755 index 0000000..3530b01 --- /dev/null +++ b/SalmonEngineAndroid/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.jar b/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000..13372ae Binary files /dev/null and b/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.jar differ diff --git a/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.properties b/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.properties new file mode 100755 index 0000000..04e285f --- /dev/null +++ b/SalmonEngineAndroid/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Dec 28 10:00:20 PST 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/SalmonEngineAndroid/gradlew b/SalmonEngineAndroid/gradlew new file mode 100755 index 0000000..9d82f78 --- /dev/null +++ b/SalmonEngineAndroid/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/SalmonEngineAndroid/gradlew.bat b/SalmonEngineAndroid/gradlew.bat new file mode 100755 index 0000000..aec9973 --- /dev/null +++ b/SalmonEngineAndroid/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/SalmonEngineAndroid/settings.gradle b/SalmonEngineAndroid/settings.gradle new file mode 100755 index 0000000..d3db109 --- /dev/null +++ b/SalmonEngineAndroid/settings.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/include/ScriptManager/ScriptManager.h b/include/ScriptManager/ScriptManager.h old mode 100644 new mode 100755 index ac6e19b..897f8ee --- a/include/ScriptManager/ScriptManager.h +++ b/include/ScriptManager/ScriptManager.h @@ -1,10 +1,12 @@ #ifndef SCRIPT_MANAGER_H_INCLUDED #define SCRIPT_MANAGER_H_INCLUDED -#include "sqplus.h" +//#include "sqplus.h" #include #include +typedef char SQChar; + namespace SE { @@ -30,6 +32,7 @@ struct TScriptInfo }; + class TFunctionBinderInterface { public: @@ -47,9 +50,9 @@ public: class TScriptManager : public TSerializeInterface { protected: - HSQUIRRELVM virtualMachine; - std::map FuncInfoMap; - + //HSQUIRRELVM virtualMachine; + //std::map FuncInfoMap; +/* template void RegisterFunc(T1& object, T2 method, const std::string& funcName) { @@ -60,7 +63,7 @@ protected: void RegisterFunc(T globalFunc, const std::string& funcName) { SqPlus::RegisterGlobal(virtualMachine, globalFunc, _SC(funcName.c_str())); - } + }*/ public: TScriptManager(); @@ -75,20 +78,21 @@ public: template void AddFunction(const std::string& shortName, TScriptInfo scriptInfo, T1& object, T2 method) { + /* AddFuncDescription(shortName, scriptInfo); RegisterFunc(object, method, shortName); RegisterFunc(object, method, scriptInfo.LongName); - FuncInfoMap[shortName].Registered = true; + FuncInfoMap[shortName].Registered = true;*/ } template void AddFunction(const std::string& shortName, TScriptInfo scriptInfo, T globalFunc) { - AddFuncDescription(shortName, scriptInfo); + /*AddFuncDescription(shortName, scriptInfo); RegisterFunc(globalFunc, shortName); RegisterFunc(globalFunc, scriptInfo.LongName); - FuncInfoMap[shortName].Registered = true; + FuncInfoMap[shortName].Registered = true;*/ } void BindFunctionsFromObject(TFunctionBinderInterface* binderObject); @@ -103,9 +107,9 @@ public: -void SQ_Print(const SQChar *inString); -void SQ_PrintWidgetList(); -void SQ_MoveWidget(const SQChar *widgetName, float x, float y); +//void SQ_Print(const SQChar *inString); +//void SQ_PrintWidgetList(); +//void SQ_MoveWidget(const SQChar *widgetName, float x, float y); //void SQ_PrintTextureList(); //void SQ_PrintAnimationList(); diff --git a/include/SoundManager/SoundManagerDataTypes.h b/include/SoundManager/SoundManagerDataTypes.h old mode 100644 new mode 100755 index ae300df..d66e5f3 --- a/include/SoundManager/SoundManagerDataTypes.h +++ b/include/SoundManager/SoundManagerDataTypes.h @@ -5,8 +5,8 @@ #ifdef TARGET_ANDROID -#include -#include +//#include +//#include #endif #include "boost/thread.hpp" diff --git a/include/Utils/Console/Console.h b/include/Utils/Console/Console.h old mode 100644 new mode 100755 index 7af4f22..d964fe8 --- a/include/Utils/Console/Console.h +++ b/include/Utils/Console/Console.h @@ -20,8 +20,8 @@ Use global variable Console like that: #include #endif #ifdef TARGET_ANDROID -#include -#include +//#include +//#include #include "boost/thread.hpp" #endif diff --git a/include/Utils/JniApi/JniApi.h b/include/Utils/JniApi/JniApi.h old mode 100644 new mode 100755 index d04ef36..3323d19 --- a/include/Utils/JniApi/JniApi.h +++ b/include/Utils/JniApi/JniApi.h @@ -12,6 +12,18 @@ #include #include +extern "C" { +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_SetupEnviroment(JNIEnv* env, jobject thiz); +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_SetupApkFilePath(JNIEnv* env, jobject thiz, jstring s); +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_ConsoleOut(JNIEnv* env, jobject thiz, jstring s); + +//All 2 deprecated +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_CreateFile(JNIEnv* env, jobject thiz, int fileSize); +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_WriteToFile(JNIEnv* env, jobject thiz, jbyteArray buffer, int bufferSize); + + +}; + namespace SE { @@ -35,17 +47,7 @@ extern cardinal* FileArr; extern int FileSize; extern std::string ApkFilePath; -extern "C" { - JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_SetupEnviroment(JNIEnv* env, jobject thiz); - JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_SetupApkFilePath(JNIEnv* env, jobject thiz, jstring s); - JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_ConsoleOut(JNIEnv* env, jobject thiz, jstring s); - - //All 2 deprecated - JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_CreateFile(JNIEnv* env, jobject thiz, int fileSize); - JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_WriteToFile(JNIEnv* env, jobject thiz, jbyteArray buffer, int bufferSize); - - -}; + //Deprecated void JniCallOpenFile(const std::string& fileName); diff --git a/src/ScriptManager/ScriptManager.cpp b/src/ScriptManager/ScriptManager.cpp index e4079d5..5e0df14 100644 --- a/src/ScriptManager/ScriptManager.cpp +++ b/src/ScriptManager/ScriptManager.cpp @@ -10,9 +10,9 @@ std::vector TFunctionBinderInterface::BinderList; TScriptManager::TScriptManager() { - SquirrelVM::Init(); + //SquirrelVM::Init(); - virtualMachine = SquirrelVM::GetVMPtr(); + //virtualMachine = SquirrelVM::GetVMPtr(); //SqPlus::RegisterGlobal(virtualMachine, SQ_Print, _SC("Print")); //SqPlus::RegisterGlobal(virtualMachine, SQ_Print, _SC("p")); @@ -58,11 +58,12 @@ TScriptManager::TScriptManager() TScriptManager::~TScriptManager() { *Console<<"Script manager shutdown"; - SquirrelVM::Shutdown(); + //SquirrelVM::Shutdown(); } void TScriptManager::RunScript(const std::string& scriptCode) { + /* try { SquirrelObject m = SquirrelVM::CompileBuffer(_T(scriptCode.c_str())); @@ -73,13 +74,14 @@ void TScriptManager::RunScript(const std::string& scriptCode) { *Console<<"Script failed to run"; } - + */ } void TScriptManager::BindBasicFunctions() { //Hack =D + /* static bool alreadyBind = false; if (!alreadyBind) @@ -103,7 +105,7 @@ void TScriptManager::BindBasicFunctions() alreadyBind = true; } - +*/ } @@ -111,13 +113,14 @@ void TScriptManager::BindBasicFunctions() void TScriptManager::AddFuncDescription(const std::string& shortName, TScriptInfo scriptInfo) { + /* if (FuncInfoMap.count(shortName) > 0) { //If this description is already exists scriptInfo.Registered = FuncInfoMap[shortName].Registered; } - FuncInfoMap[shortName] = scriptInfo; + FuncInfoMap[shortName] = scriptInfo;*/ } @@ -125,12 +128,13 @@ void TScriptManager::AddFuncDescription(const std::string& shortName, TScriptInf void TScriptManager::BindFunctionsFromObject(TFunctionBinderInterface* binderObject) { - binderObject->BindFunctions(); + //binderObject->BindFunctions(); } void TScriptManager::PrintRegisteredFunctionList() { + /* std::map::iterator i; Console->PrintImmediate("========== Console function list ==========="); @@ -141,20 +145,21 @@ void TScriptManager::PrintRegisteredFunctionList() { Console->PrintImmediate(i->first + " | " + i->second.ShortDescription); } - } + }*/ } void TScriptManager::PrintFunctionInfo(const std::string& funcName) { + /* if (FuncInfoMap.count(funcName) > 0 && FuncInfoMap[funcName].Registered) { Console->PrintImmediate( funcName + " | " + FuncInfoMap[funcName].LongName + " | " + FuncInfoMap[funcName].Description); - } + }*/ } void TScriptManager::Serialize(boost::property_tree::ptree& propertyTree) { - + /* BOOST_FOREACH(boost::property_tree::ptree::value_type &v, propertyTree.get_child("FunctionInfoList")) { std::string shortName = v.second.get("ShortName"); @@ -163,20 +168,19 @@ void TScriptManager::Serialize(boost::property_tree::ptree& propertyTree) std::string description = v.second.get("Description"); AddFuncDescription(shortName, TScriptInfo(longName, shortDescription, description)); - } + }*/ } //============================================= //============= Typical commands ============== //============================================= - +/* void SQ_Print(const SQChar *inString) { Console->PrintImmediate(std::string(inString)); } -/* void SQ_PrintWidgetList() { ResourceManager->GUIManager.PrintWidgetList(); diff --git a/src/TextureManager/SalmonTexture.cpp b/src/TextureManager/SalmonTexture.cpp old mode 100644 new mode 100755 diff --git a/src/Utils/Console/Console.cpp b/src/Utils/Console/Console.cpp old mode 100644 new mode 100755 index 74337fb..a7e4411 --- a/src/Utils/Console/Console.cpp +++ b/src/Utils/Console/Console.cpp @@ -1,6 +1,13 @@ #include "include/Engine.h" #include "boost/date_time.hpp" +#ifdef TARGET_ANDROID +#include + +#define APPNAME "SalmonEngine" + +#endif + namespace SE { @@ -225,6 +232,11 @@ TJavaConsole& TJavaConsole::operator<<(const std::string& s) History += string_with_time_mark+endl; CutHistory(); + + + __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "%s", string_with_time_mark.c_str()); + + return *this; diff --git a/src/Utils/JniApi/JniApi.cpp b/src/Utils/JniApi/JniApi.cpp old mode 100644 new mode 100755 index 5efe00b..9f0d8c7 --- a/src/Utils/JniApi/JniApi.cpp +++ b/src/Utils/JniApi/JniApi.cpp @@ -7,7 +7,7 @@ namespace SE JavaVM* JavaVirtualMachine = 0; -const std::string CONST_JAVA_FILESYSTEM_CLASS_NAME = "fishrungames/engine/EngineWrapper"; +const std::string CONST_JAVA_FILESYSTEM_CLASS_NAME = "fishrungames/salmonengineandroid/EngineWrapper"; //Private data @@ -26,36 +26,37 @@ void CheckCommonExceptionWithMessage(const std::string& message); //Deprecated void JniCallOpenFile(const std::string& fileName); +} //================================================== //=============== IMPLEMENTATION =================== //================================================== -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_SetupEnviroment(JNIEnv* env, jobject thiz) +extern "C" void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_SetupEnviroment(JNIEnv* env, jobject thiz) { int JVMResult; - JVMResult = env->GetJavaVM(&JavaVirtualMachine); + JVMResult = env->GetJavaVM(&SE::JavaVirtualMachine); //TODO: Check if jmvresult != 0 } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_SetupApkFilePath(JNIEnv* env, jobject thiz, jstring s) +extern "C" void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_SetupApkFilePath(JNIEnv* env, jobject thiz, jstring s) { const char *nativeString = env->GetStringUTFChars(s, 0); - ApkFilePath = std::string(nativeString); + SE::ApkFilePath = std::string(nativeString); env->ReleaseStringUTFChars(s, nativeString); } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_ConsoleOut(JNIEnv* env, jobject thiz, jstring s) +extern "C" void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_ConsoleOut(JNIEnv* env, jobject thiz, jstring s) { const char *nativeString = env->GetStringUTFChars(s, 0); - *Console<ReleaseStringUTFChars(s, nativeString); @@ -63,21 +64,21 @@ JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_ConsoleOut(JNIEnv* //Deprecated -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_CreateFile(JNIEnv* env, jobject thiz, int fileSize) +extern "C" void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_CreateFile(JNIEnv* env, jobject thiz, int fileSize) { - FileSize = fileSize; - FileArr = new cardinal [fileSize % 4 == 0 ? fileSize/4 : fileSize/4 + 1]; - filePointer = 0; + SE::FileSize = fileSize; + SE::FileArr = new SE::cardinal [fileSize % 4 == 0 ? fileSize/4 : fileSize/4 + 1]; + SE::filePointer = 0; } //Deprecated -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_WriteToFile(JNIEnv* env, jobject thiz, jbyteArray buffer, int bufferSize) +extern "C" void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_WriteToFile(JNIEnv* env, jobject thiz, jbyteArray buffer, int bufferSize) { JNIEnv* jenv; - JavaVirtualMachine->GetEnv((void**)&jenv, JNI_VERSION_1_4); - jenv->GetByteArrayRegion(buffer, 0, bufferSize, (jbyte*)((char*)FileArr + filePointer)); - filePointer += bufferSize; + SE::JavaVirtualMachine->GetEnv((void**)&jenv, JNI_VERSION_1_4); + jenv->GetByteArrayRegion(buffer, 0, bufferSize, (jbyte*)((char*)SE::FileArr + SE::filePointer)); + SE::filePointer += bufferSize; } @@ -85,6 +86,10 @@ JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_WriteToFile(JNIEnv //============== Private methods ==================== //=================================================== +namespace SE +{ + + jclass JniTryFindClass(const std::string& className) { diff --git a/src/Utils/JniApi/JniApplication.cpp b/src/Utils/JniApi/JniApplication.cpp old mode 100644 new mode 100755 index afbc189..9fe25fd --- a/src/Utils/JniApi/JniApplication.cpp +++ b/src/Utils/JniApi/JniApplication.cpp @@ -1,25 +1,25 @@ #include "include/Engine.h" -namespace SE +namespace SE { + + TApplication *App = NULL; + + boost::mutex InitLock; + + bool Inited = false; +} // namespace SE + +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_Update(JNIEnv * env, jobject obj, long dt) { - -TApplication* App = NULL; - -boost::mutex InitLock; - -bool Inited = false; - - -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_Update(JNIEnv * env, jobject obj, long dt) -{ - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterDraw(); - App->OuterUpdate(dt); + SE::App->OuterDraw(); + SE::App->OuterUpdate(dt); } @@ -28,13 +28,14 @@ JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_Update(JNIEnv * en { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -JNIEXPORT int JNICALL Java_fishrungames_engine_EngineWrapper_IsInited(JNIEnv * env, jobject obj) +extern "C" +JNIEXPORT int JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_IsInited(JNIEnv * env, jobject obj) { - if (Inited) + if (SE::Inited) { return 1; } @@ -45,23 +46,23 @@ JNIEXPORT int JNICALL Java_fishrungames_engine_EngineWrapper_IsInited(JNIEnv * e } - -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_Destroy(JNIEnv * env, jobject obj) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_Destroy(JNIEnv * env, jobject obj) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterDeinit(); + SE::App->OuterDeinit(); - delete App; + delete SE::App; - App = NULL; - - DestroyEngine(); + SE::App = NULL; - Inited = false; + SE::DestroyEngine(); + + SE::Inited = false; } } @@ -69,7 +70,7 @@ JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_Destroy(JNIEnv * e { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } void DestroyThreaded() @@ -77,112 +78,118 @@ void DestroyThreaded() } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnTapDown(JNIEnv * env, jobject obj, float x, float y, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnTapDown(JNIEnv * env, jobject obj, float x, float y, long time) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterOnTapDown(vec2(x,y)); + SE::App->OuterOnTapDown(SE::vec2(x,y), time); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } - -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnTapUp(JNIEnv * env, jobject obj, float x, float y, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnTapUp(JNIEnv * env, jobject obj, float x, float y, long time) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterOnTapUp(vec2(x,y)); + SE::App->OuterOnTapUp(SE::vec2(x,y), time); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnTapUpAfterMove(JNIEnv * env, jobject obj, jfloat x, jfloat y, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnTapUpAfterMove(JNIEnv * env, jobject obj, jfloat x, jfloat y, long time) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterOnTapUpAfterMove(vec2(x,y)); + SE::App->OuterOnTapUpAfterMove(SE::vec2(x,y), time); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnTapMove(JNIEnv * env, jobject obj, float x, float y, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnTapMove(JNIEnv * env, jobject obj, float x, float y, long time) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterOnMove(vec2(x,y)); + SE::App->OuterOnMove(SE::vec2(x,y), time); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnFling(JNIEnv * env, jobject obj, jfloat velocityX, jfloat velocityY, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnFling(JNIEnv * env, jobject obj, jfloat velocityX, jfloat velocityY, long time) { } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnScroll(JNIEnv * env, jobject obj, jfloat distanceX, jfloat distanceY, long time) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnScroll(JNIEnv * env, jobject obj, jfloat distanceX, jfloat distanceY, long time) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OuterOnMove(vec2(distanceX,distanceY)); + SE::App->OuterOnMove(SE::vec2(distanceX,distanceY), time); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -JNIEXPORT void JNICALL Java_fishrungames_engine_EngineWrapper_OnKeyPress(JNIEnv * env, jobject obj, jint keyCode) +extern "C" +JNIEXPORT void JNICALL Java_fishrungames_salmonengineandroid_EngineWrapper_OnKeyPress(JNIEnv * env, jobject obj, jint keyCode) { - InitLock.lock(); + SE::InitLock.lock(); try { - if (Inited) + if (SE::Inited) { - App->OnKeyPress(keyCode); + SE::App->OnKeyPress(keyCode); } } catch (...) { throw; } - InitLock.unlock(); + SE::InitLock.unlock(); } -} // namespace SE + diff --git a/src/Utils/JpegHelper.cpp b/src/Utils/JpegHelper.cpp old mode 100644 new mode 100755