Skip to content

Commit

Permalink
Merge pull request #90 from alessandrofama/dev
Browse files Browse the repository at this point in the history
Update integration to Godot 4.2
  • Loading branch information
alessandrofama committed Dec 6, 2023
2 parents 920e37c + f1aba12 commit 8013929
Show file tree
Hide file tree
Showing 46 changed files with 1,047 additions and 200 deletions.
39 changes: 37 additions & 2 deletions .github/workflows/build_all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,31 @@ jobs:
os: "ubuntu-20.04"
sdk-platform: android
scons-platform: android
debug-flags: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm64
release-flags: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm64
debug-flags-arm64: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm64
release-flags-arm64: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm64
debug-flags-arm32: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm32
release-flags-arm32: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME arch=arm32
artifact-name: android-lib
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup java
uses: actions/setup-java@v3
if: matrix.sdk-platform == 'android'
with:
distribution: 'temurin'
java-version: '17'

- name: Android dependencies
if: matrix.sdk-platform == 'android'
uses: nttld/setup-ndk@v1
with:
ndk-version: r23c
link-to-sdk: true

- name: Wwise SDK cache
id: cache-wwise-sdk
uses: actions/cache@v3
Expand Down Expand Up @@ -188,6 +204,7 @@ jobs:
cd ../../../../
- name: Compile Debug library
if: matrix.sdk-platform != 'android'
shell: bash
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
Expand All @@ -199,6 +216,7 @@ jobs:
cd ../../../
- name: Compile Release library
if: matrix.sdk-platform != 'android'
shell: bash
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
Expand All @@ -208,6 +226,22 @@ jobs:
scons platform=${{ matrix.scons-platform }} target=template_release wwise_sdk=wwise_sdk -j6 ${{ matrix.release-flags }}
cd ../../../
- name: Compile Android libraries
if: matrix.sdk-platform == 'android'
shell: bash
run: |
cd addons/Wwise/native/wwise_sdk
WWISESDK=$(pwd)
cd ../godot-cpp
mkdir -p bin
scons platform=android target=template_debug dev_build=yes -j6 ${{ matrix.debug-flags-arm64 }}
scons platform=android target=template_debug dev_build=yes -j6 ${{ matrix.debug-flags-arm32 }}
scons platform=android target=template_release -j6 ${{ matrix.release-flags-arm64 }}
scons platform=android target=template_release -j6 ${{ matrix.release-flags-arm32 }}
cd ../android
chmod +x ./gradlew
./gradlew assemble -PWWISE_SDK="$WWISESDK"
- name: Upload libs
uses: actions/upload-artifact@v3
with:
Expand Down Expand Up @@ -258,6 +292,7 @@ jobs:
rm -r ./addons/Wwise/native/godot-cpp
rm -r ./addons/Wwise/native/src
rm -r ./addons/Wwise/native/vs2022
rm -r ./addons/Wwise/native/android
rm ./addons/Wwise/native/SConstruct
rm ./LICENSE
rm ./README.md
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
[![Build](https://github.com/alessandrofama/wwise-godot-integration/workflows/Build/badge.svg)](https://github.com/alessandrofama/wwise-godot-integration/actions/workflows/build_all.yml)
[![Discord](https://img.shields.io/discord/1128222869898416182?label=Discord&logo=discord&logoColor=ffffff&labelColor=5865F2&color=5865F2)](https://discord.gg/6tHrP3gaYf)

Welcome! This repository provides an integration of [Audiokinetic's Wwise audio middleware](https://www.audiokinetic.com/products/wwise/) into [Godot Engine](https://godotengine.org) 4.1.2 and 4.2 Beta. At the moment, Wwise version 2023.1 Beta is supported. Older versions can be downloaded in the releases section of the repository.
Welcome! This repository provides an integration of [Audiokinetic's Wwise audio middleware](https://www.audiokinetic.com/products/wwise/) into [Godot Engine](https://godotengine.org) 4.2. At the moment, Wwise version 2023.1 Beta is supported. Older versions can be downloaded in the releases section of the repository.

## Features

* [GDExtension](https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/what_is_gdextension.html)-based Wwise wrapper library for Windows, macOS, Linux, and iOS (with future Android compatibility).
* [GDExtension](https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/what_is_gdextension.html)-based Wwise wrapper library for Windows, macOS, Linux, Android and iOS.
* Multi-platform build with SCons for Wwise and Wwise Authoring API wrappers. Visual Studio 2022 solution provided for Windows development.
* Wwise profiler connection available in GDExtension debug builds.
* Stream manager uses the default blocking I/O implementation and it can be extended to use custom I/O devices.
Expand Down
44 changes: 0 additions & 44 deletions addons/Wwise/native/SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,6 @@ opts.Add(
opts.Add(EnumVariable("ios_arch", "Target iOS architecture", "arm64", ["arm64"]))
opts.Add("ios_min_version", "Target minimum iphoneos/iphonesimulator version", "11.0")
opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))
opts.Add(
PathVariable(
"android_arch", "Android Arch (arm64)", "arm64", PathVariable.PathAccept
)
)
opts.Add(BoolVariable("asserts", "Enable AKASSERT for debug builds", "no"))
opts.Update(env)

Expand Down Expand Up @@ -89,13 +84,6 @@ if env["platform"] == "ios" and env["ios_simulator"]:
else:
wwise_sdk_libs_path = env["wwise_sdk"] + "/iOS/Release-iphonesimulator/lib/"

if env["platform"] == "android":
wwise_soundengine_sample_path = env["wwise_sdk"] + "/samples/SoundEngine/Android/"
if env["target"] in ("template_debug"):
wwise_sdk_libs_path = env["wwise_sdk"] + "/Android_arm64-v8a/Debug/lib/"
else:
wwise_sdk_libs_path = env["wwise_sdk"] + "/Android_arm64-v8a/Release/lib/"

if env["platform"] == "linux":
wwise_soundengine_sample_path = env["wwise_sdk"] + "/samples/SoundEngine/POSIX/"
if env["target"] in ("template_debug"):
Expand Down Expand Up @@ -123,7 +111,6 @@ wwise_plugins_library = [
"AkMeterFX",
"AkPitchShifterFX",
"AkRoomVerbFX",
"AkRoomVerbFX",
"AkPeakLimiterFX",
"AkExpanderFX",
"AkCompressorFX",
Expand Down Expand Up @@ -316,25 +303,6 @@ elif env["platform"] == "ios":
]
)

# android build settings
elif env["platform"] == "android":
env["target_path"] += "/android/" + env["android_arch"] + "/"

if env["target"] in ("template_debug"):
env["target_path"] += "debug/"
if env["asserts"]:
env.Append(CPPDEFINES=["AK_ENABLE_ASSERTS"])
else:
env["target_path"] += "release/"
env.Append(CPPDEFINES=["AK_OPTIMIZED"])

if "motion" in env["plugins"]:
wwise_plugins_library.append(["AkMotionSink", "AkMotionSourceSource"])
env.Append(CPPDEFINES=["AK_MOTION"])

env.Append(CPPPATH=[wwise_soundengine_sample_path + "libzip/lib/"])
env.Append(CPPPATH=[env["wwise_sdk"] + "/samples/SoundEngine/POSIX/"])

# godot-cpp settings
env.Append(
CPPPATH=[
Expand All @@ -353,7 +321,6 @@ sources = []
sources.append(Glob("src/*.cpp"))
sources.append(Glob("src/scene/*.cpp"))
sources.append(Glob("src/editor/inspector_plugin/*.cpp"))
sources.append(Glob("src/editor/wwise_editor_scale.cpp"))
sources.append(Glob("src/editor/ak_editor_utils.cpp"))

if env["platform"] == "windows" or env["platform"] == "macos":
Expand Down Expand Up @@ -391,8 +358,6 @@ if env["platform"] == "windows":
env.Append(LIBS=["advapi32", "user32", "ole32"])
if env["platform"] == "windows" and "motion" in env["plugins"]:
env.Append(LIBS=["XInput", "Dinput8", "Winmm", "oleaut32"])
if env["platform"] == "android":
env.Append(LIBS=["zip"])
if env["platform"] == "linux":
env.Append(LIBS=["pthread", "dl"])

Expand Down Expand Up @@ -484,15 +449,6 @@ if env["platform"] == "ios":
create_output_file_action = Action(target, create_output_file)
AddPostAction(library, create_output_file)

if env["platform"] == "android":
library = env.SharedLibrary(
target=env["target_path"]
+ "libwwise.{}.{}.{}.so".format(
env["platform"], env["target"], env["android_arch"]
),
source=sources,
)

Default(library)

Help(opts.GenerateHelpText(env))
Empty file.
33 changes: 33 additions & 0 deletions addons/Wwise/native/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Log/OS Files
*.log

# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json

# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml

# Keystore files
*.jks
*.keystore

# Google Services (e.g. APIs or Firebase)
google-services.json

# Android Profiling
*.hprof
5 changes: 5 additions & 0 deletions addons/Wwise/native/android/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.library") version "7.4.1" apply false
id("org.jetbrains.kotlin.android") version "1.8.0" apply false
}
23 changes: 23 additions & 0 deletions addons/Wwise/native/android/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 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=-Xmx2048m -Dfile.encoding=UTF-8
# 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
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Fri Aug 25 21:04:51 PDT 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit 8013929

Please sign in to comment.