diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt new file mode 100644 index 0000000000..5e5edd34bd --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -0,0 +1,2946 @@ +# Automatically generated makefile, created by the Projucer +# Don't edit this file! Your changes will be overwritten when you re-save the Projucer project! + +cmake_minimum_required(VERSION 3.4.1) + +SET(BINARY_NAME "juce_jni") + +add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") +set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") + +add_definitions("-DJUCE_ANDROID=1" "-DJUCE_ANDROID_API_VERSION=23" "-DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_roli_juce_demorunner_DemoRunner" "-DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/roli/juce/demorunner/DemoRunner\"" "-DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSNAME=com_roli_juce_demorunner_SharingContentProvider" "-DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSPATH=\"com/roli/juce/demorunner/SharingContentProvider\"" "-DJUCE_PUSH_NOTIFICATIONS=1" "-DJUCE_ANDROID_GL_ES_VERSION_3_0=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_ANDROIDSTUDIO_7F0E4A25=1" "-DJUCE_APP_VERSION=5.2.1" "-DJUCE_APP_VERSION_HEX=0x50201") + +include_directories( AFTER + "../../../JuceLibraryCode" + "../../../../../modules" + "${ANDROID_NDK}/sources/android/cpufeatures" +) + +enable_language(ASM) + +IF(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + add_definitions("-DDEBUG=1" "-D_DEBUG=1") +ELSEIF(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE") + add_definitions("-DNDEBUG=1") +ELSE(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + MESSAGE( FATAL_ERROR "No matching build-configuration found." ) +ENDIF(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG") + +add_library( ${BINARY_NAME} + + SHARED + + "../../../Source/Demos/DemoPIPs1.cpp" + "../../../Source/Demos/DemoPIPs2.cpp" + "../../../Source/Demos/IntroScreen.h" + "../../../Source/Demos/JUCEDemos.cpp" + "../../../Source/Demos/JUCEDemos.h" + "../../../Source/UI/DemoContentComponent.cpp" + "../../../Source/UI/DemoContentComponent.h" + "../../../Source/UI/MainComponent.cpp" + "../../../Source/UI/MainComponent.h" + "../../../Source/UI/SettingsContent.h" + "../../../Source/Main.cpp" + "../../../Source/JUCEAppIcon.png" + "../../../../../modules/juce_analytics/analytics/juce_Analytics.cpp" + "../../../../../modules/juce_analytics/analytics/juce_Analytics.h" + "../../../../../modules/juce_analytics/analytics/juce_ButtonTracker.cpp" + "../../../../../modules/juce_analytics/analytics/juce_ButtonTracker.h" + "../../../../../modules/juce_analytics/destinations/juce_AnalyticsDestination.h" + "../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.cpp" + "../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.h" + "../../../../../modules/juce_analytics/juce_analytics.cpp" + "../../../../../modules/juce_analytics/juce_analytics.h" + "../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h" + "../../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h" + "../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp" + "../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h" + "../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.h" + "../../../../../modules/juce_audio_basics/effects/juce_Decibels.h" + "../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h" + "../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp" + "../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h" + "../../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h" + "../../../../../modules/juce_audio_basics/effects/juce_Reverb.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiFile.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h" + "../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp" + "../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPENote.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" + "../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" + "../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" + "../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h" + "../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp" + "../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h" + "../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" + "../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" + "../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" + "../../../../../modules/juce_audio_basics/juce_audio_basics.mm" + "../../../../../modules/juce_audio_basics/juce_audio_basics.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp" + "../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h" + "../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp" + "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h" + "../../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_Oboe.cpp" + "../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp" + "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.h" + "../../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp" + "../../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp" + "../../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h" + "../../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp" + "../../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h" + "../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp" + "../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h" + "../../../../../modules/juce_audio_devices/juce_audio_devices.cpp" + "../../../../../modules/juce_audio_devices/juce_audio_devices.mm" + "../../../../../modules/juce_audio_devices/juce_audio_devices.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/crc.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/float.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/format.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c" + "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c" + "../../../../../modules/juce_audio_formats/codecs/flac/all.h" + "../../../../../modules/juce_audio_formats/codecs/flac/alloc.h" + "../../../../../modules/juce_audio_formats/codecs/flac/assert.h" + "../../../../../modules/juce_audio_formats/codecs/flac/callback.h" + "../../../../../modules/juce_audio_formats/codecs/flac/compat.h" + "../../../../../modules/juce_audio_formats/codecs/flac/endswap.h" + "../../../../../modules/juce_audio_formats/codecs/flac/export.h" + "../../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt" + "../../../../../modules/juce_audio_formats/codecs/flac/format.h" + "../../../../../modules/juce_audio_formats/codecs/flac/metadata.h" + "../../../../../modules/juce_audio_formats/codecs/flac/ordinals.h" + "../../../../../modules/juce_audio_formats/codecs/flac/stream_decoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/stream_encoder.h" + "../../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/codec.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/ogg.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h" + "../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h" + "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h" + "../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp" + "../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h" + "../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h" + "../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp" + "../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h" + "../../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h" + "../../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp" + "../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h" + "../../../../../modules/juce_audio_formats/juce_audio_formats.cpp" + "../../../../../modules/juce_audio_formats/juce_audio_formats.mm" + "../../../../../modules/juce_audio_formats/juce_audio_formats.h" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" + "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AU_Shared.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm" + "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTCommon.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" + "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h" + "../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h" + "../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h" + "../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp" + "../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h" + "../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp" + "../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" + "../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" + "../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" + "../../../../../modules/juce_audio_processors/juce_audio_processors.mm" + "../../../../../modules/juce_audio_processors/juce_audio_processors.h" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h" + "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" + "../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" + "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" + "../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" + "../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" + "../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDBurner.mm" + "../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDReader.mm" + "../../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm" + "../../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp" + "../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDBurner.cpp" + "../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDReader.cpp" + "../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp" + "../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h" + "../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.cpp" + "../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.h" + "../../../../../modules/juce_audio_utils/juce_audio_utils.cpp" + "../../../../../modules/juce_audio_utils/juce_audio_utils.mm" + "../../../../../modules/juce_audio_utils/juce_audio_utils.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_Block.cpp" + "../../../../../modules/juce_blocks_basics/blocks/juce_Block.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_ControlButton.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_LEDGrid.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_LEDRow.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_StatusLight.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_TouchList.h" + "../../../../../modules/juce_blocks_basics/blocks/juce_TouchSurface.h" + "../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootCompiler.h" + "../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootRemoteHeap.h" + "../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootRunner.h" + "../../../../../modules/juce_blocks_basics/littlefoot/LittleFoot Language README.txt" + "../../../../../modules/juce_blocks_basics/protocol/juce_BitPackingUtilities.h" + "../../../../../modules/juce_blocks_basics/protocol/juce_BlockModels.h" + "../../../../../modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h" + "../../../../../modules/juce_blocks_basics/protocol/juce_HostPacketBuilder.h" + "../../../../../modules/juce_blocks_basics/protocol/juce_HostPacketDecoder.h" + "../../../../../modules/juce_blocks_basics/protocol/Protocol Format.txt" + "../../../../../modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp" + "../../../../../modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.h" + "../../../../../modules/juce_blocks_basics/topology/juce_RuleBasedTopologySource.cpp" + "../../../../../modules/juce_blocks_basics/topology/juce_RuleBasedTopologySource.h" + "../../../../../modules/juce_blocks_basics/topology/juce_Topology.h" + "../../../../../modules/juce_blocks_basics/topology/juce_TopologySource.h" + "../../../../../modules/juce_blocks_basics/visualisers/juce_BitmapLEDProgram.cpp" + "../../../../../modules/juce_blocks_basics/visualisers/juce_BitmapLEDProgram.h" + "../../../../../modules/juce_blocks_basics/visualisers/juce_DrumPadLEDProgram.cpp" + "../../../../../modules/juce_blocks_basics/visualisers/juce_DrumPadLEDProgram.h" + "../../../../../modules/juce_blocks_basics/juce_blocks_basics.cpp" + "../../../../../modules/juce_blocks_basics/README.txt" + "../../../../../modules/juce_blocks_basics/juce_blocks_basics.h" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2ChainShape.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2ChainShape.h" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2CircleShape.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2CircleShape.h" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2EdgeShape.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2EdgeShape.h" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2PolygonShape.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2PolygonShape.h" + "../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2Shape.h" + "../../../../../modules/juce_box2d/box2d/Collision/b2BroadPhase.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2BroadPhase.h" + "../../../../../modules/juce_box2d/box2d/Collision/b2CollideCircle.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2CollideEdge.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2CollidePolygon.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2Collision.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2Collision.h" + "../../../../../modules/juce_box2d/box2d/Collision/b2Distance.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2Distance.h" + "../../../../../modules/juce_box2d/box2d/Collision/b2DynamicTree.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2DynamicTree.h" + "../../../../../modules/juce_box2d/box2d/Collision/b2TimeOfImpact.cpp" + "../../../../../modules/juce_box2d/box2d/Collision/b2TimeOfImpact.h" + "../../../../../modules/juce_box2d/box2d/Common/b2BlockAllocator.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2BlockAllocator.h" + "../../../../../modules/juce_box2d/box2d/Common/b2Draw.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2Draw.h" + "../../../../../modules/juce_box2d/box2d/Common/b2GrowableStack.h" + "../../../../../modules/juce_box2d/box2d/Common/b2Math.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2Math.h" + "../../../../../modules/juce_box2d/box2d/Common/b2Settings.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2Settings.h" + "../../../../../modules/juce_box2d/box2d/Common/b2StackAllocator.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2StackAllocator.h" + "../../../../../modules/juce_box2d/box2d/Common/b2Timer.cpp" + "../../../../../modules/juce_box2d/box2d/Common/b2Timer.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndCircleContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndCircleContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndPolygonContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndPolygonContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2CircleContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2CircleContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2Contact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2Contact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndCircleContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndCircleContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndPolygonContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonAndCircleContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonAndCircleContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonContact.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonContact.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2DistanceJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2DistanceJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2FrictionJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2FrictionJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2GearJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2GearJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2MouseJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2MouseJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PrismaticJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PrismaticJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PulleyJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PulleyJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RevoluteJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RevoluteJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RopeJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RopeJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WeldJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WeldJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WheelJoint.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WheelJoint.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Body.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Body.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2ContactManager.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2ContactManager.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Fixture.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Fixture.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Island.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2Island.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2TimeStep.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2World.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2World.h" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2WorldCallbacks.cpp" + "../../../../../modules/juce_box2d/box2d/Dynamics/b2WorldCallbacks.h" + "../../../../../modules/juce_box2d/box2d/Rope/b2Rope.cpp" + "../../../../../modules/juce_box2d/box2d/Rope/b2Rope.h" + "../../../../../modules/juce_box2d/box2d/Box2D.h" + "../../../../../modules/juce_box2d/box2d/README.txt" + "../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.cpp" + "../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.h" + "../../../../../modules/juce_box2d/juce_box2d.cpp" + "../../../../../modules/juce_box2d/juce_box2d.h" + "../../../../../modules/juce_core/containers/juce_AbstractFifo.cpp" + "../../../../../modules/juce_core/containers/juce_AbstractFifo.h" + "../../../../../modules/juce_core/containers/juce_Array.h" + "../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h" + "../../../../../modules/juce_core/containers/juce_DynamicObject.cpp" + "../../../../../modules/juce_core/containers/juce_DynamicObject.h" + "../../../../../modules/juce_core/containers/juce_ElementComparator.h" + "../../../../../modules/juce_core/containers/juce_HashMap.h" + "../../../../../modules/juce_core/containers/juce_HashMap_test.cpp" + "../../../../../modules/juce_core/containers/juce_LinkedListPointer.h" + "../../../../../modules/juce_core/containers/juce_ListenerList.h" + "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" + "../../../../../modules/juce_core/containers/juce_NamedValueSet.h" + "../../../../../modules/juce_core/containers/juce_OwnedArray.h" + "../../../../../modules/juce_core/containers/juce_PropertySet.cpp" + "../../../../../modules/juce_core/containers/juce_PropertySet.h" + "../../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h" + "../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h" + "../../../../../modules/juce_core/containers/juce_SortedSet.h" + "../../../../../modules/juce_core/containers/juce_SparseSet.h" + "../../../../../modules/juce_core/containers/juce_Variant.cpp" + "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp" + "../../../../../modules/juce_core/files/juce_DirectoryIterator.h" + "../../../../../modules/juce_core/files/juce_File.cpp" + "../../../../../modules/juce_core/files/juce_File.h" + "../../../../../modules/juce_core/files/juce_FileFilter.cpp" + "../../../../../modules/juce_core/files/juce_FileFilter.h" + "../../../../../modules/juce_core/files/juce_FileInputStream.cpp" + "../../../../../modules/juce_core/files/juce_FileInputStream.h" + "../../../../../modules/juce_core/files/juce_FileOutputStream.cpp" + "../../../../../modules/juce_core/files/juce_FileOutputStream.h" + "../../../../../modules/juce_core/files/juce_FileSearchPath.cpp" + "../../../../../modules/juce_core/files/juce_FileSearchPath.h" + "../../../../../modules/juce_core/files/juce_MemoryMappedFile.h" + "../../../../../modules/juce_core/files/juce_TemporaryFile.cpp" + "../../../../../modules/juce_core/files/juce_TemporaryFile.h" + "../../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp" + "../../../../../modules/juce_core/files/juce_WildcardFileFilter.h" + "../../../../../modules/juce_core/javascript/juce_Javascript.cpp" + "../../../../../modules/juce_core/javascript/juce_Javascript.h" + "../../../../../modules/juce_core/javascript/juce_JSON.cpp" + "../../../../../modules/juce_core/javascript/juce_JSON.h" + "../../../../../modules/juce_core/logging/juce_FileLogger.cpp" + "../../../../../modules/juce_core/logging/juce_FileLogger.h" + "../../../../../modules/juce_core/logging/juce_Logger.cpp" + "../../../../../modules/juce_core/logging/juce_Logger.h" + "../../../../../modules/juce_core/maths/juce_BigInteger.cpp" + "../../../../../modules/juce_core/maths/juce_BigInteger.h" + "../../../../../modules/juce_core/maths/juce_Expression.cpp" + "../../../../../modules/juce_core/maths/juce_Expression.h" + "../../../../../modules/juce_core/maths/juce_MathsFunctions.h" + "../../../../../modules/juce_core/maths/juce_NormalisableRange.h" + "../../../../../modules/juce_core/maths/juce_Random.cpp" + "../../../../../modules/juce_core/maths/juce_Random.h" + "../../../../../modules/juce_core/maths/juce_Range.h" + "../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" + "../../../../../modules/juce_core/memory/juce_Atomic.h" + "../../../../../modules/juce_core/memory/juce_ByteOrder.h" + "../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" + "../../../../../modules/juce_core/memory/juce_HeapBlock.h" + "../../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h" + "../../../../../modules/juce_core/memory/juce_Memory.h" + "../../../../../modules/juce_core/memory/juce_MemoryBlock.cpp" + "../../../../../modules/juce_core/memory/juce_MemoryBlock.h" + "../../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h" + "../../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h" + "../../../../../modules/juce_core/memory/juce_ScopedPointer.h" + "../../../../../modules/juce_core/memory/juce_SharedResourcePointer.h" + "../../../../../modules/juce_core/memory/juce_Singleton.h" + "../../../../../modules/juce_core/memory/juce_WeakReference.h" + "../../../../../modules/juce_core/misc/juce_Result.cpp" + "../../../../../modules/juce_core/misc/juce_Result.h" + "../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp" + "../../../../../modules/juce_core/misc/juce_RuntimePermissions.h" + "../../../../../modules/juce_core/misc/juce_StdFunctionCompat.cpp" + "../../../../../modules/juce_core/misc/juce_StdFunctionCompat.h" + "../../../../../modules/juce_core/misc/juce_Uuid.cpp" + "../../../../../modules/juce_core/misc/juce_Uuid.h" + "../../../../../modules/juce_core/misc/juce_WindowsRegistry.h" + "../../../../../modules/juce_core/native/juce_android_Files.cpp" + "../../../../../modules/juce_core/native/juce_android_JNIHelpers.h" + "../../../../../modules/juce_core/native/juce_android_Misc.cpp" + "../../../../../modules/juce_core/native/juce_android_Network.cpp" + "../../../../../modules/juce_core/native/juce_android_RuntimePermissions.cpp" + "../../../../../modules/juce_core/native/juce_android_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_android_Threads.cpp" + "../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h" + "../../../../../modules/juce_core/native/juce_curl_Network.cpp" + "../../../../../modules/juce_core/native/juce_linux_CommonFile.cpp" + "../../../../../modules/juce_core/native/juce_linux_Files.cpp" + "../../../../../modules/juce_core/native/juce_linux_Network.cpp" + "../../../../../modules/juce_core/native/juce_linux_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_linux_Threads.cpp" + "../../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h" + "../../../../../modules/juce_core/native/juce_mac_Files.mm" + "../../../../../modules/juce_core/native/juce_mac_Network.mm" + "../../../../../modules/juce_core/native/juce_mac_Strings.mm" + "../../../../../modules/juce_core/native/juce_mac_SystemStats.mm" + "../../../../../modules/juce_core/native/juce_mac_Threads.mm" + "../../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h" + "../../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp" + "../../../../../modules/juce_core/native/juce_posix_SharedCode.h" + "../../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h" + "../../../../../modules/juce_core/native/juce_win32_Files.cpp" + "../../../../../modules/juce_core/native/juce_win32_Network.cpp" + "../../../../../modules/juce_core/native/juce_win32_Registry.cpp" + "../../../../../modules/juce_core/native/juce_win32_SystemStats.cpp" + "../../../../../modules/juce_core/native/juce_win32_Threads.cpp" + "../../../../../modules/juce_core/network/juce_IPAddress.cpp" + "../../../../../modules/juce_core/network/juce_IPAddress.h" + "../../../../../modules/juce_core/network/juce_MACAddress.cpp" + "../../../../../modules/juce_core/network/juce_MACAddress.h" + "../../../../../modules/juce_core/network/juce_NamedPipe.cpp" + "../../../../../modules/juce_core/network/juce_NamedPipe.h" + "../../../../../modules/juce_core/network/juce_Socket.cpp" + "../../../../../modules/juce_core/network/juce_Socket.h" + "../../../../../modules/juce_core/network/juce_URL.cpp" + "../../../../../modules/juce_core/network/juce_URL.h" + "../../../../../modules/juce_core/network/juce_WebInputStream.cpp" + "../../../../../modules/juce_core/network/juce_WebInputStream.h" + "../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp" + "../../../../../modules/juce_core/streams/juce_BufferedInputStream.h" + "../../../../../modules/juce_core/streams/juce_FileInputSource.cpp" + "../../../../../modules/juce_core/streams/juce_FileInputSource.h" + "../../../../../modules/juce_core/streams/juce_InputSource.h" + "../../../../../modules/juce_core/streams/juce_InputStream.cpp" + "../../../../../modules/juce_core/streams/juce_InputStream.h" + "../../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp" + "../../../../../modules/juce_core/streams/juce_MemoryInputStream.h" + "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp" + "../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h" + "../../../../../modules/juce_core/streams/juce_OutputStream.cpp" + "../../../../../modules/juce_core/streams/juce_OutputStream.h" + "../../../../../modules/juce_core/streams/juce_SubregionStream.cpp" + "../../../../../modules/juce_core/streams/juce_SubregionStream.h" + "../../../../../modules/juce_core/streams/juce_URLInputSource.cpp" + "../../../../../modules/juce_core/streams/juce_URLInputSource.h" + "../../../../../modules/juce_core/system/juce_CompilerSupport.h" + "../../../../../modules/juce_core/system/juce_PlatformDefs.h" + "../../../../../modules/juce_core/system/juce_StandardHeader.h" + "../../../../../modules/juce_core/system/juce_SystemStats.cpp" + "../../../../../modules/juce_core/system/juce_SystemStats.h" + "../../../../../modules/juce_core/system/juce_TargetPlatform.h" + "../../../../../modules/juce_core/text/juce_Base64.cpp" + "../../../../../modules/juce_core/text/juce_Base64.h" + "../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp" + "../../../../../modules/juce_core/text/juce_CharacterFunctions.h" + "../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h" + "../../../../../modules/juce_core/text/juce_CharPointer_UTF32.h" + "../../../../../modules/juce_core/text/juce_Identifier.cpp" + "../../../../../modules/juce_core/text/juce_Identifier.h" + "../../../../../modules/juce_core/text/juce_LocalisedStrings.cpp" + "../../../../../modules/juce_core/text/juce_LocalisedStrings.h" + "../../../../../modules/juce_core/text/juce_NewLine.h" + "../../../../../modules/juce_core/text/juce_String.cpp" + "../../../../../modules/juce_core/text/juce_String.h" + "../../../../../modules/juce_core/text/juce_StringArray.cpp" + "../../../../../modules/juce_core/text/juce_StringArray.h" + "../../../../../modules/juce_core/text/juce_StringPairArray.cpp" + "../../../../../modules/juce_core/text/juce_StringPairArray.h" + "../../../../../modules/juce_core/text/juce_StringPool.cpp" + "../../../../../modules/juce_core/text/juce_StringPool.h" + "../../../../../modules/juce_core/text/juce_StringRef.h" + "../../../../../modules/juce_core/text/juce_TextDiff.cpp" + "../../../../../modules/juce_core/text/juce_TextDiff.h" + "../../../../../modules/juce_core/threads/juce_ChildProcess.cpp" + "../../../../../modules/juce_core/threads/juce_ChildProcess.h" + "../../../../../modules/juce_core/threads/juce_CriticalSection.h" + "../../../../../modules/juce_core/threads/juce_DynamicLibrary.h" + "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp" + "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.h" + "../../../../../modules/juce_core/threads/juce_InterProcessLock.h" + "../../../../../modules/juce_core/threads/juce_Process.h" + "../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp" + "../../../../../modules/juce_core/threads/juce_ReadWriteLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedReadLock.h" + "../../../../../modules/juce_core/threads/juce_ScopedWriteLock.h" + "../../../../../modules/juce_core/threads/juce_SpinLock.h" + "../../../../../modules/juce_core/threads/juce_Thread.cpp" + "../../../../../modules/juce_core/threads/juce_Thread.h" + "../../../../../modules/juce_core/threads/juce_ThreadLocalValue.h" + "../../../../../modules/juce_core/threads/juce_ThreadPool.cpp" + "../../../../../modules/juce_core/threads/juce_ThreadPool.h" + "../../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp" + "../../../../../modules/juce_core/threads/juce_TimeSliceThread.h" + "../../../../../modules/juce_core/threads/juce_WaitableEvent.h" + "../../../../../modules/juce_core/time/juce_PerformanceCounter.cpp" + "../../../../../modules/juce_core/time/juce_PerformanceCounter.h" + "../../../../../modules/juce_core/time/juce_RelativeTime.cpp" + "../../../../../modules/juce_core/time/juce_RelativeTime.h" + "../../../../../modules/juce_core/time/juce_Time.cpp" + "../../../../../modules/juce_core/time/juce_Time.h" + "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp" + "../../../../../modules/juce_core/unit_tests/juce_UnitTest.h" + "../../../../../modules/juce_core/xml/juce_XmlDocument.cpp" + "../../../../../modules/juce_core/xml/juce_XmlDocument.h" + "../../../../../modules/juce_core/xml/juce_XmlElement.cpp" + "../../../../../modules/juce_core/xml/juce_XmlElement.h" + "../../../../../modules/juce_core/zip/zlib/adler32.c" + "../../../../../modules/juce_core/zip/zlib/compress.c" + "../../../../../modules/juce_core/zip/zlib/crc32.c" + "../../../../../modules/juce_core/zip/zlib/crc32.h" + "../../../../../modules/juce_core/zip/zlib/deflate.c" + "../../../../../modules/juce_core/zip/zlib/deflate.h" + "../../../../../modules/juce_core/zip/zlib/infback.c" + "../../../../../modules/juce_core/zip/zlib/inffast.c" + "../../../../../modules/juce_core/zip/zlib/inffast.h" + "../../../../../modules/juce_core/zip/zlib/inffixed.h" + "../../../../../modules/juce_core/zip/zlib/inflate.c" + "../../../../../modules/juce_core/zip/zlib/inflate.h" + "../../../../../modules/juce_core/zip/zlib/inftrees.c" + "../../../../../modules/juce_core/zip/zlib/inftrees.h" + "../../../../../modules/juce_core/zip/zlib/trees.c" + "../../../../../modules/juce_core/zip/zlib/trees.h" + "../../../../../modules/juce_core/zip/zlib/uncompr.c" + "../../../../../modules/juce_core/zip/zlib/zconf.h" + "../../../../../modules/juce_core/zip/zlib/zconf.in.h" + "../../../../../modules/juce_core/zip/zlib/zlib.h" + "../../../../../modules/juce_core/zip/zlib/zutil.c" + "../../../../../modules/juce_core/zip/zlib/zutil.h" + "../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp" + "../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h" + "../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp" + "../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h" + "../../../../../modules/juce_core/zip/juce_ZipFile.cpp" + "../../../../../modules/juce_core/zip/juce_ZipFile.h" + "../../../../../modules/juce_core/juce_core.cpp" + "../../../../../modules/juce_core/juce_core.mm" + "../../../../../modules/juce_core/juce_core.h" + "../../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h" + "../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_Primes.h" + "../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp" + "../../../../../modules/juce_cryptography/encryption/juce_RSAKey.h" + "../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_MD5.h" + "../../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_SHA256.h" + "../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp" + "../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h" + "../../../../../modules/juce_cryptography/juce_cryptography.cpp" + "../../../../../modules/juce_cryptography/juce_cryptography.mm" + "../../../../../modules/juce_cryptography/juce_cryptography.h" + "../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp" + "../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h" + "../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp" + "../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp" + "../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h" + "../../../../../modules/juce_data_structures/values/juce_CachedValue.cpp" + "../../../../../modules/juce_data_structures/values/juce_CachedValue.h" + "../../../../../modules/juce_data_structures/values/juce_Value.cpp" + "../../../../../modules/juce_data_structures/values/juce_Value.h" + "../../../../../modules/juce_data_structures/values/juce_ValueTree.cpp" + "../../../../../modules/juce_data_structures/values/juce_ValueTree.h" + "../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp" + "../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h" + "../../../../../modules/juce_data_structures/values/juce_ValueWithDefault.h" + "../../../../../modules/juce_data_structures/juce_data_structures.cpp" + "../../../../../modules/juce_data_structures/juce_data_structures.mm" + "../../../../../modules/juce_data_structures/juce_data_structures.h" + "../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" + "../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" + "../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" + "../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.cpp" + "../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" + "../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" + "../../../../../modules/juce_dsp/frequency/juce_Convolution.h" + "../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" + "../../../../../modules/juce_dsp/frequency/juce_FFT.h" + "../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" + "../../../../../modules/juce_dsp/frequency/juce_Windowing.cpp" + "../../../../../modules/juce_dsp/frequency/juce_Windowing.h" + "../../../../../modules/juce_dsp/maths/juce_FastMathApproximations.h" + "../../../../../modules/juce_dsp/maths/juce_LookupTable.cpp" + "../../../../../modules/juce_dsp/maths/juce_LookupTable.h" + "../../../../../modules/juce_dsp/maths/juce_Matrix.cpp" + "../../../../../modules/juce_dsp/maths/juce_Matrix.h" + "../../../../../modules/juce_dsp/maths/juce_Matrix_test.cpp" + "../../../../../modules/juce_dsp/maths/juce_Phase.h" + "../../../../../modules/juce_dsp/maths/juce_Polynomial.h" + "../../../../../modules/juce_dsp/maths/juce_SpecialFunctions.cpp" + "../../../../../modules/juce_dsp/maths/juce_SpecialFunctions.h" + "../../../../../modules/juce_dsp/native/juce_avx_SIMDNativeOps.cpp" + "../../../../../modules/juce_dsp/native/juce_avx_SIMDNativeOps.h" + "../../../../../modules/juce_dsp/native/juce_fallback_SIMDNativeOps.h" + "../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.cpp" + "../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" + "../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" + "../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" + "../../../../../modules/juce_dsp/processors/juce_Bias.h" + "../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" + "../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" + "../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" + "../../../../../modules/juce_dsp/processors/juce_Gain.h" + "../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" + "../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" + "../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" + "../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp" + "../../../../../modules/juce_dsp/processors/juce_LadderFilter.h" + "../../../../../modules/juce_dsp/processors/juce_Oscillator.h" + "../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" + "../../../../../modules/juce_dsp/processors/juce_Oversampling.h" + "../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" + "../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" + "../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" + "../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" + "../../../../../modules/juce_dsp/processors/juce_Reverb.h" + "../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" + "../../../../../modules/juce_dsp/processors/juce_WaveShaper.h" + "../../../../../modules/juce_dsp/juce_dsp.cpp" + "../../../../../modules/juce_dsp/juce_dsp.mm" + "../../../../../modules/juce_dsp/juce_dsp.h" + "../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp" + "../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h" + "../../../../../modules/juce_events/broadcasters/juce_ActionListener.h" + "../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp" + "../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h" + "../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp" + "../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h" + "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" + "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" + "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp" + "../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h" + "../../../../../modules/juce_events/messages/juce_ApplicationBase.cpp" + "../../../../../modules/juce_events/messages/juce_ApplicationBase.h" + "../../../../../modules/juce_events/messages/juce_CallbackMessage.h" + "../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp" + "../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h" + "../../../../../modules/juce_events/messages/juce_Initialisation.h" + "../../../../../modules/juce_events/messages/juce_Message.h" + "../../../../../modules/juce_events/messages/juce_MessageListener.cpp" + "../../../../../modules/juce_events/messages/juce_MessageListener.h" + "../../../../../modules/juce_events/messages/juce_MessageManager.cpp" + "../../../../../modules/juce_events/messages/juce_MessageManager.h" + "../../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h" + "../../../../../modules/juce_events/messages/juce_NotificationType.h" + "../../../../../modules/juce_events/native/juce_android_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" + "../../../../../modules/juce_events/native/juce_linux_EventLoop.h" + "../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" + "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" + "../../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h" + "../../../../../modules/juce_events/native/juce_win32_Messaging.cpp" + "../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.cpp" + "../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.h" + "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" + "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_Timer.cpp" + "../../../../../modules/juce_events/timers/juce_Timer.h" + "../../../../../modules/juce_events/juce_events.cpp" + "../../../../../modules/juce_events/juce_events.mm" + "../../../../../modules/juce_events/juce_events.h" + "../../../../../modules/juce_graphics/colour/juce_Colour.cpp" + "../../../../../modules/juce_graphics/colour/juce_Colour.h" + "../../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp" + "../../../../../modules/juce_graphics/colour/juce_ColourGradient.h" + "../../../../../modules/juce_graphics/colour/juce_Colours.cpp" + "../../../../../modules/juce_graphics/colour/juce_Colours.h" + "../../../../../modules/juce_graphics/colour/juce_FillType.cpp" + "../../../../../modules/juce_graphics/colour/juce_FillType.h" + "../../../../../modules/juce_graphics/colour/juce_PixelFormats.h" + "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp" + "../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp" + "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h" + "../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp" + "../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h" + "../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp" + "../../../../../modules/juce_graphics/effects/juce_GlowEffect.h" + "../../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h" + "../../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp" + "../../../../../modules/juce_graphics/fonts/juce_AttributedString.h" + "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp" + "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h" + "../../../../../modules/juce_graphics/fonts/juce_Font.cpp" + "../../../../../modules/juce_graphics/fonts/juce_Font.h" + "../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp" + "../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h" + "../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp" + "../../../../../modules/juce_graphics/fonts/juce_TextLayout.h" + "../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp" + "../../../../../modules/juce_graphics/fonts/juce_Typeface.h" + "../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp" + "../../../../../modules/juce_graphics/geometry/juce_AffineTransform.h" + "../../../../../modules/juce_graphics/geometry/juce_BorderSize.h" + "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp" + "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" + "../../../../../modules/juce_graphics/geometry/juce_Line.h" + "../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" + "../../../../../modules/juce_graphics/geometry/juce_Path.cpp" + "../../../../../modules/juce_graphics/geometry/juce_Path.h" + "../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" + "../../../../../modules/juce_graphics/geometry/juce_PathIterator.h" + "../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp" + "../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h" + "../../../../../modules/juce_graphics/geometry/juce_Point.h" + "../../../../../modules/juce_graphics/geometry/juce_Rectangle.h" + "../../../../../modules/juce_graphics/geometry/juce_RectangleList.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/cderror.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jccoefct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcdctmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcinit.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmainct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmarker.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcmaster.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jconfig.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdcolor.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdct.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdinput.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmainct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmarker.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmaster.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdmerge.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdphuff.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdsample.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jdtrans.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jerror.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jerror.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctflt.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctfst.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jfdctint.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctint.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jidctred.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jinclude.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemmgr.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemnobs.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jmorecfg.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jpegint.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/jquant1.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jutils.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/jversion.h" + "../../../../../modules/juce_graphics/image_formats/jpglib/transupp.c" + "../../../../../modules/juce_graphics/image_formats/jpglib/transupp.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/libpng_readme.txt" + "../../../../../modules/juce_graphics/image_formats/pnglib/png.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/png.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngerror.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngget.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngmem.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngpriv.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngread.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrtran.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngset.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwrite.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c" + "../../../../../modules/juce_graphics/image_formats/pnglib/pngwutil.c" + "../../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp" + "../../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp" + "../../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp" + "../../../../../modules/juce_graphics/images/juce_Image.cpp" + "../../../../../modules/juce_graphics/images/juce_Image.h" + "../../../../../modules/juce_graphics/images/juce_ImageCache.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageCache.h" + "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h" + "../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp" + "../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h" + "../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp" + "../../../../../modules/juce_graphics/native/juce_android_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_linux_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm" + "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" + "../../../../../modules/juce_graphics/native/juce_mac_Fonts.mm" + "../../../../../modules/juce_graphics/native/juce_mac_IconHelpers.cpp" + "../../../../../modules/juce_graphics/native/juce_RenderingHelpers.h" + "../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h" + "../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp" + "../../../../../modules/juce_graphics/native/juce_win32_IconHelpers.cpp" + "../../../../../modules/juce_graphics/placement/juce_Justification.h" + "../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp" + "../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h" + "../../../../../modules/juce_graphics/juce_graphics.cpp" + "../../../../../modules/juce_graphics/juce_graphics.mm" + "../../../../../modules/juce_graphics/juce_graphics.h" + "../../../../../modules/juce_gui_basics/application/juce_Application.cpp" + "../../../../../modules/juce_gui_basics/application/juce_Application.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_Button.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_Button.h" + "../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_TextButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h" + "../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp" + "../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h" + "../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp" + "../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h" + "../../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h" + "../../../../../modules/juce_gui_basics/components/juce_Component.cpp" + "../../../../../modules/juce_gui_basics/components/juce_Component.h" + "../../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp" + "../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h" + "../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp" + "../../../../../modules/juce_gui_basics/components/juce_Desktop.h" + "../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp" + "../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h" + "../../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_Drawable.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp" + "../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h" + "../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp" + "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp" + "../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h" + "../../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h" + "../../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h" + "../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h" + "../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h" + "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h" + "../../../../../modules/juce_gui_basics/layout/juce_Grid.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_Grid.h" + "../../../../../modules/juce_gui_basics/layout/juce_GridItem.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GridItem.h" + "../../../../../modules/juce_gui_basics/layout/juce_GridUnitTests.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_SidePanel.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_SidePanel.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h" + "../../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp" + "../../../../../modules/juce_gui_basics/layout/juce_Viewport.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp" + "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h" + "../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h" + "../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp" + "../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h" + "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" + "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" + "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" + "../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" + "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h" + "../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp" + "../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h" + "../../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h" + "../../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h" + "../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h" + "../../../../../modules/juce_gui_basics/native/juce_android_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp" + "../../../../../modules/juce_gui_basics/native/juce_common_MimeTypes.cpp" + "../../../../../modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp" + "../../../../../modules/juce_gui_basics/native/juce_ios_FileChooser.mm" + "../../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm" + "../../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm" + "../../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11.h" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11_Clipboard.cpp" + "../../../../../modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp" + "../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm" + "../../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm" + "../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h" + "../../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp" + "../../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp" + "../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp" + "../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h" + "../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h" + "../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h" + "../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp" + "../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Label.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Slider.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h" + "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h" + "../../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp" + "../../../../../modules/juce_gui_basics/widgets/juce_TreeView.h" + "../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h" + "../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h" + "../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h" + "../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h" + "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp" + "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h" + "../../../../../modules/juce_gui_basics/juce_gui_basics.cpp" + "../../../../../modules/juce_gui_basics/juce_gui_basics.mm" + "../../../../../modules/juce_gui_basics/juce_gui_basics.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp" + "../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h" + "../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp" + "../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h" + "../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h" + "../../../../../modules/juce_gui_extra/embedding/juce_XEmbedComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h" + "../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h" + "../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h" + "../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h" + "../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.h" + "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h" + "../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h" + "../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp" + "../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h" + "../../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h" + "../../../../../modules/juce_gui_extra/native/juce_android_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" + "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" + "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm" + "../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp" + "../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp" + "../../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp" + "../../../../../modules/juce_gui_extra/juce_gui_extra.cpp" + "../../../../../modules/juce_gui_extra/juce_gui_extra.mm" + "../../../../../modules/juce_gui_extra/juce_gui_extra.h" + "../../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h" + "../../../../../modules/juce_opengl/geometry/juce_Matrix3D.h" + "../../../../../modules/juce_opengl/geometry/juce_Quaternion.h" + "../../../../../modules/juce_opengl/geometry/juce_Vector3D.h" + "../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_android.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_ios.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_linux_X11.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h" + "../../../../../modules/juce_opengl/native/juce_OpenGL_win32.h" + "../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp" + "../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h" + "../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp" + "../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h" + "../../../../../modules/juce_opengl/juce_opengl.cpp" + "../../../../../modules/juce_opengl/juce_opengl.mm" + "../../../../../modules/juce_opengl/juce_opengl.h" + "../../../../../modules/juce_osc/osc/juce_OSCAddress.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCAddress.h" + "../../../../../modules/juce_osc/osc/juce_OSCArgument.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCArgument.h" + "../../../../../modules/juce_osc/osc/juce_OSCBundle.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCBundle.h" + "../../../../../modules/juce_osc/osc/juce_OSCMessage.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCMessage.h" + "../../../../../modules/juce_osc/osc/juce_OSCReceiver.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCReceiver.h" + "../../../../../modules/juce_osc/osc/juce_OSCSender.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCSender.h" + "../../../../../modules/juce_osc/osc/juce_OSCTimeTag.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCTimeTag.h" + "../../../../../modules/juce_osc/osc/juce_OSCTypes.cpp" + "../../../../../modules/juce_osc/osc/juce_OSCTypes.h" + "../../../../../modules/juce_osc/juce_osc.cpp" + "../../../../../modules/juce_osc/juce_osc.h" + "../../../../../modules/juce_product_unlocking/in_app_purchases/juce_InAppPurchases.cpp" + "../../../../../modules/juce_product_unlocking/in_app_purchases/juce_InAppPurchases.h" + "../../../../../modules/juce_product_unlocking/marketplace/juce_KeyFileGeneration.h" + "../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockForm.cpp" + "../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockForm.h" + "../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockStatus.cpp" + "../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockStatus.h" + "../../../../../modules/juce_product_unlocking/marketplace/juce_TracktionMarketplaceStatus.cpp" + "../../../../../modules/juce_product_unlocking/marketplace/juce_TracktionMarketplaceStatus.h" + "../../../../../modules/juce_product_unlocking/native/juce_android_InAppPurchases.cpp" + "../../../../../modules/juce_product_unlocking/native/juce_ios_InAppPurchases.cpp" + "../../../../../modules/juce_product_unlocking/juce_product_unlocking.cpp" + "../../../../../modules/juce_product_unlocking/juce_product_unlocking.mm" + "../../../../../modules/juce_product_unlocking/juce_product_unlocking.h" + "../../../../../modules/juce_video/capture/juce_CameraDevice.cpp" + "../../../../../modules/juce_video/capture/juce_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_android_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_mac_Video.h" + "../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" + "../../../../../modules/juce_video/native/juce_win32_Video.h" + "../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" + "../../../../../modules/juce_video/playback/juce_VideoComponent.h" + "../../../../../modules/juce_video/juce_video.cpp" + "../../../../../modules/juce_video/juce_video.mm" + "../../../../../modules/juce_video/juce_video.h" + "../../../JuceLibraryCode/AppConfig.h" + "../../../JuceLibraryCode/include_juce_analytics.cpp" + "../../../JuceLibraryCode/include_juce_audio_basics.cpp" + "../../../JuceLibraryCode/include_juce_audio_devices.cpp" + "../../../JuceLibraryCode/include_juce_audio_formats.cpp" + "../../../JuceLibraryCode/include_juce_audio_processors.cpp" + "../../../JuceLibraryCode/include_juce_audio_utils.cpp" + "../../../JuceLibraryCode/include_juce_blocks_basics.cpp" + "../../../JuceLibraryCode/include_juce_box2d.cpp" + "../../../JuceLibraryCode/include_juce_core.cpp" + "../../../JuceLibraryCode/include_juce_cryptography.cpp" + "../../../JuceLibraryCode/include_juce_data_structures.cpp" + "../../../JuceLibraryCode/include_juce_dsp.cpp" + "../../../JuceLibraryCode/include_juce_events.cpp" + "../../../JuceLibraryCode/include_juce_graphics.cpp" + "../../../JuceLibraryCode/include_juce_gui_basics.cpp" + "../../../JuceLibraryCode/include_juce_gui_extra.cpp" + "../../../JuceLibraryCode/include_juce_opengl.cpp" + "../../../JuceLibraryCode/include_juce_osc.cpp" + "../../../JuceLibraryCode/include_juce_product_unlocking.cpp" + "../../../JuceLibraryCode/include_juce_video.cpp" + "../../../JuceLibraryCode/JuceHeader.h" +) + +set_source_files_properties("../../../Source/Demos/IntroScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/Demos/JUCEDemos.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/DemoContentComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/MainComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/UI/SettingsContent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../Source/JUCEAppIcon.png" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/analytics/juce_Analytics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/analytics/juce_Analytics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/analytics/juce_ButtonTracker.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/analytics/juce_ButtonTracker.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/destinations/juce_AnalyticsDestination.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/juce_analytics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_analytics/juce_analytics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/effects/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPENote.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEUtils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_AudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MemoryAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_Oboe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_ios_Audio.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_devices/juce_audio_devices.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitmath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/crc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/float.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/lpc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/metadata.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder_framing.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/window.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitwriter.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/crc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/fixed.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/float.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/format.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder_framing.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/window_flac.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/alloc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/assert.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/callback.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/compat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/endswap.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/export.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/format.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/metadata.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/ordinals.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/stream_decoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/stream_encoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/flac/win_utf8_io.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/coupled/res_books_stereo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/floor/floor_books.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/books/uncoupled/res_books_uncoupled.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44p51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44u.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44p51.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/block.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codebook.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/highlevel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/info.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/masking.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/os.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/psy.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/registry.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/res0.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/sharedbook.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/synthesis.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/window.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/codec.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/Ogg Vorbis Licence.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/ogg.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisenc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_formats/juce_audio_formats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AU_Shared.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTCommon.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_processors/juce_audio_processors.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDBurner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/audio_cd/juce_AudioCDReader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDBurner.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_AudioCDReader.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDBurner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/native/juce_win32_AudioCDReader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/players/juce_SoundPlayer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_audio_utils/juce_audio_utils.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_Block.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_Block.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_ControlButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_LEDGrid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_LEDRow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_StatusLight.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_TouchList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/blocks/juce_TouchSurface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootCompiler.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootRemoteHeap.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/littlefoot/juce_LittleFootRunner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/littlefoot/LittleFoot Language README.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/juce_BitPackingUtilities.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/juce_BlockModels.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/juce_BlocksProtocolDefinitions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/juce_HostPacketBuilder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/juce_HostPacketDecoder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/protocol/Protocol Format.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_PhysicalTopologySource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_RuleBasedTopologySource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_RuleBasedTopologySource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_Topology.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/topology/juce_TopologySource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/visualisers/juce_BitmapLEDProgram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/visualisers/juce_BitmapLEDProgram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/visualisers/juce_DrumPadLEDProgram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/visualisers/juce_DrumPadLEDProgram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/juce_blocks_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/README.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_blocks_basics/juce_blocks_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2ChainShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2ChainShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2CircleShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2CircleShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2EdgeShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2EdgeShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2PolygonShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2PolygonShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/Shapes/b2Shape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2BroadPhase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2BroadPhase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2CollideCircle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2CollideEdge.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2CollidePolygon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2Collision.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2Collision.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2Distance.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2Distance.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2DynamicTree.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2DynamicTree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2TimeOfImpact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Collision/b2TimeOfImpact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2BlockAllocator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2BlockAllocator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Draw.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Draw.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2GrowableStack.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Math.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Math.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Settings.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Settings.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2StackAllocator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2StackAllocator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Timer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Common/b2Timer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndCircleContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndCircleContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndPolygonContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ChainAndPolygonContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2CircleContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2CircleContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2Contact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2Contact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndCircleContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndCircleContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2EdgeAndPolygonContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonAndCircleContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonAndCircleContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonContact.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2PolygonContact.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2DistanceJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2DistanceJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2FrictionJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2FrictionJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2GearJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2GearJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2MouseJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2MouseJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PrismaticJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PrismaticJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PulleyJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2PulleyJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RevoluteJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RevoluteJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RopeJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2RopeJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WeldJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WeldJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WheelJoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2WheelJoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Body.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Body.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2ContactManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2ContactManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Fixture.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Fixture.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Island.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2Island.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2TimeStep.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2World.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2World.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2WorldCallbacks.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Dynamics/b2WorldCallbacks.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Rope/b2Rope.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Rope/b2Rope.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/Box2D.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/box2d/README.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/utils/juce_Box2DRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/juce_box2d.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_box2d/juce_box2d.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_AbstractFifo.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_AbstractFifo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Array.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_DynamicObject.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_DynamicObject.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ElementComparator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_HashMap.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_HashMap_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_LinkedListPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ListenerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_NamedValueSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_OwnedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_PropertySet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_ScopedValueSetter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_SortedSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_SparseSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Variant.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/containers/juce_Variant.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_DirectoryIterator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_File.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_File.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileSearchPath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_FileSearchPath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_MemoryMappedFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_TemporaryFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_TemporaryFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/files/juce_WildcardFileFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_Javascript.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_Javascript.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_JSON.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/javascript/juce_JSON.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_FileLogger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_FileLogger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_Logger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/logging/juce_Logger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_BigInteger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_BigInteger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Expression.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Expression.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_MathsFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_NormalisableRange.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Random.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_Range.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/maths/juce_StatisticsAccumulator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Atomic.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ByteOrder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_HeapBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Memory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_MemoryBlock.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_MemoryBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_ScopedPointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_SharedResourcePointer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_Singleton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/memory/juce_WeakReference.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Result.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Result.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_RuntimePermissions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_StdFunctionCompat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_StdFunctionCompat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Uuid.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_Uuid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/misc/juce_WindowsRegistry.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_JNIHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Misc.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_RuntimePermissions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_android_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_curl_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_CommonFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_linux_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Files.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Network.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Strings.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_SystemStats.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_mac_Threads.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_posix_SharedCode.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Files.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Network.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Registry.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/native/juce_win32_Threads.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_IPAddress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_IPAddress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_MACAddress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_MACAddress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_NamedPipe.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_NamedPipe.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_Socket.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_Socket.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_URL.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_URL.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_WebInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/network/juce_WebInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_BufferedInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_FileInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_FileInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_InputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_MemoryOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_OutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_OutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_SubregionStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_SubregionStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_URLInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/streams/juce_URLInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_CompilerSupport.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_PlatformDefs.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_StandardHeader.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_SystemStats.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_SystemStats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/system/juce_TargetPlatform.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Base64.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Base64.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharacterFunctions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharacterFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_CharPointer_UTF32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Identifier.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_Identifier.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_LocalisedStrings.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_LocalisedStrings.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_NewLine.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_String.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_String.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPairArray.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPairArray.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringPool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_StringRef.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_TextDiff.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/text/juce_TextDiff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ChildProcess.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ChildProcess.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_CriticalSection.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_DynamicLibrary.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_HighResolutionTimer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_InterProcessLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Process.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ReadWriteLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedReadLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ScopedWriteLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_SpinLock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Thread.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_Thread.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadLocalValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadPool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_ThreadPool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_TimeSliceThread.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/threads/juce_WaitableEvent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_PerformanceCounter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_PerformanceCounter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_RelativeTime.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_RelativeTime.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_Time.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/time/juce_Time.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/unit_tests/juce_UnitTest.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlElement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/xml/juce_XmlElement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/adler32.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/compress.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/crc32.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/crc32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/deflate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/deflate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/infback.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffast.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffast.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inffixed.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inflate.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inflate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inftrees.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/inftrees.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/trees.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/trees.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/uncompr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zconf.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zconf.in.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zlib.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/zlib/zutil.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_ZipFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/zip/juce_ZipFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_core/juce_core.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_BlowFish.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_Primes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/encryption/juce_RSAKey.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_MD5.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_SHA256.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_cryptography/juce_cryptography.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_CachedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_CachedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_Value.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_Value.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTree.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTree.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/values/juce_ValueWithDefault.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_data_structures/juce_data_structures.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_AudioBlock.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/containers/juce_SIMDRegister_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/filter_design/juce_FilterDesign.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Convolution.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_FFT_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/frequency/juce_Windowing.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_FastMathApproximations.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_LookupTable.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_LookupTable.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_Matrix.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_Matrix.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_Matrix_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_Phase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_Polynomial.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_SpecialFunctions.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/maths/juce_SpecialFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_avx_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_avx_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_fallback_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Bias.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Gain.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oscillator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_WaveShaper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ActionListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_ApplicationBase.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_ApplicationBase.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_CallbackMessage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_Initialisation.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_Message.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MessageManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/messages/juce_NotificationType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_android_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_ios_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_EventLoop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_linux_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_mac_MessageManager.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_osx_MessageQueue.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_Messaging.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/native/juce_win32_WinRTWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_MultiTimer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_Timer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/timers/juce_Timer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_events/juce_events.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colour.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colour.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_ColourGradient.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colours.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_Colours.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_FillType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_FillType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/colour/juce_PixelFormats.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_GlowEffect.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_AttributedString.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Font.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Font.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_TextLayout.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/fonts/juce_Typeface.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_AffineTransform.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_BorderSize.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_EdgeTable.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Line.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Parallelogram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Path.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Path.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathIterator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Point.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_Rectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/geometry/juce_RectangleList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/cderror.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jccoefct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcdctmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jchuff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcinit.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmainct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmarker.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcmaster.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jconfig.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdcolor.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdinput.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmainct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmarker.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmaster.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdmerge.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdphuff.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdsample.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jdtrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jerror.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jerror.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctflt.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctfst.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jfdctint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctint.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jidctred.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jinclude.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemmgr.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemnobs.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jmorecfg.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jpegint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jquant1.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jutils.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/jversion.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/transupp.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/jpglib/transupp.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/libpng_readme.txt" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/png.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/png.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngerror.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngget.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngmem.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngpriv.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngread.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrtran.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngset.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwio.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwrite.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/pnglib/pngwutil.c" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_Image.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_Image.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageCache.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageCache.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_android_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_linux_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_Fonts.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_mac_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_RenderingHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/native/juce_win32_IconHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_Justification.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_graphics/juce_graphics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/application/juce_Application.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/application/juce_Application.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_Button.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_Button.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_TextButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Component.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Component.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_Desktop.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_Drawable.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ContentSharer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Grid.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Grid.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridItem.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridItem.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GridUnitTests.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_SidePanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_SidePanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/layout/juce_Viewport.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_DropShadower.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/misc/juce_JUCESplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_common_MimeTypes.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_ContentSharer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_FileChooser.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11_Clipboard.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Label.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Label.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ListBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Slider.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/widgets/juce_TreeView.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_basics/juce_gui_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/embedding/juce_XEmbedComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_PushNotifications.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_android_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_ios_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_gui_extra/juce_gui_extra.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Matrix3D.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Quaternion.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/geometry/juce_Vector3D.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_android.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_ios.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_linux_X11.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGL_win32.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_opengl/juce_opengl.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCAddress.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCAddress.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCArgument.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCArgument.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCBundle.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCBundle.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCMessage.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCMessage.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCReceiver.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCReceiver.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCSender.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCSender.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCTimeTag.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCTimeTag.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCTypes.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/osc/juce_OSCTypes.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/juce_osc.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_osc/juce_osc.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/in_app_purchases/juce_InAppPurchases.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/in_app_purchases/juce_InAppPurchases.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_KeyFileGeneration.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockForm.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockForm.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockStatus.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_OnlineUnlockStatus.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_TracktionMarketplaceStatus.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/marketplace/juce_TracktionMarketplaceStatus.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/native/juce_android_InAppPurchases.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/native/juce_ios_InAppPurchases.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/juce_product_unlocking.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/juce_product_unlocking.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_product_unlocking/juce_product_unlocking.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/capture/juce_CameraDevice.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/capture/juce_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_android_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_mac_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_CameraDevice.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/native/juce_win32_Video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/playback/juce_VideoComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.mm" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../../../modules/juce_video/juce_video.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../JuceLibraryCode/AppConfig.h" PROPERTIES HEADER_FILE_ONLY TRUE) +set_source_files_properties("../../../JuceLibraryCode/JuceHeader.h" PROPERTIES HEADER_FILE_ONLY TRUE) + +find_library(log "log") +find_library(android "android") +find_library(glesv3 "GLESv3") +find_library(egl "EGL") + +target_link_libraries( ${BINARY_NAME} + + ${log} + ${android} + ${glesv3} + ${egl} + "cpufeatures" +) diff --git a/examples/DemoRunner/Builds/Android/app/build.gradle b/examples/DemoRunner/Builds/Android/app/build.gradle new file mode 100644 index 0000000000..fc308ba008 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/build.gradle @@ -0,0 +1,94 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "27.0.0" + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } + signingConfigs { + juceSigning { + storeFile file("${System.properties['user.home']}${File.separator}.android${File.separator}debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + storeType "jks" + } + } + + defaultConfig { + applicationId "com.roli.juce.demorunner" + minSdkVersion 23 + targetSdkVersion 23 + externalNativeBuild { + cmake { + arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE" + cFlags "-fsigned-char" + cppFlags "-fsigned-char", "-std=c++14" + } + } + } + + buildTypes { + debug { + initWith debug + debuggable true + jniDebuggable true + signingConfig signingConfigs.juceSigning + } + release { + initWith release + debuggable false + jniDebuggable false + signingConfig signingConfigs.juceSigning + } + } + + flavorDimensions "default" + productFlavors { + debug_ { + ndk { + abiFilters "armeabi", "x86" + } + externalNativeBuild { + cmake { + arguments "-DJUCE_BUILD_CONFIGURATION=DEBUG", "-DCMAKE_CXX_FLAGS_DEBUG=-O0", "-DCMAKE_C_FLAGS_DEBUG=-O0" + } + } + + dimension "default" + } + release_ { + externalNativeBuild { + cmake { + arguments "-DJUCE_BUILD_CONFIGURATION=RELEASE", "-DCMAKE_CXX_FLAGS_RELEASE=-O3", "-DCMAKE_C_FLAGS_RELEASE=-O3" + } + } + + dimension "default" + } + } + + variantFilter { variant -> + def names = variant.flavors*.name + if (names.contains ("debug_") + && variant.buildType.name != "debug") { + setIgnore(true) + } + if (names.contains ("release_") + && variant.buildType.name != "release") { + setIgnore(true) + } + } + +repositories { +} + +dependencies { +} + + +} + diff --git a/examples/DemoRunner/Builds/Android/app/src/debug/res/values/string.xml b/examples/DemoRunner/Builds/Android/app/src/debug/res/values/string.xml new file mode 100644 index 0000000000..754cfd345a --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/debug/res/values/string.xml @@ -0,0 +1,5 @@ + + + + DemoRunner + diff --git a/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml b/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..8c9726f372 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/AudioLiveScrollingDisplay.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/AudioLiveScrollingDisplay.h new file mode 100644 index 0000000000..0b9a1f1211 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/AudioLiveScrollingDisplay.h @@ -0,0 +1,72 @@ +/* + ============================================================================== + + This file is part of the JUCE examples. + Copyright (c) 2017 - ROLI Ltd. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, + WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR + PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + + +//============================================================================== +/* This component scrolls a continuous waveform showing the audio that's + coming into whatever audio inputs this object is connected to. +*/ +class LiveScrollingAudioDisplay : public AudioVisualiserComponent, + public AudioIODeviceCallback +{ +public: + LiveScrollingAudioDisplay() : AudioVisualiserComponent (1) + { + setSamplesPerBlock (256); + setBufferSize (1024); + } + + //============================================================================== + void audioDeviceAboutToStart (AudioIODevice*) override + { + clear(); + } + + void audioDeviceStopped() override + { + clear(); + } + + void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, + float** outputChannelData, int numOutputChannels, + int numberOfSamples) override + { + for (int i = 0; i < numberOfSamples; ++i) + { + float inputSample = 0; + + for (int chan = 0; chan < numInputChannels; ++chan) + if (const float* inputChannel = inputChannelData[chan]) + inputSample += inputChannel[i]; // find the sum of all the channels + + inputSample *= 10.0f; // boost the level to make it more easily visible. + + pushSample (&inputSample, 1); + } + + // We need to clear the output buffers before returning, in case they're full of junk.. + for (int j = 0; j < numOutputChannels; ++j) + if (float* outputChannel = outputChannelData[j]) + zeromem (outputChannel, sizeof (float) * (size_t) numberOfSamples); + } + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LiveScrollingAudioDisplay) +}; diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/AddPair.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/AddPair.h new file mode 100644 index 0000000000..90a9a87eb8 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/AddPair.h @@ -0,0 +1,51 @@ + +#ifndef AddPair_H +#define AddPair_H + +class AddPair : public Test +{ +public: + + AddPair() + { + m_world->SetGravity(b2Vec2(0.0f,0.0f)); + { + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = 0.1f; + + float minX = -6.0f; + float maxX = 0.0f; + float minY = 4.0f; + float maxY = 6.0f; + + for (int i = 0; i < 400; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = b2Vec2(RandomFloat(minX,maxX),RandomFloat(minY,maxY)); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 0.01f); + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-40.0f,5.0f); + bd.bullet = true; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + body->SetLinearVelocity(b2Vec2(150.0f, 0.0f)); + } + } + + static Test* Create() + { + return new AddPair; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ApplyForce.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ApplyForce.h new file mode 100644 index 0000000000..5b5cd25d6b --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ApplyForce.h @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef APPLY_FORCE_H +#define APPLY_FORCE_H + +class ApplyForce : public Test +{ +public: + ApplyForce() + { + m_world->SetGravity(b2Vec2(0.0f, 0.0f)); + + const float32 k_restitution = 0.4f; + + b2Body* ground; + { + b2BodyDef bd; + bd.position.Set(0.0f, 20.0f); + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + b2FixtureDef sd; + sd.shape = &shape; + sd.density = 0.0f; + sd.restitution = k_restitution; + + // Left vertical + shape.Set(b2Vec2(-20.0f, -20.0f), b2Vec2(-20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Right vertical + shape.Set(b2Vec2(20.0f, -20.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Top horizontal + shape.Set(b2Vec2(-20.0f, 20.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&sd); + + // Bottom horizontal + shape.Set(b2Vec2(-20.0f, -20.0f), b2Vec2(20.0f, -20.0f)); + ground->CreateFixture(&sd); + } + + { + b2Transform xf1; + xf1.q.Set(0.3524f * b2_pi); + xf1.p = xf1.q.GetXAxis(); + + b2Vec2 vertices[3]; + vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); + + b2PolygonShape poly1; + poly1.Set(vertices, 3); + + b2FixtureDef sd1; + sd1.shape = &poly1; + sd1.density = 4.0f; + + b2Transform xf2; + xf2.q.Set(-0.3524f * b2_pi); + xf2.p = -xf2.q.GetXAxis(); + + vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); + + b2PolygonShape poly2; + poly2.Set(vertices, 3); + + b2FixtureDef sd2; + sd2.shape = &poly2; + sd2.density = 2.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.angularDamping = 5.0f; + bd.linearDamping = 0.1f; + + bd.position.Set(0.0f, 2.0f); + bd.angle = b2_pi; + bd.allowSleep = false; + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&sd1); + m_body->CreateFixture(&sd2); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.3f; + + for (int i = 0; i < 10; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(0.0f, 5.0f + 1.54f * i); + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + + float32 gravity = 10.0f; + float32 I = body->GetInertia(); + float32 mass = body->GetMass(); + + // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) + float32 radius = b2Sqrt(2.0f * I / mass); + + b2FrictionJointDef jd; + jd.localAnchorA.SetZero(); + jd.localAnchorB.SetZero(); + jd.bodyA = ground; + jd.bodyB = body; + jd.collideConnected = true; + jd.maxForce = mass * gravity; + jd.maxTorque = mass * radius * gravity; + + m_world->CreateJoint(&jd); + } + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'w': + { + b2Vec2 f = m_body->GetWorldVector(b2Vec2(0.0f, -200.0f)); + b2Vec2 p = m_body->GetWorldPoint(b2Vec2(0.0f, 2.0f)); + m_body->ApplyForce(f, p); + } + break; + + case 'a': + { + m_body->ApplyTorque(50.0f); + } + break; + + case 'd': + { + m_body->ApplyTorque(-50.0f); + } + break; + } + } + + static Test* Create() + { + return new ApplyForce; + } + + b2Body* m_body; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BodyTypes.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BodyTypes.h new file mode 100644 index 0000000000..63fffbbe29 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BodyTypes.h @@ -0,0 +1,159 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BODY_TYPES_H +#define BODY_TYPES_H + +class BodyTypes : public Test +{ +public: + BodyTypes() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + + ground->CreateFixture(&fd); + } + + // Define attachment + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 3.0f); + m_attachment = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 2.0f); + m_attachment->CreateFixture(&shape, 2.0f); + } + + // Define platform + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-4.0f, 5.0f); + m_platform = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 4.0f, b2Vec2(4.0f, 0.0f), 0.5f * b2_pi); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.6f; + fd.density = 2.0f; + m_platform->CreateFixture(&fd); + + b2RevoluteJointDef rjd; + rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f)); + rjd.maxMotorTorque = 50.0f; + rjd.enableMotor = true; + m_world->CreateJoint(&rjd); + + b2PrismaticJointDef pjd; + pjd.Initialize(ground, m_platform, b2Vec2(0.0f, 5.0f), b2Vec2(1.0f, 0.0f)); + + pjd.maxMotorForce = 1000.0f; + pjd.enableMotor = true; + pjd.lowerTranslation = -10.0f; + pjd.upperTranslation = 10.0f; + pjd.enableLimit = true; + + m_world->CreateJoint(&pjd); + + m_speed = 3.0f; + } + + // Create a payload + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 8.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.75f, 0.75f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.friction = 0.6f; + fd.density = 2.0f; + + body->CreateFixture(&fd); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'd': + m_platform->SetType(b2_dynamicBody); + break; + + case 's': + m_platform->SetType(b2_staticBody); + break; + + case 'k': + m_platform->SetType(b2_kinematicBody); + m_platform->SetLinearVelocity(b2Vec2(-m_speed, 0.0f)); + m_platform->SetAngularVelocity(0.0f); + break; + } + } + + void Step(Settings* settings) + { + // Drive the kinematic body. + if (m_platform->GetType() == b2_kinematicBody) + { + b2Vec2 p = m_platform->GetTransform().p; + b2Vec2 v = m_platform->GetLinearVelocity(); + + if ((p.x < -10.0f && v.x < 0.0f) || + (p.x > 10.0f && v.x > 0.0f)) + { + v.x = -v.x; + m_platform->SetLinearVelocity(v); + } + } + + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Keys: (d) dynamic, (s) static, (k) kinematic"); + m_textLine += 15; + } + + static Test* Create() + { + return new BodyTypes; + } + + b2Body* m_attachment; + b2Body* m_platform; + float32 m_speed; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Breakable.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Breakable.h new file mode 100644 index 0000000000..3052d9f0e5 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Breakable.h @@ -0,0 +1,155 @@ +/* +* Copyright (c) 2008-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BREAKABLE_TEST_H +#define BREAKABLE_TEST_H + +// This is used to test sensor shapes. +class Breakable : public Test +{ +public: + + enum + { + e_count = 7 + }; + + Breakable() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Breakable dynamic body + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 40.0f); + bd.angle = 0.25f * b2_pi; + m_body1 = m_world->CreateBody(&bd); + + m_shape1.SetAsBox(0.5f, 0.5f, b2Vec2(-0.5f, 0.0f), 0.0f); + m_piece1 = m_body1->CreateFixture(&m_shape1, 1.0f); + + m_shape2.SetAsBox(0.5f, 0.5f, b2Vec2(0.5f, 0.0f), 0.0f); + m_piece2 = m_body1->CreateFixture(&m_shape2, 1.0f); + } + + m_break = false; + m_broke = false; + } + + void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) + { + if (m_broke) + { + // The body already broke. + return; + } + + // Should the body break? + int32 count = contact->GetManifold()->pointCount; + + float32 maxImpulse = 0.0f; + for (int32 i = 0; i < count; ++i) + { + maxImpulse = b2Max(maxImpulse, impulse->normalImpulses[i]); + } + + if (maxImpulse > 40.0f) + { + // Flag the body for breaking. + m_break = true; + } + } + + void Break() + { + // Create two bodies from one. + b2Body* body1 = m_piece1->GetBody(); + b2Vec2 center = body1->GetWorldCenter(); + + body1->DestroyFixture(m_piece2); + m_piece2 = NULL; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = body1->GetPosition(); + bd.angle = body1->GetAngle(); + + b2Body* body2 = m_world->CreateBody(&bd); + m_piece2 = body2->CreateFixture(&m_shape2, 1.0f); + + // Compute consistent velocities for new bodies based on + // cached velocity. + b2Vec2 center1 = body1->GetWorldCenter(); + b2Vec2 center2 = body2->GetWorldCenter(); + + b2Vec2 velocity1 = m_velocity + b2Cross(m_angularVelocity, center1 - center); + b2Vec2 velocity2 = m_velocity + b2Cross(m_angularVelocity, center2 - center); + + body1->SetAngularVelocity(m_angularVelocity); + body1->SetLinearVelocity(velocity1); + + body2->SetAngularVelocity(m_angularVelocity); + body2->SetLinearVelocity(velocity2); + } + + void Step(Settings* settings) + { + if (m_break) + { + Break(); + m_broke = true; + m_break = false; + } + + // Cache velocities to improve movement on breakage. + if (m_broke == false) + { + m_velocity = m_body1->GetLinearVelocity(); + m_angularVelocity = m_body1->GetAngularVelocity(); + } + + Test::Step(settings); + } + + static Test* Create() + { + return new Breakable; + } + + b2Body* m_body1; + b2Vec2 m_velocity; + float32 m_angularVelocity; + b2PolygonShape m_shape1; + b2PolygonShape m_shape2; + b2Fixture* m_piece1; + b2Fixture* m_piece2; + + bool m_broke; + bool m_break; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Bridge.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Bridge.h new file mode 100644 index 0000000000..83db6b53fa --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Bridge.h @@ -0,0 +1,125 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BRIDGE_H +#define BRIDGE_H + +class Bridge : public Test +{ +public: + + enum + { + e_count = 30 + }; + + Bridge() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + + b2RevoluteJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + if (i == (e_count >> 1)) + { + m_middle = body; + } + prevBody = body; + } + + b2Vec2 anchor(-15.0f + 1.0f * e_count, 5.0f); + jd.Initialize(prevBody, ground, anchor); + m_world->CreateJoint(&jd); + } + + for (int32 i = 0; i < 2; ++i) + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + + b2PolygonShape shape; + shape.Set(vertices, 3); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-8.0f + 8.0f * i, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + + for (int32 i = 0; i < 3; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 6.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + static Test* Create() + { + return new Bridge; + } + + b2Body* m_middle; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BulletTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BulletTest.h new file mode 100644 index 0000000000..5705d699a1 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/BulletTest.h @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BULLET_TEST_H +#define BULLET_TEST_H + +class BulletTest : public Test +{ +public: + + BulletTest() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2EdgeShape edge; + + edge.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + body->CreateFixture(&edge, 0.0f); + + b2PolygonShape shape; + shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); + body->CreateFixture(&shape, 0.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 4.0f); + + b2PolygonShape box; + box.SetAsBox(2.0f, 0.1f); + + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&box, 1.0f); + + box.SetAsBox(0.25f, 0.25f); + + //m_x = RandomFloat(-1.0f, 1.0f); + m_x = 0.20352793f; + bd.position.Set(m_x, 10.0f); + bd.bullet = true; + + m_bullet = m_world->CreateBody(&bd); + m_bullet->CreateFixture(&box, 100.0f); + + m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + } + } + + void Launch() + { + m_body->SetTransform(b2Vec2(0.0f, 4.0f), 0.0f); + m_body->SetLinearVelocity(b2Vec2_zero); + m_body->SetAngularVelocity(0.0f); + + m_x = RandomFloat(-1.0f, 1.0f); + m_bullet->SetTransform(b2Vec2(m_x, 10.0f), 0.0f); + m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + m_bullet->SetAngularVelocity(0.0f); + + extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; + extern int32 b2_toiRootIters, b2_toiMaxRootIters; + + b2_gjkCalls = 0; + b2_gjkIters = 0; + b2_gjkMaxIters = 0; + + b2_toiCalls = 0; + b2_toiIters = 0; + b2_toiMaxIters = 0; + b2_toiRootIters = 0; + b2_toiMaxRootIters = 0; + } + + void Step(Settings* settings) + { + Test::Step(settings); + + extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + extern int32 b2_toiCalls, b2_toiIters; + extern int32 b2_toiRootIters, b2_toiMaxRootIters; + + if (b2_gjkCalls > 0) + { + m_debugDraw.DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", + b2_gjkCalls, b2_gjkIters / float32(b2_gjkCalls), b2_gjkMaxIters); + m_textLine += 15; + } + + if (b2_toiCalls > 0) + { + m_debugDraw.DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", + b2_toiCalls, b2_toiIters / float32(b2_toiCalls), b2_toiMaxRootIters); + m_textLine += 15; + + m_debugDraw.DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", + b2_toiRootIters / float32(b2_toiCalls), b2_toiMaxRootIters); + m_textLine += 15; + } + + if (m_stepCount % 60 == 0) + { + Launch(); + } + } + + static Test* Create() + { + return new BulletTest; + } + + b2Body* m_body; + b2Body* m_bullet; + float32 m_x; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Cantilever.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Cantilever.h new file mode 100644 index 0000000000..f283540918 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Cantilever.h @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CANTILEVER_H +#define CANTILEVER_H + +// It is difficult to make a cantilever made of links completely rigid with weld joints. +// You will have to use a high number of iterations to make them stiff. +// So why not go ahead and use soft weld joints? They behave like a revolute +// joint with a rotational spring. +class Cantilever : public Test +{ +public: + + enum + { + e_count = 8 + }; + + Cantilever() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + jd.frequencyHz = 5.0f; + jd.dampingRatio = 0.7f; + + b2Body* prevBody = ground; + for (int32 i = 0; i < 3; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-14.0f + 2.0f * i, 15.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(-15.0f + 2.0f * i, 15.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-4.5f + 1.0f * i, 5.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + if (i > 0) + { + b2Vec2 anchor(-5.0f + 1.0f * i, 5.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + } + + prevBody = body; + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + + b2WeldJointDef jd; + jd.frequencyHz = 8.0f; + jd.dampingRatio = 0.7f; + + b2Body* prevBody = ground; + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(5.5f + 1.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + if (i > 0) + { + b2Vec2 anchor(5.0f + 1.0f * i, 10.0f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + } + + prevBody = body; + } + } + + for (int32 i = 0; i < 2; ++i) + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + + b2PolygonShape shape; + shape.Set(vertices, 3); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-8.0f + 8.0f * i, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + + for (int32 i = 0; i < 2; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 6.0f * i, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + static Test* Create() + { + return new Cantilever; + } + + b2Body* m_middle; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Car.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Car.h new file mode 100644 index 0000000000..93cd37a43d --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Car.h @@ -0,0 +1,286 @@ +/* +* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CAR_H +#define CAR_H + +// This is a fun demo that shows off the wheel joint +class Car : public Test +{ +public: + Car() + { + m_hz = 4.0f; + m_zeta = 0.7f; + m_speed = 50.0f; + + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 0.0f; + fd.friction = 0.6f; + + shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&fd); + + float32 hs[10] = {0.25f, 1.0f, 4.0f, 0.0f, 0.0f, -1.0f, -2.0f, -2.0f, -1.25f, 0.0f}; + + float32 x = 20.0f, y1 = 0.0f, dx = 5.0f; + + for (int32 i = 0; i < 10; ++i) + { + float32 y2 = hs[i]; + shape.Set(b2Vec2(x, y1), b2Vec2(x + dx, y2)); + ground->CreateFixture(&fd); + y1 = y2; + x += dx; + } + + for (int32 i = 0; i < 10; ++i) + { + float32 y2 = hs[i]; + shape.Set(b2Vec2(x, y1), b2Vec2(x + dx, y2)); + ground->CreateFixture(&fd); + y1 = y2; + x += dx; + } + + shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 80.0f; + shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 40.0f; + shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 10.0f, 5.0f)); + ground->CreateFixture(&fd); + + x += 20.0f; + shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); + ground->CreateFixture(&fd); + + x += 40.0f; + shape.Set(b2Vec2(x, 0.0f), b2Vec2(x, 20.0f)); + ground->CreateFixture(&fd); + } + + // Teeter + { + b2BodyDef bd; + bd.position.Set(140.0f, 1.0f); + bd.type = b2_dynamicBody; + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(10.0f, 0.25f); + body->CreateFixture(&box, 1.0f); + + b2RevoluteJointDef jd; + jd.Initialize(ground, body, body->GetPosition()); + jd.lowerAngle = -8.0f * b2_pi / 180.0f; + jd.upperAngle = 8.0f * b2_pi / 180.0f; + jd.enableLimit = true; + m_world->CreateJoint(&jd); + + body->ApplyAngularImpulse(100.0f); + } + + // Bridge + { + int32 N = 20; + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.6f; + + b2RevoluteJointDef jd; + + b2Body* prevBody = ground; + for (int32 i = 0; i < N; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(161.0f + 2.0f * i, -0.125f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(160.0f + 2.0f * i, -0.125f); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + + b2Vec2 anchor(160.0f + 2.0f * N, -0.125f); + jd.Initialize(prevBody, ground, anchor); + m_world->CreateJoint(&jd); + } + + // Boxes + { + b2PolygonShape box; + box.SetAsBox(0.5f, 0.5f); + + b2Body* body = NULL; + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(230.0f, 0.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 1.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 2.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 3.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + + bd.position.Set(230.0f, 4.5f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&box, 0.5f); + } + + // Car + { + b2PolygonShape chassis; + b2Vec2 vertices[8]; + vertices[0].Set(-1.5f, -0.5f); + vertices[1].Set(1.5f, -0.5f); + vertices[2].Set(1.5f, 0.0f); + vertices[3].Set(0.0f, 0.9f); + vertices[4].Set(-1.15f, 0.9f); + vertices[5].Set(-1.5f, 0.2f); + chassis.Set(vertices, 6); + + b2CircleShape circle; + circle.m_radius = 0.4f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 1.0f); + m_car = m_world->CreateBody(&bd); + m_car->CreateFixture(&chassis, 1.0f); + + b2FixtureDef fd; + fd.shape = &circle; + fd.density = 1.0f; + fd.friction = 0.9f; + + bd.position.Set(-1.0f, 0.35f); + m_wheel1 = m_world->CreateBody(&bd); + m_wheel1->CreateFixture(&fd); + + bd.position.Set(1.0f, 0.4f); + m_wheel2 = m_world->CreateBody(&bd); + m_wheel2->CreateFixture(&fd); + + b2WheelJointDef jd; + b2Vec2 axis(0.0f, 1.0f); + + jd.Initialize(m_car, m_wheel1, m_wheel1->GetPosition(), axis); + jd.motorSpeed = 0.0f; + jd.maxMotorTorque = 20.0f; + jd.enableMotor = true; + jd.frequencyHz = m_hz; + jd.dampingRatio = m_zeta; + m_spring1 = (b2WheelJoint*)m_world->CreateJoint(&jd); + + jd.Initialize(m_car, m_wheel2, m_wheel2->GetPosition(), axis); + jd.motorSpeed = 0.0f; + jd.maxMotorTorque = 10.0f; + jd.enableMotor = false; + jd.frequencyHz = m_hz; + jd.dampingRatio = m_zeta; + m_spring2 = (b2WheelJoint*)m_world->CreateJoint(&jd); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + m_spring1->SetMotorSpeed(m_speed); + break; + + case 's': + m_spring1->SetMotorSpeed(0.0f); + break; + + case 'd': + m_spring1->SetMotorSpeed(-m_speed); + break; + + case 'q': + m_hz = b2Max(0.0f, m_hz - 1.0f); + m_spring1->SetSpringFrequencyHz(m_hz); + m_spring2->SetSpringFrequencyHz(m_hz); + break; + + case 'e': + m_hz += 1.0f; + m_spring1->SetSpringFrequencyHz(m_hz); + m_spring2->SetSpringFrequencyHz(m_hz); + break; + } + } + + void Step(Settings* settings) + { + m_debugDraw.DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, hz down = q, hz up = e"); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "frequency = %g hz, damping ratio = %g", m_hz, m_zeta); + m_textLine += 15; + + settings->viewCenter.x = m_car->GetPosition().x; + Test::Step(settings); + } + + static Test* Create() + { + return new Car; + } + + b2Body* m_car; + b2Body* m_wheel1; + b2Body* m_wheel2; + + float32 m_hz; + float32 m_zeta; + float32 m_speed; + b2WheelJoint* m_spring1; + b2WheelJoint* m_spring2; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Chain.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Chain.h new file mode 100644 index 0000000000..be4d5c9f97 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Chain.h @@ -0,0 +1,74 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CHAIN_H +#define CHAIN_H + +class Chain : public Test +{ +public: + Chain() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.6f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + + b2RevoluteJointDef jd; + jd.collideConnected = false; + + const float32 y = 25.0f; + b2Body* prevBody = ground; + for (int i = 0; i < 30; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.5f + i, y); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + + b2Vec2 anchor(float32(i), y); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + } + } + + static Test* Create() + { + return new Chain; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CharacterCollision.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CharacterCollision.h new file mode 100644 index 0000000000..104c3f82f7 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CharacterCollision.h @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CHARACTER_COLLISION_H +#define CHARACTER_COLLISION_H + +/// This is a test of typical character collision scenarios. This does not +/// show how you should implement a character in your application. +/// Instead this is used to test smooth collision on edge chains. +class CharacterCollision : public Test +{ +public: + CharacterCollision() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Collinear edges with no adjacency information. + // This shows the problematic case where a box shape can hit + // an internal vertex. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-8.0f, 1.0f), b2Vec2(-6.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + shape.Set(b2Vec2(-6.0f, 1.0f), b2Vec2(-4.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + shape.Set(b2Vec2(-4.0f, 1.0f), b2Vec2(-2.0f, 1.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Chain shape + { + b2BodyDef bd; + bd.angle = 0.25f * b2_pi; + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[4]; + vs[0].Set(5.0f, 7.0f); + vs[1].Set(6.0f, 8.0f); + vs[2].Set(7.0f, 8.0f); + vs[3].Set(8.0f, 7.0f); + b2ChainShape shape; + shape.CreateChain(vs, 4); + ground->CreateFixture(&shape, 0.0f); + } + + // Square tiles. This shows that adjacency shapes may + // have non-smooth collision. There is no solution + // to this problem. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(1.0f, 1.0f, b2Vec2(4.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + shape.SetAsBox(1.0f, 1.0f, b2Vec2(6.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + shape.SetAsBox(1.0f, 1.0f, b2Vec2(8.0f, 3.0f), 0.0f); + ground->CreateFixture(&shape, 0.0f); + } + + // Square made from an edge loop. Collision should be smooth. + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[4]; + vs[0].Set(-1.0f, 3.0f); + vs[1].Set(1.0f, 3.0f); + vs[2].Set(1.0f, 5.0f); + vs[3].Set(-1.0f, 5.0f); + b2ChainShape shape; + shape.CreateLoop(vs, 4); + ground->CreateFixture(&shape, 0.0f); + } + + // Edge loop. Collision should be smooth. + { + b2BodyDef bd; + bd.position.Set(-10.0f, 4.0f); + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 vs[10]; + vs[0].Set(0.0f, 0.0f); + vs[1].Set(6.0f, 0.0f); + vs[2].Set(6.0f, 2.0f); + vs[3].Set(4.0f, 1.0f); + vs[4].Set(2.0f, 2.0f); + vs[5].Set(0.0f, 2.0f); + vs[6].Set(-2.0f, 2.0f); + vs[7].Set(-4.0f, 3.0f); + vs[8].Set(-6.0f, 2.0f); + vs[9].Set(-6.0f, 0.0f); + b2ChainShape shape; + shape.CreateLoop(vs, 10); + ground->CreateFixture(&shape, 0.0f); + } + + // Square character 1 + { + b2BodyDef bd; + bd.position.Set(-3.0f, 8.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Square character 2 + { + b2BodyDef bd; + bd.position.Set(-5.0f, 5.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.25f, 0.25f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Hexagon character + { + b2BodyDef bd; + bd.position.Set(-5.0f, 8.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + float32 angle = 0.0f; + float32 delta = b2_pi / 3.0f; + b2Vec2 vertices[6]; + for (int32 i = 0; i < 6; ++i) + { + vertices[i].Set(0.5f * cosf(angle), 0.5f * sinf(angle)); + angle += delta; + } + + b2PolygonShape shape; + shape.Set(vertices, 6); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(3.0f, 5.0f); + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.allowSleep = false; + + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + body->CreateFixture(&fd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(-7.0f, 6.0f); + bd.type = b2_dynamicBody; + bd.allowSleep = false; + + m_character = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 1.0f; + m_character->CreateFixture(&fd); + } + } + + void Step(Settings* settings) + { + b2Vec2 v = m_character->GetLinearVelocity(); + v.x = -5.0f; + m_character->SetLinearVelocity(v); + + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "This tests various character collision shapes."); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Limitation: square and hexagon can snag on aligned boxes."); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Feature: edge chains have smooth collision inside and out."); + m_textLine += 15; + } + + static Test* Create() + { + return new CharacterCollision; + } + + b2Body* m_character; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionFiltering.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionFiltering.h new file mode 100644 index 0000000000..65a2eb35c2 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionFiltering.h @@ -0,0 +1,176 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_FILTERING_H +#define COLLISION_FILTERING_H + +// This is a test of collision filtering. +// There is a triangle, a box, and a circle. +// There are 6 shapes. 3 large and 3 small. +// The 3 small ones always collide. +// The 3 large ones never collide. +// The boxes don't collide with triangles (except if both are small). +const int16 k_smallGroup = 1; +const int16 k_largeGroup = -1; + +const uint16 k_defaultCategory = 0x0001; +const uint16 k_triangleCategory = 0x0002; +const uint16 k_boxCategory = 0x0004; +const uint16 k_circleCategory = 0x0008; + +const uint16 k_triangleMask = 0xFFFF; +const uint16 k_boxMask = 0xFFFF ^ k_triangleCategory; +const uint16 k_circleMask = 0xFFFF; + +class CollisionFiltering : public Test +{ +public: + CollisionFiltering() + { + // Ground body + { + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2FixtureDef sd; + sd.shape = &shape; + sd.friction = 0.3f; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&sd); + } + + // Small triangle + b2Vec2 vertices[3]; + vertices[0].Set(-1.0f, 0.0f); + vertices[1].Set(1.0f, 0.0f); + vertices[2].Set(0.0f, 2.0f); + b2PolygonShape polygon; + polygon.Set(vertices, 3); + + b2FixtureDef triangleShapeDef; + triangleShapeDef.shape = &polygon; + triangleShapeDef.density = 1.0f; + + triangleShapeDef.filter.groupIndex = k_smallGroup; + triangleShapeDef.filter.categoryBits = k_triangleCategory; + triangleShapeDef.filter.maskBits = k_triangleMask; + + b2BodyDef triangleBodyDef; + triangleBodyDef.type = b2_dynamicBody; + triangleBodyDef.position.Set(-5.0f, 2.0f); + + b2Body* body1 = m_world->CreateBody(&triangleBodyDef); + body1->CreateFixture(&triangleShapeDef); + + // Large triangle (recycle definitions) + vertices[0] *= 2.0f; + vertices[1] *= 2.0f; + vertices[2] *= 2.0f; + polygon.Set(vertices, 3); + triangleShapeDef.filter.groupIndex = k_largeGroup; + triangleBodyDef.position.Set(-5.0f, 6.0f); + triangleBodyDef.fixedRotation = true; // look at me! + + b2Body* body2 = m_world->CreateBody(&triangleBodyDef); + body2->CreateFixture(&triangleShapeDef); + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-5.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape p; + p.SetAsBox(0.5f, 1.0f); + body->CreateFixture(&p, 1.0f); + + b2PrismaticJointDef jd; + jd.bodyA = body2; + jd.bodyB = body; + jd.enableLimit = true; + jd.localAnchorA.Set(0.0f, 4.0f); + jd.localAnchorB.SetZero(); + jd.localAxisA.Set(0.0f, 1.0f); + jd.lowerTranslation = -1.0f; + jd.upperTranslation = 1.0f; + + m_world->CreateJoint(&jd); + } + + // Small box + polygon.SetAsBox(1.0f, 0.5f); + b2FixtureDef boxShapeDef; + boxShapeDef.shape = &polygon; + boxShapeDef.density = 1.0f; + boxShapeDef.restitution = 0.1f; + + boxShapeDef.filter.groupIndex = k_smallGroup; + boxShapeDef.filter.categoryBits = k_boxCategory; + boxShapeDef.filter.maskBits = k_boxMask; + + b2BodyDef boxBodyDef; + boxBodyDef.type = b2_dynamicBody; + boxBodyDef.position.Set(0.0f, 2.0f); + + b2Body* body3 = m_world->CreateBody(&boxBodyDef); + body3->CreateFixture(&boxShapeDef); + + // Large box (recycle definitions) + polygon.SetAsBox(2.0f, 1.0f); + boxShapeDef.filter.groupIndex = k_largeGroup; + boxBodyDef.position.Set(0.0f, 6.0f); + + b2Body* body4 = m_world->CreateBody(&boxBodyDef); + body4->CreateFixture(&boxShapeDef); + + // Small circle + b2CircleShape circle; + circle.m_radius = 1.0f; + + b2FixtureDef circleShapeDef; + circleShapeDef.shape = &circle; + circleShapeDef.density = 1.0f; + + circleShapeDef.filter.groupIndex = k_smallGroup; + circleShapeDef.filter.categoryBits = k_circleCategory; + circleShapeDef.filter.maskBits = k_circleMask; + + b2BodyDef circleBodyDef; + circleBodyDef.type = b2_dynamicBody; + circleBodyDef.position.Set(5.0f, 2.0f); + + b2Body* body5 = m_world->CreateBody(&circleBodyDef); + body5->CreateFixture(&circleShapeDef); + + // Large circle + circle.m_radius *= 2.0f; + circleShapeDef.filter.groupIndex = k_largeGroup; + circleBodyDef.position.Set(5.0f, 6.0f); + + b2Body* body6 = m_world->CreateBody(&circleBodyDef); + body6->CreateFixture(&circleShapeDef); + } + static Test* Create() + { + return new CollisionFiltering; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionProcessing.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionProcessing.h new file mode 100644 index 0000000000..5edc6d4007 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CollisionProcessing.h @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_PROCESSING_H +#define COLLISION_PROCESSING_H + +#include + +// This test shows collision processing and tests +// deferred body destruction. +class CollisionProcessing : public Test +{ +public: + CollisionProcessing() + { + // Ground body + { + b2EdgeShape shape; + shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); + + b2FixtureDef sd; + sd.shape = &shape;; + + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&sd); + } + + float32 xLo = -5.0f, xHi = 5.0f; + float32 yLo = 2.0f, yHi = 35.0f; + + // Small triangle + b2Vec2 vertices[3]; + vertices[0].Set(-1.0f, 0.0f); + vertices[1].Set(1.0f, 0.0f); + vertices[2].Set(0.0f, 2.0f); + + b2PolygonShape polygon; + polygon.Set(vertices, 3); + + b2FixtureDef triangleShapeDef; + triangleShapeDef.shape = &polygon; + triangleShapeDef.density = 1.0f; + + b2BodyDef triangleBodyDef; + triangleBodyDef.type = b2_dynamicBody; + triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body1 = m_world->CreateBody(&triangleBodyDef); + body1->CreateFixture(&triangleShapeDef); + + // Large triangle (recycle definitions) + vertices[0] *= 2.0f; + vertices[1] *= 2.0f; + vertices[2] *= 2.0f; + polygon.Set(vertices, 3); + + triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body2 = m_world->CreateBody(&triangleBodyDef); + body2->CreateFixture(&triangleShapeDef); + + // Small box + polygon.SetAsBox(1.0f, 0.5f); + + b2FixtureDef boxShapeDef; + boxShapeDef.shape = &polygon; + boxShapeDef.density = 1.0f; + + b2BodyDef boxBodyDef; + boxBodyDef.type = b2_dynamicBody; + boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body3 = m_world->CreateBody(&boxBodyDef); + body3->CreateFixture(&boxShapeDef); + + // Large box (recycle definitions) + polygon.SetAsBox(2.0f, 1.0f); + boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body4 = m_world->CreateBody(&boxBodyDef); + body4->CreateFixture(&boxShapeDef); + + // Small circle + b2CircleShape circle; + circle.m_radius = 1.0f; + + b2FixtureDef circleShapeDef; + circleShapeDef.shape = &circle; + circleShapeDef.density = 1.0f; + + b2BodyDef circleBodyDef; + circleBodyDef.type = b2_dynamicBody; + circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body5 = m_world->CreateBody(&circleBodyDef); + body5->CreateFixture(&circleShapeDef); + + // Large circle + circle.m_radius *= 2.0f; + circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); + + b2Body* body6 = m_world->CreateBody(&circleBodyDef); + body6->CreateFixture(&circleShapeDef); + } + + void Step(Settings* settings) + { + Test::Step(settings); + + // We are going to destroy some bodies according to contact + // points. We must buffer the bodies that should be destroyed + // because they may belong to multiple contact points. + const int32 k_maxNuke = 6; + b2Body* nuke[k_maxNuke]; + int32 nukeCount = 0; + + // Traverse the contact results. Destroy bodies that + // are touching heavier bodies. + for (int32 i = 0; i < m_pointCount; ++i) + { + ContactPoint* point = m_points + i; + + b2Body* body1 = point->fixtureA->GetBody(); + b2Body* body2 = point->fixtureB->GetBody(); + float32 mass1 = body1->GetMass(); + float32 mass2 = body2->GetMass(); + + if (mass1 > 0.0f && mass2 > 0.0f) + { + if (mass2 > mass1) + { + nuke[nukeCount++] = body1; + } + else + { + nuke[nukeCount++] = body2; + } + + if (nukeCount == k_maxNuke) + { + break; + } + } + } + + // Sort the nuke array to group duplicates. + std::sort(nuke, nuke + nukeCount); + + // Destroy the bodies, skipping duplicates. + int32 i = 0; + while (i < nukeCount) + { + b2Body* b = nuke[i++]; + while (i < nukeCount && nuke[i] == b) + { + ++i; + } + + if (b != m_bomb) + { + m_world->DestroyBody(b); + } + } + } + + static Test* Create() + { + return new CollisionProcessing; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CompoundShapes.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CompoundShapes.h new file mode 100644 index 0000000000..f76ba795ed --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/CompoundShapes.h @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COMPOUND_SHAPES_H +#define COMPOUND_SHAPES_H + +// TODO_ERIN test joints on compounds. +class CompoundShapes : public Test +{ +public: + CompoundShapes() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); + + body->CreateFixture(&shape, 0.0f); + } + + { + b2CircleShape circle1; + circle1.m_radius = 0.5f; + circle1.m_p.Set(-0.5f, 0.5f); + + b2CircleShape circle2; + circle2.m_radius = 0.5f; + circle2.m_p.Set(0.5f, 0.5f); + + for (int i = 0; i < 10; ++i) + { + float32 x = RandomFloat(-0.1f, 0.1f); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(x + 5.0f, 1.05f + 2.5f * i); + bd.angle = RandomFloat(-b2_pi, b2_pi); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&circle1, 2.0f); + body->CreateFixture(&circle2, 0.0f); + } + } + + { + b2PolygonShape polygon1; + polygon1.SetAsBox(0.25f, 0.5f); + + b2PolygonShape polygon2; + polygon2.SetAsBox(0.25f, 0.5f, b2Vec2(0.0f, -0.5f), 0.5f * b2_pi); + + for (int i = 0; i < 10; ++i) + { + float32 x = RandomFloat(-0.1f, 0.1f); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(x - 5.0f, 1.05f + 2.5f * i); + bd.angle = RandomFloat(-b2_pi, b2_pi); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&polygon1, 2.0f); + body->CreateFixture(&polygon2, 2.0f); + } + } + + { + b2Transform xf1; + xf1.q.Set(0.3524f * b2_pi); + xf1.p = xf1.q.GetXAxis(); + + b2Vec2 vertices[3]; + + b2PolygonShape triangle1; + vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); + triangle1.Set(vertices, 3); + + b2Transform xf2; + xf2.q.Set(-0.3524f * b2_pi); + xf2.p = -xf2.q.GetXAxis(); + + b2PolygonShape triangle2; + vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); + vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); + vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); + triangle2.Set(vertices, 3); + + for (int32 i = 0; i < 10; ++i) + { + float32 x = RandomFloat(-0.1f, 0.1f); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(x, 2.05f + 2.5f * i); + bd.angle = 0.0f; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&triangle1, 2.0f); + body->CreateFixture(&triangle2, 2.0f); + } + } + + { + b2PolygonShape bottom; + bottom.SetAsBox( 1.5f, 0.15f ); + + b2PolygonShape left; + left.SetAsBox(0.15f, 2.7f, b2Vec2(-1.45f, 2.35f), 0.2f); + + b2PolygonShape right; + right.SetAsBox(0.15f, 2.7f, b2Vec2(1.45f, 2.35f), -0.2f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set( 0.0f, 2.0f ); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&bottom, 4.0f); + body->CreateFixture(&left, 4.0f); + body->CreateFixture(&right, 4.0f); + } + } + + static Test* Create() + { + return new CompoundShapes; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Confined.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Confined.h new file mode 100644 index 0000000000..8cd33f6e2a --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Confined.h @@ -0,0 +1,167 @@ +/* +* Copyright (c) 2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONFINED_H +#define CONFINED_H + +class Confined : public Test +{ +public: + + enum + { + e_columnCount = 0, + e_rowCount = 0 + }; + + Confined() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + + // Floor + shape.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Left wall + shape.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(-10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Right wall + shape.Set(b2Vec2(10.0f, 0.0f), b2Vec2(10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + + // Roof + shape.Set(b2Vec2(-10.0f, 20.0f), b2Vec2(10.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + float32 radius = 0.5f; + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = radius; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.1f; + + for (int32 j = 0; j < e_columnCount; ++j) + { + for (int i = 0; i < e_rowCount; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + (2.1f * j + 1.0f + 0.01f * i) * radius, (2.0f * i + 1.0f) * radius); + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + } + } + + m_world->SetGravity(b2Vec2(0.0f, 0.0f)); + } + + void CreateCircle() + { + float32 radius = 2.0f; + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = radius; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.0f; + + b2Vec2 p(RandomFloat(), 3.0f + RandomFloat()); + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = p; + //bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'c': + CreateCircle(); + break; + } + } + + void Step(Settings* settings) + { + bool sleeping = true; + for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) + { + if (b->GetType() != b2_dynamicBody) + { + continue; + } + + if (b->IsAwake()) + { + sleeping = false; + } + } + + if (m_stepCount == 180) + { + m_stepCount += 0; + } + + //if (sleeping) + //{ + // CreateCircle(); + //} + + Test::Step(settings); + + for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) + { + if (b->GetType() != b2_dynamicBody) + { + continue; + } + + b2Vec2 p = b->GetPosition(); + if (p.x <= -10.0f || 10.0f <= p.x || p.y <= 0.0f || 20.0f <= p.y) + { + p.x += 0.0; + } + } + + m_debugDraw.DrawString(5, m_textLine, "Press 'c' to create a circle."); + m_textLine += 15; + } + + static Test* Create() + { + return new Confined; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ContinuousTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ContinuousTest.h new file mode 100644 index 0000000000..0cfac9f4a5 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ContinuousTest.h @@ -0,0 +1,137 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONTINUOUS_TEST_H +#define CONTINUOUS_TEST_H + +class ContinuousTest : public Test +{ +public: + + ContinuousTest() + { + { + b2BodyDef bd; + bd.position.Set(0.0f, 0.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2EdgeShape edge; + + edge.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); + body->CreateFixture(&edge, 0.0f); + + b2PolygonShape shape; + shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); + body->CreateFixture(&shape, 0.0f); + } + +#if 1 + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 20.0f); + //bd.angle = 0.1f; + + b2PolygonShape shape; + shape.SetAsBox(2.0f, 0.1f); + + m_body = m_world->CreateBody(&bd); + m_body->CreateFixture(&shape, 1.0f); + + m_angularVelocity = RandomFloat(-50.0f, 50.0f); + //m_angularVelocity = 46.661274f; + m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + m_body->SetAngularVelocity(m_angularVelocity); + } +#else + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 2.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_p.SetZero(); + shape.m_radius = 0.5f; + body->CreateFixture(&shape, 1.0f); + + bd.bullet = true; + bd.position.Set(0.0f, 10.0f); + body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + } +#endif + } + + void Launch() + { + m_body->SetTransform(b2Vec2(0.0f, 20.0f), 0.0f); + m_angularVelocity = RandomFloat(-50.0f, 50.0f); + m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); + m_body->SetAngularVelocity(m_angularVelocity); + } + + void Step(Settings* settings) + { + if (m_stepCount == 12) + { + m_stepCount += 0; + } + + Test::Step(settings); + + extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; + + if (b2_gjkCalls > 0) + { + m_debugDraw.DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", + b2_gjkCalls, b2_gjkIters / float32(b2_gjkCalls), b2_gjkMaxIters); + m_textLine += 15; + } + + extern int32 b2_toiCalls, b2_toiIters; + extern int32 b2_toiRootIters, b2_toiMaxRootIters; + + if (b2_toiCalls > 0) + { + m_debugDraw.DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", + b2_toiCalls, b2_toiIters / float32(b2_toiCalls), b2_toiMaxRootIters); + m_textLine += 15; + + m_debugDraw.DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", + b2_toiRootIters / float32(b2_toiCalls), b2_toiMaxRootIters); + m_textLine += 15; + } + + if (m_stepCount % 60 == 0) + { + //Launch(); + } + } + + static Test* Create() + { + return new ContinuousTest; + } + + b2Body* m_body; + float32 m_angularVelocity; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DistanceTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DistanceTest.h new file mode 100644 index 0000000000..4c0a47eb3c --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DistanceTest.h @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef DISTANCE_TEST_H +#define DISTANCE_TEST_H + +class DistanceTest : public Test +{ +public: + DistanceTest() + { + { + m_transformA.SetIdentity(); + m_transformA.p.Set(0.0f, -0.2f); + m_polygonA.SetAsBox(10.0f, 0.2f); + } + + { + m_positionB.Set(12.017401f, 0.13678508f); + m_angleB = -0.0109265f; + m_transformB.Set(m_positionB, m_angleB); + + m_polygonB.SetAsBox(2.0f, 0.1f); + } + } + + static Test* Create() + { + return new DistanceTest; + } + + void Step(Settings* settings) + { + Test::Step(settings); + + b2DistanceInput input; + input.proxyA.Set(&m_polygonA, 0); + input.proxyB.Set(&m_polygonB, 0); + input.transformA = m_transformA; + input.transformB = m_transformB; + input.useRadii = true; + b2SimplexCache cache; + cache.count = 0; + b2DistanceOutput output; + b2Distance(&output, &cache, &input); + + m_debugDraw.DrawString(5, m_textLine, "distance = %g", output.distance); + m_textLine += 15; + + m_debugDraw.DrawString(5, m_textLine, "iterations = %d", output.iterations); + m_textLine += 15; + + { + b2Color color(0.9f, 0.9f, 0.9f); + b2Vec2 v[b2_maxPolygonVertices]; + for (int32 i = 0; i < m_polygonA.m_vertexCount; ++i) + { + v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); + } + m_debugDraw.DrawPolygon(v, m_polygonA.m_vertexCount, color); + + for (int32 i = 0; i < m_polygonB.m_vertexCount; ++i) + { + v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(v, m_polygonB.m_vertexCount, color); + } + + b2Vec2 x1 = output.pointA; + b2Vec2 x2 = output.pointB; + + b2Color c1(1.0f, 0.0f, 0.0f); + m_debugDraw.DrawPoint(x1, 4.0f, c1); + + b2Color c2(1.0f, 1.0f, 0.0f); + m_debugDraw.DrawPoint(x2, 4.0f, c2); + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + m_positionB.x -= 0.1f; + break; + + case 'd': + m_positionB.x += 0.1f; + break; + + case 's': + m_positionB.y -= 0.1f; + break; + + case 'w': + m_positionB.y += 0.1f; + break; + + case 'q': + m_angleB += 0.1f * b2_pi; + break; + + case 'e': + m_angleB -= 0.1f * b2_pi; + break; + } + + m_transformB.Set(m_positionB, m_angleB); + } + + b2Vec2 m_positionB; + float32 m_angleB; + + b2Transform m_transformA; + b2Transform m_transformB; + b2PolygonShape m_polygonA; + b2PolygonShape m_polygonB; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Dominos.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Dominos.h new file mode 100644 index 0000000000..0414a8281f --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Dominos.h @@ -0,0 +1,215 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef DOMINOS_H +#define DOMINOS_H + +class Dominos : public Test +{ +public: + + Dominos() + { + b2Body* b1; + { + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2BodyDef bd; + b1 = m_world->CreateBody(&bd); + b1->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(6.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-1.5f, 10.0f); + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.1f, 1.0f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.1f; + + for (int i = 0; i < 10; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-6.0f + 1.0f * i, 11.25f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&fd); + } + } + + { + b2PolygonShape shape; + shape.SetAsBox(7.0f, 0.25f, b2Vec2_zero, 0.3f); + + b2BodyDef bd; + bd.position.Set(1.0f, 6.0f); + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + b2Body* b2; + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.5f); + + b2BodyDef bd; + bd.position.Set(-7.0f, 4.0f); + b2 = m_world->CreateBody(&bd); + b2->CreateFixture(&shape, 0.0f); + } + + b2Body* b3; + { + b2PolygonShape shape; + shape.SetAsBox(6.0f, 0.125f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-0.9f, 1.0f); + bd.angle = -0.15f; + + b3 = m_world->CreateBody(&bd); + b3->CreateFixture(&shape, 10.0f); + } + + b2RevoluteJointDef jd; + b2Vec2 anchor; + + anchor.Set(-2.0f, 1.0f); + jd.Initialize(b1, b3, anchor); + jd.collideConnected = true; + m_world->CreateJoint(&jd); + + b2Body* b4; + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 0.25f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f, 15.0f); + b4 = m_world->CreateBody(&bd); + b4->CreateFixture(&shape, 10.0f); + } + + anchor.Set(-7.0f, 15.0f); + jd.Initialize(b2, b4, anchor); + m_world->CreateJoint(&jd); + + b2Body* b5; + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(6.5f, 3.0f); + b5 = m_world->CreateBody(&bd); + + b2PolygonShape shape; + b2FixtureDef fd; + + fd.shape = &shape; + fd.density = 10.0f; + fd.friction = 0.1f; + + shape.SetAsBox(1.0f, 0.1f, b2Vec2(0.0f, -0.9f), 0.0f); + b5->CreateFixture(&fd); + + shape.SetAsBox(0.1f, 1.0f, b2Vec2(-0.9f, 0.0f), 0.0f); + b5->CreateFixture(&fd); + + shape.SetAsBox(0.1f, 1.0f, b2Vec2(0.9f, 0.0f), 0.0f); + b5->CreateFixture(&fd); + } + + anchor.Set(6.0f, 2.0f); + jd.Initialize(b1, b5, anchor); + m_world->CreateJoint(&jd); + + b2Body* b6; + { + b2PolygonShape shape; + shape.SetAsBox(1.0f, 0.1f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(6.5f, 4.1f); + b6 = m_world->CreateBody(&bd); + b6->CreateFixture(&shape, 30.0f); + } + + anchor.Set(7.5f, 4.0f); + jd.Initialize(b5, b6, anchor); + m_world->CreateJoint(&jd); + + b2Body* b7; + { + b2PolygonShape shape; + shape.SetAsBox(0.1f, 1.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(7.4f, 1.0f); + + b7 = m_world->CreateBody(&bd); + b7->CreateFixture(&shape, 10.0f); + } + + b2DistanceJointDef djd; + djd.bodyA = b3; + djd.bodyB = b7; + djd.localAnchorA.Set(6.0f, 0.0f); + djd.localAnchorB.Set(0.0f, -1.0f); + b2Vec2 d = djd.bodyB->GetWorldPoint(djd.localAnchorB) - djd.bodyA->GetWorldPoint(djd.localAnchorA); + djd.length = d.Length(); + m_world->CreateJoint(&djd); + + { + float32 radius = 0.2f; + + b2CircleShape shape; + shape.m_radius = radius; + + for (int i = 0; i < 4; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(5.9f + 2.0f * radius * i, 2.4f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 10.0f); + } + } + } + + static Test* Create() + { + return new Dominos; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DumpShell.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DumpShell.h new file mode 100644 index 0000000000..bff3ca7dea --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DumpShell.h @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef DUMP_SHELL_H +#define DUMP_SHELL_H + +// This test holds worlds dumped using b2World::Dump. +class DumpShell : public Test +{ +public: + + DumpShell() + { + +b2Vec2 g(0.000000000000000e+00f, 0.000000000000000e+00f); +m_world->SetGravity(g); +b2Body** bodies = (b2Body**)b2Alloc(3 * sizeof(b2Body*)); +b2Joint** joints = (b2Joint**)b2Alloc(2 * sizeof(b2Joint*)); +{ + b2BodyDef bd; + bd.type = b2BodyType(2); + bd.position.Set(1.304347801208496e+01f, 2.500000000000000e+00f); + bd.angle = 0.000000000000000e+00f; + bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + bd.angularVelocity = 0.000000000000000e+00f; + bd.linearDamping = 5.000000000000000e-01f; + bd.angularDamping = 5.000000000000000e-01f; + bd.allowSleep = bool(4); + bd.awake = bool(2); + bd.fixedRotation = bool(0); + bd.bullet = bool(0); + bd.active = bool(32); + bd.gravityScale = 1.000000000000000e+00f; + bodies[0] = m_world->CreateBody(&bd); + + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+00f; + fd.restitution = 5.000000000000000e-01f; + fd.density = 1.000000000000000e+01f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2PolygonShape shape; + b2Vec2 vs[8]; + vs[0].Set(-6.900000095367432e+00f, -3.000000119209290e-01f); + vs[1].Set(2.000000029802322e-01f, -3.000000119209290e-01f); + vs[2].Set(2.000000029802322e-01f, 2.000000029802322e-01f); + vs[3].Set(-6.900000095367432e+00f, 2.000000029802322e-01f); + shape.Set(vs, 4); + + fd.shape = &shape; + + bodies[0]->CreateFixture(&fd); + } +} +{ + b2BodyDef bd; + bd.type = b2BodyType(2); + bd.position.Set(8.478260636329651e-01f, 2.500000000000000e+00f); + bd.angle = 0.000000000000000e+00f; + bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + bd.angularVelocity = 0.000000000000000e+00f; + bd.linearDamping = 5.000000000000000e-01f; + bd.angularDamping = 5.000000000000000e-01f; + bd.allowSleep = bool(4); + bd.awake = bool(2); + bd.fixedRotation = bool(0); + bd.bullet = bool(0); + bd.active = bool(32); + bd.gravityScale = 1.000000000000000e+00f; + bodies[1] = m_world->CreateBody(&bd); + + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+00f; + fd.restitution = 5.000000000000000e-01f; + fd.density = 1.000000000000000e+01f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2PolygonShape shape; + b2Vec2 vs[8]; + vs[0].Set(-3.228000104427338e-01f, -2.957000136375427e-01f); + vs[1].Set(6.885900020599365e+00f, -3.641000092029572e-01f); + vs[2].Set(6.907599925994873e+00f, 3.271999955177307e-01f); + vs[3].Set(-3.228000104427338e-01f, 2.825999855995178e-01f); + shape.Set(vs, 4); + + fd.shape = &shape; + + bodies[1]->CreateFixture(&fd); + } +} + +{ + b2BodyDef bd; + bd.type = b2BodyType(0); + bd.position.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + bd.angle = 0.000000000000000e+00f; + bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + bd.angularVelocity = 0.000000000000000e+00f; + bd.linearDamping = 0.000000000000000e+00f; + bd.angularDamping = 0.000000000000000e+00f; + bd.allowSleep = bool(4); + bd.awake = bool(2); + bd.fixedRotation = bool(0); + bd.bullet = bool(0); + bd.active = bool(32); + bd.gravityScale = 1.000000000000000e+00f; + bodies[2] = m_world->CreateBody(&bd); + + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+01f; + fd.restitution = 0.000000000000000e+00f; + fd.density = 0.000000000000000e+00f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2EdgeShape shape; + shape.m_radius = 9.999999776482582e-03f; + shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex1.Set(4.452173995971680e+01f, 1.669565200805664e+01f); + shape.m_vertex2.Set(4.452173995971680e+01f, 0.000000000000000e+00f); + shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_hasVertex0 = bool(0); + shape.m_hasVertex3 = bool(0); + + fd.shape = &shape; + + bodies[2]->CreateFixture(&fd); + } + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+01f; + fd.restitution = 0.000000000000000e+00f; + fd.density = 0.000000000000000e+00f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2EdgeShape shape; + shape.m_radius = 9.999999776482582e-03f; + shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex1.Set(0.000000000000000e+00f, 1.669565200805664e+01f); + shape.m_vertex2.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_hasVertex0 = bool(0); + shape.m_hasVertex3 = bool(0); + + fd.shape = &shape; + + bodies[2]->CreateFixture(&fd); + } + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+01f; + fd.restitution = 0.000000000000000e+00f; + fd.density = 0.000000000000000e+00f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2EdgeShape shape; + shape.m_radius = 9.999999776482582e-03f; + shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex1.Set(0.000000000000000e+00f, 1.669565200805664e+01f); + shape.m_vertex2.Set(4.452173995971680e+01f, 1.669565200805664e+01f); + shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_hasVertex0 = bool(0); + shape.m_hasVertex3 = bool(0); + + fd.shape = &shape; + + bodies[2]->CreateFixture(&fd); + } + { + b2FixtureDef fd; + fd.friction = 1.000000000000000e+01f; + fd.restitution = 0.000000000000000e+00f; + fd.density = 0.000000000000000e+00f; + fd.isSensor = bool(0); + fd.filter.categoryBits = uint16(1); + fd.filter.maskBits = uint16(65535); + fd.filter.groupIndex = int16(0); + b2EdgeShape shape; + shape.m_radius = 9.999999776482582e-03f; + shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex1.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_vertex2.Set(4.452173995971680e+01f, 0.000000000000000e+00f); + shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + shape.m_hasVertex0 = bool(0); + shape.m_hasVertex3 = bool(0); + + fd.shape = &shape; + + bodies[2]->CreateFixture(&fd); + } +} + +{ + b2PrismaticJointDef jd; + jd.bodyA = bodies[1]; + jd.bodyB = bodies[0]; + jd.collideConnected = bool(0); + jd.localAnchorA.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + jd.localAnchorB.Set(-1.219565200805664e+01f, 0.000000000000000e+00f); + jd.localAxisA.Set(-1.219565200805664e+01f, 0.000000000000000e+00f); + jd.referenceAngle = 0.000000000000000e+00f; + jd.enableLimit = bool(1); + jd.lowerTranslation = -2.000000000000000e+01f; + jd.upperTranslation = 0.000000000000000e+00f; + jd.enableMotor = bool(1); + jd.motorSpeed = 0.000000000000000e+00f; + jd.maxMotorForce = 1.000000000000000e+01f; + joints[0] = m_world->CreateJoint(&jd); +} +{ + b2RevoluteJointDef jd; + jd.bodyA = bodies[1]; + jd.bodyB = bodies[2]; + jd.collideConnected = bool(0); + jd.localAnchorA.Set(0.000000000000000e+00f, 0.000000000000000e+00f); + jd.localAnchorB.Set(8.478260636329651e-01f, 2.500000000000000e+00f); + jd.referenceAngle = 0.000000000000000e+00f; + jd.enableLimit = bool(0); + jd.lowerAngle = 0.000000000000000e+00f; + jd.upperAngle = 0.000000000000000e+00f; + jd.enableMotor = bool(0); + jd.motorSpeed = 0.000000000000000e+00f; + jd.maxMotorTorque = 0.000000000000000e+00f; + joints[1] = m_world->CreateJoint(&jd); +} +b2Free(joints); +b2Free(bodies); +joints = NULL; +bodies = NULL; + + + } + + static Test* Create() + { + return new DumpShell; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DynamicTreeTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DynamicTreeTest.h new file mode 100644 index 0000000000..3fe7aeb7d8 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/DynamicTreeTest.h @@ -0,0 +1,357 @@ +/* +* Copyright (c) 2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef DYNAMIC_TREE_TEST_H +#define DYNAMIC_TREE_TEST_H + +class DynamicTreeTest : public Test +{ +public: + + enum + { + e_actorCount = 128 + }; + + DynamicTreeTest() + { + m_worldExtent = 15.0f; + m_proxyExtent = 0.5f; + + srand(888); + + for (int32 i = 0; i < e_actorCount; ++i) + { + Actor* actor = m_actors + i; + GetRandomAABB(&actor->aabb); + actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); + } + + m_stepCount = 0; + + float32 h = m_worldExtent; + m_queryAABB.lowerBound.Set(-3.0f, -4.0f + h); + m_queryAABB.upperBound.Set(5.0f, 6.0f + h); + + m_rayCastInput.p1.Set(-5.0, 5.0f + h); + m_rayCastInput.p2.Set(7.0f, -4.0f + h); + //m_rayCastInput.p1.Set(0.0f, 2.0f + h); + //m_rayCastInput.p2.Set(0.0f, -2.0f + h); + m_rayCastInput.maxFraction = 1.0f; + + m_automated = false; + } + + static Test* Create() + { + return new DynamicTreeTest; + } + + void Step(Settings* settings) + { + B2_NOT_USED(settings); + + m_rayActor = NULL; + for (int32 i = 0; i < e_actorCount; ++i) + { + m_actors[i].fraction = 1.0f; + m_actors[i].overlap = false; + } + + if (m_automated == true) + { + int32 actionCount = b2Max(1, e_actorCount >> 2); + + for (int32 i = 0; i < actionCount; ++i) + { + Action(); + } + } + + Query(); + RayCast(); + + for (int32 i = 0; i < e_actorCount; ++i) + { + Actor* actor = m_actors + i; + if (actor->proxyId == b2_nullNode) + continue; + + b2Color c(0.9f, 0.9f, 0.9f); + if (actor == m_rayActor && actor->overlap) + { + c.Set(0.9f, 0.6f, 0.6f); + } + else if (actor == m_rayActor) + { + c.Set(0.6f, 0.9f, 0.6f); + } + else if (actor->overlap) + { + c.Set(0.6f, 0.6f, 0.9f); + } + + m_debugDraw.DrawAABB(&actor->aabb, c); + } + + b2Color c(0.7f, 0.7f, 0.7f); + m_debugDraw.DrawAABB(&m_queryAABB, c); + + m_debugDraw.DrawSegment(m_rayCastInput.p1, m_rayCastInput.p2, c); + + b2Color c1(0.2f, 0.9f, 0.2f); + b2Color c2(0.9f, 0.2f, 0.2f); + m_debugDraw.DrawPoint(m_rayCastInput.p1, 6.0f, c1); + m_debugDraw.DrawPoint(m_rayCastInput.p2, 6.0f, c2); + + if (m_rayActor) + { + b2Color cr(0.2f, 0.2f, 0.9f); + b2Vec2 p = m_rayCastInput.p1 + m_rayActor->fraction * (m_rayCastInput.p2 - m_rayCastInput.p1); + m_debugDraw.DrawPoint(p, 6.0f, cr); + } + + { + int32 height = m_tree.GetHeight(); + m_debugDraw.DrawString(5, m_textLine, "dynamic tree height = %d", height); + m_textLine += 15; + } + + ++m_stepCount; + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + m_automated = !m_automated; + break; + + case 'c': + CreateProxy(); + break; + + case 'd': + DestroyProxy(); + break; + + case 'm': + MoveProxy(); + break; + } + } + + bool QueryCallback(int32 proxyId) + { + Actor* actor = (Actor*)m_tree.GetUserData(proxyId); + actor->overlap = b2TestOverlap(m_queryAABB, actor->aabb); + return true; + } + + float32 RayCastCallback(const b2RayCastInput& input, int32 proxyId) + { + Actor* actor = (Actor*)m_tree.GetUserData(proxyId); + + b2RayCastOutput output; + bool hit = actor->aabb.RayCast(&output, input); + + if (hit) + { + m_rayCastOutput = output; + m_rayActor = actor; + m_rayActor->fraction = output.fraction; + return output.fraction; + } + + return input.maxFraction; + } + +private: + + struct Actor + { + b2AABB aabb; + float32 fraction; + bool overlap; + int32 proxyId; + }; + + void GetRandomAABB(b2AABB* aabb) + { + b2Vec2 w; w.Set(2.0f * m_proxyExtent, 2.0f * m_proxyExtent); + //aabb->lowerBound.x = -m_proxyExtent; + //aabb->lowerBound.y = -m_proxyExtent + m_worldExtent; + aabb->lowerBound.x = RandomFloat(-m_worldExtent, m_worldExtent); + aabb->lowerBound.y = RandomFloat(0.0f, 2.0f * m_worldExtent); + aabb->upperBound = aabb->lowerBound + w; + } + + void MoveAABB(b2AABB* aabb) + { + b2Vec2 d; + d.x = RandomFloat(-0.5f, 0.5f); + d.y = RandomFloat(-0.5f, 0.5f); + //d.x = 2.0f; + //d.y = 0.0f; + aabb->lowerBound += d; + aabb->upperBound += d; + + b2Vec2 c0 = 0.5f * (aabb->lowerBound + aabb->upperBound); + b2Vec2 min; min.Set(-m_worldExtent, 0.0f); + b2Vec2 max; max.Set(m_worldExtent, 2.0f * m_worldExtent); + b2Vec2 c = b2Clamp(c0, min, max); + + aabb->lowerBound += c - c0; + aabb->upperBound += c - c0; + } + + void CreateProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId == b2_nullNode) + { + GetRandomAABB(&actor->aabb); + actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); + return; + } + } + } + + void DestroyProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId != b2_nullNode) + { + m_tree.DestroyProxy(actor->proxyId); + actor->proxyId = b2_nullNode; + return; + } + } + } + + void MoveProxy() + { + for (int32 i = 0; i < e_actorCount; ++i) + { + int32 j = rand() % e_actorCount; + Actor* actor = m_actors + j; + if (actor->proxyId == b2_nullNode) + { + continue; + } + + b2AABB aabb0 = actor->aabb; + MoveAABB(&actor->aabb); + b2Vec2 displacement = actor->aabb.GetCenter() - aabb0.GetCenter(); + m_tree.MoveProxy(actor->proxyId, actor->aabb, displacement); + return; + } + } + + void Action() + { + int32 choice = rand() % 20; + + switch (choice) + { + case 0: + CreateProxy(); + break; + + case 1: + DestroyProxy(); + break; + + default: + MoveProxy(); + } + } + + void Query() + { + m_tree.Query(this, m_queryAABB); + + for (int32 i = 0; i < e_actorCount; ++i) + { + if (m_actors[i].proxyId == b2_nullNode) + { + continue; + } + + bool overlap = b2TestOverlap(m_queryAABB, m_actors[i].aabb); + B2_NOT_USED(overlap); + b2Assert(overlap == m_actors[i].overlap); + } + } + + void RayCast() + { + m_rayActor = NULL; + + b2RayCastInput input = m_rayCastInput; + + // Ray cast against the dynamic tree. + m_tree.RayCast(this, input); + + // Brute force ray cast. + Actor* bruteActor = NULL; + b2RayCastOutput bruteOutput; + for (int32 i = 0; i < e_actorCount; ++i) + { + if (m_actors[i].proxyId == b2_nullNode) + { + continue; + } + + b2RayCastOutput output; + bool hit = m_actors[i].aabb.RayCast(&output, input); + if (hit) + { + bruteActor = m_actors + i; + bruteOutput = output; + input.maxFraction = output.fraction; + } + } + + if (bruteActor != NULL) + { + b2Assert(bruteOutput.fraction == m_rayCastOutput.fraction); + } + } + + float32 m_worldExtent; + float32 m_proxyExtent; + + b2DynamicTree m_tree; + b2AABB m_queryAABB; + b2RayCastInput m_rayCastInput; + b2RayCastOutput m_rayCastOutput; + Actor* m_rayActor; + Actor m_actors[e_actorCount]; + int32 m_stepCount; + bool m_automated; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeShapes.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeShapes.h new file mode 100644 index 0000000000..7370af8d01 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeShapes.h @@ -0,0 +1,249 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef EDGE_SHAPES_H +#define EDGE_SHAPES_H + +class EdgeShapesCallback : public b2RayCastCallback +{ +public: + EdgeShapesCallback() + { + m_fixture = NULL; + } + + float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, + const b2Vec2& normal, float32 fraction) + { + m_fixture = fixture; + m_point = point; + m_normal = normal; + + return fraction; + } + + b2Fixture* m_fixture; + b2Vec2 m_point; + b2Vec2 m_normal; +}; + +class EdgeShapes : public Test +{ +public: + + enum + { + e_maxBodies = 256 + }; + + EdgeShapes() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + float32 x1 = -20.0f; + float32 y1 = 2.0f * cosf(x1 / 10.0f * b2_pi); + for (int32 i = 0; i < 80; ++i) + { + float32 x2 = x1 + 0.5f; + float32 y2 = 2.0f * cosf(x2 / 10.0f * b2_pi); + + b2EdgeShape shape; + shape.Set(b2Vec2(x1, y1), b2Vec2(x2, y2)); + ground->CreateFixture(&shape, 0.0f); + + x1 = x2; + y1 = y2; + } + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float32 w = 1.0f; + float32 b = w / (2.0f + b2Sqrt(2.0f)); + float32 s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + + m_angle = 0.0f; + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + + float32 x = RandomFloat(-10.0f, 10.0f); + float32 y = RandomFloat(10.0f, 20.0f); + bd.position.Set(x, y); + bd.angle = RandomFloat(-b2_pi, b2_pi); + bd.type = b2_dynamicBody; + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.friction = 0.3f; + fd.density = 20.0f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.friction = 0.3f; + fd.density = 20.0f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < e_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case '1': + case '2': + case '3': + case '4': + case '5': + Create(key - '1'); + break; + + case 'd': + DestroyBody(); + break; + } + } + + void Step(Settings* settings) + { + bool advanceRay = settings->pause == 0 || settings->singleStep; + + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff"); + m_textLine += 15; + + float32 L = 25.0f; + b2Vec2 point1(0.0f, 10.0f); + b2Vec2 d(L * cosf(m_angle), -L * b2Abs(sinf(m_angle))); + b2Vec2 point2 = point1 + d; + + EdgeShapesCallback callback; + + m_world->RayCast(&callback, point1, point2); + + if (callback.m_fixture) + { + m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + + m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + + if (advanceRay) + { + m_angle += 0.25f * b2_pi / 180.0f; + } + } + + static Test* Create() + { + return new EdgeShapes; + } + + int32 m_bodyIndex; + b2Body* m_bodies[e_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; + + float32 m_angle; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeTest.h new file mode 100644 index 0000000000..8bd307c549 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/EdgeTest.h @@ -0,0 +1,109 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef EDGE_TEST_H +#define EDGE_TEST_H + +class EdgeTest : public Test +{ +public: + + EdgeTest() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2Vec2 v1(-10.0f, 0.0f), v2(-7.0f, -2.0f), v3(-4.0f, 0.0f); + b2Vec2 v4(0.0f, 0.0f), v5(4.0f, 0.0f), v6(7.0f, 2.0f), v7(10.0f, 0.0f); + + b2EdgeShape shape; + + shape.Set(v1, v2); + shape.m_hasVertex3 = true; + shape.m_vertex3 = v3; + ground->CreateFixture(&shape, 0.0f); + + shape.Set(v2, v3); + shape.m_hasVertex0 = true; + shape.m_hasVertex3 = true; + shape.m_vertex0 = v1; + shape.m_vertex3 = v4; + ground->CreateFixture(&shape, 0.0f); + + shape.Set(v3, v4); + shape.m_hasVertex0 = true; + shape.m_hasVertex3 = true; + shape.m_vertex0 = v2; + shape.m_vertex3 = v5; + ground->CreateFixture(&shape, 0.0f); + + shape.Set(v4, v5); + shape.m_hasVertex0 = true; + shape.m_hasVertex3 = true; + shape.m_vertex0 = v3; + shape.m_vertex3 = v6; + ground->CreateFixture(&shape, 0.0f); + + shape.Set(v5, v6); + shape.m_hasVertex0 = true; + shape.m_hasVertex3 = true; + shape.m_vertex0 = v4; + shape.m_vertex3 = v7; + ground->CreateFixture(&shape, 0.0f); + + shape.Set(v6, v7); + shape.m_hasVertex0 = true; + shape.m_vertex0 = v5; + ground->CreateFixture(&shape, 0.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-0.5f, 0.6f); + bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.5f; + + body->CreateFixture(&shape, 1.0f); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(1.0f, 0.6f); + bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + body->CreateFixture(&shape, 1.0f); + } + } + + static Test* Create() + { + return new EdgeTest; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Gears.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Gears.h new file mode 100644 index 0000000000..7dab401302 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Gears.h @@ -0,0 +1,187 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef GEARS_H +#define GEARS_H + +class Gears : public Test +{ +public: + Gears() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Gears co + { + b2CircleShape circle1; + circle1.m_radius = 1.0f; + + b2PolygonShape box; + box.SetAsBox(0.5f, 5.0f); + + b2CircleShape circle2; + circle2.m_radius = 2.0f; + + b2BodyDef bd1; + bd1.type = b2_staticBody; + bd1.position.Set(10.0f, 9.0f); + b2Body* body1 = m_world->CreateBody(&bd1); + body1->CreateFixture(&circle1, 0.0f); + + b2BodyDef bd2; + bd2.type = b2_dynamicBody; + bd2.position.Set(10.0f, 8.0f); + b2Body* body2 = m_world->CreateBody(&bd2); + body2->CreateFixture(&box, 5.0f); + + b2BodyDef bd3; + bd3.type = b2_dynamicBody; + bd3.position.Set(10.0f, 6.0f); + b2Body* body3 = m_world->CreateBody(&bd3); + body3->CreateFixture(&circle2, 5.0f); + + b2RevoluteJointDef jd1; + jd1.Initialize(body2, body1, bd1.position); + b2Joint* joint1 = m_world->CreateJoint(&jd1); + + b2RevoluteJointDef jd2; + jd2.Initialize(body2, body3, bd3.position); + b2Joint* joint2 = m_world->CreateJoint(&jd2); + + b2GearJointDef jd4; + jd4.bodyA = body1; + jd4.bodyB = body3; + jd4.joint1 = joint1; + jd4.joint2 = joint2; + jd4.ratio = circle2.m_radius / circle1.m_radius; + m_world->CreateJoint(&jd4); + } + + { + b2CircleShape circle1; + circle1.m_radius = 1.0f; + + b2CircleShape circle2; + circle2.m_radius = 2.0f; + + b2PolygonShape box; + box.SetAsBox(0.5f, 5.0f); + + b2BodyDef bd1; + bd1.type = b2_dynamicBody; + bd1.position.Set(-3.0f, 12.0f); + b2Body* body1 = m_world->CreateBody(&bd1); + body1->CreateFixture(&circle1, 5.0f); + + b2RevoluteJointDef jd1; + jd1.bodyA = ground; + jd1.bodyB = body1; + jd1.localAnchorA = ground->GetLocalPoint(bd1.position); + jd1.localAnchorB = body1->GetLocalPoint(bd1.position); + jd1.referenceAngle = body1->GetAngle() - ground->GetAngle(); + m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd1); + + b2BodyDef bd2; + bd2.type = b2_dynamicBody; + bd2.position.Set(0.0f, 12.0f); + b2Body* body2 = m_world->CreateBody(&bd2); + body2->CreateFixture(&circle2, 5.0f); + + b2RevoluteJointDef jd2; + jd2.Initialize(ground, body2, bd2.position); + m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd2); + + b2BodyDef bd3; + bd3.type = b2_dynamicBody; + bd3.position.Set(2.5f, 12.0f); + b2Body* body3 = m_world->CreateBody(&bd3); + body3->CreateFixture(&box, 5.0f); + + b2PrismaticJointDef jd3; + jd3.Initialize(ground, body3, bd3.position, b2Vec2(0.0f, 1.0f)); + jd3.lowerTranslation = -5.0f; + jd3.upperTranslation = 5.0f; + jd3.enableLimit = true; + + m_joint3 = (b2PrismaticJoint*)m_world->CreateJoint(&jd3); + + b2GearJointDef jd4; + jd4.bodyA = body1; + jd4.bodyB = body2; + jd4.joint1 = m_joint1; + jd4.joint2 = m_joint2; + jd4.ratio = circle2.m_radius / circle1.m_radius; + m_joint4 = (b2GearJoint*)m_world->CreateJoint(&jd4); + + b2GearJointDef jd5; + jd5.bodyA = body2; + jd5.bodyB = body3; + jd5.joint1 = m_joint2; + jd5.joint2 = m_joint3; + jd5.ratio = -1.0f / circle2.m_radius; + m_joint5 = (b2GearJoint*)m_world->CreateJoint(&jd5); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 0: + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + float32 ratio, value; + + ratio = m_joint4->GetRatio(); + value = m_joint1->GetJointAngle() + ratio * m_joint2->GetJointAngle(); + m_debugDraw.DrawString(5, m_textLine, "theta1 + %4.2f * theta2 = %4.2f", (float) ratio, (float) value); + m_textLine += 15; + + ratio = m_joint5->GetRatio(); + value = m_joint2->GetJointAngle() + ratio * m_joint3->GetJointTranslation(); + m_debugDraw.DrawString(5, m_textLine, "theta2 + %4.2f * delta = %4.2f", (float) ratio, (float) value); + m_textLine += 15; + } + + static Test* Create() + { + return new Gears; + } + + b2RevoluteJoint* m_joint1; + b2RevoluteJoint* m_joint2; + b2PrismaticJoint* m_joint3; + b2GearJoint* m_joint4; + b2GearJoint* m_joint5; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/OneSidedPlatform.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/OneSidedPlatform.h new file mode 100644 index 0000000000..99ce480896 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/OneSidedPlatform.h @@ -0,0 +1,120 @@ +/* +* Copyright (c) 2008-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef ONE_SIDED_PLATFORM_H +#define ONE_SIDED_PLATFORM_H + +class OneSidedPlatform : public Test +{ +public: + + enum State + { + e_unknown, + e_above, + e_below + }; + + OneSidedPlatform() + { + // Ground + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Platform + { + b2BodyDef bd; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(3.0f, 0.5f); + m_platform = body->CreateFixture(&shape, 0.0f); + + m_bottom = 10.0f - 0.5f; + m_top = 10.0f + 0.5f; + } + + // Actor + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 12.0f); + b2Body* body = m_world->CreateBody(&bd); + + m_radius = 0.5f; + b2CircleShape shape; + shape.m_radius = m_radius; + m_character = body->CreateFixture(&shape, 20.0f); + + body->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + + m_state = e_unknown; + } + } + + void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) + { + Test::PreSolve(contact, oldManifold); + + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA != m_platform && fixtureA != m_character) + { + return; + } + + if (fixtureB != m_platform && fixtureB != m_character) + { + return; + } + + b2Vec2 position = m_character->GetBody()->GetPosition(); + + if (position.y < m_top + m_radius - 3.0f * b2_linearSlop) + { + contact->SetEnabled(false); + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); + m_textLine += 15; + } + + static Test* Create() + { + return new OneSidedPlatform; + } + + float32 m_radius, m_top, m_bottom; + State m_state; + b2Fixture* m_platform; + b2Fixture* m_character; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pinball.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pinball.h new file mode 100644 index 0000000000..2be4389b89 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pinball.h @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef PINBALL_H +#define PINBALL_H + +/// This tests bullet collision and provides an example of a gameplay scenario. +/// This also uses a loop shape. +class Pinball : public Test +{ +public: + Pinball() + { + // Ground body + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2Vec2 vs[5]; + vs[0].Set(0.0f, -2.0f); + vs[1].Set(8.0f, 6.0f); + vs[2].Set(8.0f, 20.0f); + vs[3].Set(-8.0f, 20.0f); + vs[4].Set(-8.0f, 6.0f); + + b2ChainShape loop; + loop.CreateLoop(vs, 5); + b2FixtureDef fd; + fd.shape = &loop; + fd.density = 0.0f; + ground->CreateFixture(&fd); + } + + // Flippers + { + b2Vec2 p1(-2.0f, 0.0f), p2(2.0f, 0.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position = p1; + b2Body* leftFlipper = m_world->CreateBody(&bd); + + bd.position = p2; + b2Body* rightFlipper = m_world->CreateBody(&bd); + + b2PolygonShape box; + box.SetAsBox(1.75f, 0.1f); + + b2FixtureDef fd; + fd.shape = &box; + fd.density = 1.0f; + + leftFlipper->CreateFixture(&fd); + rightFlipper->CreateFixture(&fd); + + b2RevoluteJointDef jd; + jd.bodyA = ground; + jd.localAnchorB.SetZero(); + jd.enableMotor = true; + jd.maxMotorTorque = 1000.0f; + jd.enableLimit = true; + + jd.motorSpeed = 0.0f; + jd.localAnchorA = p1; + jd.bodyB = leftFlipper; + jd.lowerAngle = -30.0f * b2_pi / 180.0f; + jd.upperAngle = 5.0f * b2_pi / 180.0f; + m_leftJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + + jd.motorSpeed = 0.0f; + jd.localAnchorA = p2; + jd.bodyB = rightFlipper; + jd.lowerAngle = -5.0f * b2_pi / 180.0f; + jd.upperAngle = 30.0f * b2_pi / 180.0f; + m_rightJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + // Circle character + { + b2BodyDef bd; + bd.position.Set(1.0f, 15.0f); + bd.type = b2_dynamicBody; + bd.bullet = true; + + m_ball = m_world->CreateBody(&bd); + + b2CircleShape shape; + shape.m_radius = 0.2f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + m_ball->CreateFixture(&fd); + } + + m_button = false; + } + + void Step() + { + if (m_button) + { + m_leftJoint->SetMotorSpeed(20.0f); + m_rightJoint->SetMotorSpeed(-20.0f); + } + else + { + m_leftJoint->SetMotorSpeed(-10.0f); + m_rightJoint->SetMotorSpeed(10.0f); + } + +// Test::Step(settings); +// +// m_debugDraw.DrawString(5, m_textLine, "Press 'a' to control the flippers"); +// m_textLine += 15; + + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + case 'A': + m_button = true; + break; + } + } + + void KeyboardUp(unsigned char key) + { + switch (key) + { + case 'a': + case 'A': + m_button = false; + break; + } + } + + static Test* Create() + { + return new Pinball; + } + + b2RevoluteJoint* m_leftJoint; + b2RevoluteJoint* m_rightJoint; + b2Body* m_ball; + bool m_button; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyCollision.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyCollision.h new file mode 100644 index 0000000000..5a3dda4b93 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyCollision.h @@ -0,0 +1,122 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef POLYCOLLISION_H +#define POLYCOLLISION_H + +class PolyCollision : public Test +{ +public: + PolyCollision() + { + { + m_polygonA.SetAsBox(0.2f, 0.4f); + m_transformA.Set(b2Vec2(0.0f, 0.0f), 0.0f); + } + + { + m_polygonB.SetAsBox(0.5f, 0.5f); + m_positionB.Set(19.345284f, 1.5632932f); + m_angleB = 1.9160721f; + m_transformB.Set(m_positionB, m_angleB); + } + } + + static Test* Create() + { + return new PolyCollision; + } + + void Step(Settings* settings) + { + B2_NOT_USED(settings); + + b2Manifold manifold; + b2CollidePolygons(&manifold, &m_polygonA, m_transformA, &m_polygonB, m_transformB); + + b2WorldManifold worldManifold; + worldManifold.Initialize(&manifold, m_transformA, m_polygonA.m_radius, m_transformB, m_polygonB.m_radius); + + m_debugDraw.DrawString(5, m_textLine, "point count = %d", manifold.pointCount); + m_textLine += 15; + + { + b2Color color(0.9f, 0.9f, 0.9f); + b2Vec2 v[b2_maxPolygonVertices]; + for (int32 i = 0; i < m_polygonA.m_vertexCount; ++i) + { + v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); + } + m_debugDraw.DrawPolygon(v, m_polygonA.m_vertexCount, color); + + for (int32 i = 0; i < m_polygonB.m_vertexCount; ++i) + { + v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(v, m_polygonB.m_vertexCount, color); + } + + for (int32 i = 0; i < manifold.pointCount; ++i) + { + m_debugDraw.DrawPoint(worldManifold.points[i], 4.0f, b2Color(0.9f, 0.3f, 0.3f)); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + m_positionB.x -= 0.1f; + break; + + case 'd': + m_positionB.x += 0.1f; + break; + + case 's': + m_positionB.y -= 0.1f; + break; + + case 'w': + m_positionB.y += 0.1f; + break; + + case 'q': + m_angleB += 0.1f * b2_pi; + break; + + case 'e': + m_angleB -= 0.1f * b2_pi; + break; + } + + m_transformB.Set(m_positionB, m_angleB); + } + + b2PolygonShape m_polygonA; + b2PolygonShape m_polygonB; + + b2Transform m_transformA; + b2Transform m_transformB; + + b2Vec2 m_positionB; + float32 m_angleB; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyShapes.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyShapes.h new file mode 100644 index 0000000000..8353c1b13c --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/PolyShapes.h @@ -0,0 +1,295 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef POLY_SHAPES_H +#define POLY_SHAPES_H + +/// This tests stacking. It also shows how to use b2World::Query +/// and b2TestOverlap. + +const int32 k_maxBodies = 256; + +/// This callback is called by b2World::QueryAABB. We find all the fixtures +/// that overlap an AABB. Of those, we use b2TestOverlap to determine which fixtures +/// overlap a circle. Up to 4 overlapped fixtures will be highlighted with a yellow border. +class PolyShapesCallback : public b2QueryCallback +{ +public: + + enum + { + e_maxCount = 4 + }; + + PolyShapesCallback() + { + m_count = 0; + } + + void DrawFixture(b2Fixture* fixture) + { + b2Color color(0.95f, 0.95f, 0.6f); + const b2Transform& xf = fixture->GetBody()->GetTransform(); + + switch (fixture->GetType()) + { + case b2Shape::e_circle: + { + b2CircleShape* circle = (b2CircleShape*)fixture->GetShape(); + + b2Vec2 center = b2Mul(xf, circle->m_p); + float32 radius = circle->m_radius; + + m_debugDraw->DrawCircle(center, radius, color); + } + break; + + case b2Shape::e_polygon: + { + b2PolygonShape* poly = (b2PolygonShape*)fixture->GetShape(); + int32 vertexCount = poly->m_vertexCount; + b2Assert(vertexCount <= b2_maxPolygonVertices); + b2Vec2 vertices[b2_maxPolygonVertices]; + + for (int32 i = 0; i < vertexCount; ++i) + { + vertices[i] = b2Mul(xf, poly->m_vertices[i]); + } + + m_debugDraw->DrawPolygon(vertices, vertexCount, color); + } + break; + + default: + break; + } + } + + /// Called for each fixture found in the query AABB. + /// @return false to terminate the query. + bool ReportFixture(b2Fixture* fixture) + { + if (m_count == e_maxCount) + { + return false; + } + + b2Body* body = fixture->GetBody(); + b2Shape* shape = fixture->GetShape(); + + bool overlap = b2TestOverlap(shape, 0, &m_circle, 0, body->GetTransform(), m_transform); + + if (overlap) + { + DrawFixture(fixture); + ++m_count; + } + + return true; + } + + b2CircleShape m_circle; + b2Transform m_transform; + b2Draw* m_debugDraw; + int32 m_count; +}; + +class PolyShapes : public Test +{ +public: + PolyShapes() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float32 w = 1.0f; + float32 b = w / (2.0f + b2Sqrt(2.0f)); + float32 s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + float32 x = RandomFloat(-2.0f, 2.0f); + bd.position.Set(x, 10.0f); + bd.angle = RandomFloat(-b2_pi, b2_pi); + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.density = 1.0f; + fd.friction = 0.3f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.density = 1.0f; + fd.friction = 0.3f; + + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % k_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < k_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case '1': + case '2': + case '3': + case '4': + case '5': + Create(key - '1'); + break; + + case 'a': + for (int32 i = 0; i < k_maxBodies; i += 2) + { + if (m_bodies[i]) + { + bool active = m_bodies[i]->IsActive(); + m_bodies[i]->SetActive(!active); + } + } + break; + + case 'd': + DestroyBody(); + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + PolyShapesCallback callback; + callback.m_circle.m_radius = 2.0f; + callback.m_circle.m_p.Set(0.0f, 1.1f); + callback.m_transform.SetIdentity(); + callback.m_debugDraw = &m_debugDraw; + + b2AABB aabb; + callback.m_circle.ComputeAABB(&aabb, callback.m_transform, 0); + + m_world->QueryAABB(&callback, aabb); + + b2Color color(0.4f, 0.7f, 0.8f); + m_debugDraw.DrawCircle(callback.m_circle.m_p, callback.m_circle.m_radius, color); + + m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff"); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Press 'a' to (de)activate some bodies"); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Press 'd' to destroy a body"); + m_textLine += 15; + } + + static Test* Create() + { + return new PolyShapes; + } + + int32 m_bodyIndex; + b2Body* m_bodies[k_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Prismatic.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Prismatic.h new file mode 100644 index 0000000000..963e4e34cc --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Prismatic.h @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef PRISMATIC_H +#define PRISMATIC_H + +// The motor in this test gets smoother with higher velocity iterations. +class Prismatic : public Test +{ +public: + Prismatic() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(2.0f, 0.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f, 10.0f); + bd.angle = 0.5f * b2_pi; + bd.allowSleep = false; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + b2PrismaticJointDef pjd; + + // Bouncy limit + b2Vec2 axis(2.0f, 1.0f); + axis.Normalize(); + pjd.Initialize(ground, body, b2Vec2(0.0f, 0.0f), axis); + + // Non-bouncy limit + //pjd.Initialize(ground, body, b2Vec2(-10.0f, 10.0f), b2Vec2(1.0f, 0.0f)); + + pjd.motorSpeed = 10.0f; + pjd.maxMotorForce = 10000.0f; + pjd.enableMotor = true; + pjd.lowerTranslation = 0.0f; + pjd.upperTranslation = 20.0f; + pjd.enableLimit = true; + + m_joint = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'l': + m_joint->EnableLimit(!m_joint->IsLimitEnabled()); + break; + + case 'm': + m_joint->EnableMotor(!m_joint->IsMotorEnabled()); + break; + + case 's': + m_joint->SetMotorSpeed(-m_joint->GetMotorSpeed()); + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Keys: (l) limits, (m) motors, (s) speed"); + m_textLine += 15; + float32 force = m_joint->GetMotorForce(settings->hz); + m_debugDraw.DrawString(5, m_textLine, "Motor Force = %4.0f", (float) force); + m_textLine += 15; + } + + static Test* Create() + { + return new Prismatic; + } + + b2PrismaticJoint* m_joint; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pulleys.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pulleys.h new file mode 100644 index 0000000000..030b54ee54 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pulleys.h @@ -0,0 +1,106 @@ +/* +* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef PULLEYS_H +#define PULLEYS_H + +class Pulleys : public Test +{ +public: + Pulleys() + { + float32 y = 16.0f; + float32 L = 12.0f; + float32 a = 1.0f; + float32 b = 2.0f; + + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape edge; + edge.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + //ground->CreateFixture(&shape, 0.0f); + + b2CircleShape circle; + circle.m_radius = 2.0f; + + circle.m_p.Set(-10.0f, y + b + L); + ground->CreateFixture(&circle, 0.0f); + + circle.m_p.Set(10.0f, y + b + L); + ground->CreateFixture(&circle, 0.0f); + } + + { + + b2PolygonShape shape; + shape.SetAsBox(a, b); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + //bd.fixedRotation = true; + bd.position.Set(-10.0f, y); + b2Body* body1 = m_world->CreateBody(&bd); + body1->CreateFixture(&shape, 5.0f); + + bd.position.Set(10.0f, y); + b2Body* body2 = m_world->CreateBody(&bd); + body2->CreateFixture(&shape, 5.0f); + + b2PulleyJointDef pulleyDef; + b2Vec2 anchor1(-10.0f, y + b); + b2Vec2 anchor2(10.0f, y + b); + b2Vec2 groundAnchor1(-10.0f, y + b + L); + b2Vec2 groundAnchor2(10.0f, y + b + L); + pulleyDef.Initialize(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, 1.5f); + + m_joint1 = (b2PulleyJoint*)m_world->CreateJoint(&pulleyDef); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 0: + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + float32 ratio = m_joint1->GetRatio(); + float32 L = m_joint1->GetLengthA() + ratio * m_joint1->GetLengthB(); + m_debugDraw.DrawString(5, m_textLine, "L1 + %4.2f * L2 = %4.2f", (float) ratio, (float) L); + m_textLine += 15; + } + + static Test* Create() + { + return new Pulleys; + } + + b2PulleyJoint* m_joint1; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pyramid.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pyramid.h new file mode 100644 index 0000000000..7f3d08f46f --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Pyramid.h @@ -0,0 +1,89 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef PYRAMID_H +#define PYRAMID_H + +class Pyramid : public Test +{ +public: + enum + { + e_count = 20 + }; + + Pyramid() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + float32 a = 0.5f; + b2PolygonShape shape; + shape.SetAsBox(a, a); + + b2Vec2 x(-7.0f, 0.75f); + b2Vec2 y; + b2Vec2 deltaX(0.5625f, 1.25f); + b2Vec2 deltaY(1.125f, 0.0f); + + for (int32 i = 0; i < e_count; ++i) + { + y = x; + + for (int32 j = i; j < e_count; ++j) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = y; + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + y += deltaY; + } + + x += deltaX; + } + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; + + //if (m_stepCount == 400) + //{ + // tree->RebuildBottomUp(); + //} + } + + static Test* Create() + { + return new Pyramid; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RayCast.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RayCast.h new file mode 100644 index 0000000000..ef750cb6f8 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RayCast.h @@ -0,0 +1,440 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef RAY_CAST_H +#define RAY_CAST_H + +// This test demonstrates how to use the world ray-cast feature. +// NOTE: we are intentionally filtering one of the polygons, therefore +// the ray will always miss one type of polygon. + +// This callback finds the closest hit. Polygon 0 is filtered. +class RayCastClosestCallback : public b2RayCastCallback +{ +public: + RayCastClosestCallback() + { + m_hit = false; + } + + float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, + const b2Vec2& normal, float32 fraction) + { + b2Body* body = fixture->GetBody(); + void* userData = body->GetUserData(); + if (userData) + { + int32 index = *(int32*)userData; + if (index == 0) + { + // filter + return -1.0f; + } + } + + m_hit = true; + m_point = point; + m_normal = normal; + return fraction; + } + + bool m_hit; + b2Vec2 m_point; + b2Vec2 m_normal; +}; + +// This callback finds any hit. Polygon 0 is filtered. +class RayCastAnyCallback : public b2RayCastCallback +{ +public: + RayCastAnyCallback() + { + m_hit = false; + } + + float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, + const b2Vec2& normal, float32 fraction) + { + b2Body* body = fixture->GetBody(); + void* userData = body->GetUserData(); + if (userData) + { + int32 index = *(int32*)userData; + if (index == 0) + { + // filter + return -1.0f; + } + } + + m_hit = true; + m_point = point; + m_normal = normal; + return 0.0f; + } + + bool m_hit; + b2Vec2 m_point; + b2Vec2 m_normal; +}; + +// This ray cast collects multiple hits along the ray. Polygon 0 is filtered. +class RayCastMultipleCallback : public b2RayCastCallback +{ +public: + enum + { + e_maxCount = 3 + }; + + RayCastMultipleCallback() + { + m_count = 0; + } + + float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, + const b2Vec2& normal, float32 fraction) + { + b2Body* body = fixture->GetBody(); + void* userData = body->GetUserData(); + if (userData) + { + int32 index = *(int32*)userData; + if (index == 0) + { + // filter + return -1.0f; + } + } + + b2Assert(m_count < e_maxCount); + + m_points[m_count] = point; + m_normals[m_count] = normal; + ++m_count; + + if (m_count == e_maxCount) + { + return 0.0f; + } + + return 1.0f; + } + + b2Vec2 m_points[e_maxCount]; + b2Vec2 m_normals[e_maxCount]; + int32 m_count; +}; + + +class RayCast : public Test +{ +public: + + enum + { + e_maxBodies = 256 + }; + + enum Mode + { + e_closest, + e_any, + e_multiple + }; + + RayCast() + { + // Ground body + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.5f, 0.0f); + vertices[1].Set(0.5f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[0].Set(vertices, 3); + } + + { + b2Vec2 vertices[3]; + vertices[0].Set(-0.1f, 0.0f); + vertices[1].Set(0.1f, 0.0f); + vertices[2].Set(0.0f, 1.5f); + m_polygons[1].Set(vertices, 3); + } + + { + float32 w = 1.0f; + float32 b = w / (2.0f + b2Sqrt(2.0f)); + float32 s = b2Sqrt(2.0f) * b; + + b2Vec2 vertices[8]; + vertices[0].Set(0.5f * s, 0.0f); + vertices[1].Set(0.5f * w, b); + vertices[2].Set(0.5f * w, b + s); + vertices[3].Set(0.5f * s, w); + vertices[4].Set(-0.5f * s, w); + vertices[5].Set(-0.5f * w, b + s); + vertices[6].Set(-0.5f * w, b); + vertices[7].Set(-0.5f * s, 0.0f); + + m_polygons[2].Set(vertices, 8); + } + + { + m_polygons[3].SetAsBox(0.5f, 0.5f); + } + + { + m_circle.m_radius = 0.5f; + } + + m_bodyIndex = 0; + memset(m_bodies, 0, sizeof(m_bodies)); + + m_angle = 0.0f; + + m_mode = e_closest; + } + + void Create(int32 index) + { + if (m_bodies[m_bodyIndex] != NULL) + { + m_world->DestroyBody(m_bodies[m_bodyIndex]); + m_bodies[m_bodyIndex] = NULL; + } + + b2BodyDef bd; + + float32 x = RandomFloat(-10.0f, 10.0f); + float32 y = RandomFloat(0.0f, 20.0f); + bd.position.Set(x, y); + bd.angle = RandomFloat(-b2_pi, b2_pi); + + m_userData[m_bodyIndex] = index; + bd.userData = m_userData + m_bodyIndex; + + if (index == 4) + { + bd.angularDamping = 0.02f; + } + + m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); + + if (index < 4) + { + b2FixtureDef fd; + fd.shape = m_polygons + index; + fd.friction = 0.3f; + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + else + { + b2FixtureDef fd; + fd.shape = &m_circle; + fd.friction = 0.3f; + + m_bodies[m_bodyIndex]->CreateFixture(&fd); + } + + m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; + } + + void DestroyBody() + { + for (int32 i = 0; i < e_maxBodies; ++i) + { + if (m_bodies[i] != NULL) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + return; + } + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case '1': + case '2': + case '3': + case '4': + case '5': + Create(key - '1'); + break; + + case 'd': + DestroyBody(); + break; + + case 'm': + if (m_mode == e_closest) + { + m_mode = e_any; + } + else if (m_mode == e_any) + { + m_mode = e_multiple; + } + else if (m_mode == e_multiple) + { + m_mode = e_closest; + } + } + } + + void Step(Settings* settings) + { + bool advanceRay = settings->pause == 0 || settings->singleStep; + + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff, m to change the mode"); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Mode = %d", m_mode); + m_textLine += 15; + + float32 L = 11.0f; + b2Vec2 point1(0.0f, 10.0f); + b2Vec2 d(L * cosf(m_angle), L * sinf(m_angle)); + b2Vec2 point2 = point1 + d; + + if (m_mode == e_closest) + { + RayCastClosestCallback callback; + m_world->RayCast(&callback, point1, point2); + + if (callback.m_hit) + { + m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + } + else if (m_mode == e_any) + { + RayCastAnyCallback callback; + m_world->RayCast(&callback, point1, point2); + + if (callback.m_hit) + { + m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; + m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); + } + else + { + m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + } + } + else if (m_mode == e_multiple) + { + RayCastMultipleCallback callback; + m_world->RayCast(&callback, point1, point2); + m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); + + for (int32 i = 0; i < callback.m_count; ++i) + { + b2Vec2 p = callback.m_points[i]; + b2Vec2 n = callback.m_normals[i]; + m_debugDraw.DrawPoint(p, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); + m_debugDraw.DrawSegment(point1, p, b2Color(0.8f, 0.8f, 0.8f)); + b2Vec2 head = p + 0.5f * n; + m_debugDraw.DrawSegment(p, head, b2Color(0.9f, 0.9f, 0.4f)); + } + } + + if (advanceRay) + { + m_angle += 0.25f * b2_pi / 180.0f; + } + +#if 0 + // This case was failing. + { + b2Vec2 vertices[4]; + //vertices[0].Set(-22.875f, -3.0f); + //vertices[1].Set(22.875f, -3.0f); + //vertices[2].Set(22.875f, 3.0f); + //vertices[3].Set(-22.875f, 3.0f); + + b2PolygonShape shape; + //shape.Set(vertices, 4); + shape.SetAsBox(22.875f, 3.0f); + + b2RayCastInput input; + input.p1.Set(10.2725f,1.71372f); + input.p2.Set(10.2353f,2.21807f); + //input.maxFraction = 0.567623f; + input.maxFraction = 0.56762173f; + + b2Transform xf; + xf.SetIdentity(); + xf.position.Set(23.0f, 5.0f); + + b2RayCastOutput output; + bool hit; + hit = shape.RayCast(&output, input, xf); + hit = false; + + b2Color color(1.0f, 1.0f, 1.0f); + b2Vec2 vs[4]; + for (int32 i = 0; i < 4; ++i) + { + vs[i] = b2Mul(xf, shape.m_vertices[i]); + } + + m_debugDraw.DrawPolygon(vs, 4, color); + m_debugDraw.DrawSegment(input.p1, input.p2, color); + } +#endif + } + + static Test* Create() + { + return new RayCast; + } + + int32 m_bodyIndex; + b2Body* m_bodies[e_maxBodies]; + int32 m_userData[e_maxBodies]; + b2PolygonShape m_polygons[4]; + b2CircleShape m_circle; + + float32 m_angle; + + Mode m_mode; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Revolute.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Revolute.h new file mode 100644 index 0000000000..186e3e72da --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Revolute.h @@ -0,0 +1,166 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef REVOLUTE_H +#define REVOLUTE_H + +class Revolute : public Test +{ +public: + Revolute() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + + b2FixtureDef fd; + fd.shape = &shape; + //fd.filter.categoryBits = 2; + + ground->CreateFixture(&fd); + } + + { + b2CircleShape shape; + shape.m_radius = 0.5f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + b2RevoluteJointDef rjd; + + bd.position.Set(-10.0f, 20.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + + float32 w = 100.0f; + body->SetAngularVelocity(w); + body->SetLinearVelocity(b2Vec2(-8.0f * w, 0.0f)); + + rjd.Initialize(ground, body, b2Vec2(-10.0f, 12.0f)); + rjd.motorSpeed = 1.0f * b2_pi; + rjd.maxMotorTorque = 10000.0f; + rjd.enableMotor = false; + rjd.lowerAngle = -0.25f * b2_pi; + rjd.upperAngle = 0.5f * b2_pi; + rjd.enableLimit = true; + rjd.collideConnected = true; + + m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); + } + + { + b2CircleShape circle_shape; + circle_shape.m_radius = 3.0f; + + b2BodyDef circle_bd; + circle_bd.type = b2_dynamicBody; + circle_bd.position.Set(5.0f, 30.0f); + + b2FixtureDef fd; + fd.density = 5.0f; + fd.filter.maskBits = 1; + fd.shape = &circle_shape; + + m_ball = m_world->CreateBody(&circle_bd); + m_ball->CreateFixture(&fd); + + b2PolygonShape polygon_shape; + polygon_shape.SetAsBox(10.0f, 0.2f, b2Vec2 (-10.0f, 0.0f), 0.0f); + + b2BodyDef polygon_bd; + polygon_bd.position.Set(20.0f, 10.0f); + polygon_bd.type = b2_dynamicBody; + polygon_bd.bullet = true; + b2Body* polygon_body = m_world->CreateBody(&polygon_bd); + polygon_body->CreateFixture(&polygon_shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(ground, polygon_body, b2Vec2(20.0f, 10.0f)); + rjd.lowerAngle = -0.25f * b2_pi; + rjd.upperAngle = 0.0f * b2_pi; + rjd.enableLimit = true; + m_world->CreateJoint(&rjd); + } + + // Tests mass computation of a small object far from the origin + { + b2BodyDef bodyDef; + bodyDef.type = b2_dynamicBody; + b2Body* body = m_world->CreateBody(&bodyDef); + + b2PolygonShape polyShape; + b2Vec2 verts[3]; + verts[0].Set( 17.63f, 36.31f ); + verts[1].Set( 17.52f, 36.69f ); + verts[2].Set( 17.19f, 36.36f ); + polyShape.Set(verts, 3); + + b2FixtureDef polyFixtureDef; + polyFixtureDef.shape = &polyShape; + polyFixtureDef.density = 1; + + body->CreateFixture(&polyFixtureDef); //assertion hits inside here + } + + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'l': + m_joint->EnableLimit(!m_joint->IsLimitEnabled()); + break; + + case 'm': + m_joint->EnableMotor(!m_joint->IsMotorEnabled()); + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Keys: (l) limits, (m) motor"); + m_textLine += 15; + + //if (m_stepCount == 360) + //{ + // m_ball->SetTransform(b2Vec2(0.0f, 0.5f), 0.0f); + //} + + //float32 torque1 = m_joint1->GetMotorTorque(); + //m_debugDraw.DrawString(5, m_textLine, "Motor Torque = %4.0f, %4.0f : Motor Force = %4.0f", (float) torque1, (float) torque2, (float) force3); + //m_textLine += 15; + } + + static Test* Create() + { + return new Revolute; + } + + b2Body* m_ball; + b2RevoluteJoint* m_joint; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Rope.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Rope.h new file mode 100644 index 0000000000..613fbe37c4 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Rope.h @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2011 Erin Catto http://box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef ROPE_H +#define ROPE_H + +/// +class Rope : public Test +{ +public: + Rope() + { + const int32 N = 40; + b2Vec2 vertices[N]; + float32 masses[N]; + + for (int32 i = 0; i < N; ++i) + { + vertices[i].Set(0.0f, 20.0f - 0.25f * i); + masses[i] = 1.0f; + } + masses[0] = 0.0f; + masses[1] = 0.0f; + + b2RopeDef def; + def.vertices = vertices; + def.count = N; + def.gravity.Set(0.0f, -10.0f); + def.masses = masses; + def.damping = 0.1f; + def.k2 = 1.0f; + def.k3 = 0.5f; + + m_rope.Initialize(&def); + + m_angle = 0.0f; + m_rope.SetAngle(m_angle); + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'q': + m_angle = b2Max(-b2_pi, m_angle - 0.05f * b2_pi); + m_rope.SetAngle(m_angle); + break; + + case 'e': + m_angle = b2Min(b2_pi, m_angle + 0.05f * b2_pi); + m_rope.SetAngle(m_angle); + break; + } + } + + void Step(Settings* settings) + { + float32 dt = settings->hz > 0.0f ? 1.0f / settings->hz : 0.0f; + + if (settings->pause == 1 && settings->singleStep == 0) + { + dt = 0.0f; + } + + m_rope.Step(dt, 1); + + Test::Step(settings); + + m_rope.Draw(&m_debugDraw); + + m_debugDraw.DrawString(5, m_textLine, "Press (q,e) to adjust target angle"); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Target angle = %g degrees", m_angle * 180.0f / b2_pi); + m_textLine += 15; + } + + static Test* Create() + { + return new Rope; + } + + b2Rope m_rope; + float32 m_angle; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RopeJoint.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RopeJoint.h new file mode 100644 index 0000000000..47191a1015 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/RopeJoint.h @@ -0,0 +1,145 @@ +/* +* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef ROPE_JOINT_H +#define ROPE_JOINT_H + +/// This test shows how a rope joint can be used to stabilize a chain of +/// bodies with a heavy payload. Notice that the rope joint just prevents +/// excessive stretching and has no other effect. +/// By disabling the rope joint you can see that the Box2D solver has trouble +/// supporting heavy bodies with light bodies. Try playing around with the +/// densities, time step, and iterations to see how they affect stability. +/// This test also shows how to use contact filtering. Filtering is configured +/// so that the payload does not collide with the chain. +class RopeJoint : public Test +{ +public: + RopeJoint() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.125f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.friction = 0.2f; + fd.filter.categoryBits = 0x0001; + fd.filter.maskBits = 0xFFFF & ~0x0002; + + b2RevoluteJointDef jd; + jd.collideConnected = false; + + const int32 N = 10; + const float32 y = 15.0f; + m_ropeDef.localAnchorA.Set(0.0f, y); + + b2Body* prevBody = ground; + for (int32 i = 0; i < N; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.5f + 1.0f * i, y); + if (i == N - 1) + { + shape.SetAsBox(1.5f, 1.5f); + fd.density = 100.0f; + fd.filter.categoryBits = 0x0002; + bd.position.Set(1.0f * i, y); + bd.angularDamping = 0.4f; + } + + b2Body* body = m_world->CreateBody(&bd); + + body->CreateFixture(&fd); + + b2Vec2 anchor(float32(i), y); + jd.Initialize(prevBody, body, anchor); + m_world->CreateJoint(&jd); + + prevBody = body; + } + + m_ropeDef.localAnchorB.SetZero(); + + float32 extraLength = 0.01f; + m_ropeDef.maxLength = N - 1.0f + extraLength; + m_ropeDef.bodyB = prevBody; + } + + { + m_ropeDef.bodyA = ground; + m_rope = m_world->CreateJoint(&m_ropeDef); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'j': + if (m_rope) + { + m_world->DestroyJoint(m_rope); + m_rope = NULL; + } + else + { + m_rope = m_world->CreateJoint(&m_ropeDef); + } + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press (j) to toggle the rope joint."); + m_textLine += 15; + if (m_rope) + { + m_debugDraw.DrawString(5, m_textLine, "Rope ON"); + } + else + { + m_debugDraw.DrawString(5, m_textLine, "Rope OFF"); + } + m_textLine += 15; + } + + static Test* Create() + { + return new RopeJoint; + } + + b2RopeJointDef m_ropeDef; + b2Joint* m_rope; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SensorTest.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SensorTest.h new file mode 100644 index 0000000000..66b5c99fd9 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SensorTest.h @@ -0,0 +1,181 @@ +/* +* Copyright (c) 2008-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SENSOR_TEST_H +#define SENSOR_TEST_H + +// This is used to test sensor shapes. +class SensorTest : public Test +{ +public: + + enum + { + e_count = 7 + }; + + SensorTest() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + { + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + +#if 0 + { + b2FixtureDef sd; + sd.SetAsBox(10.0f, 2.0f, b2Vec2(0.0f, 20.0f), 0.0f); + sd.isSensor = true; + m_sensor = ground->CreateFixture(&sd); + } +#else + { + b2CircleShape shape; + shape.m_radius = 5.0f; + shape.m_p.Set(0.0f, 10.0f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.isSensor = true; + m_sensor = ground->CreateFixture(&fd); + } +#endif + } + + { + b2CircleShape shape; + shape.m_radius = 1.0f; + + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + 3.0f * i, 20.0f); + bd.userData = m_touching + i; + + m_touching[i] = false; + m_bodies[i] = m_world->CreateBody(&bd); + + m_bodies[i]->CreateFixture(&shape, 1.0f); + } + } + } + + // Implement contact listener. + void BeginContact(b2Contact* contact) + { + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA == m_sensor) + { + void* userData = fixtureB->GetBody()->GetUserData(); + if (userData) + { + bool* touching = (bool*)userData; + *touching = true; + } + } + + if (fixtureB == m_sensor) + { + void* userData = fixtureA->GetBody()->GetUserData(); + if (userData) + { + bool* touching = (bool*)userData; + *touching = true; + } + } + } + + // Implement contact listener. + void EndContact(b2Contact* contact) + { + b2Fixture* fixtureA = contact->GetFixtureA(); + b2Fixture* fixtureB = contact->GetFixtureB(); + + if (fixtureA == m_sensor) + { + void* userData = fixtureB->GetBody()->GetUserData(); + if (userData) + { + bool* touching = (bool*)userData; + *touching = false; + } + } + + if (fixtureB == m_sensor) + { + void* userData = fixtureA->GetBody()->GetUserData(); + if (userData) + { + bool* touching = (bool*)userData; + *touching = false; + } + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + // Traverse the contact results. Apply a force on shapes + // that overlap the sensor. + for (int32 i = 0; i < e_count; ++i) + { + if (m_touching[i] == false) + { + continue; + } + + b2Body* body = m_bodies[i]; + b2Body* ground = m_sensor->GetBody(); + + b2CircleShape* circle = (b2CircleShape*)m_sensor->GetShape(); + b2Vec2 center = ground->GetWorldPoint(circle->m_p); + + b2Vec2 position = body->GetPosition(); + + b2Vec2 d = center - position; + if (d.LengthSquared() < FLT_EPSILON * FLT_EPSILON) + { + continue; + } + + d.Normalize(); + b2Vec2 F = 100.0f * d; + body->ApplyForce(F, position); + } + } + + static Test* Create() + { + return new SensorTest; + } + + b2Fixture* m_sensor; + b2Body* m_bodies[e_count]; + bool m_touching[e_count]; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ShapeEditing.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ShapeEditing.h new file mode 100644 index 0000000000..f204ace1c8 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/ShapeEditing.h @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2008-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SHAPE_EDITING_H +#define SHAPE_EDITING_H + +class ShapeEditing : public Test +{ +public: + + ShapeEditing() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + m_body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(4.0f, 4.0f, b2Vec2(0.0f, 0.0f), 0.0f); + m_fixture1 = m_body->CreateFixture(&shape, 10.0f); + + m_fixture2 = NULL; + + m_sensor = false; + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'c': + if (m_fixture2 == NULL) + { + b2CircleShape shape; + shape.m_radius = 3.0f; + shape.m_p.Set(0.5f, -4.0f); + m_fixture2 = m_body->CreateFixture(&shape, 10.0f); + m_body->SetAwake(true); + } + break; + + case 'd': + if (m_fixture2 != NULL) + { + m_body->DestroyFixture(m_fixture2); + m_fixture2 = NULL; + m_body->SetAwake(true); + } + break; + + case 's': + if (m_fixture2 != NULL) + { + m_sensor = !m_sensor; + m_fixture2->SetSensor(m_sensor); + } + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "sensor = %d", m_sensor); + m_textLine += 15; + } + + static Test* Create() + { + return new ShapeEditing; + } + + b2Body* m_body; + b2Fixture* m_fixture1; + b2Fixture* m_fixture2; + bool m_sensor; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SliderCrank.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SliderCrank.h new file mode 100644 index 0000000000..30794bfee7 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SliderCrank.h @@ -0,0 +1,156 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SLIDER_CRANK_H +#define SLIDER_CRANK_H + +// A motor driven slider crank with joint friction. + +class SliderCrank : public Test +{ +public: + SliderCrank() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2Body* prevBody = ground; + + // Define crank. + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 2.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 7.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 5.0f)); + rjd.motorSpeed = 1.0f * b2_pi; + rjd.maxMotorTorque = 10000.0f; + rjd.enableMotor = true; + m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define follower. + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 4.0f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 13.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 9.0f)); + rjd.enableMotor = false; + m_world->CreateJoint(&rjd); + + prevBody = body; + } + + // Define piston + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.fixedRotation = true; + bd.position.Set(0.0f, 17.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + + b2RevoluteJointDef rjd; + rjd.Initialize(prevBody, body, b2Vec2(0.0f, 17.0f)); + m_world->CreateJoint(&rjd); + + b2PrismaticJointDef pjd; + pjd.Initialize(ground, body, b2Vec2(0.0f, 17.0f), b2Vec2(0.0f, 1.0f)); + + pjd.maxMotorForce = 1000.0f; + pjd.enableMotor = true; + + m_joint2 = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); + } + + // Create a payload + { + b2PolygonShape shape; + shape.SetAsBox(1.5f, 1.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 23.0f); + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 2.0f); + } + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'f': + m_joint2->EnableMotor(!m_joint2->IsMotorEnabled()); + m_joint2->GetBodyB()->SetAwake(true); + break; + + case 'm': + m_joint1->EnableMotor(!m_joint1->IsMotorEnabled()); + m_joint1->GetBodyB()->SetAwake(true); + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Keys: (f) toggle friction, (m) toggle motor"); + m_textLine += 15; + float32 torque = m_joint1->GetMotorTorque(settings->hz); + m_debugDraw.DrawString(5, m_textLine, "Motor Torque = %5.0f", (float) torque); + m_textLine += 15; + } + + static Test* Create() + { + return new SliderCrank; + } + + b2RevoluteJoint* m_joint1; + b2PrismaticJoint* m_joint2; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SphereStack.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SphereStack.h new file mode 100644 index 0000000000..63ea73d129 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/SphereStack.h @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPHERE_STACK_H +#define SPHERE_STACK_H + +class SphereStack : public Test +{ +public: + + enum + { + e_count = 10 + }; + + SphereStack() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2CircleShape shape; + shape.m_radius = 1.0f; + + for (int32 i = 0; i < e_count; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0, 4.0f + 3.0f * i); + + m_bodies[i] = m_world->CreateBody(&bd); + + m_bodies[i]->CreateFixture(&shape, 1.0f); + + m_bodies[i]->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); + } + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + + //for (int32 i = 0; i < e_count; ++i) + //{ + // printf("%g ", m_bodies[i]->GetWorldCenter().y); + //} + + //for (int32 i = 0; i < e_count; ++i) + //{ + // printf("%g ", m_bodies[i]->GetLinearVelocity().y); + //} + + //printf("\n"); + } + + static Test* Create() + { + return new SphereStack; + } + + b2Body* m_bodies[e_count]; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TestEntries.cpp b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TestEntries.cpp new file mode 100644 index 0000000000..0dff9f89ab --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TestEntries.cpp @@ -0,0 +1,125 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "../Framework/Test.h" +#include "../Framework/Render.h" + +#ifdef __APPLE__ + #include +#else + #include "freeglut/freeglut.h" +#endif + +#include +using namespace std; + +#include "AddPair.h" +#include "ApplyForce.h" +#include "BodyTypes.h" +#include "Breakable.h" +#include "Bridge.h" +#include "BulletTest.h" +#include "Cantilever.h" +#include "Car.h" +#include "ContinuousTest.h" +#include "Chain.h" +#include "CharacterCollision.h" +#include "CollisionFiltering.h" +#include "CollisionProcessing.h" +#include "CompoundShapes.h" +#include "Confined.h" +#include "DistanceTest.h" +#include "Dominos.h" +#include "DumpShell.h" +#include "DynamicTreeTest.h" +#include "EdgeShapes.h" +#include "EdgeTest.h" +#include "Gears.h" +#include "OneSidedPlatform.h" +#include "Pinball.h" +#include "PolyCollision.h" +#include "PolyShapes.h" +#include "Prismatic.h" +#include "Pulleys.h" +#include "Pyramid.h" +#include "RayCast.h" +#include "Revolute.h" +//#include "Rope.h" +#include "RopeJoint.h" +#include "SensorTest.h" +#include "ShapeEditing.h" +#include "SliderCrank.h" +#include "SphereStack.h" +#include "TheoJansen.h" +#include "Tiles.h" +#include "TimeOfImpact.h" +#include "Tumbler.h" +#include "VaryingFriction.h" +#include "VaryingRestitution.h" +#include "VerticalStack.h" +#include "Web.h" + +TestEntry g_testEntries[] = +{ + {"Tumbler", Tumbler::Create}, + {"Tiles", Tiles::Create}, + {"Dump Shell", DumpShell::Create}, + {"Gears", Gears::Create}, + {"Cantilever", Cantilever::Create}, + {"Varying Restitution", VaryingRestitution::Create}, + {"Character Collision", CharacterCollision::Create}, + {"Edge Test", EdgeTest::Create}, + {"Body Types", BodyTypes::Create}, + {"Shape Editing", ShapeEditing::Create}, + {"Car", Car::Create}, + {"Apply Force", ApplyForce::Create}, + {"Prismatic", Prismatic::Create}, + {"Vertical Stack", VerticalStack::Create}, + {"SphereStack", SphereStack::Create}, + {"Revolute", Revolute::Create}, + {"Pulleys", Pulleys::Create}, + {"Polygon Shapes", PolyShapes::Create}, + //{"Rope", Rope::Create}, + {"Web", Web::Create}, + {"RopeJoint", RopeJoint::Create}, + {"One-Sided Platform", OneSidedPlatform::Create}, + {"Pinball", Pinball::Create}, + {"Bullet Test", BulletTest::Create}, + {"Continuous Test", ContinuousTest::Create}, + {"Time of Impact", TimeOfImpact::Create}, + {"Ray-Cast", RayCast::Create}, + {"Confined", Confined::Create}, + {"Pyramid", Pyramid::Create}, + {"Theo Jansen's Walker", TheoJansen::Create}, + {"Edge Shapes", EdgeShapes::Create}, + {"PolyCollision", PolyCollision::Create}, + {"Bridge", Bridge::Create}, + {"Breakable", Breakable::Create}, + {"Chain", Chain::Create}, + {"Collision Filtering", CollisionFiltering::Create}, + {"Collision Processing", CollisionProcessing::Create}, + {"Compound Shapes", CompoundShapes::Create}, + {"Distance Test", DistanceTest::Create}, + {"Dominos", Dominos::Create}, + {"Dynamic Tree", DynamicTreeTest::Create}, + {"Sensor Test", SensorTest::Create}, + {"Slider Crank", SliderCrank::Create}, + {"Varying Friction", VaryingFriction::Create}, + {"Add Pair Stress Test", AddPair::Create}, + {NULL, NULL} +}; diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TheoJansen.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TheoJansen.h new file mode 100644 index 0000000000..485ac1dd18 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TheoJansen.h @@ -0,0 +1,256 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +// Inspired by a contribution by roman_m +// Dimensions scooped from APE (http://www.cove.org/ape/index.htm) + +#ifndef THEO_JANSEN_H +#define THEO_JANSEN_H + +class TheoJansen : public Test +{ +public: + + void CreateLeg(float32 s, const b2Vec2& wheelAnchor) + { + b2Vec2 p1(5.4f * s, -6.1f); + b2Vec2 p2(7.2f * s, -1.2f); + b2Vec2 p3(4.3f * s, -1.9f); + b2Vec2 p4(3.1f * s, 0.8f); + b2Vec2 p5(6.0f * s, 1.5f); + b2Vec2 p6(2.5f * s, 3.7f); + + b2FixtureDef fd1, fd2; + fd1.filter.groupIndex = -1; + fd2.filter.groupIndex = -1; + fd1.density = 1.0f; + fd2.density = 1.0f; + + b2PolygonShape poly1, poly2; + + if (s > 0.0f) + { + b2Vec2 vertices[3]; + + vertices[0] = p1; + vertices[1] = p2; + vertices[2] = p3; + poly1.Set(vertices, 3); + + vertices[0] = b2Vec2_zero; + vertices[1] = p5 - p4; + vertices[2] = p6 - p4; + poly2.Set(vertices, 3); + } + else + { + b2Vec2 vertices[3]; + + vertices[0] = p1; + vertices[1] = p3; + vertices[2] = p2; + poly1.Set(vertices, 3); + + vertices[0] = b2Vec2_zero; + vertices[1] = p6 - p4; + vertices[2] = p5 - p4; + poly2.Set(vertices, 3); + } + + fd1.shape = &poly1; + fd2.shape = &poly2; + + b2BodyDef bd1, bd2; + bd1.type = b2_dynamicBody; + bd2.type = b2_dynamicBody; + bd1.position = m_offset; + bd2.position = p4 + m_offset; + + bd1.angularDamping = 10.0f; + bd2.angularDamping = 10.0f; + + b2Body* body1 = m_world->CreateBody(&bd1); + b2Body* body2 = m_world->CreateBody(&bd2); + + body1->CreateFixture(&fd1); + body2->CreateFixture(&fd2); + + b2DistanceJointDef djd; + + // Using a soft distance constraint can reduce some jitter. + // It also makes the structure seem a bit more fluid by + // acting like a suspension system. + djd.dampingRatio = 0.5f; + djd.frequencyHz = 10.0f; + + djd.Initialize(body1, body2, p2 + m_offset, p5 + m_offset); + m_world->CreateJoint(&djd); + + djd.Initialize(body1, body2, p3 + m_offset, p4 + m_offset); + m_world->CreateJoint(&djd); + + djd.Initialize(body1, m_wheel, p3 + m_offset, wheelAnchor + m_offset); + m_world->CreateJoint(&djd); + + djd.Initialize(body2, m_wheel, p6 + m_offset, wheelAnchor + m_offset); + m_world->CreateJoint(&djd); + + b2RevoluteJointDef rjd; + + rjd.Initialize(body2, m_chassis, p4 + m_offset); + m_world->CreateJoint(&rjd); + } + + TheoJansen() + { + m_offset.Set(0.0f, 8.0f); + m_motorSpeed = 2.0f; + m_motorOn = true; + b2Vec2 pivot(0.0f, 0.8f); + + // Ground + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(-50.0f, 10.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(50.0f, 10.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + // Balls + for (int32 i = 0; i < 40; ++i) + { + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-40.0f + 2.0f * i, 0.5f); + + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 1.0f); + } + + // Chassis + { + b2PolygonShape shape; + shape.SetAsBox(2.5f, 1.0f); + + b2FixtureDef sd; + sd.density = 1.0f; + sd.shape = &shape; + sd.filter.groupIndex = -1; + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = pivot + m_offset; + m_chassis = m_world->CreateBody(&bd); + m_chassis->CreateFixture(&sd); + } + + { + b2CircleShape shape; + shape.m_radius = 1.6f; + + b2FixtureDef sd; + sd.density = 1.0f; + sd.shape = &shape; + sd.filter.groupIndex = -1; + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = pivot + m_offset; + m_wheel = m_world->CreateBody(&bd); + m_wheel->CreateFixture(&sd); + } + + { + b2RevoluteJointDef jd; + jd.Initialize(m_wheel, m_chassis, pivot + m_offset); + jd.collideConnected = false; + jd.motorSpeed = m_motorSpeed; + jd.maxMotorTorque = 400.0f; + jd.enableMotor = m_motorOn; + m_motorJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + b2Vec2 wheelAnchor; + + wheelAnchor = pivot + b2Vec2(0.0f, -0.8f); + + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + + m_wheel->SetTransform(m_wheel->GetPosition(), 120.0f * b2_pi / 180.0f); + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + + m_wheel->SetTransform(m_wheel->GetPosition(), -120.0f * b2_pi / 180.0f); + CreateLeg(-1.0f, wheelAnchor); + CreateLeg(1.0f, wheelAnchor); + } + + void Step(Settings* settings) + { + m_debugDraw.DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, toggle motor = m"); + m_textLine += 15; + + Test::Step(settings); + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'a': + m_motorJoint->SetMotorSpeed(-m_motorSpeed); + break; + + case 's': + m_motorJoint->SetMotorSpeed(0.0f); + break; + + case 'd': + m_motorJoint->SetMotorSpeed(m_motorSpeed); + break; + + case 'm': + m_motorJoint->EnableMotor(!m_motorJoint->IsMotorEnabled()); + break; + } + } + + static Test* Create() + { + return new TheoJansen; + } + + b2Vec2 m_offset; + b2Body* m_chassis; + b2Body* m_wheel; + b2RevoluteJoint* m_motorJoint; + bool m_motorOn; + float32 m_motorSpeed; +}; + +#endif // THEO_JANSEN_H diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tiles.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tiles.h new file mode 100644 index 0000000000..c3fe9d5767 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tiles.h @@ -0,0 +1,156 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TILES_H +#define TILES_H + +/// This stress tests the dynamic tree broad-phase. This also shows that tile +/// based collision is _not_ smooth due to Box2D not knowing about adjacency. +class Tiles : public Test +{ +public: + enum + { + e_count = 20 + }; + + Tiles() + { + m_fixtureCount = 0; + b2Timer timer; + + { + float32 a = 0.5f; + b2BodyDef bd; + bd.position.y = -a; + b2Body* ground = m_world->CreateBody(&bd); + +#if 1 + int32 N = 200; + int32 M = 10; + b2Vec2 position; + position.y = 0.0f; + for (int32 j = 0; j < M; ++j) + { + position.x = -N * a; + for (int32 i = 0; i < N; ++i) + { + b2PolygonShape shape; + shape.SetAsBox(a, a, position, 0.0f); + ground->CreateFixture(&shape, 0.0f); + ++m_fixtureCount; + position.x += 2.0f * a; + } + position.y -= 2.0f * a; + } +#else + int32 N = 200; + int32 M = 10; + b2Vec2 position; + position.x = -N * a; + for (int32 i = 0; i < N; ++i) + { + position.y = 0.0f; + for (int32 j = 0; j < M; ++j) + { + b2PolygonShape shape; + shape.SetAsBox(a, a, position, 0.0f); + ground->CreateFixture(&shape, 0.0f); + position.y -= 2.0f * a; + } + position.x += 2.0f * a; + } +#endif + } + + { + float32 a = 0.5f; + b2PolygonShape shape; + shape.SetAsBox(a, a); + + b2Vec2 x(-7.0f, 0.75f); + b2Vec2 y; + b2Vec2 deltaX(0.5625f, 1.25f); + b2Vec2 deltaY(1.125f, 0.0f); + + for (int32 i = 0; i < e_count; ++i) + { + y = x; + + for (int32 j = i; j < e_count; ++j) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position = y; + + //if (i == 0 && j == 0) + //{ + // bd.allowSleep = false; + //} + //else + //{ + // bd.allowSleep = true; + //} + + b2Body* body = m_world->CreateBody(&bd); + body->CreateFixture(&shape, 5.0f); + ++m_fixtureCount; + y += deltaY; + } + + x += deltaX; + } + } + + m_createTime = timer.GetMilliseconds(); + } + + void Step(Settings* settings) + { + const b2ContactManager& cm = m_world->GetContactManager(); + int32 height = cm.m_broadPhase.GetTreeHeight(); + int32 leafCount = cm.m_broadPhase.GetProxyCount(); + int32 minimumNodeCount = 2 * leafCount - 1; + float32 minimumHeight = ceilf(logf(float32(minimumNodeCount)) / logf(2.0f)); + m_debugDraw.DrawString(5, m_textLine, "dynamic tree height = %d, min = %d", height, int32(minimumHeight)); + m_textLine += 15; + + Test::Step(settings); + + m_debugDraw.DrawString(5, m_textLine, "create time = %6.2f ms, fixture count = %d", + m_createTime, m_fixtureCount); + m_textLine += 15; + + //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; + + //if (m_stepCount == 400) + //{ + // tree->RebuildBottomUp(); + //} + } + + static Test* Create() + { + return new Tiles; + } + + int32 m_fixtureCount; + float32 m_createTime; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TimeOfImpact.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TimeOfImpact.h new file mode 100644 index 0000000000..14db469140 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/TimeOfImpact.h @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TIME_OF_IMPACT_H +#define TIME_OF_IMPACT_H + +class TimeOfImpact : public Test +{ +public: + TimeOfImpact() + { + m_shapeA.SetAsBox(25.0f, 5.0f); + m_shapeB.SetAsBox(2.5f, 2.5f); + } + + static Test* Create() + { + return new TimeOfImpact; + } + + void Step(Settings* settings) + { + Test::Step(settings); + + b2Sweep sweepA; + sweepA.c0.Set(24.0f, -60.0f); + sweepA.a0 = 2.95f; + sweepA.c = sweepA.c0; + sweepA.a = sweepA.a0; + sweepA.localCenter.SetZero(); + + b2Sweep sweepB; + sweepB.c0.Set(53.474274f, -50.252514f); + sweepB.a0 = 513.36676f; // - 162.0f * b2_pi; + sweepB.c.Set(54.595478f, -51.083473f); + sweepB.a = 513.62781f; // - 162.0f * b2_pi; + sweepB.localCenter.SetZero(); + + //sweepB.a0 -= 300.0f * b2_pi; + //sweepB.a -= 300.0f * b2_pi; + + b2TOIInput input; + input.proxyA.Set(&m_shapeA, 0); + input.proxyB.Set(&m_shapeB, 0); + input.sweepA = sweepA; + input.sweepB = sweepB; + input.tMax = 1.0f; + + b2TOIOutput output; + + b2TimeOfImpact(&output, &input); + + m_debugDraw.DrawString(5, m_textLine, "toi = %g", output.t); + m_textLine += 15; + + extern int32 b2_toiMaxIters, b2_toiMaxRootIters; + m_debugDraw.DrawString(5, m_textLine, "max toi iters = %d, max root iters = %d", b2_toiMaxIters, b2_toiMaxRootIters); + m_textLine += 15; + + b2Vec2 vertices[b2_maxPolygonVertices]; + + b2Transform transformA; + sweepA.GetTransform(&transformA, 0.0f); + for (int32 i = 0; i < m_shapeA.m_vertexCount; ++i) + { + vertices[i] = b2Mul(transformA, m_shapeA.m_vertices[i]); + } + m_debugDraw.DrawPolygon(vertices, m_shapeA.m_vertexCount, b2Color(0.9f, 0.9f, 0.9f)); + + b2Transform transformB; + sweepB.GetTransform(&transformB, 0.0f); + + b2Vec2 localPoint(2.0f, -0.1f); + b2Vec2 rB = b2Mul(transformB, localPoint) - sweepB.c0; + float32 wB = sweepB.a - sweepB.a0; + b2Vec2 vB = sweepB.c - sweepB.c0; + b2Vec2 v = vB + b2Cross(wB, rB); + + for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.5f, 0.9f, 0.5f)); + + sweepB.GetTransform(&transformB, output.t); + for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.5f, 0.7f, 0.9f)); + + sweepB.GetTransform(&transformB, 1.0f); + for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.9f, 0.5f, 0.5f)); + +#if 0 + for (float32 t = 0.0f; t < 1.0f; t += 0.1f) + { + sweepB.GetTransform(&transformB, t); + for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) + { + vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); + } + m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.9f, 0.5f, 0.5f)); + } +#endif + } + + b2PolygonShape m_shapeA; + b2PolygonShape m_shapeB; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tumbler.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tumbler.h new file mode 100644 index 0000000000..6c23f8b6c1 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Tumbler.h @@ -0,0 +1,99 @@ +/* +* Copyright (c) 2011 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TUMBLER_H +#define TUMBLER_H + +class Tumbler : public Test +{ +public: + + enum + { + e_count = 800 + }; + + Tumbler() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + } + + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.allowSleep = false; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.5f, 10.0f, b2Vec2( 10.0f, 0.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(0.5f, 10.0f, b2Vec2(-10.0f, 0.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, 10.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, -10.0f), 0.0); + body->CreateFixture(&shape, 5.0f); + + b2RevoluteJointDef jd; + jd.bodyA = ground; + jd.bodyB = body; + jd.localAnchorA.Set(0.0f, 10.0f); + jd.localAnchorB.Set(0.0f, 0.0f); + jd.referenceAngle = 0.0f; + jd.motorSpeed = 0.05f * b2_pi; + jd.maxMotorTorque = 1e8f; + jd.enableMotor = true; + m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); + } + + m_count = 0; + } + + void Step(Settings* settings) + { + Test::Step(settings); + + if (m_count < e_count) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(0.0f, 10.0f); + b2Body* body = m_world->CreateBody(&bd); + + b2PolygonShape shape; + shape.SetAsBox(0.125f, 0.125f); + body->CreateFixture(&shape, 1.0f); + + ++m_count; + } + } + + static Test* Create() + { + return new Tumbler; + } + + b2RevoluteJoint* m_joint; + int32 m_count; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingFriction.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingFriction.h new file mode 100644 index 0000000000..062ec7db48 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingFriction.h @@ -0,0 +1,124 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef VARYING_FRICTION_H +#define VARYING_FRICTION_H + +class VaryingFriction : public Test +{ +public: + + VaryingFriction() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-4.0f, 22.0f); + bd.angle = -0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.0f); + + b2BodyDef bd; + bd.position.Set(10.5f, 19.0f); + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(4.0f, 14.0f); + bd.angle = 0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.25f, 1.0f); + + b2BodyDef bd; + bd.position.Set(-10.5f, 11.0f); + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(13.0f, 0.25f); + + b2BodyDef bd; + bd.position.Set(-4.0f, 6.0f); + bd.angle = -0.25f; + + b2Body* ground = m_world->CreateBody(&bd); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 25.0f; + + float friction[5] = {0.75f, 0.5f, 0.35f, 0.1f, 0.0f}; + + for (int i = 0; i < 5; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-15.0f + 4.0f * i, 28.0f); + b2Body* body = m_world->CreateBody(&bd); + + fd.friction = friction[i]; + body->CreateFixture(&fd); + } + } + } + + static Test* Create() + { + return new VaryingFriction; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingRestitution.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingRestitution.h new file mode 100644 index 0000000000..c3d47fac1e --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VaryingRestitution.h @@ -0,0 +1,69 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef VARYING_RESTITUTION_H +#define VARYING_RESTITUTION_H + +// Note: even with a restitution of 1.0, there is some energy change +// due to position correction. +class VaryingRestitution : public Test +{ +public: + + VaryingRestitution() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2CircleShape shape; + shape.m_radius = 1.0f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + + float32 restitution[7] = {0.0f, 0.1f, 0.3f, 0.5f, 0.75f, 0.9f, 1.0f}; + + for (int32 i = 0; i < 7; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.position.Set(-10.0f + 3.0f * i, 20.0f); + + b2Body* body = m_world->CreateBody(&bd); + + fd.restitution = restitution[i]; + body->CreateFixture(&fd); + } + } + } + + static Test* Create() + { + return new VaryingRestitution; + } +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VerticalStack.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VerticalStack.h new file mode 100644 index 0000000000..9710c79dda --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/VerticalStack.h @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef VERTICAL_STACK_H +#define VERTICAL_STACK_H + +class VerticalStack : public Test +{ +public: + + enum + { + e_columnCount = 5, + e_rowCount = 16 + //e_columnCount = 1, + //e_rowCount = 1 + }; + + VerticalStack() + { + { + b2BodyDef bd; + b2Body* ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + + shape.Set(b2Vec2(20.0f, 0.0f), b2Vec2(20.0f, 20.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + float32 xs[5] = {0.0f, -10.0f, -5.0f, 5.0f, 10.0f}; + + for (int32 j = 0; j < e_columnCount; ++j) + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 1.0f; + fd.friction = 0.3f; + + for (int i = 0; i < e_rowCount; ++i) + { + b2BodyDef bd; + bd.type = b2_dynamicBody; + + int32 n = j * e_rowCount + i; + b2Assert(n < e_rowCount * e_columnCount); + m_indices[n] = n; + bd.userData = m_indices + n; + + float32 x = 0.0f; + //float32 x = RandomFloat(-0.02f, 0.02f); + //float32 x = i % 2 == 0 ? -0.025f : 0.025f; + bd.position.Set(xs[j] + x, 0.752f + 1.54f * i); + b2Body* body = m_world->CreateBody(&bd); + + m_bodies[n] = body; + + body->CreateFixture(&fd); + } + } + + m_bullet = NULL; + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case ',': + if (m_bullet != NULL) + { + m_world->DestroyBody(m_bullet); + m_bullet = NULL; + } + + { + b2CircleShape shape; + shape.m_radius = 0.25f; + + b2FixtureDef fd; + fd.shape = &shape; + fd.density = 20.0f; + fd.restitution = 0.05f; + + b2BodyDef bd; + bd.type = b2_dynamicBody; + bd.bullet = true; + bd.position.Set(-31.0f, 5.0f); + + m_bullet = m_world->CreateBody(&bd); + m_bullet->CreateFixture(&fd); + + m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); + } + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "Press: (,) to launch a bullet."); + m_textLine += 15; + + //if (m_stepCount == 300) + //{ + // if (m_bullet != NULL) + // { + // m_world->DestroyBody(m_bullet); + // m_bullet = NULL; + // } + + // { + // b2CircleShape shape; + // shape.m_radius = 0.25f; + + // b2FixtureDef fd; + // fd.shape = &shape; + // fd.density = 20.0f; + // fd.restitution = 0.05f; + + // b2BodyDef bd; + // bd.type = b2_dynamicBody; + // bd.bullet = true; + // bd.position.Set(-31.0f, 5.0f); + + // m_bullet = m_world->CreateBody(&bd); + // m_bullet->CreateFixture(&fd); + + // m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); + // } + //} + } + + static Test* Create() + { + return new VerticalStack; + } + + b2Body* m_bullet; + b2Body* m_bodies[e_rowCount * e_columnCount]; + int32 m_indices[e_rowCount * e_columnCount]; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Web.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Web.h new file mode 100644 index 0000000000..d4c160ded4 --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/Box2DTests/Web.h @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef WEB_H +#define WEB_H + +// This tests distance joints, body destruction, and joint destruction. +class Web : public Test +{ +public: + Web() + { + b2Body* ground = NULL; + { + b2BodyDef bd; + ground = m_world->CreateBody(&bd); + + b2EdgeShape shape; + shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); + ground->CreateFixture(&shape, 0.0f); + } + + { + b2PolygonShape shape; + shape.SetAsBox(0.5f, 0.5f); + + b2BodyDef bd; + bd.type = b2_dynamicBody; + + bd.position.Set(-5.0f, 5.0f); + m_bodies[0] = m_world->CreateBody(&bd); + m_bodies[0]->CreateFixture(&shape, 5.0f); + + bd.position.Set(5.0f, 5.0f); + m_bodies[1] = m_world->CreateBody(&bd); + m_bodies[1]->CreateFixture(&shape, 5.0f); + + bd.position.Set(5.0f, 15.0f); + m_bodies[2] = m_world->CreateBody(&bd); + m_bodies[2]->CreateFixture(&shape, 5.0f); + + bd.position.Set(-5.0f, 15.0f); + m_bodies[3] = m_world->CreateBody(&bd); + m_bodies[3]->CreateFixture(&shape, 5.0f); + + b2DistanceJointDef jd; + b2Vec2 p1, p2, d; + + jd.frequencyHz = 2.0f; + jd.dampingRatio = 0.0f; + + jd.bodyA = ground; + jd.bodyB = m_bodies[0]; + jd.localAnchorA.Set(-10.0f, 0.0f); + jd.localAnchorB.Set(-0.5f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[0] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[1]; + jd.localAnchorA.Set(10.0f, 0.0f); + jd.localAnchorB.Set(0.5f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[1] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[2]; + jd.localAnchorA.Set(10.0f, 20.0f); + jd.localAnchorB.Set(0.5f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[2] = m_world->CreateJoint(&jd); + + jd.bodyA = ground; + jd.bodyB = m_bodies[3]; + jd.localAnchorA.Set(-10.0f, 20.0f); + jd.localAnchorB.Set(-0.5f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[3] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[0]; + jd.bodyB = m_bodies[1]; + jd.localAnchorA.Set(0.5f, 0.0f); + jd.localAnchorB.Set(-0.5f, 0.0f);; + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[4] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[1]; + jd.bodyB = m_bodies[2]; + jd.localAnchorA.Set(0.0f, 0.5f); + jd.localAnchorB.Set(0.0f, -0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[5] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[2]; + jd.bodyB = m_bodies[3]; + jd.localAnchorA.Set(-0.5f, 0.0f); + jd.localAnchorB.Set(0.5f, 0.0f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[6] = m_world->CreateJoint(&jd); + + jd.bodyA = m_bodies[3]; + jd.bodyB = m_bodies[0]; + jd.localAnchorA.Set(0.0f, -0.5f); + jd.localAnchorB.Set(0.0f, 0.5f); + p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); + p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); + d = p2 - p1; + jd.length = d.Length(); + m_joints[7] = m_world->CreateJoint(&jd); + } + } + + void Keyboard(unsigned char key) + { + switch (key) + { + case 'b': + for (int32 i = 0; i < 4; ++i) + { + if (m_bodies[i]) + { + m_world->DestroyBody(m_bodies[i]); + m_bodies[i] = NULL; + break; + } + } + break; + + case 'j': + for (int32 i = 0; i < 8; ++i) + { + if (m_joints[i]) + { + m_world->DestroyJoint(m_joints[i]); + m_joints[i] = NULL; + break; + } + } + break; + } + } + + void Step(Settings* settings) + { + Test::Step(settings); + m_debugDraw.DrawString(5, m_textLine, "This demonstrates a soft distance joint."); + m_textLine += 15; + m_debugDraw.DrawString(5, m_textLine, "Press: (b) to delete a body, (j) to delete a joint"); + m_textLine += 15; + } + + void JointDestroyed(b2Joint* joint) + { + for (int32 i = 0; i < 8; ++i) + { + if (m_joints[i] == joint) + { + m_joints[i] = NULL; + break; + } + } + } + + static Test* Create() + { + return new Web; + } + + b2Body* m_bodies[4]; + b2Joint* m_joints[8]; +}; + +#endif diff --git a/examples/DemoRunner/Builds/Android/app/src/main/assets/DSPDemos_Common.h b/examples/DemoRunner/Builds/Android/app/src/main/assets/DSPDemos_Common.h new file mode 100644 index 0000000000..3ec6f72a8a --- /dev/null +++ b/examples/DemoRunner/Builds/Android/app/src/main/assets/DSPDemos_Common.h @@ -0,0 +1,686 @@ +/* + ============================================================================== + + This file is part of the JUCE examples. + Copyright (c) 2017 - ROLI Ltd. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, + WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR + PURPOSE, ARE DISCLAIMED. + + ============================================================================== +*/ + +#pragma once + +using namespace dsp; + +//============================================================================== +struct DSPDemoParameterBase : public ChangeBroadcaster +{ + DSPDemoParameterBase (const String& labelName) : name (labelName) {} + virtual ~DSPDemoParameterBase() {} + + virtual Component* getComponent() = 0; + + virtual int getPreferredHeight() = 0; + virtual int getPreferredWidth() = 0; + + String name; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DSPDemoParameterBase) +}; + +//============================================================================== +struct SliderParameter : public DSPDemoParameterBase +{ + SliderParameter (Range range, double skew, double initialValue, + const String& labelName, const String& suffix = {}) + : DSPDemoParameterBase (labelName) + { + slider.setRange (range.getStart(), range.getEnd(), 0.01); + slider.setSkewFactor (skew); + slider.setValue (initialValue); + + if (suffix.isNotEmpty()) + slider.setTextValueSuffix (suffix); + + slider.onValueChange = [this] { sendChangeMessage(); }; + } + + Component* getComponent() override { return &slider; } + + int getPreferredHeight() override { return 40; } + int getPreferredWidth() override { return 500; } + + double getCurrentValue() const { return slider.getValue(); } + +private: + Slider slider; +}; + +//============================================================================== +struct ChoiceParameter : public DSPDemoParameterBase +{ + ChoiceParameter (const StringArray& options, int initialId, const String& labelName) + : DSPDemoParameterBase (labelName) + { + parameterBox.addItemList (options, 1); + parameterBox.onChange = [this] { sendChangeMessage(); }; + + parameterBox.setSelectedId (initialId); + } + + Component* getComponent() override { return ¶meterBox; } + + int getPreferredHeight() override { return 25; } + int getPreferredWidth() override { return 250; } + + int getCurrentSelectedID() const { return parameterBox.getSelectedId(); } + +private: + ComboBox parameterBox; +}; + +//============================================================================== +class AudioThumbnailComponent : public Component, + public FileDragAndDropTarget, + public ChangeBroadcaster, + private ChangeListener, + private Timer +{ +public: + AudioThumbnailComponent (AudioDeviceManager& adm, AudioFormatManager& afm) + : audioDeviceManager (adm), + thumbnailCache (5), + thumbnail (128, afm, thumbnailCache) + { + thumbnail.addChangeListener (this); + } + + ~AudioThumbnailComponent() + { + thumbnail.removeChangeListener (this); + } + + void paint (Graphics& g) override + { + g.fillAll (Colour (0xff495358)); + + g.setColour (Colours::white); + + if (thumbnail.getTotalLength() > 0.0) + { + thumbnail.drawChannels (g, getLocalBounds().reduced (2), + 0.0, thumbnail.getTotalLength(), 1.0f); + + g.setColour (Colours::black); + g.fillRect (static_cast (currentPosition * getWidth()), 0.0f, + 1.0f, static_cast (getHeight())); + } + else + { + g.drawFittedText ("No audio file loaded.\nDrop a file here or click the \"Load File...\" button.", getLocalBounds(), + Justification::centred, 2); + } + } + + bool isInterestedInFileDrag (const StringArray&) override { return true; } + void filesDropped (const StringArray& files, int, int) override { loadURL (URL (File (files[0])), true); } + + void setCurrentURL (const URL& u) + { + if (currentURL == u) + return; + + loadURL (u); + } + + URL getCurrentURL() { return currentURL; } + + void setTransportSource (AudioTransportSource* newSource) + { + transportSource = newSource; + + struct ResetCallback : public CallbackMessage + { + ResetCallback (AudioThumbnailComponent& o) : owner (o) {} + void messageCallback() override { owner.reset(); } + + AudioThumbnailComponent& owner; + }; + + (new ResetCallback (*this))->post(); + } + +private: + AudioDeviceManager& audioDeviceManager; + AudioThumbnailCache thumbnailCache; + AudioThumbnail thumbnail; + AudioTransportSource* transportSource = nullptr; + + URL currentURL; + double currentPosition = 0.0; + + //============================================================================== + void changeListenerCallback (ChangeBroadcaster*) override { repaint(); } + + void reset() + { + currentPosition = 0.0; + repaint(); + + if (transportSource == nullptr) + stopTimer(); + else + startTimerHz (25); + } + + void loadURL (const URL& u, bool notify = false) + { + if (currentURL == u) + return; + + currentURL = u; + + InputSource* inputSource = nullptr; + + #if ! JUCE_IOS + if (u.isLocalFile()) + { + inputSource = new FileInputSource (u.getLocalFile()); + } + else + #endif + { + if (inputSource == nullptr) + inputSource = new URLInputSource (u); + } + + thumbnail.setSource (inputSource); + + if (notify) + sendChangeMessage(); + } + + void timerCallback() override + { + if (transportSource != nullptr) + { + currentPosition = transportSource->getCurrentPosition() / thumbnail.getTotalLength(); + repaint(); + } + } + + void mouseDrag (const MouseEvent& e) override + { + if (transportSource != nullptr) + { + const ScopedLock sl (audioDeviceManager.getAudioCallbackLock()); + + transportSource->setPosition ((jmax (static_cast (e.x), 0.0) / getWidth()) + * thumbnail.getTotalLength()); + } + } +}; + +//============================================================================== +class DemoParametersComponent : public Component +{ +public: + DemoParametersComponent (const std::vector& demoParams) + { + parameters = demoParams; + + for (auto demoParameter : parameters) + { + addAndMakeVisible (demoParameter->getComponent()); + + auto* paramLabel = new Label ({}, demoParameter->name); + + paramLabel->attachToComponent (demoParameter->getComponent(), true); + paramLabel->setJustificationType (Justification::centredLeft); + addAndMakeVisible (paramLabel); + labels.add (paramLabel); + } + } + + void resized() override + { + auto bounds = getLocalBounds(); + bounds.removeFromLeft (100); + + for (auto* p : parameters) + { + auto* comp = p->getComponent(); + + comp->setSize (jmin (bounds.getWidth(), p->getPreferredWidth()), p->getPreferredHeight()); + + auto compBounds = bounds.removeFromTop (p->getPreferredHeight()); + comp->setCentrePosition (compBounds.getCentre()); + } + } + + int getHeightNeeded() + { + auto height = 0; + + for (auto* p : parameters) + height += p->getPreferredHeight(); + + return height + 10; + } + +private: + std::vector parameters; + OwnedArray